add strength and more strike times

master
Weiming 2021-03-29 21:49:35 -04:00
parent d45c91aa4e
commit 1701e79f0c
6 changed files with 30 additions and 13 deletions

View File

@ -3065,7 +3065,7 @@
"name": "Hour Strike", "name": "Hour Strike",
"shortName": "Hour Strike", "shortName": "Hour Strike",
"icon": "app-icon.png", "icon": "app-icon.png",
"version": "0.03", "version": "0.04",
"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",

View File

@ -1,3 +1,4 @@
0.01: New App 0.01: New App
0.02: Add different strike intervals and support for quiet time 0.02: Add different strike intervals and support for quiet time
0.03: Bug fixes for setting attributes 0.03: Bug fixes for setting attributes
0.04: Add more time to strike and the strength

View File

@ -10,8 +10,9 @@ This app is slightly different from [Hour Chime](https://github.com/espruino/Ban
## Features ## Features
- Strike the hour, the half hour, or the quarter hour - Strike the hour, the half hour, the quarter hour, and more
- Set up a range of hours that clock will strike - Set up a range of hours that clock will strike
- Set up the strength of the strike
## Known Issues ## Known Issues

View File

@ -10,6 +10,7 @@ function resetSettings() {
interval: 3600, interval: 3600,
start: 9, start: 9,
end: 21, end: 21,
vlevel: 0.5,
}; };
updateSettings(); updateSettings();
} }
@ -18,13 +19,13 @@ settings = storage.readJSON('hourstrike.json', 1);
if (!settings) resetSettings(); if (!settings) resetSettings();
function showMainMenu() { function showMainMenu() {
var mode_txt = ['Off', 'Hour', 'Half', 'Quarter']; var mode_txt = ['Off','1 min','5 min','10 min','1/4 h','1/2 h','1 h'];
var mode_interval = [-1, 3600, 1800, 900]; var mode_interval = [-1,60,300,600,900,1800,3600];
const mainmenu = { const mainmenu = {
'': { 'title': 'Hour Strike' }, '': { 'title': 'Hour Strike' },
'Mode': { 'Notify every': {
value: 1 | mode_interval.indexOf(settings.interval), value: mode_interval.indexOf(settings.interval),
min: 0, max: 3, min: 0, max: 6,
format: v => mode_txt[v], format: v => mode_txt[v],
onchange: v => { onchange: v => {
settings.interval = mode_interval[v]; settings.interval = mode_interval[v];
@ -34,6 +35,7 @@ function showMainMenu() {
'Start': { 'Start': {
value: settings.start, value: settings.start,
min: 0, max: 23, min: 0, max: 23,
format: v=>v+':00',
onchange: v=> { onchange: v=> {
settings.start = v; settings.start = v;
updateSettings(); updateSettings();
@ -42,11 +44,21 @@ function showMainMenu() {
'End': { 'End': {
value: settings.end, value: settings.end,
min: 0, max: 23, min: 0, max: 23,
format: v=>v+':59',
onchange: v=> { onchange: v=> {
settings.end = v; settings.end = v;
updateSettings(); updateSettings();
} }
}, },
'Strength': {
value: settings.vlevel*10,
min: 1, max: 10,
format: v=>v/10,
onchange: v=> {
settings.vlevel = v/10;
updateSettings();
}
},
'< Back': ()=>load() '< Back': ()=>load()
}; };
return E.showMenu(mainmenu); return E.showMenu(mainmenu);

View File

@ -2,6 +2,7 @@
var setting = require('Storage').readJSON('hourstrike.json',1)||[]; var setting = require('Storage').readJSON('hourstrike.json',1)||[];
var cur = new Date(); var cur = new Date();
var cur_sec = cur.getMinutes()*60+cur.getSeconds(); var cur_sec = cur.getMinutes()*60+cur.getSeconds();
var notify_sec = setting.interval>0?setting.interval-setting.interval%cur_sec:-1; var notify_sec = setting.interval>0?setting.interval-cur_sec%setting.interval:-1;
if (notify_sec>0) setTimeout(load('hourstrike.js'), notify_sec*1000); if (notify_sec>0) setTimeout(function() {load("hourstrike.js");}, notify_sec*1000);
})(); })();

View File

@ -15,11 +15,13 @@ if (cur_hour<setting.start) {
wait_sec = 0; wait_sec = 0;
} }
var notify_func = function () { function notify_func () {
Bangle.buzz(200, 0.5) Bangle.buzz(200, setting.vlevel)
.then(() => new Promise(resolve => setTimeout(resolve,200))) .then(() => new Promise(resolve => setTimeout(resolve,200)))
.then(() => Bangle.buzz(200, 0.5)); .then(() => Bangle.buzz(200, setting.vlevel));
}; }
setTimeout(notify_func, wait_sec*1000); setTimeout(notify_func, wait_sec*1000);
setTimeout(load, wait_sec*1000+800); setTimeout(load, wait_sec*1000+800);