Provision for setting chained timers in the UI
parent
c7a0451649
commit
4cbdaa231a
|
|
@ -684,6 +684,21 @@ class TimerViewMenu {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'Start': this.edit_start.bind(this),
|
'Start': this.edit_start.bind(this),
|
||||||
|
'At end': {
|
||||||
|
// Option to auto-start another timer when this one ends
|
||||||
|
format: v => v === -1
|
||||||
|
? "Stop"
|
||||||
|
: tt.TIMERS[v].display_status()
|
||||||
|
+ ' '
|
||||||
|
+ tt.TIMERS[v].display_name(),
|
||||||
|
value: tt.find_timer_by_id(this.timer.chain_id),
|
||||||
|
min: -1,
|
||||||
|
max: tt.TIMERS.length - 1,
|
||||||
|
onchange: v => {
|
||||||
|
this.timer.chain_id = v === -1 ? null : tt.TIMERS[v].id;
|
||||||
|
tt.set_timers_dirty();
|
||||||
|
}
|
||||||
|
},
|
||||||
'Vibrate pattern': require("buzz_menu").pattern(
|
'Vibrate pattern': require("buzz_menu").pattern(
|
||||||
this.timer.vibrate_pattern,
|
this.timer.vibrate_pattern,
|
||||||
v => this.timer.vibrate_pattern = v),
|
v => this.timer.vibrate_pattern = v),
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ class PrimitiveTimer {
|
||||||
|
|
||||||
this.vibrate_pattern = ';;;';
|
this.vibrate_pattern = ';;;';
|
||||||
this.buzz_count = 4;
|
this.buzz_count = 4;
|
||||||
|
this.chain_id = null;
|
||||||
|
|
||||||
this._start_time = Date.now();
|
this._start_time = Date.now();
|
||||||
this._pause_time = is_running ? null : this._start_time;
|
this._pause_time = is_running ? null : this._start_time;
|
||||||
|
|
@ -117,6 +118,7 @@ class PrimitiveTimer {
|
||||||
rate: this.rate,
|
rate: this.rate,
|
||||||
name: this.name,
|
name: this.name,
|
||||||
id: this.id,
|
id: this.id,
|
||||||
|
chain_id: this.chain_id,
|
||||||
start_time: this._start_time,
|
start_time: this._start_time,
|
||||||
pause_time: this._pause_time,
|
pause_time: this._pause_time,
|
||||||
vibrate_pattern: this.vibrate_pattern,
|
vibrate_pattern: this.vibrate_pattern,
|
||||||
|
|
@ -129,6 +131,7 @@ class PrimitiveTimer {
|
||||||
console.error('Incompatible data type for loading PrimitiveTimer state');
|
console.error('Incompatible data type for loading PrimitiveTimer state');
|
||||||
}
|
}
|
||||||
let loaded = new this(data.origin, false, data.rate, data.name, data.id);
|
let loaded = new this(data.origin, false, data.rate, data.name, data.id);
|
||||||
|
loaded.chain_id = data.chain_id;
|
||||||
loaded._start_time = data.start_time;
|
loaded._start_time = data.start_time;
|
||||||
loaded._pause_time = data.pause_time;
|
loaded._pause_time = data.pause_time;
|
||||||
loaded.vibrate_pattern = data.vibrate_pattern;
|
loaded.vibrate_pattern = data.vibrate_pattern;
|
||||||
|
|
@ -176,14 +179,13 @@ function next_id() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function find_timer_by_id(id) {
|
function find_timer_by_id(id) {
|
||||||
// Find a timer in TIMERS by its ID; return the timer object or null
|
// Return index of timer with ID id, or -1 if not found
|
||||||
// if not found
|
for (let idx = 0; idx < TIMERS.length; idx++) {
|
||||||
for (let timer of TIMERS) {
|
if (TIMERS[idx].id == id) {
|
||||||
if (timer.id == id) {
|
return idx;
|
||||||
return timer;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_timers() {
|
function load_timers() {
|
||||||
|
|
@ -339,6 +341,7 @@ E.on('kill', () => { save_settings(); });
|
||||||
|
|
||||||
exports = {TIMERS, SETTINGS,
|
exports = {TIMERS, SETTINGS,
|
||||||
mod, ceil,
|
mod, ceil,
|
||||||
|
next_id, find_timer_by_id,
|
||||||
load_timers, save_timers, schedule_save_timers, save_settings, schedule_save_settings,
|
load_timers, save_timers, schedule_save_timers, save_settings, schedule_save_settings,
|
||||||
PrimitiveTimer,
|
PrimitiveTimer,
|
||||||
format_duration,
|
format_duration,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue