From 8c4c514059dd4daa83040509041f2c8189c77c47 Mon Sep 17 00:00:00 2001 From: storm64 Date: Fri, 18 Nov 2022 23:08:41 +0100 Subject: [PATCH] [sleeplogalarm] Add setting + explanations, icon --- apps/sleeplogalarm/ChangeLog | 1 + apps/sleeplogalarm/README.md | 49 +++++++++++++++++++------------ apps/sleeplogalarm/app.png | Bin 8089 -> 9048 bytes apps/sleeplogalarm/lib.js | 11 ++++--- apps/sleeplogalarm/metadata.json | 2 +- apps/sleeplogalarm/settings.js | 17 +++++++---- 6 files changed, 52 insertions(+), 28 deletions(-) diff --git a/apps/sleeplogalarm/ChangeLog b/apps/sleeplogalarm/ChangeLog index 5560f00bc..0030c8783 100644 --- a/apps/sleeplogalarm/ChangeLog +++ b/apps/sleeplogalarm/ChangeLog @@ -1 +1,2 @@ 0.01: New App! +0.02: Add "from Consec."-setting \ No newline at end of file diff --git a/apps/sleeplogalarm/README.md b/apps/sleeplogalarm/README.md index 42c2d6074..184eb4b53 100644 --- a/apps/sleeplogalarm/README.md +++ b/apps/sleeplogalarm/README.md @@ -1,27 +1,40 @@ # Sleep Log Alarm -This widget searches for active alarms and raises the alarm event up to the defined time earlier, if in a light sleep phase. +This widget searches for active alarms and raises an own alarm event up to the defined time earlier, if in light sleep or awake phase. Optional the earlier alarm will only be triggered if comming from or in consecutive sleep. The settings of the earlier alarm can be adjusted and it is possible to filter the targeting alarms by time and message. By default the time of the targeting alarm is displayed inside the widget which can be adjusted, too. --- -### App Usage +### Settings --- -#### Inside the settings: !!! dummy entries !!! - - __Thresholds__ submenu - Changes take effect from now on, not retrospective! - - __Max Awake__ | maximal awake duration - _10min_ / _20min_ / ... / __60min__ / ... / _120min_ - - __Min Consecutive__ | minimal consecutive sleep duration - _10min_ / _20min_ / ... / __30min__ / ... / _120min_ - - __Deep Sleep__ | deep sleep threshold - _30_ / _31_ / ... / __100__ / ... / _200_ - - __Light Sleep__ | light sleep threshold - _100_ / _110_ / ... / __200__ / ... / _400_ - - __Reset to Default__ | reset to bold values above - - __BreakToD__ | time of day to break view - _0:00_ / _1:00_ / ... / __12:00__ / ... / _23:00_ - - __App Timeout__ | app specific lock timeout - __0s__ / _10s_ / ... / _120s_ + - __earlier__ | duration to trigger alarm earlier + _10min_ / _20min_ / __30min__ / ... / _120min_ + - __from Consec.__ | only trigger if comming from consecutive sleep + _on_ / __off__ + - __vib pattern__ | vibration pattern for the earlier alarm + __..__ / ... + - __msg__ | customized message for the earlier alarm + __...__ / ... + - __msg as prefix__ | use the customized message as prefix to the original message or replace it comlpetely if disabled + __on__ / _off_ + - __disable alarm__ | if enabled the original alarm will be disabled + _on_ / __off__ + This feature does not work for alarms on the next day! + - __auto snooze__ | auto snooze option for the earlier alarm + __on__ / _off_ + - __Filter Alarm__ submenu + - __time from__ | exclude alarms before this time + _0:00_ / _0:15_ / ... / __3:00__ / ... / _24:00_ + - __time to__ | exclude alarms after this time + _0:00_ / _0:15_ / ... / __12:00__ / ... / _24:00_ + - __msg includes__ | include only alarms including this string in msg + __""__ / ... + - __Widget__ submenu + - __hide__ | completely hide the widget + _on_ / __off__ + - __show time__ | show the time of the targeting alarm + __on__ / _off_ + - __color__ | color of the widget + _red_ / __yellow__ / ... / _white_ - __Enabled__ | completely en-/disables the background service __on__ / _off_ diff --git a/apps/sleeplogalarm/app.png b/apps/sleeplogalarm/app.png index 6efb22a3f666817408264ec02731f4ac13d1ffe8..1a8e53865734de9ba90390a489ea54ddaa4a12ec 100644 GIT binary patch delta 5615 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 JPDHLkV1l9g&OHDC delta 4759 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 diff --git a/apps/sleeplogalarm/lib.js b/apps/sleeplogalarm/lib.js index f899ae54e..71210f98b 100644 --- a/apps/sleeplogalarm/lib.js +++ b/apps/sleeplogalarm/lib.js @@ -29,14 +29,15 @@ exports = { return Object.assign({ enabled: true, earlier: 30, - filter_from: 3, - filter_to: 12, - filter_msg: "", + fromConsec: false, vibrate: "..", msg: "...\n", msgAsPrefix: true, disableOnAlarm: false, // !!! not available if alarm is at the next day as: true, + filter_from: 3, + filter_to: 12, + filter_msg: "", wid_hide: false, wid_time: true, wid_color: g.theme.dark ? 65504 : 31, // yellow or blue @@ -72,7 +73,9 @@ exports = { to: this.time - 1, fn: function (data) { // execute trigger function if on light sleep or awake - if (data.status === 3 || data.status === 2) + // and if set if comming from consecutive + if ((data.status === 3 || data.status === 2) && !settings.fromConsec || + data.consecutive === 3 || data.prevConsecutive === 3) require("sleeplogalarm").trigger(); } }; diff --git a/apps/sleeplogalarm/metadata.json b/apps/sleeplogalarm/metadata.json index fc1d546da..1a37ffcbf 100644 --- a/apps/sleeplogalarm/metadata.json +++ b/apps/sleeplogalarm/metadata.json @@ -2,7 +2,7 @@ "id":"sleeplogalarm", "name":"Sleep Log Alarm", "shortName": "SleepLogAlarm", - "version": "0.01", + "version": "0.02", "description": "Enhance your morning and let your alarms wake you up when you are in light sleep.", "icon": "app.png", "type": "widget", diff --git a/apps/sleeplogalarm/settings.js b/apps/sleeplogalarm/settings.js index fe774c3b2..3a37b7274 100644 --- a/apps/sleeplogalarm/settings.js +++ b/apps/sleeplogalarm/settings.js @@ -30,12 +30,12 @@ "": { title: "Filter Alarm" }, - /*LANG*/"< Back": () => showMain(2), + /*LANG*/"< Back": () => showMain(8), /*LANG*/"time from": { value: settings.filter_from, step: 0.25, min: 0, - max: 23, + max: 24, wrap: true, noList: true, format: v => (0|v) + ":" + ("" + (0|(v%1 * 60))).padStart(2, "0"), @@ -47,7 +47,7 @@ /*LANG*/"time to": { value: settings.filter_to, step: 0.25, - min: 1, + min: 0, max: 24, wrap: true, noList: true, @@ -78,7 +78,7 @@ "": { title: "Widget Settings" }, - /*LANG*/"< Back": () => showMain(8), + /*LANG*/"< Back": () => showMain(9), /*LANG*/"hide": { value: settings.wid_hide, onchange: v => { @@ -130,7 +130,13 @@ writeSetting(); } }, - /*LANG*/"Filter Alarm": () => showFilterMenu(), + /*LANG*/"from Consec.": { + value: settings.fromConsec, + onchange: v => { + settings.fromConsec = v; + writeSetting(); + } + }, /*LANG*/"vib pattern": require("buzz_menu").pattern( settings.vibrate, v => { @@ -165,6 +171,7 @@ writeSetting(); } }, + /*LANG*/"Filter Alarm": () => showFilterMenu(), /*LANG*/"Widget": () => showWidMenu(), /*LANG*/"Enabled": { value: settings.enabled,