From f2b19f36bd92f00aa0b8dd3009c0f10a5faf583c Mon Sep 17 00:00:00 2001 From: Anne Haley Date: Wed, 17 Sep 2025 14:24:59 -0400 Subject: [PATCH 01/15] style: Redesign project configuration menu --- web/src/components/DatasetList.vue | 2 +- web/src/components/projects/DatasetSelect.vue | 81 ++++++---- web/src/components/projects/ProjectConfig.vue | 146 +++++------------- web/src/components/sidebars/FloatingPanel.vue | 14 +- 4 files changed, 99 insertions(+), 144 deletions(-) diff --git a/web/src/components/DatasetList.vue b/web/src/components/DatasetList.vue index b3e32efc..911177f9 100644 --- a/web/src/components/DatasetList.vue +++ b/web/src/components/DatasetList.vue @@ -31,7 +31,7 @@ const datasetGroups = computed(() => { const expandedGroups = ref(); function expandAllGroups() { - if (!expandedGroups.value && filteredDatasets.value) { + if (filteredDatasets.value) { expandedGroups.value = Object.keys(datasetGroups.value) } } diff --git a/web/src/components/projects/DatasetSelect.vue b/web/src/components/projects/DatasetSelect.vue index 1ba6a071..d0dfd955 100644 --- a/web/src/components/projects/DatasetSelect.vue +++ b/web/src/components/projects/DatasetSelect.vue @@ -9,9 +9,11 @@ const layerStore = useLayerStore(); const props = defineProps<{ datasets: Dataset[] | undefined; - selectedIds: number[] | undefined; + savingId: number | undefined; + addedIds?: number[] | undefined; + buttonIcon: string }>(); -const emit = defineEmits(["toggleDatasets"]); +const emit = defineEmits(["buttonClick"]); const datasetsWithLayers = computed(() => { return props.datasets?.map((dataset) => { @@ -21,10 +23,6 @@ const datasetsWithLayers = computed(() => { } }) }) - -function toggleSelected(items: Dataset[]) { - emit("toggleDatasets", items); -} + + diff --git a/web/src/components/projects/ProjectConfig.vue b/web/src/components/projects/ProjectConfig.vue index bdde60a1..81b49996 100644 --- a/web/src/components/projects/ProjectConfig.vue +++ b/web/src/components/projects/ProjectConfig.vue @@ -1,5 +1,5 @@ + + + + diff --git a/web/src/components/projects/ProjectConfig.vue b/web/src/components/projects/ProjectConfig.vue index 81b49996..7d628376 100644 --- a/web/src/components/projects/ProjectConfig.vue +++ b/web/src/components/projects/ProjectConfig.vue @@ -1,6 +1,7 @@ @@ -87,6 +116,59 @@ watch(open, () => { /> + +
+
+ Layers Configuration +
+
+ +
+ + + + + +
+
+ {{ layer.name || ('Layer ' + (index + 1)) }} + +
+ mdi-pencil-outline + mdi-delete-outline +
+
+
+
+ + + Add Layer + +
+
+
@@ -114,4 +196,14 @@ watch(open, () => { overflow-y: auto; overflow-x: hidden; } +.layers-configuration { + border: 1px solid rgb(var(--v-theme-primary-text)) +} +.layer-card { + padding: 8px !important; + margin-top: 8px; + background-color: rgb(var(--v-theme-background)) !important; + box-shadow: none !important; + border-bottom: 1px solid rgb(var(--v-theme-surface)) +} From 7e2f570f17650f20bc44103e4f06dcfd59ca5647 Mon Sep 17 00:00:00 2001 From: Anne Haley Date: Thu, 18 Sep 2025 10:57:12 -0400 Subject: [PATCH 04/15] fix: Update appearance and behavior of file input --- web/src/components/projects/DatasetUpload.vue | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/web/src/components/projects/DatasetUpload.vue b/web/src/components/projects/DatasetUpload.vue index cda70a37..c0862bf6 100644 --- a/web/src/components/projects/DatasetUpload.vue +++ b/web/src/components/projects/DatasetUpload.vue @@ -2,12 +2,13 @@ import { Dataset } from '@/types'; import { computed, ref, watch } from 'vue'; -import { VFileUpload } from 'vuetify/labs/VFileUpload' +import { VFileUpload, VFileUploadItem } from 'vuetify/labs/VFileUpload' interface LayerSpec { id: number; name: string | undefined, + files: File[], } const props = defineProps<{ @@ -24,6 +25,7 @@ const focusedLayerId = ref(0) const mandatoryRule = [ (v: any) => (v ? true : "Input required.") ]; +const acceptTypes = '.json,.geojson,.tif,.tiff,.zip' const categories = computed(() => { return [...new Set(props.allDatasets?.map((d) => d.category))] @@ -46,7 +48,8 @@ function addLayer() { const id = maxLayerId.value layers.value.push({ id, - name: undefined + name: undefined, + files: [] }) focusedLayerId.value = id } @@ -108,7 +111,7 @@ watch(open, () => { >