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/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 { 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..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 @@ -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,44 @@
+
+
+
+ + {{'site_areas.enable_smart_charging' | translate}} + +
+
+
+
+ + {{'settings.smart_charging.session_parameters.departureTime' | translate}} + + + +
+
+ + + + {{"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..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 @@ -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,25 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { Validators.required, ]) )); + if (this.smartChargingSessionParametersActive) { + this.formGroup.addControl('smartChargingSessionParameters', new UntypedFormGroup({ + departureTime: new UntypedFormControl(null), + 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 +91,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 +118,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 +153,15 @@ export class SiteAreaLimitsComponent implements OnInit, OnChanges { this.maximumPowerChanged(); } + public refreshSmartChargingSessionParameters(){ + 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/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/release-notes/release-notes.component.ts b/src/app/release-notes/release-notes.component.ts index d7436822e4..ba3c490ec7 100644 --- a/src/app/release-notes/release-notes.component.ts +++ b/src/app/release-notes/release-notes.component.ts @@ -23,6 +23,21 @@ export class ReleaseNotesComponent { } public buildReleaseNotes() { this.releaseNotes = [ + { + version: '2.7.6', + date: new Date('2023-03-14'), + componentChanges: [ + { + name: 'Dashboard', + changes: [ + 'Smart Charging - Advanced Parameters for Departure Time', + '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' + ], + }, + ], + }, { version: '2.7.5', date: new Date('2022-11-21'), diff --git a/src/app/types/DataResult.ts b/src/app/types/DataResult.ts index bd220867aa..5bc7f3bd63 100644 --- a/src/app/types/DataResult.ts +++ b/src/app/types/DataResult.ts @@ -117,6 +117,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/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 { diff --git a/src/assets/i18n/cs.json b/src/assets/i18n/cs.json index c9fbfa7586..9d380c4518 100644 --- a/src/assets/i18n/cs.json +++ b/src/assets/i18n/cs.json @@ -1840,7 +1840,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 Time (Hour of Day)", + "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 8d194dece1..1f2c549c1c 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 (%)" @@ -1840,7 +1840,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 vom Tag)", + "carStateOfCharge": "Batteriestand - Start", + "targetStateOfCharge": "Batteriestand - Ziel" + } }, "asset": { "connection": { @@ -1885,8 +1890,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 dedbefeb7c..2244fc72e6 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 (%)" @@ -1840,7 +1840,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 Time (Hour of Day)", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1885,8 +1890,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 1630e047e5..b12e202d1c 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 (%)" @@ -1840,7 +1840,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 Time (Hour of Day)", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1885,8 +1890,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 0a52131fe1..a558345dee 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 (%)" @@ -1840,7 +1840,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 Time (Hour of Day)", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1885,8 +1890,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 fd9bcfb4ee..5653fd0ebc 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,10 +1826,10 @@ "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 (%)" + "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 (%)" }, "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", @@ -1840,7 +1840,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 Time (Hour of Day)", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1885,8 +1890,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}}'?" }, @@ -2224,7 +2229,7 @@ "power": "Potenza Istantanea (kW)", "limit_watts": "Limite Rete (kW)", "no_consumption": "Nessun dato di consumo disponibile" - } + } }, "cars": { "vin": "VIN", @@ -2602,7 +2607,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 8821d5b6fe..fc2fa0dd20 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 (%)" @@ -1840,7 +1840,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 Time (Hour of Day)", + "carStateOfCharge": "Initial State of Charge", + "targetStateOfCharge": "Target State of Charge" + } }, "asset": { "connection": { @@ -1885,8 +1890,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}}'?" },