Update widget.js

* Load settings only once
* Better icons
* Read sleep status on every draw
pull/2283/head
Marco H 2022-11-16 11:50:56 +01:00 committed by GitHub
parent 668a099df0
commit a8ad6d94a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 36 additions and 25 deletions

View File

@ -1,38 +1,49 @@
(function(){
if (!sleeplog) return; // sleeplog not installed
(function() {
if (!sleeplog) return;
const SETTINGS_FILE = 'widsleepstatus.json';
let settings;
function loadSettings() {
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
const DEFAULTS = {
'hidewhenawake': true
};
Object.keys(DEFAULTS).forEach(k=>{
if (settings[k]===undefined) settings[k]=DEFAULTS[k];
Object.keys(DEFAULTS).forEach(k => {
if (settings[k] === undefined) settings[k] = DEFAULTS[k];
});
}
loadSettings();
const status = sleeplog.status || 0;
WIDGETS["sleepstatus"]={area:"tr",width:status >= 2 ? 24 : 0,draw:function(w) {
g.reset();
// Icons from https://icons8.com/icon/set/household/small
switch (status) {
case 0: // unknown
case 1: // not worn
// No icon here. Width is set to 0
break;
case 2: // awake
loadSettings();
if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBjBAP//AAAAAAAAAAAADAAAPgAAIwABIzABsmABnmAMwMAef4AePwAeIwAeIwAeIwAeIwAf//gb//gYNhgftvgftngeNngAAAAAAAAAAAA="), w.x, w.y);
break;
case 3: // light sleep
g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y);
break;
case 4: // deep sleep
g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAeAD8OAD8cAA4fABwAADgABj8ABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y);
break;
WIDGETS.sleepstatus = {
area: "tr",
width: 0,
draw: function(w) {
let status = sleeplog.status || 0;
if (w.width != (status >= 2 ? 24 : 0)){
w.width = status >= 2 ? 24 : 0;
return Bangle.drawWidgets();
}
g.reset();
switch (status) {
case 0:
case 1:
break;
case 2: // awake
if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBiBAf////////////j///h///p///h//////5///5h//5h//5J//5JgA5JAA5tP+5vP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y);
break;
case 3: // light sleep
g.drawImage(atob("GBiBAf///////////////////////////////5///5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y);
break;
case 4: // deep sleep
g.drawImage(atob("GBiBAf/////////+H/wPH/wOP/8eD/4///x//5wP/5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y);
break;
}
}
}};
};
setInterval(()=>{
WIDGETS.sleepstatus.draw(WIDGETS.sleepstatus);
}, 60000);
Bangle.drawWidgets();
})()