wohrm: Add settings

pull/1253/head
Adam Schmalhofer 2021-12-19 22:01:08 +01:00
parent 15df120506
commit 0caa10b705
4 changed files with 52 additions and 13 deletions

View File

@ -1714,7 +1714,7 @@
{
"id": "wohrm",
"name": "Workout HRM",
"version": "0.09-rc4",
"version": "0.09-rc7",
"description": "Workout heart rate monitor notifies you with a buzz if your heart rate goes above or below the set limits.",
"icon": "app.png",
"type": "app",
@ -1725,6 +1725,7 @@
"screenshots": [{"url":"bangle1-workout-HRM-screenshot.png"}],
"storage": [
{"name":"wohrm.app.js","url":"app.js"},
{"name":"wohrm.settings.js","url":"settings.js"},
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
]
},

View File

@ -8,3 +8,4 @@
0.08: tag HRM power requests to allow this to work alongside other widgets/apps (fix #799)
0.09: Ported to Bangle.js2
Home returns to clock, instead of menu
Add settings

View File

@ -4,14 +4,16 @@ const Setter = {
UPPER: 'upper',
LOWER: 'lower'
};
const SETTINGS_FILE = "wohrm.setting.json";
var settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {
upperLimit: 130,
lowerLimit: 100
};
const shortBuzzTimeInMs = 80;
const longBuzzTimeInMs = 400;
let upperLimit = 130;
let upperLimitChanged = true;
let lowerLimit = 100;
let lowerLimitChanged = true;
let limitSetter = Setter.NONE;
@ -150,7 +152,7 @@ function renderUpperLimit() {
g.setColor(g.theme.fg);
}
g.setFontVector(fontSizes.limits).setFontAlign(-1, 0, 0);
g.drawString("Upper: " + upperLimit,
g.drawString("Upper: " + settings.upperLimit,
upperLshape.minX,
upperLshape.minY+upperLshape.rectWidth/2);
@ -189,7 +191,7 @@ function renderLowerLimit() {
g.setColor(g.theme.fg);
}
g.setFontVector(fontSizes.limits).setFontAlign(-1, 0, 0);
g.drawString("Lower: " + lowerLimit,
g.drawString("Lower: " + settings.lowerLimit,
lowerLshape.maxX + lowerLshape.rectWidth/2,
lowerLshape.minY - lowerLshape.rectWidth/2);
@ -247,13 +249,13 @@ function buzz() {
// Do not buzz if not confident
if(hrConfidence < 85) { return; }
if(currentHeartRate > upperLimit)
if(currentHeartRate > settings.upperLimit)
{
Bangle.buzz(shortBuzzTimeInMs);
setTimeout(() => { Bangle.buzz(shortBuzzTimeInMs); }, shortBuzzTimeInMs * 2);
}
if(currentHeartRate < lowerLimit)
if(currentHeartRate < settings.lowerLimit)
{
Bangle.buzz(longBuzzTimeInMs);
}
@ -312,11 +314,11 @@ function incrementLimit() {
resetHighlightTimeout();
if (limitSetter === Setter.UPPER) {
upperLimit++;
settings.upperLimit++;
renderUpperLimit();
upperLimitChanged = true;
} else if(limitSetter === Setter.LOWER) {
lowerLimit++;
settings.lowerLimit++;
renderLowerLimit();
lowerLimitChanged = true;
}
@ -326,11 +328,11 @@ function decrementLimit(){
resetHighlightTimeout();
if (limitSetter === Setter.UPPER) {
upperLimit--;
settings.upperLimit--;
renderUpperLimit();
upperLimitChanged = true;
} else if(limitSetter === Setter.LOWER) {
lowerLimit--;
settings.lowerLimit--;
renderLowerLimit();
lowerLimitChanged = true;
}
@ -368,7 +370,7 @@ Bangle.setHRMPower(1,"wohrm");
Bangle.on('HRM', onHrm);
g.setTheme({bg:"#000",fg:"#fff",dark:true});
g.reset()
g.reset();
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();

35
apps/wohrm/settings.js Normal file
View File

@ -0,0 +1,35 @@
(function menu(back) {
const SETTINGS_FILE = "wohrm.setting.json";
// initialize with default settings...
const storage = require('Storage');
var settings = storage.readJSON(SETTINGS_FILE, 1) || {
upperLimit: 130,
lowerLimit: 100
};
function save() {
storage.write(SETTINGS_FILE, settings);
}
E.showMenu({
'': { 'title': 'Workout HRM' },
'< Back': back,
'Upper limit': {
value: settings.upperLimit,
min: 100, max: 200,
onchange: v => {
settings.upperLimit = v;
save();
}
},
'Lower limit': {
value: settings.lowerLimit,
min: 50, max: 150,
onchange: v => {
settings.lowerLimit = v;
save();
}
}
});
})