mirror of https://github.com/espruino/BangleApps
runplus: simpler always-resume toggle
parent
020d26ddef
commit
3be97f8d01
|
@ -27,4 +27,4 @@ Write to correct settings file, fixing settings not working.
|
||||||
0.24: Add indicators for lock,gps and pulse to karvonen screen
|
0.24: Add indicators for lock,gps and pulse to karvonen screen
|
||||||
0.25: Fix step count bug when runs are resumed after a long time
|
0.25: Fix step count bug when runs are resumed after a long time
|
||||||
0.26: Add ability to zoom in on a single stat by tapping it
|
0.26: Add ability to zoom in on a single stat by tapping it
|
||||||
0.27: Allow configuration of time after which the user is prompted to resume
|
0.27: Allow setting to alway resume an activity
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
let runInterval;
|
let runInterval;
|
||||||
let statusTimeout;
|
|
||||||
let screen = "main"; // main | karvonen | menu | zoom
|
let screen = "main"; // main | karvonen | menu | zoom
|
||||||
// Run interface wrapped in a function
|
// Run interface wrapped in a function
|
||||||
const ExStats = require("exstats");
|
const ExStats = require("exstats");
|
||||||
|
@ -27,10 +26,7 @@ let settings = Object.assign({
|
||||||
B5: "step",
|
B5: "step",
|
||||||
B6: "caden",
|
B6: "caden",
|
||||||
paceLength: 1000,
|
paceLength: 1000,
|
||||||
resume: {
|
alwaysResume: false,
|
||||||
promptAfter: 10000,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
notify: {
|
notify: {
|
||||||
dist: {
|
dist: {
|
||||||
value: 0,
|
value: 0,
|
||||||
|
@ -54,15 +50,9 @@ let statIDs = [settings.B1,settings.B2,settings.B3,settings.B4,settings.B5,setti
|
||||||
let exs = ExStats.getStats(statIDs, settings);
|
let exs = ExStats.getStats(statIDs, settings);
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
|
|
||||||
function inPauseWindow() {
|
|
||||||
return exs.state.duration <= settings.resume.promptAfter;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setStatus(running) {
|
function setStatus(running) {
|
||||||
const paused = inPauseWindow();
|
layout.button.label = running ? "STOP" : "START";
|
||||||
|
layout.status.label = running ? "RUN" : "STOP";
|
||||||
layout.button.label = running ? "STOP" : paused ? "RESUME" : "START";
|
|
||||||
layout.status.label = running ? "RUN" : paused ? "PAUSE" : "STOP";
|
|
||||||
layout.status.bgCol = running ? "#0f0" : "#f00";
|
layout.status.bgCol = running ? "#0f0" : "#f00";
|
||||||
if (screen === "main") layout.render();
|
if (screen === "main") layout.render();
|
||||||
}
|
}
|
||||||
|
@ -75,10 +65,10 @@ function onStartStop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var running = !exs.state.active;
|
var running = !exs.state.active;
|
||||||
var shouldResume = settings.resume.default;
|
var shouldResume = settings.alwaysResume;
|
||||||
var promise = Promise.resolve();
|
var promise = Promise.resolve();
|
||||||
|
|
||||||
if (running && !inPauseWindow()) { // if more than N seconds of duration, ask if we should resume?
|
if (!shouldResume && running && exs.state.duration > 10000) { // if more than 10 seconds of duration, ask if we should resume?
|
||||||
promise = promise.
|
promise = promise.
|
||||||
then(() => {
|
then(() => {
|
||||||
screen = "menu";
|
screen = "menu";
|
||||||
|
@ -114,8 +104,6 @@ function onStartStop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
promise.then(() => {
|
promise.then(() => {
|
||||||
if(statusTimeout) clearTimeout(statusTimeout);
|
|
||||||
|
|
||||||
if (running) {
|
if (running) {
|
||||||
if (shouldResume)
|
if (shouldResume)
|
||||||
exs.resume();
|
exs.resume();
|
||||||
|
@ -123,12 +111,6 @@ function onStartStop() {
|
||||||
exs.start();
|
exs.start();
|
||||||
} else {
|
} else {
|
||||||
exs.stop();
|
exs.stop();
|
||||||
|
|
||||||
// convert start/stop label when pause-window ends
|
|
||||||
statusTimeout = setTimeout(() => {
|
|
||||||
statusTimeout = undefined;
|
|
||||||
setStatus(running);
|
|
||||||
}, settings.resume.promptAfter);
|
|
||||||
}
|
}
|
||||||
// if stopping running, don't clear state
|
// if stopping running, don't clear state
|
||||||
// so we can at least refer to what we've done
|
// so we can at least refer to what we've done
|
||||||
|
|
|
@ -17,10 +17,7 @@
|
||||||
B5: "step",
|
B5: "step",
|
||||||
B6: "caden",
|
B6: "caden",
|
||||||
paceLength: 1000, // TODO: Default to either 1km or 1mi based on locale
|
paceLength: 1000, // TODO: Default to either 1km or 1mi based on locale
|
||||||
resume: {
|
alwaysResume: false,
|
||||||
promptAfter: 10000,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
notify: {
|
notify: {
|
||||||
dist: {
|
dist: {
|
||||||
increment: 0,
|
increment: 0,
|
||||||
|
@ -76,27 +73,17 @@
|
||||||
saveSettings();
|
saveSettings();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
menu[/*LANG*/"Always resume run"] = {
|
||||||
|
value : settings.alwaysResume,
|
||||||
|
onchange : v => {
|
||||||
|
settings.alwaysResume = v;
|
||||||
|
saveSettings();
|
||||||
|
},
|
||||||
|
};
|
||||||
var notificationsMenu = {
|
var notificationsMenu = {
|
||||||
'< Back': function() { E.showMenu(menu) },
|
'< Back': function() { E.showMenu(menu) },
|
||||||
}
|
}
|
||||||
menu[/*LANG*/"Notifications"] = function() { E.showMenu(notificationsMenu)};
|
menu[/*LANG*/"Notifications"] = function() { E.showMenu(notificationsMenu)};
|
||||||
var resumeMenu = {
|
|
||||||
"Prompt after": {
|
|
||||||
value : settings.resume.promptAfter / 1000,
|
|
||||||
onchange : v => {
|
|
||||||
settings.resume.promptAfter = v * 1000;
|
|
||||||
saveSettings();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Resume by default": {
|
|
||||||
value : settings.resume.default,
|
|
||||||
onchange : v => {
|
|
||||||
settings.resume.default = v;
|
|
||||||
saveSettings();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
menu[/*LANG*/"Resume"] = function() { E.showMenu(resumeMenu) };
|
|
||||||
ExStats.appendMenuItems(menu, settings, saveSettings);
|
ExStats.appendMenuItems(menu, settings, saveSettings);
|
||||||
ExStats.appendNotifyMenuItems(notificationsMenu, settings, saveSettings);
|
ExStats.appendNotifyMenuItems(notificationsMenu, settings, saveSettings);
|
||||||
var vibPatterns = [/*LANG*/"Off", ".", "-", "--", "-.-", "---"];
|
var vibPatterns = [/*LANG*/"Off", ".", "-", "--", "-.-", "---"];
|
||||||
|
|
Loading…
Reference in New Issue