lem-entry.component.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { ChangeDetectionStrategy, Component, Input, Optional } from '@angular/core';
  2. import { map, shareReplay } from 'rxjs/operators';
  3. import { LemEntry } from 'src/app/models/evt-models';
  4. import { register } from 'src/app/services/component-register.service';
  5. import { EVTModelService } from 'src/app/services/evt-model.service';
  6. import { LemEntryDetailComponent } from './lem-entry-detail/lem-entry-detail.component';
  7. @Component({
  8. selector: 'evt-lem-entry',
  9. templateUrl: './lem-entry.component.html',
  10. styleUrls: ['./lem-entry.component.scss'],
  11. changeDetection: ChangeDetectionStrategy.OnPush,
  12. })
  13. @register(LemEntry)
  14. export class LemEntryComponent {
  15. @Input() data: LemEntry;
  16. public opened = false;
  17. public isInsideLemDetail: boolean;
  18. public nestedLems : LemEntry[] = [];
  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?: LemEntryDetailComponent,
  26. ) {
  27. this.isInsideLemDetail = this.parentDetailComponent ? true : false;
  28. }
  29. toggleLemEntryBox(e: MouseEvent) {
  30. e.stopPropagation();
  31. this.opened = !this.opened;
  32. }
  33. closeLemEntryBox() {
  34. this.opened = false;
  35. }
  36. stopPropagation(e: MouseEvent) {
  37. e.stopPropagation();
  38. }
  39. }