BangleApps/apps/powermanager/settings.js

134 lines
3.1 KiB
JavaScript
Raw 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,
'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': {
value: !!settings.log,
onchange: v => {
writeSettings("log", v);
}
},
'Detail logging': {
value: !!settings.logDetails,
onchange: v => {
writeSettings("logDetails", v);
}
}
};
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,
format: v => settings.warnEnabled ? "On" : "Off",
onchange: v => {
writeSettings("warnEnabled", v);
}
},
'Percentage': {
min: 80,
max: 100,
step: 2,
value: settings.warn,
format: v => v + "%",
onchange: v => {
writeSettings("warn", v);
}
}
};
E.showMenu(mainmenu);
})