diff --git a/src/index.css b/src/index.css index 96f19f7b..21f8a532 100644 --- a/src/index.css +++ b/src/index.css @@ -130,3 +130,11 @@ button:focus-visible { .spin { animation: spin 1s linear infinite; } +.popover-body { + padding: 0 !important; +} +.custom-popover{ + max-height: 100px; + overflow: auto; + +} \ No newline at end of file diff --git a/src/pages/Activities/DailyTask.jsx b/src/pages/Activities/DailyTask.jsx index e220a6d0..9345ef4b 100644 --- a/src/pages/Activities/DailyTask.jsx +++ b/src/pages/Activities/DailyTask.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useRef } from "react"; import { useDispatch, useSelector } from "react-redux"; import Breadcrumb from "../../components/common/Breadcrumb"; import { dailyTask } from "../../data/masters"; @@ -38,6 +38,7 @@ const DailyTask = () => { setInitialized(true); } + }, [project_lodaing, projects, projectId, selectedProject, initialized]); const dispatch = useDispatch(selectedProject); @@ -55,11 +56,22 @@ const DailyTask = () => { ); const [TaskLists, setTaskLists] = useState([]); + const [dates, setDates] = useState([]); + const popoverRefs = useRef([]); useEffect(() => { setTaskLists(TaskList); }, [TaskList, selectedProject]); + useEffect(() => { + const AssignmentDates = [ + ...new Set(TaskLists.map((task) => task.assignmentDate.split("T")[0])), + ].sort((a, b) => new Date(b) - new Date(a)); + setDates(AssignmentDates); + + + }, [TaskLists]); + const [selectedTask, selectTask] = useState(null); const [comments, setComment] = useState(null); @@ -75,6 +87,21 @@ const DailyTask = () => { selectTask(task); openModal(); }; + + useEffect(() => { + popoverRefs.current.forEach((el) => { + console.log(el) + if (el) { + new bootstrap.Popover(el, { + trigger: "focus", + placement: "left", + html: true, + content: el.getAttribute("data-bs-content"), // use inline content from attribute + }); + } + }); + }, [dates]); + return ( <>
{ )} - {project_lodaing && - - Loading... - - } - {TaskLists?.length === 0 && !task_loading && !project_lodaing &&( - - - No Task Found - - - )} - - {TaskLists.map((task, index) => { + {dates.map((date, i) => { return ( - + - -
- {task.workItem.activityMaster.activityName || - "No Activity Name"} -
-
- {" "} - -
- - - {task.plannedTask || "NA"} / - {task.workItem.plannedWork - - task.workItem.completedWork} - - {task.completedTask} - {formatDate(task.assignmentDate)} - -
- {task.teamMembers.slice(0, 3).map((member) => ( -
- {/* Avatar */} - - {member?.firstName.slice(0, 1)} - -
- ))} - {task.teamMembers.length > 3 && ( -
- - +{task.teamMembers.length - 3} - -
- )} -
- - -
- - -
+ + {date} + {TaskLists.filter((task) => + task.assignmentDate.includes(date) + ).map((task, index) => { + const refIndex = index * 10 + i; + console.log(refIndex) + return ( + + + +
+ {task.workItem.activityMaster + .activityName || "No Activity Name"} +
+
+ {" "} + +
+ + + {task.plannedTask || "NA"} / + {task.workItem.plannedWork - + task.workItem.completedWork} + + {task.completedTask} + {formatDate(task.assignmentDate)} + +
+ (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( + (member) => ` +
+
+ + ${member?.firstName?.charAt(0) || ""}${member?.lastName?.charAt(0) || ""} + +
+ ${member.firstName} ${member.lastName} +
+ ` + ) + .join('')} +
+ `} + > + {task.teamMembers + .slice(0, 3) + .map((member) => ( +
+ {/* Avatar */} + + {member?.firstName.slice(0, 1)} + +
+ ))} + {task.teamMembers.length > 3 && ( +
+ + +{task.teamMembers.length - 3} + +
+ )} +
+ + +
+ + +
+ + +
+ ); + })}
); })}