62 lines
1.2 KiB
JavaScript
62 lines
1.2 KiB
JavaScript
import filter from 'lodash/filter'
|
|
|
|
export default {
|
|
props: {
|
|
loadCards: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
},
|
|
|
|
data: () => ({ cards: [] }),
|
|
|
|
/**
|
|
* Fetch all of the metrics panels for this view
|
|
*/
|
|
created() {
|
|
this.fetchCards()
|
|
},
|
|
|
|
watch: {
|
|
cardsEndpoint() {
|
|
this.fetchCards()
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
async fetchCards() {
|
|
// We disable fetching of cards when the component is being show
|
|
// on a resource detail view to avoid extra network requests
|
|
if (this.loadCards) {
|
|
const { data: cards } = await Nova.request().get(this.cardsEndpoint, {
|
|
params: this.extraCardParams,
|
|
})
|
|
this.cards = cards
|
|
}
|
|
},
|
|
},
|
|
|
|
computed: {
|
|
/**
|
|
* Determine whether we have cards to show on the Dashboard.
|
|
*/
|
|
shouldShowCards() {
|
|
return this.cards.length > 0
|
|
},
|
|
|
|
/**
|
|
* Determine if the cards array contains some detail-only cards.
|
|
*/
|
|
hasDetailOnlyCards() {
|
|
return filter(this.cards, c => c.onlyOnDetail == true).length > 0
|
|
},
|
|
|
|
/**
|
|
* Get the extra card params to pass to the endpoint.
|
|
*/
|
|
extraCardParams() {
|
|
return null
|
|
},
|
|
},
|
|
}
|