Commit | Line | Data |
---|---|---|
66a7748d JB |
1 | import { isNullOrUndefined } from './Utils.js' |
2 | import type { ChargingStation } from '../charging-station/index.js' | |
179ed367 JB |
3 | import type { |
4 | ChargingStationAutomaticTransactionGeneratorConfiguration, | |
5 | ConnectorStatus, | |
6 | EvseStatusConfiguration, | |
66a7748d JB |
7 | EvseStatusWorkerType |
8 | } from '../types/index.js' | |
179ed367 JB |
9 | |
10 | export const buildChargingStationAutomaticTransactionGeneratorConfiguration = ( | |
66a7748d | 11 | chargingStation: ChargingStation |
179ed367 JB |
12 | ): ChargingStationAutomaticTransactionGeneratorConfiguration => { |
13 | return { | |
14 | automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(), | |
9bf0ef23 | 15 | ...(!isNullOrUndefined(chargingStation.automaticTransactionGenerator?.connectorsStatus) && { |
179ed367 | 16 | automaticTransactionGeneratorStatuses: [ |
66a7748d JB |
17 | // eslint-disable-next-line @typescript-eslint/no-non-null-assertion |
18 | ...chargingStation.automaticTransactionGenerator!.connectorsStatus.values() | |
19 | ] | |
20 | }) | |
21 | } | |
22 | } | |
179ed367 JB |
23 | |
24 | export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => { | |
25 | return [...chargingStation.connectors.values()].map( | |
66a7748d JB |
26 | ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest |
27 | ) | |
28 | } | |
179ed367 JB |
29 | |
30 | export const enum OutputFormat { | |
31 | configuration = 'configuration', | |
a807045b | 32 | worker = 'worker', |
179ed367 JB |
33 | } |
34 | ||
35 | export const buildEvsesStatus = ( | |
36 | chargingStation: ChargingStation, | |
66a7748d JB |
37 | outputFormat: OutputFormat = OutputFormat.configuration |
38 | ): Array<EvseStatusWorkerType | EvseStatusConfiguration> => { | |
39 | // eslint-disable-next-line array-callback-return | |
179ed367 JB |
40 | return [...chargingStation.evses.values()].map((evseStatus) => { |
41 | const connectorsStatus = [...evseStatus.connectors.values()].map( | |
66a7748d JB |
42 | ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest |
43 | ) | |
44 | let status: EvseStatusConfiguration | |
09989bb8 JB |
45 | switch (outputFormat) { |
46 | case OutputFormat.worker: | |
47 | return { | |
48 | ...evseStatus, | |
66a7748d JB |
49 | connectors: connectorsStatus |
50 | } | |
09989bb8 JB |
51 | case OutputFormat.configuration: |
52 | status = { | |
53 | ...evseStatus, | |
66a7748d JB |
54 | connectorsStatus |
55 | } | |
56 | delete (status as EvseStatusWorkerType).connectors | |
57 | return status | |
179ed367 | 58 | } |
66a7748d JB |
59 | }) |
60 | } |