{{ props.limitMode == 'soc' ? 'Ladeziel' : 'Energieziel' }}
diff --git a/packages/modules/web_themes/koala/source/src/components/models/base-table-models.ts b/packages/modules/web_themes/koala/source/src/components/models/base-table-models.ts
new file mode 100644
index 0000000000..cdb984c8d5
--- /dev/null
+++ b/packages/modules/web_themes/koala/source/src/components/models/base-table-models.ts
@@ -0,0 +1,4 @@
+export interface BaseRow {
+ id: string | number;
+ [key: string]: unknown;
+}
diff --git a/packages/modules/web_themes/koala/source/src/components/models/chargepoint-information-models.ts b/packages/modules/web_themes/koala/source/src/components/models/chargepoint-information-models.ts
new file mode 100644
index 0000000000..2677220552
--- /dev/null
+++ b/packages/modules/web_themes/koala/source/src/components/models/chargepoint-information-models.ts
@@ -0,0 +1,12 @@
+import { BaseRow } from './base-table-models';
+
+export interface ChargePointRow extends BaseRow {
+ id: number;
+ name: string | undefined;
+ vehicle: string;
+ plugged: string;
+ mode: string | undefined;
+ soc: string;
+ power: string | number | object | undefined;
+ charged: string | number | object | undefined;
+}
diff --git a/packages/modules/web_themes/koala/source/src/composables/useChargeModes.ts b/packages/modules/web_themes/koala/source/src/composables/useChargeModes.ts
new file mode 100644
index 0000000000..340cd59a79
--- /dev/null
+++ b/packages/modules/web_themes/koala/source/src/composables/useChargeModes.ts
@@ -0,0 +1,12 @@
+export const useChargeModes = () => {
+ const chargeModes = [
+ { value: 'instant_charging', label: 'Sofort', color: 'negative' },
+ { value: 'pv_charging', label: 'PV', color: 'positive' },
+ { value: 'scheduled_charging', label: 'Ziel', color: 'primary' },
+ { value: 'eco_charging', label: 'Eco', color: 'secondary' },
+ { value: 'stop', label: 'Stop', color: 'light' },
+ ];
+ return {
+ chargeModes,
+ };
+};
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 42a1018f06..001ade7642 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
@@ -131,6 +131,66 @@ $battery: #ba7128;
.q-toggle__inner--truthy .q-toggle__thumb:after {
background-color: currentColor;
}
+ // Search input border color for table view
+ .white-outline-input.q-field--outlined .q-field__control:before {
+ border-color: var(--q-white) !important;
+ }
+ // Table styling
+ .sticky-header-table {
+ /* height or max-height is important */
+ height: 310px;
+
+ .q-table__top,
+ .q-table__bottom,
+ thead tr:first-child th {
+ background-color: var(--q-primary);
+ color: var(--q-white);
+ font-size: 0.9rem;
+ }
+
+ thead tr th {
+ position: sticky;
+ z-index: 1;
+ }
+
+ thead tr:first-child th {
+ top: 0;
+ }
+
+ /* this is when the loading indicator appears */
+ &.q-table--loading thead tr:last-child th {
+ /* height of all previous header rows */
+ top: 48px;
+ }
+
+ /* prevent scrolling behind sticky top row on focus */
+ tbody {
+ /* height of all previous header rows */
+ scroll-margin-top: 48px;
+ background-color: var(--q-secondary);
+ color: var(--q-brown-text);
+ }
+
+ tbody tr,
+ .q-table__middle,
+ .q-table__grid-content
+ .q-virtual-scroll
+ .q-virtual-scroll--vertical
+ scroll {
+ background-color: var(--q-secondary);
+ }
+
+ tbody tr:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+ }
+
+ // Scrollbar styling for tables - Light Theme
+ .q-table__middle.q-virtual-scroll {
+ // Firefox
+ scrollbar-width: thin;
+ scrollbar-color: var(--q-primary) var(--q-secondary);
+ }
+ }
}
// Dark Theme Base Colors
$dark-page: #000000; // This overrides Quasar's default dark page color
@@ -262,4 +322,58 @@ $dark-tab-icon: #d7d9e0;
.q-toggle__inner--truthy .q-toggle__thumb:after {
background-color: currentColor;
}
+
+ // Table styling - Dark Theme
+ .sticky-header-table {
+ /* height or max-height is important */
+ height: 310px;
+
+ .q-table__top,
+ .q-table__bottom,
+ thead tr:first-child th {
+ background-color: var(--q-primary);
+ color: var(--q-white);
+ font-size: 0.9rem;
+ }
+
+ thead tr th {
+ position: sticky;
+ z-index: 1;
+ }
+
+ thead tr:first-child th {
+ top: 0;
+ }
+
+ /* this is when the loading indicator appears */
+ &.q-table--loading thead tr:last-child th {
+ /* height of all previous header rows */
+ top: 48px;
+ }
+
+ /* prevent scrolling behind sticky top row on focus */
+ tbody {
+ /* height of all previous header rows */
+ scroll-margin-top: 48px;
+ background-color: var(--q-secondary);
+ color: var(--q-white);
+ }
+
+ tbody tr,
+ .q-table__middle,
+ .q-table__grid-content {
+ background-color: var(--q-secondary);
+ }
+
+ tbody tr:hover {
+ background-color: rgba(255, 255, 255, 0.07);
+ }
+
+ // Scrollbar styling for tables - Dark Theme
+ .q-table__middle.q-virtual-scroll {
+ // Firefox
+ scrollbar-width: thin;
+ scrollbar-color: var(--q-primary) var(--q-secondary);
+ }
+ }
}
diff --git a/packages/modules/web_themes/koala/source/src/layouts/MainLayout.vue b/packages/modules/web_themes/koala/source/src/layouts/MainLayout.vue
index 38a52b867a..fee95d6b71 100644
--- a/packages/modules/web_themes/koala/source/src/layouts/MainLayout.vue
+++ b/packages/modules/web_themes/koala/source/src/layouts/MainLayout.vue
@@ -4,13 +4,6 @@
openWB
-
@@ -63,6 +56,61 @@
Einstellungen
+
+
+
+
Anzeigeeinstellungen
+
+
+
+
+
+
+
+ Darstellungsmodus
+
+
+
+
+
+ Hell
+
+
+ Dunkel
+
+
+ Systemeinstellung
+
+
+
+
@@ -75,7 +123,7 @@
diff --git a/packages/modules/web_themes/koala/source/src/stores/mqtt-store-model.ts b/packages/modules/web_themes/koala/source/src/stores/mqtt-store-model.ts
index b92fc357d3..f4fdddabaf 100644
--- a/packages/modules/web_themes/koala/source/src/stores/mqtt-store-model.ts
+++ b/packages/modules/web_themes/koala/source/src/stores/mqtt-store-model.ts
@@ -1,5 +1,7 @@
export interface ThemeConfiguration {
history_chart_range: number;
+ card_view_breakpoint: number;
+ table_search_input_field: boolean;
}
export interface ConnectionOptions {