Spaces:
Build error
Build error
twenty / packages /twenty-server /src /modules /dashboard /chart-data /utils /format-date-by-granularity.ts
| import { type Temporal } from 'temporal-polyfill'; | |
| import { | |
| type FirstDayOfTheWeek, | |
| ObjectRecordGroupByDateGranularity, | |
| } from 'twenty-shared/types'; | |
| import { getNextPeriodStart, getPeriodStart } from 'twenty-shared/utils'; | |
| export const formatDateByGranularity = ( | |
| plainDate: Temporal.PlainDate, | |
| granularity: | |
| | ObjectRecordGroupByDateGranularity.DAY | |
| | ObjectRecordGroupByDateGranularity.MONTH | |
| | ObjectRecordGroupByDateGranularity.QUARTER | |
| | ObjectRecordGroupByDateGranularity.YEAR | |
| | ObjectRecordGroupByDateGranularity.WEEK | |
| | ObjectRecordGroupByDateGranularity.NONE, | |
| userTimezone: string, | |
| firstDayOfTheWeek: FirstDayOfTheWeek, | |
| ): string => { | |
| switch (granularity) { | |
| case ObjectRecordGroupByDateGranularity.DAY: | |
| return plainDate.toLocaleString(undefined, { | |
| year: 'numeric', | |
| month: 'short', | |
| day: 'numeric', | |
| }); | |
| case ObjectRecordGroupByDateGranularity.WEEK: { | |
| const startOfWeek = getPeriodStart( | |
| plainDate.toZonedDateTime(userTimezone), | |
| 'WEEK', | |
| firstDayOfTheWeek, | |
| ); | |
| const endOfWeek = getNextPeriodStart( | |
| plainDate.toZonedDateTime(userTimezone), | |
| 'WEEK', | |
| firstDayOfTheWeek, | |
| ).subtract({ days: 1 }); | |
| const startMonth = startOfWeek.toLocaleString(undefined, { | |
| month: 'short', | |
| }); | |
| const endMonth = endOfWeek.toLocaleString(undefined, { | |
| month: 'short', | |
| }); | |
| const startDay = startOfWeek.day; | |
| const endDay = endOfWeek.day; | |
| const startYear = startOfWeek.year; | |
| const endYear = endOfWeek.year; | |
| if (startYear !== endYear) { | |
| return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`; | |
| } | |
| if (startMonth !== endMonth) { | |
| return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${endYear}`; | |
| } | |
| return `${startMonth} ${startDay} - ${endDay}, ${endYear}`; | |
| } | |
| case ObjectRecordGroupByDateGranularity.MONTH: | |
| return plainDate.toLocaleString(undefined, { | |
| year: 'numeric', | |
| month: 'long', | |
| }); | |
| case ObjectRecordGroupByDateGranularity.QUARTER: { | |
| return `Q${Math.ceil(plainDate.month / 3)} ${plainDate.year}`; | |
| } | |
| case ObjectRecordGroupByDateGranularity.YEAR: | |
| return plainDate.year.toString(); | |
| case ObjectRecordGroupByDateGranularity.NONE: | |
| default: | |
| return plainDate.toLocaleString(); | |
| } | |
| }; | |