Skip to content

Commit b74e909

Browse files
author
Dmitry Yadrikhinsky
committed
Init DrawerTask
1 parent 15a9b14 commit b74e909

File tree

5 files changed

+66
-7
lines changed

5 files changed

+66
-7
lines changed

src/models/TaskModel.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export default class TaskModel extends AbstractModel {
4040
time: observable,
4141
datesInProgress: observable,
4242
duration: computed,
43+
setTitle: action,
4344
start: action,
4445
end: action,
4546
});
@@ -57,6 +58,10 @@ export default class TaskModel extends AbstractModel {
5758
}, 0);
5859
}
5960

61+
setTitle(title: string) {
62+
this.title = title;
63+
}
64+
6065
start() {
6166
this.active = true;
6267
this.addDateWhenWasInProgress(new Date());

src/screens/projects/Projects.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import TaskModel from '../../models/TaskModel';
1212
import ProjectModel from '../../models/ProjectModel';
1313
import ProjectModal from './components/ProjectModal';
1414
import TaskNode from './components/TaskNode/TaskNode';
15+
import DrawerTask from './components/DrawerTask/DrawerTask';
1516

1617
const { Sider } = Layout;
1718

@@ -44,8 +45,9 @@ const ProjectList = TreeList(
4445
);
4546

4647
export default observer(function Projects() {
47-
const [createNewProject, setCreateNewProject] = useState<boolean>();
4848
const [showProjectModal, setShowProjectModal] = useState<boolean>();
49+
const [drawerVisible, setDrawerVisible] = useState<boolean>(false);
50+
const [selectedTask, setSelectedTask] = useState<TaskModel | undefined>();
4951

5052
function handleCreateProject() {
5153
setShowProjectModal(true);
@@ -57,6 +59,14 @@ export default observer(function Projects() {
5759
}
5860
}
5961

62+
function handleSelectTask(items: Key[]) {
63+
if (items.length > 0) {
64+
setDrawerVisible(true);
65+
const task = tasksStore.getTaskByKey(items[0] as string);
66+
setSelectedTask(task);
67+
}
68+
}
69+
6070
return (
6171
<Layout>
6272
<Sider width={250} className="site-layout-background">
@@ -67,16 +77,18 @@ export default observer(function Projects() {
6777
</Sider>
6878
<Layout style={{ padding: '24px' }}>
6979
<Space className="root" direction="vertical">
70-
<TaskList />
80+
<TaskList onSelect={handleSelectTask} />
7181
<TaskInput />
7282
</Space>
7383
</Layout>
7484
{showProjectModal && (
75-
<ProjectModal
76-
onClose={() => setShowProjectModal(false)}
77-
createNew={createNewProject}
78-
/>
85+
<ProjectModal onClose={() => setShowProjectModal(false)} />
7986
)}
87+
<DrawerTask
88+
task={selectedTask}
89+
visible={drawerVisible}
90+
onClose={() => setDrawerVisible(false)}
91+
/>
8092
</Layout>
8193
);
8294
});
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import React from 'react';
2+
import { Drawer, Input } from 'antd';
3+
import { observer } from 'mobx-react';
4+
5+
import TaskModel from '../../../../models/TaskModel';
6+
7+
interface DrawerTaskProps {
8+
task: TaskModel | undefined;
9+
visible: boolean;
10+
onClose: () => void;
11+
}
12+
13+
export default observer(function DrawerTask({
14+
task,
15+
visible,
16+
onClose,
17+
}: DrawerTaskProps) {
18+
return (
19+
<Drawer
20+
placement="right"
21+
closable={false}
22+
onClose={onClose}
23+
visible={visible}
24+
>
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>
38+
</Drawer>
39+
);
40+
});

src/screens/projects/components/TreeList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ export default function TreeList<T extends ITreeItem>(
9999
draggable
100100
selectable={options?.selectable}
101101
blockNode
102-
onDrop={onDrop}
103102
treeData={data}
103+
onDrop={onDrop}
104104
onSelect={onSelect}
105105
onCheck={options?.checkable ? options?.onCheck : undefined}
106106
titleRender={options?.titleRender}

src/types/CommonTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export type Nullable<T> = T | null;
2+
export type Undefined<T> = T | undefined;

0 commit comments

Comments
 (0)