diff --git a/apps.json b/apps.json index 8018a4064..00c19f810 100644 --- a/apps.json +++ b/apps.json @@ -3065,13 +3065,14 @@ "name": "Hour Strike", "shortName": "Hour Strike", "icon": "app-icon.png", - "version": "0.01", + "version": "0.02", "description": "Strike the clock on the hour. A great tool to remind you an hour has passed!", "tags": "tool,alarm", "readme": "README.md", "storage": [ {"name":"hourstrike.app.js","url":"app.js"}, {"name":"hourstrike.boot.js","url":"boot.js"}, + {"name":"hourstrike.js","url":"hourstrike.js"}, {"name":"hourstrike.img","url":"app-icon.js","evaluate":true} ] } diff --git a/apps/hourstrike/ChangeLog b/apps/hourstrike/ChangeLog index 5560f00bc..769b8ebeb 100644 --- a/apps/hourstrike/ChangeLog +++ b/apps/hourstrike/ChangeLog @@ -1 +1,2 @@ -0.01: New App! +0.01: New App +0.02: Add different strike intervals and support for quiet time diff --git a/apps/hourstrike/README.md b/apps/hourstrike/README.md index 555182290..4fe9595c0 100644 --- a/apps/hourstrike/README.md +++ b/apps/hourstrike/README.md @@ -10,12 +10,12 @@ This app is slightly different from [Hour Chime](https://github.com/espruino/Ban ## Features -- Strikes the hour or the half hour -- Set up a quiet time +- Strike the hour, the half hour, or the quarter hour +- Set up a range of hours that clock will strike ## Known Issues -1. This app does not know or check whether your clock already chimes on the hour. +- This app does not know or check whether your clock already chimes on the hour. ## Creator diff --git a/apps/hourstrike/app.js b/apps/hourstrike/app.js index 4e39d689e..64d3c34d9 100644 --- a/apps/hourstrike/app.js +++ b/apps/hourstrike/app.js @@ -7,10 +7,9 @@ function updateSettings() { function resetSettings() { settings = { - on_hour: true, - on_half_hour: true, - start_hour: 9, - end_hour: 21, + interval: 3600, + start: 9, + end: 21, }; updateSettings(); } @@ -19,28 +18,22 @@ settings = storage.readJSON('hourstrike.json', 1); if (!settings) resetSettings(); function showMainMenu() { - var mode = ['off', 'v', 'b', 'vb', 'bv']; + var mode_txt = ['Off', 'Hour', 'Half', 'Quarter']; + var mode_interval = [-1, 3600, 1800, 900]; const mainmenu = { - '': { 'title': 'Time Passed' }, - 'On hour': { - value: settings.on_hour, - format: v => v?"ON":"OFF", + '': { 'title': 'Hour Strike' }, + 'Mode': { + value: mode_interval.indexOf(settings.mode), + format: v => mode_txt[v], onchange: v => { - settings.on_hour = v; + settings.interval = mode_interval[v]; updateSettings(); } }, - 'On half hour': { - value: settings.on_half_hour, - format: v => v?"ON":"OFF", - onchange: v => { - settings.on_half_hour = v; - updateSettings(); - } - }, - 'Start hour': { + 'Start': { value: settings.start_hour, min: 0, max: 23, + format: v => v+':00', onchange: v=> { settings.start_hour = v; updateSettings(); @@ -49,6 +42,7 @@ function showMainMenu() { 'End hour': { value: settings.end_hour, min: 0, max: 23, + format: v => v+':59', onchange: v=> { settings.end_hour = v; updateSettings(); @@ -59,4 +53,4 @@ function showMainMenu() { return E.showMenu(mainmenu); } -showMainMenu(); \ No newline at end of file +showMainMenu(); diff --git a/apps/hourstrike/boot.js b/apps/hourstrike/boot.js index 13748901f..a67e9a6d2 100644 --- a/apps/hourstrike/boot.js +++ b/apps/hourstrike/boot.js @@ -1,29 +1,7 @@ (function() { var setting = require('Storage').readJSON('hourstrike.json',1)||[]; - var notify_on = []; - - if (setting.on_hour || setting.on_harlf_hour) { - var cur = new Date(); - var cur_hour = cur.getHours(), cur_sec = cur.getMinutes()*60+cur.getSeconds(); - var notify_on = [1800, 3600]; - var notify_func = function() { - Bangle.buzz(200, 0.5) - .then(() => new Promise(resolve => setTimeout(resolve,200))) - .then(() => Bangle.buzz(200, 0.5)); - }; - var wait_sec = -1, notify_hour = cur_hour; - if (cur_sec0) { - if (setting.start_hour<=notify_hour&¬ify_hour<=setting.end_hour) { - setTimeout(notify_func, wait_sec*1000); - setTimeout(load, wait_sec*1000 + 800); - } else { - setTimeout(load, t*1000 + 800); - } - } + var cur = new Date(); + var cur_sec = cur.getMinutes()*60+cur.getSeconds(); + var notify_sec = setting.interval>0?setting.interval-setting.interval%cur_sec:-1; + if (notify_sec>0) setTimeout(load('hourstrike.js'), notify_sec*1000); })(); diff --git a/apps/hourstrike/hourstrike.js b/apps/hourstrike/hourstrike.js new file mode 100644 index 000000000..4d3650d58 --- /dev/null +++ b/apps/hourstrike/hourstrike.js @@ -0,0 +1,25 @@ +clearInterval(); + +var setting = require('Storage').readJSON('hourstrike.json',1)||[]; +var cur = new Date(); +var cur_hour = cur.getHours(); +var cur_min = cur.getMinutes(); +var cur_sec = cur.getSeconds(); + +var wait_sec; +if (cur_hoursetting.end) { + wait_sec = ((23-cur_hour+setting.start)*60+59-cur_min)*60+60-cur_sec; +} else { + wait_sec = 0; +} + +var notify_func = function () { + Bangle.buzz(200, 0.5) + .then(() => new Promise(resolve => setTimeout(resolve,200))) + .then(() => Bangle.buzz(200, 0.5)); +}; + +setTimeout(notify_func, wait_sec*1000); +setTimeout(load, wait_sec*1000+800);