Autor Tema: [SOLUCIONADO] Cuadro con cortes y seleccion multiple por corte  (Leído 69 veces)

0 Usuarios y 1 Visitante están viendo este tema.

obelgran

  • Full Member
  • ***
  • Mensajes: 107
    • Ver Perfil
  • Institución: Universidad Nacional de Rosario
  • Nombre y apellido: Oscar Rafael Belgrano
  • Sistema: toba
  • Teléfono laboral: (0341) 4201245
hola comunidad !!

Estoy tratando de hacer que la selección múltiple pero que tenga en cuenta el corte de control.

Estoy usando toba 3.0.25 sobre  Apache/2.4.29 (Win64) OpenSSL/1.0.2m PHP/7.2.5

Como base tomé el desarrollo de Sergio Vier (ver  http://foro.comunidad.siu.edu.ar/index.php?topic=5196.msg21008#msg21008 ) y no encontré nada más en el foro como para guiarme.

Basicamente no se como detectar el corte o que filas están comprendidas en cada corte ...

Gracias y saludos cordiales!!!
« Última Modificación: mayo 14, 2019, 10:16:05 am por obelgran »

richard

  • Moderador Global
  • *****
  • Mensajes: 2570
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Cuadro con cortes y seleccion multiple por corte
« Respuesta #1 : abril 29, 2019, 03:59:43 pm »
Hola Oscar,
Estoy tratando de hacer que la selección múltiple pero que tenga en cuenta el corte de control.
Un "todos/ninguno" por cabecera de corte?.. o entendi mal?

Citar
Basicamente no se como detectar el corte o que filas están comprendidas en cada corte ...
Hay dos opciones que se me vienen a la cabeza:

- Una opcion es hacer que cada corte tenga un evento multiple distinto, vas a tener que extender el cuadro para esto... pero casi no tocas la parte de JS y podes llamar al metodo seleccionar_todos y deseleccionar_todos pasandole el evento nomas.

- Otra opcion es sacar el rango de filas desde el servidor, es el unico lugar donde sabes todas las filas que tiene ese corte... entonces en el link que dispara la interaccion podes incorporar los extremos del rango y luego ciclar llamando a la API del cuadro.

Otra cosa involucraria que empieces a navegar por el DOM, lo que te traeria despiole si cambias el marcado.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

obelgran

  • Full Member
  • ***
  • Mensajes: 107
    • Ver Perfil
  • Institución: Universidad Nacional de Rosario
  • Nombre y apellido: Oscar Rafael Belgrano
  • Sistema: toba
  • Teléfono laboral: (0341) 4201245
Re:Cuadro con cortes y seleccion multiple por corte
« Respuesta #2 : mayo 09, 2019, 10:59:07 am »
Citar
Un "todos/ninguno" por cabecera de corte?.. o entendi mal?
Exantamente eso!!!

Estoy tratando de generar un id de evento para cada corte de control y me falta identificar el corte en el que esta incluida la fila a la que le voy a generar el evento.
Quizás no sea la mejor forma de encarlo, la idea es ponerle el como sufijo  del metodo el id del cc
Pensaba hacerlo acá:
Código: [Seleccionar]
<?php
class weme_ei_cuadro_salida_html extends toba_ei_cuadro_salida_html
{

protectec $_corte_control;



function html_cuadro_cabecera_columna_evento($rowspan$pre_columnas)
{

//-- Eventos sobre fila
if($this->_cuadro->cant_eventos_sobre_fila() > 0) {
foreach ($this->_cuadro->get_eventos_sobre_fila() as $evento) {

$etiqueta $evento->get_etiqueta() .'-'.$this>_corte_control ;   /// aca iría el identificador de cc
 
//$imagen = $evento->get_imagen();
 
.... 

No se si estoy bien orientado, escucho sugerencias
Gracias


richard

  • Moderador Global
  • *****
  • Mensajes: 2570
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Cuadro con cortes y seleccion multiple por corte
« Respuesta #3 : mayo 09, 2019, 02:48:20 pm »
Hola Oscar,
Estoy tratando de generar un id de evento para cada corte de control y me falta identificar el corte en el que esta incluida la fila a la que le voy a generar el evento.

bien, acordate que tenes que tener un evento en botonera para poder comunicar los resultados al servidor.

Citar
Quizás no sea la mejor forma de encarlo, la idea es ponerle el como sufijo  del metodo el id del cc
Pensaba hacerlo acá:
Código: [Seleccionar]
<?php
class weme_ei_cuadro_salida_html extends toba_ei_cuadro_salida_html
{

protectec $_corte_control;



function html_cuadro_cabecera_columna_evento($rowspan$pre_columnas)
{

//-- Eventos sobre fila
if($this->_cuadro->cant_eventos_sobre_fila() > 0) {
foreach ($this->_cuadro->get_eventos_sobre_fila() as $evento) {

$etiqueta $evento->get_etiqueta() .'-'.$this>_corte_control ;   /// aca iría el identificador de cc
 
//$imagen = $evento->get_imagen();
 
.... 
Segun veo, esto va a ciclar por los eventos que tengas definidos en el editor... pero fijate que con 2 cortes de control podes tener estas dos situaciones, segun las columnas que elijas y los valores que vengan en los datos.

Código: [Seleccionar]
* Corte id 0
   * Corte id 1
* Corte id 0
  * Corte id 1

Código: [Seleccionar]
* Corte id 0
   * Corte id 1
   * Corte id 1
   * Corte id 1
* Corte id 0
  * Corte id 1

Pensa en los cortes de control como agrupadores, vos tendrias que ser capaz de sacar un boton que tome todos los hijos del nodo actual (sea cual sea) y le cambie el status , parte la podes hacer por DOM.. parte es simplemente llamar a la API una vez tenes el id de la fila en cuestion.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

obelgran

  • Full Member
  • ***
  • Mensajes: 107
    • Ver Perfil
  • Institución: Universidad Nacional de Rosario
  • Nombre y apellido: Oscar Rafael Belgrano
  • Sistema: toba
  • Teléfono laboral: (0341) 4201245
[SOLUCIONADO] Re:Cuadro con cortes y seleccion multiple por corte
« Respuesta #4 : mayo 14, 2019, 10:15:36 am »
Bueno después de marearme en las clases de toba,  busqué una alternativa por el lado de javascrip y funcionó bien!!!

En el cuadro, en la etiqueta paso el nombre del evento y el objecto check a la funcion:
Código: [Seleccionar]
<div align='center'>Selecciona<input type='checkbox' onclick='seleccion_total("cabezas",this)' /></div>
Extendí el cuadro de la siguiente forma :
Código: [Seleccionar]
function extender_objeto_js()
{
echo "
function seleccion_total(evento, checked)
{
//alert($this->_info_cuadro_cortes.length ) ;
//alert(checked);

// si tiene cortes de control lo manejo con jquery
if ($this->_info_cuadro_cortes.length > 0) {
var id_padre = $(checked).parents('table')[1]['id'];

//alert(id_padre);

            var valor = $(checked).prop('checked') ;
            var selector = '#' + id_padre + ' input[id$='+evento+']';
           
            //alert(selector);
           
            $(selector).each(function( index ){
                $(this).prop('checked', valor);
            });

}else{

// si no lo maneja toba como siempre
if (!checked) {
{$this->objeto_js}.deseleccionar_todos(evento);
} else {
{$this->objeto_js}.seleccionar_todos(evento);
}
}
};";
}

richard

  • Moderador Global
  • *****
  • Mensajes: 2570
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:[SOLUCIONADO] Re:Cuadro con cortes y seleccion multiple por corte
« Respuesta #5 : mayo 16, 2019, 10:48:34 am »
Hola Oscar,
Extendí el cuadro de la siguiente forma :
Código: [Seleccionar]
function extender_objeto_js()
{
echo "
function seleccion_total(evento, checked)
{
//alert($this->_info_cuadro_cortes.length ) ;

if ($this->_info_cuadro_cortes.length > 0) {                                                //Atenti!!! esto no es JS, es codigo PHP..esa variable no existe en JS ($this->) tampoco
var id_padre = $(checked).parents('table')[1]['id'];

            var valor = $(checked).prop('checked') ;
            var selector = '#' + id_padre + ' input[id$='+evento+']';
           
           
            $(selector).each(function( index ){
                $(this).prop('checked', valor);
            });

}else{                                                                                         //Es necesario esta parte?

// si no lo maneja toba como siempre
if (!checked) {
{$this->objeto_js}.deseleccionar_todos(evento);
} else {
{$this->objeto_js}.seleccionar_todos(evento);
}
}
};";
}
Fijate que te  comente una linea puntual del codigo,  ese condicional te va a traer problemas asi como esta.
Por lo pronto pareciera que esa expresion... siempre ingresa al condicional, quizas es mas sencillo sacar ese JS unicamente cuando existen CC, ya que la cabecera no deberia salir si no estan los mismos.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

obelgran

  • Full Member
  • ***
  • Mensajes: 107
    • Ver Perfil
  • Institución: Universidad Nacional de Rosario
  • Nombre y apellido: Oscar Rafael Belgrano
  • Sistema: toba
  • Teléfono laboral: (0341) 4201245
Re:[SOLUCIONADO] Cuadro con cortes y seleccion multiple por corte
« Respuesta #6 : mayo 16, 2019, 03:36:20 pm »

Citar
Fijate que te  comente una linea puntual del codigo,  ese condicional te va a traer problemas asi como esta.
Por lo pronto pareciera que esa expresion... siempre ingresa al condicional, quizas es mas sencillo sacar ese JS unicamente cuando existen CC, ya que la cabecera no deberia salir si no estan los mismos.

Richard: seguí tus comentarios y modifiqué el código, lo probé con cortes y sin cortes y parece que va bien!!
Quedó asi:
Código: [Seleccionar]
function extender_objeto_js()
{
echo '
function seleccion_total(evento, check)
{
var id_padre = $(check).parents("table")[1]["id"];
var valor = $(check).prop("checked") ;
var selector = "#" + id_padre + " input[id$="+evento+"]";

$(selector).each(function( index ){
$(this).prop("checked", valor);
});
};';
}

Gracias !!!