mirror of https://github.com/espruino/BangleApps
[ActivityReminder] Put the alert code in it's own file
parent
d714c2c490
commit
563245defe
|
@ -6,3 +6,4 @@
|
||||||
0.06: Add a temperature threshold to detect (and not alert) if the BJS isn't worn. Better support for the peoples using the app at night
|
0.06: Add a temperature threshold to detect (and not alert) if the BJS isn't worn. Better support for the peoples using the app at night
|
||||||
0.07: Fix bug on the cutting edge firmware
|
0.07: Fix bug on the cutting edge firmware
|
||||||
0.08: Use default Bangle formatter for booleans
|
0.08: Use default Bangle formatter for booleans
|
||||||
|
0.09: Optimisations
|
|
@ -0,0 +1,37 @@
|
||||||
|
(function () {
|
||||||
|
// load variable before defining functions cause it can trigger a ReferenceError
|
||||||
|
const activityreminder = require("activityreminder");
|
||||||
|
const storage = require("Storage");
|
||||||
|
let activityreminder_data = activityreminder.loadData();
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
E.showPrompt("Inactivity detected", {
|
||||||
|
title: "Activity reminder",
|
||||||
|
buttons: { "Ok": 1, "Dismiss": 2, "Pause": 3 }
|
||||||
|
}).then(function (v) {
|
||||||
|
if (v == 1) {
|
||||||
|
activityreminder_data.okDate = new Date();
|
||||||
|
}
|
||||||
|
if (v == 2) {
|
||||||
|
activityreminder_data.dismissDate = new Date();
|
||||||
|
}
|
||||||
|
if (v == 3) {
|
||||||
|
activityreminder_data.pauseDate = new Date();
|
||||||
|
}
|
||||||
|
activityreminder.saveData(activityreminder_data);
|
||||||
|
load();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Obey system quiet mode:
|
||||||
|
if (!(storage.readJSON('setting.json', 1) || {}).quiet) {
|
||||||
|
Bangle.buzz(400);
|
||||||
|
}
|
||||||
|
setTimeout(load, 20000);
|
||||||
|
}
|
||||||
|
|
||||||
|
g.clear();
|
||||||
|
Bangle.loadWidgets();
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
run();
|
||||||
|
|
||||||
|
})();
|
|
@ -1,42 +1,16 @@
|
||||||
(function () {
|
(function () {
|
||||||
|
// todo do something more interesting than just showing the settings
|
||||||
|
/*
|
||||||
// load variable before defining functions cause it can trigger a ReferenceError
|
// load variable before defining functions cause it can trigger a ReferenceError
|
||||||
const activityreminder = require("activityreminder");
|
const activityreminder = require("activityreminder");
|
||||||
const storage = require("Storage");
|
const storage = require("Storage");
|
||||||
const activityreminder_settings = activityreminder.loadSettings();
|
const activityreminder_settings = activityreminder.loadSettings();
|
||||||
let activityreminder_data = activityreminder.loadData();
|
let activityreminder_data = activityreminder.loadData();
|
||||||
|
*/
|
||||||
function drawAlert() {
|
|
||||||
E.showPrompt("Inactivity detected", {
|
|
||||||
title: "Activity reminder",
|
|
||||||
buttons: { "Ok": 1, "Dismiss": 2, "Pause": 3 }
|
|
||||||
}).then(function (v) {
|
|
||||||
if (v == 1) {
|
|
||||||
activityreminder_data.okDate = new Date();
|
|
||||||
}
|
|
||||||
if (v == 2) {
|
|
||||||
activityreminder_data.dismissDate = new Date();
|
|
||||||
}
|
|
||||||
if (v == 3) {
|
|
||||||
activityreminder_data.pauseDate = new Date();
|
|
||||||
}
|
|
||||||
activityreminder.saveData(activityreminder_data);
|
|
||||||
load();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Obey system quiet mode:
|
|
||||||
if (!(storage.readJSON('setting.json', 1) || {}).quiet) {
|
|
||||||
Bangle.buzz(400);
|
|
||||||
}
|
|
||||||
setTimeout(load, 20000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function run() {
|
function run() {
|
||||||
if (activityreminder.mustAlert(activityreminder_data, activityreminder_settings)) {
|
|
||||||
drawAlert();
|
|
||||||
} else {
|
|
||||||
eval(storage.read("activityreminder.settings.js"))(() => load());
|
eval(storage.read("activityreminder.settings.js"))(() => load());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
g.clear();
|
g.clear();
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
|
|
|
@ -27,8 +27,8 @@
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activityreminder.mustAlert(activityreminder_data, activityreminder_settings)) {
|
if (mustAlert(now)) {
|
||||||
load('activityreminder.app.js');
|
load('activityreminder.alert.js');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mustAlert(now) {
|
||||||
|
if ((now - activityreminder_data.stepsDate) / 60000 > activityreminder_settings.maxInnactivityMin) { // inactivity detected
|
||||||
|
if ((now - activityreminder_data.okDate) / 60000 > 3 && // last alert anwsered with ok was more than 3 min ago
|
||||||
|
(now - activityreminder_data.dismissDate) / 60000 > activityreminder_settings.dismissDelayMin && // last alert was more than dismissDelayMin ago
|
||||||
|
(now - activityreminder_data.pauseDate) / 60000 > activityreminder_settings.pauseDelayMin) { // last alert was more than pauseDelayMin ago
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Bangle.on('midnight', function () {
|
Bangle.on('midnight', function () {
|
||||||
/*
|
/*
|
||||||
Usefull trick to have the app working smothly for people using it at night
|
Usefull trick to have the app working smothly for people using it at night
|
||||||
|
|
|
@ -31,26 +31,14 @@ exports.loadData = function () {
|
||||||
},
|
},
|
||||||
require("Storage").readJSON("activityreminder.data.json") || {});
|
require("Storage").readJSON("activityreminder.data.json") || {});
|
||||||
|
|
||||||
if(typeof(data.stepsDate) == "string")
|
if (typeof (data.stepsDate) == "string")
|
||||||
data.stepsDate = new Date(data.stepsDate);
|
data.stepsDate = new Date(data.stepsDate);
|
||||||
if(typeof(data.okDate) == "string")
|
if (typeof (data.okDate) == "string")
|
||||||
data.okDate = new Date(data.okDate);
|
data.okDate = new Date(data.okDate);
|
||||||
if(typeof(data.dismissDate) == "string")
|
if (typeof (data.dismissDate) == "string")
|
||||||
data.dismissDate = new Date(data.dismissDate);
|
data.dismissDate = new Date(data.dismissDate);
|
||||||
if(typeof(data.pauseDate) == "string")
|
if (typeof (data.pauseDate) == "string")
|
||||||
data.pauseDate = new Date(data.pauseDate);
|
data.pauseDate = new Date(data.pauseDate);
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.mustAlert = function(activityreminder_data, activityreminder_settings) {
|
|
||||||
let now = new Date();
|
|
||||||
if ((now - activityreminder_data.stepsDate) / 60000 > activityreminder_settings.maxInnactivityMin) { // inactivity detected
|
|
||||||
if ((now - activityreminder_data.okDate) / 60000 > 3 && // last alert anwsered with ok was more than 3 min ago
|
|
||||||
(now - activityreminder_data.dismissDate) / 60000 > activityreminder_settings.dismissDelayMin && // last alert was more than dismissDelayMin ago
|
|
||||||
(now - activityreminder_data.pauseDate) / 60000 > activityreminder_settings.pauseDelayMin) { // last alert was more than pauseDelayMin ago
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
|
@ -13,6 +13,7 @@
|
||||||
{"name": "activityreminder.app.js", "url":"app.js"},
|
{"name": "activityreminder.app.js", "url":"app.js"},
|
||||||
{"name": "activityreminder.boot.js", "url": "boot.js"},
|
{"name": "activityreminder.boot.js", "url": "boot.js"},
|
||||||
{"name": "activityreminder.settings.js", "url": "settings.js"},
|
{"name": "activityreminder.settings.js", "url": "settings.js"},
|
||||||
|
{"name": "activityreminder.alert.js", "url": "alert.js"},
|
||||||
{"name": "activityreminder", "url": "lib.js"},
|
{"name": "activityreminder", "url": "lib.js"},
|
||||||
{"name": "activityreminder.img", "url": "app-icon.js", "evaluate": true}
|
{"name": "activityreminder.img", "url": "app-icon.js", "evaluate": true}
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue