From 678a48276109164fc937b334c525b8094fe89304 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Tue, 20 Feb 2024 07:16:09 +0000 Subject: [PATCH] feat(nc-gui): drag & drop implemnetation for date time field --- .../smartsheet/calendar/DayView/DateField.vue | 4 +- .../calendar/DayView/DateTimeField.vue | 272 ++++++++++++++++-- .../smartsheet/calendar/MonthView.vue | 34 +-- .../composables/useCalendarViewStore.ts | 16 +- 4 files changed, 275 insertions(+), 51 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/calendar/DayView/DateField.vue b/packages/nc-gui/components/smartsheet/calendar/DayView/DateField.vue index f62935505d..f3be2fd7ab 100644 --- a/packages/nc-gui/components/smartsheet/calendar/DayView/DateField.vue +++ b/packages/nc-gui/components/smartsheet/calendar/DayView/DateField.vue @@ -114,7 +114,7 @@ const dropEvent = (event: DragEvent) => { ...record, row: { ...record.row, - [fromCol.title!]: dayjs(newStartDate).format('YYYY-MM-DD'), + [fromCol.title!]: dayjs(newStartDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } @@ -133,7 +133,7 @@ const dropEvent = (event: DragEvent) => { } else { endDate = newStartDate.clone() } - newRow.row[toCol.title!] = dayjs(endDate).format('YYYY-MM-DD') + newRow.row[toCol.title!] = dayjs(endDate).format('YYYY-MM-DD HH:mm:ssZ') updateProperty.push(toCol.title!) } diff --git a/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue b/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue index 33cc1432e7..534749a4db 100644 --- a/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue +++ b/packages/nc-gui/components/smartsheet/calendar/DayView/DateTimeField.vue @@ -1,5 +1,4 @@ - + diff --git a/packages/nc-gui/components/smartsheet/calendar/MonthView.vue b/packages/nc-gui/components/smartsheet/calendar/MonthView.vue index 5ff5af066d..dccdba9775 100644 --- a/packages/nc-gui/components/smartsheet/calendar/MonthView.vue +++ b/packages/nc-gui/components/smartsheet/calendar/MonthView.vue @@ -304,8 +304,8 @@ const onDrag = (event: MouseEvent) => { const percentY = (event.clientY - top - window.scrollY) / height const percentX = (event.clientX - left - window.scrollX) / width - const fromCol = dragRecord.value.rowMeta.range?.fk_from_col - const toCol = dragRecord.value.rowMeta.range?.fk_to_col + const fromCol = dragRecord.value!.rowMeta.range?.fk_from_col + const toCol = dragRecord.value!.rowMeta.range?.fk_to_col const week = Math.floor(percentY * dates.value.length) const day = Math.floor(percentX * 7) @@ -322,14 +322,14 @@ const onDrag = (event: MouseEvent) => { const newRow = { ...dragRecord.value, row: { - ...dragRecord.value.row, - [fromCol.title]: dayjs(newStartDate).format('YYYY-MM-DD'), + ...dragRecord.value!.row, + [fromCol!.title!]: dayjs(newStartDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } if (toCol) { - const fromDate = dragRecord.value.row[fromCol.title] ? dayjs(dragRecord.value.row[fromCol.title]) : null - const toDate = dragRecord.value.row[toCol.title] ? dayjs(dragRecord.value.row[toCol.title]) : null + const fromDate = dragRecord.value!.row[fromCol!.title!] ? dayjs(dragRecord!.value!.row[fromCol!.title!]) : null + const toDate = dragRecord.value!.row[toCol!.title!] ? dayjs(dragRecord.value!.row[toCol!.title!]) : null if (fromDate && toDate) { endDate = dayjs(newStartDate).add(toDate.diff(fromDate, 'day'), 'day') @@ -341,13 +341,13 @@ const onDrag = (event: MouseEvent) => { endDate = newStartDate.clone() } - newRow.row[toCol.title] = dayjs(endDate).format('YYYY-MM-DD') + newRow.row[toCol.title!] = dayjs(endDate).format('YYYY-MM-DD') } formattedData.value = formattedData.value.map((r) => { - const pk = extractPkFromRow(r.row, meta.value.columns) + const pk = extractPkFromRow(r.row, meta.value!.columns!) - if (pk === extractPkFromRow(newRow.row, meta.value.columns)) { + if (pk === extractPkFromRow(newRow.row, meta.value!.columns!)) { return newRow } return r @@ -390,7 +390,7 @@ const onResize = (event: MouseEvent) => { ...resizeRecord.value, row: { ...resizeRecord.value.row, - [toCol.title]: dayjs(newEndDate).format('YYYY-MM-DD'), + [toCol.title]: dayjs(newEndDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } @@ -416,7 +416,7 @@ const onResize = (event: MouseEvent) => { ...resizeRecord.value, row: { ...resizeRecord.value.row, - [fromCol.title]: dayjs(newStartDate).format('YYYY-MM-DD'), + [fromCol.title]: dayjs(newStartDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } @@ -482,7 +482,7 @@ const stopDrag = (event: MouseEvent) => { ...dragRecord.value, row: { ...dragRecord.value.row, - [fromCol.title]: dayjs(newStartDate).format('YYYY-MM-DD'), + [fromCol.title]: dayjs(newStartDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } @@ -503,7 +503,7 @@ const stopDrag = (event: MouseEvent) => { } dragRecord.value = null - newRow.row[toCol.title] = dayjs(endDate).format('YYYY-MM-DD') + newRow.row[toCol.title] = dayjs(endDate).format('YYYY-MM-DD HH:mm:ssZ') updateProperty.push(toCol.title) } @@ -611,7 +611,7 @@ const dropEvent = (event: DragEvent) => { ...record, row: { ...record.row, - [fromCol.title!]: dayjs(newStartDate).format('YYYY-MM-DD'), + [fromCol.title!]: dayjs(newStartDate).format('YYYY-MM-DD HH:mm:ssZ'), }, } @@ -630,7 +630,7 @@ const dropEvent = (event: DragEvent) => { } else { endDate = newStartDate.clone() } - newRow.row[toCol.title!] = dayjs(endDate).format('YYYY-MM-DD') + newRow.row[toCol.title!] = dayjs(endDate).format('YYYY-MM-DD HH:mm:ssZ') updateProperty.push(toCol.title!) } @@ -746,7 +746,7 @@ onBeforeUnmount(() => { () => { const record = { row: { - [range.fk_from_col.title]: dayjs(day).format('YYYY-MM-DD'), + [range.fk_from_col.title]: dayjs(day).format('YYYY-MM-DD HH:mm:ssZ'), }, } emit('new-record', record) @@ -773,7 +773,7 @@ onBeforeUnmount(() => { () => { const record = { row: { - [calendarRange[0].fk_from_col.title]: dayjs(day).format('YYYY-MM-DD'), + [calendarRange[0].fk_from_col.title]: dayjs(day).format('YYYY-MM-DD HH:mm:ssZ'), }, } emit('new-record', record) diff --git a/packages/nc-gui/composables/useCalendarViewStore.ts b/packages/nc-gui/composables/useCalendarViewStore.ts index e026e991a9..6c1a17e533 100644 --- a/packages/nc-gui/composables/useCalendarViewStore.ts +++ b/packages/nc-gui/composables/useCalendarViewStore.ts @@ -182,11 +182,11 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } if (calDataType.value === UITypes.Date) { - fromDate = dayjs(fromDate).format('YYYY-MM-DD') - toDate = dayjs(toDate).format('YYYY-MM-DD') + fromDate = dayjs(fromDate).format('YYYY-MM-DDZ') + toDate = dayjs(toDate).format('YYYY-MM-DDZ') } else if (calDataType.value === UITypes.DateTime) { - fromDate = dayjs(fromDate).format('YYYY-MM-DD HH:mm:ss') - toDate = dayjs(toDate).format('YYYY-MM-DD HH:mm:ss') + fromDate = dayjs(fromDate).format('YYYY-MM-DD HH:mm:ssZ') + toDate = dayjs(toDate).format('YYYY-MM-DD HH:mm:ssZ') } calendarRange.value.forEach((range) => { @@ -353,11 +353,11 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } if (calDataType.value === UITypes.Date) { - fromDate = dayjs(fromDate).format('YYYY-MM-DD') - toDate = dayjs(toDate).format('YYYY-MM-DD') + fromDate = dayjs(fromDate).format('YYYY-MM-DDZ') + toDate = dayjs(toDate).format('YYYY-MM-DDZ') } else if (calDataType.value === UITypes.DateTime) { - fromDate = dayjs(fromDate).format('YYYY-MM-DD HH:mm:ss') - toDate = dayjs(toDate).format('YYYY-MM-DD HH:mm:ss') + fromDate = dayjs(fromDate).format('YYYY-MM-DD HH:mm:ssZ') + toDate = dayjs(toDate).format('YYYY-MM-DD HH:mm:ssZ') } calendarRange.value.forEach((range) => {