Browse Source

fix(nc-gui): handle copy time

pull/5678/head
Wing-Kam Wong 2 years ago
parent
commit
816070d6d1
  1. 22
      packages/nc-gui/composables/useMultiSelect/index.ts

22
packages/nc-gui/composables/useMultiSelect/index.ts

@ -83,11 +83,19 @@ export function useMultiSelect(
} }
function constructDateTimeFormat(column: ColumnType) { function constructDateTimeFormat(column: ColumnType) {
const dateFormat = parseProp(column?.meta)?.date_format ?? dateFormats[0] const dateFormat = constructDateFormat(column)
const timeFormat = parseProp(column?.meta)?.time_format ?? timeFormats[0] const timeFormat = constructTimeFormat(column)
return `${dateFormat} ${timeFormat}` return `${dateFormat} ${timeFormat}`
} }
function constructDateFormat(column: ColumnType) {
return parseProp(column?.meta)?.date_format ?? dateFormats[0]
}
function constructTimeFormat(column: ColumnType) {
return parseProp(column?.meta)?.time_format ?? timeFormats[0]
}
async function copyValue(ctx?: Cell) { async function copyValue(ctx?: Cell) {
try { try {
if (selectedRange.start !== null && selectedRange.end !== null && !selectedRange.isSingleCell()) { if (selectedRange.start !== null && selectedRange.end !== null && !selectedRange.isSingleCell()) {
@ -124,7 +132,7 @@ export function useMultiSelect(
}) })
} }
if (columnObj.uidt === UITypes.DateTime) { if (columnObj.uidt === UITypes.DateTime || columnObj.uidt === UITypes.Time) {
// remove `"` // remove `"`
// e.g. "2023-05-12T08:03:53.000Z" -> 2023-05-12T08:03:53.000Z // e.g. "2023-05-12T08:03:53.000Z" -> 2023-05-12T08:03:53.000Z
textToCopy = textToCopy.replace(/["']/g, '') textToCopy = textToCopy.replace(/["']/g, '')
@ -143,10 +151,12 @@ export function useMultiSelect(
// users can change the datetime format in UI // users can change the datetime format in UI
// `textToCopy` would be always in YYYY-MM-DD HH:mm:ss(Z / +xx:yy) format // `textToCopy` would be always in YYYY-MM-DD HH:mm:ss(Z / +xx:yy) format
// therefore, here we reformat to the correct datetime format based on the meta // therefore, here we reformat to the correct datetime format based on the meta
textToCopy = d.format(constructDateTimeFormat(columnObj)) textToCopy = d.format(
columnObj.uidt === UITypes.DateTime ? constructDateTimeFormat(columnObj) : constructTimeFormat(columnObj),
)
if (!dayjs(textToCopy).isValid()) { if (columnObj.uidt === UITypes.DateTime && !dayjs(textToCopy).isValid()) {
throw new Error('Invalid Date') throw new Error('Invalid DateTime')
} }
} }

Loading…
Cancel
Save