diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/genericInfo/genericInfoCmp/genericInfo.component.ts b/src/atlasComponents/regionalFeatures/bsFeatures/genericInfo/genericInfoCmp/genericInfo.component.ts index ceec64a21e4ab1c7fef613f11c76ea2f8bacf08f..ca0d7c57c1c17a4fe011b05d05bd5d1cea13f6f5 100644 --- a/src/atlasComponents/regionalFeatures/bsFeatures/genericInfo/genericInfoCmp/genericInfo.component.ts +++ b/src/atlasComponents/regionalFeatures/bsFeatures/genericInfo/genericInfoCmp/genericInfo.component.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Component, Inject, Input, OnChanges, OnDestroy, Optional, TemplateRef, ViewChild, ViewContainerRef, ViewRef } from "@angular/core"; +import { AfterViewInit, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, Optional, TemplateRef, ViewChild, ViewContainerRef, ViewRef } from "@angular/core"; import { BsRegionInputBase } from "../../bsRegionInputBase"; import { KG_REGIONAL_FEATURE_KEY, TBSDetail, UNDER_REVIEW } from "../../kgRegionalFeature/type"; import { ARIA_LABELS, CONST } from 'common/constants' @@ -69,6 +69,7 @@ export class GenericInfoCmp extends BsRegionInputBase implements OnChanges, Afte constructor( svc: BsFeatureService, + private cdr: ChangeDetectorRef, @Optional() @Inject(MAT_DIALOG_DATA) data: TInjectableData ){ super(svc) @@ -130,6 +131,7 @@ export class GenericInfoCmp extends BsRegionInputBase implements OnChanges, Afte }, () => { this.loadingFlag = false + this.cdr.markForCheck() } ) } diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.component.ts b/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.component.ts index 8acaa8e680f108574e319b3eb5d032b69f70de24..33bc2bbde0ce20039d5bcf33de72782da242cc21 100644 --- a/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.component.ts +++ b/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.component.ts @@ -1,12 +1,11 @@ -import { Component, Inject, OnDestroy, Optional } from "@angular/core"; -import { Observable, of, Subject, Subscription } from "rxjs"; +import { ChangeDetectorRef, Component, Inject, OnDestroy, Optional } from "@angular/core"; +import { BehaviorSubject, Observable, of, Subscription } from "rxjs"; import { filter, map, shareReplay, startWith, switchMap, tap } from "rxjs/operators"; import { BsRegionInputBase } from "../../bsRegionInputBase"; import { REGISTERED_FEATURE_INJECT_DATA } from "../../constants"; import { BsFeatureService, TFeatureCmpInput } from "../../service"; import { TBSDetail } from "../type"; import { ARIA_LABELS } from 'common/constants' -import { isPr } from "../profile/profile.component"; @Component({ selector: 'bs-features-receptor-entry', @@ -21,7 +20,7 @@ export class BsFeatureReceptorEntry extends BsRegionInputBase implements OnDestr private sub: Subscription[] = [] public ARIA_LABELS = ARIA_LABELS - private selectedREntryId$ = new Subject<string>() + private selectedREntryId$ = new BehaviorSubject<string>(null) private _selectedREntryId: string set selectedREntryId(id: string){ this.selectedREntryId$.next(id) @@ -50,13 +49,6 @@ export class BsFeatureReceptorEntry extends BsRegionInputBase implements OnDestr public receptorsSummary$ = this.region$.pipe( filter(v => !!v), switchMap(() => this.getFeatureInstancesList('ReceptorDistribution')), - tap(arr => { - if (arr && arr.length > 0) { - this.selectedREntryId = arr[0]['@id'] - } else { - this.selectedREntryId = null - } - }), startWith([]), shareReplay(1), ) @@ -75,11 +67,21 @@ export class BsFeatureReceptorEntry extends BsRegionInputBase implements OnDestr constructor( svc: BsFeatureService, + cdr: ChangeDetectorRef, @Optional() @Inject(REGISTERED_FEATURE_INJECT_DATA) data: TFeatureCmpInput ){ super(svc, data) this.sub.push( - this.selectedReceptor$.subscribe() + this.selectedReceptor$.subscribe(() => { + cdr.markForCheck() + }), + this.receptorsSummary$.subscribe(arr => { + if (arr && arr.length > 0) { + this.selectedREntryId = arr[0]['@id'] + } else { + this.selectedREntryId = null + } + }) ) } } diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.template.html b/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.template.html index 813c489a6f2e2e054ed1019ebc36d5dc6ef2388c..48a24c834f0ef7e943434a6242c12fe49b0f5b91 100644 --- a/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.template.html +++ b/src/atlasComponents/regionalFeatures/bsFeatures/receptor/entry/entry.template.html @@ -8,8 +8,11 @@ </mat-option> </mat-select> -<ng-container *ngIf="selectedReceptor$ | async as selectedRec"> +<ng-template [ngIf]="!(selectedReceptor$ | async)"> + <spinner-cmp></spinner-cmp> +</ng-template> +<ng-template let-selectedRec [ngIf]="selectedReceptor$ | async"> <bs-features-receptor-fingerprint (onSelectReceptor)="onSelectReceptor($event)" [bsFeature]="selectedRec"> @@ -44,4 +47,4 @@ </bs-features-receptor-autoradiograph> </ng-template> -</ng-container> +</ng-template> diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts b/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts index 72d4595fade4fec861614188df507ba3d5a42b56..76a2ad1f2f9bdffbbb598992d542989a48127279 100644 --- a/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts +++ b/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts @@ -2,7 +2,7 @@ import { Component, ComponentFactory, ComponentFactoryResolver, Inject, Injector import { IBSSummaryResponse, TContextedFeature, TRegion } from "../type"; import { BsFeatureService, TFeatureCmpInput } from "../service"; import { combineLatest, Observable, Subject } from "rxjs"; -import { debounceTime, map, shareReplay, startWith, tap } from "rxjs/operators"; +import { debounceTime, map, shareReplay, startWith } from "rxjs/operators"; import { REGISTERED_FEATURE_INJECT_DATA } from "../constants"; import { ARIA_LABELS } from 'common/constants' import { diff --git a/src/viewerModule/viewerCmp/viewerCmp.component.ts b/src/viewerModule/viewerCmp/viewerCmp.component.ts index f930dff417eaff53fb90ff95b6394696bb04e774..68b8a93746f8cc72d2c29750e8b73aee581f12eb 100644 --- a/src/viewerModule/viewerCmp/viewerCmp.component.ts +++ b/src/viewerModule/viewerCmp/viewerCmp.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, ComponentFactory, ComponentFactoryResolver, Inject, Injector, Input, OnDestroy, Optional, TemplateRef, ViewChild, ViewContainerRef } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactory, ComponentFactoryResolver, Inject, Injector, Input, OnDestroy, Optional, TemplateRef, ViewChild, ViewContainerRef } from "@angular/core"; import { select, Store } from "@ngrx/store"; import { combineLatest, merge, NEVER, Observable, of, Subscription } from "rxjs"; import {catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap } from "rxjs/operators"; @@ -231,6 +231,7 @@ export class ViewerCmp implements OnDestroy { private cStore: ComponentStore<TCStoreViewerCmp>, cfr: ComponentFactoryResolver, private dialogSvc: DialogService, + private cdr: ChangeDetectorRef, @Optional() @Inject(_PLI_VOLUME_INJ_TOKEN) private _pliVol$: Observable<_TPLIVal[]>, @Optional() @Inject(REGION_OF_INTEREST) public regionOfInterest$: Observable<any> ){ @@ -375,7 +376,7 @@ export class ViewerCmp implements OnDestroy { this.genericInfoVCR.clear() this.genericInfoVCR.createComponent(this.genericInfoCF, null, injector) - + this.cdr.markForCheck() }) ) }