From e1a0ed27c25f993463268993520e031bcbcd7193 Mon Sep 17 00:00:00 2001 From: OliveGerste Date: Thu, 8 Sep 2022 16:33:21 +0200 Subject: [PATCH 1/9] Added to prioritization settings to smart charging --- ...settings-sap-smart-charging.component.html | 53 ++++++++++++++++++ .../settings-sap-smart-charging.component.ts | 56 ++++++++++++++++++- src/app/types/Setting.ts | 4 ++ src/assets/i18n/cs.json | 6 +- src/assets/i18n/de.json | 6 +- src/assets/i18n/en.json | 6 +- src/assets/i18n/es.json | 6 +- src/assets/i18n/fr.json | 6 +- src/assets/i18n/it.json | 6 +- src/assets/i18n/pt.json | 6 +- 10 files changed, 147 insertions(+), 8 deletions(-) diff --git a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html index 9697f222b1..33bc073bbb 100644 --- a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html +++ b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html @@ -60,5 +60,58 @@

{{'settings.smart_charging.sap_smart_charging.title' | tr +
+
+
+ + {{'settings.smart_charging.sap_smart_charging.use_prioritization_parameters' | translate}} + +
+
+
+
+
+
+ + + + {{"general.error_min_value" | translate:{value: 1} }} + + + {{"general.error_max_value" | translate:{value: 20} }} + + +
+
+
+
+ + + + {{"general.error_min_value" | translate:{value: 1} }} + + + {{"general.error_max_value" | translate:{value: 100} }} + + +
+
+
+
+ + + + {{"general.error_min_value" | translate:{value: 1} }} + + + {{"general.error_max_value" | translate:{value: 100} }} + + +
+
+
diff --git a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts index 90f6979425..8716d22ab6 100644 --- a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts +++ b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts @@ -19,6 +19,10 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { public stickyLimitation!: AbstractControl; public limitBufferDC!: AbstractControl; public limitBufferAC!: AbstractControl; + public usePrioritizationParameters!: AbstractControl; + public defaultSessionTimeHours!: AbstractControl; + public defaultInitialStateOfCharge!: AbstractControl; + public defaultTargetStateOfCharge!: AbstractControl; public ngOnInit(): void { this.sapSmartCharging = new UntypedFormGroup({ @@ -43,6 +47,28 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { stickyLimitation: new UntypedFormControl(''), limitBufferDC: new UntypedFormControl(''), limitBufferAC: new UntypedFormControl(''), + usePrioritizationParameters: new UntypedFormControl(''), + defaultSessionTimeHours: new UntypedFormControl('', + Validators.compose([ + Validators.required, + Validators.min(1), + Validators.max(20), + ]) + ), + defaultInitialStateOfCharge: new UntypedFormControl('', + Validators.compose([ + Validators.required, + Validators.min(1), + Validators.max(100), + ]) + ), + defaultTargetStateOfCharge: new UntypedFormControl('', + Validators.compose([ + Validators.required, + Validators.min(1), + Validators.max(100), + ]) + ), }); // Add this.formGroup.addControl('sapSmartCharging', this.sapSmartCharging); @@ -53,12 +79,21 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { this.stickyLimitation = this.sapSmartCharging.controls['stickyLimitation']; this.limitBufferDC = this.sapSmartCharging.controls['limitBufferDC']; this.limitBufferAC = this.sapSmartCharging.controls['limitBufferAC']; + this.usePrioritizationParameters = this.sapSmartCharging.controls['usePrioritizationParameters']; + this.defaultSessionTimeHours = this.sapSmartCharging.controls['defaultSessionTimeHours']; + this.defaultInitialStateOfCharge = this.sapSmartCharging.controls['defaultInitialStateOfCharge']; + this.defaultTargetStateOfCharge = this.sapSmartCharging.controls['defaultTargetStateOfCharge']; // Set data this.updateFormData(); if (!this.stickyLimitation.value) { this.limitBufferDC.disable(); this.limitBufferAC.disable(); } + if (!this.usePrioritizationParameters.value) { + this.defaultSessionTimeHours.disable(); + this.defaultInitialStateOfCharge.disable(); + this.defaultTargetStateOfCharge.disable(); + } } public ngOnChanges() { @@ -75,6 +110,18 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { } } + public usePrioritizationParametersChanged() { + if (this.usePrioritizationParameters.value) { + this.defaultSessionTimeHours.enable(); + this.defaultInitialStateOfCharge.enable(); + this.defaultTargetStateOfCharge.enable(); + } else { + this.defaultSessionTimeHours.disable(); + this.defaultInitialStateOfCharge.disable(); + this.defaultTargetStateOfCharge.disable(); + } + } + public updateFormData() { // Set data if (this.smartChargingSettings && this.smartChargingSettings.sapSmartCharging && this.sapSmartCharging) { @@ -84,8 +131,15 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { this.stickyLimitation.setValue(this.smartChargingSettings.sapSmartCharging.stickyLimitation ? this.smartChargingSettings.sapSmartCharging.stickyLimitation : false); this.limitBufferDC.setValue(this.smartChargingSettings.sapSmartCharging.limitBufferDC ? this.smartChargingSettings.sapSmartCharging.limitBufferDC : 0); this.limitBufferAC.setValue(this.smartChargingSettings.sapSmartCharging.limitBufferAC ? this.smartChargingSettings.sapSmartCharging.limitBufferAC : 0); + this.usePrioritizationParameters.setValue(this.smartChargingSettings.sapSmartCharging.usePrioritizationParameters ? + this.smartChargingSettings.sapSmartCharging.usePrioritizationParameters : false); + this.defaultSessionTimeHours.setValue(this.smartChargingSettings.sapSmartCharging.defaultSessionTimeHours ? + this.smartChargingSettings.sapSmartCharging.defaultSessionTimeHours : 0); + this.defaultInitialStateOfCharge.setValue(this.smartChargingSettings.sapSmartCharging.defaultInitialStateOfCharge ? + this.smartChargingSettings.sapSmartCharging.defaultInitialStateOfCharge : 0); + this.defaultTargetStateOfCharge.setValue(this.smartChargingSettings.sapSmartCharging.defaultTargetStateOfCharge ? + this.smartChargingSettings.sapSmartCharging.defaultTargetStateOfCharge : 0); this.formGroup.markAsPristine(); - } } } diff --git a/src/app/types/Setting.ts b/src/app/types/Setting.ts index 6591b020a0..d7453ebae5 100644 --- a/src/app/types/Setting.ts +++ b/src/app/types/Setting.ts @@ -163,6 +163,10 @@ export interface SapSmartChargingSetting { stickyLimitation: boolean; limitBufferDC: number; limitBufferAC: number; + usePrioritizationParameters: boolean; + defaultSessionTimeHours: number; + defaultInitialStateOfCharge: number; + defaultTargetStateOfCharge: number; } export enum RefundSettingsType { diff --git a/src/assets/i18n/cs.json b/src/assets/i18n/cs.json index ee63e7fdee..67a647149a 100644 --- a/src/assets/i18n/cs.json +++ b/src/assets/i18n/cs.json @@ -1825,7 +1825,11 @@ "additional_settings": "Doplňkové nastavení", "sticky_limitation": "Upravit limit podle aktuální spotřeby", "limit_buffer_dc": "Vyrovnávací paměť pro limit stejnosměrného proudu (DC)(%)", - "limit_buffer_ac": "Vyrovnávací paměť pro limit střídavého proudu (AC)(%)" + "limit_buffer_ac": "Vyrovnávací paměť pro limit střídavého proudu (AC)(%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-mobility může využívat algoritmus Smart nabíjení při optimalizaci distribuce energie a rozpisů nabíjení založených na složitých omezeních", "setting_do_not_exist": "Konfigurace nebyla nalezena", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 4dd60aea15..55e8a54c4c 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1824,7 +1824,11 @@ "additional_settings":"Zusätzliche Einstellungen:", "sticky_limitation": "Limit an akutellen Verbrauch anpassen", "limit_buffer_dc": "Puffer für Limit DC (%)", - "limit_buffer_ac": "Puffer für Limit AC (%)" + "limit_buffer_ac": "Puffer für Limit AC (%)", + "use_prioritization_parameters": "Priorisierungsparameter einbeziehen", + "default_session_time": "Standard Ladezeit (Stunden)", + "default_initial_state_of_charge": "Standard Startladestand (%)", + "default_target_state_of_charge": "Standard minimal zu erreichender Ladestand (%)" }, "description": "E-Mobility kann Smart-Charging Algorithmen nutzen um die Leistungsbereitstellung und den Ladezeitplan auf Basis komplexer Abhängigkeiten zu optimieren", "setting_do_not_exist": "Konfiguration nicht gefunden", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 5387b8f1a8..8a5a7ea1b9 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1824,7 +1824,11 @@ "additional_settings":"Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility can use smart charging algorithm to optimize power distribution and charging schedules based on complex constraints", "setting_do_not_exist": "Configuration has not been found", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index c1c0f49925..a4085b3c12 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1823,7 +1823,11 @@ "additional_settings":"Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility puede utilizar un algoritmo de carga inteligente para optimizar la potencia distribuida en los cargadores en función de restricciones complejas.", "setting_do_not_exist": "La configuración no existe", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index d6dddbd5d6..a6067c3006 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1825,7 +1825,11 @@ "additional_settings":"Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility peut utiliser un algorithme de charge intelligente pour optimiser la puissance distribuée aux bornes basé sur des contraintes complèxes", "setting_do_not_exist": "La configuration n'existe pas", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 1319a11318..795c8de79b 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1824,7 +1824,11 @@ "additional_settings":"Altre impostazioni:", "sticky_limitation": "Regolare il limite in base al consumo di corrente", "limit_buffer_dc": "Buffer per limite DC (%)", - "limit_buffer_ac": "Buffer per limite AC (%)" + "limit_buffer_ac": "Buffer per limite AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility può utilizzare l'algoritmo di ricarica intelligente per ottimizzare la distribuzione dell'energia e i programmi di ricarica sulla base di vincoli complessi", "setting_do_not_exist": "La configurazione non è stata trovata", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 64a8fbe2f1..c675534e27 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1824,7 +1824,11 @@ "additional_settings":"Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility pode usar algoritmo de carregamento inteligente para otimizar a distribuição de energia e horários de carregamento com base em restrições complexas", "setting_do_not_exist": "A configuração não foi encontrada", From fc8faa4628c31dbf1ef849fe2c74e43a38d4d0ed Mon Sep 17 00:00:00 2001 From: OliveGerste Date: Thu, 8 Dec 2022 17:02:14 +0100 Subject: [PATCH 2/9] Added departure hour to site area --- .../list/site-areas-list-table-data-source.ts | 11 +++- .../limits/site-area-limits.component.html | 56 +++++++++++++++---- .../limits/site-area-limits.component.ts | 56 +++++++++++++++++++ .../site-area/site-area-dialog.component.ts | 4 +- .../site-area/site-area.component.html | 4 +- .../site-area/site-area.component.ts | 1 + src/app/types/DataResult.ts | 1 + src/app/types/SiteArea.ts | 8 ++- src/assets/i18n/cs.json | 7 ++- src/assets/i18n/de.json | 21 ++++--- src/assets/i18n/en.json | 21 ++++--- src/assets/i18n/es.json | 21 ++++--- src/assets/i18n/fr.json | 17 ++++-- src/assets/i18n/it.json | 43 +++++++------- src/assets/i18n/pt.json | 21 ++++--- 15 files changed, 215 insertions(+), 77 deletions(-) diff --git a/src/app/pages/organization/site-areas/list/site-areas-list-table-data-source.ts b/src/app/pages/organization/site-areas/list/site-areas-list-table-data-source.ts index 75ce19b149..207c9b17c4 100644 --- a/src/app/pages/organization/site-areas/list/site-areas-list-table-data-source.ts +++ b/src/app/pages/organization/site-areas/list/site-areas-list-table-data-source.ts @@ -57,6 +57,7 @@ export class SiteAreasListTableDataSource extends TableDataSource { private siteAreaGenerateQrCodeConnectorAction = new TableSiteAreaGenerateQrCodeConnectorAction().getActionDef(); private createAction = new TableCreateSiteAreaAction().getActionDef(); private siteAreasAuthorizations: SiteAreasAuthorizations; + private smartChargingSessionParametersActive: boolean; public constructor( public spinnerService: SpinnerService, @@ -100,6 +101,7 @@ export class SiteAreasListTableDataSource extends TableDataSource { // Build TableDef using the initialized auth object this.setTableDef(this.buildTableDef()); this.createAction.visible = this.siteAreasAuthorizations.canCreate; + this.smartChargingSessionParametersActive = siteAreas.smartChargingSessionParametersActive; observer.next(siteAreas); observer.complete(); }, @@ -284,7 +286,8 @@ export class SiteAreasListTableDataSource extends TableDataSource { case SiteAreaButtonAction.CREATE_SITE_AREA: if (actionDef.action) { (actionDef as TableCreateSiteAreaActionDef).action(SiteAreaDialogComponent, this.dialog, - { authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); + { dialogData: {smartChargingSessionParametersActive: this.smartChargingSessionParametersActive} as SiteArea, + authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); } break; } @@ -296,13 +299,15 @@ export class SiteAreasListTableDataSource extends TableDataSource { case SiteAreaButtonAction.EDIT_SITE_AREA: if (actionDef.action) { (actionDef as TableEditSiteAreaActionDef).action(SiteAreaDialogComponent, this.dialog, - { dialogData: siteArea, authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); + { dialogData: {...siteArea, smartChargingSessionParametersActive: this.smartChargingSessionParametersActive}, + authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); } break; case SiteAreaButtonAction.VIEW_SITE_AREA: if (actionDef.action) { (actionDef as TableViewSiteAreaActionDef).action(SiteAreaDialogComponent, this.dialog, - { dialogData: siteArea, authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); + { dialogData: {...siteArea, smartChargingSessionParametersActive: this.smartChargingSessionParametersActive}, + authorizations: this.siteAreasAuthorizations }, this.refreshData.bind(this)); } break; case SiteAreaButtonAction.ASSIGN_CHARGING_STATIONS_TO_SITE_AREA: diff --git a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html index 30f3e28650..633d482136 100644 --- a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html +++ b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html @@ -1,13 +1,4 @@
-
-
-
- - {{'site_areas.enable_smart_charging' | translate}} - -
-
-
@@ -20,10 +11,10 @@
- {{'site_areas.number_of_phases' | translate}} + {{'site_areas.number_of_phases' | translate}} - + {{phase.description | translate}} @@ -59,4 +50,45 @@
+
+
+
+ + {{'site_areas.enable_smart_charging' | translate}} + +
+
+
+
+ + + + {{"general.error_min_value" | translate:{value: 0} }} + + {{"general.error_max_value" | translate:{value: 23} }} + +
+
+ + + + {{"general.error_min_value" | translate:{value: 1} }} + + {{"general.error_max_value" | translate:{value: 100} }} + +
+
+ + + + {{"general.error_min_value" | translate:{value: 1} }} + + {{"general.error_max_value" | translate:{value: 100} }} + +
+
+
diff --git a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts index eff6940976..00c11c140f 100644 --- a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts +++ b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts @@ -11,6 +11,7 @@ import { SiteArea } from '../../../../../types/SiteArea'; }) export class SiteAreaLimitsComponent implements OnInit, OnChanges { @Input() public siteArea!: SiteArea; + @Input() public smartChargingSessionParametersActive!: boolean; @Input() public formGroup!: UntypedFormGroup; @Input() public readOnly: boolean; @@ -24,6 +25,10 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { public voltage!: AbstractControl; public smartCharging!: AbstractControl; public numberOfPhases!: AbstractControl; + public smartChargingSessionParameters!: UntypedFormGroup; + public departureTime!: AbstractControl; + public carStateOfCharge!: AbstractControl; + public targetStateOfCharge!: AbstractControl; public phaseMap = [ { key: 1, description: 'site_areas.single_phased' }, @@ -58,6 +63,31 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { Validators.required, ]) )); + if (this.smartChargingSessionParametersActive) { + this.formGroup.addControl('smartChargingSessionParameters', new UntypedFormGroup({ + departureTime: new UntypedFormControl(null, + Validators.compose([ + Validators.min(0), + Validators.max(23), + Validators.pattern('^[+]?[0-9]*$'), + ]) + ), + carStateOfCharge: new UntypedFormControl(null, + Validators.compose([ + Validators.min(1), + Validators.max(100), + Validators.pattern('^[+]?[0-9]*$'), + ]) + ), + targetStateOfCharge: new UntypedFormControl(null, + Validators.compose([ + Validators.min(1), + Validators.max(100), + Validators.pattern('^[+]?[0-9]*$'), + ]) + ), + })); + } // Form this.smartCharging = this.formGroup.controls['smartCharging']; this.maximumPower = this.formGroup.controls['maximumPower']; @@ -67,6 +97,12 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { this.numberOfPhases = this.formGroup.controls['numberOfPhases']; this.maximumPowerAmpsPerPhase.disable(); this.maximumTotalPowerAmps.disable(); + if (this.smartChargingSessionParametersActive) { + this.smartChargingSessionParameters = this.formGroup.controls['smartChargingSessionParameters'] as UntypedFormGroup; + this.departureTime = this.smartChargingSessionParameters.controls['departureTime']; + this.carStateOfCharge = this.smartChargingSessionParameters.controls['carStateOfCharge']; + this.targetStateOfCharge = this.smartChargingSessionParameters.controls['targetStateOfCharge']; + } this.initialized = true; this.loadSiteArea(); } @@ -88,11 +124,27 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { } if (this.siteArea.smartCharging) { this.smartCharging.setValue(this.siteArea.smartCharging); + if (this.smartChargingSessionParametersActive && this.siteArea.smartChargingSessionParameters) { + this.departureTime.setValue(this.siteArea.smartChargingSessionParameters.departureTime); + this.carStateOfCharge.setValue(this.siteArea.smartChargingSessionParameters.carStateOfCharge); + this.targetStateOfCharge.setValue(this.siteArea.smartChargingSessionParameters.targetStateOfCharge); + } } else { this.smartCharging.setValue(false); } this.refreshMaximumAmps(); } + this.refreshSmartChargingSessionParameters(); + } + + public smartChargingChanged() { + if(this.smartChargingSessionParametersActive && this.smartCharging) { + if (this.smartCharging.value) { + this.smartChargingSessionParameters.enable(); + } else { + this.smartChargingSessionParameters.disable(); + } + } } public voltageChanged() { @@ -107,6 +159,10 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { this.maximumPowerChanged(); } + public refreshSmartChargingSessionParameters(){ + this.smartChargingChanged(); + } + public maximumPowerChanged() { if (!this.maximumPower.errors && this.voltage.value) { if (this.numberOfPhases.value) { diff --git a/src/app/pages/organization/site-areas/site-area/site-area-dialog.component.ts b/src/app/pages/organization/site-areas/site-area/site-area-dialog.component.ts index 832132e639..da9600327e 100644 --- a/src/app/pages/organization/site-areas/site-area/site-area-dialog.component.ts +++ b/src/app/pages/organization/site-areas/site-area/site-area-dialog.component.ts @@ -7,13 +7,14 @@ import { Utils } from '../../../../utils/Utils'; import { SiteAreaComponent } from './site-area.component'; @Component({ - template: '' + template: '' }) export class SiteAreaDialogComponent implements AfterViewInit { @ViewChild('appRef') public appRef!: SiteAreaComponent; public siteAreaID!: string; public dialogMode!: DialogMode; public siteAreasAuthorizations!: SiteAreasAuthorizations; + public smartChargingSessionParametersActive: boolean; public constructor( public dialogRef: MatDialogRef, @@ -21,6 +22,7 @@ export class SiteAreaDialogComponent implements AfterViewInit { this.siteAreaID = dialogParams.dialogData?.id; this.dialogMode = dialogParams.dialogMode; this.siteAreasAuthorizations = dialogParams.authorizations; + this.smartChargingSessionParametersActive = dialogParams.dialogData?.smartChargingSessionParametersActive; } public ngAfterViewInit() { diff --git a/src/app/pages/organization/site-areas/site-area/site-area.component.html b/src/app/pages/organization/site-areas/site-area/site-area.component.html index 7bea01f6b9..ff4e6fffb7 100644 --- a/src/app/pages/organization/site-areas/site-area/site-area.component.html +++ b/src/app/pages/organization/site-areas/site-area/site-area.component.html @@ -16,7 +16,7 @@ {{'site_areas.limits' | translate}}
- +
@@ -39,4 +39,4 @@ - \ No newline at end of file + diff --git a/src/app/pages/organization/site-areas/site-area/site-area.component.ts b/src/app/pages/organization/site-areas/site-area/site-area.component.ts index f89ccfffe4..68d3d89f5a 100644 --- a/src/app/pages/organization/site-areas/site-area/site-area.component.ts +++ b/src/app/pages/organization/site-areas/site-area/site-area.component.ts @@ -33,6 +33,7 @@ export class SiteAreaComponent extends AbstractTabComponent implements OnInit { @Input() public dialogMode!: DialogMode; @Input() public dialogRef!: MatDialogRef; @Input() public siteAreasAuthorizations!: SiteAreasAuthorizations; + @Input() public smartChargingSessionParametersActive!: boolean; @ViewChild('siteAreaMainComponent') public siteAreaMainComponent!: SiteAreaMainComponent; @ViewChild('siteAreaLimitsComponent') public siteAreaLimitsComponent!: SiteAreaLimitsComponent; diff --git a/src/app/types/DataResult.ts b/src/app/types/DataResult.ts index b4c644bf64..7604edf9f7 100644 --- a/src/app/types/DataResult.ts +++ b/src/app/types/DataResult.ts @@ -115,6 +115,7 @@ export interface SiteUserDataResult extends DataResult, SiteUsersAutho } export interface SiteAreaDataResult extends DataResult { + smartChargingSessionParametersActive: boolean; } export interface TagDataResult extends DataResult, TagsAuthorizations { diff --git a/src/app/types/SiteArea.ts b/src/app/types/SiteArea.ts index 10849aaba6..287b640ff9 100644 --- a/src/app/types/SiteArea.ts +++ b/src/app/types/SiteArea.ts @@ -4,8 +4,9 @@ import { ChargingStation, Voltage } from './ChargingStation'; import Consumption from './Consumption'; import { Site } from './Site'; import { TableData } from './Table'; +import { SmartChargingSessionParameters } from './Transaction'; -export interface SiteArea extends TableData, SiteAreaAuthorizationActions { +export interface SiteArea extends TableData, SiteAreaAuthorizationActions, SmartChargingSessionParametersActive { id: string; name: string; image: string; @@ -15,6 +16,7 @@ export interface SiteArea extends TableData, SiteAreaAuthorizationActions { voltage: Voltage; accessControl: boolean; smartCharging: boolean; + smartChargingSessionParameters: SmartChargingSessionParameters; siteID: string; site: Site; parentSiteArea?: SiteArea; @@ -23,6 +25,10 @@ export interface SiteArea extends TableData, SiteAreaAuthorizationActions { chargingStations: ChargingStation[]; tariffID?: string; } +export interface SmartChargingSessionParametersActive { + smartChargingSessionParametersActive?: boolean; +} + export enum SiteAreaValueTypes { ASSET_CONSUMPTIONS = 'AssetConsumptions', diff --git a/src/assets/i18n/cs.json b/src/assets/i18n/cs.json index d3e37ee7b7..4c556f9426 100644 --- a/src/assets/i18n/cs.json +++ b/src/assets/i18n/cs.json @@ -1844,7 +1844,12 @@ "update_error": "Došlo k chybě při aktualizaci nastavení SAP Smart Charging, zkontrolujte protokoly", "connection_success": "Spojení se službou Smart nabíjení bylo úspěšně otestováno", "connection_error": "Nelze se připojit ke službě Smart nabíjení. Zkontrolujte svou konfiguraci.", - "check_connection": "Zkontrolujte připojení" + "check_connection": "Zkontrolujte připojení", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 485a4c45b9..88996345aa 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -839,15 +839,15 @@ "fixed_url_for_ocpp": "Ab OCPP 1.6, wird die URL vom Server festgelegt", "callback_url_for_ocpp": "Callback URL um HTTP Anfrage zur Ladestation zu senden" }, - "enable_manual_configuration":{ + "enable_manual_configuration": { "title": "Manuelle Konfiguration aktivieren", "confirm": "Wenn Sie die manuelle Konfiguration aktivieren, wird die Konfiguration nicht mehr vom automatischen Template übernommen. Sind Sie sicher, dass Sie fortfahren möchten?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Manuelle Konfiguration deaktivieren", "confirm": "Wenn Sie die manuelle Konfiguration deaktivieren, wird die Konfiguration vom automatischen Template übernommen. Die Ladestation wird neu gestartet und die manuelle Konfiguration geht verloren. Sind Sie sicher, dass Sie fortfahren möchten?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Manuelle Konfiguration/Template Fehler", "confirm": "Die Ladestation ist bereits ohne manuelle Konfiguration gespeichert. Bitte stellen Sie sicher dass die Ladestation korrekt startet und das entsprechende Template angewendet werden kann" } @@ -1272,7 +1272,7 @@ "locale_desc_de_DE": "Deutsch", "locale_desc_pt_PT": "Portugiesisch", "locale_desc_it_IT": "Italienisch", - "locale_desc_cs_CZ":"Tschechisch", + "locale_desc_cs_CZ": "Tschechisch", "locale_desc_en_AU": "Australisch", "role_unknown": "Unbekannt", "locale_unknown": "Unbekannt", @@ -1826,7 +1826,7 @@ "settings": "Einstellungen", "user": "Nutzer", "password": "Passwort", - "additional_settings":"Zusätzliche Einstellungen:", + "additional_settings": "Zusätzliche Einstellungen:", "sticky_limitation": "Limit an akutellen Verbrauch anpassen", "limit_buffer_dc": "Puffer für Limit DC (%)", "limit_buffer_ac": "Puffer für Limit AC (%)", @@ -1844,7 +1844,12 @@ "update_error": "Beim Aktualisieren der SAP Smart Charging-Einstellungen ist ein Fehler aufgetreten", "connection_success": "Verbindung zum Smart-Charging-Service wurde erfolgreich getestet", "connection_error": "Fehler beim Verbinden zum Smart-Charging-Service. Konfiguration überprüfen.", - "check_connection": "Verbindung überprüfen" + "check_connection": "Verbindung überprüfen", + "session_parameters": { + "departureTime": "Abfahrtszeit - Stunde", + "carStateOfCharge": "Batteriestand - Start", + "targetStateOfCharge": "Batteriestand - Ziel" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Typ", "authentication_url": "Authentifizierungs-Url", "api_url": "API-Url", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Fahrzeug-Schnittstellen löschen", "delete_confirm": "Möchten Sie wirklich die Fahrzeug-Schnittstelle '{{carConnectorConnectionName}}' löschen?" }, diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 6a4310490f..daad11a632 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -839,15 +839,15 @@ "fixed_url_for_ocpp": "From OCPP 1.6 on, the URL is fixed by the server", "callback_url_for_ocpp": "Callback URL to send HTTP request to the charging station" }, - "enable_manual_configuration":{ + "enable_manual_configuration": { "title": "Enable manual configuration", "confirm": "If you enable the manual configuration, the charging station will not be adjusted with the automatic configuration template anymore. Do you want to continue?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Disable manual configuration", "confirm": "If you disable the manual configuration, the charging station will be adjusted with the automatic configuration template, rebooted and your manual changes will be lost. Do you want to continue?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Manual Configuration/Template error", "confirm": "Manual Configuration has been already disabled for this station. Please make sure it boots correctly and that the template can be applied" } @@ -1272,7 +1272,7 @@ "locale_desc_de_DE": "German", "locale_desc_pt_PT": "Portuguese", "locale_desc_it_IT": "Italian", - "locale_desc_cs_CZ":"Czech", + "locale_desc_cs_CZ": "Czech", "locale_desc_en_AU": "Australian", "role_unknown": "Unknown", "locale_unknown": "Unknown", @@ -1826,7 +1826,7 @@ "settings": "Settings", "user": "User", "password": "Password", - "additional_settings":"Additional settings:", + "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", "limit_buffer_ac": "Buffer for Limit AC (%)", @@ -1844,7 +1844,12 @@ "update_error": "Error occurred while updating the SAP Smart Charging settings, check the logs", "connection_success": "Connection to the smart charging service was tested with success", "connection_error": "Impossible to connect to the smart charging service. Check your configuration.", - "check_connection": "Check Connection" + "check_connection": "Check Connection", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Type", "authentication_url": "Authentication Url", "api_url": "API Url", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Delete Connector", "delete_confirm": "Do you really want to delete the connector '{{carConnectorConnectionName}}'?" }, diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index f253c0a412..2fc1884d98 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -839,15 +839,15 @@ "fixed_url_for_ocpp": "Desde OCPP 1.6 en adelante, el servidor fija la URL", "callback_url_for_ocpp": "Retrollamada de la URL para mandar una peticion HTTP a la estación de carga " }, - "enable_manual_configuration":{ + "enable_manual_configuration": { "title": "Permitir configuración manual", "confirm": "Si usted habilita la configuración manual, la estación de carga no se ajustará a la configuration automática. ¿Desea continuar?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Desactivar configuración manual", "confirm": "Si usted desactiva la configuración manual, la estación de carga se ajustará a la configuración automática y sus cambios se prederán. ¿Desea continuar?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Manual Configuration/Template error", "confirm": "Manual Configuration has been already disabled for this station. Please make sure it boots correctly and that the template can be applied" } @@ -1272,7 +1272,7 @@ "locale_desc_de_DE": "Alemán", "locale_desc_pt_PT": "Portugués", "locale_desc_it_IT": "Italiano", - "locale_desc_cs_CZ":"Czech", + "locale_desc_cs_CZ": "Czech", "locale_desc_en_AU": "Australian", "role_unknown": "Desconocido", "locale_unknown": "Desconocido", @@ -1826,7 +1826,7 @@ "settings": "Configuración", "user": "Usuario", "password": "Contraseña", - "additional_settings":"Additional settings:", + "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", "limit_buffer_ac": "Buffer for Limit AC (%)", @@ -1844,7 +1844,12 @@ "update_error": "Se produjo un error durante la actualización de la configuración de SAP Smart Charging", "connection_success": "La conexión al servicio de carga inteligente se verificó correctamente", "connection_error": "No se puede conectar al servicio de carga inteligente. Verifique su configuración", - "check_connection": "Verificar conexión" + "check_connection": "Verificar conexión", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Type", "authentication_url": "Authentication Url", "api_url": "API Url", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Delete Connector", "delete_confirm": "Do you really want to delete the connector '{{carConnectorConnectionName}}'?" }, diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 644f355d0d..7ec43a2cd5 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -843,11 +843,11 @@ "title": "Activer la configuration manuelle", "confirm": "Lorsque l'option configuration manuelle est choisie, la borne ne bénéficie plus de la configuration automatique (provenant de son modèle). Voulez-vous continuer ?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Désactiver la configuration manuelle", "confirm": "Si vous désactivez la configuration manuelle, la borne bénificiera de nouveau d'une configuration automatique (provenant de son modèle). Une fois redémarrée, vos changements manuels seront perdus. Voulez-vous continuer?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Configuration manuelle / Erreur template", "confirm": "La configuration manuelle a déjà été désactivèe pour cette borne. Assurez-vous qu'elle redémarre correctement que son modèle peut être appliqué" } @@ -1826,7 +1826,7 @@ "settings": "Configuration", "user": "Utilisateur", "password": "Mot de passe", - "additional_settings":"Additional settings:", + "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", "limit_buffer_ac": "Buffer for Limit AC (%)", @@ -1844,7 +1844,12 @@ "update_error": "Une erreur est survenue durant la mise à jour de la configuration SAP Smart Charging, vérifiez les logs", "connection_success": "Connexion vers le service de charge intelligente vérifiée avec succès", "connection_error": "Connexion vers le service de charge intelligente impossible. Vérifiez votre configuration.", - "check_connection": "Vérifier connexion" + "check_connection": "Vérifier connexion", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Type", "authentication_url": "URL d'authentification", "api_url": "URL de l'API", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Supporession du connecteur", "delete_confirm": "Voulez-vous vraiment supprimer le connecteur '{{carConnectorConnectionName}}' ?" }, diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 7d512d9647..43be25e226 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -839,15 +839,15 @@ "fixed_url_for_ocpp": "Da OCPP 1.6 in poi, l'URL è fissato dal server", "callback_url_for_ocpp": "URL callback per inviare la richiesta HTTP alla stazione di ricarica" }, - "enable_manual_configuration":{ + "enable_manual_configuration": { "title": "Abilitare la configurazione manuale", "confirm": "Se la configurazione manuale é abilitata, la stazione di ricarica non sarà più modificata via la configurazione automatica. Desideri procedere?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Disabilitare la configurazione manuale", "confirm": "Se la configurazione manuale é disabilitata, la stazione di ricarica sarà modificata via la configurazione automatica, riavviata e le modifiche fatte manualmente saranno perdute. Desideri procedere?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Configurazione Manuale/ Errore template", "confirm": "La configurazione manuale é già disabilitata per questa stazione. Si prega di verificare che la stazione si avvii correttamente é che il template automatico sia applicato." } @@ -960,8 +960,8 @@ "kind": "Tipo", "purpose": "Scopo", "stack_level": "Livello Stack", - "site_area":"Area Sito", - "site_area_limit":"Limite Area Sito", + "site_area": "Area Sito", + "site_area_limit": "Limite Area Sito", "redirect": "Vai ai Piani di Ricarica" } }, @@ -1208,7 +1208,7 @@ "search_last_week": "Settimana Scorsa", "search_this_month": "Questo Mese", "search_last_month": "Mese Scorso", - "select_actions":"Azioni Selezionate", + "select_actions": "Azioni Selezionate", "redirect": "Controlla Log", "no_logs": "Nessun log corrispondente ai filtri", "dialog": { @@ -1826,14 +1826,14 @@ "settings": "Impostazioni", "user": "Utente ", "password": "Password", - "additional_settings":"Altre impostazioni:", - "sticky_limitation": "Regolare il limite in base al consumo di corrente", - "limit_buffer_dc": "Buffer per limite DC (%)", - "limit_buffer_ac": "Buffer per limite AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "additional_settings": "Altre impostazioni:", + "sticky_limitation": "Regolare il limite in base al consumo di corrente", + "limit_buffer_dc": "Buffer per limite DC (%)", + "limit_buffer_ac": "Buffer per limite AC (%)", + "use_prioritization_parameters": "Use prioritization parameters for smart charging", + "default_session_time": "Default session time (hours)", + "default_initial_state_of_charge": "Default initial state of charge (%)", + "default_target_state_of_charge": "Default minimum target state of charge (%)" }, "description": "E-Mobility può utilizzare l'algoritmo di ricarica intelligente per ottimizzare la distribuzione dell'energia e i programmi di ricarica sulla base di vincoli complessi", "setting_do_not_exist": "La configurazione non è stata trovata", @@ -1844,7 +1844,12 @@ "update_error": "Si è verificato un errore durante l'aggiornamento delle impostazioni della Ricarica Smart SAP", "connection_success": "La connessione al servizion di ricarica smart è stata testata con successo", "connection_error": "Impossible connettersi al servizio di ricarica smart. Controlla la configurazione.", - "check_connection": "Controllo Connessione" + "check_connection": "Controllo Connessione", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Tipo", "authentication_url": "URL d'autenticazione", "api_url": "URL API", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Cancella presa", "delete_confirm": "Si desidera cancellare la presa '{{carConnectorConnectionName}}'?" }, @@ -2228,7 +2233,7 @@ "power": "Potenza Istantanea (kW)", "limit_watts": "Limite Rete (kW)", "no_consumption": "Nessun dato di consumo disponibile" - } + } }, "cars": { "vin": "VIN", @@ -2606,7 +2611,7 @@ "error_not_from_tenant": "Questa sessione non appartiene a questo tenant", "error_no_ocpi": "Questa sessione non contiene dati OCPI", "error_cdr_already_pushed": "Il CDR di questa sessione è già stato inviato" - }, + }, "soft_stop": { "success": "La sessione dell'utente {{user}} è stata interrotta con successo.", "error": "Si è verificato un errore durante l'interruzione della sessione." diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 40ad359636..ac62918c3a 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -839,15 +839,15 @@ "fixed_url_for_ocpp": "A partir do OCPP 1.6, a URL é fixada pelo servidor", "callback_url_for_ocpp": "URL de retorno de chamada para enviar solicitação HTTP para a estação de carregamento" }, - "enable_manual_configuration":{ + "enable_manual_configuration": { "title": "Enable manual configuration", "confirm": "If you enable the manual configuration, the charging station will not be adjusted with the automatic configuration template anymore. Do you want to continue?" }, - "disable_manual_configuration":{ + "disable_manual_configuration": { "title": "Disable manual configuration", "confirm": "If you disable the manual configuration, the charging station will be adjusted with the automatic configuration template, rebooted and your manual changes will be lost. Do you want to continue?" }, - "manual_configuration_error":{ + "manual_configuration_error": { "title": "Manual Configuration/Template error", "confirm": "Manual Configuration has been already disabled for this station. Please make sure it boots correctly and that the template can be applied" } @@ -1272,7 +1272,7 @@ "locale_desc_de_DE": "Alemão", "locale_desc_pt_PT": "Português", "locale_desc_it_IT": "Italiano", - "locale_desc_cs_CZ":"Czech", + "locale_desc_cs_CZ": "Czech", "locale_desc_en_AU": "Australian", "role_unknown": "Desconhecido", "locale_unknown": "Desconhecido", @@ -1826,7 +1826,7 @@ "settings": "Configurações", "user": "Utilizador", "password": "Password", - "additional_settings":"Additional settings:", + "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", "limit_buffer_ac": "Buffer for Limit AC (%)", @@ -1844,7 +1844,12 @@ "update_error": "Ocorreu um erro ao atualizar as configurações do SAP Smart Charging", "connection_success": "A conexão com o serviço de carregamento inteligente foi testada com sucesso", "connection_error": "Impossível conectar ao serviço de carregamento inteligente. Verifique sua configuração.", - "check_connection": "Verifique a conexão" + "check_connection": "Verifique a conexão", + "session_parameters": { + "departureTime": "Departure Hour", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1889,8 +1894,8 @@ "type": "Type", "authentication_url": "Authentication Url", "api_url": "API Url", - "client_id":"Client ID", - "client_secret":"Client Secret", + "client_id": "Client ID", + "client_secret": "Client Secret", "delete_title": "Delete Connector", "delete_confirm": "Do you really want to delete the connector '{{carConnectorConnectionName}}'?" }, From e1e324992f2c80de15be17f4a5a990a95e1240d3 Mon Sep 17 00:00:00 2001 From: OliveGerste Date: Tue, 13 Dec 2022 09:47:33 +0100 Subject: [PATCH 3/9] Removed session parameters from settings --- ...settings-sap-smart-charging.component.html | 53 ------------------- .../settings-sap-smart-charging.component.ts | 24 --------- src/app/types/Setting.ts | 4 -- src/assets/i18n/cs.json | 8 +-- src/assets/i18n/de.json | 8 +-- src/assets/i18n/en.json | 8 +-- src/assets/i18n/es.json | 8 +-- src/assets/i18n/fr.json | 8 +-- src/assets/i18n/it.json | 8 +-- src/assets/i18n/pt.json | 8 +-- 10 files changed, 14 insertions(+), 123 deletions(-) diff --git a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html index 33bc073bbb..9697f222b1 100644 --- a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html +++ b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.html @@ -60,58 +60,5 @@

{{'settings.smart_charging.sap_smart_charging.title' | tr -
-
-
- - {{'settings.smart_charging.sap_smart_charging.use_prioritization_parameters' | translate}} - -
-
-
-
-
-
- - - - {{"general.error_min_value" | translate:{value: 1} }} - - - {{"general.error_max_value" | translate:{value: 20} }} - - -
-
-
-
- - - - {{"general.error_min_value" | translate:{value: 1} }} - - - {{"general.error_max_value" | translate:{value: 100} }} - - -
-
-
-
- - - - {{"general.error_min_value" | translate:{value: 1} }} - - - {{"general.error_max_value" | translate:{value: 100} }} - - -
-
-
diff --git a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts index a21af97184..e50bcfb2d2 100644 --- a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts +++ b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts @@ -59,10 +59,6 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { this.stickyLimitation = this.sapSmartCharging.controls['stickyLimitation']; this.limitBufferDC = this.sapSmartCharging.controls['limitBufferDC']; this.limitBufferAC = this.sapSmartCharging.controls['limitBufferAC']; - this.usePrioritizationParameters = this.sapSmartCharging.controls['usePrioritizationParameters']; - this.defaultSessionTimeHours = this.sapSmartCharging.controls['defaultSessionTimeHours']; - this.defaultInitialStateOfCharge = this.sapSmartCharging.controls['defaultInitialStateOfCharge']; - this.defaultTargetStateOfCharge = this.sapSmartCharging.controls['defaultTargetStateOfCharge']; // Set data this.updateFormData(); if (!this.stickyLimitation.value) { @@ -90,18 +86,6 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { } } - public usePrioritizationParametersChanged() { - if (this.usePrioritizationParameters.value) { - this.defaultSessionTimeHours.enable(); - this.defaultInitialStateOfCharge.enable(); - this.defaultTargetStateOfCharge.enable(); - } else { - this.defaultSessionTimeHours.disable(); - this.defaultInitialStateOfCharge.disable(); - this.defaultTargetStateOfCharge.disable(); - } - } - public updateFormData() { // Set data if (this.smartChargingSettings && this.smartChargingSettings.sapSmartCharging && this.sapSmartCharging) { @@ -111,14 +95,6 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { this.stickyLimitation.setValue(this.smartChargingSettings.sapSmartCharging.stickyLimitation ? this.smartChargingSettings.sapSmartCharging.stickyLimitation : false); this.limitBufferDC.setValue(this.smartChargingSettings.sapSmartCharging.limitBufferDC ? this.smartChargingSettings.sapSmartCharging.limitBufferDC : 0); this.limitBufferAC.setValue(this.smartChargingSettings.sapSmartCharging.limitBufferAC ? this.smartChargingSettings.sapSmartCharging.limitBufferAC : 0); - this.usePrioritizationParameters.setValue(this.smartChargingSettings.sapSmartCharging.usePrioritizationParameters ? - this.smartChargingSettings.sapSmartCharging.usePrioritizationParameters : false); - this.defaultSessionTimeHours.setValue(this.smartChargingSettings.sapSmartCharging.defaultSessionTimeHours ? - this.smartChargingSettings.sapSmartCharging.defaultSessionTimeHours : 0); - this.defaultInitialStateOfCharge.setValue(this.smartChargingSettings.sapSmartCharging.defaultInitialStateOfCharge ? - this.smartChargingSettings.sapSmartCharging.defaultInitialStateOfCharge : 0); - this.defaultTargetStateOfCharge.setValue(this.smartChargingSettings.sapSmartCharging.defaultTargetStateOfCharge ? - this.smartChargingSettings.sapSmartCharging.defaultTargetStateOfCharge : 0); this.formGroup.markAsPristine(); // Read only if(!this.authorizations.canUpdate) { diff --git a/src/app/types/Setting.ts b/src/app/types/Setting.ts index bc03136097..c4709052db 100644 --- a/src/app/types/Setting.ts +++ b/src/app/types/Setting.ts @@ -164,10 +164,6 @@ export interface SapSmartChargingSetting { stickyLimitation: boolean; limitBufferDC: number; limitBufferAC: number; - usePrioritizationParameters: boolean; - defaultSessionTimeHours: number; - defaultInitialStateOfCharge: number; - defaultTargetStateOfCharge: number; } export enum RefundSettingsType { diff --git a/src/assets/i18n/cs.json b/src/assets/i18n/cs.json index 4c556f9426..9d380c4518 100644 --- a/src/assets/i18n/cs.json +++ b/src/assets/i18n/cs.json @@ -1829,11 +1829,7 @@ "additional_settings": "Doplňkové nastavení", "sticky_limitation": "Upravit limit podle aktuální spotřeby", "limit_buffer_dc": "Vyrovnávací paměť pro limit stejnosměrného proudu (DC)(%)", - "limit_buffer_ac": "Vyrovnávací paměť pro limit střídavého proudu (AC)(%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Vyrovnávací paměť pro limit střídavého proudu (AC)(%)" }, "description": "E-mobility může využívat algoritmus Smart nabíjení při optimalizaci distribuce energie a rozpisů nabíjení založených na složitých omezeních", "setting_do_not_exist": "Konfigurace nebyla nalezena", @@ -1846,7 +1842,7 @@ "connection_error": "Nelze se připojit ke službě Smart nabíjení. Zkontrolujte svou konfiguraci.", "check_connection": "Zkontrolujte připojení", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 88996345aa..1f2c549c1c 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1829,11 +1829,7 @@ "additional_settings": "Zusätzliche Einstellungen:", "sticky_limitation": "Limit an akutellen Verbrauch anpassen", "limit_buffer_dc": "Puffer für Limit DC (%)", - "limit_buffer_ac": "Puffer für Limit AC (%)", - "use_prioritization_parameters": "Priorisierungsparameter einbeziehen", - "default_session_time": "Standard Ladezeit (Stunden)", - "default_initial_state_of_charge": "Standard Startladestand (%)", - "default_target_state_of_charge": "Standard minimal zu erreichender Ladestand (%)" + "limit_buffer_ac": "Puffer für Limit AC (%)" }, "description": "E-Mobility kann Smart-Charging Algorithmen nutzen um die Leistungsbereitstellung und den Ladezeitplan auf Basis komplexer Abhängigkeiten zu optimieren", "setting_do_not_exist": "Konfiguration nicht gefunden", @@ -1846,7 +1842,7 @@ "connection_error": "Fehler beim Verbinden zum Smart-Charging-Service. Konfiguration überprüfen.", "check_connection": "Verbindung überprüfen", "session_parameters": { - "departureTime": "Abfahrtszeit - Stunde", + "departureTime": "Abfahrtszeit (Stunde vom Tag)", "carStateOfCharge": "Batteriestand - Start", "targetStateOfCharge": "Batteriestand - Ziel" } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index daad11a632..2244fc72e6 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1829,11 +1829,7 @@ "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)" }, "description": "E-Mobility can use smart charging algorithm to optimize power distribution and charging schedules based on complex constraints", "setting_do_not_exist": "Configuration has not been found", @@ -1846,7 +1842,7 @@ "connection_error": "Impossible to connect to the smart charging service. Check your configuration.", "check_connection": "Check Connection", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 2fc1884d98..b12e202d1c 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1829,11 +1829,7 @@ "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)" }, "description": "E-Mobility puede utilizar un algoritmo de carga inteligente para optimizar la potencia distribuida en los cargadores en función de restricciones complejas.", "setting_do_not_exist": "La configuración no existe", @@ -1846,7 +1842,7 @@ "connection_error": "No se puede conectar al servicio de carga inteligente. Verifique su configuración", "check_connection": "Verificar conexión", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 7ec43a2cd5..a558345dee 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1829,11 +1829,7 @@ "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)" }, "description": "E-Mobility peut utiliser un algorithme de charge intelligente pour optimiser la puissance distribuée aux bornes basé sur des contraintes complèxes", "setting_do_not_exist": "La configuration n'existe pas", @@ -1846,7 +1842,7 @@ "connection_error": "Connexion vers le service de charge intelligente impossible. Vérifiez votre configuration.", "check_connection": "Vérifier connexion", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 43be25e226..5653fd0ebc 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1829,11 +1829,7 @@ "additional_settings": "Altre impostazioni:", "sticky_limitation": "Regolare il limite in base al consumo di corrente", "limit_buffer_dc": "Buffer per limite DC (%)", - "limit_buffer_ac": "Buffer per limite AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Buffer per limite AC (%)" }, "description": "E-Mobility può utilizzare l'algoritmo di ricarica intelligente per ottimizzare la distribuzione dell'energia e i programmi di ricarica sulla base di vincoli complessi", "setting_do_not_exist": "La configurazione non è stata trovata", @@ -1846,7 +1842,7 @@ "connection_error": "Impossible connettersi al servizio di ricarica smart. Controlla la configurazione.", "check_connection": "Controllo Connessione", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index ac62918c3a..fc2fa0dd20 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1829,11 +1829,7 @@ "additional_settings": "Additional settings:", "sticky_limitation": "Adjust limit according to current consumption", "limit_buffer_dc": "Buffer for Limit DC (%)", - "limit_buffer_ac": "Buffer for Limit AC (%)", - "use_prioritization_parameters": "Use prioritization parameters for smart charging", - "default_session_time": "Default session time (hours)", - "default_initial_state_of_charge": "Default initial state of charge (%)", - "default_target_state_of_charge": "Default minimum target state of charge (%)" + "limit_buffer_ac": "Buffer for Limit AC (%)" }, "description": "E-Mobility pode usar algoritmo de carregamento inteligente para otimizar a distribuição de energia e horários de carregamento com base em restrições complexas", "setting_do_not_exist": "A configuração não foi encontrada", @@ -1846,7 +1842,7 @@ "connection_error": "Impossível conectar ao serviço de carregamento inteligente. Verifique sua configuração.", "check_connection": "Verifique a conexão", "session_parameters": { - "departureTime": "Departure Hour", + "departureTime": "Departure Time (Hour of Day)", "carStateOfCharge": "Initial State of Charge", "targetStateOfCharge": "Target State of Charge" } From e1e8160e46808cfe36602eedd0e2eeeb17f842e9 Mon Sep 17 00:00:00 2001 From: OliveGerste Date: Tue, 13 Dec 2022 13:24:51 +0100 Subject: [PATCH 4/9] Remove smart charging session params from settings --- .../settings-sap-smart-charging.component.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts index e50bcfb2d2..4c065bd972 100644 --- a/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts +++ b/src/app/pages/settings-integration/smart-charging/sap-smart-charging/settings-sap-smart-charging.component.ts @@ -21,10 +21,6 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { public stickyLimitation!: AbstractControl; public limitBufferDC!: AbstractControl; public limitBufferAC!: AbstractControl; - public usePrioritizationParameters!: AbstractControl; - public defaultSessionTimeHours!: AbstractControl; - public defaultInitialStateOfCharge!: AbstractControl; - public defaultTargetStateOfCharge!: AbstractControl; public ngOnInit(): void { this.sapSmartCharging = new FormGroup({ @@ -65,11 +61,6 @@ export class SettingsSapSmartChargingComponent implements OnInit, OnChanges { this.limitBufferDC.disable(); this.limitBufferAC.disable(); } - if (!this.usePrioritizationParameters.value) { - this.defaultSessionTimeHours.disable(); - this.defaultInitialStateOfCharge.disable(); - this.defaultTargetStateOfCharge.disable(); - } } public ngOnChanges() { From 487705127202ba75a41436456ebddf45751827d0 Mon Sep 17 00:00:00 2001 From: OliveGerste Date: Tue, 17 Jan 2023 16:44:22 +0100 Subject: [PATCH 5/9] Use hour and minute for departure time --- .../limits/site-area-limits.component.html | 11 +++++------ .../site-area/limits/site-area-limits.component.ts | 13 ++++++------- src/app/types/Transaction.ts | 8 +++++++- src/app/types/User.ts | 4 ++-- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html index 633d482136..95b401bd38 100644 --- a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html +++ b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.html @@ -61,12 +61,11 @@
- - - {{"general.error_min_value" | translate:{value: 0} }} - - {{"general.error_max_value" | translate:{value: 23} }} + {{'settings.smart_charging.session_parameters.departureTime' | translate}} + +
diff --git a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts index 00c11c140f..a2227d78c4 100644 --- a/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts +++ b/src/app/pages/organization/site-areas/site-area/limits/site-area-limits.component.ts @@ -65,13 +65,7 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { )); if (this.smartChargingSessionParametersActive) { this.formGroup.addControl('smartChargingSessionParameters', new UntypedFormGroup({ - departureTime: new UntypedFormControl(null, - Validators.compose([ - Validators.min(0), - Validators.max(23), - Validators.pattern('^[+]?[0-9]*$'), - ]) - ), + departureTime: new UntypedFormControl(null), carStateOfCharge: new UntypedFormControl(null, Validators.compose([ Validators.min(1), @@ -163,6 +157,11 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { this.smartChargingChanged(); } + public resetDepartureTime(){ + this.departureTime.setValue(null); + this.departureTime.markAsDirty(); + } + public maximumPowerChanged() { if (!this.maximumPower.errors && this.voltage.value) { if (this.numberOfPhases.value) { diff --git a/src/app/types/Transaction.ts b/src/app/types/Transaction.ts index 993a2bfbf4..e93b0f3e23 100644 --- a/src/app/types/Transaction.ts +++ b/src/app/types/Transaction.ts @@ -128,7 +128,13 @@ export interface StartTransactionDialogData extends TableData { } export interface SmartChargingSessionParameters { - departureTime: number; + departureTime: string; carStateOfCharge: number; targetStateOfCharge: number; } + +export interface SmartChargingRuntimeSessionParameters { + departureTime?: Date; // Date of the departure time - taking into account the timezone of the charging station + carStateOfCharge?: number; + targetStateOfCharge?: number; +} diff --git a/src/app/types/User.ts b/src/app/types/User.ts index 708c058ac1..8cf3a2414a 100644 --- a/src/app/types/User.ts +++ b/src/app/types/User.ts @@ -5,7 +5,7 @@ import { Car } from './Car'; import CreatedUpdatedProps from './CreatedUpdatedProps'; import { TableData } from './Table'; import { Tag } from './Tag'; -import { SmartChargingSessionParameters, StartTransactionErrorCode } from './Transaction'; +import { SmartChargingRuntimeSessionParameters, StartTransactionErrorCode } from './Transaction'; export interface User extends TableData, CreatedUpdatedProps, UserAuthorizationActions { id: string; @@ -74,7 +74,7 @@ export interface UserSessionContext { car?: Car; tag?: Tag; errorCodes?: StartTransactionErrorCode[]; - smartChargingSessionParameters?: SmartChargingSessionParameters; + smartChargingSessionParameters?: SmartChargingRuntimeSessionParameters; } export interface UserToken { From a62cf0d14c8d77b58a613ec38692b6702f01bb83 Mon Sep 17 00:00:00 2001 From: Ramzi Siala <1226644+Ramzay@users.noreply.github.com> Date: Tue, 28 Feb 2023 17:24:24 +0100 Subject: [PATCH 6/9] Separate charging profile and update cs auth --- .../list/charging-stations-list-table-data-source.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/pages/charging-stations/list/charging-stations-list-table-data-source.ts b/src/app/pages/charging-stations/list/charging-stations-list-table-data-source.ts index a0b8839a97..078bc98cb7 100644 --- a/src/app/pages/charging-stations/list/charging-stations-list-table-data-source.ts +++ b/src/app/pages/charging-stations/list/charging-stations-list-table-data-source.ts @@ -390,10 +390,13 @@ export class ChargingStationsListTableDataSource extends TableDataSource Date: Tue, 14 Mar 2023 16:24:23 +0100 Subject: [PATCH 7/9] r=version - 2.7.6 - rc --- package-lock.json | 4 ++-- package.json | 2 +- src/app/release-notes/release-notes.component.ts | 14 +++++++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d60fb6e24f..24eb689787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ev-dashboard", - "version": "2.7.5", + "version": "2.7.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ev-dashboard", - "version": "2.7.5", + "version": "2.7.6", "license": "Apache-2.0", "dependencies": { "@angular/animations": "^14.1.1", diff --git a/package.json b/package.json index 5191fd1e86..dcc89519e2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "ev-dashboard", "description": "Dashboard for monitoring the EV Charging Infrastructure", "homepage": "https://github.com/sap-labs-france/ev-dashboard", - "version": "2.7.5", + "version": "2.7.6", "engines": { "node": "^16.15.x", "npm": "^8.11.x" diff --git a/src/app/release-notes/release-notes.component.ts b/src/app/release-notes/release-notes.component.ts index d7436822e4..37c37936a8 100644 --- a/src/app/release-notes/release-notes.component.ts +++ b/src/app/release-notes/release-notes.component.ts @@ -16,13 +16,25 @@ interface ComponentChange { styleUrls: ['release-notes.component.scss'] }) export class ReleaseNotesComponent { - public releaseNotes: ReleaseNotes[] = []; + public releaseNotes: ReleaseNotes[] = [];s; public constructor() { this.buildReleaseNotes(); } public buildReleaseNotes() { this.releaseNotes = [ + { + version: '2.7.6', + date: new Date('2023-03-14'), + componentChanges: [ + { + name: 'Dashboard', + changes: [ + 'Smart Charging - Limit the number of periods to 16 (4 hours)' + ], + }, + ], + }, { version: '2.7.5', date: new Date('2022-11-21'), From 50173ecbda858833fe2c330b6d4cf0762938f9ce Mon Sep 17 00:00:00 2001 From: ClaudeROSSI Date: Wed, 15 Mar 2023 10:50:07 +0100 Subject: [PATCH 8/9] smart charging - advanced parameters --- src/app/release-notes/release-notes.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/release-notes/release-notes.component.ts b/src/app/release-notes/release-notes.component.ts index 37c37936a8..8e8e9a98db 100644 --- a/src/app/release-notes/release-notes.component.ts +++ b/src/app/release-notes/release-notes.component.ts @@ -30,6 +30,7 @@ export class ReleaseNotesComponent { { name: 'Dashboard', changes: [ + 'Smart Charging - Advanced Parameters for Departure Time', 'Smart Charging - Limit the number of periods to 16 (4 hours)' ], }, From 0e44235e385469900a61aee9243585609683289f Mon Sep 17 00:00:00 2001 From: ClaudeROSSI Date: Thu, 16 Mar 2023 08:46:42 +0100 Subject: [PATCH 9/9] update release notes - 2.7.6 --- src/app/release-notes/release-notes.component.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/release-notes/release-notes.component.ts b/src/app/release-notes/release-notes.component.ts index 8e8e9a98db..ba3c490ec7 100644 --- a/src/app/release-notes/release-notes.component.ts +++ b/src/app/release-notes/release-notes.component.ts @@ -16,7 +16,7 @@ interface ComponentChange { styleUrls: ['release-notes.component.scss'] }) export class ReleaseNotesComponent { - public releaseNotes: ReleaseNotes[] = [];s; + public releaseNotes: ReleaseNotes[] = []; public constructor() { this.buildReleaseNotes(); @@ -31,7 +31,9 @@ export class ReleaseNotesComponent { name: 'Dashboard', changes: [ 'Smart Charging - Advanced Parameters for Departure Time', - 'Smart Charging - Limit the number of periods to 16 (4 hours)' + 'Smart Charging - Limit the number of periods to 16 (4 hours)', + 'Billing - Stripe Integration - update dependency to the latest API version - 2022-11-15', + 'Security - removed vulnerability from strong-soap dependencies' ], }, ],