[sleeplogalarm] Update using sleeplog.trigger

master
storm64 2022-11-16 23:24:43 +01:00
parent 111a194e57
commit 8d54208ade
1 changed files with 19 additions and 20 deletions

View File

@ -39,8 +39,8 @@ exports = {
// widget reload function // widget reload function
widReload: function() { widReload: function() {
// abort if onChange is not available // abort if trigger object is not available
if (typeof (global.sleeplog || {}).onChange !== "object") return; if (typeof (global.sleeplog || {}).trigger !== "object") return;
// read settings to calculate alarm range // read settings to calculate alarm range
var settings = exports.getSettings(); var settings = exports.getSettings();
@ -55,26 +55,22 @@ exports = {
if (!this.hidden) this.width = 8; if (!this.hidden) this.width = 8;
// abort if already alarmed for this alarm // abort if already alarmed for this alarm
if (sleeplog.onChange.sleeplogalarm == this.time) return; if ((sleeplog.trigger.sleeplogalarm || {}).last == this.time) return;
// insert sleeplogalarm function to onChange // insert sleeplogalarm conditions and function
sleeplog.onChange.sleeplogalarm = function (data) { sleeplog.trigger.sleeplogalarm = {
// abort if not changed from deep sleep to light sleep or awake from: settings.time - settings.earlier * 6E4,
if (data.prevStatus !== 4 || !(data.status === 3 || data.status === 2)) return; to: settings.time - 1,
fn: function (data) {
// get settings from widget, now and calculate time of now // execute trigger function if on light sleep or awake
var settings = WIDGETS.sleeplogalarm; if (data.status === 3 || data.status === 2)
var now = new Date(); require("sleeplogalarm").trigger();
var tNow = ((now.getHours() * 60 + now.getMinutes()) * 60 + now.getSeconds()) * 1000; }
// execute trigger function if inside the alarm range
if (tNow >= settings.time - settings.earlier * 6E4 &&
tNow < settings.time) require("sleeplogalarm").trigger(now, tNow);
}; };
}, },
// trigger function // trigger function
trigger: function(now, tNow) { trigger: function(tNow) {
// read settings // read settings
var settings = exports.getSettings(); var settings = exports.getSettings();
@ -84,12 +80,15 @@ exports = {
// find first active alarm // find first active alarm
var alarm = getNextAlarm(sched.getAlarms(), settings.from * 36E5, settings.to * 36E5, settings.disableOnAlarm); var alarm = getNextAlarm(sched.getAlarms(), settings.from * 36E5, settings.to * 36E5, settings.disableOnAlarm);
// clear sleeplog.onChange function and set alarm time to prevent resetting for this alarm // clear sleeplog.trigger object and set alarm time to prevent resetting for this alarm
sleeplog.onChange.sleeplogalarm = alarm.t; sleeplog.trigger.sleeplogalarm = {last: alarm.t};
// return if no alarm is found // return if no alarm is found
if (!alarm) return; if (!alarm) return;
// get now
var now = new Date();
// get date of the alarm // get date of the alarm
var aDate = new Date(now + alarm.tTo).getDate(); var aDate = new Date(now + alarm.tTo).getDate();
@ -109,7 +108,7 @@ exports = {
id: "sleeplog", id: "sleeplog",
appid: "sleeplog", appid: "sleeplog",
on: true, on: true,
t: tNow, t: ((time.getHours() * 60 + time.getMinutes()) * 60 + time.getSeconds()) * 1000,
dow: 127, dow: 127,
msg: settings.msg + (settings.msgAsPrefix ? alarm.msg || "" : ""), msg: settings.msg + (settings.msgAsPrefix ? alarm.msg || "" : ""),
vibrate: settings.vibrate || alarm.vibrate, vibrate: settings.vibrate || alarm.vibrate,