aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraaravkumar <aarav.kumar1510@gmail.com>2025-04-30 12:51:51 -0400
committeraaravkumar <aarav.kumar1510@gmail.com>2025-04-30 12:51:51 -0400
commit9ec7df6af508eccdfda3a195a69c8bb1f86c41ea (patch)
treed2d5eea28658849e4f1b2c4662011c443201833b
parentc53ab98d37e68653057f12ff02e00fbe131ae930 (diff)
two way integration -- changes in calendar reflect on task node -- and changes to node reflect on calendar
-rw-r--r--src/client/views/nodes/calendarBox/CalendarBox.tsx29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx
index cc8614f66..4ee2413be 100644
--- a/src/client/views/nodes/calendarBox/CalendarBox.tsx
+++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx
@@ -1,4 +1,5 @@
import { Calendar, EventClickArg, EventDropArg, EventSourceInput } from '@fullcalendar/core';
+import { EventResizeDoneArg } from '@fullcalendar/interaction';
import dayGridPlugin from '@fullcalendar/daygrid';
import interactionPlugin from '@fullcalendar/interaction';
import multiMonthPlugin from '@fullcalendar/multimonth';
@@ -17,6 +18,7 @@ import { ContextMenu } from '../../ContextMenu';
import { DocumentView } from '../DocumentView';
import { OpenWhere } from '../OpenWhere';
import './CalendarBox.scss';
+import { DateField } from '../../../../fields/DateField';
type CalendarView = 'multiMonth' | 'dayGridMonth' | 'timeGridWeek' | 'timeGridDay';
@@ -127,9 +129,31 @@ export class CalendarBox extends CollectionSubView() {
return false;
};
- handleEventDrop = (arg: EventDropArg) => {
+ handleEventDrop = (arg: EventDropArg | EventResizeDoneArg) => {
const doc = DocServer.GetCachedRefField(arg.event._def.groupId ?? '');
- doc && arg.event.start && (doc.date_range = arg.event.start?.toString() + '|' + (arg.event.end ?? arg.event.start).toString());
+ // doc && arg.event.start && (doc.date_range = arg.event.start?.toString() + '|' + (arg.event.end ?? arg.event.start).toString());
+ if (!doc || !arg.event.start) return;
+
+ // get the new start and end dates
+ const startDate = new Date(arg.event.start);
+ const endDate = new Date(arg.event.end ?? arg.event.start);
+
+ // update date range, time range, and all day status
+ doc.date_range = `${startDate.toISOString()}|${endDate.toISOString()}`;
+
+ const allDayStatus = arg.event.allDay ?? false;
+ if (doc.allDay !== allDayStatus) {
+ doc.allDay = allDayStatus;
+ }
+
+ if (doc.allDay) {
+ delete doc.startTime;
+ delete doc.endTime;
+ } else {
+ doc.startTime = new DateField(startDate);
+ doc.endTime = new DateField(endDate);
+ }
+
};
handleEventClick = (arg: EventClickArg) => {
@@ -175,6 +199,7 @@ export class CalendarBox extends CollectionSubView() {
events: this.calendarEvents,
eventClick: this.handleEventClick,
eventDrop: this.handleEventDrop,
+ eventResize: this.handleEventDrop,
eventDidMount: arg => {
const doc = DocServer.GetCachedRefField(arg.event._def.groupId ?? '');