RED-5289 - Docs/Pages switch in dossier stats
This commit is contained in:
parent
d1fbfd78c9
commit
401e6a047f
@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
import { BehaviorSubject, Observable, Subject, switchMap } from 'rxjs';
|
||||||
import { filter, startWith } from 'rxjs/operators';
|
import { filter, map, startWith } from 'rxjs/operators';
|
||||||
import { Entity } from '../listing';
|
import { Entity } from '../listing';
|
||||||
import { RequiredParam, shareLast, Validate } from '../utils';
|
import { RequiredParam, shareLast, Validate } from '../utils';
|
||||||
import { Id } from '../listing/models/trackable';
|
import { Id } from '../listing/models/trackable';
|
||||||
@ -11,6 +11,7 @@ export abstract class EntitiesMapService<Interface, Class extends Entity<Interfa
|
|||||||
|
|
||||||
protected readonly _map = new Map<Id, BehaviorSubject<Class[]>>();
|
protected readonly _map = new Map<Id, BehaviorSubject<Class[]>>();
|
||||||
readonly #entityChanged$ = new Subject<Class>();
|
readonly #entityChanged$ = new Subject<Class>();
|
||||||
|
readonly #entitiesChanged$ = new BehaviorSubject<boolean>(false);
|
||||||
readonly #entityDeleted$ = new Subject<Class>();
|
readonly #entityDeleted$ = new Subject<Class>();
|
||||||
|
|
||||||
get empty(): boolean {
|
get empty(): boolean {
|
||||||
@ -68,6 +69,10 @@ export abstract class EntitiesMapService<Interface, Class extends Entity<Interfa
|
|||||||
|
|
||||||
// Emit observables only after entities have been updated
|
// Emit observables only after entities have been updated
|
||||||
|
|
||||||
|
if(changedEntities.length || deletedEntities.length) {
|
||||||
|
this.#entitiesChanged$.next(true);
|
||||||
|
}
|
||||||
|
|
||||||
for (const entity of changedEntities) {
|
for (const entity of changedEntities) {
|
||||||
this.#entityChanged$.next(entity);
|
this.#entityChanged$.next(entity);
|
||||||
}
|
}
|
||||||
@ -105,6 +110,15 @@ export abstract class EntitiesMapService<Interface, Class extends Entity<Interfa
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Validate()
|
||||||
|
watchChanged$(@RequiredParam() key: Id): Observable<boolean> {
|
||||||
|
return this.#entityChanged$.pipe(
|
||||||
|
startWith(this.get(key)),
|
||||||
|
map(entities => entities as Class[]),
|
||||||
|
map(entities => !!entities.length)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
watchDeleted$(entityId: Id): Observable<Class> {
|
watchDeleted$(entityId: Id): Observable<Class> {
|
||||||
return this.#entityDeleted$.pipe(filter(entity => entity.id === entityId));
|
return this.#entityDeleted$.pipe(filter(entity => entity.id === entityId));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user