mirror of https://github.com/espruino/BangleApps
[sleeplogalarm] Add settings and dependency
parent
a07747ca25
commit
57f0696998
|
@ -7,22 +7,22 @@ This widget searches for active alarms and raises the alarm event up to the defi
|
|||
---
|
||||
|
||||
#### Inside the settings: !!! dummy entries !!!
|
||||
- __Thresholds__ submenu
|
||||
- __Thresholds__ submenu
|
||||
Changes take effect from now on, not retrospective!
|
||||
- __Max Awake__ | maximal awake duration
|
||||
- __Max Awake__ | maximal awake duration
|
||||
_10min_ / _20min_ / ... / __60min__ / ... / _120min_
|
||||
- __Min Consecutive__ | minimal consecutive sleep duration
|
||||
- __Min Consecutive__ | minimal consecutive sleep duration
|
||||
_10min_ / _20min_ / ... / __30min__ / ... / _120min_
|
||||
- __Deep Sleep__ | deep sleep threshold
|
||||
- __Deep Sleep__ | deep sleep threshold
|
||||
_30_ / _31_ / ... / __100__ / ... / _200_
|
||||
- __Light Sleep__ | light sleep threshold
|
||||
_100_ / _110_ / ... / __200__ / ... / _400_
|
||||
- __Light Sleep__ | light sleep threshold
|
||||
_100_ / _110_ / ... / __200__ / ... / _400_
|
||||
- __Reset to Default__ | reset to bold values above
|
||||
- __BreakToD__ | time of day to break view
|
||||
- __BreakToD__ | time of day to break view
|
||||
_0:00_ / _1:00_ / ... / __12:00__ / ... / _23:00_
|
||||
- __App Timeout__ | app specific lock timeout
|
||||
- __App Timeout__ | app specific lock timeout
|
||||
__0s__ / _10s_ / ... / _120s_
|
||||
- __Enabled__ | completely en-/disables the background service
|
||||
- __Enabled__ | completely en-/disables the background service
|
||||
__on__ / _off_
|
||||
|
||||
---
|
||||
|
@ -30,8 +30,6 @@ This widget searches for active alarms and raises the alarm event up to the defi
|
|||
---
|
||||
|
||||
#### To do list
|
||||
- widget.js
|
||||
- settings.js
|
||||
- README.md
|
||||
|
||||
#### Requests, Bugs and Feedback
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"type": "widget",
|
||||
"tags": "tool,widget",
|
||||
"supports": ["BANGLEJS2"],
|
||||
"dependencies": {"sleeplog": "app"},
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name": "sleeplogalarm.settings.js", "url": "settings.js"},
|
||||
|
|
|
@ -1,19 +1,66 @@
|
|||
(function(back) {
|
||||
// define settings filename
|
||||
var filename = "sleeplogalarm.json";
|
||||
var filename = "sleeplogalarm.settings.json";
|
||||
|
||||
// define default vaules
|
||||
var defaults = {
|
||||
};
|
||||
|
||||
// assign loaded settings to default values
|
||||
var settings = Object.assign(defaults, require("Storage").readJSON(filename, true) || {});
|
||||
// define settings
|
||||
var settings = Object.assign({
|
||||
enabled: true,
|
||||
hide: false,
|
||||
drawRange: true,
|
||||
color: g.theme.dark ? 65504 : 31, // yellow or blue
|
||||
from: 4, // 0400
|
||||
to: 8, // 0800
|
||||
earlier: 30,
|
||||
disableOnAlarm: false, // !!! not available if alarm is at the next day
|
||||
msgAsPrefix: true,
|
||||
msg: "...\n",
|
||||
vibrate: "..",
|
||||
as: true
|
||||
}, require("Storage").readJSON(filename, true) || {});
|
||||
|
||||
// write change to storage
|
||||
function writeSetting() {
|
||||
require("Storage").writeJSON(filename, settings);
|
||||
}
|
||||
|
||||
// show widget menu
|
||||
function showWidMenu() {
|
||||
// set menu
|
||||
var widgetMenu = {
|
||||
"": {
|
||||
title: "Widget Settings"
|
||||
},
|
||||
/*LANG*/"< Back": () => showMain(7),
|
||||
/*LANG*/"hide complete": {
|
||||
value: settings.hide,
|
||||
onchange: v => {
|
||||
settings.hide = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"draw time range": {
|
||||
value: settings.drawRange,
|
||||
onchange: v => {
|
||||
settings.drawRange = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"color": {
|
||||
colors: [63488, 65504, 2016, 2047, 31, 63519, 0, 65535],
|
||||
value: this.colors.indexOf(settings.color),
|
||||
min: 0,
|
||||
max: this.colors.length -1,
|
||||
wrap: true,
|
||||
format: v => ["red", "yellow", "green", "cyan", "blue", "magenta", "black", "white"][v],
|
||||
onchange: v => {
|
||||
settings.color = this.colors[v];
|
||||
writeSetting();
|
||||
}
|
||||
}
|
||||
};
|
||||
var menu = E.showMenu(widgetMenu);
|
||||
}
|
||||
|
||||
// show main menu
|
||||
function showMain(selected) {
|
||||
// set menu
|
||||
|
@ -23,19 +70,82 @@
|
|||
selected: selected
|
||||
},
|
||||
/*LANG*/"< Back": () => back(),
|
||||
/*LANG*/"up to": {
|
||||
/*LANG*/"from": {
|
||||
value: settings.from,
|
||||
min: 0,
|
||||
max: 23,
|
||||
wrap: true,
|
||||
noList: true,
|
||||
format: v => v + ":00",
|
||||
onchange: v => {
|
||||
settings.from = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"to": {
|
||||
value: settings.to,
|
||||
min: 1,
|
||||
max: 24,
|
||||
wrap: true,
|
||||
noList: true,
|
||||
format: v => v + ":00",
|
||||
onchange: v => {
|
||||
settings.to = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"erlier": {
|
||||
value: settings.earlier,
|
||||
step: 10,
|
||||
min: 10,
|
||||
max: 120,
|
||||
wrap: true,
|
||||
noList: true,
|
||||
format: v => v + "min earlier",
|
||||
format: v => v + "min",
|
||||
onchange: v => {
|
||||
settings.earlier = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"disable on alarm": {
|
||||
value: settings.disableOnAlarm,
|
||||
onchange: v => {
|
||||
settings.disableOnAlarm = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"message as prefix": {
|
||||
value: settings.msgAsPrefix,
|
||||
onchange: v => {
|
||||
settings.msgAsPrefix = v;
|
||||
writeSetting();
|
||||
}
|
||||
},
|
||||
/*LANG*/"msg": {
|
||||
value: settings.msg,
|
||||
format: v => !v ? "" : v.length > 6 ? v.substring(0, 6)+"..." : v,
|
||||
// setTimeout required to load after menu refresh
|
||||
onchange: () => setTimeout(msg => {
|
||||
if (require("Storage").read("textinput")) {
|
||||
g.clear();
|
||||
require("textinput").input({text: msg}).then(result => {
|
||||
settings.msg = result;
|
||||
writeSetting();
|
||||
showMenu(7);
|
||||
});
|
||||
} else {
|
||||
E.showAlert(/*LANG*/"No keyboard app installed").then(() => showMenu(7));
|
||||
}
|
||||
}),
|
||||
},
|
||||
/*LANG*/"vibration pattern": require("buzz_menu.js").pattern(
|
||||
settings.vibrate,
|
||||
v => {
|
||||
settings.vibrate = v;
|
||||
writeSetting();
|
||||
}
|
||||
),
|
||||
/*LANG*/"Widget Settings": () => showWidMenu(),
|
||||
/*LANG*/"Enabled": {
|
||||
value: settings.enabled,
|
||||
onchange: v => {
|
||||
|
|
Loading…
Reference in New Issue