2 <Container id="charging-stations">
3 <Container id="buttons-container">
4 <Button id="simulator-button" @click="startSimulator()">Start Simulator</Button>
5 <Button id="simulator-button" @click="stopSimulator()">Stop Simulator</Button>
8 :loading="state.isLoading"
9 @click="loadChargingStations(() => $router.go(0))"
12 <CSTable :charging-stations="app?.appContext.config.globalProperties.$chargingStations ?? []" />
16 <script setup lang="ts">
17 import { getCurrentInstance, reactive } from 'vue'
18 import CSTable from '@/components/charging-stations/CSTable.vue'
19 import type { ResponsePayload } from '@/types'
20 import Container from '@/components/Container.vue'
21 import ReloadButton from '@/components/buttons/ReloadButton.vue'
22 import Button from '@/components/buttons/Button.vue'
24 const state = reactive({
28 const app = getCurrentInstance()
29 const uiClient = app?.appContext.config.globalProperties.$uiClient
31 function loadChargingStations(reloadCallback?: () => void): void {
32 if (state.isLoading === false) {
33 state.isLoading = true
35 .listChargingStations()
36 .then((response: ResponsePayload) => {
38 app.appContext.config.globalProperties.$chargingStations = response.chargingStations
41 .catch((error: Error) => {
42 // TODO: add code for UI notifications or other error handling logic
43 console.error('Error at fetching charging stations:', error)
46 if (reloadCallback != null) {
49 state.isLoading = false
54 function startSimulator(): void {
55 uiClient.startSimulator()
57 function stopSimulator(): void {
58 uiClient.stopSimulator()
67 flex-direction: column;
78 background-color: blue;
82 justify-content: center;
85 #reload-button:hover {
86 background-color: rgb(0, 0, 225);
89 #reload-button:active {
90 background-color: red;