From 8428d80e1a9833fa76fc3f1b1a5d0045ac81f4a3 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Tue, 20 Feb 2024 07:15:53 +0000 Subject: [PATCH] feat(nc-gui): initial day view for date time field --- .../smartsheet/calendar/DayView.vue | 49 ++++++++++++++++--- .../components/smartsheet/calendar/index.vue | 1 + .../composables/useCalendarViewStore.ts | 3 ++ 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/calendar/DayView.vue b/packages/nc-gui/components/smartsheet/calendar/DayView.vue index 6cef10d028..45cc0129b9 100644 --- a/packages/nc-gui/components/smartsheet/calendar/DayView.vue +++ b/packages/nc-gui/components/smartsheet/calendar/DayView.vue @@ -13,7 +13,7 @@ const props = withDefaults(defineProps(), { data: null, }) -const emit = defineEmits(['expand-record']) +const emit = defineEmits(['expand-record', 'new-record']) const meta = inject(MetaInj, ref()) const fields = inject(FieldsInj, ref([])) @@ -21,8 +21,7 @@ const data = toRefs(props).data const displayField = computed(() => meta.value?.columns?.find((c) => c.pv && fields.value.includes(c)) ?? null) -const { pageDate, selectedDate, calDataType, formattedData, calendarRange } = useCalendarViewStoreOrThrow() - +const { pageDate, selectedTime, selectedDate, calDataType, formattedData, calendarRange } = useCalendarViewStoreOrThrow() const getRecordPosition = (record: Row) => { if (!calendarRange.value || !calendarRange.value[0]) return '' const startCol = calendarRange.value[0].fk_from_col @@ -46,10 +45,19 @@ const getRecordPosition = (record: Row) => { } } -const hours = computed(() => { +const hours = computed(() => { const hours = [] for (let i = 0; i < 24; i++) { - hours.push(i) + hours.push( + dayjs() + .hour(i) + .minute(0) + .second(0) + .millisecond(0) + .year(selectedDate.value.getFullYear()) + .month(selectedDate.value.getMonth()) + .date(selectedDate.value.getDate()), + ) } return hours }) @@ -90,8 +98,35 @@ const renderData = computed(() => { 'h-calc(100vh-10.8rem) overflow-y-auto nc-scrollbar-md': !props.isEmbed, 'border-r-1 h-full border-gray-200 ': props.isEmbed, }" - class="flex flex-col mt-3 gap-2 w-full px-1" - > + class="flex flex-col w-full" + > +
+
+ {{ dayjs(hour).format('H A') }} +
+
+ + + +
+
No Records in this day diff --git a/packages/nc-gui/components/smartsheet/calendar/index.vue b/packages/nc-gui/components/smartsheet/calendar/index.vue index 755f89757b..52861912ea 100644 --- a/packages/nc-gui/components/smartsheet/calendar/index.vue +++ b/packages/nc-gui/components/smartsheet/calendar/index.vue @@ -170,6 +170,7 @@ const headerText = computed(() => { v-else-if="activeCalendarView === 'day'" class="flex-grow-1" @expand-record="expandRecord" + @new-record="newRecord" />
diff --git a/packages/nc-gui/composables/useCalendarViewStore.ts b/packages/nc-gui/composables/useCalendarViewStore.ts index 4ccb74d728..3f7a3507aa 100644 --- a/packages/nc-gui/composables/useCalendarViewStore.ts +++ b/packages/nc-gui/composables/useCalendarViewStore.ts @@ -36,6 +36,8 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( const selectedDate = ref(new Date()) + const selectedTime = ref() + const isCalendarDataLoading = ref(false) const selectedDateRange = ref<{ @@ -460,6 +462,7 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( loadCalendarData, formattedData, isSidebarLoading, + selectedTime, updateCalendarMeta, calendarMetaData, activeCalendarView,