From 703591adc430d6076e1a275a91eb5354039a5240 Mon Sep 17 00:00:00 2001 From: Wayne Date: Wed, 2 Oct 2024 23:28:25 +0900 Subject: [PATCH] Do not show project pass actual end date in timesheet project selection --- src/app/api/projects/index.ts | 1 + .../TimeLeaveModal/TimeLeaveInputTable.tsx | 3 +++ .../TimeLeaveModal/TimeLeaveMobileEntry.tsx | 3 +++ .../TimesheetTable/FastTimeEntryModal.tsx | 2 ++ src/components/TimesheetTable/ProjectSelect.tsx | 13 +++++++------ .../TimesheetTable/TimesheetEditModal.tsx | 2 ++ 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/app/api/projects/index.ts b/src/app/api/projects/index.ts index d208d0e..c8e77e4 100644 --- a/src/app/api/projects/index.ts +++ b/src/app/api/projects/index.ts @@ -79,6 +79,7 @@ export interface ProjectWithTasks { id: number; code: string; status?: string; + actualEnd?: string; description?: string; name: string; tasks: Task[]; diff --git a/src/components/TimeLeaveModal/TimeLeaveInputTable.tsx b/src/components/TimeLeaveModal/TimeLeaveInputTable.tsx index c7e0734..57e1be3 100644 --- a/src/components/TimeLeaveModal/TimeLeaveInputTable.tsx +++ b/src/components/TimeLeaveModal/TimeLeaveInputTable.tsx @@ -345,6 +345,7 @@ const TimeLeaveInputTable: React.FC = ({ renderEditCell(params: GridRenderEditCellParams) { return ( = ({ taskGroupsByProject, taskGroupsWithoutProject, miscTasks, + day, ], ); @@ -747,6 +749,7 @@ const TimeLeaveInputTable: React.FC = ({ /> {fastEntryEnabled && ( = ({ )} = ({ {...editTimeModalProps} /> = ({ /> {fastEntryEnabled && ( = ({ name="projectIds" render={({ field }) => ( { const AutocompleteProjectSelect: React.FC = ({ allProjects, - showOnlyOngoing = true, + referenceDay, assignedProjects, value, onProjectSelect, @@ -75,10 +76,10 @@ const AutocompleteProjectSelect: React.FC = ({ }) => { const { t } = useTranslation("home"); const allFilteredProjects = useMemo(() => { - return showOnlyOngoing - ? allProjects.filter((p) => p.status === "On-going") - : allProjects; - }, [showOnlyOngoing, allProjects]); + return allProjects.filter((p) => + p.actualEnd ? !referenceDay.isAfter(p.actualEnd) : true, + ); + }, [allProjects, referenceDay]); const nonAssignedProjects = useMemo(() => { return differenceBy(allFilteredProjects, assignedProjects, "id"); diff --git a/src/components/TimesheetTable/TimesheetEditModal.tsx b/src/components/TimesheetTable/TimesheetEditModal.tsx index dcd3e33..cdda1fa 100644 --- a/src/components/TimesheetTable/TimesheetEditModal.tsx +++ b/src/components/TimesheetTable/TimesheetEditModal.tsx @@ -29,6 +29,7 @@ import { DAILY_NORMAL_MAX_HOURS, TIMESHEET_DAILY_MAX_HOURS, } from "@/app/api/timesheets/utils"; +import dayjs from "dayjs"; export interface Props extends Omit { onSave: (timeEntry: TimeEntry, recordDate?: string) => Promise; @@ -162,6 +163,7 @@ const TimesheetEditModal: React.FC = ({ name="projectId" render={({ field }) => (