forked from FOSS/BangleApps
Merge pull request #2282 from myxor/widhrm_v0.06
WidHRM 0.06: Allow configuration of minimum confidence for HRM valuesmaster
commit
145e3ff815
|
@ -3,3 +3,4 @@
|
||||||
0.03: Ensure redrawing works with variable size widget system
|
0.03: Ensure redrawing works with variable size widget system
|
||||||
0.04: tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799)
|
0.04: tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799)
|
||||||
0.05: Use new 'lock' event, not LCD (so it works on Bangle.js 2)
|
0.05: Use new 'lock' event, not LCD (so it works on Bangle.js 2)
|
||||||
|
0.06: Allow configuration of minimum confidence for HRM values
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
{
|
{
|
||||||
"id": "widhrm",
|
"id": "widhrm",
|
||||||
"name": "Simple Heart Rate widget",
|
"name": "Simple Heart Rate widget",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "When the screen is on, the widget turns on the heart rate monitor and displays the current heart rate (or last known in grey). For this to work well you'll need at least a 15 second LCD Timeout.",
|
"description": "When the screen is on, the widget turns on the heart rate monitor and displays the current heart rate (or last known in grey). For this to work well you'll need at least a 15 second LCD Timeout.",
|
||||||
"icon": "widget.png",
|
"icon": "widget.png",
|
||||||
"type": "widget",
|
"type": "widget",
|
||||||
"tags": "health,widget",
|
"tags": "health,widget",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"widhrm.wid.js","url":"widget.js"}
|
{"name":"widhrm.wid.js","url":"widget.js"},
|
||||||
]
|
{"name":"widhrm.settings.js","url":"settings.js"}
|
||||||
|
],
|
||||||
|
"data": [{"name":"widhrm.json"}]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
/**
|
||||||
|
* @param {function} back Use back() to return to settings menu
|
||||||
|
*/
|
||||||
|
(function(back) {
|
||||||
|
const SETTINGS_FILE = "widhrm.json";
|
||||||
|
const storage = require("Storage");
|
||||||
|
|
||||||
|
let s = {
|
||||||
|
confidence: 0
|
||||||
|
};
|
||||||
|
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
|
||||||
|
for(const key in saved) {
|
||||||
|
s[key] = saved[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
function save(key, value) {
|
||||||
|
s[key] = value;
|
||||||
|
storage.write(SETTINGS_FILE, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
const menu = {
|
||||||
|
"": {"title": "Simple Heart Rate widget"},
|
||||||
|
"< Back": back,
|
||||||
|
/*LANG*/'min. confidence': {
|
||||||
|
value: s.confidence,
|
||||||
|
min: 0,
|
||||||
|
max : 100,
|
||||||
|
step: 5,
|
||||||
|
format: x => {
|
||||||
|
return x + "%";
|
||||||
|
},
|
||||||
|
onchange: x => save('confidence', x),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
E.showMenu(menu);
|
||||||
|
});
|
|
@ -1,5 +1,18 @@
|
||||||
(() => {
|
(() => {
|
||||||
if (!Bangle.isLocked) return; // old firmware
|
if (!Bangle.isLocked) return; // old firmware
|
||||||
|
|
||||||
|
const SETTINGS_FILE = 'widhrm.json';
|
||||||
|
let settings;
|
||||||
|
function loadSettings() {
|
||||||
|
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
|
||||||
|
const DEFAULTS = {
|
||||||
|
'confidence': 0
|
||||||
|
};
|
||||||
|
Object.keys(DEFAULTS).forEach(k=>{
|
||||||
|
if (settings[k]===undefined) settings[k]=DEFAULTS[k];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var currentBPM;
|
var currentBPM;
|
||||||
var lastBPM;
|
var lastBPM;
|
||||||
var isHRMOn = false;
|
var isHRMOn = false;
|
||||||
|
@ -39,7 +52,7 @@
|
||||||
bpm = lastBPM;
|
bpm = lastBPM;
|
||||||
isCurrent = false;
|
isCurrent = false;
|
||||||
}
|
}
|
||||||
if (bpm===undefined)
|
if (bpm===undefined || (settings && bpm<settings["confidence"]))
|
||||||
bpm = "--";
|
bpm = "--";
|
||||||
g.setColor(isCurrent ? g.theme.fg : "#808080");
|
g.setColor(isCurrent ? g.theme.fg : "#808080");
|
||||||
g.drawString(bpm, this.x+width/2, this.y+19);
|
g.drawString(bpm, this.x+width/2, this.y+19);
|
||||||
|
|
Loading…
Reference in New Issue