apparatus-entry.component.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { ChangeDetectionStrategy, Component, Input, Optional } from '@angular/core';
  2. import { map, shareReplay } from 'rxjs/operators';
  3. import { ApparatusEntry } from '../../models/evt-models';
  4. import { register } from '../../services/component-register.service';
  5. import { EVTModelService } from '../../services/evt-model.service';
  6. import { ApparatusEntryDetailComponent } from './apparatus-entry-detail/apparatus-entry-detail.component';
  7. @Component({
  8. selector: 'evt-apparatus-entry',
  9. templateUrl: './apparatus-entry.component.html',
  10. styleUrls: ['./apparatus-entry.component.scss'],
  11. changeDetection: ChangeDetectionStrategy.OnPush,
  12. })
  13. @register(ApparatusEntry)
  14. export class ApparatusEntryComponent {
  15. @Input() data: ApparatusEntry;
  16. public opened = false;
  17. public isInsideAppDetail: boolean;
  18. public nestedApps: ApparatusEntry[] = [];
  19. variance$ = this.evtModelService.appVariance$.pipe(
  20. map((variances) => variances[this.data.id]),
  21. shareReplay(1),
  22. );
  23. constructor(
  24. private evtModelService: EVTModelService,
  25. @Optional() private parentDetailComponent?: ApparatusEntryDetailComponent,
  26. ) {
  27. this.isInsideAppDetail = this.parentDetailComponent ? true : false;
  28. }
  29. toggleAppEntryBox(e: MouseEvent) {
  30. e.stopPropagation();
  31. this.opened = !this.opened;
  32. }
  33. closeAppEntryBox() {
  34. this.opened = false;
  35. }
  36. stopPropagation(e: MouseEvent) {
  37. e.stopPropagation();
  38. }
  39. }