mirror of https://github.com/espruino/BangleApps
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
// 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')
|
|
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) || {}));
|
|
|
|
const menu = {
|
|
'': { 'title': 'Cycling' },
|
|
'< Back': back,
|
|
'Units': {
|
|
value: settings.metric,
|
|
format: v => v ? 'metric' : 'imperial',
|
|
onchange: (metric) => {
|
|
settings.metric = metric;
|
|
storage.writeJSON(SETTINGS_FILE, settings);
|
|
},
|
|
},
|
|
}
|
|
|
|
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]);
|
|
}
|
|
|
|
E.showMenu(menu);
|
|
})
|