1 import { type App
as AppType
, createApp
, ref
} from
'vue'
2 import ToastPlugin from
'vue-toast-notification'
3 import type { ChargingStationData
, ConfigurationData
, UIServerConfigurationSection
} from
'@/types'
4 import { router
} from
'@/router'
5 import { UIClient
, getFromLocalStorage
, setToLocalStorage
} from
'@/composables'
6 import App from
'@/App.vue'
7 import 'vue-toast-notification/dist/theme-bootstrap.css'
9 const app
= createApp(App
)
11 const initializeApp
= (app
: AppType
, config
: ConfigurationData
) => {
12 app
.config
.errorHandler
= (error
, instance
, info
) => {
13 console
.error('Error:', error
)
14 console
.info('Vue instance:', instance
)
15 console
.info('Error info:', info
)
16 // TODO: add code for UI notifications or other error handling logic
18 if (!Array.isArray(config
.uiServer
)) {
19 config
.uiServer
= [config
.uiServer
]
21 if (app
.config
.globalProperties
.$configuration
== null) {
22 app
.config
.globalProperties
.$configuration
= ref
<ConfigurationData
>(config
)
24 if (!Array.isArray(app
.config
.globalProperties
.$templates
?.value
)) {
25 app
.config
.globalProperties
.$templates
= ref
<string[]>([])
27 if (!Array.isArray(app
.config
.globalProperties
.$chargingStations
?.value
)) {
28 app
.config
.globalProperties
.$chargingStations
= ref
<ChargingStationData
[]>([])
31 getFromLocalStorage
<number | undefined>('uiServerConfigurationIndex', undefined) == null ||
32 getFromLocalStorage
<number>('uiServerConfigurationIndex', 0) >
33 (app
.config
.globalProperties
.$configuration
.value
.uiServer
as UIServerConfigurationSection
[])
37 setToLocalStorage
<number>('uiServerConfigurationIndex', 0)
39 if (app
.config
.globalProperties
.$uiClient
== null) {
40 app
.config
.globalProperties
.$uiClient
= UIClient
.getInstance(
41 (app
.config
.globalProperties
.$configuration
.value
.uiServer
as UIServerConfigurationSection
[])[
42 getFromLocalStorage
<number>('uiServerConfigurationIndex', 0)
46 app
.use(router
).use(ToastPlugin
).mount('#app')
52 // TODO: add code for UI notifications or other error handling logic
53 console
.error('Failed to fetch app configuration')
59 initializeApp(app
, config
)
62 // TODO: add code for UI notifications or other error handling logic
63 console
.error('Error at deserializing JSON app configuration:', error
)
67 // TODO: add code for UI notifications or other error handling logic
68 console
.error('Error at fetching app configuration:', error
)