feat(ui): make evses works in the web ui
[e-mobility-charging-stations-simulator.git] / ui / web / src / components / charging-stations / CSData.vue
CommitLineData
32de5a57 1<template>
5a010bf0 2 <tr v-for="(connector, index) in getConnectors()" class="cs-table__row">
32de5a57
LM
3 <CSConnector
4 :hash-id="getHashId()"
5 :connector="connector"
6 :connector-id="index + 1"
5a010bf0
JB
7 :transaction-id="connector.transactionId"
8 :id-tag="props.idTag"
32de5a57
LM
9 />
10 <td class="cs-table__name-col">{{ getId() }}</td>
452a82ca 11 <td class="cs-table__started-col">{{ getStarted() }}</td>
5e3cb728 12 <td class="cs-table__wsState-col">{{ getWsState() }}</td>
333c3566 13 <td class="cs-table__registration-status-col">{{ getRegistrationStatus() }}</td>
32de5a57 14 <td class="cs-table__vendor-col">{{ getVendor() }}</td>
5a010bf0 15 <td class="cs-table__model-col">{{ getModel() }}</td>
32de5a57
LM
16 <td class="cs-table__firmware-col">{{ getFirmwareVersion() }}</td>
17 </tr>
18</template>
19
20<script setup lang="ts">
5a010bf0 21// import { reactive } from 'vue';
cbac2373 22import CSConnector from './CSConnector.vue';
258a5c7f 23import type {
32de5a57
LM
24 ChargingStationData,
25 ChargingStationInfo,
26 ConnectorStatus,
f27eb751 27} from '@/types/ChargingStationType';
cbac2373 28import Utils from '@/composables/Utils';
32de5a57
LM
29
30const props = defineProps<{
31 chargingStation: ChargingStationData;
5a010bf0 32 idTag: string;
32de5a57
LM
33}>();
34
5a010bf0
JB
35// type State = {
36// isTagModalVisible: boolean;
37// idTag: string;
38// };
39
40// const state: State = reactive({
41// isTagModalVisible: false,
42// idTag: '',
43// });
32de5a57 44
5a010bf0 45function getConnectors(): ConnectorStatus[] {
12f26d4a
JB
46 if (Array.isArray(props.chargingStation.evses) && props.chargingStation.evses.length > 0) {
47 const connectorsStatus: ConnectorStatus[] = [];
48 for (const [evseId, evseStatus] of props.chargingStation.evses.entries()) {
49 if (evseId > 0 && Array.isArray(evseStatus.connectors) && evseStatus.connectors.length > 0) {
50 for (const connector of evseStatus.connectors) {
51 connectorsStatus.push(connector);
52 }
53 }
54 }
55 return connectorsStatus;
56 }
aeb31e77 57 return props.chargingStation.connectors?.slice(1);
32de5a57
LM
58}
59function getInfo(): ChargingStationInfo {
60 return props.chargingStation.stationInfo;
61}
51c83d6f
JB
62function getHashId(): string {
63 return getInfo().hashId;
64}
32de5a57
LM
65function getId(): string {
66 return Utils.ifUndefined<string>(getInfo().chargingStationId, 'Ø');
67}
68function getModel(): string {
69 return getInfo().chargePointModel;
70}
71function getVendor(): string {
72 return getInfo().chargePointVendor;
73}
74function getFirmwareVersion(): string {
75 return Utils.ifUndefined<string>(getInfo().firmwareVersion, 'Ø');
76}
452a82ca
JB
77function getStarted(): string {
78 return props.chargingStation.started === true ? 'Yes' : 'No';
333c3566 79}
5e3cb728
JB
80function getWsState(): string {
81 switch (props.chargingStation?.wsState) {
82 case WebSocket.CONNECTING:
83 return 'Connecting';
84 case WebSocket.OPEN:
85 return 'Open';
86 case WebSocket.CLOSING:
87 return 'Closing';
88 case WebSocket.CLOSED:
89 return 'Closed';
90 default:
91 return 'Ø';
92 }
93}
333c3566
JB
94function getRegistrationStatus(): string {
95 return props.chargingStation?.bootNotificationResponse?.status ?? 'Ø';
8fc2e5cc 96}
32de5a57
LM
97// function showTagModal(): void {
98// state.isTagModalVisible = true;
99// }
100// function hideTagModal(): void {
101// state.isTagModalVisible = false;
102// }
103</script>