From 5c2d61baaa27e62d9250f579f3236c6ee7177066 Mon Sep 17 00:00:00 2001 From: Julian Stirling Date: Tue, 21 Oct 2025 12:09:33 +0100 Subject: [PATCH] Refactor brightness, contrast, and saturation filters into Vue props. --- .../openSeadragonViewer.vue | 27 ++++++++++++++++--- .../scanListComponents/scanViewer.vue | 16 +++-------- .../tabContentComponents/scanListContent.vue | 13 ++------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/webapp/src/components/tabContentComponents/scanListComponents/openSeadragonViewer.vue b/webapp/src/components/tabContentComponents/scanListComponents/openSeadragonViewer.vue index b007e4a1..8f0a0a66 100644 --- a/webapp/src/components/tabContentComponents/scanListComponents/openSeadragonViewer.vue +++ b/webapp/src/components/tabContentComponents/scanListComponents/openSeadragonViewer.vue @@ -14,15 +14,25 @@ export default { src: { type: String, required: true + + }, + brightness: { + type: Number, + required: true + }, + contrast: { + type: Number, + required: true + }, + saturation: { + type: Number, + required: true } }, data: function() { return { - osdViewer: null, - brightness: 1, - contrast: 1, - saturation: 1, + osdViewer: null }; }, @@ -32,6 +42,15 @@ export default { handler(newVal) { this.loadOpenSeaDragon(newVal); } + }, + brightness() { + this.updateFilter(); + }, + contrast() { + this.updateFilter(); + }, + saturation() { + this.updateFilter(); } }, diff --git a/webapp/src/components/tabContentComponents/scanListComponents/scanViewer.vue b/webapp/src/components/tabContentComponents/scanListComponents/scanViewer.vue index 96f2203d..8b1a0b57 100644 --- a/webapp/src/components/tabContentComponents/scanListComponents/scanViewer.vue +++ b/webapp/src/components/tabContentComponents/scanListComponents/scanViewer.vue @@ -25,6 +25,9 @@ id="openseadragon" ref="openseadragon" :src="selectedScanDZI" + :brightness="brightness" + :contrast="contrast" + :saturation="saturation" /> @@ -42,7 +45,6 @@ max="1.8" step="0.01" v-model.number="brightness" - @input="updateViewerFilter" /> @@ -124,20 +124,10 @@ export default { goFullscreen() { this.$refs.openseadragon.openFullscreen(); }, - updateViewerFilter() { - const viewer = this.$refs.openseadragon; - if (viewer) { - viewer.brightness = this.brightness; - viewer.contrast = this.contrast; - viewer.saturation = this.saturation; - viewer.updateFilter(); - } - }, resetFilters() { this.brightness = 1; this.contrast = 1; this.saturation = 1; - this.updateViewerFilter(); }, }, }; diff --git a/webapp/src/components/tabContentComponents/scanListContent.vue b/webapp/src/components/tabContentComponents/scanListContent.vue index 400ca229..978f2034 100644 --- a/webapp/src/components/tabContentComponents/scanListContent.vue +++ b/webapp/src/components/tabContentComponents/scanListContent.vue @@ -101,10 +101,7 @@ export default { scans: [], ongoing: null, selectedScan: null, - osdViewer: null, - brightness: 1, - contrast: 1, - saturation: 1, + osdViewer: null }; }, @@ -222,7 +219,7 @@ export default { } else { this.modalError("Scan not stitched for viewing in webapp, please download or stitch"); } - }, + } } } @@ -239,10 +236,4 @@ export default { margin-bottom: 30px; } -input[type="range"] { - pointer-events: auto; - z-index: 1001; -} - - \ No newline at end of file