Propiedad Grupos a los eventos del Cuadro

Buenas tardes

Aplicando la propiedad Grupos a los eventos de un cuadro NO logro su efecto, como efectivamente se logra en columnas con datos.

La idea es que en lugar de lugar de datos, creamos eventos, donde cada uno responde con un popup para guardar la info en la BD.

En la gráfica adjunto queda más detallado lo que buscamos es hacer el manejo de Horarios de las diferentes dependencias y salas de la Universidad.

O si alguién ya tiene una muestra de horarios y reservas, agradecería su ayuda

Saludos y Gracias


cuadro horarios.png

cuadro horarios.png

Hola Jhon,
los eventos en el cuadro, normalmente se colocan como parte de los datos o en su propia botonera en cada fila. Esto es, tenes un evento por fila o por fila y columna.

Segun veo de la imagen, lo que necesitas son eventos a nivel de columna que valgan para todas las filas, es justamente lo contrapuesto.

Calculo que se puede llegar a realizar… pero hay que modificar extensivamente la salida_html del cuadro y con “modificar” me refiero a que hay que redefinir el comportamiento de la mayoria de los metodos y generar ciertos “atajos”. A priori se me ocurren:

  • Metodo que dibuja las cabeceras (que ahora va a tener que sacar eventos de fila)
  • Metodo que dibuja la fila del cuadro (para que no saque dichos eventos)
  • Metodo que dibuja la botonera del cuadro (para que no saque dichos eventos tampoco)

De acuerdo a como estan configurados los eventos, vas a tener que solicitarlos a diversos metodos. De hecho, te diria que abras la clase y mires todo lo que usa el metodo “html_cuadro”… ya que vas a tener que modificar gran parte de ellos.

Luego de la modificacion visual, tambien vas a tener que modificar el comportamiento del lanzado de eventos, ya que de otra manera… te lanzara un evento por fila. Quizas esta parte la podes adaptar desde el CI, que es quien en definitiva va a estar procesando esos eventos, sino tendrias que subclasear tambien toba_ei_cuadro.

Es un trabajo arduo, hay que cambiar la mayoria de las cosas pero el resultado final puede ser justo lo que estas buscando.

Saludos

Richard, gracias por responder

La verdad quedo más perdido que bisco en un guadual,

y que tal si en cada columna se muestra una imágen como link asociado a un evento, y se ocultan los eventos, para recuperar la columna respectiva y recuperar los datos.

Saludos

Hola Jhon,

Podrias hacer algo asi, de hecho si vale para todas las filas no tendrias tanto inconveniente. En ese caso deberias registrar el envio del evento manualmente, de otra manera Toba lo va a ignorar en el proximo pedido de pagina.

Saludos

Richard, gracias por responder y por la ayuda

Por ahora lo trabajaré de esa forma, logré crear la interfaz com en la gráfica y procederé al intercambiar con la base de datos,

function set_horario_fila ($fila, $fecha) {
$icono_inicial = toba_recurso::imagen_proyecto(“inicial.gif”, true);
list($fecha_actual, $hora_actual) = split(" “,$fecha);
$array_fila[‘fila’] = $fila;
$array_fila[‘fecha’] = $fecha_actual;
$array_fila[‘hora’] = $hora_actual;
$array_fila[‘l1’] = $icono_inicial;
$array_fila[‘l2’] = $icono_inicial;
$array_fila[‘l3’] = $icono_inicial;
$array_fila[‘l4’] = $icono_inicial;
$array_fila[‘l5’] = $icono_inicial; //”";
return $array_fila;
}

Gracias

Richard, buenos días

Cómo puedo refresacar un cuadro, para que me tome la actualización de la bd proveninete de un Popup ?

El caso del horario que te comentaba en la gráfica, cuando el link de la columna me lleva al popup y actualizó los datos del horario, pero cuando salgo de popup, requiero que se me recargue el cuadro, si que el usuario tenga que volver a dar el evetno filtrar, que es el que lleva a la gráfica del cuadro.

Saludos y gracias si me puedes ayudar ?

Hola Jhon,

creo que la unica opcion que tienes es invocar una callback desde la ventana popup al momento de cerrarla. De esa forma puedes disparar un evento en la ventana principal y asi recargar el cuadro.

Saludos

Richard, gracias por responder

Disculpa la ignorancia en el tema, tienes un ejemplo a la vista, o por toba referencia ya que me es desconocido como hacer el Callback que dices ?

o en su defecto como se hace ?

Mil Gracias

Hola Jhon,

puedes mirar en el JS de los ef_popup, en particular te diria que revises la clase toba_js.php.

Saludos

Richard, una ayudita
Puedo disparar un evento de un CI-1, desde otro CI-2 que contiene otro evento de formulario que se llena con los datos, para poder recargar el cuadro por medio del filtro ?

Algo así como evt__filtro__filtrar($datos)

En la gráfica adjunta, se nota el proceso, el cuadro responde al filtro, en el cuadro se selecciona un evento para abrir el un formulario de otro CI, donde se capturan los datos que se deben dibujar en el cuadro.

Pero NO hemos podido con refrescar el cuadro sin necesidad de dar nuevamente filtrar.

Gracias


pasos horario.png

pasos horario.png

Hola Jhon,

corregime si me equivoco… pero como lo veo, no es solamente un CI lo que se abre en la nueva pantalla, sino una operacion distinta.

Una opcion que se me ocurre es que al intentar cerrar esa ventana, se dispare un ajax (en la ventana padre) donde obtengas los nuevos datos y los reemplaces a mano en la fila del cuadro en cuestion. En tu caso pareciera reducirse a cambiar unos iconos.

De otra forma, lo mas logico es que la pagina que contiene el cuadro se recargue como si hubieran presionado el boton de filtrado, eso lo puedes hacer via JS con la misma llamada que realiza el boton en el evento onclick.

Es decir, desde la ventana hija lanzas la llamada a un metodo en la ventana padre y dentro de ese metodo disparas el evento.

Saludos

Inge, gracias por responder

Efectivamente es como dices y la tienes claro que es cambiar el ícono del cuadro y por código hago el resto.
Como puedes ver en el arbol de la gráfica adjunta son dos CI Separados, con sus propias operaciones; el segundo hace las veces de ABM para los datos y los mismos quedan en la base de datos, por lo tanto al recargar el cuadro el mismo se actualiza.

Los otros parráfos, lo tienes claro, pero lamentablemente NO he trabajado dichos conceptos más allá de los ejemplos que me brinda Toba.

Te agradecería orientarme como se hace cada uno de los últimos tres párrafos, y en especial como disparo el evento filtrar desde el otro CI.

Gracias y Cordial Saludo


arbol horarios.png

arbol horarios.png

Hola Jhon,

para disparar la llamada desde la ventana hija puedes usar algo similar a lo que usa el popup:


function seleccionar(clave, descripcion) {
					window.opener.function_callback(parametros);
					window.close();
				}

Y luego en dicha funcion, hacer el disparo del filtrado:


function callback_name(parametros)
{
   window.id_objeto_ci.dep('filtro').set_evento(new evento_ei('nombre_filtrar', true, ''), true);
}

Con eso deberias poder refrescar la pantalla y recargar el cuadro.

Saludos

Ingeniero,

Extendiendo el formulario de la ventana hija

        function llamado_callback()  {
           window.11063.dep('filtro').set_evento(new evento_ei('evt__filtro__filtrar', true, ''), true);
        }

        {$this->objeto_js}.evt__regresar = function() {
              window.opener.llamado_callback();
     	  window.close();
        }
  1. el llamado window.opener.llamado_callback(); NO llega al cuerpo para aplicar la línea respectiva
  2. el id_objeto_ci se debe reemplazar por el asignado en el Editor al CI, en este caso window.11063.dep ?
  3. window.opener es reconocido en toba_2_0 ?
    Te agradezco el acompañamiento, en este nuevo caso

Saludos y Gracias

Hola Jhon,

El identificador del objeto CI en cuestion, lo puedes obtener haciendo una llamada a este metodo. Ese seria el identificador que debes usar antes del dep(‘filtro’).

{$this->objeto_js}.evt__regresar = function() { window.opener.llamado_callback(); window.close(); }

Supongo que esta funcion la dispara el boton ‘Regresar’… ese boton pertenece a un evento Toba o es un boton simple?.. al presionarlo intenta ir al servidor o se queda en la pagina sin hacer nada?

Saludos

Richard, buen día

Queda solucionado lo de recargar el cuadro.

Una última cosa, como hago para que la ventana hija, NO se abrá varias veces en el navegador (limitar que solamente se encuentre abierta una sola), esto debido a que si el usuario NO cierra la ventana hija, y vuelve a la ventana padre y selecciona nuevamente la opción, se abre otra ventana y así N ventanas.

Gracias

Cordial saludo.