forked from FOSS/BangleApps
recorder 0.11: Fix KML and GPX export when there is no GPS data
parent
2292de4809
commit
f5e4cf8a56
|
@ -14,3 +14,4 @@
|
|||
0.08: Memory usage improvements for recorder app itself
|
||||
0.09: Show correct number for log in overwrite prompt
|
||||
0.10: Fix broken recorder settings (when launched from settings app)
|
||||
0.11: Fix KML and GPX export when there is no GPS data
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
var domTracks = document.getElementById("tracks");
|
||||
|
||||
function saveKML(track,title) {
|
||||
// only include data points with GPS values
|
||||
track=track.filter(pt=>pt.Latitude!="" && pt.Longitude!="");
|
||||
// Now output KML
|
||||
var kml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<kml xmlns="http://www.opengis.net/kml/2.2">
|
||||
<Document>
|
||||
|
@ -37,7 +40,6 @@ ${track.map(pt=>` <when>${pt.Time.toISOString()}</when>\n`).join("")}
|
|||
${track.map(pt=>` <gx:coord>${pt.Longitude} ${pt.Latitude} ${pt.Altitude}</gx:coord>\n`).join("")}
|
||||
<ExtendedData>
|
||||
<SchemaData schemaUrl="#schema">
|
||||
|
||||
${track[0].Heartrate!==undefined ? `<gx:SimpleArrayData name="heartrate">
|
||||
${track.map(pt=>` <gx:value>${0|pt.Heartrate}</gx:value>\n`).join("")}
|
||||
</gx:SimpleArrayData>`:``}
|
||||
|
@ -80,7 +82,7 @@ function saveGPX(track, title) {
|
|||
<name>${title}</name>
|
||||
<trkseg>`;
|
||||
track.forEach(pt=>{
|
||||
gpx += `
|
||||
if (pt.Latitude!="" && pt.Longitude!="") gpx += `
|
||||
<trkpt lat="${pt.Latitude}" lon="${pt.Longitude}">
|
||||
<ele>${pt.Altitude}</ele>
|
||||
<time>${pt.Time.toISOString()}</time>
|
||||
|
@ -122,6 +124,7 @@ function saveCSV(track, title) {
|
|||
}
|
||||
|
||||
function trackLineToObject(headers, l) {
|
||||
if (l===undefined) return {};
|
||||
var t = l.trim().split(",");
|
||||
var o = {};
|
||||
headers.forEach((header,i) => o[header] = t[i]);
|
||||
|
@ -155,7 +158,7 @@ function getTrackList() {
|
|||
Util.showModal(`Loading Track ${trackNo}...`);
|
||||
Puck.eval(`(function(fn) {
|
||||
var f = require("Storage").open(fn,"r");
|
||||
var headers = f.readLine();
|
||||
var headers = f.readLine().trim();
|
||||
var data = f.readLine();
|
||||
var lIdx = headers.split(",").indexOf("Latitude");
|
||||
if (lIdx >= 0) {
|
||||
|
@ -184,14 +187,14 @@ function getTrackList() {
|
|||
var html = `<div class="container">
|
||||
<div class="columns">\n`;
|
||||
trackList.forEach(track => {
|
||||
var trackData = trackLineToObject(track.info.headers, track.info.l);
|
||||
console.log("track", track);
|
||||
var trackData = trackLineToObject(track.info.headers, track.info.l);
|
||||
console.log("trackData", trackData);
|
||||
html += `
|
||||
<div class="column col-12">
|
||||
<div class="card-header">
|
||||
<div class="card-title h5">Track ${track.number}</div>
|
||||
<div class="card-subtitle text-gray">${trackData.Time.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}</div>
|
||||
<div class="card-subtitle text-gray">${trackData.Time?trackData.Time.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }):"No track data"}</div>
|
||||
</div>
|
||||
${trackData.Latitude ? `
|
||||
<div class="card-image">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"id": "recorder",
|
||||
"name": "Recorder",
|
||||
"shortName": "Recorder",
|
||||
"version": "0.10",
|
||||
"version": "0.11",
|
||||
"description": "Record GPS position, heart rate and more in the background, then download to your PC.",
|
||||
"icon": "app.png",
|
||||
"tags": "tool,outdoors,gps,widget",
|
||||
|
|
Loading…
Reference in New Issue