diff --git a/src/pages/Activities/DailyTask.jsx b/src/pages/Activities/DailyTask.jsx
index 55947684..41e7ff9e 100644
--- a/src/pages/Activities/DailyTask.jsx
+++ b/src/pages/Activities/DailyTask.jsx
@@ -14,7 +14,9 @@ import FilterIcon from "../../components/common/FilterIcon"; // Import the Filte
const DailyTask = () => {
const [searchParams] = useSearchParams();
const projectIdFromUrl = searchParams.get("project");
- const selectedProject = useSelector((store) => store.localVariables.projectId);
+ const selectedProject = useSelector(
+ (store) => store.localVariables.projectId
+ );
const {
projects,
loading: project_loading,
@@ -26,7 +28,7 @@ const DailyTask = () => {
// State for filters (moved to FilterIcon, but we need to receive them here)
const [filters, setFilters] = useState({
- selectedBuilding: '',
+ selectedBuilding: "",
selectedFloors: [],
selectedActivities: [],
});
@@ -42,7 +44,14 @@ const DailyTask = () => {
}
setInitialized(true);
}
- }, [project_loading, projects, projectIdFromUrl, selectedProject, initialized, dispatch]);
+ }, [
+ project_loading,
+ projects,
+ projectIdFromUrl,
+ selectedProject,
+ initialized,
+ dispatch,
+ ]);
const [dateRange, setDateRange] = useState({ startDate: "", endDate: "" });
@@ -68,29 +77,40 @@ const DailyTask = () => {
let filteredTasks = TaskList;
if (filters.selectedBuilding) {
- filteredTasks = filteredTasks.filter(task =>
- task?.workItem?.workArea?.floor?.building?.name === filters.selectedBuilding
+ filteredTasks = filteredTasks.filter(
+ (task) =>
+ task?.workItem?.workArea?.floor?.building?.name ===
+ filters.selectedBuilding
);
}
if (filters.selectedFloors.length > 0) {
- filteredTasks = filteredTasks.filter(task =>
- filters.selectedFloors.includes(task?.workItem?.workArea?.floor?.floorName)
+ filteredTasks = filteredTasks.filter((task) =>
+ filters.selectedFloors.includes(
+ task?.workItem?.workArea?.floor?.floorName
+ )
);
}
if (filters.selectedActivities.length > 0) {
- filteredTasks = filteredTasks.filter(task =>
- filters.selectedActivities.includes(task?.workItem?.activityMaster?.activityName)
+ filteredTasks = filteredTasks.filter((task) =>
+ filters.selectedActivities.includes(
+ task?.workItem?.activityMaster?.activityName
+ )
);
}
setTaskLists(filteredTasks);
} else {
- // If TaskList is null (e.g., during initial load or project change before data arrives),
- // ensure TaskLists is also empty to avoid displaying stale data.
- setTaskLists([]);
+ // If TaskList is null (e.g., during initial load or project change before data arrives),
+ // ensure TaskLists is also empty to avoid displaying stale data.
+ setTaskLists([]);
}
- }, [TaskList, filters.selectedBuilding, filters.selectedFloors, filters.selectedActivities]);
+ }, [
+ TaskList,
+ filters.selectedBuilding,
+ filters.selectedFloors,
+ filters.selectedActivities,
+ ]);
useEffect(() => {
const AssignmentDates = [
@@ -119,7 +139,11 @@ const DailyTask = () => {
useEffect(() => {
// Ensure Bootstrap's Popover is initialized correctly
popoverRefs.current.forEach((el) => {
- if (el && window.bootstrap && typeof window.bootstrap.Popover === 'function') {
+ if (
+ el &&
+ window.bootstrap &&
+ typeof window.bootstrap.Popover === "function"
+ ) {
// Dispose existing popovers to prevent duplicates if component re-renders
const existingPopover = window.bootstrap.Popover.getInstance(el);
if (existingPopover) {
@@ -137,7 +161,11 @@ const DailyTask = () => {
// Cleanup function for popovers when component unmounts or dependencies change
return () => {
popoverRefs.current.forEach((el) => {
- if (el && window.bootstrap && typeof window.bootstrap.Popover === 'function') {
+ if (
+ el &&
+ window.bootstrap &&
+ typeof window.bootstrap.Popover === "function"
+ ) {
const existingPopover = window.bootstrap.Popover.getInstance(el);
if (existingPopover) {
existingPopover.dispose();
@@ -155,14 +183,18 @@ const DailyTask = () => {
// --- IMPORTANT: Clear old data immediately to show loading state ---
setTaskLists([]); // This makes the table empty, allowing the spinner to show
// Reset filters when project changes (communicate to FilterIcon to clear)
- setFilters({ selectedBuilding: '', selectedFloors: [], selectedActivities: [] });
+ setFilters({
+ selectedBuilding: "",
+ selectedFloors: [],
+ selectedActivities: [],
+ });
};
return (
<>
{/* Report Task Modal */}
{
closeModal={closeModal}
refetch={refetch}
/>
- {isModalOpen &&
} {/* Add backdrop */}
+ {isModalOpen &&
}{" "}
+ {/* Add backdrop */}
{/* Report Task Comments Modal */}
@@ -188,7 +221,8 @@ const DailyTask = () => {
commentsData={comments}
closeModal={closeCommentModal}
/>
- {isModalOpenComment &&
} {/* Add backdrop */}
+ {isModalOpenComment &&
}{" "}
+ {/* Add backdrop */}
@@ -198,7 +232,7 @@ const DailyTask = () => {
{ label: "Daily Progress Report", link: null },
]}
>
-
+
@@ -258,94 +292,117 @@ const DailyTask = () => {
{/* --- Spinner when tasks are loading --- */}
- {task_loading && (
+ {(task_loading || project_loading) && (
- {/* ColSpan set to 6 based on your table headers */}
-
-
Loading...
+
+ {" "}
+ {/* ColSpan set to 6 based on your table headers */}
+
+
+ Loading...
+
+
Loading Tasks...
- Loading Tasks...
)}
{/* --- "No Reports Found" message only if not loading and no tasks --- */}
- {!task_loading && TaskLists.length === 0 && (
-
- {/* ColSpan set to 6 */}
- No Reports Found
-
-
- )}
+ {!task_loading &&
+ !project_loading &&
+ TaskLists.length === 0 && (
+
+
+
+ {" "}
+ {/* ColSpan set to 6 */}
+
No Reports Found
+
+
+
+ )}
{/* --- Render tasks when not loading and tasks exist --- */}
- {!task_loading && TaskLists.length > 0 && dates.map((date, i) => {
- const tasksForDate = TaskLists.filter((task) =>
- task.assignmentDate.includes(date)
- );
- // Only render the date header if there are tasks for that date after filtering
- if (tasksForDate.length === 0) return null;
+ {!task_loading &&
+ TaskLists.length > 0 &&
+ dates.map((date, i) => {
+ const tasksForDate = TaskLists.filter((task) =>
+ task.assignmentDate.includes(date)
+ );
+ // Only render the date header if there are tasks for that date after filtering
+ if (tasksForDate.length === 0) return null;
- return (
-
-
- {/* ColSpan set to 6 */}
- {moment(date).format("DD-MM-YYYY")}
-
-
- {tasksForDate.map((task, index) => {
- const refIndex = `${i}-${index}`;
- return (
-
-
-
-
- {task.workItem.activityMaster
- .activityName || "No Activity Name"}
-
-
-
- {" "}
- {
- task?.workItem?.workArea?.floor
- ?.building?.name
- }{" "}
- {" "}
- {
- task?.workItem?.workArea?.floor
- ?.floorName
- }{" "}
-
+ return (
+
+
+
+ {" "}
+ {/* ColSpan set to 6 */}
+
+ {moment(date).format("DD-MM-YYYY")}
+
+
+
+ {tasksForDate.map((task, index) => {
+ const refIndex = `${i}-${index}`;
+ return (
+
+
+
+
+ {task.workItem.activityMaster
+ .activityName || "No Activity Name"}
+
+
+
{" "}
-
- {task?.workItem?.workArea?.areaName}
-
-
-
-
- {task.plannedTask || "NA"} /
- {task.workItem.plannedWork -
- task.workItem.completedWork}
-
- {task.completedTask}
- {moment(task.assignmentDate).format("DD-MM-YYYY")}
-
-
- (popoverRefs.current[refIndex] = el)
- }
- tabIndex="0"
- className="d-flex align-items-center avatar-group justify-content-center"
- data-bs-toggle="popover"
- data-bs-trigger="focus"
- data-bs-placement="left"
- data-bs-html="true"
- data-bs-content={`
+ {
+ task?.workItem?.workArea?.floor
+ ?.building?.name
+ }{" "}
+ {" "}
+ {
+ task?.workItem?.workArea?.floor
+ ?.floorName
+ }{" "}
+
+ {" "}
+
+ {task?.workItem?.workArea?.areaName}
+
+
+
+
+ {task.plannedTask || "NA"} /
+ {task.workItem.plannedWork -
+ task.workItem.completedWork}
+
+ {task.completedTask}
+
+ {moment(task.assignmentDate).format(
+ "DD-MM-YYYY"
+ )}
+
+
+
+ (popoverRefs.current[refIndex] = el)
+ }
+ tabIndex="0"
+ className="d-flex align-items-center avatar-group justify-content-center"
+ data-bs-toggle="popover"
+ data-bs-trigger="focus"
+ data-bs-placement="left"
+ data-bs-html="true"
+ data-bs-content={`
${task.teamMembers
.map(
@@ -353,84 +410,93 @@ const DailyTask = () => {
- ${member?.firstName?.charAt(0) || ""
- }${member?.lastName?.charAt(0) || ""
- }
+ ${
+ member?.firstName?.charAt(
+ 0
+ ) || ""
+ }${
+ member?.lastName?.charAt(0) || ""
+ }
-
${member.firstName} ${member.lastName
- }
+
${member.firstName} ${
+ member.lastName
+ }
`
)
.join("")}
`}
- >
- {task.teamMembers
- .slice(0, 3)
- .map((member) => (
+ >
+ {task.teamMembers
+ .slice(0, 3)
+ .map((member) => (
+
+
+ {member?.firstName.slice(0, 1)}
+
+
+ ))}
+ {task.teamMembers.length > 3 && (
-
- {member?.firstName.slice(0, 1)}
+
+ +{task.teamMembers.length - 3}
- ))}
- {task.teamMembers.length > 3 && (
-
-
- +{task.teamMembers.length - 3}
-
-
- )}
-
-
-
-
-
+
+
+
+ {
- selectTask(task);
- openModal();
- }}
- >
- Report
-
- {
- setComment(task);
- openComment();
- }}
- >
- Comment
-
-
-
-
-
- );
- })}
-
- );
- })}
+ onClick={() => {
+ selectTask(task);
+ openModal();
+ }}
+ >
+ Report
+
+ {
+ setComment(task);
+ openComment();
+ }}
+ >
+ Comment
+
+
+
+
+
+ );
+ })}
+
+ );
+ })}