diff --git a/src/pages/project/ProjectList.jsx b/src/pages/project/ProjectList.jsx index a0e9ea3e..aa4f5e3a 100644 --- a/src/pages/project/ProjectList.jsx +++ b/src/pages/project/ProjectList.jsx @@ -6,37 +6,35 @@ import ProjectRepository from "../../repositories/ProjectRepository"; import { useProjects } from "../../hooks/useProjects"; import { useDispatch } from "react-redux"; import showToast from "../../services/toastService"; -import { getCachedData, cacheData} from "../../slices/apiDataManager"; -import {useHasUserPermission} from "../../hooks/useHasUserPermission" +import { getCachedData, cacheData } from "../../slices/apiDataManager"; +import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { useProfile } from "../../hooks/useProfile"; -import {MANAGE_PROJECT} from "../../utils/constants"; +import { MANAGE_PROJECT } from "../../utils/constants"; +import ProjectListView from "./ProjectListView"; -const ProjectList = () => -{ - - - const {profile: loginUser} = useProfile(); +const ProjectList = () => { + const { profile: loginUser } = useProfile(); + const [listView, setListView] = useState(true); const [showModal, setShowModal] = useState(false); - const {projects, loading, error, refetch} = useProjects(); + const { projects, loading, error, refetch } = useProjects(); const [refresh, setRefresh] = useState(false); - const [ projectList, setProjectList ] = useState( [] ); - const HasManageProjectPermission = useHasUserPermission( MANAGE_PROJECT ) - const[HasManageProject,setHasManageProject] = useState(HasManageProjectPermission) + const [projectList, setProjectList] = useState([]); + const HasManageProjectPermission = useHasUserPermission(MANAGE_PROJECT); + const [HasManageProject, setHasManageProject] = useState( + HasManageProjectPermission + ); const dispatch = useDispatch(); const [currentPage, setCurrentPage] = useState(1); const [itemsPerPage] = useState(6); - - const handleShow = () => setShowModal(true); - const handleClose = () => setShowModal( false ); - - + const handleShow = () => setShowModal(true); + const handleClose = () => setShowModal(false); useEffect(() => { if (!loading && Array.isArray(projects)) { // Step 1: Group projects by statusId const grouped = {}; - + projects.forEach((project) => { const statusId = project.projectStatusId; if (!grouped[statusId]) { @@ -44,7 +42,7 @@ const ProjectList = () => } grouped[statusId].push(project); }); - + // Step 2: Sort each group by name const sortedGrouped = Object.keys(grouped) .sort() // sort group keys (status IDs) @@ -53,35 +51,34 @@ const ProjectList = () => a.name.toLowerCase().localeCompare(b.name.toLowerCase()) ) ); - + setProjectList(sortedGrouped); // final sorted flat list } - - }, [ projects, loginUser?.projects, loading ] ); + }, [projects, loginUser?.projects, loading]); useEffect(() => { if (loginUser) { - setHasManageProject(HasManageProjectPermission); + setHasManageProject(HasManageProjectPermission); } else { - setHasManageProject(false); } + setHasManageProject(false); + } }, [loginUser, HasManageProjectPermission]); - - const handleSubmitForm = (newProject) => { ProjectRepository.manageProject(newProject) - .then( ( response ) => - { - - const cachedProjects_list = getCachedData( "projectslist" ) || []; - - const updated_Projects_list = [ ...cachedProjects_list, response.data ]; - + .then((response) => { + const cachedProjects_list = getCachedData("projectslist") || []; + + const updated_Projects_list = [...cachedProjects_list, response.data]; + cacheData("projectslist", updated_Projects_list); - setProjectList((prevProjectList) => [...prevProjectList, response.data]); + setProjectList((prevProjectList) => [ + ...prevProjectList, + response.data, + ]); showToast("Project Created successfully.", "success"); - setShowModal(false) + setShowModal(false); }) .catch((error) => { closeModal(); @@ -98,33 +95,31 @@ const ProjectList = () => const indexOfLastItem = currentPage * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; - const currentItems = Array.isArray(projectList) - ? projectList.slice(indexOfFirstItem, indexOfLastItem) + const currentItems = Array.isArray(projectList) + ? projectList.slice(indexOfFirstItem, indexOfLastItem) : []; - + const paginate = (pageNumber) => setCurrentPage(pageNumber); const totalPages = Array.isArray(projectList) ? Math.ceil(projectList.length / itemsPerPage) : 0; - - return ( <>