fixed searching for employee
This commit is contained in:
parent
d818ea9265
commit
fca3f03a44
@ -190,8 +190,9 @@ export const useUpdateEmployee = () =>
|
|||||||
onSuccess: (_, variables) => {
|
onSuccess: (_, variables) => {
|
||||||
const id = variables.id || variables.employeeId;
|
const id = variables.id || variables.employeeId;
|
||||||
const isAllEmployee = variables.IsAllEmployee;
|
const isAllEmployee = variables.IsAllEmployee;
|
||||||
|
|
||||||
// Cache invalidation
|
// Cache invalidation
|
||||||
queryClient.invalidateQueries( {queryKey:[ 'allEmployee', isAllEmployee ] });
|
queryClient.invalidateQueries( {queryKey:[ 'allEmployees'] });
|
||||||
// queryClient.invalidateQueries(['employeeProfile', id]);
|
// queryClient.invalidateQueries(['employeeProfile', id]);
|
||||||
queryClient.invalidateQueries( {queryKey: [ 'projectEmployees' ]} );
|
queryClient.invalidateQueries( {queryKey: [ 'projectEmployees' ]} );
|
||||||
queryClient.removeQueries( {queryKey: [ "empListByProjectAllocated" ]} );
|
queryClient.removeQueries( {queryKey: [ "empListByProjectAllocated" ]} );
|
||||||
|
@ -70,37 +70,45 @@ const EmployeeList = () => {
|
|||||||
|
|
||||||
|
|
||||||
const applySearchFilter = (data, text) => {
|
const applySearchFilter = (data, text) => {
|
||||||
if (!text) {
|
if (!text) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
const lowercasedText = text.toLowerCase().trim();
|
|
||||||
|
|
||||||
return data.filter((item) => {
|
const lowercasedText = text.toLowerCase().trim();
|
||||||
const firstName = item.firstName || "";
|
|
||||||
const middleName = item.middleName || "";
|
|
||||||
const lastName = item.lastName || "";
|
|
||||||
|
|
||||||
const fullName = `${firstName} ${middleName} ${lastName}`.toLowerCase().trim().replace(/\s+/g, ' ');
|
return data.filter((item) => {
|
||||||
|
const firstName = item.firstName || "";
|
||||||
|
const middleName = item.middleName || "";
|
||||||
|
const lastName = item.lastName || "";
|
||||||
|
|
||||||
const email = item.email ? item.email.toLowerCase() : "";
|
const fullName = `${firstName} ${middleName} ${lastName}`
|
||||||
const phoneNumber = item.phoneNumber ? item.phoneNumber.toLowerCase() : "";
|
.toLowerCase()
|
||||||
const jobRole = item.jobRole ? item.jobRole.toLowerCase() : "";
|
.trim()
|
||||||
|
.replace(/\s+/g, " ");
|
||||||
|
|
||||||
|
const email = item.email?.toLowerCase() || "";
|
||||||
|
const phoneNumber = item.phoneNumber?.toLowerCase() || "";
|
||||||
|
const jobRole = item.jobRole?.toLowerCase() || "";
|
||||||
|
|
||||||
|
return (
|
||||||
|
fullName.includes(lowercasedText) ||
|
||||||
|
email.includes(lowercasedText) ||
|
||||||
|
phoneNumber.includes(lowercasedText) ||
|
||||||
|
jobRole.includes(lowercasedText)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
|
||||||
fullName.includes(value) ||
|
|
||||||
email.includes(value) ||
|
|
||||||
phoneNumber.includes(value) ||
|
|
||||||
jobRole.includes(value)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleSearch = (e) => {
|
const handleSearch = (e) => {
|
||||||
const value = e.target.value;
|
const value = e.target.value;
|
||||||
setSearchText(value);
|
setSearchText(value);
|
||||||
setCurrentPage(1);
|
setCurrentPage(1);
|
||||||
};
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
const filtered = applySearchFilter(employeeList, searchText);
|
||||||
|
setFilteredData(filtered);
|
||||||
|
}, [searchText, employeeList]);
|
||||||
|
|
||||||
|
|
||||||
const displayData = searchText ? filteredData : employeeList;
|
const displayData = searchText ? filteredData : employeeList;
|
||||||
@ -112,40 +120,54 @@ const EmployeeList = () => {
|
|||||||
setIsCreateModalOpen(true);
|
setIsCreateModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeModal = () => {
|
// const closeModal = () => {
|
||||||
setIsCreateModalOpen(false);
|
// setIsCreateModalOpen(false);
|
||||||
|
|
||||||
const modalElement = document.getElementById("managerole-modal");
|
// const modalElement = document.getElementById("managerole-modal");
|
||||||
if (modalElement && !showModal) {
|
// if (modalElement && !showModal) {
|
||||||
modalElement.classList.remove("show");
|
// modalElement.classList.remove("show");
|
||||||
modalElement.style.display = "none";
|
// modalElement.style.display = "none";
|
||||||
document.body.classList.remove("modal-open");
|
// document.body.classList.remove("modal-open");
|
||||||
document.querySelector(".modal-backdrop")?.remove();
|
// document.querySelector(".modal-backdrop")?.remove();
|
||||||
}
|
// }
|
||||||
setShowModal(false);
|
// setShowModal(false);
|
||||||
clearCacheKey("employeeProfile");
|
// clearCacheKey("employeeProfile");
|
||||||
recallEmployeeData(showInactive, showAllEmployees ? null : selectedProjectId); // Use selectedProjectId here
|
// recallEmployeeData(showInactive, showAllEmployees ? null : selectedProjectId); // Use selectedProjectId here
|
||||||
};
|
// };
|
||||||
const handleShow = () => setShowModal(true);
|
// const handleShow = () => setShowModal(true);
|
||||||
const handleClose = () => setShowModal( false );
|
// const handleClose = () => setShowModal( false );
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setCurrentPage(1)
|
if (!loading && Array.isArray(employees)) {
|
||||||
|
const sorted = [...employees].sort((a, b) => {
|
||||||
|
const nameA = `${a.firstName || ""}${a.middleName || ""}${a.lastName || ""}`.toLowerCase();
|
||||||
|
const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || ""}`.toLowerCase();
|
||||||
|
return nameA?.localeCompare(nameB);
|
||||||
|
});
|
||||||
|
|
||||||
if (!loading && Array.isArray(employees)) {
|
setEmployeeList((prevList) => {
|
||||||
// Sort by full name (firstName + lastName)
|
const prevJSON = JSON.stringify(prevList);
|
||||||
const sorted = [...employees].sort((a, b) => {
|
const nextJSON = JSON.stringify(sorted);
|
||||||
const nameA = `${a.firstName || ""}${a.middleName || ""}${b.lastName || ""
|
if (prevJSON !== nextJSON) {
|
||||||
}`.toLowerCase();
|
return sorted;
|
||||||
const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || ""
|
}
|
||||||
}`.toLowerCase();
|
return prevList;
|
||||||
return nameA?.localeCompare(nameB);
|
});
|
||||||
});
|
|
||||||
|
setFilteredData((prev) => {
|
||||||
|
const prevJSON = JSON.stringify(prev);
|
||||||
|
const nextJSON = JSON.stringify(sorted);
|
||||||
|
if (prevJSON !== nextJSON) {
|
||||||
|
return sorted;
|
||||||
|
}
|
||||||
|
return prev;
|
||||||
|
});
|
||||||
|
|
||||||
|
// set currentPage to 1 only if needed
|
||||||
|
setCurrentPage((prevPage) => (prevPage !== 1 ? 1 : prevPage));
|
||||||
|
}
|
||||||
|
}, [loading, employees, selectedProjectId, showAllEmployees]);
|
||||||
|
|
||||||
setEmployeeList(sorted);
|
|
||||||
setFilteredData(sorted);
|
|
||||||
}
|
|
||||||
}, [loading, employees, selectedProjectId, showAllEmployees]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -153,11 +175,11 @@ const EmployeeList = () => {
|
|||||||
setModelConfig(config);
|
setModelConfig(config);
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
// useEffect(() => {
|
||||||
if (modelConfig !== null) {
|
// if (modelConfig !== null) {
|
||||||
openModal();
|
// openModal();
|
||||||
}
|
// }
|
||||||
}, [modelConfig, isCreateModalOpen]);
|
// }, [modelConfig, isCreateModalOpen]);
|
||||||
|
|
||||||
const tableRef = useRef(null);
|
const tableRef = useRef(null);
|
||||||
const handleExport = (type) => {
|
const handleExport = (type) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user