mirror of https://github.com/espruino/BangleApps
106 lines
2.9 KiB
JavaScript
106 lines
2.9 KiB
JavaScript
(function(back) {
|
|
function writeSettings(key, value) {
|
|
var s = require('Storage').readJSON(FILE, true) || {};
|
|
s[key] = value;
|
|
require('Storage').writeJSON(FILE, s);
|
|
readSettings();
|
|
}
|
|
|
|
function writeSettingsParent(parent, key, value) {
|
|
var s = require('Storage').readJSON(FILE, true) || {};
|
|
if (!s[parent]) s[parent] = {};
|
|
s[parent][key] = value;
|
|
require('Storage').writeJSON(FILE, s);
|
|
readSettings();
|
|
}
|
|
|
|
function readSettings(){
|
|
settings = Object.assign(
|
|
require('Storage').readJSON("sensortools.default.json", true) || {},
|
|
require('Storage').readJSON(FILE, true) || {}
|
|
);
|
|
}
|
|
|
|
var FILE="sensortools.json";
|
|
var settings;
|
|
readSettings();
|
|
|
|
|
|
let modes = ["nop", "emulate", "modify"];
|
|
let modesPower = ["nop", "emulate", "passthrough", "delay", "on"];
|
|
|
|
function showSubMenu(name,key,typesEmulate,typesModify){
|
|
var menu = {
|
|
'': { 'title': name,
|
|
back: ()=>{E.showMenu(buildMainMenu());}},
|
|
'Enabled': {
|
|
value: !!settings[key].enabled,
|
|
onchange: v => {
|
|
writeSettingsParent(key, "enabled",v);
|
|
}
|
|
},
|
|
'Mode': {
|
|
value: modes.indexOf(settings[key].mode||"nop"),
|
|
min: 0, max: modes.length-1,
|
|
format: v => { return modes[v]; },
|
|
onchange: v => {
|
|
writeSettingsParent(key,"mode",modes[v]);
|
|
showSubMenu(name,key,typesEmulate,typesModify);
|
|
}
|
|
},
|
|
'Name': {},
|
|
'Power': {
|
|
value: modesPower.indexOf(settings[key].power||"nop"),
|
|
min: 0, max: modesPower.length-1,
|
|
format: v => { return modesPower[v]; },
|
|
onchange: v => {
|
|
writeSettingsParent(key,"power",modesPower[v]);
|
|
}
|
|
},
|
|
};
|
|
|
|
if (settings[key].mode != "nop"){
|
|
let types = typesEmulate;
|
|
if (settings[key].mode == "modify") types = typesModify;
|
|
menu.Name = {
|
|
value: types.indexOf(settings[key].name||"static"),
|
|
min: 0, max: types.length-1,
|
|
format: v => { return types[v]; },
|
|
onchange: v => {
|
|
writeSettingsParent(key,"name",types[v]);
|
|
}
|
|
};
|
|
} else {
|
|
delete menu.Name;
|
|
}
|
|
|
|
E.showMenu(menu);
|
|
}
|
|
|
|
|
|
function buildMainMenu(){
|
|
var mainmenu = {
|
|
'': { 'title': 'Sensor tools' },
|
|
'< Back': back,
|
|
'Enabled': {
|
|
value: !!settings.enabled,
|
|
onchange: v => {
|
|
writeSettings("enabled",v);
|
|
},
|
|
},
|
|
'Log': {
|
|
value: !!settings.log,
|
|
onchange: v => {
|
|
writeSettings("log",v);
|
|
},
|
|
},
|
|
'GPS': ()=>{showSubMenu("GPS","gps",["nop", "staticfix", "nofix", "changingfix", "route", "routeFuzzy"],[]);},
|
|
'Compass': ()=>{showSubMenu("Compass","mag",["nop", "static", "rotate"],[]);},
|
|
'HRM': ()=>{showSubMenu("HRM","hrm",["nop", "static"],["bpmtrippled"],["sin"]);}
|
|
};
|
|
return mainmenu;
|
|
}
|
|
|
|
E.showMenu(buildMainMenu());
|
|
});
|