BangleApps/apps/circlesclock/settings.js

128 lines
4.4 KiB
JavaScript
Raw Normal View History

2021-12-16 07:06:53 +00:00
(function(back) {
const SETTINGS_FILE = "circlesclock.json";
const storage = require('Storage');
const clock_info = require("clock_info");
2022-02-08 10:41:50 +00:00
let settings = Object.assign(
storage.readJSON("circlesclock.default.json", true) || {},
storage.readJSON(SETTINGS_FILE, true) || {}
);
2021-12-16 07:06:53 +00:00
function save(key, value) {
settings[key] = value;
storage.write(SETTINGS_FILE, settings);
}
2022-01-14 13:46:59 +00:00
//const valuesCircleTypes = ["empty", "steps", "stepsDist", "hr", "battery", "weather", "sunprogress", "temperature", "pressure", "altitude", "timer"];
//const namesCircleTypes = ["empty", "steps", "distance", "heart", "battery", "weather", "sun", "temperature", "pressure", "altitude", "timer"];
var valuesCircleTypes = ["empty","weather", "sunprogress"];
var namesCircleTypes = ["empty","weather", "sun"];
clock_info.load().forEach(e=>{
//TODO filter for hasRange and other
if(!e.items.length || !e.items[0].name) {
//suppose unnamed are varying (like timers or events), pick the first
item = e.items[0];
valuesCircleTypes = valuesCircleTypes.concat([e.name+"/"]);
namesCircleTypes = namesCircleTypes.concat([e.name]);
} else {
let values = e.items.map(i=>e.name+"/"+i.name);
let names =e.name=="Bangle" ? e.items.map(i=>i.name) : values;
valuesCircleTypes = valuesCircleTypes.concat(values);
namesCircleTypes = namesCircleTypes.concat(names);
}
})
2022-02-22 14:15:18 +00:00
const valuesColors = ["", "#ff0000", "#00ff00", "#0000ff", "#ffff00", "#ff00ff",
"#00ffff", "#fff", "#000", "green-red", "red-green", "fg"];
const namesColors = ["default", "red", "green", "blue", "yellow", "magenta",
"cyan", "white", "black", "green->red", "red->green", "foreground"];
2022-01-30 19:55:22 +00:00
const weatherData = ["empty", "humidity", "wind"];
function showMainMenu() {
let menu ={
'': { 'title': 'Circles clock' },
/*LANG*/'< Back': back,
/*LANG*/'circle count': {
2022-02-08 10:41:50 +00:00
value: settings.circleCount,
min: 3,
max : 4,
step: 1,
onchange: x => save('circleCount', x),
},
/*LANG*/'circle 1': ()=>showCircleMenu(1),
/*LANG*/'circle 2': ()=>showCircleMenu(2),
/*LANG*/'circle 3': ()=>showCircleMenu(3),
/*LANG*/'circle 4': ()=>showCircleMenu(4),
/*LANG*/'battery warn': {
2022-02-08 10:41:50 +00:00
value: settings.batteryWarn,
min: 10,
max : 100,
step: 10,
format: x => {
return x + '%';
},
onchange: x => save('batteryWarn', x),
2021-12-16 07:06:53 +00:00
},
/*LANG*/'show widgets': {
2022-02-08 10:41:50 +00:00
value: !!settings.showWidgets,
format: () => (settings.showWidgets ? 'Yes' : 'No'),
onchange: x => save('showWidgets', x),
},
2022-02-08 10:41:50 +00:00
/*LANG*/'weather data': {
value: weatherData.indexOf(settings.weatherCircleData),
min: 0, max: 2,
format: v => weatherData[v],
onchange: x => save('weatherCircleData', weatherData[x]),
2022-05-18 18:13:57 +00:00
},
/*LANG*/'update interval': {
value: settings.updateInterval,
min: 0,
max : 3600,
step: 30,
format: x => {
return x + 's';
},
onchange: x => save('updateInterval', x),
2022-10-25 06:11:19 +00:00
},
/*LANG*/'show big weather': {
value: !!settings.showBigWeather,
format: () => (settings.showBigWeather ? 'Yes' : 'No'),
onchange: x => save('showBigWeather', x),
}
};
E.showMenu(menu);
}
function showCircleMenu(circleId) {
2022-01-31 20:04:30 +00:00
const circleName = "circle" + circleId;
const colorKey = circleName + "color";
const colorizeIconKey = circleName + "colorizeIcon";
2022-01-31 20:04:30 +00:00
const menu = {
'': { 'title': /*LANG*/'Circle ' + circleId },
/*LANG*/'< Back': ()=>showMainMenu(),
/*LANG*/'data': {
2022-02-08 10:41:50 +00:00
value: valuesCircleTypes.indexOf(settings[circleName]),
2022-01-30 19:55:22 +00:00
min: 0, max: valuesCircleTypes.length - 1,
format: v => namesCircleTypes[v],
onchange: x => save(circleName, valuesCircleTypes[x]),
},
/*LANG*/'color': {
2022-02-08 10:41:50 +00:00
value: valuesColors.indexOf(settings[colorKey]) || 0,
2022-01-30 19:55:22 +00:00
min: 0, max: valuesColors.length - 1,
format: v => namesColors[v],
onchange: x => save(colorKey, valuesColors[x]),
},
2022-01-29 21:33:43 +00:00
/*LANG*/'colorize icon': {
2022-02-08 10:41:50 +00:00
value: settings[colorizeIconKey] || false,
2022-01-29 21:33:43 +00:00
format: () => (settings[colorizeIconKey] ? 'Yes' : 'No'),
onchange: x => save(colorizeIconKey, x),
},
};
E.showMenu(menu);
}
showMainMenu();
2021-12-16 07:06:53 +00:00
});