lemmatized-entity.component.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { Component, Input, OnInit, ViewChild } from '@angular/core';
  2. import { NgbNav } from '@ng-bootstrap/ng-bootstrap';
  3. import { map, shareReplay } from 'rxjs/operators';
  4. import { LemmatizedEntity } from '../../models/evt-models';
  5. import { register } from '../../services/component-register.service';
  6. import { EVTModelService } from '../../services/evt-model.service';
  7. @register(LemmatizedEntity)
  8. @Component({
  9. selector: 'evt-lemmatized-entity',
  10. templateUrl: './lemmatized-entity.component.html',
  11. styleUrls: ['./lemmatized-entity.component.scss'],
  12. })
  13. export class LemmatizedEntityComponent implements OnInit {
  14. @Input() data: LemmatizedEntity;
  15. @Input() inList: boolean;
  16. occurrences$ = this.evtModelService.entitiesOccurrences$.pipe(
  17. map(occ => occ[this.data.id] || []),
  18. shareReplay(1),
  19. );
  20. relations$ = this.evtModelService.relations$.pipe(
  21. map(el => el.filter(rel => rel.activeParts.indexOf(this.data.id) >= 0 ||
  22. rel.passiveParts.indexOf(this.data.id) >= 0 || rel.mutualParts.indexOf(this.data.id) >= 0)));
  23. @ViewChild('entityDetails') entityDetails: NgbNav;
  24. public contentOpened = true;
  25. get selectedSection() {
  26. if (this.contentOpened) {
  27. return `${this.data && this.data.content.length === 0 ? 'occurrences' : 'info'}_${this.data.id}`;
  28. }
  29. return '';
  30. }
  31. constructor(
  32. private evtModelService: EVTModelService,
  33. ) {
  34. }
  35. ngOnInit() {
  36. if (this.inList) {
  37. this.contentOpened = false;
  38. }
  39. }
  40. toggleContent() {
  41. if (this.inList) {
  42. this.contentOpened = !this.contentOpened;
  43. }
  44. }
  45. tabSelected(event: MouseEvent) {
  46. event.stopPropagation();
  47. }
  48. }