recorder: cache downloaded tracks
to allow a user to save as GPX, then instantly as CSV, rather than waiting to download the same data again.master
parent
0dbdaad3b8
commit
620fb0769d
|
|
@ -11,6 +11,7 @@
|
||||||
<script src="../../core/js/utils.js"></script>
|
<script src="../../core/js/utils.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var domTracks = document.getElementById("tracks");
|
var domTracks = document.getElementById("tracks");
|
||||||
|
var fileCache = new Map();
|
||||||
|
|
||||||
function filterGPSCoordinates(track) {
|
function filterGPSCoordinates(track) {
|
||||||
// only include data points with GPS values
|
// only include data points with GPS values
|
||||||
|
|
@ -153,15 +154,25 @@ function trackLineToObject(headers, l) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadTrack(filename, callback) {
|
function downloadTrack(filename, callback) {
|
||||||
Util.showModal(`Downloading ${filename}...`);
|
function onData(data) {
|
||||||
Util.readStorageFile(filename,data=>{
|
|
||||||
Util.hideModal();
|
|
||||||
var lines = data.trim().split("\n");
|
var lines = data.trim().split("\n");
|
||||||
var headers = lines.shift().split(",");
|
var headers = lines.shift().split(",");
|
||||||
var track = lines.map(l=>trackLineToObject(headers, l));
|
var track = lines.map(l=>trackLineToObject(headers, l));
|
||||||
callback(track);
|
callback(track);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = fileCache.get(filename);
|
||||||
|
if (data) {
|
||||||
|
onData(data);
|
||||||
|
} else {
|
||||||
|
Util.showModal(`Downloading ${filename}...`);
|
||||||
|
Util.readStorageFile(filename, data => {
|
||||||
|
fileCache.set(filename, data);
|
||||||
|
onData(data);
|
||||||
|
Util.hideModal();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function downloadAll(trackList, cb) {
|
function downloadAll(trackList, cb) {
|
||||||
const tracks = trackList.slice();
|
const tracks = trackList.slice();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue