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