Ontica/Empiria.Land.Intranet

View on GitHub
src/app/views/land-controls/file-viewer/file-viewer-navigator.component.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * @license
 * Copyright (c) La Vía Óntica SC, Ontica LLC and contributors. All rights reserved.
 *
 * See LICENSE.txt in the project root for complete license information.
 */

import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';

@Component({
  selector: 'emp-land-file-viewer-navigator',
  templateUrl: './file-viewer-navigator.component.html',
  styleUrls: ['./file-viewer.component.scss']
})
export class FileViewerNavigatorComponent implements OnInit {

  @Input() selectedIndex;

  @Input() showZoom;

  @Input() showFileTool;

  @Input() pagesTotal;

  @Input() zoom: number;

  @Output() selectedIndexChange = new EventEmitter<any>();

  @Output() zoomChange = new EventEmitter<number>();

  zoomMin = 50;

  zoomMax = 300;

  zoomStep = 10;

  pagesList: any[] = [];

  constructor() { }

  ngOnInit(): void {
    this.pagesList = [];

    if (this.pagesTotal > 0) {
      this.pagesList = [...Array(this.pagesTotal).keys()].map(i => Object.create({ value: i + 1 }));
    }
  }

  nextFile() {
    this.selectedIndex++;
    if (this.selectedIndex > this.pagesTotal) {
      this.selectedIndex = 1;
    }
    this.emitIndexChanged();
  }


  previousFile() {
    this.selectedIndex--;
    if (this.selectedIndex < 1) {
      this.selectedIndex = this.pagesTotal;
    }
    this.emitIndexChanged();
  }


  firstFile() {
    this.selectedIndex = 1;
    this.emitIndexChanged();
  }


  lastFile() {
    this.selectedIndex = this.pagesTotal;
    this.emitIndexChanged();
  }


  selectFileByIndex(index) {
    this.emitIndexChanged();
  }

  onZoomChange(event) {
    this.zoomChange.emit(this.zoom);
  }

  emitIndexChanged() {
    this.selectedIndexChange.emit(this.selectedIndex);
  }

}