popover-sinonimos.component.ts 1.73 KB
import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
import { PopoverDirective } from 'ngx-bootstrap';
import { Producto } from 'src/app/wrappers/producto';
import { Sinonimo } from 'src/app/wrappers/sinonimo';

@Component({
  selector: 'app-popover-sinonimos',
  templateUrl: './popover-sinonimos.component.html',
  styleUrls: ['./popover-sinonimos.component.scss']
})
export class PopoverSinonimosComponent implements OnInit {

  //Directiva del popover, para poder cerrarlo desde este componente
  @Input() popover: PopoverDirective;
  @Input() popoverContent: Sinonimo[];
  @Output() sinonimoSeleccionado = new EventEmitter<Sinonimo>();
  sinonimo: Sinonimo;

  private cantidadRestanteSinonimos: number[] = [];

  constructor() { }

  ngOnInit() {

    //Seteo en la variable a emitir el sinonimo que sea padre
    this.popoverContent.forEach(sinonimo => {

      this.cantidadRestanteSinonimos.push(0);
      this.sinonimo = sinonimo.productoPadre ? sinonimo : undefined;
      sinonimo.productos.forEach(producto => {

        producto.cantidad = (producto.id === sinonimo.productoPadre) ? sinonimo.cantidad : 0;
      })
    })
  }

  hidePopover() {

    this.sinonimoSeleccionado.emit(this.sinonimo);
    this.popover.hide();
  }

  setSinonimo(sinonimo: Sinonimo) {

    this.sinonimo = sinonimo;
  }

  sumarCantidad(producto: Producto, i: number) {

    if (this.cantidadRestanteSinonimos[i] === 0) return;
    producto.cantidad++;
    this.cantidadRestanteSinonimos[i]--;
  }

  restarCantidad(producto: Producto, i: number) {

    if (this.cantidadRestanteSinonimos[i] === this.popoverContent[i].cantidad) return;
    if (producto.cantidad === 0) return;
    producto.cantidad--;
    this.cantidadRestanteSinonimos[i]++;
  }

}