@@ -51,7 +51,8 @@ export interface Props { | |||||
companyHolidays: HolidaysResult[]; | companyHolidays: HolidaysResult[]; | ||||
allProjects: ProjectWithTasks[]; | allProjects: ProjectWithTasks[]; | ||||
miscTasks: Task[]; | miscTasks: Task[]; | ||||
isSaturdayWorker: boolean | |||||
isSaturdayWorker: boolean; | |||||
userId: number; | |||||
} | } | ||||
type MemberOption = TeamTimeSheets[0] & TeamLeaves[0] & { id: string }; | type MemberOption = TeamTimeSheets[0] & TeamLeaves[0] & { id: string }; | ||||
@@ -80,7 +81,8 @@ const TimesheetAmendment: React.FC<Props> = ({ | |||||
allProjects, | allProjects, | ||||
leaveTypes, | leaveTypes, | ||||
miscTasks, | miscTasks, | ||||
isSaturdayWorker | |||||
isSaturdayWorker, | |||||
userId | |||||
}) => { | }) => { | ||||
const { t, i18n:{language}} = useTranslation(["home", "common"]); | const { t, i18n:{language}} = useTranslation(["home", "common"]); | ||||
const locale = language === "zh" ? "zh-tw" : "en"; | const locale = language === "zh" ? "zh-tw" : "en"; | ||||
@@ -119,16 +121,19 @@ const TimesheetAmendment: React.FC<Props> = ({ | |||||
}); | }); | ||||
}, | }, | ||||
[], | [], | ||||
).sort((a, b) => a.staffId.localeCompare(b.staffId)); | |||||
); | |||||
}, [localTeamLeaves, localTeamTimesheets]); | }, [localTeamLeaves, localTeamTimesheets]); | ||||
const [selectedStaff, setSelectedStaff] = useState<MemberOption>( | const [selectedStaff, setSelectedStaff] = useState<MemberOption>( | ||||
allMembers[0], | |||||
allMembers.find((member) => parseInt(member.id) === userId) ?? allMembers[0] | |||||
); | ); | ||||
useEffect(() => { | useEffect(() => { | ||||
console.log(allMembers) | |||||
console.log(userId) | |||||
setSelectedStaff( | setSelectedStaff( | ||||
(currentStaff) => | (currentStaff) => | ||||
allMembers.find((member) => member.id === currentStaff.id) || | allMembers.find((member) => member.id === currentStaff.id) || | ||||
allMembers.find((member) => parseInt(member.id) === userId) || | |||||
allMembers[0], | allMembers[0], | ||||
); | ); | ||||
}, [allMembers]); | }, [allMembers]); | ||||
@@ -308,8 +313,7 @@ const TimesheetAmendment: React.FC<Props> = ({ | |||||
({ event }: EventClickArg) => { | ({ event }: EventClickArg) => { | ||||
const dayJsObj = dayjs(event.startStr); | const dayJsObj = dayjs(event.startStr); | ||||
const holiday = getHolidayForDate(event.startStr, companyHolidays); | const holiday = getHolidayForDate(event.startStr, companyHolidays); | ||||
const isWeekend = !isSaturdayWorker ? dayJsObj.day() === 0 || dayJsObj.day() === 6 : dayJsObj.day() === 0; | |||||
const isHoliday = holiday || isWeekend; | |||||
const isHoliday = holiday || dayJsObj.day() === 0 || dayJsObj.day() === 6; | |||||
if ( | if ( | ||||
event.extendedProps.calendar === "timeEntry" && | event.extendedProps.calendar === "timeEntry" && | ||||
@@ -338,8 +342,7 @@ const TimesheetAmendment: React.FC<Props> = ({ | |||||
(e: { dateStr: string; dayEl: HTMLElement }) => { | (e: { dateStr: string; dayEl: HTMLElement }) => { | ||||
const dayJsObj = dayjs(e.dateStr); | const dayJsObj = dayjs(e.dateStr); | ||||
const holiday = getHolidayForDate(e.dateStr, companyHolidays); | const holiday = getHolidayForDate(e.dateStr, companyHolidays); | ||||
const isWeekend = !isSaturdayWorker ? dayJsObj.day() === 0 || dayJsObj.day() === 6 : dayJsObj.day() === 0; | |||||
const isHoliday = holiday || isWeekend; | |||||
const isHoliday = holiday || dayJsObj.day() === 0 || dayJsObj.day() === 6; | |||||
setSelectedDateInfo({ | setSelectedDateInfo({ | ||||
dateStr: e.dateStr, | dateStr: e.dateStr, | ||||
isHoliday: Boolean(isHoliday), | isHoliday: Boolean(isHoliday), | ||||
@@ -356,8 +359,7 @@ const TimesheetAmendment: React.FC<Props> = ({ | |||||
} | } | ||||
const dayJsObj = dayjs(date); | const dayJsObj = dayjs(date); | ||||
const holiday = getHolidayForDate(date, companyHolidays); | const holiday = getHolidayForDate(date, companyHolidays); | ||||
const isWeekend = !isSaturdayWorker ? dayJsObj.day() === 0 || dayJsObj.day() === 6 : dayJsObj.day() === 0; | |||||
const isHoliday = holiday || isWeekend; | |||||
const isHoliday = holiday || dayJsObj.day() === 0 || dayJsObj.day() === 6; | |||||
const intStaffId = parseInt(selectedStaff.id); | const intStaffId = parseInt(selectedStaff.id); | ||||
const leaves = localTeamLeaves[intStaffId].leaveEntries[date] || []; | const leaves = localTeamLeaves[intStaffId].leaveEntries[date] || []; | ||||
@@ -27,7 +27,6 @@ const modalSx: SxProps = { | |||||
interface Props extends TimesheetAmendmentProps { | interface Props extends TimesheetAmendmentProps { | ||||
open: boolean; | open: boolean; | ||||
onClose: () => void; | onClose: () => void; | ||||
isSaturdayWorker: boolean | |||||
} | } | ||||
export const TimesheetAmendmentModal: React.FC<Props> = ({ | export const TimesheetAmendmentModal: React.FC<Props> = ({ | ||||
@@ -39,7 +38,8 @@ export const TimesheetAmendmentModal: React.FC<Props> = ({ | |||||
companyHolidays, | companyHolidays, | ||||
allProjects, | allProjects, | ||||
miscTasks, | miscTasks, | ||||
isSaturdayWorker | |||||
isSaturdayWorker, | |||||
userId | |||||
}) => { | }) => { | ||||
const { t } = useTranslation("home"); | const { t } = useTranslation("home"); | ||||
const isMobile = useIsMobile(); | const isMobile = useIsMobile(); | ||||
@@ -54,6 +54,7 @@ export const TimesheetAmendmentModal: React.FC<Props> = ({ | |||||
allProjects={allProjects} | allProjects={allProjects} | ||||
miscTasks={miscTasks} | miscTasks={miscTasks} | ||||
isSaturdayWorker={isSaturdayWorker} | isSaturdayWorker={isSaturdayWorker} | ||||
userId={userId} | |||||
/> | /> | ||||
); | ); | ||||
@@ -43,7 +43,8 @@ export interface Props { | |||||
isFullTime: boolean; | isFullTime: boolean; | ||||
joinDate?: number | null; | joinDate?: number | null; | ||||
miscTasks: Task[]; | miscTasks: Task[]; | ||||
isSaturdayWorker: boolean | |||||
isSaturdayWorker: boolean; | |||||
userId: number; | |||||
} | } | ||||
const menuItemSx: SxProps = { | const menuItemSx: SxProps = { | ||||
@@ -66,7 +67,8 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
isFullTime, | isFullTime, | ||||
joinDate, | joinDate, | ||||
miscTasks, | miscTasks, | ||||
isSaturdayWorker | |||||
isSaturdayWorker, | |||||
userId | |||||
}) => { | }) => { | ||||
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); | const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); | ||||
@@ -199,7 +201,6 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
isFullTime={isFullTime} | isFullTime={isFullTime} | ||||
joinDate={dayjs(joinDate)} | joinDate={dayjs(joinDate)} | ||||
miscTasks={miscTasks} | miscTasks={miscTasks} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
<LeaveModal | <LeaveModal | ||||
open={isLeaveCalendarVisible} | open={isLeaveCalendarVisible} | ||||
@@ -211,7 +212,6 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
timesheetRecords={defaultTimesheets} | timesheetRecords={defaultTimesheets} | ||||
isFullTime={isFullTime} | isFullTime={isFullTime} | ||||
joinDate={dayjs(joinDate)} | joinDate={dayjs(joinDate)} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
{assignedProjects.length > 0 ? ( | {assignedProjects.length > 0 ? ( | ||||
<AssignedProjects | <AssignedProjects | ||||
@@ -239,6 +239,7 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
onClose={handleAmendmentClose} | onClose={handleAmendmentClose} | ||||
miscTasks={miscTasks} | miscTasks={miscTasks} | ||||
isSaturdayWorker={isSaturdayWorker} | isSaturdayWorker={isSaturdayWorker} | ||||
userId={userId} | |||||
/> | /> | ||||
)} | )} | ||||
</> | </> | ||||
@@ -16,7 +16,6 @@ import { | |||||
MAINTAIN_TIMESHEET_FAST_TIME_ENTRY, | MAINTAIN_TIMESHEET_FAST_TIME_ENTRY, | ||||
MAINTAIN_NORMAL_STAFF_WORKSPACE, | MAINTAIN_NORMAL_STAFF_WORKSPACE, | ||||
MAINTAIN_MANAGEMENT_STAFF_WORKSPACE, | MAINTAIN_MANAGEMENT_STAFF_WORKSPACE, | ||||
SATURDAY_WORKERS | |||||
} from "@/middleware"; | } from "@/middleware"; | ||||
import { fetchAllTasks } from "@/app/api/tasks"; | import { fetchAllTasks } from "@/app/api/tasks"; | ||||
@@ -62,6 +61,8 @@ const UserWorkspaceWrapper: React.FC = async () => { | |||||
const isSaturdayWorker = abilities.includes(SATURDAY_WORKERS) | const isSaturdayWorker = abilities.includes(SATURDAY_WORKERS) | ||||
console.log(userStaff) | |||||
return ( | return ( | ||||
<UserWorkspacePage | <UserWorkspacePage | ||||
joinDate={userStaff?.joinDate} | joinDate={userStaff?.joinDate} | ||||
@@ -82,6 +83,7 @@ const UserWorkspaceWrapper: React.FC = async () => { | |||||
maintainManagementStaffWorkspaceAbility | maintainManagementStaffWorkspaceAbility | ||||
} | } | ||||
isSaturdayWorker={isSaturdayWorker} | isSaturdayWorker={isSaturdayWorker} | ||||
userId={userStaff?.id} | |||||
/> | /> | ||||
); | ); | ||||
}; | }; | ||||