/* * Codificación UTF-8 * Métodos para tratar la interfaz directamente desde la tpl FUNCIONES: getValue(componente, external=false) setValue(componente, valor, external=false ) getClass(componente, external=false ) addClass(componente, css, external=false ) removeClass(componente, css, external=false ) setVisible(componente, visible, external=false ) getVisible(componente, external=false ) setEnable(componente, enable, external=false ) getEnable(componente, external=false ) * */ if( !gvh.IgepJS ) { gvh.showConsoleMsg( 'log', 'gvh.IgepJS : Inicializando...' ); gvh.IgepJS = function(claseManejadora, panel) { if( !claseManejadora && !panel ) { return; } this.claseManejadora = claseManejadora; this.panel = panel; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - Inicializar => claseManejadora: '+claseManejadora+' panel '+panel ); } /** * _panelVisible: Devuelve si el panel está visible o no * @access private * @let panel: id del panel a consultar */ gvh.IgepJS.prototype._panelVisible = function ( panel ) { gvh.showConsoleMsg( 'log' , ' *** gvh_IgepJS.js - panelVisible() P_' + panel ); if( panel == undefined || !$('#P_'+panel) ) { return false; } return $( '#P_'+panel ).is( ':visible' ); } /** * getValue: Obtiene el valor del campo * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getValue = function( componente, external ) { gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getValue() ' + componente ); external = external || false; let panel = this.panel; if( !this._panelVisible(panel) ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getValue() panel '+panel+' no visible'); // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let objPanel = $('#P_'+panel+'[data-gvhClaseManejadora='+claseManejadora+']'); let modoPanel = gvh.getStatePanel( objPanel ); let regJSON = 0; if( modoPanel == 'I' ) { switch( panelJSON ) { case 'lis': let row = idCampo.split('___')[2].split('_')[1]; regJSON = gvh.indexDataJSON( raizJSON, row, modoPanel ); break; case 'edi': regJSON = gvh.getPagIns( raizJSON ); break; default: regJSON = 0; break; } } else { switch( panelJSON ) { case 'fil': regJSON = 0; break; case 'lis': let row = idCampo.split('___')[2].split('_')[1]; regJSON = gvh.indexDataJSON( raizJSON, row ); break; case 'edi': let pagActual = gvh.getPagActive( raizJSON ); regJSON = pagActual; break; default: regJSON = 0; break; } } if( external ) { regJSON = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let valor = gvh.getValue( raizJSON, componente, regJSON, external ); gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getValue() '+componente+' valor: ' + valor ); return valor; } /** * setValue: Asigna valor a un campo * @access public * @let componente: Nombre del campo * @let valor: Valor a asignar al componente * @let external: [true / false] */ gvh.IgepJS.prototype.setValue = function( componente, valor, external ) { if ((external.length == 0)) { external = false; } let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr(0,3); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } gvh.setValue( raizJSON, componente, iter, valor, external ); let plugin = gvh.getPlugin( raizJSON, componente, iter, external ); switch( plugin ) { case 'cwcampotexto': var inputField = $('input[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); inputField.val(valor); inputField.attr('value',valor); inputField.attr('title',valor); break; case 'cwrichareatexto': var inputField = $('textarea[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); $('#editor_'+idCampo).html(valor); inputField.val(valor); break; case 'cwareatexto': var inputField = $('textarea[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); inputField.val(valor); break; case 'cwlista': case 'cwlista_select2': var inputField = $('select[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); var dependencia = gvh.isDependenceList(raizJSON,componente,iter); if ((dependencia != undefined) && (dependencia != 'NO')) // es una lista dependiente { var listOptions = jsonReg[componente]['lista']; if (listOptions.length > 0) { if (plugin == 'cwlista') gvh.addList(inputField, listOptions, valor); else gvh.addListSelect2(inputField, listOptions, valor); } } else { var jsonListaField = gvh.getFieldList(raizJSON,componente,false,iter); var idCampo = inputField.attr('id'); $('#'+idCampo+' option:selected').attr('selected',false); $('#'+idCampo+' option[value="'+valor+'"]').prop("selected", true); $('#'+idCampo+' option[value="'+valor+'"]').attr("selected", true); } // Al paginar podemos pasar de la última página que no sea completa a una página completa, hay que volver a rellenar los valores (option) de la lista if (panel == 'lis') { var listOptions = ''; if (inputField.length == 0) { if ((dependencia != undefined) && (dependencia != 'NO')) { // Si la lista es dependiente, las opciones de la lista están en el campo listOptions = jsonReg[componente]['lista']; } else { // Si la lista no es dependiente, las opciones están en la zona común listOptions = jsonListaField[componente]; } if ((listOptions != '') && (listOptions.length > 0)) { if (plugin == 'cwlista') gvh.addList(inputField, listOptions, valor); else gvh.addListSelect2(inputField, listOptions, valor); } } else { var dependencia = jsonReg[componente]['dependence']; if ((dependencia != undefined) && (dependencia != 'NO')) { //Hay dependencia listOptions = jsonReg[field]['lista']; if (listOptions.length > 0) { if (plugin == 'cwlista') gvh.addList(inputField, listOptions, valor); else gvh.addListSelect2(inputField, listOptions, valor); } } else { $('#'+idCampo+' option[value="'+valor+'"]').prop("selected", true); } } } break; case 'cwbotontooltip': break; case 'cwcheckbox': var inputField = $('input[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); var valor = jsonReg[field]['checked']; if ((valor == 'undefined') || (valor == 'false')) { inputField.prop('checked',false); } else { inputField.prop('checked',true); } break; case 'cwimagen': break; case 'cwinformation': // Botón tooltip con información var button = $('button[id*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); button.attr('data-content', valor); var cssField = button.attr('class'); if (cssField != css) { button.removeClass(); button.addClass(css); } if ((color != '') && (color != undefined)) { button.addClass(color); } // icono del botón var iconJSON = jsonReg[componente]['icon']; if (iconJSON == 'undefined') iconJSON = ''; var idIconButton = 'iconIncam___'+componente+'___'+sufijo; iconButton = $('#'+idIconButton).filter('[data-gvhClaseManejadora='+claseManejadora+']'); iconButton.removeClass(); iconButton.addClass(iconJSON); break; case 'cwlabel icon': // Label que solamente es un icono var inputField = $('span[id*='+idIcono+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); inputField.removeClass(); inputField.addClass(valor); break; case 'cwlabel': var inputField = $('label[id*='+idCampo+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); if (inputField.length > 0) { inputField.html(valor); inputField.attr('value',valor); } break; case 'cwlistaradio': // RADIOBUTTON var radio = $('input:radio[name*='+componente+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); radio.filter('[value='+valor+']').prop('checked',true); break; default: break; } gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setValue() '+componente+' valor: '+valor ); } /** * getClass: Obtiene el class del campo indicado * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getClass = function( componente, external ) { if ((external.length == 0)) { external = false; } let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let css = gvh.getClassField( raizJSON, componente, iter, external ) gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getClass() ' + css ); return css; } /** * addClass: Modifica el class de un campo * @access public * @let componente: Nombre del campo * @let css: estilo css a añadir * @let external: [true / false] */ gvh.IgepJS.prototype.addClass = function( componente, css, external ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - addClass() '+css); if ((external.length == 0)) { external = false; } let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { $('#'+idComp).addClass( css ); let cssComp = $('#'+idComp).attr('class'); gvh.setClassField( raizJSON, componente, iter, cssComp, external ); } } /** * removeClass: Elimina el css indicado de un campo * @access public * @let componente: Nombre del campo * @let css: estilo css que se ha de eliminar * @let external: [true / false] */ gvh.IgepJS.prototype.removeClass = function( componente, css, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - removeClass() ' + css ); let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { $('#'+idComp).removeClass( css ); cssComp = $('#'+idComp).attr('class'); gvh.setClassField(raizJSON, componente, iter, cssComp, external ); } } /** * setVisible: Mostrar/ocultar un campo * @access public * @let componente: Nombre del campo * @let visible: [true / false] * @let external: [true / false] */ gvh.IgepJS.prototype.setVisible = function( componente, visible, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setVisible() ' + visible ); let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { if( visible ) { if( !$('#IGEPVisible'+idComp).is(':visible') ) { $('#IGEPVisible'+idComp).show(); } } else { $('#IGEPVisible'+idComp).hide(); } gvh.setVisibleField( raizJSON, componente, iter, visible, external ); } } /** * getVisible: Obtener si un campo es visible o no * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getVisible = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getVisible() ' + componente ); let panel = this.panel; let visible = ''; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if (idComp != '') { visible = gvh.getVisibleField( raizJSON, componente, iter, external ); } return visible; } /** * setEnable: Mostrar/ocultar un campo * @access public * @let componente: Nombre del campo * @let enable: [true / false / nuevo] * @let external: [true / false] */ gvh.IgepJS.prototype.setEnable = function( componente, enable, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setEnable() ' + enable ); let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if (idComp != '') { let plugin = gvh.getPlugin( raizJSON, componente, iter, external ); if( plugin == 'cwbotontooltip' || plugin == 'cwboton' ) { this.setBtnDisabled( componente, enable, external ); } else { this.setEditable( componente, enable, external ); } } } /** * getEnable: Obtener si un campo es visible o no * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getEnable = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getEnable() ' + componente ); let panel = this.panel; let enable = ''; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { let plugin = gvh.getPlugin( raizJSON, componente, iter, external ); if( plugin == 'cwbotontooltip' || plugin == 'cwboton' ) { enable = this.setBtnDisabled(componente, enable, external); } else { enable = this.setEditable(componente, enable, external); } } return enable; } /** * setEditable: Marca un campo como editable * @access public * @let componente: Nombre del campo * @let editable: [true / false / nuevo] * @let external: [true / false] */ gvh.IgepJS.prototype.setEditable = function( componente, editable, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setEditable() ' + componente ); let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { if (editable == true) { $('#'+idComp).prop('readonly',false); $('#'+idComp).addClass('edit'); $('#'+idComp).removeClass('noEdit'); $('#'+idComp).prop('disabled',false); } else if (editable == false) { $('#'+idComp).prop('readonly',true); $('#'+idComp).removeClass('edit'); $('#'+idComp).addClass('noEdit'); $('#'+idComp).prop('disabled',true); } else { $('#'+idComp).prop('readonly',true); $('#'+idComp).removeClass('edit'); $('#'+idComp).removeClass('noEdit'); $('#'+idComp).addClass('new'); $('#'+idComp).prop('disabled',true); } css = $('#'+idComp).attr('class'); gvh.setStateField( raizJSON, componente, iter, editable, external ); gvh.setClassField( raizJSON, componente, iter, css, external ); } } /** * getEditable: Saber si un campo es editable o no * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getEditable = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getEditable() ' + componente ); let panel = this.panel; let editable = ''; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { editable = gvh.getStateField( raizJSON,componente, iter, external ); } return editable; } /** * setBtnDisabled: Actilet un campo como editable * @access public * @let componente: Nombre del campo * @let disabled: [true / false] * @let external: [true / false] */ gvh.IgepJS.prototype.setBtnDisabled = function( componente, disabled, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setBtnDisabled() '+ componente ); let panel = this.panel; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { $( '#'+idComp ).prop( 'disabled', disabled ); gvh.setStateField( raizJSON, componente, iter, disabled, external ); } } /** * getBtnDisabled: Saber si un campo es editable o no * @access public * @let componente: Nombre del campo * @let external: [true / false] */ gvh.IgepJS.prototype.getBtnDisabled = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getBtnDisabled() ' + componente ); let panel = this.panel; let editable = ''; let disabled; if( !this._panelVisible(panel) ) { // REVIEW: ¿Seguro que sería necesario salir aquí? ¿Qué pasa con el panel entonces? if( panel == undefined ) { return; } } let panelJSON = panel.substr( 0, 3 ); let claseManejadora = this.claseManejadora; let raizJSON = gvh.getRoot( claseManejadora, panelJSON ); let iter = 0; if( external ) { iter = gvh.indexDataJSON( raizJSON, gvh.getPagActive(raizJSON) ); } let idComp = gvh.getIdField( raizJSON, componente, iter, external ); if( idComp != '' ) { disabled = gvh.getStateField( raizJSON, componente, iter, external ); } return disabled; } }