/* * Codificación UTF-8 * Funciones para trabajar con paneles tabulares * * FUNCIONES: * - gvh.deselectAllCheckTable(claseM) * - gvh.checkUnique(id, fila, json, claseM, panel) * - gvh.checkRow(id, fila, check, panel, type, claseM) * - gvh.onRowEvent(e, idButton, $this) * - gvh.performSelectAction( options:{claseM, panelOn, accion} ) * - gvh.clickedMulticheckerOption( e, $this ) * - gvh.updatePositionMulticheckerOption( e ) * - gvh.clickedCheckAll( e, $this ) * - gvh.pintarFilaTabular( claseM, raizJSON, indiceJSON, indiceUI, operacion, seleccionado, modo ) */ if( !gvh.Table || gvh.versionCompare(gvh.Table.VERSION, gvh.VERSION) < 0 ) { gvh.showConsoleMsg( 'log', 'gvh.Table : Inicializando...' ); gvh.Table = function() { // REVIEW : De momento está vacío, pero debería convertirse en un componente. // NOP : No hacer nada } gvh.Table.VERSION = '5.0.2'; /** * FUNCIÓN: deselectCheckTable() */ gvh.deselectAllCheckTable = function( claseM, panel, innerCall ) { innerCall = innerCall || false; var raizJSON = gvh.getRoot( claseM, 'lis') ; var numReg = gvh.getNumReg( raizJSON ); $('tr[data-gvhrow][data-gvhPanelOn='+panel+'][data-gvhClaseManejadora='+claseM+']').attr( 'data-gvhStateRow', 'nada' ); gvh.setSelectedReg( raizJSON, [0,numReg], 'sub', innerCall ); $('input:checkbox[id^=check_][data-gvhPanelOn='+panel+'][data-gvhClaseManejadora='+claseM+'] , input:radio[id^=vsCheck_][data-gvhPanelOn='+panel+'][data-gvhClaseManejadora='+claseM+']').each( function() { var $this = $(this); $this.prop( 'checked', false ); $this.closest('tr').removeClass( 'rowOn' ); } ); }//gvh.deselectAllCheckTable /** * FUNCIÓN: checkUnique() */ gvh.checkUnique = function(id, rowUI, claseM, panel, indiceJSON, innerCall) { innerCall = innerCall || false; gvh.showConsoleMsg('log',' *** checkUnique() '+id); var gvhWindow = $('#'+id+'[data-gvhClaseManejadora='+claseM+']').attr( 'data-gvhWindow' ); if( gvhWindow != gvh.ambito ) { return; } if( panel == 'lis' || panel == 'lisDetalle' ) { gvh.deselectAllCheckTable( claseM, panel, innerCall ); var raizJSON = gvh.getRoot( claseM, 'lis' ); if( indiceJSON == '' ) { indiceJSON = gvh.indexDataJSON( raizJSON, rowUI ); }; var rowChecked = $('#'+id+'[data-gvhClaseManejadora='+claseM+']') if( rowChecked ) { rowChecked.prop( 'checked', true ); var tr = rowChecked.closest( 'tr' ); if( tr.length ) { tr.addClass( 'rowOn' ); tr.attr( 'data-gvhStateRow', 'selected' ); } } gvh.setSelectedReg( raizJSON, indiceJSON, 'add', innerCall ); } }//$.fn.checkUnique /** * FUNCIÓN: checkRow() */ gvh.checkRow = function( id, fila, check, panel, type, claseM, innerCall) { innerCall = true; //innerCall = innerCall || false; gvh.showConsoleMsg( 'log', ' *** checkRow() ' + id ); var raizJSON = gvh.getRoot( claseM, 'lis' ); var indiceJSON = gvh.indexDataJSON( raizJSON, fila, innerCall ); //var indiceJSON = gvh.indexDataJSON( claseM, panel, fila ); //var gvhWindow = $( '#'+id+'[data-gvhClaseManejadora='+claseM+']' ).attr( 'data-gvhWindow' ); var rowChecked = $( '#'+id+'[data-gvhClaseManejadora='+claseM+']' ); if( type == 'unique' ) { gvh.checkUnique( id, fila, claseM, panel, indiceJSON, innerCall ); } else { gvh.showConsoleMsg( 'log', claseM ); gvh.showConsoleMsg( 'log', gvh.datosJSON ); if( check == 'selected' ) { rowChecked.closest( 'tr' ).addClass( 'rowOn' ); rowChecked.prop( 'checked', true ); } else { rowChecked.closest(' tr' ).removeClass( 'rowOn' ); gvh.setStateReg( raizJSON, 'nada', indiceJSON ); } $('tr[id='+panel+'_'+indiceJSON+'][data-gvhClaseManejadora='+claseM+']').attr( 'data-gvhStateRow', (check == 'selected' ? 'selected' : 'nada') ); gvh.setSelectedReg( raizJSON, indiceJSON, (check == 'selected' ? 'add' : 'sub'), innerCall ); } // TODO : Debería actualizarse el estado del 'checkAll' de la tabla, para mostrar si todos los checkbox están marcados, si ninguno está marcado, o si solo alguno lo está. }//$.fn.checkRow /** * FUNCIÓN: onRowEvent() * Al dispararse el evento en una fila de una tabla, ejecuta la acción asociada al botón deseado para dicha fila. */ $.fn.onRowEvent = function( e, idButton, $this ) { // Comprobamos que no estamos pulsando en la celda del checkbox de selección de fila var target = $( e.target ); if( target.closest('[data-gvhfunction=checkRow]').length > 0 || target.is('[data-gvhfunction=checkRow]') ) { return; } var id = $this.closest( '[data-gvhtable=DataTable]' ).attr( 'id' ); var panel = $this.attr( 'data-gvhpanelon' ); var claseM = $this.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var tr = $( e.target ).closest( 'tr[data-gvhpaneljson=lis]' ); if( tr ) { if( tr.hasClass('rowNoData') ) { return; } var checkbox = tr.find( '[data-gvhfunction=checkRow]'); if( checkbox ) { if( !checkbox.is(':checked') ) { checkbox.click(); } $( '[data-gvhclasemanejadora='+claseM+'] #'+idButton ).click(); } } return false; }//$.fn.onRowEvent /** * FUNCIÓN: performSelectAction() * Des/selecciona las filas de una tabla (y marca/desmarca sus checkbox correspondiente) de acuerdo a la acción pasada como parámetro. */ gvh.performSelectAction = function( params ) { gvh.showConsoleMsg( 'log', 'performSelectAction : ' + params.accion + ' on ' + params.claseM + '[' + params.panelOn + '/' + params.panelJSON + ']'); // Combinamos los parámetros con los valores por defecto. params = $.extend( { claseM: '' , panelOn: '' , panelJSON: '' , accion: '' }, params ); if( !params.panelJSON ) { params.panelJSON = params.panelOn.substring( 0, 3 ); } var raizJSON = gvh.getRoot( params.claseM, params.panelJSON ); var numReg = gvh.getNumReg( raizJSON ); var rowsPag = gvh.getRowsPag( raizJSON ); var pagActive = gvh.getPagActive( raizJSON ); // // Establecemos el bloque de filas a actualizar su estado de seleccionado. // var bloque = []; switch( params.accion ) { case 'selectAll' : case 'unselectAll' : case 'invert' : bloque['ini'] = 0; bloque['fin'] = numReg-1; break; case 'selectPage' : bloque = gvh.blockRegPagina( raizJSON, pagActive ); bloque['fin'] = Math.min( bloque['fin'], numReg-1 ); break; } // // Actualizamos el estado interno de selección de las filas correspondientes. // var checked; var row; for( row=bloque['ini']; row<=bloque['fin']; row++ ) { var checkedInitial = (raizJSON['data'][row]['gvhJS_selected'] == 'selected'); // Realizamos la acción deseada sobre el valor del check. switch( params.accion ) { case 'selectAll' : checked = true; break; case 'unselectAll' : checked = false; break; case 'invert' : checked = ( !checkedInitial ); break; case 'selectPage': var pagActual = Math.floor( row/rowsPag ); if( pagActual == pagActive ) { checked = true; } break; } if( checked != checkedInitial ) { // Des/seleccionamos la fila actual en la matriz de datos JSON. var operacion = ( checked ? 'add' : 'sub' ); gvh.setSelectedReg( raizJSON, row, operacion, true ); } } // // Actualizamos la interfaz, para mostrar el estado de la selección de todas las filas. // var numChecked = 0; for( row=0; row<=numReg; row++ ) { var pagActual = Math.floor( row/rowsPag ); checked = (raizJSON['data'][row]['gvhJS_selected'] == 'selected'); var stateRow = ( checked ? 'selected' : 'nada' ); if( checked ) { numChecked++; } if( pagActual == pagActive ) { var filaEnPagina = row%rowsPag; // Des/Marcamos como seleccionada la fila actual. var tr = $( 'tr[id='+params.panelOn+'_'+filaEnPagina+'][data-gvhClaseManejadora='+params.claseM+']' ); tr.attr( 'data-gvhStateRow', stateRow ) if( checked ) { tr.addClass( 'rowOn' ); } else { tr.removeClass( 'rowOn' ); } // Des/Marcamos el checkbox de la fila actual. tr.find( 'input:checkbox[data-gvhClaseManejadora='+params.claseM+'][data-gvhFunction=checkRow][data-gvhRow='+filaEnPagina+']' ).prop( 'checked', checked ); } } // // Actualizamos el estado de la casilla 'checkAll' de la tabla, de acuerdo a si están seleccionadas todas las filas o no. // var checkedAll = (numChecked == 0 ? false : (numChecked == numReg) ? true : null); if( checkedAll !== null ) { $( 'input:checkbox[data-gvhFunction=checkAll][data-gvhClaseManejadora='+params.claseM+']' ).prop( 'checked', checkedAll ); } }//gvh.performSelectAction /** * click: multi-checker */ gvh.clickedMulticheckerOption = function( e, $this ) { gvh.performSelectAction( { claseM: $this.closest('[data-gvhClaseManejadora]').attr( 'data-gvhClaseManejadora' ) , panelOn: $this.closest('[data-gvhpanelon]').attr( 'data-gvhpanelon' ) , panelJSON: $this.closest('[data-gvhpaneljson]').attr( 'data-gvhpaneljson' ) , accion: $this.attr( 'data-gvhMultiChecker' ) } ); // Devolvemos el foco al botón que abre el desplegable. var target = $this.closest( '[data-target]' ).attr( 'data-target' ); $(target).find( '[data-toggle=dropdown]' ).focus(); }//gvh.clickedMulticheckerOption $(document).off('click.multi-checker').on( 'click.multi-checker', '[data-gvhMultiChecker]', function (e) { var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.multi-checker' , callback: function() { gvh.clickedMulticheckerOption (e, $this); } } ); } ); /** * */ gvh.updatePositionMulticheckerOption = function( e ) { if( gvh.checkAllMultiSelectDropdownMenu ) { var dataTarget = $( gvh.checkAllMultiSelectDropdownMenu.attr('data-target') ); if( dataTarget ) { // grab the new offset position var eOffset = $( dataTarget ) .offset(); // make sure to place it where it would normally go (this could be improved) gvh.checkAllMultiSelectDropdownMenu.css( { 'display': 'block' , 'top': eOffset.top + dataTarget.outerHeight() , 'left': eOffset.left } ); } } }//gvh.updatePositionMulticheckerOption /** * Para que el desplegable del checkAll se muestre completamente cuando está en una 'table-responsive' */ $(document).off('show.bs.dropdown hide.bs.dropdown').on( 'show.bs.dropdown hide.bs.dropdown', '.table-responsive .multi-checker', function (e) { gvh.semaphoreEnqueue ( { id: 'show.bs.dropdown hide.bs.dropdown' , callback: function() { // NOTA : SE ha modificado el comportamiento de 'bootstrap.js->Dropdown.prototype.keydown if( e.type == 'show') { // grab the menu if( gvh.checkAllMultiSelectDropdownMenu ) gvh.checkAllMultiSelectDropdownMenu.detach(); gvh.checkAllMultiSelectDropdownMenu = $(e.target).find('.dropdown-menu'); // locate nearest container: gvhModal or gvhPage var container = $(e.target).closest( '.gvhModal , #gvhPage' ); // update zIndex based on nearest container gvh.checkAllMultiSelectDropdownMenu.css('z-index', container.css('z-index') + 1000); // 1000 = $zindex-dropdown de Bootstrap // detach it and append it to the body $( 'body' ).append( gvh.checkAllMultiSelectDropdownMenu.detach() ); gvh.updatePositionMulticheckerOption(); // on resize, update absolute position //$(document).on( 'resizeEnd.checkAllMultiSelectDropdownMenu', gvh.resizeEnd_checkAllMultiSelectDropdownMenu ); gvh.checkAllMultiSelectDropdownMenu.focus(); } else // 'hide' { $(e.target).append( gvh.checkAllMultiSelectDropdownMenu.detach() ); gvh.checkAllMultiSelectDropdownMenu.hide(); // disable on resize event //$(document).off( 'resizeEnd.checkAllMultiSelectDropdownMenu' ); delete gvh.checkAllMultiSelectDropdownMenu; } } } ); } ); /** * Para que al redimensionar la ventana se actualice la posición absoluta del desplegable del checkAll activo. */ $(document).off( 'resizeEnd.checkAllMultiSelectDropdownMenu' ).on( 'resizeEnd.checkAllMultiSelectDropdownMenu', function( e ) { gvh.updatePositionMulticheckerOption(); } ); /** * Para que al hacer scroll en una ventana modal se actualice la posición absoluta del desplegable del checkAll activo. */ $(document).on( 'shown.bs.modal', function() { $('.modal-open .modal').off( 'scroll.checkAllMultiSelectDropdownMenu').on( 'scroll.checkAllMultiSelectDropdownMenu', function( e ) { gvh.updatePositionMulticheckerOption(); } ); } ); /** * click: check general */ gvh.clickedCheckAll = function( e, $this ) { var checked = $this.is( ':checked' ); var accion = (checked ? 'selectAll' : 'unselectAll'); gvh.performSelectAction( { claseM: $this.closest('[data-gvhClaseManejadora]').attr( 'data-gvhClaseManejadora' ) , panelOn: $this.closest('[data-gvhpanelon]').attr( 'data-gvhpanelon' ) , panelJSON: $this.closest('[data-gvhpaneljson]').attr( 'data-gvhpaneljson' ) , accion: accion } ); }//gvh.clickedCheckAll $(document).off('click.checkAll').on( 'click.checkAll', '.multi-checker input:checkbox[data-gvhFunction=checkAll]', function( e ) { var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.checkAll' , callback: function() { gvh.clickedCheckAll (e, $this); } } ); } ); /** * gvh.pintarFilaTabular * * @access public */ gvh.pintarFilaTabular = function( claseM, raizJSON, indiceJSON, indiceUI, operacion, seleccionado, modo ) { gvh.showConsoleMsg('beginGroup',' ** gvh_table.js - pintarFilaTabular() '+indiceJSON); seleccionado = seleccionado || false; var css = ''; switch( operacion ) { case 'inserted': css = 'new'; break; case 'updated': // REVIEW break; case 'deleted': css = 'delete'; break; default: css = 'edit'; break; } gvh.showConsoleMsg( 'log', 'pintarFilaTabular === fila: ' +indiceJSON+' // seleccionado: ' + seleccionado); var vFields = gvh.getFieldsRow( raizJSON, indiceJSON ); for( var field in vFields ) { var name = ''; var plugin = gvh.getPlugin( raizJSON, field, indiceJSON ); var idCampo = gvh.getIdField( raizJSON, field, indiceJSON ); var vIDCampo = idCampo.split( '___' ); var idCampoUI = idCampo; if (plugin != 'noMatching') { idCampoUI = vIDCampo[0]+'___'+vIDCampo[1]+'___'+vIDCampo[2].split('_')[0]+'_'+indiceUI; } else { gvh.showConsoleMsg('log','noMatching para campo '+idCampo); } var campo = $( '#'+idCampoUI+'[data-gvhClaseManejadora='+claseM+']' ); var objCampoBtnUI = ''; switch( plugin ) { case 'cwcampotexto': var tipoCampo = gvh.getTypeField( raizJSON, field, indiceJSON ); // componer el id del botón que le acompaña if (tipoCampo != 'text') { var idCampoBtn = ''; switch( tipoCampo ) { case 'date' : idCampoBtn = 'calD_'+idCampoUI; break; case 'datetime' : idCampoBtn = 'calDT_'+idCampoUI; break; case 'time': idCampoBtn = 'calT_'+idCampoUI; break; } if( idCampoBtn != '' ) { objCampoBtnUI = $( 'button[id='+idCampoBtn+'][data-gvhClaseManejadora='+claseM+']' ); } } break; case 'cwareatexto': case 'cwupload': idCampo = prefijo+field+'___'+panel+'_'+sufijo; campo = $(':input[id='+idCampo+']').filter('[data-gvhClaseManejadora='+claseM+']'); break; case 'cwrichareatexto': var idEditor = 'editor_'+idCampoUI; campo = $('textarea[id='+idCampoUI+'][data-gvhClaseManejadora='+claseM+']'); if (modo == 'on') { $("div[id*='"+idEditor+"']").attr('contenteditable','true'); } else { $("div[id*='"+idEditor+"']").attr('contenteditable','false'); } break; case 'cwlista': case 'cwlista_select2': break; case 'cwlistaradio': name = idCampoUI; break; case 'cwcheckbox': break; case 'cwbotontooltip': objCampoBtnUI = campo; break; default: gvh.showConsoleMsg('error','gvh_panel.js pintarFilaTabular() '+plugin+' no identificado!!!!'); break; }//switch plugin if (gvh.isRowVisibles(raizJSON,indiceJSON) || (operacion == 'inserted')) { if ($('span[id=IGEPVisible'+idCampoUI+'][data-gvhClaseManejadora='+claseM+']').is(':hidden')) { $('span[id=IGEPVisible'+idCampoUI+'][data-gvhClaseManejadora='+claseM+']').show(); } } var panelJSON = raizJSON['panel']['id'].substr(0,3); if (operacion != 'deleted') { var stateField = gvh.getStateField(raizJSON,field,indiceJSON); // Para inserción y modificación hay que saber si el campo es o no editable. if ( ( (operacion == 'updated') && (stateField != 'noEdit') && (stateField != 'new')) || ( (operacion == 'inserted') && (stateField != 'noEdit')) ) { if (modo == 'on') { if ((stateField) || (stateField == 'true') || (stateField == 'new')) { if (name != '') { $('input:radio[name='+name+']').prop('readonly',false); $('input:radio[name='+name+']').prop('disabled',false); $('input:radio[name='+name+']').removeClass('edit'); $('input:radio[name='+name+']').addClass('modify'); } else { if (objCampoBtnUI != '') { var dependPanel = gvh.getDependPanelField(raizJSON,field,indiceJSON); if ((dependPanel != 'false')) { objCampoBtnUI.prop('readonly',false); objCampoBtnUI.prop('disabled',false); if (panelJSON == 'lis') { objCampoBtnUI.removeClass('edit'); objCampoBtnUI.addClass('modify'); if (objCampoBtnUI.is(":visible") != true) { objCampoBtnUI.show(); } } } } campo.prop('readonly',false); campo.prop('disabled',false); if (panelJSON == 'lis') { campo.removeClass('edit'); campo.addClass('modify'); } } if (css != '') campo.addClass(css); var tabindex = campo.attr('tabindex'); if (tabindex < 0) tabindex = campo.attr('tabindex')*(-1); campo.attr('tabindex',tabindex); } } else { if (name != '') { $('input:radio[name='+idCampoUI+']').prop('readonly',true); $('input:radio[name='+idCampoUI+']').prop('disabled',true); $('input:radio[name='+idCampoUI+']').addClass('edit'); $('input:radio[name='+idCampoUI+']').removeClass('modify'); } else { if (objCampoBtnUI != '') { objCampoBtnUI.prop('readonly',true); objCampoBtnUI.prop('disabled',true); if (panelJSON == 'lis') { objCampoBtnUI.addClass('edit'); objCampoBtnUI.removeClass('modify'); } } campo.attr('readonly',true); campo.prop('disabled',true); if (panelJSON == 'lis') { campo.addClass('edit'); campo.removeClass('modify'); } } if (css != '') campo.removeClass(css); var tabindex = campo.attr('tabindex'); if (tabindex < 0) tabindex = campo.attr('tabindex')*(-1); campo.attr('tabindex',tabindex); } } } else { // operacion == 'deleted' if (gvh.isRowVisibles(raizJSON,indiceJSON)) { var objPanel = $( '#P_'+raizJSON['panel']['id']+'[data-gvhClaseManejadora='+claseM+']' ); if (plugin == 'cwlistaradio') { $( 'input:radio[name='+idCampoUI+']' ).addClass( css ); } else { campo.addClass( css ); } // Marcamos la fila (tr) como borrada. if( campo.length > 0 ) { campo.closest( 'tr[data-gvhclasemanejadora="'+claseM+'"][data-gvhpaneljson="'+panelJSON+'"]' ) .addClass( 'rowDeleted' ); } // Marcamos el panel como modificado if( objPanel.length > 0 ) { objPanel.attr( 'data-gvhchanged', 'true' ); } } }//else operacion }//for field gvh.showConsoleMsg('endGroup'); return; } /* ********************* * EVENTOS DESDE EL DOM *********************** */ /* * mouseover/mouseout: ratón sobre las filas */ $(document).off('click.orderTable').on( 'click.orderTable', 'label[data-gvhFunction="orderTable"]', function( e ) { e.preventDefault(); e.stopImmediatePropagation(); e.stopPropagation(); var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.orderTable' , callback: function() { gvh.orderTable = (gvh.orderTable == 'asc' ? 'desc' : 'asc'); var destino = $this.attr('data-gvhDestino') + "&IGEPord=" + gvh.orderTable; var formulario = $this.closest('form'); var claseM = $this.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var esModal = ($this.closest('[data-gvhwindow]').attr('data-gvhwindow') == 'gvhModal'); var idVentana = $this.closest('[role=dialog]').attr('id'); var lastPath = ''; if (idVentana && idVentana in gvh.dialogs) { lastPath = gvh.dialogs[idVentana]['lastPath']; } $this.controllerJS( { id: $this.attr('id') , panel: $this.attr('data-gvhPanelOn') , destino: destino , newWindow: 'false' , claseM: claseM , esModal: esModal , idVentana: idVentana , lastPath: lastPath } ); //gvh.controllerJS($this.attr('id'), $this.attr('data-gvhPanelOn'), destino, claseM, 'false', '', gvh.msgLoad); } } ); } ); $(document).off('click.down_up').on( 'click.down_up', 'span[id=down],span[id=up]', function( e ) { var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.down_up' , callback: function() { var destino = $this.attr('data-gvhDestino'); var formulario = $this.closest('form'); var claseM = $this.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); $this.controllerJS( { id: $this.attr('id') , panel: $this.attr('data-gvhPanelOn') , destino: destino , newWindow: 'false' , claseM: claseM } ); //gvh.controllerJS($this.attr('id'), $this.attr('data-gvhPanelOn'), destino, claseM, 'false', '', gvh.msgLoad); } } ); } ); /* * click vsCheck_ radiobutton para seleccionar un registro en ventana de selección */ $(document).off('click.vsCheck').on( 'click.vsCheck', 'input[id*=vsCheck_]', function( e ) { gvh.showConsoleMsg('log',' vsCheck - check ventana de selección'); e.stopImmediatePropagation(); var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.vsCheck' , callback: function() { var panel = $this.attr('data-gvhPanelOn'); var claseM = $this.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var id = $this.attr('id'); var rowUI = id.split('_')[2]; gvh.checkUnique ($this.attr('id'), rowUI, claseM, $this.attr('data-gvhPanelOn'), ''); } } ); } ); /* * click sobre una fila de la tabla de un panel LIS */ $(document).off('select.onrowclick').on( 'select.onrowclick', 'tr[data-gvhpaneljson=lis][data-gvhclasemanejadora] .form-control', function( e ) { gvh.onSelectionActive = true; e.preventDefault(); e.stopImmediatePropagation(); e.stopPropagation(); var $this = $(this); gvh.semaphoreEnqueue ( { id: 'select.onrowclick' , callback: function() { gvh.onSelectionActive = true; } } ); } ); $(document).off('click.onrowclick').on( 'click.onrowclick', 'tr[data-gvhpaneljson=lis][data-gvhclasemanejadora]', function( e ) { var $this = $(this); gvh.semaphoreEnqueue ( { id: 'click.onrowclick' , callback: function() { if( $this.find('.modify').length ) { return; } e.preventDefault(); if( gvh.onSelectionActive ) { e.stopImmediatePropagation(); gvh.onSelectionActive = false; return; } var idButton = $this.closest('[data-onrowclick]').attr('data-onrowclick'); if( idButton ) { $this.onRowEvent( e, idButton, $this ); } } } ); } ); /* * Click doble sobre una fila de la tabla de un panel LIS */ $(document).off('dblclick.onrowdoubleclick').on( 'dblclick.onrowdoubleclick', 'tr[data-gvhpaneljson=lis][data-gvhclasemanejadora]', function( e ) { var $this = $(this); gvh.semaphoreEnqueue ( { id: 'dblclick.onrowdoubleclick' , callback: function() { if( $this.find('.modify').length ){ return; } e.preventDefault(); var idButton = $this.closest('[data-onrowdoubleclick]').attr('data-onrowdoubleclick'); if( idButton ) { $this.onRowEvent( e, idButton, $this ); } gvh.onSelectionActive = false; } } ); } ); /* * Al hacer doble click sobre la cabecera de un panel, alterna el estado de colapso del panel. */ $(document).off('dblclick.gvhcollapsible').on( 'dblclick.gvhcollapsible', '[data-gvhcollapsible] > .panel-heading', function( e ) { gvh.showConsoleMsg('log',' toggle collapse!!!' ); var $this = $(this); gvh.semaphoreEnqueue ( { id: 'dblclick.gvhcollapsible' , callback: function() { var panel = $this.closest( '.panel' ); if( !panel ) { return; } gvh.showConsoleMsg('log', panel.find( '.panel-body' ) ); panel.find( '.panel-body' ).toggle(); gvh.showConsoleMsg('log', panel.find( '.gvhBarraInfPanel' ) ); panel.find( '.gvhBarraInfPanel' ).toggle(); } } ); } ); } //gvh.Table