From 014e58a31b014b3a84d4f376665fdae53c62c773 Mon Sep 17 00:00:00 2001 From: evlist Date: Sun, 23 Apr 2023 18:06:10 +0200 Subject: [PATCH] Calling WptEditDialog to import pictures as wpts --- src/components/import/ImportSingleFile.tsx | 61 +++++++++++++++++++++- src/components/wpt/WptEditDialog.tsx | 9 ++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/components/import/ImportSingleFile.tsx b/src/components/import/ImportSingleFile.tsx index 0924aac..910a16e 100644 --- a/src/components/import/ImportSingleFile.tsx +++ b/src/components/import/ImportSingleFile.tsx @@ -22,6 +22,8 @@ import { import piexif from 'piexifjs'; import { getDate, getGps } from '../../lib/exif'; import { downsize } from '../../lib/image'; +import { Coordinate } from 'ol/coordinate'; +import WptEditDialog, { Category } from '../wpt/WptEditDialog'; interface Props { file: File; @@ -66,6 +68,40 @@ const ImportSingleFile: Component = ({ file: file }) => { const [picture, setPicture] = createSignal(); const [state, setState] = createSignal('init'); const [gpxId, setGpxId] = createSignal('new'); + + const [open, setOpen] = createSignal(false); + const [coordinate, setCoordinate] = createSignal(); + const [initialWpt, setInitialWpt] = createSignal({ + $: { lat: 0, lon: 0 }, + ele: undefined, + time: undefined, + magvar: undefined, + geoidheight: undefined, + name: undefined, + cmt: undefined, + desc: undefined, + src: undefined, + link: undefined, + sym: undefined, + type: undefined, + fix: undefined, + sat: undefined, + hdop: undefined, + vdop: undefined, + pdop: undefined, + ageofdgpsdata: undefined, + dgpsid: undefined, + extensions: { + address: undefined, + startTime: undefined, + endTime: undefined, + category: Category.PICTURE, + subCategory: undefined, + pictureId: '', + thumbnailUrl: '', + }, + }); + createEffect(() => { setGpxId(currentGpxId()); }); @@ -140,6 +176,18 @@ const ImportSingleFile: Component = ({ file: file }) => { bigThumbnailUrl, downsizedUrl, }); + setCoordinate([gps.longitude, gps.latitude]); + setInitialWpt({ + ...initialWpt(), + extensions: { + ...initialWpt().extensions, + category: Category.PICTURE, + startTime: date.toISOString(), + endTime: date.toISOString(), + pictureId: id, + thumbnailUrl: thumbnailUrl, + }, + }); }, false ); @@ -281,11 +329,22 @@ const ImportSingleFile: Component = ({ file: file }) => { + + { + setOpen(false); + setState('imported'); + }} + coordinate={coordinate} + initialWpt={initialWpt} + /> + diff --git a/src/components/wpt/WptEditDialog.tsx b/src/components/wpt/WptEditDialog.tsx index 3bf01e3..d050b78 100644 --- a/src/components/wpt/WptEditDialog.tsx +++ b/src/components/wpt/WptEditDialog.tsx @@ -26,6 +26,7 @@ import { Coordinate } from 'ol/coordinate'; export enum Category { NOTE = 'note', POI = 'poi', + PICTURE = 'picture', UNKNOWN = '', } @@ -220,6 +221,14 @@ const WptEditDialog: Component = (props) => { > Note +