From edaa4da5b3bc2bb5e7235e67d81c02f01352acfa Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Thu, 28 Apr 2022 10:21:54 +0200 Subject: [PATCH] sleepphasealarm add README.md --- apps/sleepphasealarm/README.md | 15 +++++++++++++++ apps/sleepphasealarm/app.js | 9 +++++---- apps/sleepphasealarm/interface.html | 9 +++++++-- apps/sleepphasealarm/metadata.json | 1 + apps/sleepphasealarm/screenshot.jpg | Bin 0 -> 46423 bytes core | 2 +- css/main.css | 2 +- 7 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 apps/sleepphasealarm/README.md create mode 100644 apps/sleepphasealarm/screenshot.jpg diff --git a/apps/sleepphasealarm/README.md b/apps/sleepphasealarm/README.md new file mode 100644 index 000000000..04388194f --- /dev/null +++ b/apps/sleepphasealarm/README.md @@ -0,0 +1,15 @@ +# Sleep Phase Alarm + +The display shows: + +- the current time +- time of the next alarm or timer +- time difference between current time and alarm time (ETA) +- current state of the ESS algorithm, "Sleep" or "Awake", useful for debugging + +## Logging + +For each day of month (1..31) the ESS states are logged. An entry will be overwritten in the next month, e.g. an entry on the 4th May will overwrite an entry on the 4th April. +The logs can be viewed with the download button: + +![](screenshot.jpg) diff --git a/apps/sleepphasealarm/app.js b/apps/sleepphasealarm/app.js index a2c8504f0..9bde85452 100644 --- a/apps/sleepphasealarm/app.js +++ b/apps/sleepphasealarm/app.js @@ -1,4 +1,4 @@ -const BANGLEJS2 = process.env.HWVERSION == 2; //# check for bangle 2 +const BANGLEJS2 = process.env.HWVERSION == 2; // check for bangle 2 const Layout = require("Layout"); const locale = require('locale'); const alarms = require("Storage").readJSON("sched.json",1) || []; @@ -135,9 +135,9 @@ if (nextAlarm !== undefined) { // log if (swest_last != swest) { if (swest) { - addLog(new Date(Date.now() - sleepthresh*13/12.5*1000), "sleep"); // calculate begin of no motion phase, 13 values/second at 12.5Hz + addLog(new Date(now - sleepthresh*13/12.5*1000), "sleep"); // calculate begin of no motion phase, 13 values/second at 12.5Hz } else { - addLog(new Date(), "awake"); + addLog(now, "awake"); } swest_last = swest; } @@ -145,9 +145,10 @@ if (nextAlarm !== undefined) { if (now >= nextAlarm) { // The alarm widget should handle this one + addLog(now, "alarm"); setTimeout(load, 1000); } else if (measure && now >= minAlarm && swest === false) { - addLog(new Date(), "alarm"); + addLog(now, "alarm"); buzz(); measure = false; } diff --git a/apps/sleepphasealarm/interface.html b/apps/sleepphasealarm/interface.html index d9e5a2504..02fd60626 100644 --- a/apps/sleepphasealarm/interface.html +++ b/apps/sleepphasealarm/interface.html @@ -27,12 +27,12 @@ function getData() { Util.showModal("Loading..."); // get the data Util.readStorageFile('sleepphasealarm.json',data=>{ - data = '{"logs":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[{"time":"2022-04-21T19:03:02.130Z","type":"awake"},{"time":"2022-04-21T19:03:35.219Z","type":"sleep"},{"time":"2022-04-21T19:16:08.958Z","type":"awake"},{"time":"2022-04-21T19:16:08.994Z","type":"alarm"}]]}'; let logs = JSON.parse(data || "{}")?.logs || []; // remove window Util.hideModal(); logs = logs.filter(log => log != null); + logs.sort(function(a, b) {return new Date(b?.filter(entry => entry.type === "alarm")[0]?.time) - new Date(a?.filter(entry => entry.type === "alarm")[0]?.time)}); // sort by alarm date desc logs.forEach((log, i) => { const timeStr = log.filter(entry => entry.type === "alarm")[0]?.time; if (timeStr) { @@ -64,6 +64,7 @@ function getData() { x: { type: 'time', time: { + tooltipFormat: 'HH:mm', displayFormats: { millisecond: 'HH:mm:ss.SSS', second: 'HH:mm:ss', @@ -77,7 +78,11 @@ function getData() { }, plugins: { tooltip: { - enabled: false + callbacks: { + label: function(context) { + return yTicks[context.raw]; + } + } }, } } diff --git a/apps/sleepphasealarm/metadata.json b/apps/sleepphasealarm/metadata.json index aba240e37..f55854f35 100644 --- a/apps/sleepphasealarm/metadata.json +++ b/apps/sleepphasealarm/metadata.json @@ -7,6 +7,7 @@ "icon": "app.png", "tags": "alarm", "supports": ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", "dependencies": {"scheduler":"type"}, "storage": [ {"name":"sleepphasealarm.app.js","url":"app.js"}, diff --git a/apps/sleepphasealarm/screenshot.jpg b/apps/sleepphasealarm/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b1fd05decdecf25d43386e5e89412c2db3e79ff6 GIT binary patch literal 46423 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

*N>`MeThR*{tjZzDIpwBXAx(v7hG^RhTq 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 Zu=faLL0&HbvH*c-DyrJ6m0efr|JjPXZ?gaZ literal 0 HcmV?d00001 diff --git a/core b/core index 44d49cdbd..89049a5c7 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 44d49cdbd59dc6a7e09cc0facee89d338ccc7d04 +Subproject commit 89049a5c7c80d2b56dc235d135fc63b80789db96 diff --git a/css/main.css b/css/main.css index f4850babe..c4e5286cc 100644 --- a/css/main.css +++ b/css/main.css @@ -81,7 +81,7 @@ a.btn.btn-link.dropdown-toggle { min-height: 8em; } -.tile-content { position: relative; } +.tile-content { position: relative; word-break: break-word; } .link-github { position:absolute; top: 36px;