Skip to content

Commit b330ad6

Browse files
authored
Merge pull request #145 from netgrif/NAE-1758
[NAE-1758] Task on single task view is not rendering
2 parents b990c70 + c844596 commit b330ad6

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

projects/netgrif-components-core/src/lib/view/task-view/abstract-single-task-view.component.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { Component, Input, OnDestroy } from '@angular/core';
22
import { AbstractViewWithHeadersComponent } from '../abstract/view-with-headers';
3-
import { Observable, Subject, Subscription } from 'rxjs';
3+
import { Observable, ReplaySubject, Subscription } from 'rxjs';
44
import { TaskPanelData } from '../../panel/task-panel-list/task-panel-data/task-panel-data';
55
import { TaskViewService } from './service/task-view.service';
6-
import { map, takeUntil } from 'rxjs/operators';
76
import { ActivatedRoute } from '@angular/router';
87

98
export class TaskConst {
@@ -18,22 +17,25 @@ export abstract class AbstractSingleTaskViewComponent extends AbstractViewWithHe
1817

1918
@Input() initiallyExpanded: boolean = true;
2019
@Input() preventCollapse: boolean = true;
21-
public task$: Observable<TaskPanelData>;
20+
public taskPanelData: ReplaySubject<TaskPanelData>;
2221
public loading$: Observable<boolean>;
2322
private transitionId: string;
24-
private subRoute: Subscription;
25-
protected unsubscribe$: Subject<void>;
23+
private subRoute: Subscription | undefined;
24+
protected subPanelData: Subscription;
2625

2726
protected constructor(protected taskViewService: TaskViewService,
2827
activatedRoute: ActivatedRoute) {
2928
super(taskViewService, activatedRoute);
30-
this.unsubscribe$ = new Subject<void>();
29+
this.taskPanelData = new ReplaySubject<TaskPanelData>(1);
3130
this.subRoute = this._activatedRoute.paramMap.subscribe(paramMap => {
3231
if (!!(paramMap?.['params']?.[TaskConst.TRANSITION_ID])) {
3332
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$));
33+
this.subPanelData.unsubscribe();
34+
this.subPanelData = this.taskViewService.tasks$.subscribe(tasks => {
35+
if (!!tasks && tasks.length > 0) {
36+
this.taskPanelData.next(this.resolveTransitionTask(tasks));
37+
}
38+
});
3739
}
3840
});
3941
this.loading$ = this.taskViewService.loading$;
@@ -42,8 +44,13 @@ export abstract class AbstractSingleTaskViewComponent extends AbstractViewWithHe
4244
ngOnDestroy() {
4345
super.ngOnDestroy();
4446
this.subRoute.unsubscribe();
45-
this.unsubscribe$.next();
46-
this.unsubscribe$.complete();
47+
if (!!this.subPanelData) {
48+
this.subPanelData.unsubscribe();
49+
}
50+
}
51+
52+
get task$(): Observable<TaskPanelData> {
53+
return this.taskPanelData.asObservable();
4754
}
4855

4956
private resolveTransitionTask(tasks: Array<TaskPanelData>): TaskPanelData {

projects/netgrif-components/src/lib/panel/task-panel-single/single-task.component.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
<span class='font-size-20'>{{ 'tasks.view.noTasksSatisfyingThisFilter' | translate }}</span>
88
</div>
99

10-
<div class='full-width full-heigh task-tab-background' fxFlex='100'>
10+
<cdk-virtual-scroll-viewport itemSize="1" class="task-panel-scroll-container full-width full-height">
1111
<div *ngTemplateOutlet='pageHeader ?? defaultPageHeader'></div>
1212
<nc-task-panel
1313
[textEllipsis]='textEllipsis'
14-
[taskPanelData]='task' [selectedHeaders$]='selectedHeaders$'
14+
[taskPanelData]='task'
15+
[selectedHeaders$]='selectedHeaders$'
1516
[forceLoadDataOnOpen]='forceLoadDataOnOpen'
1617
[responsiveBody]='responsiveBody'
1718
(taskEvent)='emitTaskEvent($event)'
@@ -27,7 +28,7 @@
2728
<mat-spinner color='primary' diameter='52'></mat-spinner>
2829
</div>
2930
<div *ngTemplateOutlet='pageFooter ?? defaultPageFooter'></div>
30-
</div>
31+
</cdk-virtual-scroll-viewport>
3132

3233
<ng-template #defaultPageHeader>
3334
<mat-card class="top-card">
@@ -36,7 +37,7 @@
3637
</ng-template>
3738

3839
<ng-template #defaultPageFooter>
39-
<mat-card class='bootom-card footer'>
40+
<mat-card class='bottom-card footer'>
4041
<span class="bottom-card-title footer-font"><strong>{{footerText ?? 'tasks.footer.defaultText' | translate}}</strong></span>
4142
</mat-card>
4243
</ng-template>

0 commit comments

Comments
 (0)