From e485066bd116eb05070daf9608b9eafbba2de951 Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Wed, 23 Jul 2025 15:45:02 +0530 Subject: [PATCH 1/2] Adding Search functionality in Assign Task popup when user can search employee by its name and jobroles. --- src/components/Project/AssignTask.jsx | 52 ++++++++++++++++++++------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/src/components/Project/AssignTask.jsx b/src/components/Project/AssignTask.jsx index 2ab01e6e..c684ef49 100644 --- a/src/components/Project/AssignTask.jsx +++ b/src/components/Project/AssignTask.jsx @@ -48,6 +48,9 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { const infoRef = useRef(null); const infoRef1 = useRef(null); + // State for search term + const [searchTerm, setSearchTerm] = useState(""); + useEffect(() => { if (typeof bootstrap !== "undefined") { if (infoRef.current) { @@ -129,12 +132,25 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { setSelectedRole(event.target.value); }; - const filteredEmployees = - selectedRole === "all" - ? employees - : employees?.filter( - (emp) => String(emp.jobRoleId || "") === selectedRole - ); + const handleSearchChange = (event) => { + setSearchTerm(event.target.value); + }; + + // Filter employees first by role, then by search term AND job role name + const filteredEmployees = employees?.filter((emp) => { + const matchesRole = + selectedRole === "all" || String(emp.jobRoleId || "") === selectedRole; + + // Convert both first and last names and job role name to lowercase for case-insensitive matching + const fullName = `${emp.firstName} ${emp.lastName}`.toLowerCase(); + const jobRoleName = jobRoleData?.find((role) => role.id === emp.jobRoleId)?.name?.toLowerCase() || ""; + const searchLower = searchTerm.toLowerCase(); + + // Check if the full name OR job role name includes the search term + const matchesSearch = fullName.includes(searchLower) || jobRoleName.includes(searchLower); + + return matchesRole && matchesSearch; + }); const onSubmit = (data) => { const selectedEmployeeIds = data.selectedEmployees; @@ -159,6 +175,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { reset(); onClose(); }; + return (

Assign Task

@@ -191,7 +208,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
- Select Team + Select Team
{displayedSelection}
{ ))} + {/* Search Field for Employees - Moved inline and pushed to the right */} +
@@ -297,7 +323,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { ) : (

- No employees found for the selected role. + No employees found for the selected role or search term.

)} @@ -432,11 +458,11 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { id="defaultFormControlInput" aria-describedby="defaultFormControlHelp" /> - - { - assignData?.workItem?.workItem?.activityMaster + + { + assignData?.workItem?.activityMaster ?.unitOfMeasurement - } + }
{ ); }; -export default AssignTask; +export default AssignTask; \ No newline at end of file From 8fd8f395c98e598bc28f81d4bc370bc478ab1053 Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Wed, 23 Jul 2025 15:47:41 +0530 Subject: [PATCH 2/2] Adding Search functionality in Assigned Task popup when user search by employee name and jobroles. --- src/components/Project/AssignTask.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Project/AssignTask.jsx b/src/components/Project/AssignTask.jsx index c684ef49..43b5b5bc 100644 --- a/src/components/Project/AssignTask.jsx +++ b/src/components/Project/AssignTask.jsx @@ -568,4 +568,4 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { ); }; -export default AssignTask; \ No newline at end of file +export default AssignTask; \ No newline at end of file