From 59faede004f43153717520cbd392e9ae2532c0eb Mon Sep 17 00:00:00 2001 From: evlist Date: Mon, 12 Dec 2022 11:41:09 +0100 Subject: [PATCH] Begining to implement a GPX Dialog component --- package-lock.json | 615 +++++++++++++++--- .../gpx-dialog/GpxDialog.module.css | 7 + src/components/gpx-dialog/GpxDialog.tsx | 99 +++ src/components/gpx-dialog/index.ts | 1 + .../gpx-import/GpxImportSingleFile.tsx | 82 ++- src/components/map/Map.tsx | 2 + src/db/gpx.ts | 17 + src/i18n/en.ts | 11 + src/i18n/fr.ts | 13 + ...adventure-journey-location-svgrepo-com.svg | 1 + src/workers/dispatcher-worker.ts | 2 + 11 files changed, 742 insertions(+), 108 deletions(-) create mode 100644 src/components/gpx-dialog/GpxDialog.module.css create mode 100644 src/components/gpx-dialog/GpxDialog.tsx create mode 100644 src/components/gpx-dialog/index.ts create mode 100644 src/icons/adventure-journey-location-svgrepo-com.svg diff --git a/package-lock.json b/package-lock.json index 0155ca1..3daccea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -626,9 +626,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.4.tgz", + "integrity": "sha512-rZzb7r22m20S1S7ufIc6DC6W659yxoOrl7sKP1nCYhuvUlnCFHVSbATG4keGUtV8rDz11sRRDbWkvQZpzPaHiw==", "cpu": [ "arm" ], @@ -636,14 +636,159 @@ "os": [ "android" ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.4.tgz", + "integrity": "sha512-VPuTzXFm/m2fcGfN6CiwZTlLzxrKsWbPkG7ArRFpuxyaHUm/XFHQPD4xNwZT6uUmpIHhnSjcaCmcla8COzmZ5Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.4.tgz", + "integrity": "sha512-MW+B2O++BkcOfMWmuHXB15/l1i7wXhJFqbJhp82IBOais8RBEQv2vQz/jHrDEHaY2X0QY7Wfw86SBL2PbVOr0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.4.tgz", + "integrity": "sha512-a28X1O//aOfxwJVZVs7ZfM8Tyih2Za4nKJrBwW5Wm4yKsnwBy9aiS/xwpxiiTRttw3EaTg4Srerhcm6z0bu9Wg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.4.tgz", + "integrity": "sha512-e3doCr6Ecfwd7VzlaQqEPrnbvvPjE9uoTpxG5pyLzr2rI2NMjDHmvY1E5EO81O/e9TUOLLkXA5m6T8lfjK9yAA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.4.tgz", + "integrity": "sha512-Oup3G/QxBgvvqnXWrBed7xxkFNwAwJVHZcklWyQt7YCAL5bfUkaa6FVWnR78rNQiM8MqqLiT6ZTZSdUFuVIg1w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.4.tgz", + "integrity": "sha512-vAP+eYOxlN/Bpo/TZmzEQapNS8W1njECrqkTpNgvXskkkJC2AwOXwZWai/Kc2vEFZUXQttx6UJbj9grqjD/+9Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.4.tgz", + "integrity": "sha512-A47ZmtpIPyERxkSvIv+zLd6kNIOtJH03XA0Hy7jaceRDdQaQVGSDt4mZqpWqJYgDk9rg96aglbF6kCRvPGDSUA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.4.tgz", + "integrity": "sha512-2zXoBhv4r5pZiyjBKrOdFP4CXOChxXiYD50LRUU+65DkdS5niPFHbboKZd/c81l0ezpw7AQnHeoCy5hFrzzs4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.4.tgz", + "integrity": "sha512-uxdSrpe9wFhz4yBwt2kl2TxS/NWEINYBUFIxQtaEVtglm1eECvsj1vEKI0KX2k2wCe17zDdQ3v+jVxfwVfvvjw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.4.tgz", + "integrity": "sha512-peDrrUuxbZ9Jw+DwLCh/9xmZAk0p0K1iY5d2IcwmnN+B87xw7kujOkig6ZRcZqgrXgeRGurRHn0ENMAjjD5DEg==", "cpu": [ "loong64" ], @@ -651,6 +796,183 @@ "os": [ "linux" ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.4.tgz", + "integrity": "sha512-sD9EEUoGtVhFjjsauWjflZklTNr57KdQ6xfloO4yH1u7vNQlOfAlhEzbyBKfgbJlW7rwXYBdl5/NcZ+Mg2XhQA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.4.tgz", + "integrity": "sha512-X1HSqHUX9D+d0l6/nIh4ZZJ94eQky8d8z6yxAptpZE3FxCWYWvTDd9X9ST84MGZEJx04VYUD/AGgciddwO0b8g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.4.tgz", + "integrity": "sha512-97ANpzyNp0GTXCt6SRdIx1ngwncpkV/z453ZuxbnBROCJ5p/55UjhbaG23UdHj88fGWLKPFtMoU4CBacz4j9FA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.4.tgz", + "integrity": "sha512-pUvPQLPmbEeJRPjP0DYTC1vjHyhrnCklQmCGYbipkep+oyfTn7GTBJXoPodR7ZS5upmEyc8lzAkn2o29wD786A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.4.tgz", + "integrity": "sha512-N55Q0mJs3Sl8+utPRPBrL6NLYZKBCLLx0bme/+RbjvMforTGGzFvsRl4xLTZMUBFC1poDzBEPTEu5nxizQ9Nlw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.4.tgz", + "integrity": "sha512-LHSJLit8jCObEQNYkgsDYBh2JrJT53oJO2HVdkSYLa6+zuLJh0lAr06brXIkljrlI+N7NNW1IAXGn/6IZPi3YQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.4.tgz", + "integrity": "sha512-nLgdc6tWEhcCFg/WVFaUxHcPK3AP/bh+KEwKtl69Ay5IBqUwKDaq/6Xk0E+fh/FGjnLwqFSsarsbPHeKM8t8Sw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.4.tgz", + "integrity": "sha512-08SluG24GjPO3tXKk95/85n9kpyZtXCVwURR2i4myhrOfi3jspClV0xQQ0W0PYWHioJj+LejFMt41q+PG3mlAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.4.tgz", + "integrity": "sha512-yYiRDQcqLYQSvNQcBKN7XogbrSvBE45FEQdH8fuXPl7cngzkCvpsG2H9Uey39IjQ6gqqc+Q4VXYHsQcKW0OMjQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.4.tgz", + "integrity": "sha512-5rabnGIqexekYkh9zXG5waotq8mrdlRoBqAktjx2W3kb0zsI83mdCwrcAeKYirnUaTGztR5TxXcXmQrEzny83w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.4.tgz", + "integrity": "sha512-sN/I8FMPtmtT2Yw+Dly8Ur5vQ5a/RmC8hW7jO9PtPSQUPkowxWpcUZnqOggU7VwyT3Xkj6vcXWd3V/qTXwultQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { "node": ">=12" } @@ -973,9 +1295,9 @@ "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" }, "node_modules/@petamoriken/float16": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.6.6.tgz", - "integrity": "sha512-3MUulwMtsdCA9lw8a/Kc0XDBJJVCkYTQ5aGd+///TbfkOMXoOGAzzoiYKwPEsLYZv7He7fKJ/mCacqKOO7REyg==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.7.0.tgz", + "integrity": "sha512-g7w35q4bt7MoM3nZKrk5COiIO+qevZjjS7bJO5pYrB0ZKABUXFBOgr2VBY66LmeI3FzkH5AZ+1uNmNHYjeuUjQ==" }, "node_modules/@popperjs/core": { "version": "2.11.6", @@ -1009,13 +1331,13 @@ } }, "node_modules/@suid/base": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@suid/base/-/base-0.5.0.tgz", - "integrity": "sha512-N7qW1pYu3IA3NhqJqixD5v5w9YA1RmNvmPa+PLmcOLFZ/dnYr6r/ZRL9IrhMpEWllx0iJIlgMgNNXdtHV4H+Rg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@suid/base/-/base-0.5.1.tgz", + "integrity": "sha512-0IbaD/KoJUuT4F6EsKDB1dMX0gAZAGzyUz52RyXRTbEv/e2mgK+00wYRRgxaFcjtfHFutFTkIQ4c0EU+GRECWg==", "dependencies": { "@popperjs/core": "^2.11.6", "@suid/css": "0.1.7", - "@suid/system": "0.7.0", + "@suid/system": "0.7.1", "@suid/types": "0.3.0", "@suid/utils": "0.6.0", "clsx": "^1.2.1" @@ -1033,24 +1355,24 @@ } }, "node_modules/@suid/icons-material": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@suid/icons-material/-/icons-material-0.5.1.tgz", - "integrity": "sha512-TINLZjcE7OOrnNHA5KkUYbSHMlbmSccB9XgGDWAKEpcuqCNrlzYcK7URRSO/2fp+pg07tjuQOqO1NKA1b4pp/g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@suid/icons-material/-/icons-material-0.5.2.tgz", + "integrity": "sha512-ruftcjCgNkkbaYOj2xToY22IddVM7sgO8uV9bYclmNIf1CZiPPxiCMbQddr1VJ9/zr6/5Qg86kQDwiSHZdHZDA==", "dependencies": { - "@suid/material": "0.8.0" + "@suid/material": "0.8.1" }, "peerDependencies": { "solid-js": "^1.6.2" } }, "node_modules/@suid/material": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@suid/material/-/material-0.8.0.tgz", - "integrity": "sha512-eXGv3Qmq3m3huiG1xZ/rZsbnSVCiq/5+pU/tG365a+ehQnFVz2Pm7kT0kYs9lQcISdKo8Atbn+a7BFBidL2RWw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@suid/material/-/material-0.8.1.tgz", + "integrity": "sha512-4MoScaNxAzVZyunbdQL4PwR+F7bAjuTNtf8g+i+U+Q0Trx756EZp49Nsy5BD3P85KAnaiY3VGIKjMSDSM7YAyw==", "dependencies": { - "@suid/base": "0.5.0", + "@suid/base": "0.5.1", "@suid/css": "0.1.7", - "@suid/system": "0.7.0", + "@suid/system": "0.7.1", "@suid/types": "0.3.0", "@suid/utils": "0.6.0", "clsx": "^1.2.1" @@ -1072,9 +1394,9 @@ } }, "node_modules/@suid/system": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@suid/system/-/system-0.7.0.tgz", - "integrity": "sha512-fa7wY3WMiARQYA2ODpCIr5BQ7kuXBciKuKLgQ5wuorKQpwQh9GfEnl9xgRFEb2mpM5Z7Y+PyrKaPygh3o5faWA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@suid/system/-/system-0.7.1.tgz", + "integrity": "sha512-ltWJULVcbLLTmEWdoy33d5Aa4C37V6nk0d0YoqvGJc8ujZ4SDR5hrszWixQG5i/j76+s++ep+9Z9W1xuw/IlTA==", "dependencies": { "@suid/css": "0.1.7", "@suid/styled-engine": "0.3.0", @@ -1454,9 +1776,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz", - "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==" + "version": "18.11.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.13.tgz", + "integrity": "sha512-IASpMGVcWpUsx5xBOrxMj7Bl8lqfuTY7FKAnPmu5cHkfQVWF8GulWS1jbRqA934qZL35xh5xN/+Xe/i26Bod4w==" }, "node_modules/@types/pouchdb": { "version": "6.4.0", @@ -1668,9 +1990,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz", - "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==", + "version": "17.0.17", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.17.tgz", + "integrity": "sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1864,12 +2186,12 @@ } }, "node_modules/babel-preset-solid": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.6.2.tgz", - "integrity": "sha512-5sFI34g7Jtp4r04YFWkuC1o+gnekBdPXQTJb5/6lmxi5YwzazVgKAXRwEAToC3zRaPyIYJbZUVLpOi5mDzPEuw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.6.3.tgz", + "integrity": "sha512-AQ6aaKQlDAZc3aAS+nFfXbNBf+NeJwKlRA55clj9PQI+Mkqv8JvTOnAEIGfYa0OW0sntMWhNWx+ih/4PK2s3/w==", "dev": true, "dependencies": { - "babel-plugin-jsx-dom-expressions": "^0.35.4" + "babel-plugin-jsx-dom-expressions": "^0.35.6" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -2006,9 +2328,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", + "version": "1.0.30001439", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", + "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", "dev": true, "funding": [ { @@ -2507,10 +2829,11 @@ } }, "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.4.tgz", + "integrity": "sha512-qQrPMQpPTWf8jHugLWHoGqZjApyx3OEm76dlTXobHwh/EBbavbRdjXdYi/GWr43GyN0sfpap14GPkb05NH3ROA==", "hasInstallScript": true, + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -2518,28 +2841,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" + "@esbuild/android-arm": "0.16.4", + "@esbuild/android-arm64": "0.16.4", + "@esbuild/android-x64": "0.16.4", + "@esbuild/darwin-arm64": "0.16.4", + "@esbuild/darwin-x64": "0.16.4", + "@esbuild/freebsd-arm64": "0.16.4", + "@esbuild/freebsd-x64": "0.16.4", + "@esbuild/linux-arm": "0.16.4", + "@esbuild/linux-arm64": "0.16.4", + "@esbuild/linux-ia32": "0.16.4", + "@esbuild/linux-loong64": "0.16.4", + "@esbuild/linux-mips64el": "0.16.4", + "@esbuild/linux-ppc64": "0.16.4", + "@esbuild/linux-riscv64": "0.16.4", + "@esbuild/linux-s390x": "0.16.4", + "@esbuild/linux-x64": "0.16.4", + "@esbuild/netbsd-x64": "0.16.4", + "@esbuild/openbsd-x64": "0.16.4", + "@esbuild/sunos-x64": "0.16.4", + "@esbuild/win32-arm64": "0.16.4", + "@esbuild/win32-ia32": "0.16.4", + "@esbuild/win32-x64": "0.16.4" } }, "node_modules/esbuild-android-64": { @@ -3054,6 +3377,18 @@ "node": ">= 8" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -4398,9 +4733,9 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -4422,6 +4757,18 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -4749,9 +5096,9 @@ } }, "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "funding": [ { "type": "opencollective", @@ -5245,9 +5592,9 @@ "dev": true }, "node_modules/solid-js": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.6.2.tgz", - "integrity": "sha512-AZBsj+Yn1xliniTTeuQKG9V7VQVkQ8lZmSKvBjpcVSoZeF7nvt/N5f7Kcsx6QSufioa2YgvBjkIiA0cM0qhotw==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.6.4.tgz", + "integrity": "sha512-IfJJ1ejAcRTOEB0XXk/J8tzvVNZXAdEuHtWQwTXefUteZPGWOl4aVSOrkoj3y1bjwDayqok3+Vv3TV/j4IhKyw==", "dependencies": { "csstype": "^3.1.0" } @@ -5411,12 +5758,12 @@ } }, "node_modules/strip-literal": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", - "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.0.tgz", + "integrity": "sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0" + "acorn": "^8.8.1" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -5451,14 +5798,14 @@ "dev": true }, "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -5627,9 +5974,9 @@ } }, "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5754,30 +6101,96 @@ } }, "node_modules/vite-plugin-solid": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.4.0.tgz", - "integrity": "sha512-Rr+t2sr9TWIvH16yzBZzx6O9YSpYAvcwKUMPqbi/4iU3mRumXQ4O10i1XGtQIynC7U3XwJsMzAJigDFGbiJBiw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.5.0.tgz", + "integrity": "sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==", "dev": true, "dependencies": { - "@babel/core": "^7.18.6", + "@babel/core": "^7.20.5", "@babel/preset-typescript": "^7.18.6", - "babel-preset-solid": "^1.4.6", - "merge-anything": "^5.0.2", + "babel-preset-solid": "^1.6.3", + "merge-anything": "^5.1.4", "solid-refresh": "^0.4.1", - "vitefu": "^0.1.1" + "vitefu": "^0.2.3" }, "peerDependencies": { - "solid-js": "^1.3.17", - "vite": "^3.0.0" + "solid-js": "^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0", + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "node_modules/vitefu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.1.1.tgz", - "integrity": "sha512-HClD14fjMJ+NQgXBqT3dC3RdO/+Chayil+cCPYZKY3kT+KcJomKzrdgzfCHJkIL2L0OAY+VPvrSW615iPtc7ag==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.3.tgz", + "integrity": "sha512-75l7TTuU8isAhz1QFtNKjDkqjxvndfMC1AfIMjJ0ZQ59ZD0Ow9QOIsJJX16Wv9PS8f+zMzp6fHy5cCbKG/yVUQ==", "dev": true, "peerDependencies": { - "vite": "^3.0.0" + "vite": "^3.0.0 || ^4.0.0" }, "peerDependenciesMeta": { "vite": { @@ -5786,9 +6199,9 @@ } }, "node_modules/vitest": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.3.tgz", - "integrity": "sha512-/UzHfXIKsELZhL7OaM2xFlRF8HRZgAHtPctacvNK8H4vOcbJJAMEgbWNGSAK7Y9b1NBe5SeM7VTuz2RsTHFJJA==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.7.tgz", + "integrity": "sha512-lJ+Ue+v8kHl2JzjaKHJ9u5Yo/loU7zrWK2/Whn8OKQjtq5G7nkeWfXuq3elZaC8xKdkdIuWiiIicaNBG1F5yzg==", "dev": true, "dependencies": { "@types/chai": "^4.3.3", @@ -5800,11 +6213,11 @@ "debug": "^4.3.4", "local-pkg": "^0.4.2", "source-map": "^0.6.1", - "strip-literal": "^0.4.2", + "strip-literal": "^1.0.0", "tinybench": "^2.3.1", "tinypool": "^0.3.0", "tinyspy": "^1.0.2", - "vite": "^3.0.0" + "vite": "^3.0.0 || ^4.0.0" }, "bin": { "vitest": "vitest.mjs" diff --git a/src/components/gpx-dialog/GpxDialog.module.css b/src/components/gpx-dialog/GpxDialog.module.css new file mode 100644 index 0000000..7bb5803 --- /dev/null +++ b/src/components/gpx-dialog/GpxDialog.module.css @@ -0,0 +1,7 @@ +.control { + opacity: 1; + position: fixed !important; + top: 0px; + margin-left: calc(100% - 150px) !important; + z-index: 1; +} diff --git a/src/components/gpx-dialog/GpxDialog.tsx b/src/components/gpx-dialog/GpxDialog.tsx new file mode 100644 index 0000000..fa714e1 --- /dev/null +++ b/src/components/gpx-dialog/GpxDialog.tsx @@ -0,0 +1,99 @@ +import { useI18n } from '@solid-primitives/i18n'; +import { OpenInBrowserTwoTone } from '@suid/icons-material'; +import { + Box, + FormControl, + IconButton, + InputLabel, + MenuItem, + NativeSelect, + SvgIcon, + TextField, +} from '@suid/material'; +import { Component, createSignal, For } from 'solid-js'; +import dispatch from '../../workers/dispatcher-main'; +import Dialog from '../dialog'; +//import GpxesIcon from '../../icons/adventure-journey-location-svgrepo-com.svg'; +import style from './GpxDialog.module.css'; + +const GpxChooser: Component<{}> = (props) => { + const [t] = useI18n(); + const [open, setOpen] = createSignal(false); + const [allGpxes, setAllGpxes] = createSignal([]); + + const handleClickOpen = async () => { + setOpen(true); + const newAllGpxes: any[] = await dispatch({ + action: 'getAllGpxesWithSummary', + }); + setAllGpxes(newAllGpxes); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + <> +
+ + + + + + + + + + + + + + + + +
+ + + + + {t('gpxChooser')} + + + + {(gpx) => ( + + )} + + + + + + + ); +}; + +export default GpxChooser; diff --git a/src/components/gpx-dialog/index.ts b/src/components/gpx-dialog/index.ts new file mode 100644 index 0000000..eda6f59 --- /dev/null +++ b/src/components/gpx-dialog/index.ts @@ -0,0 +1 @@ +export { default } from './GpxDialog'; diff --git a/src/components/gpx-import/GpxImportSingleFile.tsx b/src/components/gpx-import/GpxImportSingleFile.tsx index b2e6d3c..d2f136e 100644 --- a/src/components/gpx-import/GpxImportSingleFile.tsx +++ b/src/components/gpx-import/GpxImportSingleFile.tsx @@ -1,6 +1,17 @@ import { useI18n } from '@solid-primitives/i18n'; -import { Grid, Typography } from '@suid/material'; -import { Component, createSignal, Show } from 'solid-js'; +import { + FormControlLabel, + Grid, + Typography, + Switch, + FormGroup, + RadioGroup, + Radio, + Divider, + FormControl, + FormLabel, +} from '@suid/material'; +import { Component, createEffect, createSignal, Show } from 'solid-js'; import { findStartTime } from '../../lib/gpx'; import GPX from '../../lib/gpx-parser-builder/src/gpx'; @@ -8,6 +19,11 @@ interface Props { gpxFile: File; } +interface StatsAndGpx { + gpx: Gpx; + stats: any; +} + const analyzeGpx = (gpx: Gpx | undefined) => { if (gpx === undefined) { return {}; @@ -17,13 +33,21 @@ const analyzeGpx = (gpx: Gpx | undefined) => { nbWpts: gpx.wpt ? gpx.wpt?.length : 0, nbRtes: gpx.rte ? gpx.rte?.length : 0, nbTrks: gpx.trk ? gpx.trk?.length : 0, + trkMaybeRte: + gpx.trk && + gpx.trk[0].trkseg && + gpx.trk[0].trkseg[0] && + gpx.trk[0].trkseg[0].trkpt && + !gpx.trk[0].trkseg[0].trkpt[0].time, + startTime: findStartTime(gpx), }; + return stats; }; const GpxImportSingleFile: Component = ({ gpxFile }) => { const [t] = useI18n(); - const [gpx, setGpx] = createSignal(); + const [statsAndGpx, setStatsAndGpx] = createSignal(); const gpxReader = new FileReader(); gpxReader.readAsText(gpxFile); @@ -39,7 +63,7 @@ const GpxImportSingleFile: Component = ({ gpxFile }) => { }); const gpx = GPX.parse(gpxReader.result); console.log({ caller: 'GpxImportSingleFile / JSON', gpxFile, gpx }); - setGpx(gpx); + setStatsAndGpx({ gpx, stats: analyzeGpx(gpx) }); // if (gpx) { // const startTime = new Date(findStartTime(gpx)!); // } @@ -47,7 +71,22 @@ const GpxImportSingleFile: Component = ({ gpxFile }) => { false ); - const stats = analyzeGpx(gpx()); + const [selectedTrkTransform, setSelectedTrkTransform] = createSignal( + 'importNonTimedTrksAsRtes' + ); + + const handleTrkTransformChange = (event: any) => { + setSelectedTrkTransform(event.target.value); + }; + + const controlTrkTransformProps = (item: string) => ({ + checked: selectedTrkTransform() === item, + onChange: handleTrkTransformChange, + value: item, + name: 'trkTransform', + label: t(item), + inputProps: { 'aria-label': item }, + }); return ( @@ -57,12 +96,41 @@ const GpxImportSingleFile: Component = ({ gpxFile }) => { {gpxFile.name} - + - {t('gpxStats', analyzeGpx(gpx()))} + {t('gpxStats', statsAndGpx().stats)}{' '} + {statsAndGpx()?.stats.startTime + ? t('gpxStartTime', statsAndGpx().stats) + : t('gpxNoStartTime')} + + + {t('trkMaybeRte')} + + + 0}> + + + {t('importTrk')} + + } + {...controlTrkTransformProps('importNonTimedTrksAsRtes')} + /> + } + {...controlTrkTransformProps('importAllTrksAsRtes')} + /> + } + {...controlTrkTransformProps('importTrksAsTrks')} + /> + + + + ); diff --git a/src/components/map/Map.tsx b/src/components/map/Map.tsx index a55eec5..688e8f7 100644 --- a/src/components/map/Map.tsx +++ b/src/components/map/Map.tsx @@ -35,6 +35,7 @@ import KeyboardZoom from 'ol/interaction/KeyboardZoom'; import MouseWheelZoom from 'ol/interaction/MouseWheelZoom'; import DragZoom from 'ol/interaction/DragZoom'; import Infos, { clickHandler } from '../infos'; +import GpxDialog from '../gpx-dialog'; const [getState, setState] = createSignal({ lon: 0, @@ -204,6 +205,7 @@ const Map: Component = () => { + diff --git a/src/db/gpx.ts b/src/db/gpx.ts index f05841f..a4f86c2 100644 --- a/src/db/gpx.ts +++ b/src/db/gpx.ts @@ -214,6 +214,23 @@ export const getAllGpxes = async () => { } }; +export const getAllGpxesWithSummary = async () => { + const allGpxes = await getAllGpxes(); + const result = await Promise.all( + allGpxes.map(async (id: string) => { + const gpxDoc = await get(id); +// console.log({ caller: 'getAllGpxesWithSummary', gpx: gpxDoc }); + return { + id, + name: gpxDoc.doc.metadata?.name, + creator: gpxDoc.doc.$?.creator, + }; + }) + ); + console.log({ caller: 'getAllGpxesWithSummary', result }); + return result; +}; + export const appendToArray = (target: any, key: string, value: any) => { if (!(key in target)) { target[key] = []; diff --git a/src/i18n/en.ts b/src/i18n/en.ts index ba97e7c..5521850 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -25,6 +25,17 @@ const dict = { file: 'File: ', gpxStats: 'This file has been created with "{{creator}}" and includes {{nbWpts}} place(s), {{nbRte}} routes(s) et {{nbTrks}} track(s).', + gpxStartTime: 'It starts on {{startTime}}.', + gpxNoStartTime: 'It contains no date.', + trkMaybeRte: + 'The first point of the first track has no timestamp which means that it is most likely a route saved as a track. ', + importTrk: 'Track import', + importAllTrksAsRtes: 'Import all tracks as routes', + importNonTimedTrksAsRtes: 'Import non timestamped tracks as routes', + importTrksAsTrks: 'Import all tracks (even non timestamped) as tracks', + + gpxDialog: 'Current journey', + gpxChooser: 'Journey', }; export default dict; diff --git a/src/i18n/fr.ts b/src/i18n/fr.ts index b31d4a1..81a3cb9 100644 --- a/src/i18n/fr.ts +++ b/src/i18n/fr.ts @@ -27,6 +27,19 @@ const dict = { file: 'Fichier\u00a0: ', gpxStats: 'Ce fichier a été créé avec "{{creator}}" et contient {{nbWpts}} lieu(x), {{nbRtes}} itineraire(s) et {{nbTrks}} trace(s).', + gpxStartTime: 'Il débute le {{startTime}}.', + gpxNoStartTime: 'Il ne contient pas de date.', + trkMaybeRte: + "Le premier point de la première trace n'est pas horodaté ce qui signifie que c'est sans doute un itinéraire sauvegardé sous forme de trace.", + importTrk: 'Import des traces', + importAllTrksAsRtes: 'Importer toutes les traces comme des itinéraires', + importNonTimedTrksAsRtes: + 'Importer les traces non horodatées comme des itinéraires', + importTrksAsTrks: + 'Importer toutes les traces (même non horodatées) comme des traces', + + gpxDialog: 'Voyage en cours', + gpxChooser: 'Voyage', }; export default dict; diff --git a/src/icons/adventure-journey-location-svgrepo-com.svg b/src/icons/adventure-journey-location-svgrepo-com.svg new file mode 100644 index 0000000..6384afc --- /dev/null +++ b/src/icons/adventure-journey-location-svgrepo-com.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/workers/dispatcher-worker.ts b/src/workers/dispatcher-worker.ts index b50b2b6..c48fcac 100644 --- a/src/workers/dispatcher-worker.ts +++ b/src/workers/dispatcher-worker.ts @@ -7,6 +7,7 @@ import { pruneAndSaveImportedGpx, getGpx, getAllGpxes, + getAllGpxesWithSummary, } from '../db/gpx'; import { getTrk, putNewTrk } from '../db/trk'; import { getTrkseg } from '../db/trkseg'; @@ -24,6 +25,7 @@ onmessage = async function (e) { existsGpx, pruneAndSaveImportedGpx, getAllGpxes, + getAllGpxesWithSummary, getGpx, getTrk, getTrkseg,