recorder interface: add download-all functionality

pull/3456/head
Rob Pilling 2024-06-16 15:20:13 +01:00
parent 9561a4b5fc
commit 7e7945b6e2
1 changed files with 41 additions and 1 deletions

View File

@ -159,6 +159,28 @@ function downloadTrack(filename, callback) {
});
}
function downloadAll(trackList, cb) {
const tracks = trackList.slice();
const downloadOne = () => {
const track = tracks.pop();
if(!track) {
showToast("Finished downloading all.", "success");
return;
}
downloadTrack(
track.filename,
lines => {
cb(lines, `Bangle.js Track ${track.number}`);
downloadOne();
}
);
};
downloadOne();
}
function getTrackList() {
Util.showModal("Loading Track List...");
domTracks.innerHTML = "";
@ -248,6 +270,12 @@ ${trackData.Latitude ? `
}
html += `
</div><!-- columns -->
<h2>Batch</h2>
<div class="form-group">
<button class="btn btn-primary" task="downloadkml_all">Download all KML</button>
<button class="btn btn-primary" task="downloadgpx_all">Download all GPX</button>
<button class="btn btn-primary" task="downloadcsv_all">Download all CSV</button>
</div>
<h2>Settings</h2>
<div class="form-group">
<label class="form-switch">
@ -268,8 +296,10 @@ ${trackData.Latitude ? `
var button = event.currentTarget;
var filename = button.getAttribute("filename");
var trackid = parseInt(button.getAttribute("trackid"));
if (!filename || trackid===undefined) return;
var task = button.getAttribute("task");
if (!/_all$/.test(task) && (!filename || trackid===undefined)) return;
switch(task) {
case "delete":
Util.showModal("Deleting Track...");
@ -288,6 +318,16 @@ ${trackData.Latitude ? `
case "downloadcsv":
downloadTrack(filename, track => saveCSV(track, `Bangle.js Track ${trackid}`));
break;
case "downloadkml_all":
downloadAll(trackList, saveKML);
break;
case "downloadgpx_all":
downloadAll(trackList, saveGPX);
break;
case "downloadcsv_all":
downloadAll(trackList, saveCSV);
break;
}
});
}