Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit ea2bc90

Browse files
author
Dmitry Yadrikhinsky
committed
DrawerTask
1 parent e8dcce8 commit ea2bc90

File tree

2 files changed

+57
-15
lines changed

2 files changed

+57
-15
lines changed

src/models/TaskModel.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ interface IJsonTaskModel extends ITreeItem<IJsonTaskModel> {
1111
time: string[][];
1212
datesInProgress: string[];
1313
children: IJsonTaskModel[];
14+
details: string[];
1415
}
1516

1617
export default class TaskModel extends AbstractModel {
@@ -22,6 +23,7 @@ export default class TaskModel extends AbstractModel {
2223
active: boolean = false;
2324
time: Date[][] = [];
2425
datesInProgress: Date[] = [];
26+
details: string = '';
2527

2628
constructor(props: IJsonTaskModel) {
2729
super();
@@ -40,8 +42,10 @@ export default class TaskModel extends AbstractModel {
4042
active: observable,
4143
time: observable,
4244
datesInProgress: observable,
45+
details: observable,
4346
duration: computed,
4447
setTitle: action,
48+
setDetails: action,
4549
start: action,
4650
end: action,
4751
});
@@ -63,6 +67,14 @@ export default class TaskModel extends AbstractModel {
6367
this.title = title;
6468
}
6569

70+
setDetails(details: string) {
71+
this.details = details;
72+
}
73+
74+
setChecked(checked: boolean) {
75+
this.checked = checked;
76+
}
77+
6678
start() {
6779
this.active = true;
6880
this.addDateWhenWasInProgress(new Date());
Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import React from 'react';
2-
import { Drawer, Input } from 'antd';
1+
import React, { useMemo } from 'react';
2+
import { Checkbox, Drawer, Input, Space } from 'antd';
33
import { observer } from 'mobx-react';
44

55
import TaskModel from '../../../../models/TaskModel';
6+
import rootStore from '../../../../services/RootStore';
7+
import { useTaskDuration } from '../../../../hooks/TaskHooks';
8+
9+
const { projectStore } = rootStore;
610

711
interface DrawerTaskProps {
812
task: TaskModel | undefined;
@@ -15,26 +19,52 @@ export default observer(function DrawerTask({
1519
visible,
1620
onClose,
1721
}: DrawerTaskProps) {
22+
const project = useMemo(() => projectStore.get(task?.projectId || ''), [
23+
task,
24+
]);
25+
const duration = useTaskDuration(task);
26+
1827
return (
1928
<Drawer
2029
placement="right"
2130
closable={false}
2231
onClose={onClose}
2332
visible={visible}
2433
>
25-
<Input
26-
value={task?.title}
27-
onChange={(e) => {
28-
const title = e.target.value;
29-
if (task) {
30-
task.setTitle(title);
31-
}
32-
}}
33-
/>
34-
<p>Some contents...</p>
35-
<p>Some contents...</p>
36-
<p>Some contents...</p>
37-
<p>Some contents...</p>
34+
<Space direction="vertical">
35+
<Checkbox
36+
onChange={(e) => {
37+
const { checked } = e.target;
38+
if (task) {
39+
task.setChecked(checked);
40+
}
41+
}}
42+
checked={task?.checked}
43+
>
44+
Mark as done
45+
</Checkbox>
46+
<div>Project: {project?.title}</div>
47+
<Input
48+
value={task?.title}
49+
onChange={(e) => {
50+
const title = e.target.value;
51+
if (task) {
52+
task.setTitle(title);
53+
}
54+
}}
55+
/>
56+
<Input
57+
value={task?.details}
58+
placeholder="Details"
59+
onChange={(e) => {
60+
const details = e.target.value;
61+
if (task) {
62+
task.setDetails(details);
63+
}
64+
}}
65+
/>
66+
<div>Duration: {duration}</div>
67+
</Space>
3868
</Drawer>
3969
);
4070
});

0 commit comments

Comments
 (0)