import React, { useState } from 'react'; import HorizontalBarChart from '../Charts/HorizontalBarChart'; import LineChart from '../Charts/LineChart'; import { useProjects } from '../../hooks/useProjects'; import { useDashboard_Data, useDashboardProjectsCardData, useDashboardTeamsCardData, useDashboardTasksCardData, } from "../../hooks/useDashboard_Data"; const Dashboard = () => { const { projects,loading } = useProjects(); const [selectedProjectId, setSelectedProjectId] = useState('all'); const [range, setRange] = useState('1W'); const getDaysFromRange = (range) => { switch (range) { case '1D': return 1; case '1W': return 7; case '15D': return 15; case '1M': return 30; case '3M': return 90; case '1Y': return 365; case '5Y': return 1825; default: return 7; } }; const days = getDaysFromRange(range); const today = new Date(); const FromDate = today.toISOString().split('T')[0]; // Always today const { projectsCardData } = useDashboardProjectsCardData(); const { teamsCardData } = useDashboardTeamsCardData(); const { tasksCardData } = useDashboardTasksCardData(); const { dashboard_data, loading: isLineChartLoading } = useDashboard_Data({ days, FromDate, projectId: selectedProjectId === 'all' ? 0 : selectedProjectId, }); // Sort dashboard_data by date ascending const sortedDashboardData = [...dashboard_data].sort((a, b) => new Date(a.date) - new Date(b.date)); // Bar chart logic const projectNames = projects?.map(p => p.name) || []; const projectProgress = projects?.map(p => { const completed = p.completedWork || 0; const planned = p.plannedWork || 1; const percent = (completed / planned) * 100; return Math.min(Math.round(percent), 100); }) || []; // Line chart data const lineChartSeries = [ { name: 'Planned Work', data: sortedDashboardData.map(d => d.plannedTask || 0), }, { name: 'Completed Work', data: sortedDashboardData.map(d => d.completedTask || 0), }, ]; const lineChartCategories = sortedDashboardData.map(d => new Date(d.date).toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) ); return (
{/* Projects Card */}
Projects

{projectsCardData.totalProjects?.toLocaleString()}

Total

{projectsCardData.ongoingProjects?.toLocaleString()}

Ongoing
{/* Teams Card */}
Teams

{teamsCardData.totalEmployees?.toLocaleString()}

Total Employees

{teamsCardData.inToday?.toLocaleString()}

In Today
{/* Tasks Card */}
Tasks

{tasksCardData.totalTasks?.toLocaleString()}

Total

{tasksCardData.completedTasks?.toLocaleString()}

Completed
{/* Bar Chart */}
Projects

Total Projects Overview

{/* Line Chart */}
{/* Row 1: Title + Project Selector */}
Project Progress

Progress Overview by Project

  • {projects?.map((project) => (
  • ))}
{/* Row 2: Time Range Buttons */}
{['1D', '1W', '15D', '1M', '3M', '1Y', '5Y'].map((key) => ( ))}
); }; export default Dashboard;