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 6 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 {
activeCalendarView,
// activeCalendarView,
selectedDate,
selectedTime,
formattedData,

32
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, getDateTimeFormat, populateUniqueFileName } from 'nocodb-sdk'
import type { AppInfo } from '~/composables/useGlobal'
import { isBt, isMm, parseProp } from '#imports'
@ -55,30 +55,24 @@ export default function convertCellData(
if (strval === 'false' || strval === '0' || strval === '') return false
}
return null
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.Date:
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()) {
let parsedDateOrDateTime = dayjs(value, getDateTimeFormat(value))
if (!parsedDateOrDateTime.isValid()) {
parsedDateOrDateTime = dayjs(value, getDateFormat(value))
}
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)

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 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

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) {

Loading…
Cancel
Save