flaschengeist-frontend/src/pages/Dashboard.vue

35 lines
931 B
Vue

<template>
<q-page
padding
style="grid-auto-rows: 1fr"
class="fit row justify-around items-start q-col-gutter-sm"
>
<div v-for="(item, index) in widgets" :key="index" class="col-4 full-height col-sm-6 col-xs-12">
<component :is="item" />
</div>
</q-page>
</template>
<script lang="ts">
import { Component, defineComponent, onMounted, inject, markRaw } from 'vue';
import { hasPermissions } from 'src/utils/permission';
import { FG_Plugin } from 'src/plugins';
export default defineComponent({
name: 'Dashboard',
setup() {
const widgets = markRaw<Array<Component>>([]);
const flaschengeistPlugins = inject<FG_Plugin.LoadedPlugins>('flaschengeistPlugins');
onMounted(() => {
flaschengeistPlugins?.widgets.forEach((widget) => {
if (hasPermissions(widget.permissions)) widgets.push(widget.widget);
});
});
return {
widgets,
};
},
});
</script>