From ea53a824510f5b76dc56e76621634456f90de9bf Mon Sep 17 00:00:00 2001 From: vcoppe Date: Sat, 15 Jun 2024 18:44:17 +0200 Subject: [PATCH] extract tool --- .../file-list/FileListNodeLabel.svelte | 8 +- .../src/lib/components/file-list/Selection.ts | 20 +-- .../src/lib/components/toolbar/Toolbar.svelte | 2 +- .../components/toolbar/ToolbarItemMenu.svelte | 3 + .../components/toolbar/tools/Extract.svelte | 52 ++++++++ .../lib/components/toolbar/tools/Merge.svelte | 27 ++-- .../components/toolbar/tools/Waypoint.svelte | 12 +- website/src/lib/db.ts | 117 +++++++++++++++++- website/src/lib/stores.ts | 34 +++-- website/src/locales/en.json | 7 +- 10 files changed, 218 insertions(+), 64 deletions(-) create mode 100644 website/src/lib/components/toolbar/tools/Extract.svelte diff --git a/website/src/lib/components/file-list/FileListNodeLabel.svelte b/website/src/lib/components/file-list/FileListNodeLabel.svelte index a84115d3..5255f960 100644 --- a/website/src/lib/components/file-list/FileListNodeLabel.svelte +++ b/website/src/lib/components/file-list/FileListNodeLabel.svelte @@ -2,7 +2,7 @@ import { Button } from '$lib/components/ui/button'; import * as ContextMenu from '$lib/components/ui/context-menu'; import Shortcut from '$lib/components/Shortcut.svelte'; - import { dbUtils, fileObservers, settings } from '$lib/db'; + import { dbUtils, getFile, settings } from '$lib/db'; import { Copy, MapPin, Plus, Trash2, Waypoints } from 'lucide-svelte'; import { ListFileItem, @@ -56,9 +56,9 @@ on:mouseenter={() => { if (item instanceof ListWaypointItem) { let layer = gpxLayers.get(item.getFileId()); - let fileStore = get(fileObservers).get(item.getFileId()); - if (layer && fileStore) { - let waypoint = get(fileStore)?.file.wpt[item.getWaypointIndex()]; + let file = getFile(item.getFileId()); + if (layer && file) { + let waypoint = file.wpt[item.getWaypointIndex()]; if (waypoint) { layer.showWaypointPopup(waypoint); } diff --git a/website/src/lib/components/file-list/Selection.ts b/website/src/lib/components/file-list/Selection.ts index 709199ed..14548e7b 100644 --- a/website/src/lib/components/file-list/Selection.ts +++ b/website/src/lib/components/file-list/Selection.ts @@ -1,6 +1,6 @@ import { get, writable } from "svelte/store"; import { ListFileItem, ListItem, ListRootItem, ListTrackItem, ListTrackSegmentItem, ListWaypointItem, type ListLevel, sortItems, ListWaypointsItem } from "./FileList"; -import { fileObservers, settings } from "$lib/db"; +import { fileObservers, getFile, settings } from "$lib/db"; export class SelectionTreeType { item: ListItem; @@ -174,23 +174,23 @@ export function selectAll() { $selection.set(new ListFileItem(fileId), true); }); } else if (item instanceof ListTrackItem) { - let fileStore = get(fileObservers).get(item.getFileId()); - if (fileStore) { - get(fileStore)?.file.trk.forEach((_track, trackId) => { + let file = getFile(item.getFileId()); + if (file) { + file.trk.forEach((_track, trackId) => { $selection.set(new ListTrackItem(item.getFileId(), trackId), true); }); } } else if (item instanceof ListTrackSegmentItem) { - let fileStore = get(fileObservers).get(item.getFileId()); - if (fileStore) { - get(fileStore)?.file.trk[item.getTrackIndex()].trkseg.forEach((_segment, segmentId) => { + let file = getFile(item.getFileId()); + if (file) { + file.trk[item.getTrackIndex()].trkseg.forEach((_segment, segmentId) => { $selection.set(new ListTrackSegmentItem(item.getFileId(), item.getTrackIndex(), segmentId), true); }); } } else if (item instanceof ListWaypointItem) { - let fileStore = get(fileObservers).get(item.getFileId()); - if (fileStore) { - get(fileStore)?.file.wpt.forEach((_waypoint, waypointId) => { + let file = getFile(item.getFileId()); + if (file) { + file.wpt.forEach((_waypoint, waypointId) => { $selection.set(new ListWaypointItem(item.getFileId(), waypointId), true); }); } diff --git a/website/src/lib/components/toolbar/Toolbar.svelte b/website/src/lib/components/toolbar/Toolbar.svelte index 05faf467..6a26b2d8 100644 --- a/website/src/lib/components/toolbar/Toolbar.svelte +++ b/website/src/lib/components/toolbar/Toolbar.svelte @@ -43,7 +43,7 @@ - {$_('toolbar.extract_tooltip')} + {$_('toolbar.extract.tooltip')} diff --git a/website/src/lib/components/toolbar/ToolbarItemMenu.svelte b/website/src/lib/components/toolbar/ToolbarItemMenu.svelte index c19abe0a..d44f5277 100644 --- a/website/src/lib/components/toolbar/ToolbarItemMenu.svelte +++ b/website/src/lib/components/toolbar/ToolbarItemMenu.svelte @@ -7,6 +7,7 @@ import Waypoint from '$lib/components/toolbar/tools/Waypoint.svelte'; import Time from '$lib/components/toolbar/tools/Time.svelte'; import Merge from '$lib/components/toolbar/tools/Merge.svelte'; + import Extract from '$lib/components/toolbar/tools/Extract.svelte'; import Clean from '$lib/components/toolbar/tools/Clean.svelte'; import Reduce from '$lib/components/toolbar/tools/Reduce.svelte'; import RoutingControlPopup from '$lib/components/toolbar/tools/routing/RoutingControlPopup.svelte'; @@ -44,6 +45,8 @@