File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change 11import AbstractFactory from '../../base/AbstractFactory' ;
22import TasksByProject from './models/TasksByProject' ;
33import TaskModel from './models/TaskModel' ;
4+ import { TaskModelProxy , taskModelProxyHandler } from './models/TaskModelProxy' ;
45
56export default class TaskFactory extends AbstractFactory {
67 createTasks ( data : TasksByProject ) : TasksByProject {
@@ -10,4 +11,10 @@ export default class TaskFactory extends AbstractFactory {
1011 } ) ;
1112 return newData ;
1213 }
14+
15+ createTaskProxy ( taskModel : TaskModel ) : TaskModelProxy {
16+ const target = new TaskModelProxy ( taskModel ) ;
17+
18+ return new Proxy < TaskModelProxy > ( target , taskModelProxyHandler ) ;
19+ }
1320}
Original file line number Diff line number Diff line change 1+ import TaskModel from './TaskModel' ;
2+
3+ export class TaskModelProxy extends TaskModel {
4+ origin : TaskModel | null = null ;
5+ }
6+
7+ export const taskModelProxyHandler : ProxyHandler < TaskModelProxy > = {
8+ get ( target : TaskModelProxy , prop : string | symbol ) : any {
9+ return target ?. origin ?. [ prop as keyof TaskModel ] ;
10+ } ,
11+ set ( target : TaskModelProxy , prop : string | symbol , value : any ) : boolean {
12+ if ( prop === 'duration' ) {
13+ console . error (
14+ `TaskModel: Can't set prop '${ prop . toString ( ) } ' in` ,
15+ target
16+ ) ;
17+ return false ;
18+ }
19+ // @ts -ignore
20+ target [ prop ] = value ;
21+ // @ts -ignore
22+ target . origin [ prop ] = value ;
23+
24+ return true ;
25+ } ,
26+ } ;
You can’t perform that action at this time.
0 commit comments