CreatBotMainsail/src/pages/Dashboard.vue
2023-10-06 21:22:46 +02:00

159 lines
6.1 KiB
Vue

<template>
<div>
<v-row v-if="isMobile">
<v-col>
<status-panel></status-panel>
<template v-for="component in mobileLayout">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-mobileLayout-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
</v-row>
<v-row v-else-if="isTablet">
<v-col class="col-6">
<status-panel></status-panel>
<template v-for="component in tabletLayout1">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-tabletLayout1-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
<v-col class="col-6">
<template v-for="component in tabletLayout2">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-tabletLayout2-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
</v-row>
<v-row v-else-if="isDesktop">
<v-col class="col-5">
<status-panel></status-panel>
<template v-for="component in desktopLayout1">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-desktopLayout1-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
<v-col class="col-7">
<template v-for="component in desktopLayout2">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-desktopLayout2-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
</v-row>
<v-row v-else-if="isWidescreen">
<v-col class="col-3">
<status-panel></status-panel>
<template v-for="component in widescreenLayout1">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-desktopLayout1-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
<v-col class="col-5">
<template v-for="component in widescreenLayout2">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-desktopLayout2-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
<v-col class="col-4">
<template v-for="component in widescreenLayout3">
<component
:is="extractPanelName(component.name)"
:key="'dashboard-desktopLayout3-' + component.name"
:panel-id="extractPanelId(component.name)"></component>
</template>
</v-col>
</v-row>
</div>
</template>
<script lang="ts">
import Component from 'vue-class-component'
import { Mixins } from 'vue-property-decorator'
import ExtruderControlPanel from '@/components/panels/ExtruderControlPanel.vue'
import DashboardMixin from '@/components/mixins/dashboard'
import KlippyStatePanel from '@/components/panels/KlippyStatePanel.vue'
import MachineSettingsPanel from '@/components/panels/MachineSettings/MachineSettingsPanel.vue'
import MacrogroupPanel from '@/components/panels/MacrogroupPanel.vue'
import MacrosPanel from '@/components/panels/MacrosPanel.vue'
import MiniconsolePanel from '@/components/panels/MiniconsolePanel.vue'
import MinSettingsPanel from '@/components/panels/MinSettingsPanel.vue'
import MiscellaneousPanel from '@/components/panels/MiscellaneousPanel.vue'
import SpoolmanPanel from '@/components/panels/SpoolmanPanel.vue'
import StatusPanel from '@/components/panels/StatusPanel.vue'
import ToolheadControlPanel from '@/components/panels/ToolheadControlPanel.vue'
import TemperaturePanel from '@/components/panels/TemperaturePanel.vue'
import WebcamPanel from '@/components/panels/WebcamPanel.vue'
@Component({
components: {
ExtruderControlPanel,
KlippyStatePanel,
MachineSettingsPanel,
MacrogroupPanel,
MacrosPanel,
MiniconsolePanel,
MinSettingsPanel,
MiscellaneousPanel,
SpoolmanPanel,
StatusPanel,
ToolheadControlPanel,
TemperaturePanel,
WebcamPanel,
},
})
export default class PageDashboard extends Mixins(DashboardMixin) {
get mobileLayout() {
return this.$store.getters['gui/getPanels']('mobile', 0, true)
}
get tabletLayout1() {
return this.$store.getters['gui/getPanels']('tablet', 1, true)
}
get tabletLayout2() {
return this.$store.getters['gui/getPanels']('tablet', 2, true)
}
get desktopLayout1() {
return this.$store.getters['gui/getPanels']('desktop', 1, true)
}
get desktopLayout2() {
return this.$store.getters['gui/getPanels']('desktop', 2, true)
}
get widescreenLayout1() {
return this.$store.getters['gui/getPanels']('widescreen', 1, true)
}
get widescreenLayout2() {
return this.$store.getters['gui/getPanels']('widescreen', 2, true)
}
get widescreenLayout3() {
return this.$store.getters['gui/getPanels']('widescreen', 3, true)
}
extractPanelName(name: string) {
return name.split('_')[0] + '-panel'
}
extractPanelId(name: string) {
return name.split('_')[1] ?? null
}
}
</script>