From 6e78d5d0bf88d25db48a82e498fe0193dc9baedf Mon Sep 17 00:00:00 2001 From: zaultavangar Date: Sun, 17 Dec 2023 20:13:21 -0500 Subject: developing CalendarBox and CollectionCalendarView --- .../views/collections/CollectionCalendarView.tsx | 103 ++++++++++++++++++++- 1 file changed, 99 insertions(+), 4 deletions(-) (limited to 'src/client/views/collections') diff --git a/src/client/views/collections/CollectionCalendarView.tsx b/src/client/views/collections/CollectionCalendarView.tsx index 99dc09732..f94d05c61 100644 --- a/src/client/views/collections/CollectionCalendarView.tsx +++ b/src/client/views/collections/CollectionCalendarView.tsx @@ -1,8 +1,18 @@ import * as React from 'react'; import { CollectionSubView } from "./CollectionSubView"; import { observer } from 'mobx-react'; -import { makeObservable, observable } from 'mobx'; -import { Doc, DocListCast } from '../../../fields/Doc'; +import { computed, makeObservable, observable } from 'mobx'; +import { Doc, DocListCast, Opt } from '../../../fields/Doc'; +import { CollectionStackingView } from './CollectionStackingView'; +import { CollectionViewType } from '../../documents/DocumentTypes'; +import { dateRangeStrToDates, emptyFunction, returnAll, returnEmptyDoclist, returnNone, returnOne, returnTrue } from '../../../Utils'; +import { DocumentView, DocumentViewProps } from '../nodes/DocumentView'; +import { TbRuler } from 'react-icons/tb'; +import { Transform } from '../../util/Transform'; +import { DocData } from '../../../fields/DocSymbols'; +import { Cast, NumCast, StrCast } from '../../../fields/Types'; +import { StyleProp } from '../StyleProvider'; +import { CollectionFreeFormDocumentView } from '../nodes/CollectionFreeFormDocumentView'; @observer export class CollectionCalendarView extends CollectionSubView(){ @@ -20,13 +30,98 @@ export class CollectionCalendarView extends CollectionSubView(){ } - @observable private existingCalendars: Doc[] = DocListCast(Doc.MyCalendars?.data); + @computed get allCalendars(){ + return this.childDocs; // returns a list of docs (i.e. calendars) + } + + removeCalendar = () => { + + } + + addCalendar = (doc: Doc | Doc[], annotationKey?: string | undefined): boolean => { + // bring up calendar modal with option to create a calendar + return true; + } + + _stackRef = React.createRef(); + + panelHeight = () => { + return 0; // a standard height for all calendars; TODO: change + } + + panelWidth = () => { + return 0; //a standard width for all calendars; TODO: change + } + + // most recent calendar should come first + sortByMostRecentDate = (calendarA: Doc, calendarB: Doc) => { + const aDateRangeStr = StrCast(calendarA.date_range); + const bDateRangeStr = StrCast(calendarB.date_range); + + const [aFromDate, aToDate] = dateRangeStrToDates(aDateRangeStr); + const [bFromDate, bToDate] = dateRangeStrToDates(bDateRangeStr); + + if (aFromDate > bFromDate) { + return -1; // a comes first + } else if (aFromDate < bFromDate) { + return 1; // b comes first + } else { // start dates are the same + if (aToDate > bToDate) { + return -1; // a comes first + } else if (aToDate < bToDate) { + return 1; // b comes first + } else { + return 0; // same start and end dates + } + } + + + } + + + + screenToLocalTransform = () => + this._props + .ScreenToLocalTransform() + .translate(Doc.NativeWidth(this._props.Document), 0) + .scale(this._props.NativeDimScaling?.() || 1); + + get calendarsKey() { + return this._props.fieldKey + '_calendars'; + } render(){ return (
- Hello +
+ ) } } \ No newline at end of file -- cgit v1.2.3-70-g09d2