Merge pull request #748 from SAP/combined-prs-branch
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
... / ...
CommitLineData
1import { isNullOrUndefined } from './Utils';
2import type { ChargingStation } from '../charging-station';
3import type {
4 ChargingStationAutomaticTransactionGeneratorConfiguration,
5 ConnectorStatus,
6 EvseStatusConfiguration,
7 EvseStatusWorkerType,
8} from '../types';
9
10export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
11 chargingStation: ChargingStation,
12): ChargingStationAutomaticTransactionGeneratorConfiguration => {
13 return {
14 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
15 ...(!isNullOrUndefined(chargingStation.automaticTransactionGenerator?.connectorsStatus) && {
16 automaticTransactionGeneratorStatuses: [
17 ...chargingStation.automaticTransactionGenerator!.connectorsStatus.values(),
18 ],
19 }),
20 };
21};
22
23export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
24 return [...chargingStation.connectors.values()].map(
25 // eslint-disable-next-line @typescript-eslint/no-unused-vars
26 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
27 );
28};
29
30export const enum OutputFormat {
31 configuration = 'configuration',
32 worker = 'worker',
33}
34
35export const buildEvsesStatus = (
36 chargingStation: ChargingStation,
37 outputFormat: OutputFormat = OutputFormat.configuration,
38): (EvseStatusWorkerType | EvseStatusConfiguration)[] => {
39 return [...chargingStation.evses.values()].map((evseStatus) => {
40 const connectorsStatus = [...evseStatus.connectors.values()].map(
41 // eslint-disable-next-line @typescript-eslint/no-unused-vars
42 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
43 );
44 let status: EvseStatusConfiguration;
45 switch (outputFormat) {
46 case OutputFormat.worker:
47 return {
48 ...evseStatus,
49 connectors: connectorsStatus,
50 };
51 case OutputFormat.configuration:
52 status = {
53 ...evseStatus,
54 connectorsStatus,
55 };
56 delete (status as EvseStatusWorkerType).connectors;
57 return status;
58 }
59 });
60};