From 895e3da21905bd5b3640c2dae3601d03d534d355 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Fri, 11 Apr 2025 15:45:08 +0530 Subject: [PATCH] refactor(Dashboard): enhance project data handling and improve chart integration --- src/components/Dashboard/Dashboard.jsx | 192 +++++++++++++++++-------- 1 file changed, 132 insertions(+), 60 deletions(-) diff --git a/src/components/Dashboard/Dashboard.jsx b/src/components/Dashboard/Dashboard.jsx index accb9235..6ce7b8ab 100644 --- a/src/components/Dashboard/Dashboard.jsx +++ b/src/components/Dashboard/Dashboard.jsx @@ -1,25 +1,57 @@ -import React from 'react'; +import React, { useState } from 'react'; import HorizontalBarChart from '../Charts/HorizontalBarChart'; import LineChart from '../Charts/LineChart'; -const dummyCategories = ['Project 1', 'Project 2', 'Project 3', 'Project 4', 'Project 5']; -const dummyData = [45, 38, 30, 25, 20]; - -const lineChartseries = [ - { - name: "Planned Projects", - data: [20, 25, 30, 35, 40, 45, 50] - }, - { - name: "Completed Projects", - data: [5, 15, 28, 36, 42, 46, 48] - } -]; - - -const lineChartCategories = ["January", "February", "March", "April", "May", "June", "July"]; - +import { useProjects } from '../../hooks/useProjects'; +import { + useDashboard_Data, + useDashboardProjectsCardData, + useDashboardTeamsCardData, + useDashboardTasksCardData, +} from "../../hooks/useDashboard_Data"; const Dashboard = () => { + const { projects } = useProjects(); + const [selectedProjectId, setSelectedProjectId] = useState('all'); + const [FromDate, setFromDate] = useState(() => { + const today = new Date(); + return today.toISOString().split('T')[0]; // YYYY-MM-DD + }); +const [days, setDays] = useState(10); +const { projectsCardData, } = useDashboardProjectsCardData(); +const { teamsCardData,} = useDashboardTeamsCardData(); +const { tasksCardData, } = useDashboardTasksCardData(); + + const { dashboard_data, loading: lineLoading } = useDashboard_Data({ + days, + FromDate, + projectId: selectedProjectId === 'all' ? 0 : selectedProjectId, + }); + + // 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: dashboard_data.map(d => d.plannedWork || 0), + }, + { + name: 'Completed Work', + data: dashboard_data.map(d => d.completedWork || 0), + }, + ]; + + const lineChartCategories = dashboard_data.map(d => + new Date(d.date).toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) + ); + return (
@@ -28,15 +60,15 @@ const Dashboard = () => {
-
Projects
+
Projects
-

25

+

{projectsCardData.totalProjects?.toLocaleString()}

Total
-

30

+

{projectsCardData.ongoingProjects?.toLocaleString()}

Ongoing
@@ -47,15 +79,15 @@ const Dashboard = () => {
-
Teams
+
Teams
-

500

+

{teamsCardData.totalEmployees?.toLocaleString()}

Total Employees
-

360

+

{teamsCardData.inToday?.toLocaleString()}

In Today
@@ -66,66 +98,106 @@ const Dashboard = () => {
-
Tasks
+
Tasks
-

10,000

+

{tasksCardData.totalTasks?.toLocaleString()}

Total
-

4,000

+

{tasksCardData.completedTasks?.toLocaleString()}

Completed
- {/* Chart Section */} -
-
-
-
-
Projects
-

Total Projects Overview

+ + {/* Bar Chart */} +
+
+
+
+
Projects
+

Total Projects Overview

-
+
-
-
-
-
-
Project Progress
-

Progress Overview by Project

+ + {/* Line Chart */} +
+
+
+
+
Project Progress
+

Progress Overview by Project

-
- - - +
+ {/* Project Dropdown */} +
+ + +
    +
  • + +
  • + {projects?.map((project) => ( +
  • + +
  • + ))} +
+
+ + {/* From Date */} + setFromDate(e.target.value)} + style={{ maxWidth: '150px' }} + /> + + {/* Days */} + setDays(Number(e.target.value))} + style={{ maxWidth: '100px' }} + />
-
- +
+ + {lineLoading &&

Loading...

}
+
);