From 0c7af3def414d7b10e57328fcab8a06f2b87bee7 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Tue, 20 Feb 2024 07:15:56 +0000 Subject: [PATCH] fix(nc-gui): day view fixes --- .../smartsheet/calendar/DayView.vue | 58 ++++++++++--------- .../composables/useCalendarViewStore.ts | 3 + 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/calendar/DayView.vue b/packages/nc-gui/components/smartsheet/calendar/DayView.vue index 6c5f7b3114..4fb3010e14 100644 --- a/packages/nc-gui/components/smartsheet/calendar/DayView.vue +++ b/packages/nc-gui/components/smartsheet/calendar/DayView.vue @@ -25,7 +25,8 @@ const data = toRefs(props).data const displayField = computed(() => meta.value?.columns?.find((c) => c.pv && fields.value.includes(c)) ?? null) -const { pageDate, selectedTime, selectedDate, calDataType, formattedData, calendarRange } = useCalendarViewStoreOrThrow() +const { pageDate, selectedTime, selectedDate, calDataType, formattedData, calendarRange, selectedDateRange } = + useCalendarViewStoreOrThrow() const renderData = computed(() => { if (data.value) { @@ -122,6 +123,7 @@ const hours = computed(() => { }) const isOverlap = (record, record1) => { + if (!calendarRange.value || !calendarRange.value[0]) return false const startCol = calendarRange.value[0].fk_from_col.title const endCol = calendarRange.value[0].fk_to_col.title @@ -180,10 +182,17 @@ const getRecordStyle = (record: Row) => { let startDate = dayjs(record.row[startCol]) let endDate = dayjs(record.row[endCol]) - if (!startDate) { - startDate = endDate.subtract(1, 'hour') - } else if (!endDate) { - endDate = startDate.add(1, 'hour') + if (endDate.isAfter(startDate)) { + const diff = endDate.diff(startDate) + endDate = startDate + startDate = endDate.subtract(diff) + } + + if (startDate.isBefore(scheduleStart)) { + startDate = scheduleStart + } + if (endDate.isAfter(scheduleEnd)) { + endDate = scheduleEnd } const scaleMin = (scheduleEnd - scheduleStart) / 60000 @@ -200,9 +209,9 @@ const getRecordStyle = (record: Row) => { const left = width * columnIndex return { top: `${top}%`, - height: `${height}%`, - width: columnIndex === 0 ? `calc(${width}% - 69px)` : `${width}%`, - left: columnIndex === 0 ? `calc(${left}% + 69px)` : `${left}%`, + height: `max(${height}%, 40px)`, + width: columnIndex === 0 && calDataType.value === UITypes.DateTime ? `calc(${width}% - 69px)` : `${width}%`, + left: columnIndex === 0 && calDataType.value === UITypes.DateTime ? `calc(${left}% + 69px)` : `${left}%`, } } @@ -248,7 +257,7 @@ const dropEvent = (event: DragEvent) => {