From 353f83a13fec558769b7986e28ef8bc73da17d93 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:00 +0000 Subject: [PATCH 1/6] fix(nc-gui): date copy paste issue with unknown format --- .../nc-gui/composables/useMultiSelect/convertCellData.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts index 1ca5e60c32..2a1885f4be 100644 --- a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts +++ b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts @@ -1,6 +1,6 @@ import dayjs from 'dayjs' import type { AttachmentType, ColumnType, LinkToAnotherRecordType, SelectOptionsType } from 'nocodb-sdk' -import { UITypes, populateUniqueFileName } from 'nocodb-sdk' +import { UITypes, getDateFormat, populateUniqueFileName, validateDateWithUnknownFormat } from 'nocodb-sdk' import type { AppInfo } from '~/composables/useGlobal' import { isBt, isMm, parseProp } from '#imports' @@ -56,8 +56,8 @@ export default function convertCellData( } return null case UITypes.Date: { - const parsedDate = dayjs(value, parseProp(column?.meta)?.date_format ?? 'YYYY-MM-DD') - if (!parsedDate.isValid()) { + const parsedDate = dayjs(value, getDateFormat(value)) + if (!(validateDateWithUnknownFormat(value) && parsedDate.isValid())) { if (isMultiple) { return null } else { From c835be96b36f714f7655133e3f576d8cf9ac9818 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:00 +0000 Subject: [PATCH 2/6] fix(nc-gui): copy paste datetime with unknown format --- .../nc-gui/composables/useMultiSelect/convertCellData.ts | 9 +++------ packages/nocodb-sdk/src/lib/dateTimeHelper.ts | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts index 2a1885f4be..995d82229b 100644 --- a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts +++ b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts @@ -1,6 +1,6 @@ import dayjs from 'dayjs' import type { AttachmentType, ColumnType, LinkToAnotherRecordType, SelectOptionsType } from 'nocodb-sdk' -import { UITypes, getDateFormat, populateUniqueFileName, validateDateWithUnknownFormat } from 'nocodb-sdk' +import { UITypes, getDateFormat, getDateTimeFormat, populateUniqueFileName, validateDateWithUnknownFormat } from 'nocodb-sdk' import type { AppInfo } from '~/composables/useGlobal' import { isBt, isMm, parseProp } from '#imports' @@ -67,11 +67,8 @@ export default function convertCellData( return parsedDate.format('YYYY-MM-DD') } case UITypes.DateTime: { - const parsedDateTime = dayjs( - value, - `${parseProp(column?.meta)?.date_format ?? 'YYYY-MM-DD'} ${parseProp(column?.meta)?.time_format ?? 'HH:mm'}`, - ) - if (!parsedDateTime.isValid()) { + const parsedDateTime = dayjs(value, getDateTimeFormat(value)) + if (!(validateDateWithUnknownFormat(value) && parsedDateTime.isValid())) { if (isMultiple) { return null } else { diff --git a/packages/nocodb-sdk/src/lib/dateTimeHelper.ts b/packages/nocodb-sdk/src/lib/dateTimeHelper.ts index e0652f13b3..1c75886faf 100644 --- a/packages/nocodb-sdk/src/lib/dateTimeHelper.ts +++ b/packages/nocodb-sdk/src/lib/dateTimeHelper.ts @@ -64,7 +64,7 @@ export function getDateTimeFormat(v: string) { } } } - return 'YYYY/MM/DD'; + return 'YYYY/MM/DD HH:mm'; } export function parseStringDate(v: string, dateFormat: string) { From 2bb85cc8c3779f996a595038cc687cccfa339eff Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:00 +0000 Subject: [PATCH 3/6] fic(nc-gui): copy date and paste in dateTime field --- .../useMultiSelect/convertCellData.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts index 995d82229b..7b9560c487 100644 --- a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts +++ b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts @@ -56,8 +56,14 @@ export default function convertCellData( } return null case UITypes.Date: { - const parsedDate = dayjs(value, getDateFormat(value)) - if (!(validateDateWithUnknownFormat(value) && parsedDate.isValid())) { + const isValid = validateDateWithUnknownFormat(value) + let parsedDate = dayjs(value, getDateTimeFormat(value)) + + if (isValid && !parsedDate.isValid()) { + parsedDate = dayjs(value, getDateFormat(value)) + } + + if (!(isValid && parsedDate.isValid())) { if (isMultiple) { return null } else { @@ -67,8 +73,13 @@ export default function convertCellData( return parsedDate.format('YYYY-MM-DD') } case UITypes.DateTime: { - const parsedDateTime = dayjs(value, getDateTimeFormat(value)) - if (!(validateDateWithUnknownFormat(value) && parsedDateTime.isValid())) { + const isValid = validateDateWithUnknownFormat(value) + let parsedDateTime = dayjs(value, getDateTimeFormat(value)) + if (isValid && !parsedDateTime.isValid()) { + parsedDateTime = dayjs(value, getDateFormat(value)) + } + + if (!(isValid && parsedDateTime.isValid())) { if (isMultiple) { return null } else { From 0e1bff094f850bc50d5a8908c8a098a2ef98a7d6 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:01 +0000 Subject: [PATCH 4/6] chore(nc-gui): lint --- .../components/smartsheet/calendar/DayView/DateTimeField.vue | 2 +- packages/nc-gui/utils/iconUtils.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue b/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue index a6e0be0c10..d086a45c43 100644 --- a/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue +++ b/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue @@ -7,7 +7,7 @@ import { generateRandomNumber, isRowEmpty } from '~/utils' const emit = defineEmits(['expandRecord', 'new-record']) const { - activeCalendarView, + // activeCalendarView, selectedDate, selectedTime, formattedData, diff --git a/packages/nc-gui/utils/iconUtils.ts b/packages/nc-gui/utils/iconUtils.ts index 0754125c7d..6832a054a4 100644 --- a/packages/nc-gui/utils/iconUtils.ts +++ b/packages/nc-gui/utils/iconUtils.ts @@ -128,9 +128,6 @@ import NcItalic from '~icons/nc-icons/italic' import NcBold from '~icons/nc-icons/bold' import NcUnderline from '~icons/nc-icons/underline' import NcCrop from '~icons/nc-icons/crop' -import NcItalic from '~icons/nc-icons/italic' -import NcBold from '~icons/nc-icons/bold' -import NcUnderline from '~icons/nc-icons/underline' // keep it for reference // todo: remove it after all icons are migrated From 283fac5c5353cc4a277a5f6d3ccfb93abe24a69b Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:01 +0000 Subject: [PATCH 5/6] fix(nc-gui): combine date & dateTime convertCellData switch statement --- .../useMultiSelect/convertCellData.ts | 34 ++++++------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts index 7b9560c487..ab6f3dda2d 100644 --- a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts +++ b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts @@ -55,38 +55,24 @@ export default function convertCellData( if (strval === 'false' || strval === '0' || strval === '') return false } return null - case UITypes.Date: { - const isValid = validateDateWithUnknownFormat(value) - let parsedDate = dayjs(value, getDateTimeFormat(value)) - - if (isValid && !parsedDate.isValid()) { - parsedDate = dayjs(value, getDateFormat(value)) - } - - if (!(isValid && parsedDate.isValid())) { - if (isMultiple) { - return null - } else { - throw new Error('Not a valid date') - } - } - return parsedDate.format('YYYY-MM-DD') - } + case UITypes.Date: case UITypes.DateTime: { - const isValid = validateDateWithUnknownFormat(value) - let parsedDateTime = dayjs(value, getDateTimeFormat(value)) - if (isValid && !parsedDateTime.isValid()) { - parsedDateTime = dayjs(value, getDateFormat(value)) + let parsedDateOrDateTime = dayjs(value, getDateTimeFormat(value)) + + if (!parsedDateOrDateTime.isValid()) { + parsedDateOrDateTime = dayjs(value, getDateFormat(value)) } - if (!(isValid && parsedDateTime.isValid())) { + if (!parsedDateOrDateTime.isValid()) { if (isMultiple) { return null } else { - throw new Error('Not a valid datetime value') + throw new Error(`Not a valid '${to}' value`) } } - return parsedDateTime.utc().format('YYYY-MM-DD HH:mm:ssZ') + return to === UITypes.Date + ? parsedDateOrDateTime.format('YYYY-MM-DD') + : parsedDateOrDateTime.utc().format('YYYY-MM-DD HH:mm:ssZ') } case UITypes.Time: { let parsedTime = dayjs(value) From 40a101aac27acb961178342bbcca14ba048e4952 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:23:01 +0000 Subject: [PATCH 6/6] chore(nc-gui): lint --- packages/nc-gui/composables/useMultiSelect/convertCellData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts index ab6f3dda2d..922c285554 100644 --- a/packages/nc-gui/composables/useMultiSelect/convertCellData.ts +++ b/packages/nc-gui/composables/useMultiSelect/convertCellData.ts @@ -1,6 +1,6 @@ import dayjs from 'dayjs' import type { AttachmentType, ColumnType, LinkToAnotherRecordType, SelectOptionsType } from 'nocodb-sdk' -import { UITypes, getDateFormat, getDateTimeFormat, populateUniqueFileName, validateDateWithUnknownFormat } from 'nocodb-sdk' +import { UITypes, getDateFormat, getDateTimeFormat, populateUniqueFileName } from 'nocodb-sdk' import type { AppInfo } from '~/composables/useGlobal' import { isBt, isMm, parseProp } from '#imports'