From 092ef1b2a850a64c0d3044c0851ce608f0f52cf6 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 5 Oct 2021 00:08:55 +0300 Subject: [PATCH] add new methods to entities service --- src/lib/listing/services/entities.service.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/lib/listing/services/entities.service.ts b/src/lib/listing/services/entities.service.ts index 1d4697d..262c719 100644 --- a/src/lib/listing/services/entities.service.ts +++ b/src/lib/listing/services/entities.service.ts @@ -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 extends GenericService< readonly selectedLength$: Observable; readonly all$: Observable; readonly allLength$: Observable; + readonly entityChanged$ = new Subject(); private readonly _filterService = this._injector.get(FilterService); private readonly _searchService = this._injector.get>(SearchService); private readonly _all$ = new BehaviorSubject([]); @@ -138,8 +139,23 @@ export class EntitiesService 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); + } }