1- import { makeAutoObservable } from 'mobx' ;
1+ import { action , makeObservable , observable } from 'mobx' ;
2+
23import TaskService from './TaskService' ;
34import TaskModel from '../../models/TaskModel' ;
45import TasksByProject from '../../models/TasksByProject' ;
6+ import AbstractTreeModelStore from '../../base/AbstractTreeModelStore' ;
57
6- export default class TaskStore {
8+ export default class TaskStore extends AbstractTreeModelStore < TaskModel > {
79 tasks : TasksByProject = { } ;
810 activeTask : TaskModel | undefined ;
911 private tasksService = new TaskService ( ) ;
1012
1113 constructor ( ) {
12- makeAutoObservable ( this ) ;
14+ super ( ) ;
15+ makeObservable ( this , {
16+ tasks : observable ,
17+ activeTask : observable ,
18+ set : action ,
19+ getTasks : action ,
20+ getTaskByKey : action ,
21+ getTaskByDate : action ,
22+ add : action ,
23+ startTimer : action ,
24+ endTimer : action ,
25+ restore : action ,
26+ getCheckedKeys : action ,
27+ checkTasks : action ,
28+ } ) ;
1329 }
1430
1531 set ( projectId : string , tasks : TaskModel [ ] ) {
@@ -27,7 +43,7 @@ export default class TaskStore {
2743 }
2844
2945 for ( const tasks of Object . values ( this . tasks ) ) {
30- const found = this . findTaskRecursive ( tasks , condition ) ;
46+ const found = this . getItemRecursive ( tasks , condition ) ;
3147 if ( found ) {
3248 return found ;
3349 }
@@ -43,7 +59,7 @@ export default class TaskStore {
4359 }
4460
4561 for ( const tasks of Object . values ( this . tasks ) ) {
46- this . findTasksRecursive ( tasks , condition , result ) ;
62+ this . getItemsRecursive ( tasks , condition , result ) ;
4763 }
4864 return result ;
4965 }
@@ -84,7 +100,7 @@ export default class TaskStore {
84100 }
85101 if ( Array . isArray ( this . tasks [ projectId ] ) ) {
86102 const found : TaskModel [ ] = [ ] ;
87- this . findTasksRecursive ( this . tasks [ projectId ] , condition , found ) ;
103+ this . getItemsRecursive ( this . tasks [ projectId ] , condition , found ) ;
88104 return found . map ( ( f ) => f . key ) ;
89105 }
90106 return [ ] ;
@@ -113,7 +129,7 @@ export default class TaskStore {
113129 return task . active ;
114130 }
115131
116- return this . findTaskRecursive ( tasks , condition ) ;
132+ return this . getItemRecursive ( tasks , condition ) ;
117133 }
118134
119135 private checkTasksRecursive ( tasks : TaskModel [ ] , taskIds : string [ ] ) {
@@ -124,38 +140,4 @@ export default class TaskStore {
124140 }
125141 } ) ;
126142 }
127-
128- private findTaskRecursive (
129- tasks : TaskModel [ ] ,
130- condition : ( task : TaskModel ) => boolean
131- ) : TaskModel | undefined {
132- for ( const task of tasks ) {
133- if ( condition ( task ) ) {
134- return task ;
135- }
136- if ( Array . isArray ( task . children ) ) {
137- const found = this . findTaskRecursive ( task . children , condition ) ;
138- if ( found ) {
139- return found ;
140- }
141- }
142- }
143- return undefined ;
144- }
145-
146- private findTasksRecursive (
147- tasks : TaskModel [ ] ,
148- condition : ( task : TaskModel ) => boolean ,
149- result : TaskModel [ ]
150- ) : TaskModel [ ] {
151- for ( const task of tasks ) {
152- if ( condition ( task ) ) {
153- result . push ( task ) ;
154- }
155- if ( Array . isArray ( task . children ) ) {
156- this . findTasksRecursive ( task . children , condition , result ) ;
157- }
158- }
159- return result ;
160- }
161143}
0 commit comments