pramod_Bug#62CreateActivity #40

Merged
vikas.nale merged 4 commits from pramod_Bug#62CreateActivity into Issues_April_4W 2025-04-20 08:46:49 +00:00
3 changed files with 51 additions and 30 deletions

View File

@ -1,8 +1,23 @@
import React, { useEffect } from "react"; import React, { useEffect,useState } from "react";
import WorkItem from "./WorkItem"; import WorkItem from "./WorkItem";
import {useProjectDetails} from "../../../hooks/useProjects";
import {getCachedData} from "../../../slices/apiDataManager";
const WorkArea = ( {workArea, floor, forBuilding} ) =>{
const [workItems,setWorkItems] =useState([])
useEffect( () =>
{
const project = getCachedData( "projectInfo" )
if (!project || !forBuilding?.id || !floor?.id || !workArea?.id) return;
const building = project.buildings?.find((b) => b.id === forBuilding.id);
const floors = building?.floors?.find((f) => f.id === floor.id);
const workAreas = floor?.workAreas?.find((wa) => wa.id === workArea.id);
setWorkItems(workAreas?.workItems || []);
}, [ workArea ,floor,floor] );
const WorkArea = ({ workArea, floor, forBuilding }) => {
useEffect(() => {}, [workArea]);
return ( return (
<React.Fragment key={workArea.id}> <React.Fragment key={workArea.id}>
<tr> <tr>
@ -25,7 +40,7 @@ const WorkArea = ({ workArea, floor, forBuilding }) => {
</td> </td>
</tr> </tr>
{workArea?.workItems && workArea.workItems.length > 0 ? ( {(workItems && workItems.length > 0) && (
<tr className="overflow-auto"> <tr className="overflow-auto">
<td colSpan={4}> <td colSpan={4}>
<table className="table mx-1"> <table className="table mx-1">
@ -72,7 +87,8 @@ const WorkArea = ({ workArea, floor, forBuilding }) => {
</table> </table>
</td> </td>
</tr> </tr>
) : null} )}
{!workItems && <p>No item</p>}
</React.Fragment> </React.Fragment>
); );
}; };

View File

@ -32,6 +32,11 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
}; };
const hasWorkItem = NewWorkItem && NewWorkItem; const hasWorkItem = NewWorkItem && NewWorkItem;
useEffect(() => {
const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el));
}, []);
return ( return (
<> <>
@ -56,10 +61,7 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
</td> </td>
{/* for mobile view */} {/* for mobile view */}
<td className="text-center d-sm-none d-sm-table-cell"> <td className="text-center d-sm-none d-sm-table-cell">
{hasWorkItem {NewWorkItem?.workItem?.completedWork}/{" "}
? NewWorkItem?.workItem?.completedWork || workItem?.completedWork
: "NA"}
/{" "}
{hasWorkItem {hasWorkItem
? NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork ? NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork
: "NA"} : "NA"}
@ -71,9 +73,7 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
: "NA"} : "NA"}
</td> </td>
<td className="text-center d-none d-md-table-cell"> <td className="text-center d-none d-md-table-cell">
{hasWorkItem {NewWorkItem?.workItem?.completedWork}
? NewWorkItem?.workItem?.completedWork || workItem?.completedWork
: "NA"}
</td> </td>
{/* ************************************************ */} {/* ************************************************ */}
<td className="text-center" style={{ width: "15%" }}> <td className="text-center" style={{ width: "15%" }}>
@ -89,12 +89,7 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
), ),
height: "5px", height: "5px",
}} }}
aria-valuenow={ aria-valuenow={NewWorkItem?.workItem?.completedWor}
hasWorkItem
? NewWorkItem?.workItem?.completedWork ||
workItem?.completedWork
: 0
}
aria-valuemin="0" aria-valuemin="0"
aria-valuemax={ aria-valuemax={
hasWorkItem hasWorkItem
@ -126,14 +121,23 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
type="button" type="button"
className="btn p-0 dropdown-toggle hide-arrow" className="btn p-0 dropdown-toggle hide-arrow"
> >
<i className="bx bxs-edit me-2 text-primary"></i> <i
className="bx bxs-edit me-2 text-primary"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Edit Activity"
data-bs-original-title="Edit Activity"
></i>
</button> </button>
<button <button
aria-label="Delete" aria-label="Delete"
type="button" type="button"
className="btn p-0 dropdown-toggle hide-arrow" className="btn p-0 dropdown-toggle hide-arrow"
> >
<i className="bx bx-trash me-1 text-danger"></i> <i className="bx bx-trash me-1 text-danger" data-bs-toggle="tooltip"
data-bs-placement="top"
title="Delete Activity"
data-bs-original-title="Delete Activity"></i>
</button> </button>
</div> </div>
</td> </td>
@ -149,7 +153,7 @@ const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea }) => {
<div className="dropdown-menu dropdown-menu-end m-0"> <div className="dropdown-menu dropdown-menu-end m-0">
{" "} {" "}
<a className="dropdown-item"> <a className="dropdown-item ">
{" "} {" "}
<i className="bx bxs-edit me-2 text-primary"></i>Edit <i className="bx bxs-edit me-2 text-primary"></i>Edit
</a> </a>

View File

@ -12,7 +12,7 @@ import ProjectModal from "./ProjectModal";
import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { useHasUserPermission } from "../../hooks/useHasUserPermission";
import { MANAGE_PROJECT_INFRA } from "../../utils/constants"; import { MANAGE_PROJECT_INFRA } from "../../utils/constants";
import InfraTable from "./Infrastructure/InfraTable"; import InfraTable from "./Infrastructure/InfraTable";
import { cacheData, getCachedData } from "../../slices/apiDataManager"; import { cacheData, clearCacheKey, getCachedData } from "../../slices/apiDataManager";
import { useProjectDetails } from "../../hooks/useProjects"; import { useProjectDetails } from "../../hooks/useProjects";
const ProjectInfra = ({ const ProjectInfra = ({
@ -21,7 +21,7 @@ const ProjectInfra = ({
eachSiteEngineer, eachSiteEngineer,
}) => { }) => {
const [expandedBuildings, setExpandedBuildings] = useState([]); const [expandedBuildings, setExpandedBuildings] = useState([]);
const { projects_Details, loading } = useProjectDetails(data.id); const { projects_Details,refetch, loading } = useProjectDetails(data.id);
const [project, setProject] = useState(projects_Details); const [project, setProject] = useState(projects_Details);
const [modalConfig, setModalConfig] = useState({ type: null, data: null }); const [modalConfig, setModalConfig] = useState({ type: null, data: null });
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@ -110,7 +110,6 @@ const ProjectInfra = ({
}; };
const handleTaskModelFormSubmit = (updatedModel) => { const handleTaskModelFormSubmit = (updatedModel) => {
// debugger
if (updatedModel.id == "") updatedModel.id = 0; if (updatedModel.id == "") updatedModel.id = 0;
const updatedProject = { ...project }; const updatedProject = { ...project };
@ -119,7 +118,6 @@ const ProjectInfra = ({
onDataChange("task-change"); onDataChange("task-change");
showToast("Details updated successfully.", "success"); showToast("Details updated successfully.", "success");
// setClearFormTrigger( true ); // setClearFormTrigger( true );
if (response?.data[0]) { if (response?.data[0]) {
const { workItemId, workItem } = response.data[0]; const { workItemId, workItem } = response.data[0];
@ -140,8 +138,8 @@ const ProjectInfra = ({
existingItem.workItemId === existingItem.workItemId ===
workItem.workItemId workItem.workItemId
) )
? workArea.workItems // If the workItemId already exists, keep the current workItems ? [...workArea.workItems] // Create a new array to trigger re-render
: [...workArea.workItems, workItem], : [...workArea.workItems, workItem],
} }
: workArea : workArea
), ),
@ -151,15 +149,18 @@ const ProjectInfra = ({
} }
: building : building
); );
updatedProject.buildings = updatedBuildings; updatedProject.buildings = updatedBuildings;
// workItem update, but having local state issue there for needed to calling api
clearCacheKey( "projectInfo" )
refetch()
setProject(updatedProject);
cacheData("projectInfo", { cacheData("projectInfo", {
projectId: updatedProject.id, projectId: updatedProject.id,
data: updatedProject, data: updatedProject,
}); });
console.log(project);
setProject( updatedProject );
closeTaskModel()
} }
}) })
.catch((error) => { .catch((error) => {