From 47e458fe7ce0035ee1c41456bc62687db1f870f7 Mon Sep 17 00:00:00 2001 From: pramod mahajan Date: Tue, 15 Jul 2025 17:06:47 +0530 Subject: [PATCH] added choose all project option at dashboard --- src/components/Dashboard/Dashboard.jsx | 86 +- src/components/Layout/Header.jsx | 22 +- src/components/Project/ProjectInfra.jsx | 2 +- src/components/Project/ProjectNav.jsx | 2 +- src/components/Project/ProjectOverview.jsx | 292 ++++-- src/pages/Activities/AttendancePage.jsx | 23 +- src/pages/Activities/DailyTask.jsx | 12 +- src/pages/Activities/TaskPlannng.jsx | 16 +- src/pages/Gallary/ImageGallary.jsx | 13 +- src/pages/employee/EmployeeList.jsx | 1070 ++++++++++---------- src/pages/project/ProjectDetails.jsx | 16 +- src/pages/project/ProjectList.jsx | 13 +- src/slices/localVariablesSlice.jsx | 2 +- 13 files changed, 908 insertions(+), 661 deletions(-) diff --git a/src/components/Dashboard/Dashboard.jsx b/src/components/Dashboard/Dashboard.jsx index 8ca64981..78ebfb54 100644 --- a/src/components/Dashboard/Dashboard.jsx +++ b/src/components/Dashboard/Dashboard.jsx @@ -1,55 +1,71 @@ import React from "react"; +import { useSelector } from "react-redux"; // Import useSelector to access Redux state import { - useDashboardProjectsCardData, - useDashboardTeamsCardData, - useDashboardTasksCardData, +useDashboardProjectsCardData, +useDashboardTeamsCardData, +useDashboardTasksCardData, } from "../../hooks/useDashboard_Data"; import Projects from "./Projects"; import Teams from "./Teams"; import TasksCard from "./Tasks"; import ProjectCompletionChart from "./ProjectCompletionChart"; import ProjectProgressChart from "./ProjectProgressChart"; +import ProjectOverview from "../Project/ProjectOverview"; // import Attendance from "./Attendance"; const Dashboard = () => { - const { projectsCardData } = useDashboardProjectsCardData(); - const { teamsCardData } = useDashboardTeamsCardData(); - const { tasksCardData } = useDashboardTasksCardData(); +const { projectsCardData } = useDashboardProjectsCardData(); +const { teamsCardData } = useDashboardTeamsCardData(); +const { tasksCardData } = useDashboardTasksCardData(); - return ( -
-
- {/* Projects Card */} -
- -
+// Get the selected project ID from Redux store +const selectedProjectId = useSelector( +(store) => store.localVariables.projectId +); - {/* Teams Card */} -
- -
+// Determine if "All Projects" is selected +// selectedProjectId will be null when "All Projects" is chosen +const isAllProjectsSelected = selectedProjectId === null; - {/* Tasks Card */} -
- -
+return ( +
+
- {/* Bar Chart (Project Completion) */} -
- -
+{isAllProjectsSelected && ( +
+ +
+)} - {/* Line Chart (Project Progress) */} -
- -
- {/*
- -
*/} -
-
- ); +
+ +
+ +
+ +
+ + +{isAllProjectsSelected && ( +
+ +
+)} + +{! isAllProjectsSelected && ( +
+ +
+)} +
+ +
+ + +
+
+); }; export default Dashboard; \ No newline at end of file diff --git a/src/components/Layout/Header.jsx b/src/components/Layout/Header.jsx index 9023d007..476c73d0 100644 --- a/src/components/Layout/Header.jsx +++ b/src/components/Layout/Header.jsx @@ -27,9 +27,9 @@ const Header = () => { const { data, loading } = useMaster(); const navigate = useNavigate(); const HasManageProjectPermission = useHasUserPermission(MANAGE_PROJECT); - const isDashboard = location.pathname === "/dashboard"; - // const isDirectoryPath = location.pathname === "/directory"; + const isDirectoryPath = /^\/directory$/.test(location.pathname); + const isDashboard = /^\/dashboard$/.test(location.pathname); const getRole = (roles, joRoleId) => { if (!Array.isArray(roles)) return "User"; let role = roles.find((role) => role.id === joRoleId); @@ -37,7 +37,7 @@ const Header = () => { }; const handleLogout = (e) => { - e.preventDefault(); // Prevent default anchor behavior (e.g., page reload) + e.preventDefault(); logout(); }; @@ -105,14 +105,18 @@ const Header = () => { selectedProject === undefined && !getCachedData("hasReceived") ) { - dispatch(setProjectId(null)); // Set to null for "All Projects" + if(isDashboard){ + dispatch(setProjectId(null)); + }else{ + dispatch(setProjectId(projectNames[0]?.id)); + } } }, [projectNames, selectedProject, dispatch]); /** Check if current page is project details page or directory page */ // const isProjectPath = /^\/projects\/[a-f0-9-]{36}$/.test(location.pathname); - const isDirectoryPath = /^\/directory$/.test(location.pathname); + const handler = useCallback( async (data) => { @@ -141,12 +145,10 @@ const Header = () => { [HasManageProjectPermission, projectNames, fetchData] ); - // Correct way to dispatch an action on mount useEffect(() => { dispatch(changeMaster("Job Role")); }, [dispatch]); - // Event bus listeners for project changes useEffect(() => { eventBus.on("assign_project_one", handler); eventBus.on("project", newProjectHandler); @@ -174,7 +176,6 @@ const Header = () => { className="navbar-nav-right d-flex align-items-center justify-content-between" id="navbar-collapse" > - {/* Project Selection Dropdown */} {projectNames && !isDirectoryPath && (
@@ -194,7 +195,7 @@ const Header = () => { className="dropdown-menu" style={{ overflow: "auto", maxHeight: "300px" }} > - {/* Show "All Projects" only on dashboard */} + {isDashboard && (
  • )} - {/* Display project name on project details or directory pages */} - {/* { ({displayText})} */} - {/* User Profile and Shortcuts */}