diff --git a/apps/chimer/ChangeLog b/apps/chimer/ChangeLog new file mode 100644 index 000000000..01bd00a0a --- /dev/null +++ b/apps/chimer/ChangeLog @@ -0,0 +1,2 @@ +0.01: Initial Creation +0.02: Fixed some sleep bugs. Added a sleep mode toggle \ No newline at end of file diff --git a/apps/chimer/metadata.json b/apps/chimer/metadata.json index fab277f15..d5bc04950 100644 --- a/apps/chimer/metadata.json +++ b/apps/chimer/metadata.json @@ -1,12 +1,13 @@ { "id": "chimer", "name": "Chimer", - "version": "0.01", + "version": "0.02", "description": "A fork of Hour Chime that adds extra features such as: \n - Buzz or beep on every 60, 30 or 15 minutes. \n - Reapeat Chime up to 3 times \n - Set hours to disable chime", "icon": "widget.png", "type": "widget", "tags": "widget", "supports": ["BANGLEJS", "BANGLEJS2"], + "readme": "README.MD", "storage": [ { "name": "chimer.wid.js", "url": "widget.js" }, { "name": "chimer.settings.js", "url": "settings.js" } diff --git a/apps/chimer/settings.js b/apps/chimer/settings.js index 1174246bd..55160c9be 100644 --- a/apps/chimer/settings.js +++ b/apps/chimer/settings.js @@ -36,14 +36,21 @@ Repetition: { value: settings.repeat, min: 1, - max: 3, + max: 5, format: (v) => v, onchange: (v) => { settings.repeat = v; writeSettings(settings); }, }, - "Start Hour": { + "Sleep Mode": { + value: !!settings.sleep, + onchange: (v) => { + settings.sleep = v; + writeSettings(settings); + }, + }, + "Sleep Start": { value: settings.start, min: 0, max: 23, @@ -53,7 +60,7 @@ writeSettings(settings); }, }, - "End Hour": { + "Sleep End": { value: settings.end, min: 0, max: 23, @@ -71,6 +78,7 @@ type: 1, freq: 0, repeat: 1, + sleep: true, start: 6, end: 22, }; diff --git a/apps/chimer/widget.js b/apps/chimer/widget.js index 9029511f8..18358df9e 100644 --- a/apps/chimer/widget.js +++ b/apps/chimer/widget.js @@ -7,6 +7,7 @@ type: 1, freq: 0, repeat: 1, + sleep: true, start: 6, end: 22, }; @@ -32,7 +33,7 @@ } else { return; } - sleep(100); + sleep(150); } } @@ -44,7 +45,11 @@ m = now.getMinutes(), s = now.getSeconds(), ms = now.getMilliseconds(); - if (h > settings.end || h < settings.start) { + if ( + (settings.sleep && h > settings.end) || + (settings.sleep && h >= settings.end && m !== 0) || + (settings.sleep && h < settings.start) + ) { var mLeft = 60 - m, sLeft = mLeft * 60 - s, msLeft = sLeft * 1000 - ms; @@ -52,7 +57,8 @@ return; } if (settings.freq === 1) { - if ((m !== lastMinute && m === 0) || m === 30) chime(); + if ((m !== lastMinute && m === 0) || (m !== lastMinute && m === 30)) + chime(); lastHour = h; lastMinute = m; // check again in 30 minutes @@ -70,7 +76,12 @@ } setTimeout(check, msLeft); } else if (settings.freq === 2) { - if ((m !== lastMinute && m === 0) || m === 15 || m === 30 || m === 45) + if ( + (m !== lastMinute && m === 0) || + (m !== lastMinute && m === 15) || + (m !== lastMinute && m === 30) || + (m !== lastMinute && m === 45) + ) chime(); lastHour = h; lastMinute = m;