feat(ui): display supervision url in charging stations list
[e-mobility-charging-stations-simulator.git] / src / utils / MessageChannelUtils.ts
1 import {
2 OutputFormat,
3 buildChargingStationAutomaticTransactionGeneratorConfiguration,
4 buildConnectorsStatus,
5 buildEvsesStatus
6 } from './ChargingStationConfigurationUtils.js'
7 import type { ChargingStation } from '../charging-station/index.js'
8 import {
9 type ChargingStationData,
10 type ChargingStationWorkerMessage,
11 ChargingStationWorkerMessageEvents,
12 type Statistics
13 } from '../types/index.js'
14
15 export const buildAddedMessage = (
16 chargingStation: ChargingStation
17 ): ChargingStationWorkerMessage<ChargingStationData> => {
18 return {
19 event: ChargingStationWorkerMessageEvents.added,
20 data: buildChargingStationDataPayload(chargingStation)
21 }
22 }
23
24 export const buildStartedMessage = (
25 chargingStation: ChargingStation
26 ): ChargingStationWorkerMessage<ChargingStationData> => {
27 return {
28 event: ChargingStationWorkerMessageEvents.started,
29 data: buildChargingStationDataPayload(chargingStation)
30 }
31 }
32
33 export const buildStoppedMessage = (
34 chargingStation: ChargingStation
35 ): ChargingStationWorkerMessage<ChargingStationData> => {
36 return {
37 event: ChargingStationWorkerMessageEvents.stopped,
38 data: buildChargingStationDataPayload(chargingStation)
39 }
40 }
41
42 export const buildUpdatedMessage = (
43 chargingStation: ChargingStation
44 ): ChargingStationWorkerMessage<ChargingStationData> => {
45 return {
46 event: ChargingStationWorkerMessageEvents.updated,
47 data: buildChargingStationDataPayload(chargingStation)
48 }
49 }
50
51 export const buildPerformanceStatisticsMessage = (
52 statistics: Statistics
53 ): ChargingStationWorkerMessage<Statistics> => {
54 return {
55 event: ChargingStationWorkerMessageEvents.performanceStatistics,
56 data: statistics
57 }
58 }
59
60 export const buildChargingStationDataPayload = (
61 chargingStation: ChargingStation
62 ): ChargingStationData => {
63 return {
64 started: chargingStation.started,
65 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
66 stationInfo: chargingStation.stationInfo!,
67 connectors: buildConnectorsStatus(chargingStation),
68 evses: buildEvsesStatus(chargingStation, OutputFormat.worker),
69 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
70 ocppConfiguration: chargingStation.ocppConfiguration!,
71 supervisionUrl: chargingStation.wsConnectionUrl.href,
72 wsState: chargingStation.wsConnection?.readyState,
73 bootNotificationResponse: chargingStation.bootNotificationResponse,
74 ...(chargingStation.automaticTransactionGenerator != null && {
75 automaticTransactionGenerator:
76 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation)
77 })
78 }
79 }