From 0b968f1c524c0071d908be929085baf3c95bd226 Mon Sep 17 00:00:00 2001 From: TJ Horner Date: Sun, 15 Sep 2024 18:20:58 -0700 Subject: [PATCH] ok --- packages/backend/.vscode/settings.json | 5 +- .../backend/src/{lib => tracks}/gpx-smooth.ts | 0 .../src/tracks/track-import.processor.ts | 2 +- packages/backend/src/tracks/track.entity.ts | 2 +- .../backend/src/tracks/tracks.controller.ts | 11 +- packages/backend/src/tracks/tracks.service.ts | 2 +- packages/frontend/src/app.css | 7 +- .../src/lib/components/RecentImports.svelte | 77 +++++++ .../src/lib/components/TrackMap.svelte | 194 +++++++++++------- packages/frontend/src/routes/+page.svelte | 22 +- 10 files changed, 239 insertions(+), 83 deletions(-) rename packages/backend/src/{lib => tracks}/gpx-smooth.ts (100%) create mode 100644 packages/frontend/src/lib/components/RecentImports.svelte diff --git a/packages/backend/.vscode/settings.json b/packages/backend/.vscode/settings.json index 3662b37..1098673 100644 --- a/packages/backend/.vscode/settings.json +++ b/packages/backend/.vscode/settings.json @@ -1,3 +1,6 @@ { - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } \ No newline at end of file diff --git a/packages/backend/src/lib/gpx-smooth.ts b/packages/backend/src/tracks/gpx-smooth.ts similarity index 100% rename from packages/backend/src/lib/gpx-smooth.ts rename to packages/backend/src/tracks/gpx-smooth.ts diff --git a/packages/backend/src/tracks/track-import.processor.ts b/packages/backend/src/tracks/track-import.processor.ts index 0b0dfd7..b45a3e2 100644 --- a/packages/backend/src/tracks/track-import.processor.ts +++ b/packages/backend/src/tracks/track-import.processor.ts @@ -9,7 +9,7 @@ import * as crypto from "crypto" import * as fs from "fs/promises" import * as path from "path" import { forwardRef, Inject } from "@nestjs/common" -import { smoothTrackSegment } from "src/lib/gpx-smooth" +import { smoothTrackSegment } from "src/tracks/gpx-smooth" export interface TrackImportPayload { filePath: string diff --git a/packages/backend/src/tracks/track.entity.ts b/packages/backend/src/tracks/track.entity.ts index b6f16ca..be52486 100644 --- a/packages/backend/src/tracks/track.entity.ts +++ b/packages/backend/src/tracks/track.entity.ts @@ -29,8 +29,8 @@ export class Track { toGeoJSON(): Feature { return { type: "Feature", + id: this.id, properties: { - id: this.id, name: this.name, captureDate: this.captureDate, filePath: this.filePath, diff --git a/packages/backend/src/tracks/tracks.controller.ts b/packages/backend/src/tracks/tracks.controller.ts index b1f2a35..b667d24 100644 --- a/packages/backend/src/tracks/tracks.controller.ts +++ b/packages/backend/src/tracks/tracks.controller.ts @@ -1,4 +1,11 @@ -import { Body, Controller, Get, Post, Query } from "@nestjs/common" +import { + Body, + Controller, + Get, + ParseIntPipe, + Post, + Query, +} from "@nestjs/common" import { TracksService } from "./tracks.service" import { JobType } from "bullmq" @@ -29,7 +36,7 @@ export class TracksController { @Get("imports") async listImports( - @Query("limit") limit: number = 10, + @Query("limit", ParseIntPipe) limit: number = 10, @Query("state") state?: JobType, ) { const jobs = await this.tracksService.listImports(limit, state) diff --git a/packages/backend/src/tracks/tracks.service.ts b/packages/backend/src/tracks/tracks.service.ts index 68d61dd..c3e1d4e 100644 --- a/packages/backend/src/tracks/tracks.service.ts +++ b/packages/backend/src/tracks/tracks.service.ts @@ -68,7 +68,7 @@ export class TracksService { return this.trackImportQueue.getJobs( state ?? ["wait", "waiting", "active", "completed", "failed", "paused"], 0, - limit, + limit - 1, ) } diff --git a/packages/frontend/src/app.css b/packages/frontend/src/app.css index d434c0e..122d50e 100644 --- a/packages/frontend/src/app.css +++ b/packages/frontend/src/app.css @@ -1,6 +1,9 @@ -body, html { +body, +html { margin: 0; padding: 0; height: 100%; width: 100%; -} \ No newline at end of file + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + "Helvetica Neue", Arial, sans-serif; +} diff --git a/packages/frontend/src/lib/components/RecentImports.svelte b/packages/frontend/src/lib/components/RecentImports.svelte new file mode 100644 index 0000000..503f12d --- /dev/null +++ b/packages/frontend/src/lib/components/RecentImports.svelte @@ -0,0 +1,77 @@ + + +
+

Recently Imported

+ + {#await imports} +

Loading...

+ {:then imports} + {#if imports.length === 0} +

No imports found.

+ {:else} + + + + + + + + + {#each imports as trackImport} + + + + + {/each} + +
NameFinished At
{trackImport.name}{new Date(trackImport.finishedAt).toLocaleString()}
+ {/if} + {/await} +
+ + diff --git a/packages/frontend/src/lib/components/TrackMap.svelte b/packages/frontend/src/lib/components/TrackMap.svelte index 242456a..b9c5749 100644 --- a/packages/frontend/src/lib/components/TrackMap.svelte +++ b/packages/frontend/src/lib/components/TrackMap.svelte @@ -1,12 +1,19 @@ - - + const boundingBox = bbox(data) + map.fitBounds(boundingBox as any, { padding: 50, duration: 0 }) + }) + {#if data.features.length > 0} - + + + selectedTrack = e.detail.features?.[0]?.properties} + layout={{ "line-cap": "round", "line-join": "round" }} + on:click={handleSelectFeature} + filter={["!", ["to-boolean", ["feature-state", "selected"]]]} paint={{ - 'line-width': 5, - 'line-color': [ - 'case', - ['==', ['get', 'name'], selectedTrack?.name ?? ""], - '#FF0000', - [ - 'interpolate', - ['linear'], - ['get', 'captureDate'], - minDate, '#004D00', - maxDate, '#00FF00' - ] + "line-width": 5, + "line-color": [ + "interpolate", + ["linear"], + ["get", "captureDate"], + minDate, + "#004D00", + maxDate, + "#00FF00", ], - 'line-opacity': 1 + "line-opacity": 1, }} > - + - + - + - +
Name{selectedTrack?.name}{selectedTrack?.properties?.name}
Capture Date{new Date(selectedTrack?.captureDate).toLocaleString()}{new Date( + selectedTrack?.properties?.captureDate + ).toLocaleString()}
File Path{selectedTrack?.filePath}{selectedTrack?.properties?.filePath}
@@ -187,4 +191,46 @@
{/if} -
\ No newline at end of file + + + diff --git a/packages/frontend/src/routes/+page.svelte b/packages/frontend/src/routes/+page.svelte index 3825cf3..7f7834f 100644 --- a/packages/frontend/src/routes/+page.svelte +++ b/packages/frontend/src/routes/+page.svelte @@ -1,6 +1,26 @@ - \ No newline at end of file +
+
+
+
+ +