1
0
Fork 0

Merge branch 'espruino:master' into master

master
pebl-hank 2022-11-15 13:40:33 +01:00 committed by GitHub
commit c1ccc1d8e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 87 additions and 0 deletions

View File

@ -0,0 +1 @@
0.01: First version

View File

@ -0,0 +1,16 @@
{
"id": "widsleepstatus",
"name": "Sleep Status Widget",
"version": "0.01",
"description": "Shows current status of sleep from sleeplog app.",
"icon": "widget.png",
"type": "widget",
"tags": "widget,sleep",
"supports": ["BANGLEJS","BANGLEJS2"],
"dependencies" : { "sleeplog":"app" },
"storage": [
{"name":"widsleepstatus.wid.js","url":"widget.js"},
{"name":"widsleepstatus.settings.js","url":"settings.js"}
],
"data": [{"name":"widsleepstatus.json"}]
}

View File

@ -0,0 +1,32 @@
/**
* @param {function} back Use back() to return to settings menu
*/
(function(back) {
const SETTINGS_FILE = "widsleepstatus.json";
const storage = require("Storage");
let s = {
hidewhenawake: true
};
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
for(const key in saved) {
s[key] = saved[key];
}
function save(key) {
return function(value) {
s[key] = value;
storage.write(SETTINGS_FILE, s);
};
}
const menu = {
"": {"title": "Sleep Status Widget"},
"< Back": back,
"Hide when awake": {
value: s.hidewhenawake,
onchange: save("hidewhenawake"),
},
};
E.showMenu(menu);
});

View File

@ -0,0 +1,38 @@
(function(){
if (!sleeplog) return; // sleeplog not installed
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];
});
}
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;
}
}};
Bangle.drawWidgets();
})()

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B