Merge pull request #3192 from nxdefiant/medicalinfo

medicalinfo: Read height + weight from myprofile
pull/3196/head
Rob Pilling 2024-02-12 21:34:25 +00:00 committed by GitHub
commit 70f91b5a6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 30 additions and 14 deletions

View File

@ -1 +1,2 @@
0.01: Initial Medical Information application!
0.02: Read height and weight from myprofile

View File

@ -10,12 +10,12 @@ The file has the following contents:
```
{
"bloodType": "",
"height": "",
"weight": "",
"medicalAlert": [ "" ]
}
```
Weight and height are read from myprofile.
## Medical information editor
Clicking on the download icon of `Medical Information` in the app loader invokes the editor.

View File

@ -1,8 +1,7 @@
const medicalinfo = require('medicalinfo').load();
const myprofile = require("Storage").readJSON("myprofile.json",1)||{};
// const medicalinfo = {
// bloodType: "O+",
// height: "166cm",
// weight: "73kg"
// };
function hasAlert(info) {
@ -12,7 +11,7 @@ function hasAlert(info) {
// No space for widgets!
// TODO: no padlock widget visible so prevent screen locking?
g.clear();
g.reset().clear();
const bodyFont = g.getFonts().includes("12x20") ? "12x20" : "6x8:2";
g.setFont(bodyFont);
@ -33,10 +32,14 @@ if (hasAlert(medicalinfo)) {
if (medicalinfo.bloodType) {
lines = lines.concat(g.wrapString("Blood group: " + medicalinfo.bloodType, g.getWidth() - 10));
}
if (medicalinfo.height) {
if (myprofile.height) { // Prefer height from myprofile if set
lines = lines.concat(g.wrapString("Height: " + require("locale").distance(myprofile.height, 2), g.getWidth() - 10));
} else if (medicalinfo.height) { // read height from own settings if previously stored here
lines = lines.concat(g.wrapString("Height: " + medicalinfo.height, g.getWidth() - 10));
}
if (medicalinfo.weight) {
if (myprofile.weight) { // Prefer weight from myprofile if set
lines = lines.concat(g.wrapString("Weight: " + myprofile.weight + "kg", g.getWidth() - 10));
} else if (medicalinfo.weight) { // read weight from own settings if previously stored here
lines = lines.concat(g.wrapString("Weight: " + medicalinfo.weight, g.getWidth() - 10));
}

View File

@ -3,8 +3,6 @@ const storage = require('Storage');
exports.load = function () {
const medicalinfo = storage.readJSON('medicalinfo.json') || {
bloodType: "",
height: "",
weight: "",
medicalAlert: [""]
};

View File

@ -1,6 +1,4 @@
{
"bloodType": "",
"height": "",
"weight": "",
"medicalAlert": [ "" ]
}

View File

@ -1,6 +1,6 @@
{ "id": "medicalinfo",
"name": "Medical Information",
"version":"0.01",
"version":"0.02",
"description": "Provides 'medicalinfo.json' used by various health apps, as well as a way to edit it from the App Loader",
"icon": "app.png",
"tags": "health,medical",
@ -16,5 +16,6 @@
],
"data": [
{"name":"medicalinfo.json","url":"medicalinfo.json"}
]
],
"dependencies": {"myprofile":"app"}
}

2
apps/myprofile/ChangeLog Normal file
View File

@ -0,0 +1,2 @@
0.01: New App!
0.02: Add weight

View File

@ -10,6 +10,7 @@ Configure your personal profile. All settings are optional and are only stored o
| HR max | maximum heart rate | BPM | BPM | 60 | Use maximum value when exercising.<br/> If unsure set to 220-age. |
| HR min | minimum heart rate | BPM | BPM | 200 | Measure your heart rate after waking up |
| Height | Body height | local length unit | meter | 0 (=not set) | - |
| Weight | Body weight | kg | kf | 0 (=not set) | - |
| Stride length | distance traveled with one step | local length unit | meter | 0 (=not set) | Walk 10 steps and divide the travelled distance by 10 |
## Developer notes

View File

@ -3,7 +3,7 @@
"shortName":"My Profile",
"icon": "app.png",
"type": "settings",
"version":"0.01",
"version":"0.02",
"description": "Configure your personal profile. All settings are optional and only stored on the watch.",
"readme": "README.md",
"tags": "tool,utility",

View File

@ -7,6 +7,7 @@
strideLength: 0, // 0 = not set
birthday: '1970-01-01',
height: 0, // 0 = not set
weight: 0, // 0 = not set
}, require('Storage').readJSON(FILE, true) || {});
function writeProfile() {
@ -101,6 +102,17 @@
}
},
/*LANG*/"Weight": {
value: myprofile.weight,
min:0,
step:1,
format: v => v ? v + "kg" : '-',
onchange: v => {
myprofile.weight=v;
writeProfile();
},
},
/*LANG*/'HR max': {
format: v => /*LANG*/`${v} BPM`,
value: myprofile.maxHrm,