mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
import { CoreNavigationCmpt } from '../../components/navigation/Navigation.js';
|
|
import DashboardAdmin from '../../components/Dashboard/Admin.js';
|
|
|
|
import PluginsPhrasen from '../../plugins/Phrasen.js';
|
|
|
|
import ApiRenderers from '../../api/factory/renderers.js';
|
|
|
|
const app = Vue.createApp({
|
|
name: 'DashboardAdminApp',
|
|
data: () => ({
|
|
appSideMenuEntries: {},
|
|
renderers: null
|
|
}),
|
|
components: {
|
|
CoreNavigationCmpt,
|
|
DashboardAdmin
|
|
},
|
|
provide() {
|
|
return {
|
|
// TODO(chris): move those two into the components that need it
|
|
renderers: Vue.computed(() => this.renderers),
|
|
timezone: FHC_JS_DATA_STORAGE_OBJECT.timezone
|
|
};
|
|
},
|
|
created() {
|
|
this.$api
|
|
.call(ApiRenderers.loadRenderers())
|
|
.then(res => {
|
|
for (let rendertype of Object.keys(res.data)) {
|
|
let modalTitle = null;
|
|
let modalContent = null;
|
|
let calendarEvent = null;
|
|
if (res.data[rendertype].modalTitle)
|
|
modalTitle = Vue.markRaw(Vue.defineAsyncComponent(() => import(res.data[rendertype].modalTitle)));
|
|
if (res.data[rendertype].modalContent)
|
|
modalContent = Vue.markRaw(Vue.defineAsyncComponent(() => import(res.data[rendertype].modalContent)));
|
|
if (res.data[rendertype].calendarEvent)
|
|
calendarEvent = Vue.markRaw(Vue.defineAsyncComponent(() => import(res.data[rendertype].calendarEvent)));
|
|
|
|
if (res.data[rendertype].calendarEventStyles) {
|
|
var head = document.head;
|
|
if (!head.querySelector(`link[href="${res.data[rendertype].calendarEventStyles}"]`)) {
|
|
var link = document.createElement("link");
|
|
link.type = "text/css";
|
|
link.rel = "stylesheet";
|
|
link.href = res.data[rendertype].calendarEventStyles;
|
|
head.appendChild(link);
|
|
}
|
|
}
|
|
|
|
if (this.renderers === null) {
|
|
this.renderers = {};
|
|
}
|
|
if (!this.renderers[rendertype]) {
|
|
this.renderers[rendertype] = {}
|
|
}
|
|
this.renderers[rendertype].modalTitle = modalTitle;
|
|
this.renderers[rendertype].modalContent = modalContent;
|
|
this.renderers[rendertype].calendarEvent = calendarEvent;
|
|
}
|
|
})
|
|
.catch(this.$fhcAlert.handleSystemErrors);
|
|
}
|
|
});
|
|
app.use(PluginsPhrasen);
|
|
app.directive('tooltip', primevue.tooltip);
|
|
app.mount('#main'); |