BangleApps/apps/powermanager/settings.js

196 lines
4.4 KiB
JavaScript
Raw Permalink Normal View History

(function(back) {
var systemsettings = require("Storage").readJSON("setting.json") || {};
function writeSettings(key, value) {
var s = require('Storage').readJSON(FILE, true) || {};
s[key] = value;
require('Storage').writeJSON(FILE, s);
readSettings();
}
function readSettings() {
settings = Object.assign(
require('Storage').readJSON("powermanager.default.json", true) || {},
require('Storage').readJSON(FILE, true) || {}
);
}
var FILE = "powermanager.json";
var settings;
readSettings();
var mainmenu = {
'': {
'title': 'Power Manager'
},
2023-02-02 20:40:34 +00:00
"< Back" : back,
'Widget': function() {
E.showMenu(submenu_widget);
2023-02-20 19:56:12 +00:00
},
'Monotonic percentage': {
value: !!settings.forceMonoPercentage,
onchange: v => {
writeSettings("forceMonoPercentage", v);
}
},
'Monotonic voltage': {
value: !!settings.forceMonoVoltage,
onchange: v => {
writeSettings("forceMonoVoltage", v);
}
},
'Charge warning': function() {
E.showMenu(submenu_chargewarn);
},
'Calibrate': function() {
E.showMenu(submenu_calibrate);
2023-02-05 20:44:28 +00:00
},
'Logging': function() {
E.showMenu(submenu_logging);
}
};
function roundToDigits(number, stepsize) {
return Math.round(number / stepsize) * stepsize;
}
var stepsize = 0.0002;
var full = 0.3144;
function getInitialCalibrationOffset() {
return roundToDigits(systemsettings.batFullVoltage - full, stepsize) || 0;
}
var submenu_calibrate = {
'': {
title: "Calibrate",
back: function() {
E.showMenu(mainmenu);
},
},
'Autodetect': {
value: !!settings.autoCalibration,
onchange: v => {
writeSettings("autoCalibration", v);
}
},
'Offset': {
min: -0.05,
max: 0.05,
step: stepsize,
value: getInitialCalibrationOffset(),
format: v => roundToDigits(v, stepsize).toFixed((""+stepsize).length - 2),
onchange: v => {
require("powermanager").setCalibration(v + full);
}
},
'Clear': function() {
E.showPrompt("Clear charging offset?").then((r) => {
if (r) {
delete systemsettings.batFullVoltage;
require("Storage").writeJSON("setting.json", systemsettings);
//reset value shown in menu to the newly set one
submenu_calibrate.Offset.value = getInitialCalibrationOffset();
E.showMenu(mainmenu);
}
});
}
};
var submenu_chargewarn = {
'': {
title: "Charge warning",
back: function() {
E.showMenu(mainmenu);
},
},
'Enabled': {
value: !!settings.warnEnabled,
onchange: v => {
writeSettings("warnEnabled", v);
}
},
'Percentage': {
min: 80,
max: 100,
step: 2,
value: settings.warn,
format: v => v + "%",
onchange: v => {
writeSettings("warn", v);
}
}
};
var submenu_logging = {
'': {
title: "Logging",
back: function() {
E.showMenu(mainmenu);
},
},
'Enabled': {
value: !!settings.log,
onchange: v => {
writeSettings("log", v);
}
},
'Trace': {
value: !!settings.logDetails,
onchange: v => {
writeSettings("logDetails", v);
}
},
'Clear logs': function (){
E.showPrompt("Delete logs and reload?").then((v)=>{
if (v) {
require('Storage').open("powermanager.log","w").erase();
require("Storage").erase("powermanager.def.json");
require("Storage").erase("powermanager.hw.json");
load();
} else
E.showMenu(submenu_logging);
}).catch(()=>{
E.showMenu(submenu_logging);
});
}
}
var submenu_widget = {
'': {
title: "Widget",
back: function() {
E.showMenu(mainmenu);
},
},
'Enabled': {
value: !!settings.widget,
onchange: v => {
writeSettings("widget", v);
}
},
'Refresh': {
min: 0.5,
max: 60,
step: 0.5,
value: settings.refreshUnlocked || 1,
format: v => v + "s",
onchange: v => {
writeSettings("refreshUnlocked", v);
}
},
'Refresh locked': {
min: 5,
max: 120,
step: 5,
value: settings.refreshLocked || 60,
format: v => v + "s",
onchange: v => {
writeSettings("refreshLocked", v);
}
}
}
E.showMenu(mainmenu);
})