Skip to content

Commit f177959

Browse files
committed
Using factory, fix filling props
1 parent b9b3e18 commit f177959

File tree

3 files changed

+21
-20
lines changed

3 files changed

+21
-20
lines changed

src/base/TreeModelHelper.ts

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { ITreeItem, ITreeItemWithParent } from '../types/ITreeItem';
22
import { TaskModelProxy } from '../modules/tasks/models/TaskModelProxy';
33
import TaskModel from '../modules/tasks/models/TaskModel';
4+
import TaskFactory from '../modules/tasks/TaskFactory';
45

56
const TreeModelHelper = {
6-
getPathToNode<T extends ITreeItemWithParent>(node: T) {
7+
getPathToNode<T extends ITreeItemWithParent = ITreeItemWithParent>(node: T) {
78
const result: string[] = [];
89

9-
let ptrNode = node;
10+
let ptrNode: T | undefined = node;
1011
while (ptrNode) {
1112
result.unshift(ptrNode.key);
1213
// @ts-ignore
@@ -26,14 +27,10 @@ const TreeModelHelper = {
2627

2728
if (keysToTask.length === 1) {
2829
const source = sourceChildren.find((node) => node.key === keysToTask[0]);
29-
destChildren.push(
30-
// @ts-ignore
31-
new TaskModelProxy({
32-
...source,
33-
children: [],
34-
})
35-
);
36-
return true;
30+
if (source) {
31+
destChildren.push(TaskFactory.createTaskModelProxy(source));
32+
}
33+
return !!source;
3734
}
3835

3936
do {
@@ -83,12 +80,7 @@ const TreeModelHelper = {
8380
}
8481

8582
while (true) {
86-
// @ts-ignore
87-
let copy = new TaskModelProxy({
88-
...source,
89-
children: [],
90-
});
91-
83+
const copy = TaskFactory.createTaskModelProxy(source);
9284
dest.push(copy);
9385

9486
keyIdx++;

src/modules/tasks/TaskFactory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export default class TaskFactory extends AbstractFactory {
1616
return newData;
1717
}
1818

19-
createTaskProxy(taskModel: TaskModel): TaskModelProxy {
20-
const target = new TaskModelProxy(taskModel);
19+
static createTaskModelProxy(taskModel: TaskModel): TaskModelProxy {
20+
const target = new TaskModelProxy(taskModel, []);
2121

2222
return new Proxy<TaskModelProxy>(target, taskModelProxyHandler);
2323
}

src/modules/tasks/models/TaskModelProxy.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ import TaskModel from './TaskModel';
33
export class TaskModelProxy extends TaskModel {
44
origin: TaskModel | null = null;
55
children: TaskModelProxy[] = [];
6+
7+
constructor(originTaskModel: TaskModel, children: TaskModelProxy[]) {
8+
super(originTaskModel);
9+
this.origin = originTaskModel;
10+
this.children = children;
11+
}
612
}
713

814
export const taskModelProxyHandler: ProxyHandler<TaskModelProxy> = {
@@ -19,8 +25,11 @@ export const taskModelProxyHandler: ProxyHandler<TaskModelProxy> = {
1925
}
2026
// @ts-ignore
2127
target[prop] = value;
22-
// @ts-ignore
23-
target.origin[prop] = value;
28+
29+
if (prop !== 'expanded') {
30+
// @ts-ignore
31+
target.origin[prop] = value;
32+
}
2433

2534
return true;
2635
},

0 commit comments

Comments
 (0)