import React, { useState, useEffect } from "react"; import AssignRoleModel from "../AssignRole"; import { useParams } from "react-router-dom"; import EditActivityModal from "./EditActivityModal"; import { useHasUserPermission } from "../../../hooks/useHasUserPermission"; import { ASSIGN_REPORT_TASK, MANAGE_PROJECT_INFRA, MANAGE_TASK, } from "../../../utils/constants"; import ConfirmModal from "../../common/ConfirmModal"; import ProjectRepository from "../../../repositories/ProjectRepository"; import { useProjectDetails } from "../../../hooks/useProjects"; import showToast from "../../../services/toastService"; import { cacheData, clearCacheKey, getCachedData, } from "../../../slices/apiDataManager"; import { useDispatch } from "react-redux"; import { refreshData } from "../../../slices/localVariablesSlice"; const WorkItem = ({ key, workItem, forBuilding, forFloor, forWorkArea, deleteHandleTask, }) => { const { projectId } = useParams(); const [itemName, setItemName] = useState(""); const [NewWorkItem, setNewWorkItem] = useState(); const [isModalOpen, setIsModalOpen] = useState(false); const [showModal, setShowModal] = useState(false); const [showModal2, setShowModal2] = useState(false); const ManageTasks = useHasUserPermission(MANAGE_TASK); const ManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); const ManageAndAssignTak = useHasUserPermission(ASSIGN_REPORT_TASK); const [loadingDelete, setLoadingDelete] = useState(false); const project = getCachedData("projectInfo"); const dispatch = useDispatch(); const openModal = () => setIsModalOpen(true); const closeModal = () => setIsModalOpen(false); const getProgress = (planned, completed) => { return (completed * 100) / planned + "%"; }; const handleAssignTask = () => { setItemName(""); }; useEffect(() => { setNewWorkItem(workItem); }, [workItem]); let assigndata = { building: forBuilding, floor: forFloor, workArea: forWorkArea, workItem, }; const hasWorkItem = NewWorkItem && NewWorkItem; useEffect(() => { const tooltipTriggerList = Array.from( document.querySelectorAll('[data-bs-toggle="tooltip"]') ); tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el)); }, []); const showModal1 = () => setShowModal(true); const closeModal1 = () => setShowModal(false); const showModalDelete = () => setShowModal2(true); const closeModalDelete = () => setShowModal2(false); const handleSubmit = async () => { setLoadingDelete(true); let WorkItemId = workItem.workItemId || workItem.id; deleteHandleTask(WorkItemId); setLoadingDelete(false); closeModalDelete(); }; const PlannedWork = NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork; const CompletedWork = NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork; return ( <> {isModalOpen && (
)} {showModal && (
)} {showModal2 && (
)} {/* Activity Name - always visible */} {hasWorkItem ? NewWorkItem?.workItem?.activityMaster?.activityName || workItem.activityMaster?.activityName : "NA"} {/* Status - visible only on small screens */} {hasWorkItem ? NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork ?? "NA" : "NA"} /{" "} {hasWorkItem ? NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork : "NA"} {/* Category - visible on medium and above */} {hasWorkItem ? NewWorkItem?.workItem?.workCategoryMaster?.name || workItem.workCategoryMaster?.name || "NA" : "NA"} {hasWorkItem ? ( `${NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork ?? "0"}/${NewWorkItem?.workItem?.plannedWork ?? workItem?.plannedWork ?? "0"}` ) : ( "NA" )} {/* Progress Bar - always visible */}
{/* Actions - always visible */} {/* Desktop (md and up): inline icons */}
{!projectId && ManageAndAssignTak && PlannedWork !== CompletedWork && ( )} {ManageInfra && ( <> )}
{/* Mobile (sm only): dropdown with icons */}
); }; export default WorkItem;