/* * Codificación UTF-8 * Métodos que trabajan sobre el estado del panel según la operación a realizar sobre él (lectura, inserción, modificación, borrado) * * FUNCIONES MODIFICACIÓN INTERFAZ PANEL: * iconUpdate( modo, panel, claseM ) * resizePanel( $this ) * blockExit( exit, modo, panel ) * cleanForm(id, panel) * offTooltipBasic(objElemento, modo) * addList( campo, gvhLista, selectedValue ) * addListSelect2( campo, gvhLista, selectedValue ) * setButtonDependPanel(objElemento,depend) * setFieldEnable(objElemento,enable) * floatBar(bar = 'topBarPrimary', panel = 'P_lis') * * FUNCIONES EVENTOS AL CAMBIAR VALOR UN CAMPO: * fieldsRequired(objElemento) * updateEvent(objElemento, message) * changeField(objElemento) * * FUNCIONES OPERACION FORMULARIO PANEL: * getStatePanel(objPanel) * formOnButtons(id,panel,modo) * formOnFields(objElemento, operacion, modo='on') * formOnInsert(objElemento) * formOnUpdate(objElemento, modo='on') * formOnDelete(objElemento) */ if( !gvh.Panel || gvh.versionCompare(gvh.Panel.VERSION, gvh.VERSION) < 0 ) { gvh.showConsoleMsg( 'log', 'gvh.Panel : Inicializando...' ); gvh.Panel = function() { // REVIEW : De momento está vacío, pero debería convertirse en un componente. // NOP : No hacer nada } gvh.Panel.VERSION = '5.0.2'; /** * Permite maximizar/restaurar un panel */ gvh.resizePanel = function( $this ) { // REVIEW : Ya No es necesario, debido a .off('click.gvh_resizePanel').on('click.gvh_resizePanel' //e.preventDefault(); //e.stopImmediatePropagation(); if( $this.hasClass('glyphicon-resize-full') ) { $this.removeClass( 'glyphicon-resize-full' ); $this.addClass( 'glyphicon-resize-small' ); } else if( $this.hasClass('glyphicon-resize-small') ) { $this.removeClass( 'glyphicon-resize-small' ); $this.addClass( 'glyphicon-resize-full' ); } $this.closest('.panel').toggleClass( 'panel-fullscreen' ); } //gvh.resizePanel /** * iconUpdate() * FUNCIӓN: Mostrar icono barra inferior modificación * @access private * @var modo: ['R'|'I'|'W'] * @var panel: panel sobre el que se está trabajando * @var claseM: clase manejadora del panel */ gvh.iconUpdate = function( modo, panel, claseM ) { gvh.showConsoleMsg( 'log',' *** gvh_panel.js - iconUpdate() -> DESACTIVADO!' ); } /** * blockExit: Bloquea la salida del panel mientras no se ejecute o cancele la acción que se haya indicado (insertar/modificar) * @access private * @var exit: booleano * @var panel: tipo de panel sobre el que se está trabajando ['edi'|'ediDetalle'|'lis'|'lisDetalle'] * @var modo: ['I' (inserción) | 'W' (modificación) | 'R' (lectura)] * @var claseM: clase manejadora del panel */ gvh.blockExit = function( exit, modo, panel, claseM ) { gvh.showConsoleMsg('log',' *** gvh_panel.js - blockExit() -> '+panel+' modo '+modo+' claseM '+claseM ); if (panel == undefined) { gvh.showConsoleMsg('error',' ¡¡¡ gvh_panel.js - blockExit() -> la variable panel no está definida'); } else { var idPanel = panel; if (panel.indexOf("P_") == -1) { var idPanel = 'P_'+panel; var panelJSON = panel.substring(0,3); } else { var panelJSON = panel.substring(2,5); } if ((modo == 'W') || (modo == 'I')) { $( '[data-gvhExit]' ).attr( 'data-gvhExit', false ); } else { $( '[data-gvhExit]' ).attr( 'data-gvhExit', true ); } $( 'div[id='+idPanel+'][data-gvhWindow='+gvh.ambito+'][data-gvhClaseManejadora='+claseM+']' ).attr( 'data-gvhestadopanel', modo ); $( '#'+gvh.ambito).attr( 'data-gvhestadopanel', modo ); if (claseM == '') { gvh.showConsoleMsg('error',' ¡¡¡blockExit() - No existe clase manejadora!!!'); } else if ((panelJSON == 'edi') || (panelJSON == 'lis')) { gvh.datosJSON[claseM][panelJSON]['panel']['state'] = modo; } /*if ((claseM != '') && (panel != '')) { if (panelJSON != 'fil') { gvh.datosJSON[claseM][panelJSON]['panel']['state'] = modo; } } else { gvh.showConsoleMsg('error',' ¡¡¡blockExit() - El parámetro clase manejadora es '+claseM+'!!!'); }*/ } } /** * cleanForm: Marcará el estado del registro: insertada/modificada * @access private * @var objElemento: elemento que lanza la acción limpiar */ gvh.cleanForm = function(objElemento) { gvh.showConsoleMsg('log',' *** gvh_panel.js - cleanForm()' ); var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var panel = objElemento.attr( 'data-gvhPanelOn' ); var panelJSON = panel.substr( 0, 3 ); var raizJSON = gvh.getRoot(claseM,panelJSON); var reg = 0; var vFields = gvh.getFieldsJSON(raizJSON,reg); var pagActiva = gvh.getPagActive(raizJSON); var numReg = 1; var sufijoRow = ''; if (panelJSON != 'fil') { if (panelJSON == 'lis') { var vReg = gvh.getRegAlter(raizJSON); var numReg = count(vReg); var rowsPag = gvh.getRowsPag(raizJSON); var rowTab = row%rowsPag; sufijoRow = '___'+panel+'_'+rowTab; } else { var reg = gvh.getPagActive(raizJSON); sufijoRow = '___'+panel+'_'+reg; } } var vFields = gvh.getFieldsJSON(raizJSON,reg); for (var i=0;i 0 ) { gvh.addList(inputField, listOptions, valueOld); } } else { var idCampo = inputField.attr('id'); $('#'+idCampo+' option:selected').attr('selected',false); $('#'+idCampo+' option[value="'+valueOld+'"]').prop("selected", true); $('#'+idCampo+' option[value="'+valueOld+'"]').attr("selected", true); } gvh.setValue(raizJSON,field,reg,valueOld); break; case 'cwlistaradio': var radio = $('input:radio[name*='+field+sufijoRow+']').filter('[data-gvhClaseManejadora='+claseM+']'); if( inputField.is(':visible') ) { if (valueOld != '') radio.filter('[value='+valueOld+']').prop('checked',true); else radio.prop('checked',false); gvh.setValue(raizJSON,field,reg,valueOld); } break; case 'cwlista_select2': var inputField = $('input[id*='+field+sufijoRow+']').filter('[data-gvhClaseManejadora='+claseM+']'); var lista = gvh.getFieldList(raizJSON,field,false,pagActiva); var descripcion = ''; for( i=0;i'+descripcion+''); } else { $detachSelect.append(''); } } //parentDetach.append($detachSelect); } /** * addListSelect2() * FUNCIӓN: Crea una lista nueva tipo select2 con las opciones que se le pasan * @access private * @var gvhLista: array de opciones a añadir a la lista * @var selectedValue: valor seleccionado en la lista */ gvh.addListSelect2 = function(campo, gvhLista, selectedValue) { gvh.showConsoleMsg('log',' *** addListSelect2() - selected: '+selectedValue); campo.empty();//.trigger('change'); /*var parentDetach = campo.parent(); var $detachSelect = campo; $detachSelect.detach();*/ var lengthLista = gvhLista.length; for(var i=0;i 0) { vs.prop('disabled',false); tabindex = vs.attr('tabindex')*(-1); if( tabindex !== 'undefined' && !isNaN(tabindex) ) { vs.attr('tabindex',tabindex); } } } break; case 'cwareatexto': objElemento.addClass('modify'); if (objElemento.hasClass('noEdit')) { objElemento.removeClass('noEdit'); objElemento.addClass('edit'); } objElemento.prop('readonly',false); break; case 'cwrichareatexto': var idEditor = 'editor_'+id; $("div[id*='"+idEditor+"']").attr('contenteditable','true'); break; case 'cwupload': case 'cwuploadmanager': break; case 'cwlabel': objElemento.removeClass("linkDisabled"); objElemento.addClass("link"); objElemento.css('cursor','hand'); objElemento.click(function() { return (objElemento.attr('disabled')) ? false : true; }); break; case 'cwlista': case 'cwlista_select2': objElemento.addClass('modify'); if (objElemento.hasClass('noEdit')) { objElemento.removeClass('noEdit'); objElemento.addClass('edit'); } objElemento.prop('disabled',false); objElemento.prop('readonly',false); break; case 'cwimagen': break; case 'cwlistaradio': objElemento.addClass('modify'); if (objElemento.hasClass('noEdit')) { objElemento.removeClass('noEdit'); objElemento.addClass('edit'); } objElemento.prop('readonly',false); break; case 'cwcheckbox': break; case 'cwbotontooltip': break; default: gvh.showConsoleMsg('error', ' ¡¡¡ setFieldEnable() - '+plugin+' plugin no controlado !!!'); break; } objElemento.prop('disabled',false); objElemento.removeClass("disabled"); tabindex = objElemento.attr('tabindex'); if( tabindex !== 'undefined' && !isNaN(tabindex) ) { if (tabindex < 0) { tabindex = tabindex*(-1); objElemento.attr('tabindex',tabindex); } } } else { switch( plugin ) { case 'cwcampotexto': objElemento.removeClass('modify'); if (objElemento.hasClass('edit')) { objElemento.removeClass('edit'); objElemento.addClass('noEdit'); } objElemento.prop('readonly',true); var tipoCampo = gvh.getTypeField(raizJSON,field,nReg); if (tipoCampo != 'text') { if (tipoCampo == 'date') { idCampoBtn = 'calD_'+id; } else if (tipoCampo == 'datetime') { idCampoBtn = 'calDT_'+id; } else if (tipoCampo == 'time') { idCampoBtn = 'calT_'+id; } if (idCampoBtn != '') { $('#'+idCampoBtn).prop('disabled',true); $('#'+idCampoBtn).addClass("disabled"); tabindex = $('#'+idCampoBtn).attr('tabindex')*(-1); if( tabindex !== 'undefined' && !isNaN(tabindex) ) { $('#'+idCampoBtn).attr('tabindex',tabindex); } } } if (id != undefined) { var vs = $('#vs_'+id); var vsLength = vs.length; if (vsLength > 0) { vs.prop('disabled',true); tabindex = vs.attr('tabindex')*(-1); if( tabindex !== 'undefined' && !isNaN(tabindex) ) { vs.attr('tabindex',tabindex); } } } break; case 'cwareatexto': objElemento.removeClass('modify'); if (objElemento.hasClass('edit')) { objElemento.removeClass('edit'); objElemento.addClass('noEdit'); } objElemento.prop('readonly',true); break; case 'cwlista': case 'cwlista_select2': objElemento.prop('disabled',true); objElemento.prop('readonly',true); break; case 'cwrichareatexto': var idEditor = 'editor_'+id; $("div[id*='"+idEditor+"']").attr('contenteditable','false'); break; case 'cwupload': case 'cwuploadmanager': break; case 'cwlabel': objElemento.addClass("linkDisabled"); objElemento.removeClass("link"); objElemento.css('cursor','none'); objElemento.click(function() { return (objElemento.attr('disabled')) ? false : true; }); break; case 'cwlistaradio': objElemento.removeClass('modify'); if (objElemento.hasClass('edit')) { objElemento.removeClass('edit'); objElemento.addClass('noEdit'); } objElemento.prop('readonly',true); break; case 'cwcheckbox': break; case 'cwbotontooltip': break; default: gvh.showConsoleMsg('error', ' ¡¡¡ setFieldEnable() - '+plugin+' plugin no controlado !!!'); break; } objElemento.prop('disabled',true); tabindex = objElemento.attr('tabindex'); if( tabindex !== 'undefined' && !isNaN(tabindex) ) { if (tabindex > 0) { tabindex = tabindex*(-1); objElemento.attr('tabindex',tabindex); } } } gvh.showConsoleMsg('endGroup'); } // setFieldEnable() /** * checkVisible() * FUNCIӓN: Comprueba si un elemento es está en/sobre el área visible de la ventana. * @param {jQuery} elm - Elemento jQuery a comprobar si está en/sobre el área visible de la ventana. * @param {string} evalType - Tipo de visibilidad a comprobar: visible , above */ gvh.checkVisible = function(elm, evalType) { evalType = evalType || 'visible'; if( typeof $(elm).offset() === 'undefined' ) { return false; } var vpH = $(window).height(), // Viewport Height st = $(window).scrollTop(), // Scroll Top y = $(elm).offset().top, elementHeight = $(elm).height(); if (evalType === 'visible') return ((y < (vpH + st)) && (y > (st - elementHeight))); if (evalType === 'above') return ((y < (vpH + st))); return false; } //gvh.checkVisible /** * gvh.floatBar() * FUNCIӓN: Hacer flotante o no una barra en función de si su panel está dentro del área visible de la ventana. * @param {string} bar - La barra a hacer flotante * @param {string} panel - El panel a comprobar si está dentro del área visible de la ventana. */ gvh.floatBar = function(bar, panel) { bar = bar || 'topBarPrimary'; panel = panel || 'P_lis'; $(window).bind( 'scroll', function() { var elem1 = $('#'+panel); var elem2 = $('#'+bar); elem2.removeClass('barraFlotante'); if( !gvh.checkVisible(elem2, 'visible') ) { elem2.addClass('barraFlotante'); } if( !gvh.checkVisible(elem1, 'visible') ) { elem2.removeClass('barraFlotante'); } } ); } //gvh.floatBar /************************************************ / * FUNCIONES EVENTOS AL CAMBIAR VALOR UN CAMPO /************************************************/ /** * fieldsRequired() * FUNCIӓN: Comprobación obligatorios * @access private * @var objElemento: elemento dom que lanza la acción */ gvh.fieldsRequired = function(objElemento) { gvh.showConsoleMsg('log', ' *** gvh_panel.js - fieldsRequired()' ); gvh.showConsoleMsg('log',objElemento); var correcto = 'correcto'; var fieldsRequired = ''; var panel = objElemento.attr('data-gvhPanelOn'); var panelJSON = panel.substring(0,3); var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var raizJSON = gvh.getRoot(claseM,panelJSON); var dataRequired = gvh.getDataRequired(raizJSON); var dataRequiredLength = dataRequired.length; var regAlter = gvh.getRegAlter(raizJSON); var fieldsRequired = ''; if ( (dataRequiredLength > 0) && (regAlter.length > 0)) { for (var index=0;index++;index
'; gvh.setClassField(raizJSON,field,numReg,'fieldRequired'); } } } } return fieldsRequired; } // fieldsRequired() /** * updateEvent() * FUNCIӓN: lanzar acción de interfaz * @access private * @var objElemento: elemento dom que lanza la acción * @var message: texto que aparecerá en el mensaje */ gvh.updateEvent = function(objElemento,message) { gvh.semaphoreAddLevel ('updateEvent'); message = message || gvh.msgLoad; gvh.showConsoleMsg('beginGroup',' *** gvh_panel.js - updateEvent() -> '+objElemento.attr('id')); var id = objElemento.attr('id'); var name = objElemento.attr('name'); //if ($('input:radio[name='+name+']').length > 0) // Si el elemento es un radiobutton pasamos como id el atributo name if (objElemento.attr('data-gvhCWSource') == 'cwlistaradio') { var id = name; } var actualizaA = objElemento.attr('data-gvhActualizaA'); var panel = objElemento.attr('data-gvhPanelOn'); if ((actualizaA != '') && (actualizaA != undefined)) { var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var estadoPanel = $('#P_'+panel+'[data-gvhClaseManejadora='+claseM+']').attr('data-gvhEstadoPanel'); if ($('#'+id).is(':radio')) { id = $(this).attr('name'); } var panelJSON = panel; if (panel == 'ediDetalle') panelJSON = 'edi'; else if (panel == 'lisDetalle') panelJSON = 'lis'; var formulario = objElemento.closest('form'); var idForm = formulario.attr('id'); var value = objElemento.val(); // REVIEW: VERO ya no se necesita el parámetro gvhcache //var url = 'phrame.php?action=gvhJSRefreshUI&gvhcache=true&gvhpanel='+panelJSON+'&claseManejadora='+claseM+'&gvHclass='+claseM+'&gvHfname='+idForm+'&gvHfrom='+id+'&gvHvalue='+value+'&gvHtarget='+actualizaA+'&gvHpanelState='+estadoPanel; var url = 'phrame.php?action=gvhJSRefreshUI&gvhpanel='+panelJSON+'&claseManejadora='+claseM+'&gvHclass='+claseM+'&gvHfname='+idForm+'&gvHfrom='+id+'&gvHvalue='+value+'&gvHtarget='+actualizaA+'&gvHpanelState='+estadoPanel; gvh.showConsoleMsg('log',' ... Llamada a phrame: '+url); //Mostramos el progreso Pace.restart(); document.body.className = document.body.className; // Forzamos a actualizar la interfaz //gvh.semaphoreAddLevel ('updateEvent.ajax'); $.ajax( { data: gvh.datosJSON[claseM][panelJSON]['dataPerform'], type: "POST", cache: false, datatype: "script", url: url, beforeSend: function() { gvh.showConsoleMsg('log',' ... Beforesend ...'); gvh.loading('on',message); }, success: function(response) { gvh.showConsoleMsg('log',' ... Success: '+response); try { //EJECUTA JAVASCRIPT EN LA PÁGINA (acciones de interfaz) response.context.action = 'NoAction' var rspPhrameJSON = JSON.parse(response); //var rspPhrameJSON = $.parseJSON(response); if (rspPhrameJSON.context.action == 'NoAction') { gvh.semaphoreEval (rspPhrameJSON.context.script, 'updateEvent.NoAction'); } } catch (e) { if (e instanceof SyntaxError) { console.log(e); gvh.showMessage('gvhlang_errorController','error'); } else { console.log(e); gvh.showMessage('gvhlang_errorController','error'); } } //gvh.semaphoreSubLevel ('updateEvent.ajax'); }, error:function( jqXHR, textStatus, errorThrown ) { gvh.showConsoleMsg('log',' ... # ERROR updateEvent'); //gvh.semaphoreSubLevel ('updateEvent.ajax'); }, complete:function( jqXHR, textStatus, errorThrown ) { gvh.showConsoleMsg('log','# COMPLETE updateEvent'); gvh.loading('off'); } }) } else { gvh.showConsoleMsg('error',' ¡¡¡No se ha indicado el campo que debe ser actualizado. Param "actualizaA".!!!'); } gvh.semaphoreSubLevel ('updateEvent'); gvh.showConsoleMsg('endGroup'); }; // updateEvent() /** * changeField: Actualización del gvh.datosJSON con el cambio producido en el campo * El elemento necesita tener los siguientes atributos si se crea de forma directa en html: * -> data-gvhClaseManejadora * -> data-gvhPanelOn * -> data-gvhCWSource * @access public * @var objElemento: componente botón que se ha pulsado */ gvh.changeField = function( objElemento, newValue, triggerChanged ) { newValue = newValue || ''; triggerChanged = triggerChanged || true; gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - changeField() '); var fieldAmbito = objElemento.attr( 'data-gvhWindow' ); if( fieldAmbito == gvh.ambito ) { var claseM = objElemento.attr( 'data-gvhClaseManejadora' ); var panel = objElemento.attr( 'data-gvhPanelOn' ); var plugin = objElemento.attr( 'data-gvhCWSource' ); var panelJSON = panel.substring( 0, 3 ); var objPanel = $('div[id=P_'+panel+'][data-gvhWindow='+gvh.ambito+'][data-gvhClaseManejadora='+claseM+']'); var idCampo = objElemento.attr( 'id' ); var external = ""; if (objElemento.attr('data-gvhexternal')) { external = objElemento.attr('data-gvhexternal'); if ((external == 'true') || (external == true)) { external = "true"; } } if( plugin == 'cwlistaradio' ) { idCampo = objElemento.attr( 'name' ); } gvh.showConsoleMsg('log', ' FIELD: '+idCampo ); var campoJSON = idCampo; var estadoPanel = objPanel.attr('data-gvhEstadoPanel'); // Marcar el panel como modificado if( objPanel.length > 0 && triggerChanged && panel != 'fil' && (estadoPanel == 'W' || estadoPanel == 'I')) { objPanel.attr( 'data-gvhchanged', 'true' ); } if( plugin == 'cwlistaradio' ) { var name = objElemento.attr( 'name' ); } var row = 0; if(( panelJSON != 'fil' ) && ((external == '') || (external == 'false'))) { var vCampoJSON = idCampo.split('___'); if (vCampoJSON.length > 1) { campoJSON = vCampoJSON[1]; if( plugin == 'cwlistaradio' ) { campoJSON = name.split('___')[1]; } row = idCampo.split('___')[2].split('_')[1]; } } var raizJSON = gvh.getRoot( claseM, panelJSON ); var plugin = ''; var external = objElemento.attr( 'data-gvhExternal' ); var regJSON = 0; if( external == 'true' ) // Tratamiento de campos external { external = true; row = 0; plugin = gvh.getPlugin(raizJSON,campoJSON,row,external); } else { external = false; // Según el panel se calcula indice del gvh.datosJSON var modoPanel = gvh.getStatePanel(objPanel); regJSON = gvh.indexDataJSON( raizJSON, row, modoPanel ); if (gvh.getExistField(raizJSON,campoJSON,regJSON)) { var plugin = gvh.getPlugin( raizJSON,campoJSON,regJSON,external ); var hidden = gvh.isHidden( raizJSON,campoJSON,regJSON,external ); gvh.setSelectedReg( raizJSON, regJSON, 'add', false ); var estado = objPanel.attr( 'data-gvhestadopanel' ); var state = 'nada'; switch( estado ) { case 'W': estado = 'modificada'; state = 'updated'; break; case 'D': estado = 'borrada'; state = 'deleted'; break; case 'I': estado = 'insertada'; state = 'inserted'; break; default: estado = 'nada'; state = 'nada'; break; } gvh.setStateReg( raizJSON , state, regJSON ); if( hidden == 1 ) // Campo oculto { plugin = 'hidden'; } } else { gvh.showConsoleMsg('error', '¡¡¡ changeField() - '+campoJSON+' no existe este campo en el registro '+regJSON+' !!!' ); } } if( plugin != '' ) { var valorCampo = ''; switch( plugin ) { case 'cwrichareatexto': gvh.showConsoleMsg('log',objElemento); var idTxtArea = objElemento.attr('id'); var editor = 'editor_'+idTxtArea; valorCampo = $('#'+editor).html(); break; case 'cwareatexto': valorCampo = objElemento.val(); break; case 'cwcampotexto': valorCampo = objElemento.val(); break; case 'cwlista': valorCampo = objElemento.val(); if (objElemento.prop('multiple') === false) { objElemento.find('option:selected').attr('selected',false); objElemento.find('option[value="'+valorCampo+'"]').prop("selected", true); } var dependencia = gvh.isDependenceList(raizJSON,campoJSON,regJSON,external); break; case 'cwlista_select2': valorCampo = objElemento.val(); break; case 'cwimagen': valorCampo = objElemento.attr( 'src' ); break; case 'cwlistaradio': valorCampo = $('input:radio[name='+name+'][data-gvhClaseManejadora='+claseM+'][data-gvhWindow='+gvh.ambito+']:checked').val(); var radio = $('input:radio[name='+name+'][data-gvhClaseManejadora='+claseM+'][data-gvhWindow='+gvh.ambito+']'); break; case 'cwcheckbox': var attr = (objElemento.is(':checked') ? 'data-gvhValueCheck' : 'data-gvhValueUnCheck'); valorCampo = objElemento.attr( attr ); break; case 'hidden': gvh.showConsoleMsg('log','campo hidden => '+newValue); if (newValue == '') valorCampo = gvh.getValue(raizJSON,campoJSON,row); else valorCampo = newValue; break; default: gvh.showConsoleMsg('error', ' ¡¡¡ changeField() - '+plugin+' plugin no controlado !!!'); break; } gvh.setValue( raizJSON, campoJSON, regJSON , valorCampo, external ); var actualizaA = objElemento.attr( 'data-gvhActualizaA' ); if( actualizaA ) { var formulario = objElemento.closest( 'form' ); var elemUpdate = (plugin == 'cwlistaradio' ? radio : objElemento ); gvh.updateEvent( elemUpdate ); } if( panel != 'fil' ) { gvh.blockExit( false, objPanel.attr('data-gvhEstadoPanel'), panel, claseM ); } } } gvh.showConsoleMsg('endGroup'); } // changeField() /************************************************ / * FUNCIONES OPERACIÓN FORMULARIO PANEL /************************************************/ /** * getStatePanel: Obtenemos el estado del panel ('R', 'W', 'I') * @access private * @var exit: booleano * @var objPanel: objeto panel sobre el que se está trabajando ['edi'|'ediDetalle'|'lis'|'lisDetalle'] */ gvh.getStatePanel = function( objPanel ) { var state = objPanel.attr('data-gvhEstadoPanel'); gvh.showConsoleMsg('log',' *** gvh_panel.js - getStatePanel() => '+state); return state; } /** * formOnButtons() * FUNCIÓN: Activar botones de la barra inferior * @access private * @var objPanel: panel sobre el que se quieren activar los paneles */ gvh.formOnButtons = function( objPanel ) { var idPanel = objPanel.attr('id'); var panelOn = idPanel.substr(2,idPanel.length); // P_lis var claseM = objPanel.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); gvh.showConsoleMsg('log', ' *** gvh_panel.js - formOnButtons() '+idPanel ); //REVIEW: VERO Eliminar cuando el nuevo árbol esté acabado $( 'button[data-gvhWindow='+gvh.ambito+'][id*=bttlTreeSelector_]' ) .filter( '[data-gvhstate=edit][data-gvhposition=panel]' ) .removeClass( 'disabled' ); var boton = $( 'button[data-gvhpanelon='+panelOn+'][data-gvhClaseManejadora='+claseM+'][data-gvhcwsource=cwboton]' ); boton.each( function() { if( $(this).is( ':hidden' ) ) { $(this).show(); } } ); var botonMap = $( 'button[data-gvhpanelon='+panelOn+'][data-gvhClaseManejadora='+claseM+'][data-gvhcwsource=cwmaps]' ); botonMap.each( function() { $(this).prop('disabled',false); } ); }; /** * formOnFields() * FUNCIÓN: Activar campos * @access private * @var objElemento: componente botón que se ha pulsado * @var operacion: ['insertar', 'modificar', 'eliminar'] * @var modo: ['on', 'off'] */ gvh.formOnFields = function(objElemento, operacion, modo) { modo = modo || 'on'; gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - formOnFields() '+operacion); gvh.showConsoleMsg('log',objElemento); var id = objElemento.attr('id'); var panel; if ( objElemento.is( "div" ) ) { panel = id.substring(2,id.length); } else { panel = objElemento.attr('data-gvhPanelOn'); } var idPanel = 'P_'+panel; var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var objPanel = $( '#'+idPanel+'[data-gvhClaseManejadora='+claseM+']' ); var panelJSON = panel.substring(0,3); var raizJSON = gvh.getRoot(claseM,panelJSON); var prefijo = ''; var css = ''; var iter = 0; var vReg; var numRows; var numReg = 1; var reg; var vFields; var sufijo = 0; if( panelJSON == 'lis' && operacion != 'inserted' ) { gvh.formOnFieldsLIS( objElemento, operacion, modo ); } if (panelJSON != 'fil') { if (panelJSON == 'lis') { vReg = gvh.getRegSelected(raizJSON); numRows = gvh.getRowsPag(raizJSON); numReg = vReg.length; } else { reg = gvh.getPagActive(raizJSON); vFields = gvh.getFieldsJSON(raizJSON,reg); objPanel.attr( 'data-gvhchanged', 'true' ); } } switch(operacion) { case 'inserted': prefijo = 'ins___'; //state = '[data-gvhstate=new],[data-gvhstate=edit]'; css = 'new'; reg = gvh.getPagIns(raizJSON); if (panelJSON == 'lis') { vReg = gvh.getRegInsert(raizJSON); numReg = vReg.length; } else { vFields = gvh.getFieldsJSON(raizJSON,reg); sufijo = reg; } break; case 'updated': prefijo = 'cam___'; //state = '[data-gvhstate=edit]'; break; case 'deleted': prefijo = 'cam___'; css = 'delete'; //state = '[data-gvhstate=edit]'; break; default: prefijo = 'cam___'; css = 'edit'; break; } if (panelJSON == 'edi') { if (modo == 'on') { gvh.setStateReg( raizJSON, operacion, reg ); gvh.setSelectedReg( raizJSON, reg, 'add' ) } } for (var i=0;i 0 ) { campo.closest( 'tr[data-gvhclasemanejadora="'+claseM+'"][data-gvhpaneljson="'+panelJSON+'"]' ) .addClass( 'rowDeleted' ); // .attr( 'data-gvhdelete', 'true' ); } // Marcamos el panel como modificado if( objPanel.length > 0 ) { objPanel.attr( 'data-gvhchanged', 'true' ); } } } } } gvh.showConsoleMsg('endGroup'); }; /** * formOnFieldsLIS() * FUNCIÓN: Activar campos * @access private * @var objElemento: componente botón que se ha pulsado * @var operacion: ['insertar', 'modificar', 'eliminar'] * @var modo: ['on', 'off'] */ gvh.formOnFieldsLIS = function( objElemento, operacion, modo ) { modo = modo || 'on'; gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - formOnFieldsLIS() '+operacion); gvh.showConsoleMsg('log',objElemento); var id = objElemento.attr('id'); var panel; if ( objElemento.is( "div" ) ) { panel = id.substring(2,id.length); } else { panel = objElemento.attr('data-gvhPanelOn'); } var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var idPanel = 'P_'+panel; var objPanel = $( '#'+idPanel+'[data-gvhClaseManejadora='+claseM+']' ); var modoPanel = gvh.getStatePanel(objPanel); var panelJSON = panel.substring(0,3); var raizJSON = gvh.getRoot(claseM,panelJSON); var pagOnUI = 0; switch(operacion) { case 'inserted': pagOnUI = gvh.getPagIns(raizJSON); break; case 'updated': case 'deleted': pagOnUI = gvh.getPagActive(raizJSON); break; default: pagOnUI = 0; break; } if (panelJSON != 'fil') { // calcular los índices correspondientes a la página activa var vRegSelectedJSON = gvh.getRegSelected(raizJSON).sort( function(a,b){return a - b} ); // actualizamos su estado for ( var i = 0; i < vRegSelectedJSON.length; i++) { gvh.setStateReg( raizJSON, operacion, vRegSelectedJSON[i] ); } if (panelJSON == 'lis') // TIPO TABULAR { var rowsPag = gvh.getRowsPag(raizJSON); var vRegPag = new Array(rowsPag); var bloqueRegPag = gvh.blockRegPagina(raizJSON,pagOnUI); // Devuelve el reg ini y el reg fin var j = 0; for( var iJson=bloqueRegPag['ini']; iJson<=bloqueRegPag['fin']; iJson++) { //console.log(' iteración = iJson: ' + iJson + ' // j: ' + j + ' // vRegSelectedJSON[j]: '+ vRegSelectedJSON[j]); while( vRegSelectedJSON[j] < bloqueRegPag['ini'] ) { j++; } if( iJson == vRegSelectedJSON[j] ) { var indexUI = parseInt(vRegSelectedJSON[j])-(parseInt(pagOnUI)*parseInt(rowsPag)); gvh.pintarFilaTabular( claseM, raizJSON, iJson, indexUI, operacion, true, modo ); j++; } else{ if( vRegSelectedJSON[j] < bloqueRegPag['ini'] ) { j++; continue; } else if( vRegSelectedJSON[j] > bloqueRegPag['fin'] ) { break; } } } } else { // TIPO FICHA //vRegSelect[0] = vRegSelectedJSON[0]; if (modo == 'on') { gvh.setStateReg( raizJSON, operacion, pagOnUI ); gvh.setSelectedReg( raizJSON, pagOnUI, 'add', false ); } } } gvh.showConsoleMsg('endGroup'); }; /** * formOnInsert() * FUNCIÓN: Panel en modo inserción * @access private * @var objElemento: componente botón que se ha pulsado */ gvh.formOnInsert = function(objElemento) { var id = objElemento.attr('id'); var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - formOnInsert()'); gvh.showConsoleMsg('log',' ** gvh_panel.js - formOnInsert() '+id+' '+claseM); var panel; if ( objElemento.is( ":button" ) ) { panel = objElemento.attr('data-gvhPanelOn'); } else { panel = id.substring(2,id.length); } var idPanel = 'P_'+panel; var objPanel = $('#'+idPanel+'[data-gvhClaseManejadora='+claseM+']'); var panelJSON = panel.substring(0,3); var raizJSON = gvh.getRoot(claseM, panelJSON); var numReg = gvh.getNumReg(raizJSON); gvh.blockExit(false, 'I', panel, claseM); // Reiniciamos los arrays JSON gvh.setAllState(raizJSON,'nada'); gvh.setAllSelected(raizJSON,'false'); // Según el tipo de panel, el modo inserción debe ocultar o activar determinados paneles var md = objElemento.attr('data-gvhTipoPanel'); var idPaginador = $('#capa_'+panel+'_paginacion').filter('[data-gvhWindow='+gvh.ambito+']').attr('id'); gvh.showConsoleMsg('log',' ... Tipo de panel: '+md); gvh.showConsoleMsg('log',' ... Se ocultan capas con datos.'); $('div[id*=pag_'+panel+'_]').filter('[data-gvhClaseManejadora='+claseM+']').map(function (){ if ($(this).is(':visible')) { $(this).hide(); } }); switch(md) { case 'maestro': gvh.showConsoleMsg('log',' ... Se oculta el detalle.'); $('div[data-gvhtipopanel=detalle][data-gvhWindow='+gvh.ambito+']').hide(); // Pestañas detalles $('#detalles').filter('[data-gvhWindow='+gvh.ambito+']').hide(); // Paginador gvh.showConsoleMsg('log',' ... Se oculta paginador.'); $('#'+idPaginador).filter('[data-gvhClaseManejadora='+claseM+']').hide(); gvh.showConsoleMsg('log',' ... Se oculta capa bloqueo.'); $('#blockPanel').hide(); break; case 'detalle': gvh.showConsoleMsg('log',' ... Se oculta páginas detalle con datos.'); gvh.showConsoleMsg('log',' ... Se oculta paginador.'); // Paginador $('#'+idPaginador).filter('[id*=Detalle]').hide(); break; case 'simple': gvh.showConsoleMsg('log',' ... Se oculta paginador.'); $('#'+idPaginador).hide(); $('#blockPanel[data-gvhWindow='+gvh.ambito+'][data-gvhClaseManejadora='+claseM+']').hide(); if ($('div[data-gvhpagina=block][data-gvhClaseManejadora='+claseM+'][data-gvhWindow='+gvh.ambito+']').is(':visible')) { gvh.showConsoleMsg('log',' ... Se oculta capa bloqueo.'); $('div[data-gvhpagina=block][data-gvhClaseManejadora='+claseM+'][data-gvhWindow='+gvh.ambito+']').hide(); } // Comprobamos si es un Tabular-Registro, para activar el edi if (($('#'+idPaginador).filter('[id$=___insTR]').length) > 0) { gvh.showConsoleMsg('log',' ... Se muestra panel edi (TR).'); $(this).show(); }; break; default: gvh.showConsoleMsg('error','¡¡¡ Revisar parámetro "data-gvhTipoPanel".!!!'); break; } if (objPanel.attr('data-gvhConSolapas') == 'true') { var solapaActiva = objPanel.attr('data-gvhSolapaActiva'); var idSolapa = "solData__"+panel; if ($('div[id*='+idSolapa+']').length > 0) { gvh.showConsoleMsg('log',' ... Existen solapas.'); var position = $(this).attr('data-gvhPosition'); if (position == solapaActiva) { $(this).show(); gvh.showConsoleMsg('log',' ... Se muestra solapa '+$(this).attr('id')); } else { $(this).hide(); } } } var idPanelIns = 'pag_'+panel+'_ins'; var objPanelins = $('#'+idPanelIns+'[data-gvhClaseManejadora='+claseM+']'); gvh.showConsoleMsg('log',' ... Se muestra el panel de inserción '+idPanelIns); objPanelins.show(); /* if ( objPanel.length > 0 ) { objPanel.attr( 'data-gvhchanged', 'true' ); }*/ gvh.formOnFields(objElemento, 'inserted'); gvh.formOnButtons(objPanel); gvh.showConsoleMsg('endGroup'); } /** * formOnUpdate() * FUNCIÓN: Panel en modo modificación * @access private * @var objElemento: componente botón que se ha pulsado * @var modo: 'on', 'off' */ gvh.formOnUpdate = function(objElemento,modo) { modo = modo || 'on'; gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - formOnUpdate() '+objElemento.attr('id')); var id = objElemento.attr('id'); var panel = objElemento.attr('data-gvhPanelOn'); var idPanel = 'P_'+panel; var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var objPanel = $('#'+idPanel+'[data-gvhClaseManejadora='+claseM+']'); var panelJSON = panel.substring(0,3); var raizJSON = gvh.getRoot(claseM,panelJSON); var numReg = gvh.getNumReg(raizJSON); var pagActive = gvh.getPagActive(raizJSON); var idPaginacion = panel + '_paginacion'; var paginador = $('#'+idPaginacion).attr( 'data-gvhFunction' ); if( paginador == 'pagination' ) { $( '#'+idPaginacion ).twbsPagination( {estado:'modificada'} ); } gvh.blockExit( false, 'W', panel, claseM ); //gvh.formOnFields($('#'+id), 'updated',modo); gvh.formOnFields(objElemento, 'updated',modo); //gvh.formOnButtons($('#P_'+panel)); gvh.formOnButtons(objPanel); gvh.offTooltipBasic(objElemento,'off'); gvh.showConsoleMsg('endGroup'); } /** * formOnDelete() * FUNCIÓN: Panel en modo modificación * @access private * @var objElemento: componente botón que se ha pulsado */ gvh.formOnDelete = function(objElemento) { gvh.showConsoleMsg('beginGroup',' ** gvh_panel.js - formOnDelete() '+objElemento.attr('id')); var id = objElemento.attr('id'); var panel = objElemento.attr('data-gvhPanelOn'); var idPanel = 'P_'+panel; var claseM = objElemento.closest('[data-gvhClaseManejadora]').attr('data-gvhClaseManejadora'); var objPanel = $('#'+idPanel+'[data-gvhClaseManejadora='+claseM+']'); var panelJSON = panel.substring(0,3); var raizJSON = gvh.getRoot(claseM,panelJSON); var numReg = gvh.getNumReg(raizJSON); var pagActive = gvh.getPagActive(raizJSON); var idPaginacion = panel + '_paginacion'; var paginador = $('#'+idPaginacion).attr( 'data-gvhFunction' ); if( paginador == 'pagination' ) { $( '#'+idPaginacion ).twbsPagination( {estado:'modificada'} ); } gvh.blockExit( false, 'W', panel, claseM ); gvh.formOnFields(objElemento, 'deleted'); //gvh.formOnButtons($('#P_'+panel)); gvh.formOnButtons(objPanel); gvh.offTooltipBasic(objElemento,'off'); gvh.showConsoleMsg('endGroup'); } } //gvh.Panel