UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

59 lines (58 loc) 2.25 kB
import { parseISO, parse } from 'date-fns'; import { DateFormatter } from './DisplayFormatHelper'; import { AdaptableLogger } from '../../agGrid/AdaptableLogger'; export const isValidDate = (date) => { return date instanceof Date && !isNaN(date.getTime()); }; export const isValueValidDate = (data) => { if (!data || typeof data === 'boolean') { return false; } const date = new Date(data); return !isNaN(date.getTime()); }; export const dateToISO = (date) => { return DateFormatter(date, { Pattern: 'yyyy-MM-dd' }); }; export const parseToISO = (date, dateFormat) => { const dateInstance = parseDateValue(date, dateFormat); return isValidDate(dateInstance) ? dateToISO(dateInstance) : ''; }; export const parseDateValue = (dateValue, dateFormat) => { if (dateValue == undefined || (typeof dateValue === 'string' && dateValue.trim() === '')) { return undefined; } if (dateValue instanceof Date) { return !isNaN(dateValue.getTime()) ? dateValue : undefined; } try { let dateInstance; if (typeof dateValue === 'number') { dateInstance = new Date(dateValue); } else { if (dateFormat) { dateInstance = parse(dateValue, dateFormat, new Date()); } else { dateInstance = parseISO(dateValue); } if (!isValidDate(dateInstance)) { dateInstance = new Date(Date.parse(dateValue)); } } if (!isValidDate(dateInstance)) { AdaptableLogger.consoleWarnBase(`Invalid date value "${dateValue}" - cannot be converted to a Date instance. Please make sure you specify adaptableOptions.userInterfaceOptions.dateInputOptions.dateFormat correctly.`); dateInstance = undefined; } return dateInstance; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); const errorStack = error instanceof Error ? error.stack : undefined; AdaptableLogger.consoleErrorBase(`Error parsing date value "${dateValue}": ${errorMessage}`, { stack: errorStack, originalError: error, }); } };