image-panel.component.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { Component, Input } from '@angular/core';
  2. import { BehaviorSubject, combineLatest } from 'rxjs';
  3. import { filter, map, take } from 'rxjs/operators';
  4. import { EVTStatusService } from 'src/app/services/evt-status.service';
  5. import { Page, ViewerDataType } from '../../models/evt-models';
  6. import { EVTModelService } from '../../services/evt-model.service';
  7. @Component({
  8. selector: 'evt-image-panel',
  9. templateUrl: './image-panel.component.html',
  10. styleUrls: ['./image-panel.component.scss'],
  11. })
  12. export class ImagePanelComponent{
  13. @Input() viewerData: ViewerDataType;
  14. // tslint:disable-next-line: variable-name
  15. private _pageNumber: number;
  16. @Input() set pageID(v: string) {
  17. this.evtModelService.pages$.pipe(
  18. take(1)).subscribe((pages) => this._pageNumber = pages.findIndex(page => page.id === v));
  19. }
  20. get pageNumber(): number { return this._pageNumber + 1; }
  21. public currentPage$ = new BehaviorSubject<Page>(undefined);
  22. public currentPageId$ = this.currentPage$.pipe(
  23. map(p => p?.id),
  24. );
  25. currentMsDescId$ = new BehaviorSubject(undefined);
  26. currentMsDesc$ = combineLatest([this.evtModelService.msDesc$, this.currentMsDescId$]).pipe(
  27. filter(([msDesc, currentId]) => !!msDesc && !!currentId),
  28. map(([msDesc, currentId]) => msDesc.find(m => m.id === currentId)),
  29. );
  30. msDescOpen = false;
  31. constructor(
  32. private evtModelService: EVTModelService,
  33. private evtStatus: EVTStatusService,
  34. ) {
  35. }
  36. updatePage(viewerPage: number){
  37. this.evtModelService.pages$.pipe(take(1)).subscribe(
  38. (pages) => this.evtStatus.updatePage$.next(pages[viewerPage - 1]),
  39. );
  40. }
  41. setMsDescOpen(isOpen: boolean) {
  42. this.msDescOpen = isOpen;
  43. }
  44. setMsDescID(msDescId: string) {
  45. this.currentMsDescId$.next(msDescId);
  46. }
  47. }