/* Codificación UTF-8 */ /* FUNCIONES: * - formOnFields(id, panel, operacion, css, modo) * - formOnButtons(id,panel,modo) * - formOnInsert(id, panel, patron) * - formOnDeleteTable(id, panel, sufijos, checked) * - formOnDeleteReg(id, panel, pag) * - formOnUpdateReg(id, panel, sufijo) * - offTooltipBasic(id, panel, modo) * - cleanForm(id, panel) * - formStateFieldsTable(id, panel, sufijos, checked, modo, maestro) * - updateEvent(id, actualizaA, panel, claseM, formulario) * - fieldsRequired(id, panel, estadoPanel) * - changeStatePanel(i, panel) * - changeField(id, panel, estado) */ var gvh = gvh || {}; +function($) { 'use strict'; /* * formOnFields() * FUNCIÓN: Activar campos * defaults: id - del BOTÓN para el que se van a activar los campos * panel - panel donde se encuentran los campos * operacion - operación que se va a realizar 'insertar', 'modificar', 'eliminar' * css - class * modo - 'on' / 'off' */ $.fn.formOnFields = function(options) { var defaults = $.extend({ id: '', panel: '', operacion: '', css: '', modo: 'on' },options); console.log(' ** gvh_funcionesPaneles.js - formOnFields()'); if (defaults.panel != '') { var prefijo = ''; var state = ''; var capaPanel = $('#P_'+defaults.panel+'[data-gvhWindow='+ambito+']'); var claseManejadora = capaPanel.attr('data-gvhClaseManejadora'); switch(defaults.operacion) { case 'insert': prefijo = 'ins__'; state = '[data-gvhstate=new],[data-gvhstate=edit]'; capaPanel.attr('data-gvhestadopanel','I'); $('#'+ambito).attr('data-gvhestadopanel','I'); var panelIns = $('#pag_'+defaults.panel+'_ins[data-gvhWindow='+ambito+']'); $('#pag_'+defaults.panel+'_ins[data-gvhWindow='+ambito+'] span').map(function() { if ($('#IGEPVisible'+$(this).attr('id')).is(':visible')) { $(this).show(); } else if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle')) { $(this).show(); } }); break; case 'update': prefijo = 'cam__'; state = '[data-gvhstate=edit]'; capaPanel.attr('data-gvhestadopanel','W'); $('#'+ambito).attr('data-gvhestadopanel','W'); break; default: prefijo = 'cam__'; capaPanel.attr('data-gvhestadopanel','R'); $('#'+ambito).attr('data-gvhestadopanel','R'); break; } var panelJSON = defaults.panel.substring(0,3); var raizJSON = gvh.getRoot(claseManejadora,panelJSON); var modoPropiedad = false; if (defaults.modo == 'off') modoPropiedad = true; var campo = $(':input[data-gvhWindow='+ambito+']').filter('[data-gvhposition=panel]').filter('[data-gvhpanelon='+defaults.panel+']').filter('[id^='+prefijo+'],[id^=c'+prefijo+']'); //var iter = raizJSON['panel']['pagActive']; var iter = gvh.getPagActive(raizJSON); if (gvh.getExistReg(raizJSON,iter) != undefined) { console.log(raizJSON); campo.each(function() { var id = $(this).attr('id'); var vId = id.split('___'); var idCampo = vId[1]; if (panelJSON == 'lis') { var row = vId[2].split('_')[1]; iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (gvh.getExistField(raizJSON,idCampo,iter) != undefined) //if (raizJSON['data'][iter]['gvhJS_fields'][idCampo] != undefined) { var state = gvh.getStateField(raizJSON,idCampo,iter); //var state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; if (state != false) { $(this).prop('readonly',modoPropiedad); $(this).prop('disabled',modoPropiedad); $(this).addClass(defaults.css); if (defaults.modo == 'on') { var tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } } else { console.log('¡¡¡'+idCampo+' no está en "gvhJS_fields" (datosJSON) !!!'); } }); // campo var lista = $('select[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter('[id^='+prefijo+'],[id^=c'+prefijo+']'); lista.map(function() { var id = $(this).attr('id'); var idCampo = id.split('___')[1]; if (panelJSON == 'lis') { var row = idCampo[2].split('_')[1]; iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } var state = gvh.getStateField(raizJSON,idCampo,iter); //var state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; if (state != false) { $(this).prop('readonly',modoPropiedad); $(this).prop('disabled',modoPropiedad); $(this).addClass(defaults.css); if (defaults.modo == 'on') { var tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); // lista var radio = $('input:radio[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter('[id^='+prefijo+']'); radio.map(function() { var id = $(this).attr('id'); var name = $(this).attr('name'); var idCampo = name.split('___')[1]; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } var state = gvh.getStateField(raizJSON,idCampo,iter); //var state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; if (state != false) { $('input:radio[name='+name+']').prop('readonly',modoPropiedad); $('input:radio[name='+name+']').prop('disabled',modoPropiedad); $('input:radio[name='+name+']').addClass(defaults.css); if (defaults.modo == 'on') { var tabindex = $('input:radio[name='+name+']').attr('tabindex'); if (tabindex < 0) tabindex = $('input:radio[name='+name+']').attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); // radio $('span[id^=file_][data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).map(function () { var id = $(this).attr('id'); var vId = id.split('file_'); var idCampo = vId[1].split('___')[1]; if (panelJSON == 'lis') { var row = idCampo[2].split('_')[1]; iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } var state = gvh.getStateField(raizJSON,idCampo,iter); //var state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; if (state != false) { $(this).removeClass('disabled'); $('span[id*='+vId[1]+']').filter('[data-gvhFunction=fileUp]').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).map(function () { $(this).removeClass('disabled'); }); if (defaults.modo == 'on') { var tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); // span $('textarea[data-gvhWindow='+ambito+'][data-gvhpanelon='+defaults.panel+']').each(function (index) { var id = $(this).attr('id'); if (id.substring(0,6) == "editor_") { var idTA = "editor_"+id; } var idTA = id; var length_idTA = $('#'+idTA).length; if (length_idTA > 0) { var idCampo = id.split('___')[1]; var iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { var row = idCampo[2].split('_')[1]; iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } var state = gvh.getStateField(raizJSON,idCampo,iter); //var state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; /*if ( ($('textarea[id*='+idTA+']').hasClass('noEdit') == true) || ($('textarea[id*='+idTA+']').hasClass('tableNoEdit') == true) ) { // $("div[id*='editor_"+idTA+"']").attr('contenteditable','false'); $("div[id*='"+idTA+"']").attr('contenteditable','false'); } else { //$("div[id*='editor_"+idTA+"']").attr('contenteditable','true'); $("div[id*='"+idTA+"']").attr('contenteditable','true'); } if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); }*/ if (state != false) { $("div[id*='"+idTA+"']").attr('contenteditable','true'); } else { $("div[id*='"+idTA+"']").attr('contenteditable','false'); } if (defaults.modo == 'on') { var tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); //textarea // Botones tooltip del panel var botonTooltip = $('button[data-gvhWindow='+ambito+'][id*=calD_'+prefijo+'][data-gvhposition=panel]'); $('button[data-gvhWindow='+ambito+'][data-gvhposition=panel][data-gvhpanelon='+defaults.panel+']').map(function() { var id = $(this).attr('id'); var idCampo = id.split('___')[1]; var iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { var row = idCampo[2].split('_')[1]; iter = gvh.indexDataJSON(raizJSON,row); //var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (gvh.getExistField(raizJSON,idCampo,iter) != undefined) //if (raizJSON['data'][iter]['gvhJS_fields'][idCampo].length > 0) { //state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; var state = gvh.getStateReg(raizJSON,iter,'state'); if (state != false) { if ($(this).attr('data-gvhpanelon') == defaults.panel) { if (defaults.operacion == 'insert') { $(this).filter('[data-gvhstate=edit],[data-gvhstate=new]').removeClass('disabled'); $(this).show(); } else { if ($(this).is(':visible')) { $(this).filter('[data-gvhstate=edit]').removeClass('disabled'); } } if (defaults.modo == 'on') { var tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } } } }); // botón tooltip } else { console.log('¡¡¡El registro '+iter+' no existe en ["data"] !!!'); } } }; /* * formOnButtons() * FUNCIÓN: Activar botones de la barra inferior * defaults: id - del BOTÓN para el que se van a activar los campos * panel - panel donde se encuentran los campos * modo - estado del panel 'I' inserción - 'W' modificación - 'R' lectura */ $.fn.formOnButtons = function( options ) { var defaults = $.extend( { id: '', panel: '', modo: 'W' }, options ); console.log( ' ** gvh_funcionesPaneles.js - formOnButtons() '+defaults.id ); $( 'button[data-gvhWindow='+ambito+'][id*=bttlTreeSelector_]' ) .filter( '[data-gvhstate=edit][data-gvhposition=panel]' ) .removeClass( 'disabled' ); var panelOn = defaults.panel; if( panelOn == '' ) { console.log( '¡¡¡Falta parámetro "data-gvhPanelOn" en los botones del panel '+defaults.id+'!!!' ); return; } var boton = $( 'button[data-gvhWindow='+ambito+'][id*=btn_][data-gvhpanelon='+panelOn+']' ); boton.each( function() { if( $(this).is( ':hidden' ) ) { $(this).show(); } } ); } /************************************************************************************************************************ * MÉTODOS PARA BOTÓN TOOLTIP INSERTAR **************************************************************************************************************************/ /* * formOnInsert() * FUNCIÓN: inserción en patrón ficha simple * defaults: id - del BOTÓN * panel - panel donde se encuentran los campos * patron - tipo de panel */ $.fn.formOnInsert = function(options) { var defaults = $.extend({ id: '', panel: '', patron: 'simple', claseM: '' },options); console.log(' ** gvh_funcionesPaneles.js - formOnInsert() '); console.log(defaults); var idPanel = 'P_'+defaults.panel; var divPanel = $('#P_'+defaults.panel).filter('[data-gvhWindow='+ambito+']'); if (defaults.panel != 'fil') gvh.blockExit(false,'I',defaults.panel); $('#'+ambito).attr('data-gvhestadopanel','I'); var modoPanel = 'I'; var claseManejadora = defaults.claseM; var panelJSON = defaults.panel.substring(0,3); console.log( datosJSON ); var raizJSON = datosJSON[claseManejadora][panelJSON]; var numReg = raizJSON['panel']['numReg']; $(this).setAllState_gvhJSON({ state: 'nada', claseM: claseManejadora, panel: panelJSON, ini: 0, fin: numReg }); $(this).setAllSelected_gvhJSON({ selected: 'false', claseM: claseManejadora, panel: panelJSON, ini: 0, fin: numReg }); if (panelJSON == 'edi') { var reg = raizJSON['panel']['pagInsercion']; raizJSON['data'][reg]['gvhJS_state'] = 'insertada'; raizJSON['dataPerform']['data'][reg]['gvhJS_state'] = 'insertada'; gvh.setStateReg(raizJSON,'inserted',reg,'add'); } var md = $('#'+defaults.id).attr('data-gvhMD'); if ((md != undefined) && (md != '')) { if (md == 'maestro') { console.log(' ... Se oculta el detalle.'); $('div[id$=Detalle][data-gvhWindow='+ambito+']').filter('[id^=P_]').hide(); $('div[id^=pag_'+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[data-gvhmd=maestro]').hide(); $('div[id=detalles][data-gvhWindow='+ambito+']').hide(); } else if (md == 'detalle') { console.log(' ... Se oculta páginas detalle con datos.'); $('div[id^=pag_][data-gvhWindow='+ambito+']').filter('[id*=Detalle]').hide(); } else { console.log('¡¡¡ Revisar parámetro "data-gvhMD".!!!'); } } else { $('div[id^=pag_][data-gvhWindow='+ambito+']').each(function() { $(this).hide(); $('div[data-gvhpagina=block][data-gvhWindow='+ambito+']').hide(); }); if (($('div[id^=pag_][data-gvhWindow='+ambito+']').filter('[id$=___insTR]').length) > 0) { console.log(' ... Se muestra panel edi (TR).'); $('div[id^=pag_][data-gvhWindow='+ambito+']').filter('[id$=___insTR]').show(); } } var idPanelIns = 'pag_'+defaults.panel+'_ins'; var tr = $('#'+defaults.id).attr('data-gvhpatronpanel'); var panelIns = $('#'+idPanelIns).filter('[data-gvhWindow='+ambito+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); if (panelIns.is(':hidden')) { var panelVisible = $('div[id*=pag_'+defaults.panel+'_0]').filter('[data-gvhWindow='+ambito+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); if ((panelVisible.length > 0) && (panelVisible.is(':visible'))) { panelVisible.hide(); } var panelBlock = $('div[data-gvhpagina=block][data-gvhWindow='+ambito+']'); if ((panelBlock.length > 0) && (panelBlock.is(':visible'))) { panelBlock.hide(); } var panelPaginacion = $('div[id*=capa_'+defaults.panel+'_paginacion]').filter('[data-gvhWindow='+ambito+']'); if ((panelPaginacion.length > 0) && (panelPaginacion.is(':visible'))) { panelPaginacion.hide(); } if ((tr != 'TR') && ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle'))) { $('#'+defaults.panel+'_ins tbody tr').map(function () { var trClass = $(this).attr('class'); if (trClass != 'tabularHead') { $(this).removeClass(trClass); } }); }; console.log(' ... Se muestra panel '+idPanelIns); panelIns.show(); var idSolapa = "solData__"+defaults.panel; console.log(' ... Mostrar solapas '+idSolapa); $('div[id*='+idSolapa+']').each(function() { if ($(this).attr('data-gvhWindow') == ambito) { console.log(' ... Se muestra solapa '+$(this).attr('id')); $(this).show(); } }); } // Activamos los campos para poder insertar $('#'+idPanel).formOnFields({ id: idPanel, panel: defaults.panel, operacion: 'insert', css: 'new' }); $('#'+idPanel).formOnButtons({ id: idPanel, panel: defaults.panel, modo: 'I' }); if (defaults.id != '') { $('#'+defaults.id).offTooltipBasic({ id: defaults.id, panel: defaults.panel, modo: 'off' }); } if ((defaults.panel == 'edi') && (defaults.panel == 'ediDetalle')) { raizJSON = datosJSON[defaults.claseM]['edi']; // Sufijo para los campos de la página de inserción idPanelIns = panelIns.attr('id'); sufijo = idPanelIns.substring(4,idPanelIns.length); // Marcar el campo oculto 'est_' con el valor 'insertada' idEstado = 'est_'+sufijo; $('#'+idEstado).val("insertada"); } var accionActivaP = 'accionActivaP_F_'+panelIns.closest('form').attr('id'); $('#'+accionActivaP).val("insertar"); // DAR FOCO if (divPanel.attr('data-gvhFirstFocus')) { firstFocus = divPanel.attr('data-gvhFirstFocus'); idFirstFocus = 'ins___'+firstFocus+'_'; //cam___eventos___edi_0 sufijo: _edi_0 foco = false; $(':input').filter('[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[data-gvhstate=edit]').filter('[id^=ins_],[id^=cins_]').map(function() { id = $(this).attr('id'); if ((id.indexOf(idFirstFocus) >= 0) && (foco == false)) { $(this).focus(); foco = true; } }) } }; /************************************************************************************************************************ * MÉTODOS PARA BOTÓN TOOLTIP ELIMINAR *************************************************************************************************************************/ /* * formOnDeleteTable() * FUNCIӓN: Marcar los campos para ser eliminados * defaults: formulario: objeto formulario sobre el que se va a trabajar * sufijos: array con todos los sufijos de las filas seleccionadas * panel: lis/lisDetalle * checked: simple/all */ // Cuando es un detalle hay que obtener las claves del maestro $.fn.formOnDeleteTable = function( options ) { var defaults = $.extend( { id: '' , panel: '' , sufijos: [] , checked: 'simple' , claseManejadora: '' }, options ); if( (defaults.sufijos.length == 0) && (defaults.checked != 'simple') ) { gvh.showMessage( 'gvhlang_msj16', 'alert' ); } else { if( defaults.panel != 'fil' ) { gvh.blockExit( false, 'W', defaults.panel ); } var claseM = defaults.claseManejadora; var rowsPag = 0; var numReg = 0; var indiceJSON = 0; var panelJSON = defaults.panel.substring(0,3); var raizJSON = datosJSON[claseM][panelJSON]; var pagActual = datosJSON[claseM][panelJSON]['panel']['pagActive']; if( defaults.checked == 'all' ) { //REVIEW: CHECKBOX //campo = $('input[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[id^=cam_],[id^=ccam_]'); var campo = $( 'input[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']' ).filter( '[id^=cam_]' ); campo.map( function() { campo.prop( 'readonly', true ); campo.removeClass( 'tableEdit' ); campo.removeClass( 'tableNew' ); campo.addClass( 'tableDelete' ); } ); var lista = $( 'select[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']' ).filter( '[id^=cam_]' ); lista.map( function() { lista.prop( 'readonly', true ); lista.removeClass( 'tableEdit' ); lista.removeClass( 'tableNew' ); lista.addClass( 'tableDelete' ); } ); rowsPag = raizJSON['panel']['rowsPag']; numReg = raizJSON['panel']['numReg']; for( i=0; i 0 ) { $('div[data-gvhWindow='+ambito+'][id^=editor_cam_]').filter( '[id*='+defaults.pag+']' ).each( function() { $(this).attr( 'contenteditable', 'false' ); } ); } var accionActivaP = 'accionActivaP_F' + $('#'+defaults.id).closest( 'form' ).attr( 'id' ); $( '#'+accionActivaP ).val( 'borrar' ); $( '#'+defaults.id ).formOnButtons( { id: defaults.id , panel: defaults.panel , modo: 'W' } ); $( '#'+defaults.id ).offTooltipBasic( { id: $( '#'+defaults.id ).attr( 'id' ) , panel: $( '#'+defaults.id ).attr( 'data-gvhPanelOn' ) , modo: 'off' } ); } /************************************************************************************************************************ * MÉTODOS PARA BOTÓN TOOLTIP MODIFICAR *************************************************************************************************************************/ /* * formOnUpdateReg() * FUNCIӓN: Activar los campos del formulario para modificar * defaults: id: * sufijo: sufijo de los id de los campos * panel: edi/ediDetalle */ $.fn.formOnUpdateReg = function( options ) { var defaults = $.extend( { id: '' , panel: '' , sufijo: '' },options); var idFirstFocus = ''; console.log( ' ** gvh_funcionesPaneles.js - formOnUpdateReg() ' ); console.log( defaults ); var claseM = $(this).attr( 'data-gvhClaseManejadora' ); var idPaginacion = defaults.panel + '_paginacion'; var paginador = $('#'+idPaginacion).attr( 'data-gvhFunction' ); if( paginador == 'pagination' ) { $( '#'+idPaginacion ).twbsPagination( {estado:'modificada'} ); } if( defaults.panel != 'fil' ) { gvh.blockExit( false, 'W', defaults.panel ); } var panelJSON = defaults.panel.substring( 0, 3 ); var raizJSON = gvh.getRoot(claseM,panelJSON); var numReg = gvh.getNumReg(raizJSON); var pagActive = gvh.getPagActive(raizJSON); //raizJSON['data'][pagActive]['gvhJS_state'] = 'modificada'; //raizJSON['dataPerform']['data'][pagActive]['gvhJS_state'] = 'modificada'; gvh.setStateReg( raizJSON, 'updated', pagActive, 'add' ); if( $('div[id^=editor_cam_]').length > 0 ) { $('div[id^=editor_cam_]').filter('[id*='+defaults.sufijo+']').each( function() { var idEditor = $(this).attr('id').split('___')[1]; if (gvh.getExistField(raizJSON,idEditor,pagActive) != undefined) //if( raizJSON['data'][pagActive]['gvhJS_fields'][idEditor] != undefined ) { //var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idEditor]['state']; var editable = gvh.getStateField(raizJSON,idEditor,pagActive); if( editable ) { $(this).attr('contenteditable','true'); } } } ); } $('span[id^=file_cam][data-gvhWindow='+ambito+']').filter('[id*='+defaults.sufijo+']').filter( '[data-gvhpanelon='+defaults.panel+']' ).map( function () { var idSpan = $(this).attr('id').split('___')[1]; if (gvh.getExistField(raizJSON,idSpan,pagActive) != undefined) //if (raizJSON['data'][pagActive]['gvhJS_fields'][idSpan] != undefined) { //var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idSpan]['state']; var editable = gvh.getStateField(raizJSON,idSpan,pagActive); if (editable) { $(this).removeClass('disabled'); $('span[id*='+defaults.sufijo+']').filter('[data-gvhFunction=fileUp]').filter('[data-gvhpanelon='+defaults.panel+']').filter( '[data-gvhstate=edit]' ).map( function () { $(this).removeClass('disabled'); }); } } }); $('button[id*=bttlTreeSelector_][data-gvhWindow='+ambito+']').filter( '[data-gvhposition=panel]' ).map( function () { var idButton = $(this).attr('id').split('___')[1]; if (gvh.getExistField(raizJSON,idButton,pagActive) != undefined) //if( raizJSON['data'][pagActive]['gvhJS_fields'][idButton] != undefined ) { //var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idButton]['state']; var editable = gvh.getStateField(raizJSON,idButton,pagActive); if( editable ) { $(this).prop( 'disabled', false ); } } }); $('button[id*='+defaults.sufijo+'][data-gvhWindow='+ambito+']').filter('[data-gvhposition=panel]').map( function () { var idButton = $(this).attr('id').split('___')[1]; if (gvh.getExistField(raizJSON,idButton,pagActive) != undefined) //if( raizJSON['data'][pagActive]['gvhJS_fields'][idButton] != undefined ) { //var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idButton]['state']; var editable = gvh.getStateField(raizJSON,idButton,pagActive); if( editable ) { $(this).prop( 'disabled', false ); } } } ); var id = defaults.id; if( id == '' ) { id = 'P_'+defaults.panel; } $( '#'+id ).formOnButtons( { id: id , panel: defaults.panel , modo: 'W' } ); $( '#'+id ).offTooltipBasic( { id: $('#'+id).attr( 'id' ) , panel: $('#'+id).attr( 'data-gvhPanelOn' ) , modo: 'off' } ); // DAR FOCO if( $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhFirstFocus') ) { var firstFocus = $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhFirstFocus'); idFirstFocus = 'cam___'+firstFocus+'_'; //cam___eventos___edi_0 sufijo: _edi_0 } var foco = false; $( ':input[data-gvhWindow='+ambito+']' ).filter('[data-gvhpanelon='+defaults.panel+']').filter('[id^=cam_]').map( function() { var id = $(this).attr('id'); var idJSON = id.split('___')[1]; var name = ''; if ($('input:radio[id='+id+']').attr('name') != undefined) { var name = $(this).attr('name'); var idJSON = name.split('___')[1]; } console.log('7 pagActive: '+pagActive); if (gvh.getExistField(raizJSON,idJSON,pagActive) != undefined) //if( raizJSON['data'][pagActive]['gvhJS_fields'][idJSON] != undefined ) { //var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idJSON]['state']; var editable = gvh.getStateField(raizJSON,idJSON,pagActive); if( (editable) && (editable != 'new') ) { if( name == '' ) { $(this).prop( 'readonly', false ); $(this).prop( 'disabled', false ); $(this).addClass( 'modify' ); } else { $( 'input:radio[name='+name+']' ).prop( 'readonly', false ); $( 'input:radio[name='+name+']' ).prop( 'disabled', false ); $( 'input:radio[name='+name+']' ).addClass( 'modify' ); } if( (id.indexOf(idFirstFocus) >= 0) && (foco == false) ) { $(this).focus(); foco = true; } } } } ); } /* * offTooltipBasic() * FUNCIӓN: Desactiva el resto de botones tooltip con funciones básicas (insertar/modificar/eliminar) al pinchar en uno de ellos * defaults: id: BOTÓN que se mantiene activo * panel: panel al que pertenece * modo: on/off * */ $.fn.offTooltipBasic = function( options ) { var defaults = $.extend( { id: '' , panel: '' , modo: 'on' }, options ); var botonTooltip = $('button[data-gvhWindow='+ambito+'][id^=bttl][data-gvhposition=botonera]').filter('[data-gvhfunction=insert],[data-gvhfunction=update],[data-gvhfunction=delete]').not( '[id='+defaults.id+']' ); botonTooltip.each( function() { if( (defaults.modo == 'on') && $(this).hasClass('disabled') ) { $(this).removeClass( 'disabled' ); } else if( (defaults.modo == 'off') && (!$(this).hasClass('disabled')) ) { $(this).addClass( 'disabled' ); } } ); } /* * cleanForm() * FUNCIÓN: Limpia los campos del formulario * defaults: id - del BOTÓN * panel - panel donde se encuentran los campos */ $.fn.cleanForm = function( options ) { var defaults = $.extend( { id: '' , panel: '' , claseM: '' }, options ); console.log( ' ** gvh_funcionesPaneles.js - cleanForm()' ); var panelJSON = $('#'+defaults.id).attr( 'data-gvhPanelJSON' ); var raizJSON = gvh.getRoot(defaults.claseM,panelJSON); switch( panelJSON ) { case 'fil': //var numCampos = raizJSON['data'][0]['gvhJS_fields'].length; var vFields = gvh.getFields(raizJSON,0); for( var field in vFields ) { var plugin = raizJSON['data'][0]['gvhJS_fields'][field]['CWPlugin']; //var plugin = gvh.getPlugin(raizJSON,field,0); var campo = $('#'+field+'[data-gvhWindow='+ambito+']'); switch( plugin ) { case 'cwcampotexto': case 'cwareatexto': campo.val(''); //raizJSON['data'][0]['gvhJS_fields'][field]['value'] = ''; //raizJSON['dataPerform'][0]['gvhJS_fields'][field]['value'] = ''; gvh.setValue(raizJSON,field,0,'') break; case 'cwlista': var select2 = campo.attr( 'data-gvhSelect2' ); if( select2 == 'true' ) { campo.val( '' ); campo.select2( { allowClear: true } ); } else { campo.prop( 'selectedIndex', 0 ); } var dependiente = campo.attr( 'data-gvhDependiente' ); if( dependiente == 'true' ) { campo.empty(); } gvh.setValue(raizJSON,field,0,'') //raizJSON['data'][0]['gvhJS_fields'][field]['value'] = ''; //raizJSON['dataPerform'][0]['gvhJS_fields'][field]['value'] = ''; break; case 'cwlistaradio': case 'cwcheckbox': if( campo.is(':visible') ) { campo.prop( 'checked', false ); gvh.setValue(raizJSON,campo,0,false) } break; default: console.log( 'cleanForm() - '+field+' tipo de campo no contemplado '+plugin ); break; } } break; case 'edi': var pagActiva = raizJSON['panel']['pagActive']; if( pagActiva === null ) { pagActiva = 0; } //var numCampos = raizJSON['data'][pagActiva]['gvhJS_fields'].length; //for( var field in raizJSON['data'][pagActiva]['gvhJS_fields'] ) var vFields = gvh.getFields(raizJSON,0); for( var field in vFields ) { if( field != '' ) { var plugin = raizJSON['data'][pagActiva]['gvhJS_fields'][field]['CWPlugin']; //plugin = raizJSON['data'][pagActiva]['gvhJS_fields'][field]['CWPlugin']; var idField = gvh.getIdField(raizJSON,field,pagActiva); var campo = $('#'+idField).filter('[data-gvhWindow='+ambito+']'); // Copiamos los valores originales del objeto datosJSON var valorAnterior = gvh.getValueOld(raizJSON,field,pagActiva);//raizJSON['data'][pagActiva]['gvhJS_fields'][field]['valueOld']; switch( plugin ) { case 'cwcampotexto': case 'cwareatexto': campo.val( valorAnterior ); break; case 'cwlista': select2 = campo.attr('data-gvhSelect2'); jsonLista = raizJSON['components']['gvh_list']; if (select2 == 'true') { var lista = raizJSON['data'][pagActiva]['gvhJS_fields'][field]['lista']; var descripcion = ''; for( i=0;i 0 ) { campo.addList( { gvhLista: listOptions , selectedValue: valorAnterior } ); } } else { $('#'+idField+' option[value="'+valorAnterior+'"]').prop("selected", true); } break; case 'cwlistaradio': var valorCheck = raizJSON['data'][pagActiva]['gvhJS_fields'][field]['valueCheck']; if( valorAnterior == valorCheck ) { campo.filter('[val='+valorCheck+']').prop( 'checked', true ); } else { campo.filter('[val='+valorCheck+']').prop( 'checked', false ); } break; case 'cwcheckbox': var valorCheck = raizJSON['data'][pagActiva]['gvhJS_fields'][field]['valueCheck']; if( valorAnterior == valorCheck ) { campo.prop( 'checked', true ); } else { campo.prop( 'checked', false ); } break; default: console.log( 'cleanForm() - tipo de campo no contemplado '+plugin ); break; } } } break; } } /* * formStateFieldsTable() * FUNCIӓN: Marcar los campos para ser modificados * defaults: id: objeto formulario sobre el que se va a trabajar * sufijos: array con todos los sufijos de las filas seleccionadas * panel: lis/lisDetalle * checked: simple/all * modo: 'on' / 'off' * maestro */ $.fn.formStateFieldsTable = function(options) { var defaults = $.extend({ id: '', panel: '', panelRowEdit: '', sufijos: 0, checked: 'simple', modo: 'on', maestro: false },options); console.log(' ** gvh_funcionesPaneles.js - formStateFieldsTable() '+defaults.id); console.log(datosJSON); if ( (defaults.sufijos.length == 0) && (defaults.checked == 'simple')) { gvh.showMessage('gvhlang_msj16','alert'); } else { if (defaults.modo == 'on') { $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhestadopanel','W'); $('#'+ambito).attr('data-gvhestadopanel','W'); } if ($('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhFirstFocus')) { firstFocus = $('div[id=P_'+defaults.panel+']').attr('data-gvhFirstFocus'); } var rowsPag = 0; var numReg = 0; var indiceJSON = 0; var regJSON = ''; var claseM = $('#'+defaults.id).attr('data-gvhClaseManejadora'); var panelJSON = defaults.panel.substring(0,3); var panel = defaults.panel; var raizJSON = gvh.getRoot(claseM,panelJSON); var pagActual = gvh.getPagActive(raizJSON); var rowsPag = gvh.getRowsPag(raizJSON); var numReg = gvh.getNumReg(raizJSON); //pagActual = raizJSON['panel']['pagActive']; if (defaults.checked == 'all') { var lengthSufijos = defaults.sufijos; for(i=0;i 0) { $('div[id^=editor_cam_][data-gvhWindow='+ambito+']').filter('[id$='+defaults.panel+']').filter('[data-gvhPanelOn='+defaults.panel+']').filter('[data-gvhstate=edit]').each(function() { if (defaults.modo == 'on') $(this).attr('contenteditable','true'); else $(this).attr('contenteditable','false'); }) } if (defaults.modo == 'on') { $('button[id*='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[data-gvhposition=panel],[data-gvhstate=edit]').removeClass('disabled'); for(i=0;i 0 ) { // HAY DATOS OBLIGATORIOS if( panelJSON == 'edi' ) { var pagActive = gvh.getPagActive(raizJSON); //['panel']['pagActive']; var stateRow = gvh.getStateReg(raizJSON,pagActive,'state'); //['data'][]['gvhJS_state']; if( (stateRow != 'nada') || (stateRow != 'nulo') ) { for( r=0; r
'; var correcto = 'incorrecto'; field.addClass( 'fieldRequired' ); } } } } else { var ini = 0; var numReg = gvh.getNumReg(raizJSON); var fin = numReg - 1; if( defaults.estadoPanel == 'I' ) { ini = numReg; fin = raizJSON['data'].length - 1; } for( i=ini; i
'; correcto = 'incorrecto'; field.addClass( 'fieldRequired' ); } } } } } } return fieldsRequired; } /* * changeStatePanel() * FUNCIӓN: Marcará el estado del registro: insertada/modificada * defaults: id - del campo * panel - panel en el que se encuentra el campo * estado - 'nada' / 'insertada' / 'modificada' */ $.fn.changeStatePanel = function(options) { var defaults = $.extend({ id: '', panel: '', estado: 'nada', indexFieldJSON: 0 },options); console.log('gvh_funcionesPaneles.js - changeStatePanel() '); id = defaults.id; vId = id.split('___'); panel = defaults.panel; if (defaults.panel == '') panel = $('#'+id).attr('data-gvhPanelOn'); edicion = 'off'; estado = defaults.estado; if ((estado == 'insertada') || (estado == 'modificada')) { edicion = 'on'; } else { if (panel == 'fil') { edicion = 'on'; } else { if ((vId[0] == 'ins') || (vId[0] == 'cins')) { estado = 'insertada'; edicion = 'on'; } else if ((vId[0] == 'cam') || (vId[0] == 'ccam')) { estado = 'modificada'; edicion = 'on'; } } } external = $('#'+defaults.id).attr('data-gvhExternal'); if ((edicion == 'on') || (external == 'true')) { $(this).changeField({ id: id, panel: panel, estado: estado, indexFieldJSON: defaults.indexFieldJSON }); } if ($('#l'+id).length > 0) { $('#l'+id).val($('#'+id).val()); } } /* * changeField() * FUNCIӓN: Marcará el estado del registro: insertada/modificada * defaults: id - del campo * estado - 'insertada'/'modificada' * panel - panel en el que se ubica el campo */ $.fn.changeField = function(options) { var defaults = $.extend({ id: '', panel: '', estado: 'nada', indexFieldJSON: 0 },options); console.log('gvh_funcionesPaneles.js - changeField() '+defaults.id); idCampo = defaults.id; field = $('#'+idCampo); var claseM = field.attr('data-gvhClaseManejadora'); var rowsPag = 0; var numReg = 0; var indiceJSON = 0; // el panel en el objeto JSON siempre es "fil", "edi" o "lis" aunque sea detalle panelJSON = field.attr('data-gvhPanelJSON'); raizJSON = datosJSON[claseM][panelJSON]; var pagActual = raizJSON['panel']['pagActive']; console.log(raizJSON); // Tipos de componentes diferentes a un campo de texto esRadio = $('input:radio[id='+idCampo+']').length; esCheck = $(':checkbox[id='+idCampo+']').length; esImg = field.attr('src'); esSelect = $('select[id='+idCampo+']').length; // Id del campo que se utilizará de indice en el objeto JSON campoJSON = ""; valorCampo = ""; valorArray = new Array(); if (defaults.panel == 'fil') // Estamos en un panel búsqueda { regJSON = 0; // No hay páginas console.log('fil'); campoJSON = idCampo; plugin = raizJSON['data'][0]['gvhJS_fields'][campoJSON]['CWPlugin']; hidden = raizJSON['data'][0]['gvhJS_fields'][campoJSON]['hidden']; if (hidden == 1) // Campo oculto { plugin = 'Hidden'; } valorCampo = ''; inputField = ''; switch(plugin) { case 'cwcampotexto': case 'cwareatexto': inputField = $('#'+campoJSON); valorCampo = inputField.val(); break; case 'cwimagen': inputField = campoJSON; imgField = $('#'+campoJSON); valorCampo = imgField.attr('src'); break; case 'cwlistaradio': inputField = campoJSON; valorCampo = $('input:radio[name='+campoJSON+'][data-gvhWindow='+ambito+']:checked').val(); break; case 'cwlista': inputField = $('#'+campoJSON); valorArray = inputField.val(); break; case 'Hidden': inputField = campoJSON; valorCampo = raizJSON['data'][0]['gvhJS_fields'][campoJSON]['value']; break; default: /*inputField = $('#'+campoJSON); valorCampo = inputField.val();*/ break; } if (inputField != '') { if ((jQuery.isEmptyObject(valorArray) == false)) { valueJSONDecode = valorArray; } else { try { valueJSONDecode = ((valorCampo)); } catch(e) { valueJSONDecode = valorCampo; } } raizJSON['data'][0]['gvhJS_fields'][campoJSON]['value'] = valueJSONDecode; raizJSON['dataPerform'][0]['gvhJS_fields'][campoJSON]['value'] = valueJSONDecode; raizJSON['data'][0]['gvhJS_state'] = "buscar"; raizJSON['dataPerform']['data'][0]['gvhJS_state'] = 'buscar'; console.log('ESTAMOS EN UN PANEL: '+defaults.panel+' CAMBIA EL CONTENIDO DEL CAMPO '+campoJSON+' CON EL VALOR '+valueJSONDecode+' regJSON '+regJSON); console.log(raizJSON['data']); } } else { // Estamos en un panel LIS o EDI pagActual = datosJSON[claseM][panelJSON]['panel']['pagActive']; //pagActual = $('#pagActual___'+claseM).val(); regJSON = pagActual; // Página en la que nos encontramos será índice raizJSON['data'][regJSON] si estamos en un panel EDI external = field.attr('data-gvhExternal'); if (external == 'true') { console.log('tratamiento external'); // Campo external en una tabla plugin = raizJSON['external'][idCampo]['CWPlugin']; switch(plugin) { case 'cwcampotexto': inputField = $('#'+idCampo); valorCampo = inputField.val(); break; case 'cwlistaradio': inputField = idCampo; valorCampo = $('input:radio[name='+idCampo+'][data-gvhWindow='+ambito+']:checked').val(); break; case 'cwlista': inputField = $('#'+idCampo); valorArray = inputField.val(); valorCampo = valorArray; break; /*case 'cwcheckbox': campoJSON = idCampo.split('___')[1]; campoPanel = idCampo.split('___')[1]+'___'+idCampo.split('___')[2]; valorCampo = $('#cam___'+campoPanel).val(); break;*/ default: break; } } else { console.log('lis/edi '); sufijo = idCampo.split('___')[2].split('_')[1]; regJSON = defaults.indexFieldJSON; // Si nos encontramos en un panel LIS, el índice de página es diferente if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle')) { // Con defaults.indexFieldJSON este if podría desaparecer sufijo = defaults.panel+'_'+regJSON; rowsPag = raizJSON['panel']['rowsPag']; regCheck = idCampo.split('___')[2].split('_')[1]; regJSON = (rowsPag*pagActual)+parseInt(regCheck); sufijo = defaults.panel+'_'+regCheck; } raizJSON['data'][regJSON]['gvhJS_state'] = defaults.estado; raizJSON['dataPerform']['data'][regJSON]['gvhJS_state'] = defaults.estado; raizJSON['data'][regJSON]['gvhJS_selected'] = "selected"; gvh.setStateReg(raizJSON,'selected',regJSON,'add'); prefijo = 'cam___'; gvh.setStateReg(raizJSON,'updated',regJSON,'add'); if (defaults.estado == 'insertada') { prefijo = 'ins___'; gvh.setStateReg(raizJSON,'inserted',regJSON,'add'); } esRadio = $('input:radio[id='+idCampo+']').length; if (esRadio > 0) { idCampo = $('input:radio[id='+idCampo+']').attr('name'); campoJSON = idCampo.split('___')[1]; } else { campoJSON = idCampo.split('___')[1]; } inputField = ''; valorCampo = ''; valorArray = new Array(); plugin = raizJSON['data'][regJSON]['gvhJS_fields'][campoJSON]['CWPlugin']; hidden = raizJSON['data'][0]['gvhJS_fields'][campoJSON]['hidden']; if (hidden == 1) // Campo oculto { plugin = 'Hidden'; } patronIdCampo = prefijo+campoJSON+'___'+sufijo; patronIdCampo = defaults.id; switch(plugin) { case 'cwcampotexto': case 'cwareatexto': inputField = $('#'+patronIdCampo); valorCampo = inputField.val(); break; case 'cwimagen': inputField = $('#'+patronIdCampo); valorCampo = inputField.attr('src'); break; case 'cwlistaradio': inputField = patronIdCampo; valorCampo = $('input:radio[name='+patronIdCampo+'][data-gvhWindow='+ambito+']:checked').val(); break; case 'cwlista': inputField = $('#'+patronIdCampo); valorArray = inputField.val(); valorCampo = valorArray; console.log('cwlista '+patronIdCampo);console.log(valorArray); break; case 'cwcheckbox': campoJSON = patronIdCampo.split('___')[1]; campoPanel = patronIdCampo.split('___')[1]+'___'+patronIdCampo.split('___')[2]; valorCampo = $('#cam___'+campoPanel).val(); break; case 'Hidden': inputField = campoJSON; valorCampo = raizJSON['data'][regJSON]['gvhJS_fields'][campoJSON]['value']; break; default: break; } if (inputField != '') { if (external == 'true') { raizJSON['external'][idCampo]['value'] = valorCampo; raizJSON['dataPerform']['external'][idCampo]['value'] = valorCampo; if (plugin == 'cwlista') { $('#'+idCampo+' option[value="'+valorCampo+'"]').prop("selected", true); } //console.log('ESTAMOS EN UN PANEL: '+defaults.panel+' CAMBIA EL CONTENIDO DEL CAMPO EXTERNAL '+idCampo+' CON EL VALOR '+valorCampo); } else { raizJSON['data'][regJSON]['gvhJS_fields'][campoJSON]['value'] = valorCampo; raizJSON['dataPerform'][regJSON]['gvhJS_fields'][campoJSON]['value'] = valorCampo; console.log('ESTAMOS EN UN PANEL: '+defaults.panel+' CAMBIA EL CONTENIDO DEL CAMPO '+campoJSON+' CON EL VALOR '+valorCampo+' regJSON '+regJSON); console.log(raizJSON['data']); } } } console.log(raizJSON); } // Si el campo modificado tiene una acción de interfaz actualizaA = field.attr('data-gvhActualizaA'); if ((actualizaA != '') && (actualizaA != undefined)) { console.log('changeField() - actualizaA'); formulario = field.closest('form'); field.updateEvent({ id: idCampo, actualizaA: actualizaA, panel: defaults.panel, claseM: claseM, formulario: formulario },options); } } /* * showLinkTree() * FUNCIӓN: mostrar la opción del árbol * defaults: */ cont = 0; $.fn.showLinkTree = function(options) { var defaults = $.extend({ id: '', linkRama: '' },options); console.log(' ** gvh_funcionesPaneles.js - showLinkTree() '); var linkRama = defaults.linkRama; if (linkRama != '') { console.log('Llamada ajax para mostrar el panel '+linkRama); /*var formulario = $('#'+defaults.id).closest('form'); console.log(formulario.attr('id')); formulario.submit(function() { var data = formulario.serialize();*/ // Mostramos el progreso Pace.restart(); document.body.className = document.body.className; // Forzamos a actualizar la interfaz $.ajax({ //data: data, type: "POST", cache: false, url: defaults.linkRama, beforeSend: function() { console.log(' ... Beforesend ...'); gvh.loading('on',defaults.message); }, success: function(response) { console.log(' ... Success: '+response); rspPhrame = $.parseJSON(response); /*$.ajax({ url: decodeURIComponent(rspPhrame.path), dataType: "html" , // Usamos el tipo 'html' para importar también los scripts embebidos cache: true }).done(function(resp) { $('.gvh-treeview-content').html( $(resp).filter('.gvh-treeview-content').contents() ); });*/ window.location.href = decodeURIComponent(rspPhrame.path); }, error:function( jqXHR, textStatus, errorThrown ) { console.log(' ... # ERROR showLinkTree'); }, complete:function( jqXHR, textStatus, errorThrown ) { console.log(' ... # COMPLETE showLinkTree'); gvh.loading('off'); } }) //return false; //}); } }; } (jQuery);