init code
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
class ToggleLoop {
|
||||
constructor({ id, label, fn, interval, top=true, onColor = "#00AA00", offColor = "#AA0000" }) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
this.fn = fn;
|
||||
this.interval = interval;
|
||||
this.onColor = onColor;
|
||||
this.offColor = offColor;
|
||||
this.loopId = null;
|
||||
|
||||
this.render();
|
||||
var btn_fn = add_bottom_button
|
||||
if ( top ) { btn_fn = add_top_button }
|
||||
btn_fn(this.id, `${this.label}: AUS`, () => this.toggle());
|
||||
}
|
||||
|
||||
get running() {
|
||||
return this.loopId !== null;
|
||||
}
|
||||
|
||||
start() {
|
||||
if (this.running) return;
|
||||
this.loopId = setInterval(this.fn, this.interval);
|
||||
this.render();
|
||||
}
|
||||
|
||||
stop() {
|
||||
if (!this.running) return;
|
||||
clearInterval(this.loopId);
|
||||
this.loopId = null;
|
||||
this.render();
|
||||
}
|
||||
|
||||
toggle() {
|
||||
this.running ? this.stop() : this.start();
|
||||
}
|
||||
|
||||
render() {
|
||||
try {
|
||||
set_button_value(this.id, `${this.label}: ${this.running ? "AN" : "AUS"}`);
|
||||
set_button_color(this.id, this.running ? this.onColor : this.offColor);
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user