mirror of https://github.com/espruino/BangleApps
wohrm: Add settings
parent
15df120506
commit
0caa10b705
|
@ -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}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
Loading…
Reference in New Issue