handled local project selection independently to avoid mutating global state

This commit is contained in:
Pramod Mahajan 2025-06-10 16:08:30 +05:30
parent c1da916ca7
commit 488a92e5d1

View File

@ -22,10 +22,11 @@ import {
import EmployeeRepository from "../../repositories/EmployeeRepository"; import EmployeeRepository from "../../repositories/EmployeeRepository";
import ManageEmployee from "../../components/Employee/ManageEmployee"; import ManageEmployee from "../../components/Employee/ManageEmployee";
import ConfirmModal from "../../components/common/ConfirmModal"; import ConfirmModal from "../../components/common/ConfirmModal";
import {useSelector} from "react-redux";
const EmployeeList = () => { const EmployeeList = () => {
const { profile: loginUser } = useProfile(); const selectedProjectId = useSelector((store) => store.localVariables.projectId);
const [selectedProject, setSelectedProject] = useState(""); const [ selectedProject, setSelectedProject ] = useState( () => selectedProjectId || "" );
const { projects, loading: projectLoading } = useProjects(); const { projects, loading: projectLoading } = useProjects();
const [showInactive, setShowInactive] = useState(false); const [showInactive, setShowInactive] = useState(false);
const Manage_Employee = useHasUserPermission(MANAGE_EMPLOYEES); const Manage_Employee = useHasUserPermission(MANAGE_EMPLOYEES);
@ -164,7 +165,7 @@ const EmployeeList = () => {
exportToExcel(currentItems, "employees"); exportToExcel(currentItems, "employees");
break; break;
case "pdf": case "pdf":
exportToPDF(currentItems, "employees"); // Pass the employeeList directly exportToPDF(currentItems, "employees");
break; break;
case "print": case "print":
printTable(tableRef.current); printTable(tableRef.current);
@ -190,6 +191,14 @@ const EmployeeList = () => {
setIsDeleteModalOpen(true); setIsDeleteModalOpen(true);
}; };
const handleProjectSelection = (e) => {
setSelectedProject(e.target.value);
};
useEffect(() => {
setSelectedProject(selectedProjectId || "");
}, [selectedProjectId]);
return ( return (
<> <>
{isCreateModalOpen && ( {isCreateModalOpen && (
@ -265,11 +274,11 @@ const EmployeeList = () => {
<label> <label>
<select <select
id="project-select" id="project-select"
onChange={(e) => setSelectedProject(e.target.value)} onChange={handleProjectSelection}
name="DataTables_Table_0_length" name="DataTables_Table_0_length"
aria-controls="DataTables_Table_0" aria-controls="DataTables_Table_0"
className="form-select form-select-sm" className="form-select form-select-sm"
value={selectedProject || ""} value={selectedProject}
> >
{projectLoading ? ( {projectLoading ? (
<option value="Loading">Loading...</option> <option value="Loading">Loading...</option>
@ -277,13 +286,7 @@ const EmployeeList = () => {
<> <>
<option value="">All Employees</option> <option value="">All Employees</option>
{Array.isArray(projects) && {Array.isArray(projects) &&
projects projects.map((item) => (
.filter((item) =>
loginUser?.projects?.includes(
String(item.id)
)
)
.map((item) => (
<option key={item.id} value={item.id}> <option key={item.id} value={item.id}>
{item.name} {item.name}
</option> </option>
@ -291,7 +294,8 @@ const EmployeeList = () => {
</> </>
)} )}
</select> </select>
</label> </label>
</div> </div>
</div> </div>
</div> </div>