refactor: cleanup null checks and helpers
[e-mobility-charging-stations-simulator.git] / ui / web / src / components / charging-stations / CSData.vue
index da25b46b10c8ee0fadce37fbb547d87899137068..ab9c8208a453d820dab67318bd68415c8bc52de2 100644 (file)
 <script setup lang="ts">
 // import { reactive } from 'vue';
 import CSConnector from './CSConnector.vue';
-import type {
-  ChargingStationData,
-  ChargingStationInfo,
-  ConnectorStatus,
-} from '@/types/ChargingStationType';
-import Utils from '@/composables/Utils';
+import type { ChargingStationData, ChargingStationInfo, ConnectorStatus } from '@/types';
+import { ifUndefined } from '@/composables/Utils';
 
 const props = defineProps<{
   chargingStation: ChargingStationData;
@@ -43,6 +39,17 @@ const props = defineProps<{
 // });
 
 function getConnectors(): ConnectorStatus[] {
+  if (Array.isArray(props.chargingStation.evses) && props.chargingStation.evses.length > 0) {
+    const connectorsStatus: ConnectorStatus[] = [];
+    for (const [evseId, evseStatus] of props.chargingStation.evses.entries()) {
+      if (evseId > 0 && Array.isArray(evseStatus.connectors) && evseStatus.connectors.length > 0) {
+        for (const connectorStatus of evseStatus.connectors) {
+          connectorsStatus.push(connectorStatus);
+        }
+      }
+    }
+    return connectorsStatus;
+  }
   return props.chargingStation.connectors?.slice(1);
 }
 function getInfo(): ChargingStationInfo {
@@ -52,7 +59,7 @@ function getHashId(): string {
   return getInfo().hashId;
 }
 function getId(): string {
-  return Utils.ifUndefined<string>(getInfo().chargingStationId, 'Ø');
+  return ifUndefined<string>(getInfo().chargingStationId, 'Ø');
 }
 function getModel(): string {
   return getInfo().chargePointModel;
@@ -61,7 +68,7 @@ function getVendor(): string {
   return getInfo().chargePointVendor;
 }
 function getFirmwareVersion(): string {
-  return Utils.ifUndefined<string>(getInfo().firmwareVersion, 'Ø');
+  return ifUndefined<string>(getInfo().firmwareVersion, 'Ø');
 }
 function getStarted(): string {
   return props.chargingStation.started === true ? 'Yes' : 'No';