1
0
Fork 0
BangleApps/apps/cycling/settings.js

58 lines
1.5 KiB
JavaScript
Raw Normal View History

2022-03-20 08:25:43 +00:00
// This file should contain exactly one function, which shows the app's settings
/**
* @param {function} back Use back() to return to settings menu
*/
(function(back) {
const storage = require('Storage')
2022-03-20 09:51:00 +00:00
const SETTINGS_FILE = 'cycling.json'
// Set default values and merge with stored values
let settings = Object.assign({
metric: true,
sensors: {},
}, (storage.readJSON(SETTINGS_FILE, true) || {}));
2022-03-20 08:25:43 +00:00
const menu = {
2022-03-20 09:51:00 +00:00
'': { 'title': 'Cycling' },
2022-03-20 08:25:43 +00:00
'< Back': back,
2022-03-20 09:51:00 +00:00
'Units': {
value: settings.metric,
format: v => v ? 'metric' : 'imperial',
onchange: (metric) => {
settings.metric = metric;
storage.writeJSON(SETTINGS_FILE, settings);
},
2022-03-20 08:25:43 +00:00
},
}
2022-03-20 09:51:00 +00:00
const sensorMenus = {};
for (var addr of Object.keys(settings.sensors)) {
// Define sub menu
sensorMenus[addr] = {
'': { title: addr },
'< Back': () => E.showMenu(menu),
'cm': {
value: settings.sensors[addr].cm,
min: 80, max: 240, step: 1,
onchange: (v) => {
settings.sensors[addr].cm = v;
storage.writeJSON(SETTINGS_FILE, settings);
},
},
'+ mm': {
value: settings.sensors[addr].mm,
min: 0, max: 9, step: 1,
onchange: (v) => {
settings.sensors[addr].mm = v;
storage.writeJSON(SETTINGS_FILE, settings);
},
},
};
// Add entry to main menu
menu[addr] = () => E.showMenu(sensorMenus[addr]);
}
2022-03-20 08:25:43 +00:00
E.showMenu(menu);
2022-03-20 10:05:54 +00:00
})