kopia lustrzana https://github.com/FacilMap/facilmap
68 wiersze
1.7 KiB
JavaScript
68 wiersze
1.7 KiB
JavaScript
const ejs = require("ejs");
|
|
const fs = require("fs");
|
|
const Promise = require("bluebird");
|
|
|
|
var utils = require("../utils");
|
|
|
|
let padTemplate;
|
|
Promise.promisify(fs.readFile)(`${__dirname}/gpx-pad.ejs`).then((t) => {
|
|
padTemplate = ejs.compile(t.toString());
|
|
}).catch((err) => {
|
|
console.error("Error reading GPX pad template", err.stack || err);
|
|
});
|
|
|
|
let lineTemplate;
|
|
Promise.promisify(fs.readFile)(`${__dirname}/gpx-line.ejs`).then((t) => {
|
|
lineTemplate = ejs.compile(t.toString());
|
|
}).catch((err) => {
|
|
console.error("Error reading GPX line template", err.stack || err);
|
|
});
|
|
|
|
function _dataToText(fields, data) {
|
|
if(fields.length == 1 && fields[0].name == "Description")
|
|
return data["Description"] || "";
|
|
|
|
var text = [ ];
|
|
for(var i=0; i<fields.length; i++) {
|
|
text.push(fields[i].name + ": " + (data[fields[i].name] || ""));
|
|
}
|
|
return text.join('\n\n');
|
|
}
|
|
|
|
function exportGpx(database, padId, useTracks) {
|
|
return Promise.all([
|
|
database.getPadData(padId),
|
|
Promise.resolve().then(() => {
|
|
var typesObj = { };
|
|
return utils.streamEachPromise(database.getTypes(padId), function(type) {
|
|
typesObj[type.id] = type;
|
|
}).then(() => typesObj);
|
|
}),
|
|
utils.streamToArrayPromise(database.getPadMarkers(padId)),
|
|
utils.streamToArrayPromise(database.getPadLinesWithPoints(padId))
|
|
]).then(([padData, types, markers, lines]) => {
|
|
return padTemplate({
|
|
time: utils.isoDate(),
|
|
padData,
|
|
types,
|
|
markers,
|
|
lines,
|
|
dataToText: _dataToText,
|
|
useTracks
|
|
});
|
|
});
|
|
}
|
|
|
|
function exportLine(line, type, useTracks) {
|
|
return lineTemplate({
|
|
useTracks: (useTracks || line.mode == "track"),
|
|
time: utils.isoDate(),
|
|
desc: type && _dataToText(type.fields, line.data),
|
|
line
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
exportGpx : exportGpx,
|
|
exportLine: exportLine
|
|
}; |