import * as React from 'react'; import { CollectionSubView } from "./CollectionSubView"; import { observer } from 'mobx-react'; 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(){ constructor(props: any){ super(props); makeObservable(this); } componentDidMount(): void { } componentWillUnmount(): void { } @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 (
) } }