From 25e6cb36a98cc73a71f228a4da68f21b36be70b0 Mon Sep 17 00:00:00 2001 From: Joao Ramos Date: Tue, 3 Sep 2024 23:23:18 +0100 Subject: [PATCH] Improvements on start button --- src/dashboards/AssignmentCreator.tsx | 2 +- src/dashboards/AssignmentView.tsx | 8 ++-- src/dashboards/views/AssignmentsPage.tsx | 40 ++++++++++-------- src/utils/assignments.ts | 52 ++++++++++++++++++------ 4 files changed, 65 insertions(+), 37 deletions(-) diff --git a/src/dashboards/AssignmentCreator.tsx b/src/dashboards/AssignmentCreator.tsx index 205ba3b5..1724da6d 100644 --- a/src/dashboards/AssignmentCreator.tsx +++ b/src/dashboards/AssignmentCreator.tsx @@ -47,7 +47,7 @@ export default function AssignmentCreator({isCreating, assignment, user, groups, }), ); const [isLoading, setIsLoading] = useState(false); - const [startDate, setStartDate] = useState(assignment ? moment(assignment.startDate).toDate() : new Date()); + const [startDate, setStartDate] = useState(assignment ? moment(assignment.startDate).toDate() : moment().add(1, 'hour').toDate()); const [endDate, setEndDate] = useState( assignment ? moment(assignment.endDate).toDate() : moment().hours(23).minutes(59).add(8, "day").toDate(), diff --git a/src/dashboards/AssignmentView.tsx b/src/dashboards/AssignmentView.tsx index 7426b19d..2565e532 100644 --- a/src/dashboards/AssignmentView.tsx +++ b/src/dashboards/AssignmentView.tsx @@ -24,7 +24,7 @@ import { BsPen, } from "react-icons/bs"; import { toast } from "react-toastify"; -import { activeAssignmentFilter } from "@/utils/assignments"; +import { futureAssignmentFilter } from "@/utils/assignments"; interface Props { isOpen: boolean; @@ -296,11 +296,9 @@ export default function AssignmentView({ isOpen, assignment, onClose }: Props) { const shouldRenderStart = () => { if (assignment) { - if (activeAssignmentFilter(assignment)) { - return false; + if (futureAssignmentFilter(assignment)) { + return true; } - - return assignment.results.length === 0; } return false; diff --git a/src/dashboards/views/AssignmentsPage.tsx b/src/dashboards/views/AssignmentsPage.tsx index 19e0a8d0..48690114 100644 --- a/src/dashboards/views/AssignmentsPage.tsx +++ b/src/dashboards/views/AssignmentsPage.tsx @@ -6,7 +6,7 @@ import { archivedAssignmentFilter, futureAssignmentFilter, pastAssignmentFilter, - unstartedAssignmentFilter, + startHasExpiredAssignmentFilter, } from "@/utils/assignments"; import clsx from "clsx"; import { groupBy } from "lodash"; @@ -40,10 +40,10 @@ export default function AssignmentsPage({ const [selectedAssignment, setSelectedAssignment] = useState(); const [isCreatingAssignment, setIsCreatingAssignment] = useState(false); - const unstartedAssignments = assignments.filter(unstartedAssignmentFilter); - const displayAssignmentView = !!selectedAssignment && !isCreatingAssignment; + const assignmentsPastExpiredStart = assignments.filter(startHasExpiredAssignmentFilter); + return ( <> {displayAssignmentView && ( @@ -144,21 +144,6 @@ export default function AssignmentsPage({ ))} -
-

- Active Assignments Pending Start ({unstartedAssignments.length}) -

-
- {unstartedAssignments.map((a) => ( - setSelectedAssignment(a)} - key={a.id} - /> - ))} -
-

Planned Assignments ( @@ -203,6 +188,25 @@ export default function AssignmentsPage({ /> ))} +

+
+

+ Assignments start expired ({assignmentsPastExpiredStart.length}) +

+
+ {assignments.filter(startHasExpiredAssignmentFilter).map((a) => ( + setSelectedAssignment(a)} + key={a.id} + allowDownload + reload={reloadAssignments} + allowArchive + allowExcelDownload + /> + ))} +

diff --git a/src/utils/assignments.ts b/src/utils/assignments.ts index 6bfc6fa5..0aa2d438 100644 --- a/src/utils/assignments.ts +++ b/src/utils/assignments.ts @@ -1,15 +1,29 @@ import moment from "moment"; import {Assignment} from "@/interfaces/results"; -export const futureAssignmentFilter = (a: Assignment) => { - if(a.archived) return false; - if(a.start) return false; +// export const futureAssignmentFilter = (a: Assignment) => { +// if(a.archived) return false; +// if(a.start) return false; +// const currentDate = moment(); +// const startDate = moment(a.startDate); +// if(currentDate.isAfter(startDate)) return false; +// if(a.autoStart && a.autoStartDate) { +// return moment(a.autoStartDate).isAfter(currentDate); +// } +// return false; +// } + +export const futureAssignmentFilter = (a: Assignment) => { const currentDate = moment(); - const startDate = moment(a.startDate); - if(startDate.isAfter(currentDate)) return true; - if(a.autoStart && a.autoStartDate) { - return moment(a.autoStartDate).isAfter(currentDate); + if(moment(a.endDate).isBefore(currentDate)) return false; + if(a.archived) return false; + + if(a.autoStart && a.autoStartDate && moment(a.autoStartDate).isBefore(currentDate)) return false; + + if(!a.start) { + if(moment(a.startDate).isBefore(currentDate)) return false; + return true; } return false; } @@ -36,16 +50,28 @@ export const activeAssignmentFilter = (a: Assignment) => { return moment(a.autoStartDate).isBefore(currentDate); } + // if(currentDate.isAfter(moment(a.startDate))) return true; return false; }; -export const unstartedAssignmentFilter = (a: Assignment) => { +// export const unstartedAssignmentFilter = (a: Assignment) => { +// const currentDate = moment(); +// if(moment(a.endDate).isBefore(currentDate)) return false; +// if(a.archived) return false; + +// if(a.autoStart && a.autoStartDate && moment(a.autoStartDate).isBefore(currentDate)) return false; + +// if(!a.start) { +// if(moment(a.startDate).isBefore(currentDate)) return false; +// return true; +// } +// return false; +// } + +export const startHasExpiredAssignmentFilter = (a: Assignment) => { const currentDate = moment(); - if(moment(a.endDate).isBefore(currentDate)) return false; if(a.archived) return false; - - if(a.autoStart && a.autoStartDate && moment(a.autoStartDate).isBefore(currentDate)) return false; - - if(!a.start) return true; + if(a.start) return false; + if(currentDate.isAfter(moment(a.startDate)) && currentDate.isBefore(moment(a.endDate))) return true; return false; } \ No newline at end of file