From 1e3c040878537dda97d82bef47afe4777d493f04 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 27 Nov 2024 12:55:08 +0100 Subject: [PATCH 01/23] Simplify button groups, add 4 more custom themes --- .../src/components/BatteryInformation.vue | 4 +- .../src/components/BatteryModeButtons.vue | 8 +- .../source/src/components/BatteryOverview.vue | 4 +- .../components/ChargePointInstantSettings.vue | 7 +- .../source/src/components/ChargePointLock.vue | 2 +- .../src/components/ChargePointModeButtons.vue | 12 +- .../src/components/ChargePointPriority.vue | 2 +- .../source/src/components/SliderDouble.vue | 4 +- .../source/src/composables/useThemeManager.ts | 8 +- .../source/src/css/quasar.variables.scss | 340 +++++++++++++++++- .../source/src/layouts/MainLayout.vue | 52 ++- .../standard/source/src/pages/TestPage.vue | 4 +- 12 files changed, 393 insertions(+), 54 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/BatteryInformation.vue b/packages/modules/web_themes/standard/source/src/components/BatteryInformation.vue index 400e6534bb..c824a74974 100644 --- a/packages/modules/web_themes/standard/source/src/components/BatteryInformation.vue +++ b/packages/modules/web_themes/standard/source/src/components/BatteryInformation.vue @@ -2,7 +2,7 @@
- + {{ batteryName }}
@@ -26,7 +26,7 @@ : 'battery_full' " size="sm" - color="warning" + color="primary" class="rotate90Clockwise q-mr-sm" />
SoC:
diff --git a/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue b/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue index b5efbf43a2..fee3e753cb 100644 --- a/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue +++ b/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue @@ -1,14 +1,12 @@ diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointPriority.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointPriority.vue index 57b4879886..ff2872ed87 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointPriority.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointPriority.vue @@ -8,7 +8,7 @@ - openWB - - - - {{ theme }} - - - + + + + + Konfiguration + + + + Darstellung + + + + {{ theme }} + + + + + + + Hilfe + + + + - diff --git a/packages/modules/web_themes/standard/source/src/pages/TestPage.vue b/packages/modules/web_themes/standard/source/src/pages/TestPage.vue index 43acb8b20b..0bddf4cee5 100644 --- a/packages/modules/web_themes/standard/source/src/pages/TestPage.vue +++ b/packages/modules/web_themes/standard/source/src/pages/TestPage.vue @@ -11,10 +11,10 @@ - + - + From 177b507b499aaf12f2eb602a4d8f5c85523deb45 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 27 Nov 2024 18:00:05 +0100 Subject: [PATCH 02/23] Refine colors / css for custom themes --- .../source/src/components/BaseCarousel.vue | 2 +- .../source/src/composables/useThemeManager.ts | 2 +- .../source/src/css/quasar.variables.scss | 111 +++++++++++++++++- .../standard/source/src/pages/TestPage.vue | 4 +- 4 files changed, 114 insertions(+), 5 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue b/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue index 669c4e707e..03adfc77b3 100644 --- a/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue +++ b/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue @@ -3,7 +3,7 @@ v-model="currentSlide" swipeable :animated="animated" - control-color="primary" + control-color="primary" infinite padding :navigation="groupedItems.length > 1" diff --git a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts index b78edbbcbf..9ecdf8d974 100644 --- a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts +++ b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts @@ -19,7 +19,7 @@ export function useThemeManager() { ); document.body.classList.add(`q-theme--${theme}`); - if (theme === 'dark' || theme === 'custom5') { + if (theme === 'dark' ) { $q.dark.set(true); } else { $q.dark.set(false); diff --git a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss index df34d7ef9a..f152838429 100644 --- a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss +++ b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss @@ -58,6 +58,8 @@ $negative: #c10015; $info: #31ccec; $warning: #f2c037; + + // Custom Theme 1 (existing) $custom1-background-grey: #eeeef3; $custom1-background-grey-2: #eeeef3; @@ -70,6 +72,9 @@ $custom1-warning: #f7b267; $custom1-accent: #b691bd; $custom1-brown-text: #524f57; $custom1-white: #ffffff; +$custom1-tab-icon: #5c93d1; +$custom1-carousel-control: #5c93d1; + // Custom Theme 2 (Slate Grey) $custom2-background-grey: #f7f8f9; @@ -83,6 +88,8 @@ $custom2-warning: #b87d43; $custom2-accent: #6e788c; $custom2-brown-text: #2b3541; $custom2-white: #ffffff; +$custom2-tab-icon: #445975; +$custom2-carousel-control: #445975; // Custom Theme 3 (Steel Blue) $custom3-background-grey: #f8f9fb; @@ -96,6 +103,8 @@ $custom3-warning: #e89d4b; $custom3-accent: #8c7daf; $custom3-brown-text: #2d3748; $custom3-white: #ffffff; +$custom3-tab-icon: #4878b7; +$custom3-carousel-control: #4878b7; // Custom Theme 4 (Modern Grey) $custom4-background-grey: #f5f6f8; @@ -109,6 +118,8 @@ $custom4-warning: #d98e44; $custom4-accent: #7a7a9c; $custom4-brown-text: #2c3645; $custom4-white: #ffffff; +$custom4-tab-icon: #556785; +$custom4-carousel-control: #556785; // Custom Theme 5 (Modern Grey) $custom5-background-grey: #010322; @@ -122,6 +133,8 @@ $custom5-warning: #d98e44; $custom5-accent: #7a7a9c; $custom5-brown-text: #2c3645; $custom5-white: #ffffff; +$custom5-tab-icon: #ffffff; +$custom5-carousel-control: #FFFFFF; :root { // Custom Theme 1 @@ -136,6 +149,8 @@ $custom5-white: #ffffff; --custom1-accent: #{$custom1-accent}; --custom1-brown-text: #{$custom1-brown-text}; --custom1-white: #{$custom1-white}; + --custom1-tab-icon: #{$custom1-tab-icon}; + --custom1-carousel-control: #{$custom1-carousel-control}; // Custom Theme 2 --custom2-background-grey: #{$custom2-background-grey}; @@ -149,6 +164,8 @@ $custom5-white: #ffffff; --custom2-accent: #{$custom2-accent}; --custom2-brown-text: #{$custom2-brown-text}; --custom2-white: #{$custom2-white}; + --custom2-tab-icon: #{$custom2-tab-icon}; + --custom2-carousel-control: #{$custom2-carousel-control}; // Custom Theme 3 --custom3-background-grey: #{$custom3-background-grey}; @@ -162,6 +179,8 @@ $custom5-white: #ffffff; --custom3-accent: #{$custom3-accent}; --custom3-brown-text: #{$custom3-brown-text}; --custom3-white: #{$custom3-white}; + --custom3-tab-icon: #{$custom3-tab-icon}; + --custom3-carousel-control: #{$custom3-carousel-control}; // Custom Theme 4 --custom4-background-grey: #{$custom4-background-grey}; @@ -175,6 +194,8 @@ $custom5-white: #ffffff; --custom4-accent: #{$custom4-accent}; --custom4-brown-text: #{$custom4-brown-text}; --custom4-white: #{$custom4-white}; + --custom4-tab-icon: #{$custom4-tab-icon}; + --custom4-carousel-control: #{$custom4-carousel-control}; // Custom Theme 5 --custom5-background-grey: #{$custom5-background-grey}; @@ -188,6 +209,8 @@ $custom5-white: #ffffff; --custom5-accent: #{$custom5-accent}; --custom5-brown-text: #{$custom5-brown-text}; --custom5-white: #{$custom5-white}; + --custom5-tab-icon: #{$custom5-tab-icon}; + --custom5-carousel-control: #{$custom5-carousel-control}; } // Theme Classes @@ -200,6 +223,8 @@ $custom5-white: #ffffff; --q-info: var(--custom1-info); --q-warning: var(--custom1-warning); --q-white: var(--custom1-white); + --q-tab-icon: var(--custom1-tab-icon); + --q-color-carousel-control: var(--custom1-carousel-control); background-color: var(--custom1-background-grey); color: var(--custom1-brown-text); @@ -211,12 +236,16 @@ $custom5-white: #ffffff; .q-tab-panels { background-color: var(--custom1-background-grey-2); } + .q-tab { background-color: var(--custom1-background-grey-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom1-secondary); } + .q-tab-icon{ + color: var(--custom1-tab-icon); + } .q-tab--active { background-color: darken($custom1-secondary, 2%); } @@ -224,6 +253,15 @@ $custom5-white: #ffffff; // border-left: 1px solid var(--custom1-secondary); // border-right: 1px solid var(--custom1-secondary); // } + .q-carousel { + &__navigation-icon, + &__arrow { + .q-btn, + .q-icon { + color: var(--custom1-carousel-control); + } + } + } .q-carousel__slide { background-color: var(--custom1-background-grey-2); } @@ -251,6 +289,8 @@ $custom5-white: #ffffff; --q-info: var(--custom2-info); --q-warning: var(--custom2-warning); --q-white: var(--custom2-white); + --q-tab-icon: var(--custom2-tab-icon); + --q-carousel-control: var(--custom2-carousel-control); background-color: var(--custom2-background-grey); color: var(--custom2-brown-text); @@ -271,6 +311,15 @@ $custom5-white: #ffffff; .q-tab--active { background-color: darken($custom2-secondary, 2%); } + .q-carousel { + &__navigation-icon, + &__arrow { + .q-btn, + .q-icon { + color: var(--custom2-carousel-control); + } + } + } .q-carousel__slide { background-color: var(--custom2-background-grey-2); } @@ -297,6 +346,8 @@ $custom5-white: #ffffff; --q-info: var(--custom3-info); --q-warning: var(--custom3-warning); --q-white: var(--custom3-white); + --q-tab-icon: var(--custom3-tab-icon); + --q-carousel-control: var(--custom3-carousel-control); background-color: var(--custom3-background-grey); color: var(--custom3-brown-text); @@ -317,6 +368,15 @@ $custom5-white: #ffffff; .q-tab--active { background-color: darken($custom3-secondary, 2%); } + .q-carousel { + &__navigation-icon, + &__arrow { + .q-btn, + .q-icon { + color: var(--custom3-carousel-control); + } + } + } .q-carousel__slide { background-color: var(--custom3-background-grey-2); } @@ -343,6 +403,8 @@ $custom5-white: #ffffff; --q-info: var(--custom4-info); --q-warning: var(--custom4-warning); --q-white: var(--custom4-white); + --q-tab-icon: var(--custom4-tab-icon); + --q-carousel-control: var(--custom4-carousel-control); background-color: var(--custom4-background-grey); color: var(--custom4-brown-text); @@ -363,6 +425,15 @@ $custom5-white: #ffffff; .q-tab--active { background-color: darken($custom4-secondary, 2%); } + .q-carousel { + &__navigation-icon, + &__arrow { + .q-btn, + .q-icon { + color: var(--custom4-carousel-control); + } + } + } .q-carousel__slide { background-color: var(--custom4-background-grey-2); } @@ -389,12 +460,21 @@ $custom5-white: #ffffff; --q-info: var(--custom5-info); --q-warning: var(--custom5-warning); --q-white: var(--custom5-white); + --q-tab-icon: var(--custom5-tab-icon); + --q-carousel-control: var(--custom5-carousel-control); background-color: var(--custom5-background-grey); color: var(--custom5-brown-text); .q-header { background-color: var(--custom5-background-grey-2); - color: var(--custom5-brown-text); + + } + html body.q-theme--custom5 { + color: var(--custom5-white); + } + + .q-theme--custom5 .q-layout { + background-color: var(--custom5-white); } .q-tab-panels { @@ -409,11 +489,39 @@ $custom5-white: #ffffff; .q-tab--active { background-color: darken($custom5-secondary, 10%); } + .q-carousel { + &__navigation-icon, + &__arrow { + .q-btn, + .q-icon { + color: var(--custom5-carousel-control); + } + } + } .q-carousel__slide { background-color: var(--custom5-background-grey-2); + color: var(--custom5-white) ; } .q-card { background-color: var(--custom5-secondary); + color: var(--custom5-white) ; + } + + .q-expansion-item__toggle-icon { + color: var(--custom5-white); + } + .q-field__label { + color: var(--custom5-white); + } + input { + color: var(--custom5-white); + } + + .q-placeholder { + color: var(--custom5-white); + } + .q-material-icons { + color: var(--custom5-white); } .q-list { background-color: var(--custom5-background-grey-2); @@ -425,3 +533,4 @@ $custom5-white: #ffffff; background-color: currentColor; } } + diff --git a/packages/modules/web_themes/standard/source/src/pages/TestPage.vue b/packages/modules/web_themes/standard/source/src/pages/TestPage.vue index 0bddf4cee5..07da44a004 100644 --- a/packages/modules/web_themes/standard/source/src/pages/TestPage.vue +++ b/packages/modules/web_themes/standard/source/src/pages/TestPage.vue @@ -8,13 +8,13 @@ - + - + From e3eec3e6e3d539e219eaef881c58e07765eaa632 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 27 Nov 2024 18:26:18 +0100 Subject: [PATCH 03/23] Formatting fixes --- .../source/src/components/BaseCarousel.vue | 2 +- .../src/components/BatteryModeButtons.vue | 1 - .../src/components/ChargePointModeButtons.vue | 7 +-- .../source/src/composables/useThemeManager.ts | 2 +- .../source/src/css/quasar.variables.scss | 56 ++++--------------- .../source/src/layouts/MainLayout.vue | 17 +++--- .../standard/source/src/pages/TestPage.vue | 4 +- 7 files changed, 25 insertions(+), 64 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue b/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue index 03adfc77b3..669c4e707e 100644 --- a/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue +++ b/packages/modules/web_themes/standard/source/src/components/BaseCarousel.vue @@ -3,7 +3,7 @@ v-model="currentSlide" swipeable :animated="animated" - control-color="primary" + control-color="primary" infinite padding :navigation="groupedItems.length > 1" diff --git a/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue b/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue index fee3e753cb..fe4ae812e2 100644 --- a/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue +++ b/packages/modules/web_themes/standard/source/src/components/BatteryModeButtons.vue @@ -6,7 +6,6 @@ :color="batMode.value === mode.value ? 'primary' : 'grey'" :label="mode.label" :icon="mode.icon" - size="sm" @click="batMode.value = mode.value" > diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue index f8d8841f58..34f6aa5094 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue @@ -1,18 +1,13 @@ diff --git a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts index 9ecdf8d974..334f3db20d 100644 --- a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts +++ b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts @@ -19,7 +19,7 @@ export function useThemeManager() { ); document.body.classList.add(`q-theme--${theme}`); - if (theme === 'dark' ) { + if (theme === 'dark') { $q.dark.set(true); } else { $q.dark.set(false); diff --git a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss index f152838429..9dbfd4da25 100644 --- a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss +++ b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss @@ -26,41 +26,9 @@ $negative: #c10015; $info: #31ccec; $warning: #f2c037; - ///////////////////////////////////////////////////////////////////// -// Define variables for your custom theme -// $custom1-background-grey: #f3f3f7; -// $custom1-background-grey-2: #eeeef3; -// $custom1-primary: #5c93d1; -// $custom1-secondary: #d2d2d7; - -// $custom1-positive: #66bd7a; -// $custom1-negative: #db4f5f; -// $custom1-info: #7dc5d4; -// $custom1-warning: #f7b267; - -// $custom1-accent: #b691bd; - -// $custom1-brown-text: #524f57; -// $custom1-white: #ffffff; - - -// Default Quasar variables remain unchanged at the top - -$primary: #1976d2; -$secondary: #26a69a; -$accent: #9c27b0; -$dark: #1d1d1d; -$dark-page: #121212; -$positive: #21ba45; -$negative: #c10015; -$info: #31ccec; -$warning: #f2c037; - - - -// Custom Theme 1 (existing) +// Custom Theme 1 (light) $custom1-background-grey: #eeeef3; $custom1-background-grey-2: #eeeef3; $custom1-primary: #5c93d1; @@ -75,8 +43,7 @@ $custom1-white: #ffffff; $custom1-tab-icon: #5c93d1; $custom1-carousel-control: #5c93d1; - -// Custom Theme 2 (Slate Grey) +// Custom Theme 2 $custom2-background-grey: #f7f8f9; $custom2-background-grey-2: #ebeef1; $custom2-primary: #445975; @@ -91,7 +58,7 @@ $custom2-white: #ffffff; $custom2-tab-icon: #445975; $custom2-carousel-control: #445975; -// Custom Theme 3 (Steel Blue) +// Custom Theme 3 $custom3-background-grey: #f8f9fb; $custom3-background-grey-2: #edf0f5; $custom3-primary: #4878b7; @@ -106,7 +73,7 @@ $custom3-white: #ffffff; $custom3-tab-icon: #4878b7; $custom3-carousel-control: #4878b7; -// Custom Theme 4 (Modern Grey) +// Custom Theme 4 $custom4-background-grey: #f5f6f8; $custom4-background-grey-2: #e8eaef; $custom4-primary: #556785; @@ -121,11 +88,11 @@ $custom4-white: #ffffff; $custom4-tab-icon: #556785; $custom4-carousel-control: #556785; -// Custom Theme 5 (Modern Grey) +// Custom Theme 5 (dark) $custom5-background-grey: #010322; $custom5-background-grey-2: #010322; $custom5-primary: #3874db; -$custom5-secondary: #28293D; +$custom5-secondary: #28293d; $custom5-positive: #3e8f5e; $custom5-negative: #c54d57; $custom5-info: #4b89aa; @@ -134,7 +101,7 @@ $custom5-accent: #7a7a9c; $custom5-brown-text: #2c3645; $custom5-white: #ffffff; $custom5-tab-icon: #ffffff; -$custom5-carousel-control: #FFFFFF; +$custom5-carousel-control: #8b8f9f; :root { // Custom Theme 1 @@ -243,7 +210,7 @@ $custom5-carousel-control: #FFFFFF; border-top-right-radius: 10px; border: 1px solid var(--custom1-secondary); } - .q-tab-icon{ + .q-tab-icon { color: var(--custom1-tab-icon); } .q-tab--active { @@ -277,7 +244,6 @@ $custom5-carousel-control: #FFFFFF; .q-toggle__inner--truthy .q-toggle__thumb:after { background-color: currentColor; } - } .q-theme--custom2 { @@ -467,7 +433,6 @@ $custom5-carousel-control: #FFFFFF; .q-header { background-color: var(--custom5-background-grey-2); - } html body.q-theme--custom5 { color: var(--custom5-white); @@ -500,11 +465,11 @@ $custom5-carousel-control: #FFFFFF; } .q-carousel__slide { background-color: var(--custom5-background-grey-2); - color: var(--custom5-white) ; + color: var(--custom5-white); } .q-card { background-color: var(--custom5-secondary); - color: var(--custom5-white) ; + color: var(--custom5-white); } .q-expansion-item__toggle-icon { @@ -533,4 +498,3 @@ $custom5-carousel-control: #FFFFFF; background-color: currentColor; } } - diff --git a/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue b/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue index 00ad143b5c..3f44f563a1 100644 --- a/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue +++ b/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue @@ -3,12 +3,7 @@ openWB - + @@ -20,7 +15,15 @@ - + - + From a4ad625b71216d67c4cd08837ee962d88810e425 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Thu, 28 Nov 2024 12:51:06 +0100 Subject: [PATCH 04/23] Prevent settings menu jutting out (right side of centered page by width > 1000px) --- .../standard/source/src/layouts/MainLayout.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue b/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue index 3f44f563a1..da33efa968 100644 --- a/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue +++ b/packages/modules/web_themes/standard/source/src/layouts/MainLayout.vue @@ -4,7 +4,7 @@ openWB - + Konfiguration @@ -12,7 +12,7 @@ Darstellung - + @@ -66,5 +64,9 @@ const { currentTheme, setTheme } = useThemeManager(); max-width: 1000px; margin-left: auto; margin-right: auto; + position: relative; +} +.q-page-container { + padding-top: 0 !important; } From a75630e5a512113b26b10b640cfbd4cb570d6fbc Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Mon, 2 Dec 2024 10:21:16 +0100 Subject: [PATCH 05/23] Refine custom themes CSS and colors --- .../ChargePointScheduledPlanDetails.vue | 8 +- .../ChargePointScheduledPlanHeader.vue | 12 +- .../ChargePointScheduledSettings.vue | 4 +- .../source/src/css/quasar.variables.scss | 112 ++++++++++++++++-- 4 files changed, 113 insertions(+), 23 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue index 797658a22c..301dd5bc31 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue @@ -34,14 +34,14 @@ :color="planLimitSelected.value === 'soc' ? 'primary' : 'grey'" @click="planLimitSelected.value = 'soc'" label="SoC" - text-color="$custom1-brown-text" + />
@@ -77,21 +77,18 @@ :color="planFrequency.value === 'once' ? 'primary' : 'grey'" @click="planFrequency.value = 'once'" label="Einmalig" - text-color="$custom1-brown-text" /> @@ -157,7 +154,6 @@ size="sm" icon="delete" :color="'primary'" - text-color="$custom1-brown-text" label="Löschen" @click="deletePlan(props.chargePointId, props.plan.id)" /> diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue index 5343c3dfab..1acd36821c 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue @@ -13,8 +13,9 @@ " size="sm" class="q-mr-xs" + color="white" /> -
+
{{ plan.frequency.selected === 'daily' ? 'täglich' @@ -25,17 +26,18 @@ : 'einmalig' }}
- -
{{ plan.time }}
+ +
{{ plan.time }}
-
+
{{ plan.limit.soc_scheduled }}%
-
+
{{ plan.limit.amount ? plan.limit.amount / 1000 : '' }}kWh
diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledSettings.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledSettings.vue index 079ed8dd65..460dece0da 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledSettings.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledSettings.vue @@ -55,10 +55,10 @@ const plans = computed(() => border-radius: 10px; } .active-border { - border: 2px solid var(--q-positive); + border: 4px solid var(--q-positive); } .inactive-border { - border: 2px solid var(--q-primary); + border: 4px solid var(--q-negative); } :deep(.q-expansion-item__container) .q-item { padding: 6px 6px; diff --git a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss index 9dbfd4da25..ce2f7387fa 100644 --- a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss +++ b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss @@ -29,7 +29,7 @@ $warning: #f2c037; ///////////////////////////////////////////////////////////////////// // Custom Theme 1 (light) -$custom1-background-grey: #eeeef3; +$custom1-background-grey: #e3e3ec; $custom1-background-grey-2: #eeeef3; $custom1-primary: #5c93d1; $custom1-secondary: #d2d2d7; @@ -89,7 +89,7 @@ $custom4-tab-icon: #556785; $custom4-carousel-control: #556785; // Custom Theme 5 (dark) -$custom5-background-grey: #010322; +$custom5-background-grey: #030627; $custom5-background-grey-2: #010322; $custom5-primary: #3874db; $custom5-secondary: #28293d; @@ -102,6 +102,7 @@ $custom5-brown-text: #2c3645; $custom5-white: #ffffff; $custom5-tab-icon: #ffffff; $custom5-carousel-control: #8b8f9f; +$custom5-list: #3c3e5c; :root { // Custom Theme 1 @@ -178,6 +179,7 @@ $custom5-carousel-control: #8b8f9f; --custom5-white: #{$custom5-white}; --custom5-tab-icon: #{$custom5-tab-icon}; --custom5-carousel-control: #{$custom5-carousel-control}; + --custom5-list: #{$custom5-list}; } // Theme Classes @@ -229,12 +231,31 @@ $custom5-carousel-control: #8b8f9f; } } } + .q-carousel__control { + .q-btn { + &:before { + box-shadow: none; + } + .q-icon { + color: var(--custom1-carousel-control); + + &:before { + color: var(--custom1-carousel-control); + box-shadow: none; + } + } + } + } .q-carousel__slide { background-color: var(--custom1-background-grey-2); } .q-card { background-color: var(--custom1-secondary); } + .q-expansion-item__toggle-icon { + color: var(--custom1-white); + } + .q-list { background-color: var(--custom1-background-grey-2); } @@ -286,6 +307,21 @@ $custom5-carousel-control: #8b8f9f; } } } + .q-carousel__control { + .q-btn { + &:before { + box-shadow: none; + } + .q-icon { + color: var(--custom2-carousel-control); + + &:before { + color: var(--custom2-carousel-control); + box-shadow: none; + } + } + } + } .q-carousel__slide { background-color: var(--custom2-background-grey-2); } @@ -343,6 +379,21 @@ $custom5-carousel-control: #8b8f9f; } } } + .q-carousel__control { + .q-btn { + &:before { + box-shadow: none; + } + .q-icon { + color: var(--custom3-carousel-control); + + &:before { + color: var(--custom3-carousel-control); + box-shadow: none; + } + } + } + } .q-carousel__slide { background-color: var(--custom3-background-grey-2); } @@ -400,6 +451,21 @@ $custom5-carousel-control: #8b8f9f; } } } + .q-carousel__control { + .q-btn { + &:before { + box-shadow: none; + } + .q-icon { + color: var(--custom4-carousel-control); + + &:before { + color: var(--custom4-carousel-control); + box-shadow: none; + } + } + } + } .q-carousel__slide { background-color: var(--custom4-background-grey-2); } @@ -434,13 +500,13 @@ $custom5-carousel-control: #8b8f9f; .q-header { background-color: var(--custom5-background-grey-2); } - html body.q-theme--custom5 { - color: var(--custom5-white); - } + // html body.q-theme--custom5 { + // color: var(--custom5-white); + // } - .q-theme--custom5 .q-layout { - background-color: var(--custom5-white); - } + // .q-theme--custom5 .q-layout { + // background-color: var(--custom5-white); + // } .q-tab-panels { background-color: var(--custom5-background-grey-2); @@ -452,7 +518,7 @@ $custom5-carousel-control: #8b8f9f; border: 1px solid var(--custom5-secondary); } .q-tab--active { - background-color: darken($custom5-secondary, 10%); + background-color: lighten($custom5-secondary, 10%); } .q-carousel { &__navigation-icon, @@ -463,6 +529,21 @@ $custom5-carousel-control: #8b8f9f; } } } + .q-carousel__control { + .q-btn { + &:before { + box-shadow: none; + } + .q-icon { + color: var(--custom5-carousel-control); + + &:before { + color: var(--custom5-carousel-control); + box-shadow: none; + } + } + } + } .q-carousel__slide { background-color: var(--custom5-background-grey-2); color: var(--custom5-white); @@ -471,6 +552,11 @@ $custom5-carousel-control: #8b8f9f; background-color: var(--custom5-secondary); color: var(--custom5-white); } + .q-menu { + .q-item__section { + color: var(--custom5-white) !important; + } + } .q-expansion-item__toggle-icon { color: var(--custom5-white); @@ -478,6 +564,12 @@ $custom5-carousel-control: #8b8f9f; .q-field__label { color: var(--custom5-white); } + .q-field__control { + .q-field__native::-webkit-calendar-picker-indicator { + filter: invert(1); + } + } + input { color: var(--custom5-white); } @@ -489,7 +581,7 @@ $custom5-carousel-control: #8b8f9f; color: var(--custom5-white); } .q-list { - background-color: var(--custom5-background-grey-2); + background-color: var(--custom5-list); } .q-toggle__thumb:after { background: #e0e0e0; From edbc9dda80d4d6bf9cfcba13d4bda71030977ffc Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Mon, 2 Dec 2024 14:21:25 +0100 Subject: [PATCH 06/23] Theme CSS cleanup / metadata --- .../source/src/composables/useThemeManager.ts | 2 +- .../source/src/css/quasar.variables.scss | 290 +++++++++--------- 2 files changed, 144 insertions(+), 148 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts index 334f3db20d..cede57be2e 100644 --- a/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts +++ b/packages/modules/web_themes/standard/source/src/composables/useThemeManager.ts @@ -3,7 +3,7 @@ import { useQuasar } from 'quasar'; export function useThemeManager() { const $q = useQuasar(); - const currentTheme = ref('custom'); // Default theme + const currentTheme = ref('custom1'); // Default theme const setTheme = (theme: string) => { currentTheme.value = theme; diff --git a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss index ce2f7387fa..4b91d5098e 100644 --- a/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss +++ b/packages/modules/web_themes/standard/source/src/css/quasar.variables.scss @@ -29,8 +29,8 @@ $warning: #f2c037; ///////////////////////////////////////////////////////////////////// // Custom Theme 1 (light) -$custom1-background-grey: #e3e3ec; -$custom1-background-grey-2: #eeeef3; +$custom1-background-1: #e3e3ec; +$custom1-background-2: #eeeef3; $custom1-primary: #5c93d1; $custom1-secondary: #d2d2d7; $custom1-positive: #66bd7a; @@ -42,10 +42,11 @@ $custom1-brown-text: #524f57; $custom1-white: #ffffff; $custom1-tab-icon: #5c93d1; $custom1-carousel-control: #5c93d1; +$custom1-toggle-off-position: #e0e0e0; // Custom Theme 2 -$custom2-background-grey: #f7f8f9; -$custom2-background-grey-2: #ebeef1; +$custom2-background-1: #f7f8f9; +$custom2-background-2: #ebeef1; $custom2-primary: #445975; $custom2-secondary: #d5dae0; $custom2-positive: #427a5b; @@ -57,10 +58,11 @@ $custom2-brown-text: #2b3541; $custom2-white: #ffffff; $custom2-tab-icon: #445975; $custom2-carousel-control: #445975; +$custom2-toggle-off-position: #e0e0e0; // Custom Theme 3 -$custom3-background-grey: #f8f9fb; -$custom3-background-grey-2: #edf0f5; +$custom3-background-1: #f8f9fb; +$custom3-background-2: #edf0f5; $custom3-primary: #4878b7; $custom3-secondary: #d8dde6; $custom3-positive: #50a567; @@ -72,10 +74,11 @@ $custom3-brown-text: #2d3748; $custom3-white: #ffffff; $custom3-tab-icon: #4878b7; $custom3-carousel-control: #4878b7; +$custom3-toggle-off-position: #e0e0e0; // Custom Theme 4 -$custom4-background-grey: #f5f6f8; -$custom4-background-grey-2: #e8eaef; +$custom4-background-1: #f5f6f8; +$custom4-background-2: #e8eaef; $custom4-primary: #556785; $custom4-secondary: #cfd5de; $custom4-positive: #3e8f5e; @@ -87,10 +90,11 @@ $custom4-brown-text: #2c3645; $custom4-white: #ffffff; $custom4-tab-icon: #556785; $custom4-carousel-control: #556785; +$custom4-toggle-off-position: #e0e0e0; // Custom Theme 5 (dark) -$custom5-background-grey: #030627; -$custom5-background-grey-2: #010322; +$custom5-background-1: #030627; +$custom5-background-2: #010322; $custom5-primary: #3874db; $custom5-secondary: #28293d; $custom5-positive: #3e8f5e; @@ -102,12 +106,13 @@ $custom5-brown-text: #2c3645; $custom5-white: #ffffff; $custom5-tab-icon: #ffffff; $custom5-carousel-control: #8b8f9f; +$custom5-toggle-off-position: #e0e0e0; $custom5-list: #3c3e5c; :root { // Custom Theme 1 - --custom1-background-grey: #{$custom1-background-grey}; - --custom1-background-grey-2: #{$custom1-background-grey-2}; + --custom1-background-1: #{$custom1-background-1}; + --custom1-background-2: #{$custom1-background-2}; --custom1-primary: #{$custom1-primary}; --custom1-secondary: #{$custom1-secondary}; --custom1-positive: #{$custom1-positive}; @@ -119,10 +124,11 @@ $custom5-list: #3c3e5c; --custom1-white: #{$custom1-white}; --custom1-tab-icon: #{$custom1-tab-icon}; --custom1-carousel-control: #{$custom1-carousel-control}; + --custom1-toggle-off-position: #{$custom1-toggle-off-position}; // Custom Theme 2 - --custom2-background-grey: #{$custom2-background-grey}; - --custom2-background-grey-2: #{$custom2-background-grey-2}; + --custom2-background-1: #{$custom2-background-1}; + --custom2-background-2: #{$custom2-background-2}; --custom2-primary: #{$custom2-primary}; --custom2-secondary: #{$custom2-secondary}; --custom2-positive: #{$custom2-positive}; @@ -134,10 +140,11 @@ $custom5-list: #3c3e5c; --custom2-white: #{$custom2-white}; --custom2-tab-icon: #{$custom2-tab-icon}; --custom2-carousel-control: #{$custom2-carousel-control}; + --custom2-toggle-off-position: #{$custom2-toggle-off-position}; // Custom Theme 3 - --custom3-background-grey: #{$custom3-background-grey}; - --custom3-background-grey-2: #{$custom3-background-grey-2}; + --custom3-background-1: #{$custom3-background-1}; + --custom3-background-2: #{$custom3-background-2}; --custom3-primary: #{$custom3-primary}; --custom3-secondary: #{$custom3-secondary}; --custom3-positive: #{$custom3-positive}; @@ -149,10 +156,11 @@ $custom5-list: #3c3e5c; --custom3-white: #{$custom3-white}; --custom3-tab-icon: #{$custom3-tab-icon}; --custom3-carousel-control: #{$custom3-carousel-control}; + --custom3-toggle-off-position: #{$custom3-toggle-off-position}; // Custom Theme 4 - --custom4-background-grey: #{$custom4-background-grey}; - --custom4-background-grey-2: #{$custom4-background-grey-2}; + --custom4-background-1: #{$custom4-background-1}; + --custom4-background-2: #{$custom4-background-2}; --custom4-primary: #{$custom4-primary}; --custom4-secondary: #{$custom4-secondary}; --custom4-positive: #{$custom4-positive}; @@ -164,10 +172,11 @@ $custom5-list: #3c3e5c; --custom4-white: #{$custom4-white}; --custom4-tab-icon: #{$custom4-tab-icon}; --custom4-carousel-control: #{$custom4-carousel-control}; + --custom4-toggle-off-position: #{$custom4-toggle-off-position}; // Custom Theme 5 - --custom5-background-grey: #{$custom5-background-grey}; - --custom5-background-grey-2: #{$custom5-background-grey-2}; + --custom5-background-1: #{$custom5-background-1}; + --custom5-background-2: #{$custom5-background-2}; --custom5-primary: #{$custom5-primary}; --custom5-secondary: #{$custom5-secondary}; --custom5-positive: #{$custom5-positive}; @@ -180,6 +189,7 @@ $custom5-list: #3c3e5c; --custom5-tab-icon: #{$custom5-tab-icon}; --custom5-carousel-control: #{$custom5-carousel-control}; --custom5-list: #{$custom5-list}; + --custom5-toggle-off-position: #{$custom5-toggle-off-position}; } // Theme Classes @@ -194,76 +204,74 @@ $custom5-list: #3c3e5c; --q-white: var(--custom1-white); --q-tab-icon: var(--custom1-tab-icon); --q-color-carousel-control: var(--custom1-carousel-control); - background-color: var(--custom1-background-grey); + background-color: var(--custom1-background-1); + // text color color: var(--custom1-brown-text); + //header colors .q-header { - background-color: var(--custom1-background-grey-2); + background-color: var(--custom1-background-2); color: var(--custom1-brown-text); } - + //Tab panel background .q-tab-panels { - background-color: var(--custom1-background-grey-2); + background-color: var(--custom1-background-2); } - + //Tab CSS .q-tab { - background-color: var(--custom1-background-grey-2); + background-color: var(--custom1-background-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom1-secondary); } + // Tab icon color .q-tab-icon { color: var(--custom1-tab-icon); } + // Tab active background color .q-tab--active { background-color: darken($custom1-secondary, 2%); } - // .q-tab-panels { - // border-left: 1px solid var(--custom1-secondary); - // border-right: 1px solid var(--custom1-secondary); - // } - .q-carousel { - &__navigation-icon, - &__arrow { - .q-btn, - .q-icon { - color: var(--custom1-carousel-control); - } - } - } + + // Carousel control arrows and buttons .q-carousel__control { .q-btn { &:before { - box-shadow: none; + box-shadow: none; // Full screen button remove shadow } .q-icon { color: var(--custom1-carousel-control); &:before { - color: var(--custom1-carousel-control); + color: var(--custom1-carousel-control); // Full screen button color box-shadow: none; } } } } + // Slide container background .q-carousel__slide { - background-color: var(--custom1-background-grey-2); + background-color: var(--custom1-background-2); } + //Slide background .q-card { background-color: var(--custom1-secondary); } + //Expansion item (expand arrow) .q-expansion-item__toggle-icon { color: var(--custom1-white); } - + //List background color, for menus etc... .q-list { - background-color: var(--custom1-background-grey-2); + background-color: var(--custom1-background-2); } + //Toggle button color in off position .q-toggle__thumb:after { - background: #e0e0e0; + background: var(--custom1-toggle-off-position); } + //Toggle button color in on position .q-toggle__inner--truthy .q-toggle__thumb:after { - background-color: currentColor; + background-color: currentColor; // current primary color } } @@ -278,62 +286,62 @@ $custom5-list: #3c3e5c; --q-white: var(--custom2-white); --q-tab-icon: var(--custom2-tab-icon); --q-carousel-control: var(--custom2-carousel-control); - background-color: var(--custom2-background-grey); + background-color: var(--custom2-background-1); + // text color color: var(--custom2-brown-text); - + //header colors .q-header { - background-color: var(--custom2-background-grey-2); + background-color: var(--custom2-background-2); color: var(--custom2-brown-text); } - + //Tab panel background .q-tab-panels { - background-color: var(--custom2-background-grey-2); + background-color: var(--custom2-background-2); } + //Tab CSS .q-tab { - background-color: var(--custom2-background-grey-2); + background-color: var(--custom2-background-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom2-secondary); } + // Tab active background color .q-tab--active { background-color: darken($custom2-secondary, 2%); } - .q-carousel { - &__navigation-icon, - &__arrow { - .q-btn, - .q-icon { - color: var(--custom2-carousel-control); - } - } - } + // Carousel control arrows and buttons .q-carousel__control { .q-btn { &:before { - box-shadow: none; + box-shadow: none; // Full screen button remove shadow } .q-icon { color: var(--custom2-carousel-control); &:before { - color: var(--custom2-carousel-control); + color: var(--custom2-carousel-control); // Full screen button color box-shadow: none; } } } } + // Slide container background .q-carousel__slide { - background-color: var(--custom2-background-grey-2); + background-color: var(--custom2-background-2); } + //Slide background .q-card { background-color: var(--custom2-secondary); } + //List background color, for menus etc... .q-list { - background-color: var(--custom2-background-grey-2); + background-color: var(--custom2-background-2); } + //Toggle button color in off position .q-toggle__thumb:after { - background: #e0e0e0; + background: var(--custom2-toggle-off-position); } + //Toggle button color in on position .q-toggle__inner--truthy .q-toggle__thumb:after { background-color: currentColor; } @@ -350,62 +358,62 @@ $custom5-list: #3c3e5c; --q-white: var(--custom3-white); --q-tab-icon: var(--custom3-tab-icon); --q-carousel-control: var(--custom3-carousel-control); - background-color: var(--custom3-background-grey); + background-color: var(--custom3-background-1); + // text color color: var(--custom3-brown-text); - + //header colors .q-header { - background-color: var(--custom3-background-grey-2); - color: var(--custom3-brown-text); + background-color: var(--custom3-background-2); + color: var(--custom3-brown-text); //text } - + //Tab panel background .q-tab-panels { - background-color: var(--custom3-background-grey-2); + background-color: var(--custom3-background-2); } + //Tab CSS .q-tab { - background-color: var(--custom3-background-grey-2); + background-color: var(--custom3-background-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom3-secondary); } + // Tab active background color .q-tab--active { background-color: darken($custom3-secondary, 2%); } - .q-carousel { - &__navigation-icon, - &__arrow { - .q-btn, - .q-icon { - color: var(--custom3-carousel-control); - } - } - } + // Carousel control arrows and buttons .q-carousel__control { .q-btn { &:before { - box-shadow: none; + box-shadow: none; // Full screen button remove shadow } .q-icon { color: var(--custom3-carousel-control); &:before { - color: var(--custom3-carousel-control); + color: var(--custom3-carousel-control); // Full screen button color box-shadow: none; } } } } + // Slide container background .q-carousel__slide { - background-color: var(--custom3-background-grey-2); + background-color: var(--custom3-background-2); } + //Slide background .q-card { background-color: var(--custom3-secondary); } + //List background color, for menus etc... .q-list { - background-color: var(--custom3-background-grey-2); + background-color: var(--custom3-background-2); } + //Toggle button color in off position .q-toggle__thumb:after { - background: #e0e0e0; + background: var(--custom3-toggle-off-position); } + //Toggle button color in on position .q-toggle__inner--truthy .q-toggle__thumb:after { background-color: currentColor; } @@ -422,62 +430,62 @@ $custom5-list: #3c3e5c; --q-white: var(--custom4-white); --q-tab-icon: var(--custom4-tab-icon); --q-carousel-control: var(--custom4-carousel-control); - background-color: var(--custom4-background-grey); + background-color: var(--custom4-background-1); + // text color color: var(--custom4-brown-text); - + //header colors .q-header { - background-color: var(--custom4-background-grey-2); + background-color: var(--custom4-background-2); color: var(--custom4-brown-text); } - + //Tab panel background .q-tab-panels { - background-color: var(--custom4-background-grey-2); + background-color: var(--custom4-background-2); } + //Tab CSS .q-tab { - background-color: var(--custom4-background-grey-2); + background-color: var(--custom4-background-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom4-secondary); } + // Tab active background color .q-tab--active { background-color: darken($custom4-secondary, 2%); } - .q-carousel { - &__navigation-icon, - &__arrow { - .q-btn, - .q-icon { - color: var(--custom4-carousel-control); - } - } - } + // Carousel control arrows and buttons .q-carousel__control { .q-btn { &:before { - box-shadow: none; + box-shadow: none; // Full screen button remove shadow } .q-icon { color: var(--custom4-carousel-control); &:before { - color: var(--custom4-carousel-control); + color: var(--custom4-carousel-control); // Full screen button color box-shadow: none; } } } } + // Slide container background .q-carousel__slide { - background-color: var(--custom4-background-grey-2); + background-color: var(--custom4-background-2); } + //Slide background .q-card { background-color: var(--custom4-secondary); } + //List background color, for menus etc... .q-list { - background-color: var(--custom4-background-grey-2); + background-color: var(--custom4-background-2); } + //Toggle button color in off position .q-toggle__thumb:after { - background: #e0e0e0; + background: var(--custom4-toggle-off-position); } + //Toggle button color in on position .q-toggle__inner--truthy .q-toggle__thumb:after { background-color: currentColor; } @@ -494,25 +502,20 @@ $custom5-list: #3c3e5c; --q-white: var(--custom5-white); --q-tab-icon: var(--custom5-tab-icon); --q-carousel-control: var(--custom5-carousel-control); - background-color: var(--custom5-background-grey); + background-color: var(--custom5-background-1); + //Text color color: var(--custom5-brown-text); - + //Header background color .q-header { - background-color: var(--custom5-background-grey-2); + background-color: var(--custom5-background-2); } - // html body.q-theme--custom5 { - // color: var(--custom5-white); - // } - - // .q-theme--custom5 .q-layout { - // background-color: var(--custom5-white); - // } - + //Tab panel background .q-tab-panels { - background-color: var(--custom5-background-grey-2); + background-color: var(--custom5-background-2); } + //Tab CSS .q-tab { - background-color: var(--custom5-background-grey-2); + background-color: var(--custom5-background-2); border-top-left-radius: 10px; border-top-right-radius: 10px; border: 1px solid var(--custom5-secondary); @@ -520,72 +523,65 @@ $custom5-list: #3c3e5c; .q-tab--active { background-color: lighten($custom5-secondary, 10%); } - .q-carousel { - &__navigation-icon, - &__arrow { - .q-btn, - .q-icon { - color: var(--custom5-carousel-control); - } - } - } + // Carousel control arrows and buttons .q-carousel__control { .q-btn { &:before { - box-shadow: none; + box-shadow: none; // Full screen button remove shadow } .q-icon { color: var(--custom5-carousel-control); &:before { - color: var(--custom5-carousel-control); + color: var(--custom5-carousel-control); // Full screen button color box-shadow: none; } } } } + // Slide container background .q-carousel__slide { - background-color: var(--custom5-background-grey-2); + background-color: var(--custom5-background-2); color: var(--custom5-white); } + //Slide background .q-card { background-color: var(--custom5-secondary); color: var(--custom5-white); } - .q-menu { - .q-item__section { - color: var(--custom5-white) !important; - } - } - + //Expansion item (expand arrow) .q-expansion-item__toggle-icon { color: var(--custom5-white); } + //Input field text label color .q-field__label { color: var(--custom5-white); } + //Input field icon color .q-field__control { .q-field__native::-webkit-calendar-picker-indicator { filter: invert(1); } } - - input { - color: var(--custom5-white); - } - + //Input field placeholder text color .q-placeholder { color: var(--custom5-white); } - .q-material-icons { - color: var(--custom5-white); - } + //List background color, for menus etc... .q-list { background-color: var(--custom5-list); } + //Menu text color + .q-menu { + .q-item__section { + color: var(--custom5-white) !important; + } + } + //Toggle button color in off position .q-toggle__thumb:after { - background: #e0e0e0; + background: var(--custom5-toggle-off-position); } + //Toggle button color in on position .q-toggle__inner--truthy .q-toggle__thumb:after { background-color: currentColor; } From 038940996badcbf42e3578cfac3953788602172f Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Tue, 3 Dec 2024 15:26:47 +0100 Subject: [PATCH 07/23] Make devServer available on local WiFi network to view on mobile devices --- packages/modules/web_themes/standard/source/quasar.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modules/web_themes/standard/source/quasar.config.ts b/packages/modules/web_themes/standard/source/quasar.config.ts index 1d3860cd60..446dd671e5 100644 --- a/packages/modules/web_themes/standard/source/quasar.config.ts +++ b/packages/modules/web_themes/standard/source/quasar.config.ts @@ -17,7 +17,6 @@ export default configure((/* ctx */) => { // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css css: ['app.scss'], - cssAddon: true, // https://github.com/quasarframework/quasar/tree/dev/extras extras: [ @@ -79,9 +78,10 @@ export default configure((/* ctx */) => { devServer: { // https: true open: true, // opens browser window automatically + host: '0.0.0.0', // Allow external access proxy: { '/ws': { - target: 'ws://localhost:9001', + target: 'ws://0.0.0.0:9001', // Changed from localhost ws: true, }, }, From d3ca39b348541e9cee248cb8f22b552eaafb5b5c Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Tue, 3 Dec 2024 16:19:38 +0100 Subject: [PATCH 08/23] Fix Set function and nomenclature --- .../source/src/components/ChargePoint.vue | 4 +-- .../ChargePointScheduledPlanDetails.vue | 22 ++++----------- .../ChargePointScheduledPlanHeader.vue | 28 ++++++++++++------- .../source/src/components/SliderDouble.vue | 1 - .../source/src/css/quasar.variables.scss | 13 +++++---- .../standard/source/src/stores/mqtt-store.ts | 6 ++-- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePoint.vue b/packages/modules/web_themes/standard/source/src/components/ChargePoint.vue index 0e199454ac..b6f4032176 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePoint.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePoint.vue @@ -46,7 +46,7 @@ :readonly="true" :connected-vehicle-soc="connectedVehicleSoc" :target-soc="targetSoc" - :target-time="targeTime" + :target-time="targetTime" /> @@ -105,7 +105,7 @@ const targetSoc = computed( mqttStore.vehicleScheduledChargingTarget(props.chargePointId).value?.soc, ); -const targeTime = computed(() => { +const targetTime = computed(() => { const target = mqttStore.vehicleScheduledChargingTarget( props.chargePointId, ).value; diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue index 301dd5bc31..7d02eed62a 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue @@ -6,11 +6,7 @@
Aktiv
- +
@@ -179,22 +173,18 @@ const mqttStore = useMqttStore(); const weekDays = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; -const togglePlanActive = computed({ +const planActive = computed({ get() { - return mqttStore.vehicleToggleScheduledChargingPlanActive( + return mqttStore.vehicleScheduledChargingPlanActive( props.chargePointId, props.plan.id, ).value; }, - set() { - const currentValue = mqttStore.vehicleToggleScheduledChargingPlanActive( + set(newValue: boolean) { + mqttStore.vehicleScheduledChargingPlanActive( props.chargePointId, props.plan.id, - ).value; - mqttStore.vehicleToggleScheduledChargingPlanActive( - props.chargePointId, - props.plan.id, - ).value = !currentValue; + ).value = newValue; }, }); diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue index 1acd36821c..28ad53f7a2 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanHeader.vue @@ -2,7 +2,7 @@
-
+
-
+
{{ plan.frequency.selected === 'daily' ? 'täglich' @@ -26,18 +26,26 @@ : 'einmalig' }}
- -
{{ plan.time }}
+ +
{{ plan.time }}
-
+
{{ plan.limit.soc_scheduled }}%
-
+
{{ plan.limit.amount ? plan.limit.amount / 1000 : '' }}kWh
@@ -56,19 +64,19 @@ const props = defineProps<{ const mqttStore = useMqttStore(); -const togglePlanActive = computed({ +const planActive = computed({ get() { - return mqttStore.vehicleToggleScheduledChargingPlanActive( + return mqttStore.vehicleScheduledChargingPlanActive( props.chargePointId, props.plan.id, ).value; }, set() { - const currentValue = mqttStore.vehicleToggleScheduledChargingPlanActive( + const currentValue = mqttStore.vehicleScheduledChargingPlanActive( props.chargePointId, props.plan.id, ).value; - mqttStore.vehicleToggleScheduledChargingPlanActive( + mqttStore.vehicleScheduledChargingPlanActive( props.chargePointId, props.plan.id, ).value = !currentValue; diff --git a/packages/modules/web_themes/standard/source/src/components/SliderDouble.vue b/packages/modules/web_themes/standard/source/src/components/SliderDouble.vue index 2f8d7e3d52..7dae854acb 100644 --- a/packages/modules/web_themes/standard/source/src/components/SliderDouble.vue +++ b/packages/modules/web_themes/standard/source/src/components/SliderDouble.vue @@ -79,7 +79,6 @@ const props = defineProps({ const currentCharge = computed(() => props.connectedVehicleSoc); const targetCharge = computed(() => props.targetSoc); -import { ref } from 'vue'; From f161b4e7fab8c66ca5ed566acd334c13493f6c61 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Fri, 6 Dec 2024 11:19:14 +0100 Subject: [PATCH 11/23] Add custom charge mode button for mobile view --- .../src/components/ChargePointModeButtons.vue | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue index 34f6aa5094..bff837c3d0 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointModeButtons.vue @@ -1,5 +1,5 @@ + + From f642594c5070705858344cce83b2babff3d345e4 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Fri, 6 Dec 2024 11:20:31 +0100 Subject: [PATCH 12/23] Custom button styles for mobile view (larger buttons) --- .../components/ChargePointInstantSettings.vue | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointInstantSettings.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointInstantSettings.vue index 0dd53bdfa2..8e39f93bc7 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointInstantSettings.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointInstantSettings.vue @@ -82,3 +82,24 @@ const instantEnergy = computed(() => ), ); + + From d0eecd0bbb1376377208313807f5168ef58a7219 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Fri, 6 Dec 2024 11:22:46 +0100 Subject: [PATCH 13/23] Dropdown menu instead of toggles for weekday selection --- .../ChargePointScheduledPlanDetails.vue | 226 ++++++++++++------ 1 file changed, 152 insertions(+), 74 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue index 7d02eed62a..6cc899a6dc 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointScheduledPlanDetails.vue @@ -63,8 +63,8 @@ label="Ziel-Energy (kWh)" class="col" /> -
-
Wiederholungen
+ +
- - - -
- -
- - -
- -
-
+ + -
{{ day }}
- -
+ + + +
+ - -
-
-
{{ day }}
- -
+
+
+ +
Werktage:
+
+
+
{{ getSelectedWeekdaysText }}
+
+
+ +
Wochenendtag:
+
+
+
{{ getSelectedWeekendText }}
-
- -
+
+ +
+ +
+ +
+
@@ -161,7 +156,7 @@ import { useMqttStore } from 'src/stores/mqtt-store'; import SliderStandard from './SliderStandard.vue'; import ToggleStandard from './ToggleStandard.vue'; -import { computed } from 'vue'; +import { ref, computed, watch, inject } from 'vue'; import { type ScheduledChargingPlan } from '../stores/mqtt-store-model'; const props = defineProps<{ @@ -171,7 +166,58 @@ const props = defineProps<{ const mqttStore = useMqttStore(); -const weekDays = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; +const weeklyMenuOpen = ref(false); + +// Inject boolean value from the parent component +const isDialogScrolled = inject('isDialogScrolled', ref(false)); + +watch( + isDialogScrolled, + () => { + weeklyMenuOpen.value = false; + }, + { + immediate: true, + flush: 'sync', + }, +); + +const weekDays = [ + 'Montag', + 'Dienstag', + 'Mittwoch', + 'Donnerstag', + 'Freitag', + 'Samstag', + 'Sonntag', +]; + +const getSelectedWeekdaysText = computed(() => { + return weekDays + .slice(0, 5) + .filter((_, index) => selectedWeekDays.value[index]) + .join(', ') || 'Keine Werktage ausgewählt'; +}); + +const getSelectedWeekendText = computed(() => { + return weekDays + .slice(5) + .filter((_, index) => selectedWeekDays.value[index + 5]) + .join(', ') || 'Keine Wochenendtag ausgewählt'; +}); + +const showWeeklyMenu = (event: Event) => { + isDialogScrolled.value = false; + planFrequency.value.value = 'weekly'; + weeklyMenuOpen.value = !weeklyMenuOpen.value; + event.stopPropagation(); +}; + +const toggleDay = (index: number) => { + const newArray = [...selectedWeekDays.value]; + newArray[index] = !newArray[index]; + selectedWeekDays.value = newArray; +}; const planActive = computed({ get() { @@ -237,7 +283,7 @@ const planOnceDate = computed(() => ), ); -const selectedWeekDays = computed({ +const selectedWeekDays = computed({ get() { return ( mqttStore.vehicleScheduledChargingPlanWeeklyDays( @@ -271,3 +317,35 @@ const planSocScheduled = computed(() => const deletePlan = (chargePointId: number, planId: string) => mqttStore.vehicleDeleteScheduledChargingPlan(props.chargePointId, planId); + + From d3df6bacffcc97817356e03927bc98a300e20bf0 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Fri, 6 Dec 2024 11:30:28 +0100 Subject: [PATCH 14/23] Make settings dialog full screen in mobile view, pass scroll behavior to child component --- .../src/components/ChargePointSettings.vue | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/modules/web_themes/standard/source/src/components/ChargePointSettings.vue b/packages/modules/web_themes/standard/source/src/components/ChargePointSettings.vue index ae56ccfbdd..0352fa8389 100644 --- a/packages/modules/web_themes/standard/source/src/components/ChargePointSettings.vue +++ b/packages/modules/web_themes/standard/source/src/components/ChargePointSettings.vue @@ -1,12 +1,16 @@