feature/support-more-date-formats (#835)
* added support for Month names and abbreviations in frontend * corrections pointed out by coderabbit --------- Co-authored-by: jasquat <jasquat@users.noreply.github.com>
This commit is contained in:
parent
b1206c5b3d
commit
3c1cf4380d
|
@ -91,16 +91,25 @@ if (
|
|||
) {
|
||||
generalDateFormat = window.spiffworkflowFrontendJsenv.DATE_FORMAT;
|
||||
}
|
||||
const supportedDateFormats = ['yyyy-MM-dd', 'dd-MM-yyyy', 'MM-dd-yyyy'];
|
||||
if (!supportedDateFormats.includes(generalDateFormat)) {
|
||||
|
||||
const splitDateFormat = generalDateFormat.split('-');
|
||||
const supportedDateFormatTypes = ['yyyy', 'MM', 'MMM', 'MMMM', 'dd'];
|
||||
const unsupportedFormatTypes = splitDateFormat.filter(
|
||||
(x) => !supportedDateFormatTypes.includes(x)
|
||||
);
|
||||
if (unsupportedFormatTypes.length > 0) {
|
||||
throw new Error(
|
||||
`Given SPIFFWORKFLOW_FRONTEND_RUNTIME_CONFIG_DATE_FORMAT is not supported. Given: ${generalDateFormat}. Valid options are: ${supportedDateFormats}`
|
||||
`Given SPIFFWORKFLOW_FRONTEND_RUNTIME_CONFIG_DATE_FORMAT is not supported. Given: ${generalDateFormat} with invalid options: ${unsupportedFormatTypes.join(
|
||||
', '
|
||||
)}. Valid options are: ${supportedDateFormatTypes.join(', ')}`
|
||||
);
|
||||
}
|
||||
const carbonDateFormat = generalDateFormat
|
||||
.replace('yyyy', 'Y')
|
||||
.replace('MM', 'm')
|
||||
.replace('dd', 'd');
|
||||
.replace(/\byyyy\b/, 'Y')
|
||||
.replace(/\bMM\b/, 'm')
|
||||
.replace(/\bMMM\b/, 'M')
|
||||
.replace(/\bMMMM\b/, 'F')
|
||||
.replace(/\bdd\b/, 'd');
|
||||
export const DATE_TIME_FORMAT = `${generalDateFormat} HH:mm:ss`;
|
||||
export const TIME_FORMAT_HOURS_MINUTES = 'HH:mm';
|
||||
export const DATE_FORMAT = generalDateFormat;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Duration, format } from 'date-fns';
|
||||
import { Duration, format, parse } from 'date-fns';
|
||||
import {
|
||||
DATE_TIME_FORMAT,
|
||||
DATE_FORMAT,
|
||||
|
@ -41,17 +41,8 @@ const convertDateObjectToFormattedString = (dateObject: Date) => {
|
|||
};
|
||||
|
||||
const dateStringToYMDFormat = (dateString: string) => {
|
||||
if (dateString && dateString.match(/^\d{2}-\d{2}-\d{4}$/)) {
|
||||
if (DATE_FORMAT.startsWith('dd')) {
|
||||
const d = dateString.split('-');
|
||||
return `${d[2]}-${d[1]}-${d[0]}`;
|
||||
}
|
||||
if (DATE_FORMAT.startsWith('MM')) {
|
||||
const d = dateString.split('-');
|
||||
return `${d[2]}-${d[0]}-${d[1]}`;
|
||||
}
|
||||
}
|
||||
return dateString;
|
||||
const newDate = parse(dateString, DATE_FORMAT, new Date());
|
||||
return format(newDate, 'yyyy-MM-dd');
|
||||
};
|
||||
|
||||
const convertDateAndTimeStringsToDate = (
|
||||
|
|
Loading…
Reference in New Issue