%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/resources/js/views/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/resources/js/views/Dashboard.vue |
<template> <div :dusk="'dashboard-' + this.name"> <custom-dashboard-header class="mb-3" :dashboard-name="name" /> <heading v-if="cards.length > 1" class="mb-6">{{ __('Dashboard') }}</heading> <div v-if="shouldShowCards"> <cards v-if="smallCards.length > 0" :cards="smallCards" class="mb-3" /> <cards v-if="largeCards.length > 0" :cards="largeCards" size="large" /> </div> </div> </template> <script> import { CardSizes } from 'laravel-nova' export default { metaInfo() { return { title: `${this.label}`, } }, data: () => ({ label: '', cards: '' }), props: { name: { type: String, required: false, default: 'main', }, }, watch: { name() { this.fetchDashboard() }, }, created() { this.fetchDashboard() }, methods: { async fetchDashboard() { const { data: { label, cards }, } = await Nova.request() .get(this.dashboardEndpoint, { params: this.extraCardParams, }) .catch(e => { this.$router.push({ name: '404' }) }) this.label = label this.cards = cards }, }, computed: { /** * Get the endpoint for this dashboard. */ dashboardEndpoint() { return `/nova-api/dashboards/${this.name}` }, /** * Determine whether we have cards to show on the Dashboard */ shouldShowCards() { return this.cards.length > 0 }, /** * Return the small cards used for the Dashboard */ smallCards() { return _.filter(this.cards, c => CardSizes.indexOf(c.width) !== -1) }, /** * Return the full-width cards used for the Dashboard */ largeCards() { return _.filter(this.cards, c => c.width == 'full') }, /** * Get the extra card params to pass to the endpoint. */ extraCardParams() { return null }, }, } </script>