82 lines
2.9 KiB
JavaScript
82 lines
2.9 KiB
JavaScript
import { create } from 'zustand';
|
|
import { dashboardFleetService } from '../services/dashboardFleetService';
|
|
|
|
export const useFleetDashboard = create((set) => ({
|
|
metrics: {
|
|
totalPlacas: null,
|
|
placasPorBase: null,
|
|
placasPorAno: null,
|
|
placasPorCategoria: null, // Novo
|
|
placasPorModelo: null, // Novo
|
|
placasPorTipo: null, // Novo
|
|
placasPorStatus: null,
|
|
placasPorManutencao: null,
|
|
placasPorProprietario: null, // Novo
|
|
disponibilidade: null,
|
|
monitoramentoPorUnidade: null,
|
|
sinistrosPorStatus: null,
|
|
manutencaoPorStatus: null
|
|
},
|
|
loading: false,
|
|
error: null,
|
|
|
|
fetchAllMetrics: async () => {
|
|
set({ loading: true, error: null });
|
|
try {
|
|
// Executa todas as promises em paralelo para carregar o dashboard
|
|
const [
|
|
totalPlacas,
|
|
placasPorBase,
|
|
placasPorAno,
|
|
placasPorCategoria,
|
|
placasPorModelo,
|
|
placasPorTipo,
|
|
placasPorStatus,
|
|
placasPorManutencao,
|
|
placasPorProprietario,
|
|
disponibilidade,
|
|
monitoramentoPorUnidade,
|
|
sinistrosPorStatus,
|
|
manutencaoPorStatus
|
|
] = await Promise.all([
|
|
dashboardFleetService.getTotalPlacas().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorBase().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorAno().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorCategoria().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorModelo().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorTipo().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorStatus().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorManutencao().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getPlacasPorProprietario().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getDisponibilidade().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getMonitoramentoPorUnidade().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getSinistrosPorStatus().catch(err => ({ error: err.message })),
|
|
dashboardFleetService.getManutencaoPorStatus().catch(err => ({ error: err.message }))
|
|
]);
|
|
|
|
set({
|
|
metrics: {
|
|
totalPlacas,
|
|
placasPorBase,
|
|
placasPorAno,
|
|
placasPorCategoria,
|
|
placasPorModelo,
|
|
placasPorTipo,
|
|
placasPorStatus,
|
|
placasPorManutencao,
|
|
placasPorProprietario,
|
|
disponibilidade,
|
|
monitoramentoPorUnidade,
|
|
sinistrosPorStatus,
|
|
manutencaoPorStatus
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('Erro geral no dashboard:', error);
|
|
set({ error: 'Falha ao carregar indicadores.' });
|
|
} finally {
|
|
set({ loading: false });
|
|
}
|
|
}
|
|
}));
|