Un “todos/ninguno” por cabecera de corte?.. o entendi mal?
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.
Un "todos/ninguno" por cabecera de corte?.. o entendi mal?
[b]Exantamente eso!!![/b]
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á:
<?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
bien, acordate que tenes que tener un evento en botonera para poder comunicar los resultados al servidor.
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á:
<?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.
* Corte id 0
* Corte id 1
* Corte id 0
* Corte id 1
* 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.
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);
}
}
};";
}
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.
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:
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);
});
};';
}