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