From 9c078b87a783db9b67a794b04e37bc3443d7cc4d Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 16:06:00 -0400 Subject: [PATCH] 2024-08-29 - Added new fields period start/end date to front-end --- web-ui/src/components/reviews/TeamReviews.jsx | 51 +++++++++++++++++-- .../periods/ReviewPeriodStepper.stories.jsx | 2 + .../periods/ReviewPeriodStepper.test.jsx | 2 + .../reviews/periods/ReviewPeriods.jsx | 8 ++- 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/web-ui/src/components/reviews/TeamReviews.jsx b/web-ui/src/components/reviews/TeamReviews.jsx index 03529d58c5..8ebeee1aaa 100644 --- a/web-ui/src/components/reviews/TeamReviews.jsx +++ b/web-ui/src/components/reviews/TeamReviews.jsx @@ -463,6 +463,38 @@ const TeamReviews = ({ onBack, periodId }) => { updateReviewPeriodDates(newPeriod); }; + const handlePeriodStartDateChange = (val, period) => { + /* + const newDate = val?.$d; + const isoDate = newDate?.toISOString() ?? null; + const newPeriod = { ...period, closeDate: isoDate }; + + // Clear dates that are not correctly ordered. + const launchDate = new Date(period.launchDate); + const selfReviewCloseDate = new Date(period.selfReviewCloseDate); + if (launchDate >= newDate) newPeriod.launchDate = null; + if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + + updateReviewPeriodDates(newPeriod); + */ + }; + + const handlePeriodEndDateChange = (val, period) => { + /* + const newDate = val?.$d; + const isoDate = newDate?.toISOString() ?? null; + const newPeriod = { ...period, closeDate: isoDate }; + + // Clear dates that are not correctly ordered. + const launchDate = new Date(period.launchDate); + const selfReviewCloseDate = new Date(period.selfReviewCloseDate); + if (launchDate >= newDate) newPeriod.launchDate = null; + if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + + updateReviewPeriodDates(newPeriod); + */ + }; + const loadReviews = useCallback(async () => { let newSelfReviews = {}; let newReviews = {}; @@ -580,15 +612,16 @@ const TeamReviews = ({ onBack, periodId }) => { const validateReviewPeriod = period => { if (!period) return 'No review period was created.'; if (!period.launchDate) return 'No launch date was specified.'; - if (!period.selfReviewCloseDate) - return 'No self-review date was specified.'; + if (!period.selfReviewCloseDate) return 'No self-review date was specified.'; if (!period.closeDate) return 'No close date was specified.'; + if (!period.periodStartDate) return 'No period-start-date was specified.'; + if (!period.periodEndDate) return 'No period-end-date was specified.'; if (teamMembers.length === 0) return 'No members were added.'; const haveReviewers = teamMembers.every( member => getReviewers(member).length > 0 ); if (!haveReviewers) return 'One or more members have no reviewer.'; - return null; // no validtation errors + return null; // no validation errors }; const updateReviewPeriodStatus = async reviewStatus => { @@ -897,6 +930,18 @@ const TeamReviews = ({ onBack, periodId }) => { label="Close Date" disabled={!canUpdate} /> + handlePeriodStartDateChange(val, period)} + label="Period Start Date" + disabled={!canUpdate} + /> + handlePeriodEndDateChange(val, period)} + label="Period End Date" + disabled={!canUpdate} + /> {approvalButton()} diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx index 2c60b98d46..cb395d6c7e 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx @@ -25,6 +25,8 @@ const reviewPeriodStepperData = { launchDate: '2024-05-03T15:53:56.673Z', selfReviewCloseDate: '2024-05-03T15:53:56.673Z', closeDate: '2024-05-03T15:53:56.673Z', + periodStartDate: '2024-04-01T00:00:00.000Z', + periodEndDate: '2024-05-01T00:00:00.000Z', reviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57', selfReviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57' } diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx index d45c699b44..f2badd3de7 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx @@ -9,6 +9,8 @@ const reviewPeriod = { launchDate: '2024-05-03T15:53:56.673Z', selfReviewCloseDate: '2024-05-03T15:53:56.673Z', closeDate: '2024-05-03T15:53:56.673Z', + periodStartDate: '2024-04-01T00:00:00.000Z', + periodEndDate: '2024-05-01T00:00:00.000Z', reviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57', selfReviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57' }; diff --git a/web-ui/src/components/reviews/periods/ReviewPeriods.jsx b/web-ui/src/components/reviews/periods/ReviewPeriods.jsx index 3ed2f22aef..2d0402169e 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriods.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriods.jsx @@ -109,7 +109,9 @@ const ReviewPeriods = ({ onPeriodSelected, mode }) => { reviewStatus: ReviewStatus.PLANNING, launchDate: null, selfReviewCloseDate: null, - closeDate: null + closeDate: null, + periodStartDate: null, + periodEndDate: null }); const [reviewStatus, setReviewStatus] = useState(ReviewStatus.CLOSED); const [selfReviews, setSelfReviews] = useState({}); @@ -178,7 +180,9 @@ const ReviewPeriods = ({ onPeriodSelected, mode }) => { reviewStatus: ReviewStatus.OPEN, launchDate: null, selfReviewCloseDate: null, - closeDate: null + closeDate: null, + periodStartDate: null, + periodEndDate: null }); }, [