From b023575075183e501158f6b2c825f048a5722014 Mon Sep 17 00:00:00 2001 From: Marcelo Puebla Date: Fri, 31 Jan 2020 11:04:24 -0300 Subject: [PATCH] Fix Manejo de modales. --- .../seleccion-articulos.component.ts | 5 ++++- src/app/shared/promocion/promocion.component.ts | 21 +++++++++++++++++---- src/app/shared/sinonimo/sinonimo.component.ts | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts b/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts index cb1a718..f6f0e08 100644 --- a/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts +++ b/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts @@ -142,16 +142,19 @@ export class SeleccionArticulosComponent implements OnInit, AfterViewInit, OnDes } openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) { + if (this.modalRef) return; this.modalRef = this.modalService.show(SinonimoComponent, { initialState: { sinonimos: sinonimosData, articulo }, - class: 'modal-dialog-centered' + class: 'modal-dialog-centered', + ignoreBackdropClick: true, }); this.modalRef.content.onClose .subscribe((res: any) => { + this.modalRef = null; for (const a of articulo.productos) { for (const aRes of res.articulos) { if (a.idSinonimo === aRes.ID_SIN) { diff --git a/src/app/shared/promocion/promocion.component.ts b/src/app/shared/promocion/promocion.component.ts index fec95c4..1c64a8c 100644 --- a/src/app/shared/promocion/promocion.component.ts +++ b/src/app/shared/promocion/promocion.component.ts @@ -22,9 +22,11 @@ export class PromocionComponent implements OnInit { onClose: Subject; urlImagenes = `${APP_SETTINGS.apiImagenes}/imagenes/`; loading = true; + modalSinonimo: BsModalRef; + isPromoSelected = false; constructor( - public modalPromocion: BsModalRef, + private modalPromocion: BsModalRef, private modalService: BsModalService, private articuloService: ArticuloService, private promocionService: PromocionService, @@ -39,6 +41,8 @@ export class PromocionComponent implements OnInit { } selectPromo(promo: IArticulo) { + if (this.isPromoSelected) return; + this.isPromoSelected = true; this.sinonimoService.getSinonimos(promo.CodSec, promo.CodArt) .subscribe((res: ISinonimo[]) => { if (res.length) { @@ -60,16 +64,24 @@ export class PromocionComponent implements OnInit { } openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) { - const modalSinonimo = this.modalService.show(SinonimoComponent, { + if (this.modalSinonimo) return; + this.modalSinonimo = this.modalService.show(SinonimoComponent, { initialState: { sinonimos: sinonimosData, articulo }, - class: 'modal-dialog-centered' + class: 'modal-dialog-centered', + ignoreBackdropClick: true, }); - modalSinonimo.content.onClose + this.modalSinonimo.content.onClose .subscribe((res: any) => { + this.modalSinonimo = null; + if (!res) { + this.onClose.next(); + this.modalPromocion.hide(); + return; + } for (const a of articulo.productos) { for (const aRes of res.articulos) { if (a.idSinonimo === aRes.ID_SIN) { @@ -85,6 +97,7 @@ export class PromocionComponent implements OnInit { } } this.articuloService.setArticulo(articulo); + this.onClose.next(); this.modalPromocion.hide(); }); } diff --git a/src/app/shared/sinonimo/sinonimo.component.ts b/src/app/shared/sinonimo/sinonimo.component.ts index 189ebe4..bf573cd 100644 --- a/src/app/shared/sinonimo/sinonimo.component.ts +++ b/src/app/shared/sinonimo/sinonimo.component.ts @@ -17,6 +17,7 @@ export class SinonimoComponent implements OnInit { onClose: Subject; articulosSelected: IArticulo[] = []; articulo: IArticulo; + isSinonimoSelected = false; constructor( private modalRef: BsModalRef, @@ -50,6 +51,8 @@ export class SinonimoComponent implements OnInit { continue() { if (!this.isValid) return; + if (this.isSinonimoSelected) return; + this.isSinonimoSelected = true; const ID_SINS = []; const observables = []; @@ -82,6 +85,7 @@ export class SinonimoComponent implements OnInit { close() { this.modalRef.hide(); + this.onClose.next(); } } -- 1.9.1