mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
import axios from 'axios'
|
|
import { defineStore } from 'pinia'
|
|
import { useGlobalStore } from '@/scripts/admin/stores/global'
|
|
import { handleError } from '@/scripts/helpers/error-handling'
|
|
|
|
export const useDashboardStore = (useWindow = false) => {
|
|
const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
|
|
const { global } = window.i18n
|
|
|
|
return defineStoreFunc({
|
|
id: 'dashboard',
|
|
|
|
state: () => ({
|
|
stats: {
|
|
totalAmountDue: 0,
|
|
totalCustomerCount: 0,
|
|
totalInvoiceCount: 0,
|
|
totalEstimateCount: 0,
|
|
},
|
|
|
|
chartData: {
|
|
months: [],
|
|
invoiceTotals: [],
|
|
expenseTotals: [],
|
|
receiptTotals: [],
|
|
netIncomeTotals: [],
|
|
},
|
|
|
|
totalSales: null,
|
|
totalReceipts: null,
|
|
totalExpenses: null,
|
|
totalNetIncome: null,
|
|
|
|
recentDueInvoices: [],
|
|
recentEstimates: [],
|
|
|
|
isDashboardDataLoaded: false,
|
|
}),
|
|
|
|
actions: {
|
|
loadData(params) {
|
|
return new Promise((resolve, reject) => {
|
|
axios
|
|
.get(`/api/v1/dashboard`, { params })
|
|
.then((response) => {
|
|
// Stats
|
|
this.stats.totalAmountDue = response.data.total_amount_due
|
|
this.stats.totalCustomerCount = response.data.total_customer_count
|
|
this.stats.totalInvoiceCount = response.data.total_invoice_count
|
|
this.stats.totalEstimateCount = response.data.total_estimate_count
|
|
|
|
// Dashboard Chart
|
|
if (this.chartData && response.data.chart_data) {
|
|
this.chartData.months = response.data.chart_data.months
|
|
this.chartData.invoiceTotals =
|
|
response.data.chart_data.invoice_totals
|
|
this.chartData.expenseTotals =
|
|
response.data.chart_data.expense_totals
|
|
this.chartData.receiptTotals =
|
|
response.data.chart_data.receipt_totals
|
|
this.chartData.netIncomeTotals =
|
|
response.data.chart_data.net_income_totals
|
|
}
|
|
|
|
// Dashboard Chart Labels
|
|
this.totalSales = response.data.total_sales
|
|
this.totalReceipts = response.data.total_receipts
|
|
this.totalExpenses = response.data.total_expenses
|
|
this.totalNetIncome = response.data.total_net_income
|
|
|
|
// Dashboard Table Data
|
|
this.recentDueInvoices = response.data.recent_due_invoices
|
|
this.recentEstimates = response.data.recent_estimates
|
|
|
|
this.isDashboardDataLoaded = true
|
|
|
|
resolve(response)
|
|
})
|
|
.catch((err) => {
|
|
handleError(err)
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
},
|
|
})()
|
|
}
|