import React, { useEffect, useState } from "react"; import WorkItem from "./WorkItem"; import { useProjectDetails, useProjectTasks } from "../../../hooks/useProjects"; import { cacheData } from "../../../slices/apiDataManager"; import { useDispatch, useSelector } from "react-redux"; import { refreshData } from "../../../slices/localVariablesSlice"; import ProjectRepository from "../../../repositories/ProjectRepository"; import showToast from "../../../services/toastService"; import { useHasUserPermission } from "../../../hooks/useHasUserPermission"; import { ASSIGN_REPORT_TASK, MANAGE_PROJECT_INFRA, MANAGE_TASK, } from "../../../utils/constants"; import { useParams } from "react-router-dom"; import ProgressBar from "../../common/ProgressBar"; const WorkArea = ({ workArea, floor, forBuilding }) => { const selectedProject = useSelector((store) => store.localVariables.projectId); const { projects_Details, loading } = useProjectDetails(selectedProject); const [IsExpandedArea, setIsExpandedArea] = useState(false); const dispatch = useDispatch(); const [Project, setProject] = useState(); const { projectId } = useParams(); const ManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); const ManageAndAssignTak = useHasUserPermission(ASSIGN_REPORT_TASK); const { ProjectTaskList, isLoading } = useProjectTasks(workArea.id, IsExpandedArea); const [workAreaStatus, setWorkAreaStatus] = useState({ completed: 0, planned: 100, }); useEffect(() => { setProject(projects_Details); }, [projects_Details]); useEffect(() => { const totalCompleted = ProjectTaskList?.reduce( (sum, i) => sum + (i?.workItem?.completedWork || 0), 0 ); const totalPlanned = ProjectTaskList?.reduce( (sum, i) => sum + (i?.workItem?.plannedWork || 0), 0 ); setWorkAreaStatus({ completed: totalCompleted, planned: totalPlanned }); }, [ProjectTaskList]); useEffect(() => { const collapseElement = document.getElementById(`collapse-${workArea.id}`); const handleShown = () => setIsExpandedArea(true); const handleHidden = () => setIsExpandedArea(false); collapseElement?.addEventListener("shown.bs.collapse", handleShown); collapseElement?.addEventListener("hidden.bs.collapse", handleHidden); return () => { collapseElement?.removeEventListener("shown.bs.collapse", handleShown); collapseElement?.removeEventListener("hidden.bs.collapse", handleHidden); }; }, [workArea.id]); return (

{isLoading ? (
Loading activities...
) : ProjectTaskList?.length > 0 ? ( {(ManageInfra || (!projectId && ManageAndAssignTak)) && ( )} {ProjectTaskList.map((workItem,index) => ( ))}
Activity Status Category Completed/Planned Today's Planned Progress Actions
) : (
No activities available for this work area.
)}
); }; export default WorkArea;