From 4e4b1c4baff0902fbc70b797c87f941320e842ef Mon Sep 17 00:00:00 2001 From: MCMichinator Date: Sun, 6 Apr 2025 18:33:06 +0200 Subject: [PATCH] Fieberkurve: Einzelnes Deaktivieren durch Klick auf denselben Punkt --- src/components/Fieberkurve.vue | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/components/Fieberkurve.vue b/src/components/Fieberkurve.vue index 48bacb5..d4cfa31 100644 --- a/src/components/Fieberkurve.vue +++ b/src/components/Fieberkurve.vue @@ -81,11 +81,11 @@ const props = defineProps({ defaultValues: { type: Array, default: () => [ - { value: 4, clicked: false }, - { value: 4, clicked: false }, - { value: 4, clicked: false }, - { value: 4, clicked: false }, - { value: 4, clicked: false }, + { value: 4, clicked: false, lastClickedValue: null }, + { value: 4, clicked: false, lastClickedValue: null }, + { value: 4, clicked: false, lastClickedValue: null }, + { value: 4, clicked: false, lastClickedValue: null }, + { value: 4, clicked: false, lastClickedValue: null }, ], }, hideText: { type: Boolean, default: false }, @@ -129,11 +129,22 @@ watch( ) function handleClick(index) { - sliders.value[index].clicked = true + const clickedSlider = sliders.value[index] + const currentValue = Number(clickedSlider.value) + + if (clickedSlider.clicked && clickedSlider.lastClickedValue === currentValue) { + // Deaktivieren + clickedSlider.clicked = false + clickedSlider.value = 4 + clickedSlider.lastClickedValue = null + } else { + clickedSlider.clicked = true + clickedSlider.lastClickedValue = currentValue + } const activeFilters = sliders.value .map((slider, idx) => - slider.clicked ? {rowIndex: idx, value: Number(slider.value)} : null + slider.clicked ? { rowIndex: idx, value: Number(slider.value) } : null ) .filter(Boolean) @@ -144,17 +155,18 @@ function resetSliders() { sliders.value.forEach(slider => { slider.value = 4 slider.clicked = false + slider.lastClickedValue = null }) emit("filter-by-row", []) } function updateLine() { - // optional: Linienanimation etc. + // Optional: Linienanimation } onMounted(() => { - // Initial + // Init })