From c1dbcc930a18443d58f25d537e6abb83fbcea327 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 22 Jul 2026 10:07:52 +0200 Subject: [PATCH 1/5] New CSS for flow chart components --- .../charts/energyFlowChart/EnergyFlowChart.vue | 16 ++++++++++------ .../koala/source/src/css/quasar.variables.scss | 6 ++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue b/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue index 6de4de2614..3c26fdfdf1 100644 --- a/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue +++ b/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue @@ -46,6 +46,10 @@ const svgViewBox = computed( `${svgSize.value.xMin} ${svgSize.value.yMin} ${svgSize.value.xMax} ${svgSize.value.yMax}`, ); +// The icon circle sits inside the label pill (pill radius = circleRadius); +// the inset leaves a visible gap between circle and pill edge. +const iconCircleRadius = computed(() => svgSize.value.circleRadius - 2); + const svgIconWidth = computed(() => svgSize.value.circleRadius); const svgIconHeight = computed(() => svgSize.value.circleRadius); @@ -757,9 +761,9 @@ const labelClipPath = computed(() => { > @@ -846,7 +850,7 @@ const labelClipPath = computed(() => { { > + + + + @@ -851,7 +865,7 @@ const labelClipPath = computed(() => { cx="0" cy="0" :r="iconCircleRadius" - filter="url(#flow-box-shadow)" + filter="url(#flow-icon-shadow)" /> { > - { height="200%" filterUnits="objectBoundingBox" > - + @@ -1045,21 +1041,12 @@ rect { fill: var(--q-card-background); } -/* Drop shadow by way of feDropShadow for browser compatibility (safari webkit) */ +/* Drop shadow by way of feDropShadow for browser compatibility (safari webkit). */ feDropShadow { + flood-color: var(--q-flow-shadow); flood-opacity: 1; } -/* pills and centre dot keep the shared card shadow ... */ -#flow-box-shadow feDropShadow { - flood-color: var(--q-shadow); -} - -/* ... while the icon circles get their own tone (dark theme: black) */ -#flow-icon-shadow feDropShadow { - flood-color: var(--q-flow-icon-shadow); -} - text { font-size: v-bind(svgFontSize); line-height: 1.25; diff --git a/packages/modules/web_themes/koala/source/src/css/quasar.variables.scss b/packages/modules/web_themes/koala/source/src/css/quasar.variables.scss index a734923d76..008b1fe6a4 100644 --- a/packages/modules/web_themes/koala/source/src/css/quasar.variables.scss +++ b/packages/modules/web_themes/koala/source/src/css/quasar.variables.scss @@ -56,8 +56,7 @@ $vehicle-fill: #4f99af; $charge-plan-link-button: #6b757d; $diagram-icon: #717171; $table-hover: #f9f8f8; -// energy flow chart: shadow behind the icon circles (the pills use $shadow) -$flow-icon-shadow: $secondary; +$flow-shadow: $secondary; // Light theme (default) :root { --q-primary: #{$primary}; @@ -73,7 +72,7 @@ $flow-icon-shadow: $secondary; --q-card-background: #{$background}; --q-list: color-mix(in srgb, var(--q-grey) 5%, transparent); --q-shadow: #{$secondary}; - --q-flow-icon-shadow: #{$flow-icon-shadow}; + --q-flow-shadow: #{$flow-shadow}; --q-text: #{$light-text}; --q-white: #{$white}; --q-grey: #{$grey}; @@ -231,9 +230,7 @@ $flow-icon-shadow: $secondary; $dark-primary: #2aa8ff; $dark-secondary: #3b3b3d; //cards - tabs background tables $dark-shadow: #7a7c80; // shadow color for dark theme -// energy flow chart: icon circles use a black shadow in the dark theme, while -// the pills keep the lighter $dark-shadow glow -$dark-flow-icon-shadow: #151616; +$dark-flow-shadow: #000000; $dark-accent: #546e7a; $dark-positive: #3e8f5e; $dark-negative: #c54d57; @@ -268,7 +265,7 @@ $dark-table-hover: #ffffff12; --q-card-background: #{$dark-secondary}; --q-list: #{$dark-secondary}; // drawer, list background --q-shadow: #{$dark-shadow}; - --q-flow-icon-shadow: #{$dark-flow-icon-shadow}; + --q-flow-shadow: #{$dark-flow-shadow}; --q-text: #{$dark-text}; --q-white: #{$white}; --q-grey: #{$grey}; From e331e5a0766e6b3fd44ecc9b336e42486d19bd43 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 22 Jul 2026 14:17:42 +0200 Subject: [PATCH 4/5] box shadow for design spec --- .../charts/dailyTotals/DailyTotals.vue | 2 +- .../energyFlowChart/EnergyFlowChart.vue | 50 +++++++++++++------ .../charts/historyChart/HistoryChart.vue | 2 +- .../source/src/css/quasar.variables.scss | 33 ++++++++++-- 4 files changed, 65 insertions(+), 22 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotals.vue b/packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotals.vue index a460ff999f..aaa86d7cd1 100644 --- a/packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotals.vue +++ b/packages/modules/web_themes/koala/source/src/components/charts/dailyTotals/DailyTotals.vue @@ -586,7 +586,7 @@ watch( .card { border-radius: 0.5rem; background: var(--q-card-background); - filter: drop-shadow(0 0 0.15rem var(--q-shadow)); + filter: drop-shadow(0 0 0.15rem var(--q-chart-shadow)); margin-bottom: 0.25rem; } diff --git a/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue b/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue index 1169e6f176..f6a2d7a2c8 100644 --- a/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue +++ b/packages/modules/web_themes/koala/source/src/components/charts/energyFlowChart/EnergyFlowChart.vue @@ -706,17 +706,21 @@ const labelClipPath = computed(() => { height="200%" filterUnits="objectBoundingBox" > - - - - + + + + + + + + + + + + + + + @@ -799,6 +803,7 @@ const labelClipPath = computed(() => { { :transform="`translate(${svgSize.circleRadius - svgRectWidth / 2}, 0)`" >