runplus: only prompt to resume after a given duration

pull/3431/head
Rob Pilling 2024-05-21 21:04:33 +01:00
parent e39e4b6723
commit 984f38d60c
4 changed files with 29 additions and 3 deletions

View File

@ -27,3 +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

View File

@ -26,6 +26,10 @@ let settings = Object.assign({
B5: "step", B5: "step",
B6: "caden", B6: "caden",
paceLength: 1000, paceLength: 1000,
resume: {
promptAfter: 10000,
default: false,
},
notify: { notify: {
dist: { dist: {
value: 0, value: 0,
@ -64,10 +68,10 @@ function onStartStop() {
} }
var running = !exs.state.active; var running = !exs.state.active;
var shouldResume = false; var shouldResume = settings.resume.default;
var promise = Promise.resolve(); var promise = Promise.resolve();
if (running && exs.state.duration > 10000) { // if more than 10 seconds of duration, ask if we should resume? if (running && exs.state.duration > settings.resume.promptAfter) { // if more than N seconds of duration, ask if we should resume?
promise = promise. promise = promise.
then(() => { then(() => {
screen = "menu"; screen = "menu";

View File

@ -1,7 +1,7 @@
{ {
"id": "runplus", "id": "runplus",
"name": "Run+", "name": "Run+",
"version": "0.26", "version": "0.27",
"description": "Displays distance, time, steps, cadence, pace and more for runners. Based on the Run app, but extended with additional screens for heart rate interval training and individual stat focus.", "description": "Displays distance, time, steps, cadence, pace and more for runners. Based on the Run app, but extended with additional screens for heart rate interval training and individual stat focus.",
"icon": "app.png", "icon": "app.png",
"tags": "run,running,fitness,outdoors,gps,karvonen,karvonnen", "tags": "run,running,fitness,outdoors,gps,karvonen,karvonnen",

View File

@ -17,6 +17,10 @@
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: {
promptAfter: 10000,
default: false,
},
notify: { notify: {
dist: { dist: {
increment: 0, increment: 0,
@ -76,6 +80,23 @@
'< 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", ".", "-", "--", "-.-", "---"];