add new methods to entities service
This commit is contained in:
parent
df23edf06b
commit
092ef1b2a8
@ -1,5 +1,5 @@
|
||||
import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';
|
||||
import { BehaviorSubject, combineLatest, Observable, pipe } from 'rxjs';
|
||||
import { BehaviorSubject, combineLatest, Observable, pipe, Subject } from 'rxjs';
|
||||
import { distinctUntilChanged, map, tap } from 'rxjs/operators';
|
||||
import { FilterService, getFilteredEntities } from '../../filtering';
|
||||
import { SearchService } from '../../search';
|
||||
@ -32,6 +32,7 @@ export class EntitiesService<E extends IListable, I = E> extends GenericService<
|
||||
readonly selectedLength$: Observable<number>;
|
||||
readonly all$: Observable<E[]>;
|
||||
readonly allLength$: Observable<number>;
|
||||
readonly entityChanged$ = new Subject<E>();
|
||||
private readonly _filterService = this._injector.get(FilterService);
|
||||
private readonly _searchService = this._injector.get<SearchService<E>>(SearchService);
|
||||
private readonly _all$ = new BehaviorSubject<E[]>([]);
|
||||
@ -138,8 +139,23 @@ export class EntitiesService<E extends IListable, I = E> extends GenericService<
|
||||
this.setSelected(this.selected.filter((el, idx) => idx !== currentEntityIdx));
|
||||
}
|
||||
|
||||
find(id: string): E | undefined {
|
||||
return this.all.find(entity => entity.id === id);
|
||||
}
|
||||
|
||||
has(id: string): boolean {
|
||||
return this.all.some(entity => entity.id === id);
|
||||
}
|
||||
|
||||
updateSelection(): void {
|
||||
const items = this._displayed.filter(item => this.selected.includes(item));
|
||||
this.setSelected(items);
|
||||
}
|
||||
|
||||
replace(newEntity: E): void {
|
||||
const all = this.all.filter(item => item.id !== newEntity.id);
|
||||
all.push(newEntity);
|
||||
this.setEntities(all);
|
||||
this.entityChanged$.next(newEntity);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user