commit 56467579e3365b61ff7c8480d197044d7f93662e
parent 5c5567bb77bca716eb95642f38f5acb4d601b022
Author: Sergey Orlov <wladimirych@gmail.com>
Date: Sat, 1 Aug 2020 14:42:07 +0200
track list: split only well known extensions. Fixes #458
Also avoid some edge cases with short track names like ".wpt", "."
Diffstat:
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js
@@ -76,6 +76,8 @@ L.Control.TrackList = L.Control.extend({
lineCursorStyle: {interactive: false, weight: 1.5, opacity: 1, dashArray: '7,7'},
lineCursorValidStyle: {color: 'green'},
lineCursorInvalidStyle: {color: 'red'},
+ splitExtensions: ['gpx', 'kml', 'kmz', 'wpt', 'rte', 'plt', 'fit', 'tmp', 'jpg', 'crdownload'],
+ splitExtensionsFirstStage: ['xml', 'txt', 'html', 'php', 'tmp', 'gz'],
},
includes: L.Mixin.Events,
@@ -574,12 +576,15 @@ L.Control.TrackList = L.Control.extend({
);
lines = splitLinesAt180Meridian(lines);
var points = this.getTrackPoints(track);
- var name = track.name(),
- i = name.lastIndexOf('.');
- if (i > -1 && i >= name.length - 5) {
- name = name.slice(0, i);
+ let name = track.name();
+ // Browser (Chrome) removes leading dots.
+ name = name.replace(/^\./u, '_');
+ for (let extensions of [this.options.splitExtensionsFirstStage, this.options.splitExtensions]) {
+ let i = name.lastIndexOf('.');
+ if (i > -1 && extensions.includes(name.slice(i + 1).toLowerCase())) {
+ name = name.slice(0, i);
+ }
}
-
if (lines.length === 0 && points.length === 0) {
notify('Track is empty, nothing to save');
return;