From e59643a3346db0429dd2936ad8d7430401e658be Mon Sep 17 00:00:00 2001 From: aaravkumar Date: Mon, 28 Apr 2025 19:24:56 -0400 Subject: added task nodes styling, completion, and removal of start/end times upon all-day click --- src/client/views/nodes/TaskManagerTask.tsx | 183 ++++++++++++++++++----------- 1 file changed, 117 insertions(+), 66 deletions(-) (limited to 'src/client/views/nodes/TaskManagerTask.tsx') diff --git a/src/client/views/nodes/TaskManagerTask.tsx b/src/client/views/nodes/TaskManagerTask.tsx index 29acba75e..1a9205ada 100644 --- a/src/client/views/nodes/TaskManagerTask.tsx +++ b/src/client/views/nodes/TaskManagerTask.tsx @@ -1,82 +1,133 @@ -import { makeObservable, action, observable } from 'mobx'; +import { action, observable, makeObservable } 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'; +import { Doc } from '../../../fields/Doc'; + +import './TaskManagerTask.scss'; interface TaskManagerProps { Document: Doc; } - + @observer export class TaskManagerTask extends React.Component { -public static LayoutString(fieldStr: string) { - return FieldView.LayoutString(TaskManagerTask, fieldStr); -} + 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 && ( -
- - -
- )} -
- ); -} + @action + updateText = (e: React.ChangeEvent) => { + this.props.Document.text = e.target.value; + }; + + @action + updateTitle = (e: React.ChangeEvent) => { + this.props.Document.title = e.target.value; + }; + + @action + updateAllDay = (e: React.ChangeEvent) => { + this.props.Document.allDay = e.target.checked; + + if (e.target.checked) { + delete this.props.Document.startTime; + delete this.props.Document.endTime; + } + }; + + @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)); + }; + + @observable + completed = false; + + @action + toggleComplete = (e: React.ChangeEvent) => { + this.completed = e.target.checked; + }; + + constructor(props: TaskManagerProps) { + super(props); + makeObservable(this); + } + + render() { + const doc = this.props.Document; + + const taskDesc = typeof doc.text === 'string' ? doc.text : ''; + const taskTitle = typeof doc.title === 'string' ? doc.title : ''; + 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 ( +
+ + +