BangleApps/apps/usgs/settings.js

82 lines
2.1 KiB
JavaScript

(function(back) {
var FILE = "usgs.json";
var settings = Object.assign({
loc: '03272100',
keys: {'Gage height': true, 'Discharge': true, 'Temperature, water': true},
shortenedName: {"Gage height":"Ga","Discharge":"Dis","Temperature, water":"Temp"},
tempUnitF: true,
}, require('Storage').readJSON(FILE, true) || {});
var submenu = {
"" : {
"title" : "DataStreams"
},
"< Back" : function() { E.showMenu(menu); },
};
function writeSettings() {
require('Storage').writeJSON(FILE, settings);
}
function popSubMenu() {
data = getDataStreams();
}
function popSubMenuData(data) {
console.log(data);
Object.keys(data).forEach(function(k){
var name = data[k].description.split(" / ")[0];
console.log(name);
if (!settings.keys[name]) {
// Setting doesn't exist, so we assume it's false
settings.keys[name] = false;
}
submenu[name]= {value:settings.keys[name], onchange: v => {
settings.keys[name] = v;
writeSettings();
}};
});
E.showMenu(submenu);
}
var menu = {
"" : { "title" : "USGS" },
"< Back" : () => back(),
'Temp unit': {
value: !!settings.tempUnitF, // !! converts undefined to false
format: v => v?"F":"C",
onchange: v => {
settings.tempUnitF = v;
writeSettings();
}
},
'Location': {
value: settings.loc,
onchange: () => {
setTimeout(() => {
keyboard.input({text:settings.loc}).then(result => {
settings.loc = result;
writeSettings();
});
}, 100);
}
},
"DataStreams" : function() { popSubMenu();},
};
var keyboard = "textinput";
try {keyboard = require(keyboard);} catch(e) {keyboard = null;}
if (!keyboard) delete menu.Location;
function getDataStreams() {
const uri = "https://labs.waterdata.usgs.gov/sta/v1.1/Things('USGS-" +
settings.loc +
"')/Datastreams?$select=description";
if (Bangle.http) {
Bangle.http(uri, {timeout:10000}).then(d => {popSubMenuData(JSON.parse(d.resp).value);});
}
}
// Show the menu
E.showMenu(menu);
})