lem-entry-readings.component.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';
  2. import { Observable } from 'rxjs';
  3. import { map } from 'rxjs/operators';
  4. import { LemEntry, Reading } from 'src/app/models/evt-models';
  5. import { register } from 'src/app/services/component-register.service';
  6. import { EVTModelService } from 'src/app/services/evt-model.service';
  7. @Component({
  8. selector: 'evt-lem-entry-readings',
  9. templateUrl: './lem-entry-readings.component.html',
  10. styleUrls: ['./lem-entry-readings.component.scss'],
  11. changeDetection: ChangeDetectionStrategy.OnPush,
  12. })
  13. @register(LemEntryReadingsComponent)
  14. export class LemEntryReadingsComponent {
  15. @Input() data: LemEntry;
  16. @Input() rdgHasCounter: boolean;
  17. // tslint:disable-next-line: no-any
  18. @Input() template: TemplateRef<any>;
  19. groups$ = this.evtModelService.groups$;
  20. constructor(
  21. public evtModelService: EVTModelService,
  22. ) {
  23. }
  24. get significantRdg(): Reading[] {
  25. return this.data.readings.filter((rdg) => rdg.significant);
  26. }
  27. getWits$(witID: string): Observable<string[]> {
  28. return this.groups$.pipe(
  29. map((groups) => {
  30. return groups.filter((g) => g.id === witID).map((g) => g.witnesses).reduce((x, y) => ([ ...x, ...y ]), []);
  31. }),
  32. map((groupWits) => groupWits.length > 0 ? groupWits : [witID]),
  33. );
  34. }
  35. }