fix(admin): drawer stays in sync with grid after mutations
This commit is contained in:
@@ -219,6 +219,27 @@ export default function AdminPage() {
|
|||||||
return employees.filter((emp) => days.some((day) => gridData[emp.id]?.[dateKey(toUnix(day))]?.hasErrors));
|
return employees.filter((emp) => days.some((day) => gridData[emp.id]?.[dateKey(toUnix(day))]?.hasErrors));
|
||||||
}, [employees, days, gridData, showIssuesOnly]);
|
}, [employees, days, gridData, showIssuesOnly]);
|
||||||
|
|
||||||
|
// Keep the open drawer in sync after any mutation — grid already refreshes via
|
||||||
|
// loadEntries() -> allEntries -> gridData, but selectedDayEntries is a snapshot
|
||||||
|
// taken when the drawer opened. This patches it in place so the timeline /
|
||||||
|
// summary strip / issue list update without closing the drawer.
|
||||||
|
useEffect(() => {
|
||||||
|
if (!sheetOpen || !selectedDayEntries) return;
|
||||||
|
const empId = manualPunchForm.employeeId;
|
||||||
|
const dateStr = selectedDayEntries.date;
|
||||||
|
const dayData = gridData[empId]?.[dateStr];
|
||||||
|
if (!dayData) return;
|
||||||
|
const prevIds = selectedDayEntries.entries.map((e) => e.id).join(',');
|
||||||
|
const nextIds = dayData.entries.map((e) => e.id).join(',');
|
||||||
|
const prevErr = selectedDayEntries.errors.join('|');
|
||||||
|
const nextErr = (dayData.errors || []).join('|');
|
||||||
|
if (prevIds !== nextIds || prevErr !== nextErr) {
|
||||||
|
setSelectedDayEntries((prev) =>
|
||||||
|
prev ? { ...prev, entries: dayData.entries, errors: dayData.errors || [] } : prev,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [allEntries, gridData, sheetOpen, selectedDayEntries, manualPunchForm.employeeId]);
|
||||||
|
|
||||||
const openDetailDrawer = (employee: Employee, dateStr: string) => {
|
const openDetailDrawer = (employee: Employee, dateStr: string) => {
|
||||||
const dayData = gridData[employee.id]?.[dateStr];
|
const dayData = gridData[employee.id]?.[dateStr];
|
||||||
if (!dayData) return;
|
if (!dayData) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user