> | undefined;
{
- if (!get(selectedFiles).has(get(file))) {
- get(selectFiles).select(get(file));
+ if (!get(selectedFiles).has($file?._data.id)) {
+ get(selectFiles).select($file?._data.id);
}
}}
>
-
+
{$_('menu.duplicate')}
-
{$_('menu.delete')}
@@ -28,25 +21,25 @@
-
+
{$_('quantities.distance')}
-
+
-
+
{$_('quantities.elevation')}
-
+
/
-
+
{$settings.velocityUnits === 'speed' ? $_('quantities.speed') : $_('quantities.pace')} ({$_(
@@ -57,9 +50,9 @@
-
+
/
-
+
{$_('quantities.time')} ({$_('quantities.total')} / {$_('quantities.moving')})
-
+
{$_('menu.duplicate')}
@@ -80,7 +80,7 @@
{$_('menu.export')}
-
+
{$_('menu.export_all')}
@@ -107,15 +107,18 @@
-
+
{$_('menu.delete')}
{$_('menu.delete_all')}
@@ -199,7 +202,7 @@
triggerFileInput();
e.preventDefault();
} else if (e.key === 'd' && (e.metaKey || e.ctrlKey)) {
- duplicateSelectedFiles();
+ filestore.duplicateSelectedFiles();
e.preventDefault();
} else if ((e.key === 's' || e.key == 'S') && (e.metaKey || e.ctrlKey)) {
if (e.shiftKey) {
@@ -210,9 +213,9 @@
e.preventDefault();
} else if ((e.key === 'Backspace' || e.key === 'Delete') && (e.metaKey || e.ctrlKey)) {
if (e.shiftKey) {
- removeAllFiles();
+ filestore.deleteAllFiles();
} else {
- removeSelectedFiles();
+ filestore.deleteSelectedFiles();
}
e.preventDefault();
} else if (e.key === 'a' && (e.metaKey || e.ctrlKey)) {
diff --git a/website/src/lib/components/gpx-layer/GPXLayer.ts b/website/src/lib/components/gpx-layer/GPXLayer.ts
index 1f1da064..b11e1dbe 100644
--- a/website/src/lib/components/gpx-layer/GPXLayer.ts
+++ b/website/src/lib/components/gpx-layer/GPXLayer.ts
@@ -1,13 +1,8 @@
-import type { GPXFile, Waypoint } from "gpx";
+import type { GPXFile } from "gpx";
import { map, selectFiles, currentTool, Tool } from "$lib/stores";
import { get, type Writable } from "svelte/store";
import mapboxgl from "mapbox-gl";
-let id = 0;
-function getLayerId() {
- return `gpx-${id++}`;
-}
-
let defaultWeight = 6;
let defaultOpacity = 1;
@@ -44,7 +39,7 @@ function decrementColor(color: string) {
export class GPXLayer {
map: mapboxgl.Map;
file: Writable;
- layerId: string;
+ fileId: string;
layerColor: string;
popup: mapboxgl.Popup;
popupElement: HTMLElement;
@@ -57,36 +52,33 @@ export class GPXLayer {
constructor(map: mapboxgl.Map, file: Writable, popup: mapboxgl.Popup, popupElement: HTMLElement) {
this.map = map;
this.file = file;
- this.layerId = getLayerId();
+ this.fileId = get(file)._data.id;
this.layerColor = getColor();
this.popup = popup;
this.popupElement = popupElement;
this.unsubscribe = file.subscribe(this.updateData.bind(this));
- get(this.file)._data = {
- layerId: this.layerId,
- layerColor: this.layerColor
- };
+ get(this.file)._data.layerColor = this.layerColor;
this.add();
this.map.on('style.load', this.addBinded);
}
add() {
- if (!this.map.getSource(this.layerId)) {
+ if (!this.map.getSource(this.fileId)) {
let data = this.getGeoJSON();
- this.map.addSource(this.layerId, {
+ this.map.addSource(this.fileId, {
type: 'geojson',
data
});
}
- if (!this.map.getLayer(this.layerId)) {
+ if (!this.map.getLayer(this.fileId)) {
this.map.addLayer({
- id: this.layerId,
+ id: this.fileId,
type: 'line',
- source: this.layerId,
+ source: this.fileId,
layout: {
'line-join': 'round',
'line-cap': 'round'
@@ -98,14 +90,14 @@ export class GPXLayer {
}
});
- this.map.on('click', this.layerId, this.selectOnClickBinded);
- this.map.on('mouseenter', this.layerId, toPointerCursor);
- this.map.on('mouseleave', this.layerId, toDefaultCursor);
+ this.map.on('click', this.fileId, this.selectOnClickBinded);
+ this.map.on('mouseenter', this.fileId, toPointerCursor);
+ this.map.on('mouseleave', this.fileId, toDefaultCursor);
}
}
updateData() {
- let source = this.map.getSource(this.layerId);
+ let source = this.map.getSource(this.fileId);
if (source) {
source.setData(this.getGeoJSON());
}
@@ -137,13 +129,13 @@ export class GPXLayer {
}
remove() {
- this.map.off('click', this.layerId, this.selectOnClickBinded);
- this.map.off('mouseenter', this.layerId, toPointerCursor);
- this.map.off('mouseleave', this.layerId, toDefaultCursor);
+ this.map.off('click', this.fileId, this.selectOnClickBinded);
+ this.map.off('mouseenter', this.fileId, toPointerCursor);
+ this.map.off('mouseleave', this.fileId, toDefaultCursor);
this.map.off('style.load', this.addBinded);
- this.map.removeLayer(this.layerId);
- this.map.removeSource(this.layerId);
+ this.map.removeLayer(this.fileId);
+ this.map.removeSource(this.fileId);
this.markers.forEach((marker) => {
marker.remove();
@@ -155,7 +147,7 @@ export class GPXLayer {
}
moveToFront() {
- this.map.moveLayer(this.layerId);
+ this.map.moveLayer(this.fileId);
}
selectOnClick(e: any) {
@@ -163,9 +155,9 @@ export class GPXLayer {
return;
}
if (e.originalEvent.shiftKey) {
- get(selectFiles).addSelect(get(this.file));
+ get(selectFiles).addSelect(this.fileId);
} else {
- get(selectFiles).select(get(this.file));
+ get(selectFiles).select(this.fileId);
}
}
diff --git a/website/src/lib/components/gpx-layer/GPXLayers.svelte b/website/src/lib/components/gpx-layer/GPXLayers.svelte
index e627f531..4269dbfc 100644
--- a/website/src/lib/components/gpx-layer/GPXLayers.svelte
+++ b/website/src/lib/components/gpx-layer/GPXLayers.svelte
@@ -1,5 +1,5 @@