From 7774d76cb7a07416798babd76117a70fe44bb815 Mon Sep 17 00:00:00 2001 From: Devin Cowan Date: Thu, 16 May 2024 12:00:54 -0400 Subject: [PATCH 1/6] Refactor to use featureStore.getFeatureName() consistently --- frontend/src/components/StaticMetadata.vue | 14 +++----------- frontend/src/stores/charts.js | 13 ++++++++----- frontend/src/stores/features.js | 15 ++++++++++++++- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/frontend/src/components/StaticMetadata.vue b/frontend/src/components/StaticMetadata.vue index 7106dd4..bf91739 100644 --- a/frontend/src/components/StaticMetadata.vue +++ b/frontend/src/components/StaticMetadata.vue @@ -2,7 +2,7 @@ - {{ getFeatureName() }} + {{ featureStore.getFeatureName() }} @@ -23,7 +23,8 @@ Metadata - Hide Extended Metadata + Hide Extended + Metadata \ No newline at end of file diff --git a/frontend/src/stores/charts.js b/frontend/src/stores/charts.js index 7525386..513bb7e 100644 --- a/frontend/src/stores/charts.js +++ b/frontend/src/stores/charts.js @@ -1,5 +1,6 @@ import { defineStore } from 'pinia' import { ref } from 'vue' +import { useFeaturesStore } from '@/stores/features' export const useChartsStore = defineStore('charts', () => { let chartData = ref({}) @@ -91,8 +92,8 @@ export const useChartsStore = defineStore('charts', () => { } const filterMeasurements = (measurements, dataQualityFlags) => { - // TODO: this is a hack to remove the invalid measurements - // need to handle this with a formal validator + // TODO: this is a hack to remove the invalid measurements + // need to handle this with a formal validator console.log('Starting number of measurements', measurements.length) measurements = measurements.filter((m) => { if (m.time_str == 'no_data') { @@ -124,6 +125,7 @@ export const useChartsStore = defineStore('charts', () => { } const getChartDatasets = (selectedFeatures, dataQualityFlags = null) => { + const featureStore = useFeaturesStore() // TODO: need to update just for the newly selected feature: this currently will re-map all selected features console.log('Getting chart datasets for selected features', selectedFeatures) return selectedFeatures.map((feature) => { @@ -136,7 +138,7 @@ export const useChartsStore = defineStore('charts', () => { console.log('SWOT feature', feature) return { // TODO: nodes label assumes reach - label: `${feature?.properties?.river_name} | ${feature?.feature_id}`, + label: `${featureStore.getFeatureName(feature)} | ${feature?.feature_id}`, data: measurements, parsing: { xAxisKey: 'datetime', @@ -149,6 +151,7 @@ export const useChartsStore = defineStore('charts', () => { } const getNodeChartDatasets = (nodes) => { + const featureStore = useFeaturesStore() console.log('getting node chart datasets for nodes', nodes) // TODO:nodes I was expecting that the node_dist would be constant across timestamps but it isn't // https://www.chartjs.org/docs/latest/general/data-structures.html#parsing @@ -163,7 +166,7 @@ export const useChartsStore = defineStore('charts', () => { console.log('Node measurements parsed', measurements) console.log('using reach from ', nodes[0]) const dataSet = { - label: `${nodes[0]?.properties?.river_name} | ${nodes[0]?.properties?.reach_id}`, + label: `${featureStore.getFeatureName(nodes[0])} | ${nodes[0]?.properties?.reach_id}`, data: measurements, parsing: { xAxisKey: 'node_dist', @@ -258,6 +261,6 @@ export const useChartsStore = defineStore('charts', () => { showChart, hasNodeData, dynamicColors, - filterDataQuality, + filterDataQuality } }) diff --git a/frontend/src/stores/features.js b/frontend/src/stores/features.js index 1237881..a4db56f 100644 --- a/frontend/src/stores/features.js +++ b/frontend/src/stores/features.js @@ -42,7 +42,7 @@ export const useFeaturesStore = defineStore('features', () => { const clearSelectedFeatures = () => { for (const feature of selectedFeatures.value) { - console.log("Deselecting feature", feature) + console.log('Deselecting feature', feature) mapStore.deselectFeature(feature) } selectedFeatures.value = [] @@ -55,6 +55,18 @@ export const useFeaturesStore = defineStore('features', () => { return selectedFeatures.value.some((f) => f.id === feature.id) } + const getFeatureName = (feature = null) => { + if (feature == null) { + feature = activeFeature.value + } + if (!feature) return '' + const river_name = feature.properties.river_name + if (river_name === 'NODATA') { + return 'UNNAMED RIVER' + } + return river_name + } + return { selectedFeatures, selectFeature, @@ -64,5 +76,6 @@ export const useFeaturesStore = defineStore('features', () => { checkFeatureSelected, mergeFeature, nodes, + getFeatureName } }) From b9a8f4b542ad7c86d951fc24dc8b45a79a9b0c64 Mon Sep 17 00:00:00 2001 From: Devin Cowan Date: Thu, 16 May 2024 12:54:09 -0400 Subject: [PATCH 2/6] Update zoom indicator logic to only show when the map is visible and zoom level is below the minimum reach selection zoom level --- frontend/src/components/TheLeafletMap.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/TheLeafletMap.vue b/frontend/src/components/TheLeafletMap.vue index e5dbb3a..35d2cf9 100644 --- a/frontend/src/components/TheLeafletMap.vue +++ b/frontend/src/components/TheLeafletMap.vue @@ -1,6 +1,6 @@