import { makeObservable, action, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { Docs } from '../../documents/Documents'; import { DocumentType } from '../../documents/DocumentTypes'; import { FieldView } from './FieldView'; import { DateField } from '../../../fields/DateField'; import { Doc, FieldType } from '../../../fields/Doc'; interface TaskManagerProps { Document: Doc; } @observer export class TaskManagerTask extends React.Component { public static LayoutString(fieldStr: string) { return FieldView.LayoutString(TaskManagerTask, fieldStr); } @action updateText = (e: React.ChangeEvent) => { this.props.Document.text = e.target.value; }; @action updateAllDay = (e: React.ChangeEvent) => { this.props.Document.allDay = e.target.checked; }; @action updateStart = (e: React.ChangeEvent) => { this.props.Document.startTime = new DateField(new Date(e.target.value)); }; @action updateEnd = (e: React.ChangeEvent) => { this.props.Document.endTime = new DateField(new Date(e.target.value)); }; render() { const doc = this.props.Document; const taskDesc = typeof doc.text === 'string' ? doc.text : ''; const allDay = !!doc.allDay; const startTime = doc.startTime instanceof DateField ? doc.startTime.date.toISOString().slice(0, 16) : ''; const endTime = doc.endTime instanceof DateField ? doc.endTime.date.toISOString().slice(0, 16) : ''; return (
{!allDay && (
)}
); } } Docs.Prototypes.TemplateMap.set(DocumentType.TASK, { layout: { view: TaskManagerTask, dataField: 'text' }, options: { acl: '', _height: 35, _xMargin: 10, _yMargin: 10, _layout_autoHeight: true, _layout_nativeDimEditable: true, _layout_reflowVertical: true, _layout_reflowHorizontal: true, defaultDoubleClick: 'ignore', systemIcon: 'BsCheckSquare', // or whatever icon you like }, });