Merge pull request 'Attendance Log Page Resets to First Page After Performing Action on Other Pages.' (#288) from Kartik_Bug#757 into Issues_July_4W
Reviewed-on: #288
This commit is contained in:
commit
c2fe727bec
@ -4,7 +4,7 @@ import Avatar from "../common/Avatar";
|
|||||||
import { convertShortTime } from "../../utils/dateUtils";
|
import { convertShortTime } from "../../utils/dateUtils";
|
||||||
import RenderAttendanceStatus from "./RenderAttendanceStatus";
|
import RenderAttendanceStatus from "./RenderAttendanceStatus";
|
||||||
import { useSelector, useDispatch } from "react-redux";
|
import { useSelector, useDispatch } from "react-redux";
|
||||||
import { fetchAttendanceData } from "../../slices/apiSlice/attedanceLogsSlice";
|
import { fetchAttendanceData, setAttendanceData } from "../../slices/apiSlice/attedanceLogsSlice";
|
||||||
import DateRangePicker from "../common/DateRangePicker";
|
import DateRangePicker from "../common/DateRangePicker";
|
||||||
import eventBus from "../../services/eventBus";
|
import eventBus from "../../services/eventBus";
|
||||||
|
|
||||||
@ -28,14 +28,15 @@ const usePagination = (data, itemsPerPage) => {
|
|||||||
}
|
}
|
||||||
}, [maxPage]);
|
}, [maxPage]);
|
||||||
|
|
||||||
const resetPage = useCallback(() => setCurrentPage(1), []); // This is returned by the hook
|
// Ensure resetPage is returned by the hook
|
||||||
|
const resetPage = useCallback(() => setCurrentPage(1), []);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
currentPage,
|
currentPage,
|
||||||
totalPages: maxPage,
|
totalPages: maxPage,
|
||||||
currentItems,
|
currentItems,
|
||||||
paginate,
|
paginate,
|
||||||
resetPage, // Ensure resetPage is returned here
|
resetPage,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -173,32 +174,29 @@ const AttendanceLog = ({
|
|||||||
resetPage, // Destructure resetPage here
|
resetPage, // Destructure resetPage here
|
||||||
} = usePagination(processedData, 20);
|
} = usePagination(processedData, 20);
|
||||||
|
|
||||||
// Reset page when processedData changes (due to filters/search)
|
// Effect to reset pagination when search query changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
resetPage();
|
resetPage();
|
||||||
}, [processedData, resetPage]); // Add resetPage to dependency array
|
}, [searchQuery, resetPage]); // Add resetPage to dependencies
|
||||||
|
|
||||||
const handler = useCallback(
|
const handler = useCallback(
|
||||||
(msg) => {
|
(msg) => {
|
||||||
const { startDate, endDate } = dateRange;
|
const { startDate, endDate } = dateRange;
|
||||||
const checkIn = msg.response.checkInTime ? msg.response.checkInTime.substring(0, 10) : null;
|
const checkIn = msg.response.checkInTime.substring(0, 10);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
projectId === msg.projectId &&
|
projectId === msg.projectId &&
|
||||||
checkIn &&
|
|
||||||
startDate <= checkIn &&
|
startDate <= checkIn &&
|
||||||
checkIn <= endDate
|
checkIn <= endDate
|
||||||
) {
|
) {
|
||||||
dispatch(
|
const updatedAttendance = data.map((item) =>
|
||||||
fetchAttendanceData({
|
item.id === msg.response.id
|
||||||
projectId,
|
? { ...item, ...msg.response }
|
||||||
fromDate: startDate,
|
: item
|
||||||
toDate: endDate,
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
dispatch(setAttendanceData(updatedAttendance)); // Update Redux store
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[projectId, dateRange, dispatch]
|
[projectId, dateRange, data, dispatch]
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -367,8 +365,7 @@ const AttendanceLog = ({
|
|||||||
No employee logs.
|
No employee logs.
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
)
|
)}
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
{!loading && !isRefreshing && processedData.length > 20 && (
|
{!loading && !isRefreshing && processedData.length > 20 && (
|
||||||
<nav aria-label="Page ">
|
<nav aria-label="Page ">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user