diff --git a/website/package-lock.json b/website/package-lock.json index a8256e90..4338d50a 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -12,6 +12,7 @@ "bits-ui": "^0.21.5", "chart.js": "^4.4.2", "clsx": "^2.1.0", + "dexie": "^4.0.4", "gpx": "file:../gpx", "lucide-svelte": "^0.365.0", "mapbox-gl": "^3.2.0", @@ -2433,6 +2434,11 @@ "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", "dev": true }, + "node_modules/dexie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.0.4.tgz", + "integrity": "sha512-wFzwWSUdi+MC3jiFeQcCp9nInR7EaX8edzYY+4wmiITkQAiSnHpe4Wo2o5Ce5tJZe2nqt7mLW91MsW4GYx3ziQ==" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", diff --git a/website/package.json b/website/package.json index cce37183..4e9e458a 100644 --- a/website/package.json +++ b/website/package.json @@ -45,6 +45,7 @@ "bits-ui": "^0.21.5", "chart.js": "^4.4.2", "clsx": "^2.1.0", + "dexie": "^4.0.4", "gpx": "file:../gpx", "lucide-svelte": "^0.365.0", "mapbox-gl": "^3.2.0", diff --git a/website/src/lib/components/FileList.svelte b/website/src/lib/components/FileList.svelte index 0d1fb80b..bb93a951 100644 --- a/website/src/lib/components/FileList.svelte +++ b/website/src/lib/components/FileList.svelte @@ -1,5 +1,5 @@ @@ -29,13 +30,13 @@ - + {$_('menu.duplicate')} - {$_('menu.delete')} !$undoRedo.canUndo); - let redoDisabled = derived(undoRedo, ($undoRedo) => !$undoRedo.canRedo); + let undoDisabled = derived(canUndo, ($canUndo) => !$canUndo); + let redoDisabled = derived(canUndo, ($canUndo) => !$canUndo);
@@ -71,7 +70,7 @@ > @@ -84,7 +83,7 @@ {$_('menu.export')} - + {$_('menu.export_all')} @@ -94,12 +93,12 @@ {$_('menu.edit')} - + {$_('menu.undo')} - + {$_('menu.redo')} @@ -111,18 +110,15 @@ - + {$_('menu.delete')} {$_('menu.delete_all')} @@ -206,7 +202,7 @@ triggerFileInput(); e.preventDefault(); } else if (e.key === 'd' && (e.metaKey || e.ctrlKey)) { - filestore.duplicateSelectedFiles(); + dbUtils.duplicateSelectedFiles(); e.preventDefault(); } else if ((e.key === 's' || e.key == 'S') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { @@ -217,15 +213,15 @@ e.preventDefault(); } else if ((e.key === 'z' || e.key == 'Z') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { - $undoRedo.redo(); + redo(); } else { - $undoRedo.undo(); + undo(); } } else if ((e.key === 'Backspace' || e.key === 'Delete') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { - filestore.deleteAllFiles(); + dbUtils.deleteAllFiles(); } else { - filestore.deleteSelectedFiles(); + dbUtils.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 b11e1dbe..a4b6cd82 100644 --- a/website/src/lib/components/gpx-layer/GPXLayer.ts +++ b/website/src/lib/components/gpx-layer/GPXLayer.ts @@ -1,7 +1,8 @@ import type { GPXFile } from "gpx"; import { map, selectFiles, currentTool, Tool } from "$lib/stores"; -import { get, type Writable } from "svelte/store"; +import { get, type Readable, type Writable } from "svelte/store"; import mapboxgl from "mapbox-gl"; +import type { FreezedObject } from "structurajs"; let defaultWeight = 6; let defaultOpacity = 1; @@ -38,7 +39,7 @@ function decrementColor(color: string) { export class GPXLayer { map: mapboxgl.Map; - file: Writable; + file: Readable>; fileId: string; layerColor: string; popup: mapboxgl.Popup; @@ -49,7 +50,7 @@ export class GPXLayer { addBinded: () => void = this.add.bind(this); selectOnClickBinded: (e: any) => void = this.selectOnClick.bind(this); - constructor(map: mapboxgl.Map, file: Writable, popup: mapboxgl.Popup, popupElement: HTMLElement) { + constructor(map: mapboxgl.Map, file: Readable>, popup: mapboxgl.Popup, popupElement: HTMLElement) { this.map = map; this.file = file; this.fileId = get(file)._data.id; @@ -58,8 +59,6 @@ export class GPXLayer { this.popupElement = popupElement; this.unsubscribe = file.subscribe(this.updateData.bind(this)); - get(this.file)._data.layerColor = this.layerColor; - this.add(); this.map.on('style.load', this.addBinded); } diff --git a/website/src/lib/components/gpx-layer/GPXLayers.svelte b/website/src/lib/components/gpx-layer/GPXLayers.svelte index 4269dbfc..4c5caf83 100644 --- a/website/src/lib/components/gpx-layer/GPXLayers.svelte +++ b/website/src/lib/components/gpx-layer/GPXLayers.svelte @@ -1,28 +1,28 @@