Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
5a6bc89c17
commit
5b8d14208b
114
js/term/widgets/loading.js
Normal file
114
js/term/widgets/loading.js
Normal file
|
@ -0,0 +1,114 @@
|
|||
/**
|
||||
** ==============================
|
||||
** O O O OOOO
|
||||
** O O O O O O
|
||||
** O O O O O O
|
||||
** OOOO OOOO O OOO OOOO
|
||||
** O O O O O O O
|
||||
** O O O O O O O
|
||||
** OOOO OOOO O O OOOO
|
||||
** ==============================
|
||||
** Dr. Stefan Bosse http://www.bsslab.de
|
||||
**
|
||||
** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED
|
||||
** BY THE AUTHOR(S).
|
||||
** THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED,
|
||||
** MODIFIED, OR OTHERWISE USED IN A CONTEXT
|
||||
** OUTSIDE OF THE SOFTWARE SYSTEM.
|
||||
**
|
||||
** $AUTHORS: Christopher Jeffrey, Stefan Bosse
|
||||
** $INITIAL: (C) 2013-2015, Christopher Jeffrey and contributors
|
||||
** $MODIFIED: by sbosse
|
||||
** $REVESIO: 1.2.1
|
||||
**
|
||||
** $INFO:
|
||||
**
|
||||
** loading.js - loading element for blessed
|
||||
**
|
||||
** $ENDOFINFO
|
||||
*/
|
||||
|
||||
/**
|
||||
* Modules
|
||||
*/
|
||||
var Comp = Require('com/compat');
|
||||
|
||||
var Node = Require('term/widgets/node');
|
||||
var Box = Require('term/widgets/box');
|
||||
var Text = Require('term/widgets/text');
|
||||
|
||||
/**
|
||||
* Loading
|
||||
*/
|
||||
|
||||
function Loading(options) {
|
||||
if (!instanceOf(this,Node)) {
|
||||
return new Loading(options);
|
||||
}
|
||||
|
||||
options = options || {};
|
||||
|
||||
Box.call(this, options);
|
||||
|
||||
this._.icon = new Text({
|
||||
parent: this,
|
||||
align: 'center',
|
||||
top: 2,
|
||||
left: 1,
|
||||
right: 1,
|
||||
height: 1,
|
||||
content: '|'
|
||||
});
|
||||
}
|
||||
|
||||
//Loading.prototype.__proto__ = Box.prototype;
|
||||
inheritPrototype(Loading,Box);
|
||||
|
||||
Loading.prototype.type = 'loading';
|
||||
|
||||
Loading.prototype.load = function(text) {
|
||||
var self = this;
|
||||
|
||||
// XXX Keep above:
|
||||
// var parent = this.parent;
|
||||
// this.detach();
|
||||
// parent.append(this);
|
||||
|
||||
this.show();
|
||||
this.setContent(text);
|
||||
|
||||
if (this._.timer) {
|
||||
this.stop();
|
||||
}
|
||||
|
||||
this.screen.lockKeys = true;
|
||||
|
||||
this._.timer = setInterval(function() {
|
||||
if (self._.icon.content === '|') {
|
||||
self._.icon.setContent('/');
|
||||
} else if (self._.icon.content === '/') {
|
||||
self._.icon.setContent('-');
|
||||
} else if (self._.icon.content === '-') {
|
||||
self._.icon.setContent('\\');
|
||||
} else if (self._.icon.content === '\\') {
|
||||
self._.icon.setContent('|');
|
||||
}
|
||||
self.screen.render();
|
||||
}, 200);
|
||||
};
|
||||
|
||||
Loading.prototype.stop = function() {
|
||||
this.screen.lockKeys = false;
|
||||
this.hide();
|
||||
if (this._.timer) {
|
||||
clearInterval(this._.timer);
|
||||
delete this._.timer;
|
||||
}
|
||||
this.screen.render();
|
||||
};
|
||||
|
||||
/**
|
||||
* Expose
|
||||
*/
|
||||
|
||||
module.exports = Loading;
|
Loading…
Reference in New Issue
Block a user