From a3250d8afe47f1eed965d275e2af46dc1543922e Mon Sep 17 00:00:00 2001 From: "austin.rix" Date: Tue, 24 Jan 2023 17:26:37 -0500 Subject: [PATCH 1/2] Added Minute functionality to the ViewMode --- src/components/calendar/calendar.tsx | 51 ++++++++++++++++++++++++++++ src/helpers/date-helper.ts | 9 +++++ src/types/public-types.ts | 1 + 3 files changed, 61 insertions(+) diff --git a/src/components/calendar/calendar.tsx b/src/components/calendar/calendar.tsx index a5860db5..1cf21800 100644 --- a/src/components/calendar/calendar.tsx +++ b/src/components/calendar/calendar.tsx @@ -355,6 +355,54 @@ export const Calendar: React.FC = ({ return [topValues, bottomValues]; }; + const getCalendarValuesForMinute = () => { + const topValues: ReactChild[] = []; + const bottomValues: ReactChild[] = []; + const topDefaultHeight = headerHeight * 0.5; + const dates = dateSetup.dates; + + for (let i = 0; i < dates.length; i++) { + const date = dates[i]; + const bottomValue = getCachedDateTimeFormat(locale, { + minute: "numeric", + }).format(date); + + bottomValues.push( + + {bottomValue} + + ); + if (i !== 0 && date.getHours() !== dates[i - 1].getHours()) { + const displayDate = dates[i - 1]; + const topValue = `${getLocalDayOfWeek( + displayDate, + locale, + "long" + )}, ${displayDate.getDate()} ${getLocaleMonth(displayDate, locale)} (${displayDate.getHours()}:00)`; + const topPosition = (date.getMinutes() - 60) / 2; + topValues.push( + + ); + } + } + return [topValues, bottomValues]; + }; + + let topValues: ReactChild[] = []; let bottomValues: ReactChild[] = []; switch (dateSetup.viewMode) { @@ -377,6 +425,9 @@ export const Calendar: React.FC = ({ case ViewMode.HalfDay: [topValues, bottomValues] = getCalendarValuesForPartOfDay(); break; + case ViewMode.Minute: + [topValues, bottomValues] = getCalendarValuesForMinute(); + break; case ViewMode.Hour: [topValues, bottomValues] = getCalendarValuesForHour(); } diff --git a/src/helpers/date-helper.ts b/src/helpers/date-helper.ts index 1b2a0f5c..973368f2 100644 --- a/src/helpers/date-helper.ts +++ b/src/helpers/date-helper.ts @@ -137,6 +137,12 @@ export const ganttDateRange = ( newEndDate = startOfDate(newEndDate, "day"); newEndDate = addToDate(newEndDate, 1, "day"); break; + case ViewMode.Minute: + newStartDate = startOfDate(newStartDate, "minute"); + newStartDate = addToDate(newStartDate, -1 * preStepsCount, "minute"); + newEndDate = startOfDate(newEndDate, "hour"); + newEndDate = addToDate(newEndDate, 1, "hour"); + break; } return [newStartDate, newEndDate]; }; @@ -174,6 +180,9 @@ export const seedDates = ( case ViewMode.Hour: currentDate = addToDate(currentDate, 1, "hour"); break; + case ViewMode.Minute: + currentDate = addToDate(currentDate, 1, "minute"); + break; } dates.push(currentDate); } diff --git a/src/types/public-types.ts b/src/types/public-types.ts index cc44ff17..641a8b07 100644 --- a/src/types/public-types.ts +++ b/src/types/public-types.ts @@ -1,4 +1,5 @@ export enum ViewMode { + Minute = "Minute", Hour = "Hour", QuarterDay = "Quarter Day", HalfDay = "Half Day", From ccaf52c4431df100ed7293853d784e483cc7aa80 Mon Sep 17 00:00:00 2001 From: "austin.rix" Date: Tue, 24 Jan 2023 17:35:09 -0500 Subject: [PATCH 2/2] Updated readme to include Minute ViewMode type --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9191d87b..cca3bb12 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ npm start | Parameter Name | Type | Description | | :------------- | :------ | :---------------------------------------------------------------------------------------------------------- | -| viewMode | enum | Specifies the time scale. Hour, Quarter Day, Half Day, Day, Week(ISO-8601, 1st day is Monday), Month, QuarterYear, Year. | +| viewMode | enum | Specifies the time scale. Minute, Hour, Quarter Day, Half Day, Day, Week(ISO-8601, 1st day is Monday), Month, QuarterYear, Year. | | viewDate | date | Specifies display date and time for display. | | preStepsCount | number | Specifies empty space before the fist task | | locale | string | Specifies the month name language. Able formats: ISO 639-2, Java Locale. |