1
1
import { Component , Input , OnDestroy } from '@angular/core' ;
2
2
import { AbstractViewWithHeadersComponent } from '../abstract/view-with-headers' ;
3
- import { Observable , Subject , Subscription } from 'rxjs' ;
3
+ import { BehaviorSubject , Observable , Subject , Subscription } from 'rxjs' ;
4
4
import { TaskPanelData } from '../../panel/task-panel-list/task-panel-data/task-panel-data' ;
5
5
import { TaskViewService } from './service/task-view.service' ;
6
6
import { map , takeUntil } from 'rxjs/operators' ;
@@ -18,22 +18,26 @@ export abstract class AbstractSingleTaskViewComponent extends AbstractViewWithHe
18
18
19
19
@Input ( ) initiallyExpanded : boolean = true ;
20
20
@Input ( ) preventCollapse : boolean = true ;
21
- public task$ : Observable < TaskPanelData > ;
21
+ public taskPanelData : BehaviorSubject < TaskPanelData > ;
22
22
public loading$ : Observable < boolean > ;
23
23
private transitionId : string ;
24
24
private subRoute : Subscription ;
25
- protected unsubscribe$ : Subject < void > ;
25
+ protected subPanelData : Subscription ;
26
26
27
27
protected constructor ( protected taskViewService : TaskViewService ,
28
28
activatedRoute : ActivatedRoute ) {
29
29
super ( taskViewService , activatedRoute ) ;
30
- this . unsubscribe$ = new Subject < void > ( ) ;
30
+ this . subPanelData = new Subscription ( ) ;
31
+ this . taskPanelData = new BehaviorSubject < TaskPanelData > ( undefined ) ;
31
32
this . subRoute = this . _activatedRoute . paramMap . subscribe ( paramMap => {
32
33
if ( ! ! ( paramMap ?. [ 'params' ] ?. [ TaskConst . TRANSITION_ID ] ) ) {
33
34
this . transitionId = paramMap [ 'params' ] [ TaskConst . TRANSITION_ID ] ;
34
- this . task$ = this . taskViewService . tasks$ . pipe ( map < Array < TaskPanelData > , TaskPanelData > ( tasks => {
35
- return this . resolveTransitionTask ( tasks ) ;
36
- } ) , takeUntil ( this . unsubscribe$ ) ) ;
35
+ this . subPanelData = this . taskViewService . tasks$ . subscribe ( tasks => {
36
+ if ( ! ! tasks && tasks . length > 0 ) {
37
+ this . taskPanelData . next ( this . resolveTransitionTask ( tasks ) ) ;
38
+ }
39
+ } ) ;
40
+ console . log ( 'resolveTransition: ' + this . transitionId ) ;
37
41
}
38
42
} ) ;
39
43
this . loading$ = this . taskViewService . loading$ ;
@@ -42,15 +46,19 @@ export abstract class AbstractSingleTaskViewComponent extends AbstractViewWithHe
42
46
ngOnDestroy ( ) {
43
47
super . ngOnDestroy ( ) ;
44
48
this . subRoute . unsubscribe ( ) ;
45
- this . unsubscribe$ . next ( ) ;
46
- this . unsubscribe$ . complete ( ) ;
49
+ this . subPanelData . unsubscribe ( ) ;
50
+ }
51
+
52
+ get task$ ( ) : Observable < TaskPanelData > {
53
+ return this . taskPanelData . asObservable ( ) ;
47
54
}
48
55
49
56
private resolveTransitionTask ( tasks : Array < TaskPanelData > ) : TaskPanelData {
50
57
const transitionTask = tasks . find ( t => t . task . transitionId === this . transitionId ) ;
51
58
if ( ! ! transitionTask ) {
52
59
transitionTask . initiallyExpanded = transitionTask . task . finishDate === undefined ;
53
60
}
61
+ console . log ( 'resolveTransitionTask: ' + transitionTask )
54
62
return transitionTask ;
55
63
}
56
64
}
0 commit comments