aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/calendarBox/CalendarBox.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-29 17:01:40 -0500
committerbobzel <zzzman@gmail.com>2023-12-29 17:01:40 -0500
commit9b9f54a43793ca6ffb26c56f962d11ba8325abd2 (patch)
tree026063b95da59556eb0a416b5f6fafd2ebccd737 /src/client/views/nodes/calendarBox/CalendarBox.tsx
parenta567eb1b6469db202d41d4d54f2c96137e49ea9c (diff)
cleaned up imports, mobx observable initialization and some compile errors.
Diffstat (limited to 'src/client/views/nodes/calendarBox/CalendarBox.tsx')
-rw-r--r--src/client/views/nodes/calendarBox/CalendarBox.tsx114
1 files changed, 50 insertions, 64 deletions
diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx
index 989feb774..4fb1a7f17 100644
--- a/src/client/views/nodes/calendarBox/CalendarBox.tsx
+++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx
@@ -1,40 +1,35 @@
-import * as React from 'react';
-import { observer } from "mobx-react";
-import { Doc } from "../../../../fields/Doc";
-import { ViewBoxAnnotatableComponent, ViewBoxAnnotatableProps, ViewBoxBaseComponent } from '../../DocComponent';
-import { FieldView, FieldViewProps } from '../FieldView';
-import { StrCast } from '../../../../fields/Types';
+import { Calendar, EventClickArg, EventSourceInput } from '@fullcalendar/core';
+import dayGridPlugin from '@fullcalendar/daygrid';
+import multiMonthPlugin from '@fullcalendar/multimonth';
import { makeObservable } from 'mobx';
+import { observer } from 'mobx-react';
+import * as React from 'react';
import { dateRangeStrToDates } from '../../../../Utils';
-import { Calendar, EventClickArg, EventSourceInput } from '@fullcalendar/core'
-import dayGridPlugin from '@fullcalendar/daygrid'
-import multiMonthPlugin from '@fullcalendar/multimonth'
-import { faListNumeric } from '@fortawesome/free-solid-svg-icons';
+import { Doc } from '../../../../fields/Doc';
+import { StrCast } from '../../../../fields/Types';
+import { ViewBoxBaseComponent } from '../../DocComponent';
+import { FieldView, FieldViewProps } from '../FieldView';
type CalendarView = 'month' | 'multi-month' | 'week';
@observer
-export class CalendarBox extends ViewBoxBaseComponent<FieldViewProps>(){
+export class CalendarBox extends ViewBoxBaseComponent<FieldViewProps>() {
public static LayoutString(fieldKey: string = 'calendar') {
return FieldView.LayoutString(CalendarBox, fieldKey);
}
- componentDidMount(): void {
-
- }
+ componentDidMount(): void {}
- componentWillUnmount(): void {
-
- }
+ componentWillUnmount(): void {}
- _calendarRef = React.createRef<HTMLElement>()
+ _calendarRef = React.createRef<HTMLElement>();
- get dateRangeStr (){
+ get dateRangeStr() {
return StrCast(this.Document.date_range);
}
- // Choose a calendar view based on the date range
- get calendarViewType (): CalendarView {
+ // Choose a calendar view based on the date range
+ get calendarViewType(): CalendarView {
const [fromDate, toDate] = dateRangeStrToDates(this.dateRangeStr);
if (fromDate.getFullYear() !== toDate.getFullYear() || fromDate.getMonth() !== toDate.getMonth()) return 'multi-month';
@@ -43,92 +38,83 @@ export class CalendarBox extends ViewBoxBaseComponent<FieldViewProps>(){
return 'week';
}
- get calendarStartDate () {
- return this.dateRangeStr.split("|")[0];
+ get calendarStartDate() {
+ return this.dateRangeStr.split('|')[0];
}
- get calendarToDate () {
- return this.dateRangeStr.split("|")[1];
+ get calendarToDate() {
+ return this.dateRangeStr.split('|')[1];
}
- get childDocs (): Doc[] {
+ get childDocs(): Doc[] {
return this.childDocs; // get all sub docs for a calendar
}
- docBackgroundColor (type: string): string {
+ docBackgroundColor(type: string): string {
// TODO: Return a different color based on the event type
return 'blue';
}
- get calendarEvents (): EventSourceInput | undefined {
+ get calendarEvents(): EventSourceInput | undefined {
if (this.childDocs.length === 0) return undefined;
return this.childDocs.map((doc, idx) => {
const docTitle = StrCast(doc.title);
const docDateRange = StrCast(doc.date_range);
const [startDate, endDate] = dateRangeStrToDates(docDateRange);
const docType = doc.type;
- const docDescription = doc.description ? StrCast(doc.description): "";
+ const docDescription = doc.description ? StrCast(doc.description) : '';
return {
title: docTitle,
start: startDate,
end: endDate,
allDay: false,
- classNames:[StrCast(docType)], // will determine the style
+ classNames: [StrCast(docType)], // will determine the style
editable: false, // subject to change in the future
backgroundColor: this.docBackgroundColor(StrCast(doc.type)),
color: 'white',
extendedProps: {
- description: docDescription
+ description: docDescription,
},
-
- }
-
- })
+ };
+ });
}
handleEventClick = (arg: EventClickArg) => {
// TODO: open popover with event description, option to open CalendarManager and change event date, delete event, etc.
- }
+ };
calendarEl: HTMLElement = document.getElementById('calendar-box-v1')!;
// https://fullcalendar.io
get calendar() {
- return new Calendar(this.calendarEl,
- {
- plugins: [this.calendarViewType === 'multi-month' ? multiMonthPlugin : dayGridPlugin],
- headerToolbar: {
- left: 'prev,next today',
- center: 'title',
- right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
- },
- initialDate: this.calendarStartDate,
- navLinks: true,
- editable: false,
- displayEventTime: false,
- displayEventEnd: false,
- events: this.calendarEvents,
- eventClick: this.handleEventClick
- }
- )
-
+ return new Calendar(this.calendarEl, {
+ plugins: [this.calendarViewType === 'multi-month' ? multiMonthPlugin : dayGridPlugin],
+ headerToolbar: {
+ left: 'prev,next today',
+ center: 'title',
+ right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek',
+ },
+ initialDate: this.calendarStartDate,
+ navLinks: true,
+ editable: false,
+ displayEventTime: false,
+ displayEventEnd: false,
+ events: this.calendarEvents,
+ eventClick: this.handleEventClick,
+ });
}
-
- constructor(props: any){
+ constructor(props: any) {
super(props);
makeObservable(this);
}
- render(){
+ render() {
return (
- <div className='calendar-box-conatiner'>
- <div id='calendar-box-v1'>
-
- </div>
- </div>
+ <div className="calendar-box-conatiner">
+ <div id="calendar-box-v1"></div>
+ </div>
);
-
}
-} \ No newline at end of file
+}