/* * Codificación UTF-8 * Métodos para tratar la interfaz directamente desde la tpl FUNCIONES: getStatePanel() _panelVisible() getRowComponent( componente ) getIdComponent( componente, external, row ) getValue(componente, external=false) setValue(componente, valor, external=false ) getClass(componente, external=false ) addClassComponent(componente, css, external=false ) ! addClass(componente, css, external=false ) // deprecated removeClassComponent(componente, css, external=false ) ! removeClass(componente, css, external=false ) // deprecated getVisible(componente, external=false ) setVisible(componente, visible, external=false ) ! setBtnVisible( componente, visible, external ) // deprecated getEnable(componente, external=false ) ! getEditable( componente, external ) // deprecated ! getBtnDisabled( componente, external ) // deprecated setEnable(componente, enable, external=false ) ! setEditable( componente, editable, external ) // deprecated ! setBtnDisabled( componente, disabled, external ) // deprecated * */ if( !gvh.IgepJS ) { gvh.showConsoleMsg( 'log', 'gvh.IgepJS : Inicializando...' ); gvh.IgepJS = function(claseM, panel) { if( !claseM && !panel ) { return; } this.claseM = claseM; this.panel = panel; this.panelJSON = this.panel.substr( 0, 3 ); this.raizJSON = gvh.getRoot( claseM, this.panelJSON ); this.objPanel = $('#P_'+this.panel+'[data-gvhClaseManejadora='+this.claseM+']'); gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - Inicializar => claseManejadora: '+this.claseM+' panel '+this.panel ); } /** * getStatePanel: Obtenemos el estado del panel ('R', 'W', 'I') * * @access public * @return string Estado del panel ('R', 'W', 'I'). */ gvh.IgepJS.prototype.getStatePanel = function() { return this.objPanel.attr('data-gvhEstadoPanel'); } /** * _panelVisible: Devuelve si el panel está visible o no * * @access private * @param panel: id del panel a consultar */ gvh.IgepJS.prototype._panelVisible = function() { //gvh.showConsoleMsg( 'log' , ' *** gvh_IgepJS.js - panelVisible() P_' + this.panel ); if( this.objPanel == undefined || this.objPanel.length == 0 ) { return false; } return this.objPanel.is( ':visible' ); } /** * getRowComponent: Obtiene el row del componente indicado * * @access public * @param componente: Nombre del campo * @return integer */ gvh.IgepJS.prototype.getRowComponent = function( componente ) { var modoPanel = this.getStatePanel(); var row = 0; if (modoPanel == 'I') { row = gvh.getPagIns(this.raizJSON); } else { if (this.panelJSON == 'edi') row = gvh.getPagActive(this.raizJSON); else { var rowsPag = parseInt(this.raizJSON['panel']['rowsPag']); var pagAct = parseInt(this.raizJSON['panel']['pagActive']); row = parseInt(pagAct*rowsPag) + parseInt(row); } } // TODO : Revisar 'getPagIns' // REVIEW rowComponent = gvh.indexDataJSON( this.raizJSON, row, modoPanel ); gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getRowComponent() ' + componente +' row '+rowComponent); return rowComponent; } /** * getIdComponent: Obtiene el id del componente indicado * * @access public * @param {string} componente - Nombre del campo * @param {boolean} external - [true / false] * @param {integer} [row] - Fila del componente */ gvh.IgepJS.prototype.getIdComponent = function( componente, external, row, rowIU) { external = external || false; rowIU = rowIU || false; var modoPanel = this.getStatePanel(); var panelJSON = this.panelJSON; if ((row === undefined) && (rowIU == false)){ row = this.getRowComponent( componente, true ); } else { if (panelJSON != 'lis') row = 0; } gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getIdComponent() ' + componente ); // prefijo según modo panel var prefijo; switch(panelJSON) { case 'fil': prefijo = ''; break; case 'lis': prefijo = (modoPanel == 'I' ? 'ins___' : 'cam___'); break; case 'edi' : prefijo = (modoPanel == 'I' ? 'ins___' : 'cam___'); if (rowIU) { row = 0; } break; } var idCampo = componente; if( !external ) { idCampo = prefijo+componente+'___'+this.panel+'_'+row; } return idCampo; } /** * getValue: Obtiene el valor del campo * * @access public * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getValue = function( componente, external ) { gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getValue() ' + componente ); external = external || false; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getValue() panel '+this.panel+' no visible'); } var regJSON = this.getRowComponent( componente ); var valor = gvh.getValue( this.raizJSON, componente, regJSON, external ); gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getValue() '+componente+' valor: ' + valor ); return valor; } /** * setValue: Asigna valor a un campo * * @access public * @param componente: Nombre del campo * @let valor: Valor a asignar al componente * @param external: [true / false] */ gvh.IgepJS.prototype.setValue = function( componente, valor, external ) { external = external || false; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - setValue() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); var inputField = $('#'+idComp+'[data-gvhClaseManejadora='+this.claseM+']'); gvh.setValue( this.raizJSON, componente, regJSON, valor, external ); var plugin = gvh.getPlugin( this.raizJSON, componente, regJSON, external ); switch( plugin ) { case 'cwcampotexto': inputField.val(valor); inputField.attr('value',valor); inputField.attr('title',valor); break; case 'cwrichareatexto': $('#editor_'+idComp).html(valor); inputField.val(valor); break; case 'cwareatexto': inputField.val(valor); break; case 'cwlista': case 'cwlista_select2': var dependencia = gvh.isDependenceList(this.raizJSON,componente,regJSON); 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(this.raizJSON,componente,false,regJSON); $('#'+idComp+' option:selected').attr('selected',false); $('#'+idComp+' option[value="'+valor+'"]').prop("selected", true); $('#'+idComp+' 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 (this.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 { $('#'+idComp+' option[value="'+valor+'"]').prop("selected", true); } } } break; case 'cwbotontooltip': break; case 'cwcheckbox': 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 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='+this.claseM+']'); iconButton.removeClass(); iconButton.addClass(iconJSON); break; case 'cwlabel icon': // Label que solamente es un icono inputField = $('span[id*='+idIcono+']').filter('[data-gvhClaseManejadora='+this.claseM+']'); inputField.removeClass(); inputField.addClass(valor); break; case 'cwlabel': if (inputField.length > 0) { inputField.html(valor); inputField.attr('value',valor); } break; case 'cwlistaradio': // RADIOBUTTON var radio = $('input:radio[name*='+componente+']').filter('[data-gvhClaseManejadora='+this.claseM+']'); 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 * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getClass = function( componente, external ) { external = external || false; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getClass() panel '+this.panel+' no visible'); } var regJSON = this.getRowComponent( componente ); var css = gvh.getClassField( this.raizJSON, componente, regJSON, external ) gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getClass() ' + css ); return css; } /** * addClassComponent: Modifica el class de un componente * * @access public * @param componente: Nombre del campo * @param css: estilo css a añadir * @param external: [true / false] */ gvh.IgepJS.prototype.addClassComponent = function( componente, css, external ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - addClassComponent() '+css); external = external || false; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - addClassComponent() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); if( idComp != '' ) { $( '#'+idComp ).addClass( css ); var cssComp = $('#'+idComp).attr('class'); gvh.setClassField(this.raizJSON, componente, regJSON, cssComp, external ); } } } /** * addClass: Modifica el class de un campo * * @deprecated * @access public * @param componente: Nombre del campo * @param css: estilo css a añadir * @param external: [true / false] */ gvh.IgepJS.prototype.addClass = function( componente, css, external ) { return this.addClassComponent( componente, css, external ); } /** * removeClassComponent: Modifica el class de un componente * * @access public * @param componente: Nombre del campo * @param css: estilo css a añadir * @param external: [true / false] */ gvh.IgepJS.prototype.removeClassComponent = function( componente, css, external ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - removeClassComponent() '+css); external = external || false; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - removeClassComponent() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); if( idComp != '' ) { $('#'+idComp).removeClass( css ); var cssComp = $('#'+idComp).attr('class'); gvh.setClassField(this.raizJSON, componente, regJSON, cssComp, external ); } } } /** * removeClass: Elimina el css indicado de un campo * * @deprecated * @access public * @param componente: Nombre del campo * @param css: estilo css que se ha de eliminar * @param external: [true / false] */ gvh.IgepJS.prototype.removeClass = function( componente, css, external ) { return this.removeClassComponent( componente, css, external ); } /** * getVisible: Obtener si un campo es visible o no * * @access public * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getVisible = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getVisible() ' + componente ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getVisible() panel '+this.panel+' no visible'); } var visible = ''; var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON ); if( idComp != '' ) { visible = gvh.getVisibleField( this.raizJSON, componente, regJSON, external ); } return visible; } /** * setVisible: Mostrar/ocultar un campo * * @access public * @param componente: Nombre del campo * @param visible: [true / false] * @param external: [true / false] */ gvh.IgepJS.prototype.setVisible = function( componente, visible, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setVisible() ' + visible ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - setVisible() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); if( idComp != '' ) { var igepVisible = $('#IGEPVisible'+idComp); if( visible ) { if( !igepVisible.is(':visible') ) { igepVisible.show(); } } else { igepVisible.hide(); } gvh.setVisibleField( this.raizJSON, componente, regJSON, visible, external ); } } } /** * setBtnVisible: Establece un campo como visible/invisible * * @deprecated * @access public * @param componente: Nombre del campo * @param visible: [true / false] * @param external: [true / false] */ gvh.IgepJS.prototype.setBtnVisible = function( componente, visible, external ) { return this.setVisible( componente, visible, external ); } /** * getEnable: Obtener si un campo está habilitado o no * * @access public * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getEnable = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getEnable() ' + componente ); var enable = ''; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getEnable() panel '+this.panel+' no visible'); } var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON ); if( idComp != '' ) { enable = gvh.getStateField( this.raizJSON, componente, regJSON, external ); } return enable; } /** * getEditable: Saber si un campo es editable o no * @deprecated * @access public * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getEditable = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getEditable() ' + componente ); var editable = ''; if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getEditable() panel '+this.panel+' no visible'); } var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON ); if( idComp != '' ) { editable = gvh.getStateField( this.raizJSON,componente, regJSON, external ); } return editable; } /** * getBtnDisabled: Saber si un botón es editable o no * * @deprecated * @access public * @param componente: Nombre del campo * @param external: [true / false] */ gvh.IgepJS.prototype.getBtnDisabled = function( componente, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - getBtnDisabled() ' + componente ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - getBtnDisabled() panel '+this.panel+' no visible'); } var disabled; var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON ); if( idComp != '' ) { disabled = !gvh.getStateField( this.raizJSON, componente, regJSON, external ); } return disabled; } /** * setEnable: Habilitar/deshabilitar un campo * * @access public * @param componente: Nombre del campo * @param enable: [true / false / nuevo] * @param external: [true / false] */ gvh.IgepJS.prototype.setEnable = function( componente, enable, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setEnable() ' + enable ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - setEnable() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); if( idComp != '' ) { var plugin = gvh.getPlugin( this.raizJSON, componente, regJSON, external ); if( plugin == 'cwbotontooltip' || plugin == 'cwboton' ) { $( '#'+idComp ).prop( 'disabled', !enable ); gvh.setStateField( this.raizJSON, componente, regJSON, enable, external ); } else { if (enable == true) { $('#'+idComp).prop('readonly',false); $('#'+idComp).addClass('edit'); $('#'+idComp).removeClass('noEdit'); $('#'+idComp).prop('disabled',false); } else if (enable == 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( this.raizJSON, componente, regJSON, enable, external ); gvh.setClassField( this.raizJSON, componente, regJSON, css, external ); } } } } /** * setEditable: Marca un campo como editable * @deprecated * @access public * @param componente: Nombre del campo * @param editable: [true / false / nuevo] * @param external: [true / false] */ gvh.IgepJS.prototype.setEditable = function( componente, editable, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setEditable() ' + componente ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - setEditable() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); 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( this.raizJSON, componente, regJSON, editable, external ); gvh.setClassField( this.raizJSON, componente, regJSON, css, external ); } } } /** * setBtnDisabled: Activar un campo como editable * @deprecated * @access public * @param componente: Nombre del campo * @param disabled: [true / false] * @param external: [true / false] */ gvh.IgepJS.prototype.setBtnDisabled = function( componente, disabled, external ) { external = external || false; gvh.showConsoleMsg( 'log', ' *** gvh_IgepJS.js - setBtnDisabled() '+ componente ); if( !this._panelVisible() ) { gvh.showConsoleMsg('log',' *** gvh_IgepJS.js - setBtnDisabled() panel '+this.panel+' no visible'); } else { var regJSON = this.getRowComponent( componente ); var idComp = this.getIdComponent( componente, external, regJSON, true ); if( idComp != '' ) { $( '#'+idComp ).prop( 'disabled', disabled ); gvh.setStateField( this.raizJSON, componente, regJSON, !disabled, external ); } } } } // !gvh.IgepJS