add nova
This commit is contained in:
61
nova/resources/js/mixins/HasCards.js
Normal file
61
nova/resources/js/mixins/HasCards.js
Normal file
@@ -0,0 +1,61 @@
|
||||
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
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user