Browse Source

feat(nc-gui): timezone handling in copied cell data

pull/5601/head
Wing-Kam Wong 2 years ago
parent
commit
de903a1deb
  1. 14
      packages/nc-gui/composables/useMultiSelect/convertCellData.ts
  2. 6
      packages/nc-gui/composables/useMultiSelect/index.ts

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

@ -7,6 +7,8 @@ import { parseProp } from '#imports'
export default function convertCellData(
args: { from: UITypes; to: UITypes; value: any; column: ColumnType; appInfo: AppInfo },
isMysql = false,
isSqlite = false,
isXcdbBase = false,
) {
const { from, to, value } = args
if (from === to && ![UITypes.Attachment, UITypes.Date, UITypes.DateTime, UITypes.Time, UITypes.Year].includes(to)) {
@ -42,7 +44,17 @@ export default function convertCellData(
if (!parsedDateTime.isValid()) {
throw new Error('Not a valid datetime value')
}
return parsedDateTime.format(dateFormat)
if (isXcdbBase) {
if (isMysql) {
return parsedDateTime?.format('YYYY-MM-DD HH:mm:ss')
} else if (isSqlite) {
return parsedDateTime.utc().format('YYYY-MM-DD HH:mm:ss')
} else {
return parsedDateTime.utc().format('YYYY-MM-DD HH:mm:ssZ')
}
}
// TODO(timezone): keep ext db as it is
return parsedDateTime.format(isMysql ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm:ssZ')
}
case UITypes.Time: {
let parsedTime = dayjs(value)

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

@ -52,7 +52,7 @@ export function useMultiSelect(
const { appInfo } = useGlobal()
const { isMysql } = useProject()
const { isMysql, isSqlite, isXcdbBase } = useProject()
let clipboardContext = $ref<{ value: any; uidt: UITypes } | null>(null)
@ -305,6 +305,8 @@ export function useMultiSelect(
appInfo: unref(appInfo),
},
isMysql(meta.value?.base_id),
isSqlite(meta.value?.base_id),
isXcdbBase(meta.value?.base_id),
)
e.preventDefault()
@ -339,6 +341,8 @@ export function useMultiSelect(
appInfo: unref(appInfo),
},
isMysql(meta.value?.base_id),
isSqlite(meta.value?.base_id),
isXcdbBase(meta.value?.base_id),
)
e.preventDefault()
syncCellData?.(activeCell)

Loading…
Cancel
Save