[SOLUCIONADO] Como abrir un popup modal desde un boton.

Buen Día.

Usando SIU-TOBA 2.6 (heredado, hasta que podamos actualizar)

Estoy intentando abrir un popup modal para aceptar/cancelar una acción de imprimir desde un botón. En uno de los proyectos que heredamos ya tienen hecho esto mismo, pero no estoy pudiendo reproducirlo, adjunto una imagen de la sección del árbol de operación de lo que quiero replicar, cabe destacar que el formulario “modal_imprimir” que muestra en el árbol de operación no se ve en la pantalla “pant_encabezado” junto al otro formulario sino que se despliega en un popup cuando el usuario hace click sobre el botón generado por el evento imprimir. Replique la situación en todo lo que vi pero creo que me esta faltando entender algo del funcionamiento de Toba.

Alguna idea de que me podría estar faltando? o sino, cual seria la forma correcta de lograrlo?

Cualquier información adicional que requieran me avisan.

Desde ya, muchas gracias.

Saludos Cordiales.
Juan.


ArbolTobaImprimir.png

ArbolTobaImprimir.png

Hola Juan,

En dicho popup, visualizarias una vista previa del formulario con sus datos?.. simplemente te aparecerian dos botones?, que es lo que iria ahi?.

En uno de los proyectos que heredamos ya tienen hecho esto mismo, pero no estoy pudiendo reproducirlo, adjunto una imagen de la sección del árbol de operación de lo que quiero replicar, cabe destacar que el formulario "modal_imprimir" que muestra en el árbol de operación no se ve en la pantalla "pant_encabezado" junto al otro formulario sino que se despliega en un popup cuando el usuario hace click sobre el botón generado por el evento imprimir. Replique la situación en todo lo que vi pero creo que me esta faltando entender algo del funcionamiento de Toba.
Tenes a mano a alguno de los desarrolladores de ese proyecto como para preguntarle?... hay algo de toda esa logica que me planteas que me hace ruido. Primero el hecho de abrir la misma operación en un popup (de gusto), segundo que en runtime cambies los formularios que se ven en dicha pantalla y tercero que a partir de lo que decidas ahi, operes sobre la pestaña que te quedo abajo.
Alguna idea de que me podría estar faltando? o sino, cual seria la forma correcta de lograrlo? Cualquier información adicional que requieran me avisan.
No termino de entender por que motivo la impresión requiere de una confirmación en el sistema?.. tiene algún efecto secundario? Por otra parte, el hecho de hacerlo en un popup prácticamente hace inviable que se comporte de manera modal... tranquilamente podes evadirte de dicha "pestaña" con una combinación de teclas y dejarla dando vueltas ahi en segundo plano.

Saludos

Buenas Tardes Richard.

Muchas gracias por tu tiempo, respondo tus inquietudes:

En dicho popup, visualizarias una vista previa del formulario con sus datos?.. simplemente te aparecerian dos botones?, que es lo que iria ahi?.

Para este caso en particular el popup contiene solamente un combo para seleccionar el tipo de exportación entre (PDF, Excel, etc.), pero en general esto se esta usando para pasar parámetros al reporte que se va a imprimir/exportar, por ejemplo podría solicitar del set de datos solo los que estén entre una fecha desde y una fecha hasta, estas fechas serian dos campos en el formulario que se abre como popup.

Tenes a mano a alguno de los desarrolladores de ese proyecto como para preguntarle?..:.

No

Hay algo de toda esa lógica que me planteas que me hace ruido. Primero el hecho de abrir la misma operación en un popup (de gusto), segundo que en runtime cambies los formularios que se ven en dicha pantalla y tercero que a partir de lo que decidas ahí, operes sobre la pestaña que te quedo abajo.

Si, es un comportamiento que tampoco me cierra, estoy suponiendo que es una parte del framework que no conozco.
En definitiva, no se abre la misma operación en el popup, solo el formulario modal_imprimir, este formulario no aparece en la pantalla en la que debería estar según el árbol de operaciones (adjunto imagen), si yo trato de replicar el árbol de operaciones dicho formulario si aparece en la pantalla.

No termino de entender por que motivo la impresión requiere de una confirmación en el sistema?.. tiene algún efecto secundario?

Principalmente se esta usando para pasar parámetros al reporte que genera la impresión/exportación, ademas de los campos visibles en el formulario (aunque esto ya no es importante para el caso creo) hay un campo oculto en donde se establece que reporte se va a usar y un segundo campo oculto en donde se encapsulan los parámetros ingresados en una estructura json para pasárselos al reporte.

Por otra parte, el hecho de hacerlo en un popup prácticamente hace inviable que se comporte de manera modal… tranquilamente podes evadirte de dicha “pestaña” con una combinación de teclas y dejarla dando vueltas ahi en segundo plano.

Estoy usando mal el termino “popup”, mala mía perdón, no soy oriundo de la programación web y no me di cuenta cuando lo escribí. Es mas bien una alerta? o algo por el estilo (se ve en la imagen adjunta), es en definitiva, un cartel modal que tiene un formulario adentro no una ventana nueva del browser.

Desde ya muchísimas gracias.

Saludos Cordiales.
Juan.


ImprimirSeleccion.png

ImprimirSeleccion.png

Hola Juan,

entiendo, basicamente es pasarle parametros a la exportacion a ultimo momento.

Si, es un comportamiento que tampoco me cierra, estoy suponiendo que es una parte del framework que no conozco. En definitiva, no se abre la misma operación en el popup, solo el formulario modal_imprimir, este formulario no aparece en la pantalla en la que debería estar según el árbol de operaciones (adjunto imagen), si yo trato de replicar el árbol de operaciones dicho formulario si aparece en la pantalla.

Justamente me parece extraño porque no es algo que suela usarse de dicha forma en el framework, ni parte comun de como opera.
Lo mas probable es que por defecto salga oculto desde el servidor y al presionar el boton de imprimir se muestre el mismo via JS, igual con eso solo lograrias mostrarlo… ahora que se haga en forma “modal”, requiere del uso de algun div para simular el popup, lo mas probable es que este extendida la pantalla para sacar codigo html/js especifico.

Si tenes acceso a operaciones similares, fijate en el arbol a la izquierda que componentes estan extendidos y chusmea un poco adentro para ver que envian al cliente.
La parte de ocultar/mostrar el formulario no es muy compleja… cambiandole el estilo al tag html podes lograrlo.

Principalmente se esta usando para pasar parámetros al reporte que genera la impresión/exportación, ademas de los campos visibles en el formulario (aunque esto ya no es importante para el caso creo) hay un campo oculto en donde se establece que reporte se va a usar y un segundo campo oculto en donde se encapsulan los parámetros ingresados en una estructura json para pasárselos al reporte.

Osea que esa info va a otra operacion finalmente que es la que realiza la exportacion, supongo que esos parametros se estan agregando en JS entonces.

Estoy usando mal el termino "popup", mala mía perdón, no soy oriundo de la programación web y no me di cuenta cuando lo escribí. Es mas bien una alerta? o algo por el estilo (se ve en la imagen adjunta), es en definitiva, un cartel modal que tiene un formulario adentro no una ventana nueva del browser.
No esta mal el termino porque en definitiva es lo que trata de simular, aunque hasta que subiste la imagen pense que se abria en otra ventana directamente... siendo que se abre todo dentro de la "misma ventana"... lo que es seguro es que hay mucho laburo en JS ahi ya que hay que modificar el comportamiento de varios botones.

Yo lo que haria es algo asi:

  • Extenderia en JS el evento del boton imprimir para que su accionar sea mostrar el div/iframe que contiene el otro form y punto.
  • Extenderia el formulario “modal” para que su boton de aceptacion tome los parametros en cuestion del formulario y los agregue a un vinculo a la operacion de reportes el cual invoca explicitamente.
  • Extenderia el HTML de la pantalla para dejar el contenido del form modal dentro de algun div oculto de manera de poder presentarlo via el primer boton.

Igual como te decia antes, ya que no tenes acceso a la persona que lo hizo… lo mas sencillo seria fijarse en las extensiones de esos componentes (en otras operaciones que hacen esto) y ver que envian, lo bueno es que tenes a mano los fuentes de todo… asi que podes rastrear funciones inclusive si es que no fuera HTML plano.

Saludos

Buenas Tardes.

Si, exactamente como usted decía, tienen la pantalla extendida y un div con un estilo css que lo deja oculto de entrada y después lo muestra como modal al presionar el botón imprimir, cargan los parámetros y llaman al generador de reportes (jasper) vía js al hacer click sobre el botón aceptar del modal, ahí encontré esas ultimas piezas del puzle que me faltaban y pude replicar el comportamiento, que me tenia preocupado porque es a lo que los usuarios están habituados y no quería cambiarlo.

Muchísimas gracias por su tiempo.

Saludos Cordiales.
Juan.