import React, { useState } from "react"; import LineChart from "../Charts/LineChart"; import { useProjects } from "../../hooks/useProjects"; import { useDashboard_Data } from "../../hooks/useDashboard_Data"; import { useSelector } from "react-redux"; const ProjectProgressChart = ({ ShowAllProject = true, DefaultRange = "15D", }) => { const selectedProject = useSelector( (store) => store.localVariables.projectId ); const { projects } = useProjects(); const [range, setRange] = useState(DefaultRange); const [showAllEmployees, setShowAllEmployees] = useState(false); 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.toLocaleDateString("en-CA"); const projectId = showAllEmployees || !selectedProject?.trim() ? null : selectedProject; const { dashboard_data, loading: isLineChartLoading } = useDashboard_Data({ days, FromDate, projectId, }); const sortedDashboardData = [...dashboard_data].sort( (a, b) => new Date(a.date) - new Date(b.date) ); 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", }) ); const lineChartCategoriesDates = sortedDashboardData.map((d) => new Date(d.date).toLocaleDateString("en-US", { weekday: "short", month: "short", day: "numeric", year: "numeric", }) ); const selectedProjectData = projects?.find((p) => p.id === selectedProject); const selectedProjectName = selectedProjectData?.shortName?.trim() ? selectedProjectData.shortName : selectedProjectData?.name; return (
{/* Left: Title */}
Project Progress

Progress Overview by Project

{/* Row 2: Time Range Buttons */}
{["1D", "1W", "15D", "1M", "3M", "1Y", "5Y"].map((key) => ( ))}
); }; export default ProjectProgressChart;