var utils = require("./utils"); var _e = utils.escapeXml; function _dataToText(fields, data) { if(fields.length == 1 && fields[0].name == "Description") return data["Description"] || ""; var text = [ ]; for(var i=0; i { var views = ''; return utils.streamEachPromise(database.getViews(padId), (view) => { views += '\n'; }).then(() => views); }, typesObj: () => { var typesObj = { }; return utils.streamEachPromise(database.getTypes(padId), function(type) { typesObj[type.id] = type; }).then(() => typesObj); }, types: (typesObj) => { var types = ''; for(var i in typesObj) { var type = typesObj[i]; types += '\n'; } return types; }, markers: (typesObj) => { var markers = ''; return utils.streamEachPromise(database.getPadMarkers(padId), function(marker) { markers += '\n' + '\t' + _e(marker.name) + '\n' + '\t' + _e(_dataToText(typesObj[marker.typeId].fields, marker.data)) + '\n' + '\t\n' + '\t\t' + _e(marker.colour) + '\n' + '\t\n' + '\n'; }).then(() => markers); }, lines: (typesObj) => { var lines = ''; return utils.streamEachPromise(database.getPadLinesWithPoints(padId), function(line) { var t = (useTracks || line.mode == "track"); lines += '<' + (t ? 'trk' : 'rte') + '>\n' + '\t' + _e(line.name) + '\n' + '\t' + _e(_dataToText(typesObj[line.typeId].fields, line.data)) + '\n' + '\t\n' + '\t\t' + _e(line.colour) + '\n' + '\t\t' + _e(line.width) + '\n' + '\t\t' + _e(line.mode) + '\n' + (t && line.mode != 'track' ? '\t\t' + _e(JSON.stringify(line.routePoints)) + '\n' : '') + '\t\n'; if(t) { lines += '\t\n'; for(var i=0; i\n'; } lines += '\t\n'; } else { for(var i=0; i\n'; } } lines += '\n'; }).then(() => lines); } }).then((res) => '\n' + '\n' + '\t\n' + '\t\t' + _e(res.padData.name) + '\n' + '\t\t\n' + '\t\n' + '\t\n' + res.views.replace(/^(.)/gm, '\t\t$1') + res.types.replace(/^(.)/gm, '\t\t$1') + '\t\n' + res.markers.replace(/^(.)/gm, '\t$1') + res.lines.replace(/^(.)/gm, '\t$1') + '' ); } module.exports = { exportGpx : exportGpx };