add quiet time and intervals
parent
4574726f5d
commit
314ea623a7
|
|
@ -3065,13 +3065,14 @@
|
||||||
"name": "Hour Strike",
|
"name": "Hour Strike",
|
||||||
"shortName": "Hour Strike",
|
"shortName": "Hour Strike",
|
||||||
"icon": "app-icon.png",
|
"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!",
|
"description": "Strike the clock on the hour. A great tool to remind you an hour has passed!",
|
||||||
"tags": "tool,alarm",
|
"tags": "tool,alarm",
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"hourstrike.app.js","url":"app.js"},
|
{"name":"hourstrike.app.js","url":"app.js"},
|
||||||
{"name":"hourstrike.boot.js","url":"boot.js"},
|
{"name":"hourstrike.boot.js","url":"boot.js"},
|
||||||
|
{"name":"hourstrike.js","url":"hourstrike.js"},
|
||||||
{"name":"hourstrike.img","url":"app-icon.js","evaluate":true}
|
{"name":"hourstrike.img","url":"app-icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +1,2 @@
|
||||||
0.01: New App!
|
0.01: New App
|
||||||
|
0.02: Add different strike intervals and support for quiet time
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,12 @@ This app is slightly different from [Hour Chime](https://github.com/espruino/Ban
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Strikes the hour or the half hour
|
- Strike the hour, the half hour, or the quarter hour
|
||||||
- Set up a quiet time
|
- Set up a range of hours that clock will strike
|
||||||
|
|
||||||
## Known Issues
|
## 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
|
## Creator
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,9 @@ function updateSettings() {
|
||||||
|
|
||||||
function resetSettings() {
|
function resetSettings() {
|
||||||
settings = {
|
settings = {
|
||||||
on_hour: true,
|
interval: 3600,
|
||||||
on_half_hour: true,
|
start: 9,
|
||||||
start_hour: 9,
|
end: 21,
|
||||||
end_hour: 21,
|
|
||||||
};
|
};
|
||||||
updateSettings();
|
updateSettings();
|
||||||
}
|
}
|
||||||
|
|
@ -19,28 +18,22 @@ settings = storage.readJSON('hourstrike.json', 1);
|
||||||
if (!settings) resetSettings();
|
if (!settings) resetSettings();
|
||||||
|
|
||||||
function showMainMenu() {
|
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 = {
|
const mainmenu = {
|
||||||
'': { 'title': 'Time Passed' },
|
'': { 'title': 'Hour Strike' },
|
||||||
'On hour': {
|
'Mode': {
|
||||||
value: settings.on_hour,
|
value: mode_interval.indexOf(settings.mode),
|
||||||
format: v => v?"ON":"OFF",
|
format: v => mode_txt[v],
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.on_hour = v;
|
settings.interval = mode_interval[v];
|
||||||
updateSettings();
|
updateSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'On half hour': {
|
'Start': {
|
||||||
value: settings.on_half_hour,
|
|
||||||
format: v => v?"ON":"OFF",
|
|
||||||
onchange: v => {
|
|
||||||
settings.on_half_hour = v;
|
|
||||||
updateSettings();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'Start hour': {
|
|
||||||
value: settings.start_hour,
|
value: settings.start_hour,
|
||||||
min: 0, max: 23,
|
min: 0, max: 23,
|
||||||
|
format: v => v+':00',
|
||||||
onchange: v=> {
|
onchange: v=> {
|
||||||
settings.start_hour = v;
|
settings.start_hour = v;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
|
@ -49,6 +42,7 @@ function showMainMenu() {
|
||||||
'End hour': {
|
'End hour': {
|
||||||
value: settings.end_hour,
|
value: settings.end_hour,
|
||||||
min: 0, max: 23,
|
min: 0, max: 23,
|
||||||
|
format: v => v+':59',
|
||||||
onchange: v=> {
|
onchange: v=> {
|
||||||
settings.end_hour = v;
|
settings.end_hour = v;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
|
@ -59,4 +53,4 @@ function showMainMenu() {
|
||||||
return E.showMenu(mainmenu);
|
return E.showMenu(mainmenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
showMainMenu();
|
showMainMenu();
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,7 @@
|
||||||
(function() {
|
(function() {
|
||||||
var setting = require('Storage').readJSON('hourstrike.json',1)||[];
|
var setting = require('Storage').readJSON('hourstrike.json',1)||[];
|
||||||
var notify_on = [];
|
var cur = new Date();
|
||||||
|
var cur_sec = cur.getMinutes()*60+cur.getSeconds();
|
||||||
if (setting.on_hour || setting.on_harlf_hour) {
|
var notify_sec = setting.interval>0?setting.interval-setting.interval%cur_sec:-1;
|
||||||
var cur = new Date();
|
if (notify_sec>0) setTimeout(load('hourstrike.js'), notify_sec*1000);
|
||||||
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_sec<notify_on[0]) {
|
|
||||||
wait_sec = notify_on[0]-cur_sec;
|
|
||||||
} else if (cur_sec<notify_on[1]) {
|
|
||||||
wait_sec = notify_on[1]-cur_sec;
|
|
||||||
notify_hour += 1;
|
|
||||||
}
|
|
||||||
if (wait_sec>0) {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -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_hour<setting.start) {
|
||||||
|
wait_sec = ((setting.start-1-cur_hour)*60+59-cur_min)*60+60-cur_sec;
|
||||||
|
} else if (cur_hour>setting.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);
|
||||||
Loading…
Reference in New Issue