nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 2a71f764bb99efbf0ad6eba6115e5b2f5152bfbd
parent 25c9f2f6b265e8811261430e5adda46279368394
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Wed,  8 Nov 2017 00:43:24 +0300

[track list] more verbose logging for corrupted track files

Diffstat:
Msrc/lib/leaflet.control.track-list/track-list.hash-state.js | 4+++-
Msrc/lib/leaflet.control.track-list/track-list.js | 26+++++++++++++++-----------
Msrc/lib/leaflet.control.track-list/track-list.localstorage.js | 4+++-
3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/src/lib/leaflet.control.track-list/track-list.hash-state.js b/src/lib/leaflet.control.track-list/track-list.hash-state.js @@ -1,5 +1,6 @@ import L from 'leaflet'; import {parseGeoFile} from './lib/geo_file_formats'; +import logging from 'lib/logging'; L.Control.TrackList.include(L.Mixin.HashState); L.Control.TrackList.include({ @@ -11,8 +12,9 @@ L.Control.TrackList.include({ unserializeState: function(values) { if (values && values.length) { + logging.captureBreadcrumb({message: 'load track from hashState'}); var geodata = parseGeoFile('', window.location.href); - const notEmpty = this.addTracksFromGeodataArray(geodata); + const notEmpty = this.addTracksFromGeodataArray(geodata, {url: window.location.href}); if (notEmpty) { this.setExpanded(); } diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -209,15 +209,19 @@ L.Control.TrackList = L.Control.extend({ this.readingFiles(true); readFiles(files).then(function(fileDataArray) { - var geodataArray = fileDataArray.map(function(fileData) { - return parseGeoFile(fileData.filename, fileData.data); - } - ).reduce(function(prev, next) { - Array.prototype.push.apply(prev, next); - return prev; - }, [] - ); - this.addTracksFromGeodataArray(geodataArray); + const geodataArray = []; + const debugFileData = []; + for (let fileData of fileDataArray) { + geodataArray.push(...parseGeoFile(fileData.filename, fileData.data)); + debugFileData.push({ + fileName: fileData.filename, + size: fileData.data.length, + content: fileData.data.length < 50000 ? btoa(fileData.data) : null + }); + } + + + this.addTracksFromGeodataArray(geodataArray, debugFileData); }.bind(this) ); }, @@ -273,7 +277,7 @@ L.Control.TrackList = L.Control.extend({ this.url(''); }, - addTracksFromGeodataArray: function(geodata_array) { + addTracksFromGeodataArray: function(geodata_array, debugData) { let hasData = false; var messages = []; if (geodata_array.length === 0) { @@ -314,7 +318,7 @@ L.Control.TrackList = L.Control.extend({ ); this.readingFiles(false); if (messages.length) { - logging.captureMessage('errors in loaded tracks', {extra: {message: messages.join('\n')}}); + logging.captureMessage('errors in loaded tracks', {extra: {message: messages.join('\n'), debugData}}); notify(messages.join('\n')); } return hasData; diff --git a/src/lib/leaflet.control.track-list/track-list.localstorage.js b/src/lib/leaflet.control.track-list/track-list.localstorage.js @@ -2,6 +2,7 @@ import './track-list' import L from 'leaflet'; import {parseGeoFile} from './lib/geo_file_formats'; import safeLocalStorage from 'lib/safe-localstorage'; +import logging from 'lib/logging'; L.Control.TrackList.include({ maxLocalStorageSessions: 5, @@ -78,8 +79,9 @@ L.Control.TrackList.include({ s = safeLocalStorage.getItem(key); safeLocalStorage.removeItem(key); if (s) { + logging.captureBreadcrumb({message: 'load track from localStorage'}); geodata = parseGeoFile('', s); - this.addTracksFromGeodataArray(geodata); + this.addTracksFromGeodataArray(geodata, {localStorage: {key, value: s}}); } } }