2 <Container id="charging-stations-container">
3 <Container id="ui-server-container">
5 v-show="Array.isArray(uiServerConfigurations) && uiServerConfigurations.length > 1"
6 id="ui-server-selector"
7 v-model="state.uiServerIndex"
12 getFromLocalStorage<number>('uiServerConfigurationIndex', 0) !== state.uiServerIndex
14 setToLocalStorage<number>('uiServerConfigurationIndex', state.uiServerIndex)
15 app!.appContext.config.globalProperties.$uiClient.setConfiguration(
16 app?.appContext.config.globalProperties.$configuration.uiServer[
17 getFromLocalStorage<number>('uiServerConfigurationIndex', state.uiServerIndex)
22 $toast.error('Error at changing UI server configuration')
23 console.error('Error at changing UI server configuration:', error)
29 v-for="uiServerConfiguration in uiServerConfigurations"
30 :value="uiServerConfiguration.index"
32 {{ uiServerConfiguration.configuration.host }}
36 <Container id="buttons-container">
37 <Button @click="startSimulator()">Start Simulator</Button>
38 <Button @click="stopSimulator()">Stop Simulator</Button>
39 <Button @click="$router.push({ name: 'add-charging-stations' })">
44 :loading="state.isLoading"
45 @click="loadChargingStations(() => $router.go(0))"
50 Array.isArray(app?.appContext.config.globalProperties.$chargingStations) &&
51 app?.appContext.config.globalProperties.$chargingStations.length > 0
53 :charging-stations="app?.appContext.config.globalProperties.$chargingStations"
58 <script setup lang="ts">
59 import { getCurrentInstance, reactive } from 'vue'
60 import { useToast } from 'vue-toast-notification'
61 import CSTable from '@/components/charging-stations/CSTable.vue'
62 import type { ResponsePayload, UIServerConfigurationSection } from '@/types'
63 import Container from '@/components/Container.vue'
64 import ReloadButton from '@/components/buttons/ReloadButton.vue'
65 import Button from '@/components/buttons/Button.vue'
66 import { getFromLocalStorage, setToLocalStorage } from '@/composables'
68 const state = reactive({
70 uiServerIndex: getFromLocalStorage<number>('uiServerConfigurationIndex', 0)
73 const app = getCurrentInstance()
74 const uiClient = app?.appContext.config.globalProperties.$uiClient
75 const uiServerConfigurations: { configuration: UIServerConfigurationSection; index: number }[] =
76 app?.appContext.config.globalProperties.$configuration.uiServer.map(
77 (configuration: UIServerConfigurationSection, index: number) => ({
83 const $toast = useToast()
85 const loadChargingStations = (reloadCallback?: () => void): void => {
86 if (state.isLoading === false) {
87 state.isLoading = true
89 .listChargingStations()
90 .then((response: ResponsePayload) => {
92 app.appContext.config.globalProperties.$chargingStations = response.chargingStations
95 .catch((error: Error) => {
96 $toast.error('Error at fetching charging stations')
97 console.error('Error at fetching charging stations:', error)
100 if (reloadCallback != null) {
103 state.isLoading = false
108 const startSimulator = (): void => {
112 $toast.success('Simulator successfully started')
114 .catch((error: Error) => {
115 $toast.error('Error at starting simulator')
116 console.error('Error at starting simulator:', error)
119 const stopSimulator = (): void => {
124 app.appContext.config.globalProperties.$chargingStations = []
126 $toast.success('Simulator successfully stopped')
128 .catch((error: Error) => {
129 $toast.error('Error at stopping simulator')
130 console.error('Error at stopping simulator:', error)
136 #charging-stations-container {
140 flex-direction: column;
143 #ui-server-container {
148 #ui-server-selector {
165 background-color: blue;
169 justify-content: center;
172 #reload-button:hover {
173 background-color: rgb(0, 0, 225);
176 #reload-button:active {
177 background-color: red;
182 background-color: black;