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

58 lines
1.5 KiB
JavaScript
Raw Normal View History

2022-08-19 07:17:40 +00:00
(function(back) {
var FILE = "suw.json";
// Load settings
var settings = Object.assign({
2022-08-22 18:06:00 +00:00
nextTideType: "high",
nextTideHour: 0,
nextTideMin: 0,
2022-08-19 07:17:40 +00:00
}, require('Storage').readJSON(FILE, true) || {});
function writeSettings() {
require('Storage').writeJSON(FILE, settings);
}
// Helper method which uses int-based menu item for set of string values
function stringItems(startvalue, writer, values) {
return {
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)),
format: v => values[v],
min: 0,
max: values.length - 1,
wrap: true,
step: 1,
onchange: v => {
writer(values[v]);
writeSettings();
}
};
}
// Helper method which breaks string set settings down to local settings object
function stringInSettings(name, values) {
return stringItems(settings[name], v => settings[name] = v, values);
}
2022-08-19 07:17:40 +00:00
// Show the menu
E.showMenu({
"" : { "title" : "Seaside Watch" },
"< Back" : () => back(),
"Tide type": stringInSettings("nextTideType", ["high", "low "]),
2022-08-19 16:48:05 +00:00
'Hour': {
2022-08-19 07:17:40 +00:00
value: 0|settings.nextTideHour, // 0| converts undefined to 0
min: 0, max: 23,
onchange: v => {
settings.nextTideHour = v;
writeSettings();
2022-08-19 16:15:28 +00:00
}
2022-08-19 16:48:05 +00:00
},
'Minutes': {
2022-08-19 07:17:40 +00:00
value: 0|settings.nextTideMin, // 0| converts undefined to 0
min: 0, max: 59,
onchange: v => {
settings.nextTideMin = v;
writeSettings();
}
},
2022-08-19 16:15:28 +00:00
});
2022-08-19 10:26:25 +00:00
});