Automatically assign IDs to timers so that referencing is possible
parent
1a9e5dbd64
commit
c7a0451649
|
|
@ -20,11 +20,12 @@ function ceil(value) {
|
||||||
// Data models //
|
// Data models //
|
||||||
|
|
||||||
class PrimitiveTimer {
|
class PrimitiveTimer {
|
||||||
constructor(origin, is_running, rate, name) {
|
constructor(origin, is_running, rate, name, id) {
|
||||||
this.origin = origin || 0;
|
this.origin = origin || 0;
|
||||||
// default rate +1 unit per 1000 ms, countup
|
// default rate +1 unit per 1000 ms, countup
|
||||||
this.rate = rate || 0.001;
|
this.rate = rate || 0.001;
|
||||||
this.name = name || '';
|
this.name = name || '';
|
||||||
|
this.id = id || 0;
|
||||||
|
|
||||||
this.vibrate_pattern = ';;;';
|
this.vibrate_pattern = ';;;';
|
||||||
this.buzz_count = 4;
|
this.buzz_count = 4;
|
||||||
|
|
@ -115,6 +116,7 @@ class PrimitiveTimer {
|
||||||
origin: this.origin,
|
origin: this.origin,
|
||||||
rate: this.rate,
|
rate: this.rate,
|
||||||
name: this.name,
|
name: this.name,
|
||||||
|
id: this.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,
|
||||||
|
|
@ -126,7 +128,7 @@ class PrimitiveTimer {
|
||||||
if (!(data.cls == 'PrimitiveTimer' && data.version == 0)) {
|
if (!(data.cls == 'PrimitiveTimer' && data.version == 0)) {
|
||||||
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);
|
let loaded = new this(data.origin, false, data.rate, data.name, data.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;
|
||||||
|
|
@ -162,6 +164,28 @@ var SAVE_TIMERS_TIMEOUT = null;
|
||||||
var SAVE_SETTINGS_TIMEOUT = null;
|
var SAVE_SETTINGS_TIMEOUT = null;
|
||||||
|
|
||||||
|
|
||||||
|
function next_id() {
|
||||||
|
// Find the next unused ID number for timers
|
||||||
|
let max_id = 0;
|
||||||
|
for (let timer of TIMERS) {
|
||||||
|
if (timer.id > max_id) {
|
||||||
|
max_id = timer.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max_id + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function find_timer_by_id(id) {
|
||||||
|
// Find a timer in TIMERS by its ID; return the timer object or null
|
||||||
|
// if not found
|
||||||
|
for (let timer of TIMERS) {
|
||||||
|
if (timer.id == id) {
|
||||||
|
return timer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
function load_timers() {
|
function load_timers() {
|
||||||
console.log('loading timers');
|
console.log('loading timers');
|
||||||
let timers = Storage.readJSON(TIMERS_FILENAME, true) || [];
|
let timers = Storage.readJSON(TIMERS_FILENAME, true) || [];
|
||||||
|
|
@ -169,7 +193,7 @@ function load_timers() {
|
||||||
// Deserealize timer objects
|
// Deserealize timer objects
|
||||||
timers = timers.map(t => PrimitiveTimer.load(t));
|
timers = timers.map(t => PrimitiveTimer.load(t));
|
||||||
} else {
|
} else {
|
||||||
timers = [new PrimitiveTimer(600, false, -0.001)];
|
timers = [new PrimitiveTimer(600, false, -0.001, '', 1)];
|
||||||
timers[0].end_alarm = true;
|
timers[0].end_alarm = true;
|
||||||
}
|
}
|
||||||
return timers;
|
return timers;
|
||||||
|
|
@ -243,6 +267,9 @@ function delete_timer(timers, timer) {
|
||||||
function add_timer(timers, timer) {
|
function add_timer(timers, timer) {
|
||||||
// Create a copy of current timer object
|
// Create a copy of current timer object
|
||||||
const new_timer = PrimitiveTimer.load(timer.dump());
|
const new_timer = PrimitiveTimer.load(timer.dump());
|
||||||
|
// Assign a new ID to the timer
|
||||||
|
new_timer.id = next_id();
|
||||||
|
// Place it at the top of the list
|
||||||
timers.unshift(new_timer);
|
timers.unshift(new_timer);
|
||||||
return new_timer;
|
return new_timer;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue