Browse Source

Merge pull request #7759 from nocodb/nc-fix/datetime-copy-paste

Nc fix: add support to copy paste date and dateTime with unknown format
pull/7758/head
Raju Udava 7 months ago committed by GitHub
parent
commit
06ad134a2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue
  2. 32
      packages/nc-gui/composables/useMultiSelect/convertCellData.ts
  3. 3
      packages/nc-gui/utils/iconUtils.ts
  4. 2
      packages/nocodb-sdk/src/lib/dateTimeHelper.ts

2
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 emit = defineEmits(['expandRecord', 'new-record'])
const { const {
activeCalendarView, // activeCalendarView,
selectedDate, selectedDate,
selectedTime, selectedTime,
formattedData, formattedData,

32
packages/nc-gui/composables/useMultiSelect/convertCellData.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs' import dayjs from 'dayjs'
import type { AttachmentType, ColumnType, LinkToAnotherRecordType, SelectOptionsType } from 'nocodb-sdk' import type { AttachmentType, ColumnType, LinkToAnotherRecordType, SelectOptionsType } from 'nocodb-sdk'
import { UITypes, populateUniqueFileName } from 'nocodb-sdk' import { UITypes, getDateFormat, getDateTimeFormat, populateUniqueFileName } from 'nocodb-sdk'
import type { AppInfo } from '~/composables/useGlobal' import type { AppInfo } from '~/composables/useGlobal'
import { isBt, isMm, parseProp } from '#imports' import { isBt, isMm, parseProp } from '#imports'
@ -55,30 +55,24 @@ export default function convertCellData(
if (strval === 'false' || strval === '0' || strval === '') return false if (strval === 'false' || strval === '0' || strval === '') return false
} }
return null return null
case UITypes.Date: { case UITypes.Date:
const parsedDate = dayjs(value, parseProp(column?.meta)?.date_format ?? 'YYYY-MM-DD')
if (!parsedDate.isValid()) {
if (isMultiple) {
return null
} else {
throw new Error('Not a valid date')
}
}
return parsedDate.format('YYYY-MM-DD')
}
case UITypes.DateTime: { case UITypes.DateTime: {
const parsedDateTime = dayjs( let parsedDateOrDateTime = dayjs(value, getDateTimeFormat(value))
value,
`${parseProp(column?.meta)?.date_format ?? 'YYYY-MM-DD'} ${parseProp(column?.meta)?.time_format ?? 'HH:mm'}`, if (!parsedDateOrDateTime.isValid()) {
) parsedDateOrDateTime = dayjs(value, getDateFormat(value))
if (!parsedDateTime.isValid()) { }
if (!parsedDateOrDateTime.isValid()) {
if (isMultiple) { if (isMultiple) {
return null return null
} else { } 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: { case UITypes.Time: {
let parsedTime = dayjs(value) let parsedTime = dayjs(value)

3
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 NcBold from '~icons/nc-icons/bold'
import NcUnderline from '~icons/nc-icons/underline' import NcUnderline from '~icons/nc-icons/underline'
import NcCrop from '~icons/nc-icons/crop' 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 // keep it for reference
// todo: remove it after all icons are migrated // todo: remove it after all icons are migrated

2
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) { export function parseStringDate(v: string, dateFormat: string) {

Loading…
Cancel
Save