lemmatized-entities-list.component.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';
  2. import { LemmatizedEntitiesList } from '../../models/evt-models';
  3. import { register } from '../../services/component-register.service';
  4. import { EVTBtnClickEvent } from '../../ui-components/button/button.component';
  5. @register(LemmatizedEntitiesList)
  6. @Component({
  7. selector: 'evt-lemmatized-entities-list',
  8. templateUrl: './lemmatized-entities-list.component.html',
  9. styleUrls: ['./lemmatized-entities-list.component.scss'],
  10. })
  11. export class LemmatizedEntitiesListComponent implements OnInit, OnChanges {
  12. @Input() data: LemmatizedEntitiesList;
  13. @Output() searchedEntities: EventEmitter<string> = new EventEmitter();
  14. // tslint:disable-next-line: variable-name
  15. private _selectedKey: string;
  16. set selectedKey(k: string) {
  17. this._selectedKey = k;
  18. }
  19. get selectedKey() { return this._selectedKey; }
  20. public navigationKeys: string[] = [];
  21. public searchOpened = false;
  22. public querySearch = '';
  23. public querySearchSubmitted = '';
  24. public caseSensitiveSearch = false;
  25. ngOnInit() {
  26. this.initKeys();
  27. }
  28. ngOnChanges() {
  29. this.initKeys();
  30. }
  31. toggleSearch() {
  32. this.searchOpened = !this.searchOpened;
  33. this.querySearch = '';
  34. this.querySearchSubmitted = '';
  35. this.searchedEntities.emit(this.querySearch);
  36. }
  37. toggleCaseSensitiveSearch(event: EVTBtnClickEvent) {
  38. this.caseSensitiveSearch = event.active;
  39. }
  40. private initKeys() {
  41. if (!!this.data && !!this.data.content && this.data.content.length > 0) {
  42. this.navigationKeys = this.data.content
  43. .filter(el => el.lemmatizedEntityType === this.data.lemmatizedEntityType)
  44. .map(el => el.sortKey?.substr(0, 1).toLowerCase())
  45. .filter((item, i, ar) => item && ar.indexOf(item) === i)
  46. .sort();
  47. this.selectedKey = this.navigationKeys[0] || '';
  48. }
  49. }
  50. }