[sleeplogalarm] Setup widget and app.png

pull/2323/head
storm64 2022-11-10 13:12:22 +01:00
parent 716b2e454a
commit a07747ca25
4 changed files with 29 additions and 20 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -10,7 +10,8 @@
"supports": ["BANGLEJS2"], "supports": ["BANGLEJS2"],
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name": "sleeplogalarm.wid.js", "url": "widget.js"}, {"name": "sleeplogalarm.settings.js", "url": "settings.js"},
{"name": "sleeplogalarm.settings.js", "url": "settings.js"} {"name": "sleeplogalarm.trigger.js", "url": "trigger.js"},
{"name": "sleeplogalarm.wid.js", "url": "widget.js"}
] ]
} }

View File

@ -3,7 +3,7 @@ exports = function(now, tNow) {
var settings = Object.assign({ var settings = Object.assign({
from: 4, // 0400 from: 4, // 0400
to: 8, // 0800 to: 8, // 0800
earlier: 6E4 * 30, earlier: 30,
msgAsPrefix: true, msgAsPrefix: true,
disableOnAlarm: false, // !!! not available if alarm is at the next day disableOnAlarm: false, // !!! not available if alarm is at the next day
msg: "...\n", msg: "...\n",
@ -12,7 +12,7 @@ exports = function(now, tNow) {
}, require("Storage").readJSON("sleeplogalarm.settings.json", true) || {}); }, require("Storage").readJSON("sleeplogalarm.settings.json", true) || {});
// calculate then date // calculate then date
var then = new Date(now + settings.earlier); var then = new Date(now + settings.earlier * 6E4);
// load library // load library
var sched = require("sched"); var sched = require("sched");

View File

@ -7,37 +7,45 @@ if (typeof (global.sleeplog || {}).onChange === "object" &&
enabled: true, enabled: true,
hide: false, hide: false,
drawRange: true, drawRange: true,
color: g.theme.dark ? 65504 : 31, // yellow or blue
from: 4, // 0400 from: 4, // 0400
to: 8, // 0800 to: 8, // 0800
earlier: 6E4 * 30 earlier: 30
}, require("Storage").readJSON("sleeplogalarm.settings.json", true) || {}); }, require("Storage").readJSON("sleeplogalarm.settings.json", true) || {});
// abort if not enabled in settings // abort if not enabled in settings
if (!settings.enabled) return; if (!settings.enabled) return;
// setup widget depending on settings // insert neccessary settings into widget
WIDGETS.sleeplogalarm = { WIDGETS.sleeplogalarm = {
area: "tl", area: "tl",
width: 0, width: 0,
drawRange: settings.drawRange,
color: settings.color,
from: settings.from, from: settings.from,
to: settings.to, to: settings.to,
earlier: settings.earlier, earlier: settings.earlier,
draw: function() { draw: ()=>{}
if (this.width) g.reset().setColor(1, 1, 0).drawImage(atob(""), this.x, this.y + this.width - 8);
if (this.width > 8) {
g.setFont().setFontAllign();
g.drwaString(this.from, this.x + 6, this.y);
g.drwaString(this.to, this.x + 18, this.y);
}
}
}; };
// setup widget depending if not hidden
if (!settings.hide) {
WIDGETS.sleeplogalarm.width = 8;
WIDGETS.sleeplogalarm.draw = function() {
g.reset().setColor(this.color).drawImage(atob("BwoBD8SSSP4EEEDg"), this.x + 1, this.y);
if (this.drawRange) {
require("Font4x5Numeric").add(Graphics);
g.setFont("4x5Numeric").drawString(this.from, this.x + 1, this.y + 12);
g.setFontAlign(1, 1).drawString(this.to, this.x + this.width + 1, this.y + 23);
}
};
}
// set widget width and draw // set widget width and draw
WIDGETS.sleeplogalarm.width = settings.hide ? 0 : settings.drawRange ? 24 : 8;
WIDGETS.sleeplogalarm.draw(); WIDGETS.sleeplogalarm.draw();
// add sleeplogalarm function to onChange // add sleeplogalarm function to onChange
sleeplog.onChange.push(function(data) { sleeplog.onChange.sleeplogalarm = function(data) {
// abort if not changed from deep sleep to light sleep or awake // abort if not changed from deep sleep to light sleep or awake
if (data.prevStatus !== 4 || !(data.status === 3 || data.status === 2)) return; if (data.prevStatus !== 4 || !(data.status === 3 || data.status === 2)) return;
@ -46,10 +54,10 @@ if (typeof (global.sleeplog || {}).onChange === "object" &&
var tNow = (now.getHours() * 3600000) + (now.getMinutes() * 60000) + (now.getSeconds() * 1000); var tNow = (now.getHours() * 3600000) + (now.getMinutes() * 60000) + (now.getSeconds() * 1000);
// abort if now is outside the possible alarm range // abort if now is outside the possible alarm range
if (tNow + WIDGETS.sleeplogalarm.earlier < WIDGETS.sleeplogalarm.from * 36E5 || if (tNow + WIDGETS.sleeplogalarm.earlier * 6E4 < WIDGETS.sleeplogalarm.from * 36E5 ||
tNow + WIDGETS.sleeplogalarm.earlier >= WIDGETS.sleeplogalarm.to * 36E5) return; tNow + WIDGETS.sleeplogalarm.earlier * 6E4 >= WIDGETS.sleeplogalarm.to * 36E5) return;
// execute trigger function // execute trigger function
require("sleeplogalarm.trigger.js")(now, tNow); require("sleeplogalarm.trigger.js")(now, tNow);
}); };
} }