diff --git a/apps/owmweather/metadata.json b/apps/owmweather/metadata.json index a271f9eaa..8ec2b3cab 100644 --- a/apps/owmweather/metadata.json +++ b/apps/owmweather/metadata.json @@ -9,6 +9,7 @@ "supports" : ["BANGLEJS2"], "readme": "README.md", "storage": [ - {"name":"owmweather.boot.js","url":"boot.js"} + {"name":"owmweather.boot.js","url":"boot.js"}, + {"name":"owmweather.settings.js","url":"settings.js"} ] } diff --git a/apps/owmweather/settings.js b/apps/owmweather/settings.js new file mode 100644 index 000000000..a40c47fd6 --- /dev/null +++ b/apps/owmweather/settings.js @@ -0,0 +1,59 @@ +(function(back) { + 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("owmweather.default.json", true) || {}, + require('Storage').readJSON(FILE, true) || {} + ); + } + + var FILE="owmweather.json"; + var settings; + readSettings(); + + function buildMainMenu(){ + var mainmenu = { + '': { 'title': 'OWM weather' }, + '< Back': back, + "Enabled": { + value: !!settings.enabled, + onchange: v => { + writeSettings("enabled", v); + } + }, + "Refresh every": { + value: settings.refresh / 60, + min: 1, + max: 48, + step: 1, + format: v=>v+"h", + onchange: v => { + writeSettings("refresh",Math.round(v * 60)); + } + }, + "Force refresh": Bangle.pullOwmWeather + }; + + if (require("textinput")){ + mainmenu["API key"] = function (){ + require("textinput").input({text:settings.apikey}).then(result => { + if (result != "") { + settings.apikey = result; + writeSettings("apikey",result); + } + E.showMenu(buildMainMenu()); + }); + }; + } + + return mainmenu; + } + + E.showMenu(buildMainMenu()); +});