From 1199fae9652f8a9c0916e68211df108e6e799c45 Mon Sep 17 00:00:00 2001 From: satellitestudiodesign Date: Thu, 18 Jan 2024 10:21:56 +0100 Subject: [PATCH] add filter for elevation --- apps/fishing-map/features/datasets/datasets.mock.ts | 8 ++++---- apps/fishing-map/features/datasets/datasets.utils.ts | 5 +++-- apps/fishing-map/features/dataviews/dataviews.mock.ts | 2 +- .../features/workspace/vessels/VesselLayerPanel.tsx | 1 - libs/api-types/src/resources.ts | 1 + libs/data-transforms/src/segments/segments-to-geojson.ts | 6 ++++-- libs/ui-components/src/slider/Slider.tsx | 5 +++-- 7 files changed, 16 insertions(+), 12 deletions(-) diff --git a/apps/fishing-map/features/datasets/datasets.mock.ts b/apps/fishing-map/features/datasets/datasets.mock.ts index a2dcea44dc..2833aa7bcb 100644 --- a/apps/fishing-map/features/datasets/datasets.mock.ts +++ b/apps/fishing-map/features/datasets/datasets.mock.ts @@ -80,8 +80,8 @@ export const datasets: Dataset[] = [ type: 'string', }, elevation: { - min: 0, - type: 'number', + enum: [-2000, 0], + type: 'range', }, timestamp: { type: 'string', @@ -96,7 +96,7 @@ export const datasets: Dataset[] = [ type: 'number', }, }, - fieldsAllowed: ['lat', 'lon', 'timestamp', 'latlon', 'seg_id', 'speed'], + fieldsAllowed: ['lat', 'lon', 'timestamp', 'latlon', 'seg_id', 'speed', 'elevation'], createdAt: '2023-10-17T12:34:21.417Z', endpoints: [ { @@ -143,7 +143,7 @@ export const datasets: Dataset[] = [ type: 'enum', label: 'fields', array: true, - enum: ['LAT', 'LON', 'TIMESTAMP', 'SPEED', 'COURSE'], + enum: ['LAT', 'LON', 'TIMESTAMP', 'SPEED', 'COURSE', 'ELEVATION'], }, { label: 'format', diff --git a/apps/fishing-map/features/datasets/datasets.utils.ts b/apps/fishing-map/features/datasets/datasets.utils.ts index 73993eb55b..43268a7220 100644 --- a/apps/fishing-map/features/datasets/datasets.utils.ts +++ b/apps/fishing-map/features/datasets/datasets.utils.ts @@ -87,6 +87,7 @@ export type SupportedActivityDatasetSchema = export type SupportedEnvDatasetSchema = | 'type' | 'speed' + | 'elevation' | 'flag' | 'vessel_type' | 'Height' @@ -830,13 +831,13 @@ export const getSchemaFiltersInDataview = ( const filtersAllowed = fielsAllowedOrdered.map((id) => { return getFiltersBySchema(dataview, id, { vesselGroups, - compatibilityOperation: id === 'speed' ? 'some' : 'every', + compatibilityOperation: id === 'speed' || id === 'elevation' ? 'some' : 'every', }) }) const filtersDisabled = fieldsDisabled.map((id) => { return getFiltersBySchema(dataview, id, { vesselGroups, - compatibilityOperation: id === 'speed' ? 'some' : 'every', + compatibilityOperation: id === 'speed' || id === 'elevation' ? 'some' : 'every', }) }) return { diff --git a/apps/fishing-map/features/dataviews/dataviews.mock.ts b/apps/fishing-map/features/dataviews/dataviews.mock.ts index f18fceaa4e..169f04e300 100644 --- a/apps/fishing-map/features/dataviews/dataviews.mock.ts +++ b/apps/fishing-map/features/dataviews/dataviews.mock.ts @@ -26,7 +26,7 @@ export const dataviews: Dataview[] = [ }, { id: 'fields', - value: ['LONLAT', 'TIMESTAMP', 'SPEED'], + value: ['LONLAT', 'TIMESTAMP', 'SPEED', 'ELEVATION'], }, { id: 'format', diff --git a/apps/fishing-map/features/workspace/vessels/VesselLayerPanel.tsx b/apps/fishing-map/features/workspace/vessels/VesselLayerPanel.tsx index 2e3cf524b8..bf0c283e0e 100644 --- a/apps/fishing-map/features/workspace/vessels/VesselLayerPanel.tsx +++ b/apps/fishing-map/features/workspace/vessels/VesselLayerPanel.tsx @@ -241,7 +241,6 @@ function VesselLayerPanel({ dataview }: VesselLayerPanelProps): React.ReactEleme [] return [] } const times = segment.map((point) => point.timestamp) - const speed = segment.map((point) => point.speed) + const speeds = segment.map((point) => point.speed) + const elevations = segment.map((point) => point.elevation) const coordinateProperties = segment?.reduce( (acc, point) => { const properties = point.properties || {} @@ -39,7 +40,8 @@ const segmentsToFeatures = (segment: Segment | Segment[]): Feature[] coordinateProperties: { ...coordinateProperties, times: times.some((time) => !!time) ? times : undefined, - speed: speed.some((time) => !!time) ? speed : undefined, + speed: speeds.some((speed) => !!speed) ? speeds : undefined, + elevation: elevations.some((elevation) => !!elevation) ? elevations : undefined, }, }, } diff --git a/libs/ui-components/src/slider/Slider.tsx b/libs/ui-components/src/slider/Slider.tsx index ef431b0618..991a80f19a 100644 --- a/libs/ui-components/src/slider/Slider.tsx +++ b/libs/ui-components/src/slider/Slider.tsx @@ -38,8 +38,9 @@ const borderColor = : fallbackBorderColor export const formatSliderNumber = (num: number): string => { - if (num >= 1000) return format('.2s')(num) - if (num > 9) return format('.0f')(num) + const absNum = Math.abs(num) + if (absNum >= 1000) return format('.2s')(num) + if (absNum > 9) return format('.0f')(num) return format('.1f')(num) }