From a81c3678276d7df93e08913e50d1fa3610393209 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Mon, 5 Jun 2023 09:30:42 +0100 Subject: [PATCH] using filenames based on date --- apps/recorder/ChangeLog | 3 ++- apps/recorder/app.js | 24 ++++++------------------ apps/recorder/metadata.json | 2 +- apps/recorder/widget.js | 14 ++++++++------ 4 files changed, 17 insertions(+), 26 deletions(-) diff --git a/apps/recorder/ChangeLog b/apps/recorder/ChangeLog index 874e4699c..eedf353b7 100644 --- a/apps/recorder/ChangeLog +++ b/apps/recorder/ChangeLog @@ -29,4 +29,5 @@ 0.23: Add graphing for HRM, fix some other graphs Altitude graphing now uses barometer altitude if it exists plotTrack in widget allows track to be drawn in the background (doesn't block execution) -0.24: Can now specify `setRecording(true, {force:...` to not show a menu \ No newline at end of file +0.24: Can now specify `setRecording(true, {force:...` to not show a menu +0.25: Now record filename based on date \ No newline at end of file diff --git a/apps/recorder/app.js b/apps/recorder/app.js index 9e9b58f78..ca3eec525 100644 --- a/apps/recorder/app.js +++ b/apps/recorder/app.js @@ -33,10 +33,8 @@ function updateSettings() { function getTrackNumber(filename) { var trackNum = 0; var matches = filename.match(/^recorder\.log(.*)\.csv$/); - if (matches) { - trackNum = parseInt(matches[1]||0); - } - return trackNum; + if (matches) return matches[1]; + return 0; } function showMainMenu() { @@ -62,23 +60,13 @@ function showMainMenu() { WIDGETS["recorder"].setRecording(v).then(function() { //print("Record start Complete"); loadSettings(); - print("Recording: "+settings.recording); + //print("Recording: "+settings.recording); showMainMenu(); }); }, 1); } }, - /*LANG*/'File #': { - value: getTrackNumber(settings.file), - min: 0, - max: 99, - step: 1, - onchange: v => { - settings.recording = false; // stop recording if we change anything - settings.file = "recorder.log"+v+".csv"; - updateSettings(); - } - }, + /*LANG*/'File' : {value:getTrackNumber(settings.file)}, /*LANG*/'View Tracks': ()=>{viewTracks();}, /*LANG*/'Time Period': { value: settings.period||10, @@ -110,7 +98,7 @@ function viewTracks() { var found = false; require("Storage").list(/^recorder\.log.*\.csv$/,{sf:true}).forEach(filename=>{ found = true; - menu[/*LANG*/"Track "+getTrackNumber(filename)] = ()=>viewTrack(filename,false); + menu[/*LANG*/getTrackNumber(filename)] = ()=>viewTrack(filename,false); }); if (!found) menu[/*LANG*/"No Tracks found"] = function(){}; @@ -353,7 +341,7 @@ function viewTrack(filename, info) { infc[i]++; } } else if (style=="Altitude") { - title = /*LANG*/"Altitude (m)"; + title = /*LANG*/"Altitude (m)"; var altIdx = info.fields.indexOf("Barometer Altitude"); if (altIdx<0) altIdx = info.fields.indexOf("Altitude"); while(l!==undefined) { diff --git a/apps/recorder/metadata.json b/apps/recorder/metadata.json index 99f1539c6..00c1c965e 100644 --- a/apps/recorder/metadata.json +++ b/apps/recorder/metadata.json @@ -2,7 +2,7 @@ "id": "recorder", "name": "Recorder", "shortName": "Recorder", - "version": "0.24", + "version": "0.25", "description": "Record GPS position, heart rate and more in the background, then download to your PC.", "icon": "app.png", "tags": "tool,outdoors,gps,widget", diff --git a/apps/recorder/widget.js b/apps/recorder/widget.js index e57f293c7..609bc1d36 100644 --- a/apps/recorder/widget.js +++ b/apps/recorder/widget.js @@ -244,7 +244,7 @@ if (!options.force) { // if not forced, ask the question g.reset(); // work around bug in 2v17 and earlier where bg color wasn't reset return E.showPrompt( - /*LANG*/"Overwrite\nLog " + settings.file.match(/\d+/)[0] + "?", + /*LANG*/"Overwrite\nLog " + settings.file.match(/^recorder\.log(.*)\.csv$/)[1] + "?", { title:/*LANG*/"Recorder", buttons:{/*LANG*/"Yes":"overwrite",/*LANG*/"No":"cancel",/*LANG*/"New":"new",/*LANG*/"Append":"append"} }).then(selection=>{ @@ -260,11 +260,13 @@ // wipe the file require("Storage").open(settings.file,"r").erase(); } else if (options.force=="new") { - // new file - find the max log file number and add one - var maxNumber=0; - require("Storage").list(/recorder.log.*/).forEach( fn => maxNumber = Math.max(maxNumber, fn.match(/\d+/)[0]) ); - var newFileName = "recorder.log" + (maxNumber + 1) + ".csv"; - // FIXME: use date? + // new file - use the current date + var date=(new Date()).toISOString().substr(0,10).replace(/-/g,""), trackNo=10; + var newFileName; + do { // while a file exists, add one to the letter after the date + newFileName = "recorder.log" + date + trackNo.toString(36) + ".csv"; + trackNo++; + } while (require("Storage").list(newFileName).length); settings.file = newFileName; } else throw new Error("Unknown options.force, "+options.force); }