/* 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) * - iconUpdate(id, panel, modo) * - fieldsRequired(id, panel, estadoPanel) * - changeStatePanel(i, panel) * - changeField(id, panel, estado) */ (function ($) { /* * 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 = ''; capaPanel = $('#P_'+defaults.panel+'[data-gvhWindow='+ambito+']'); switch(defaults.operacion) { case 'insert': prefijo = 'ins__'; state = '[data-gvhstate=new],[data-gvhstate=edit]'; capaPanel.attr('data-gvhestadopanel','I'); $('#gvhMain').attr('data-gvhestadopanel','I'); 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'); $('#gvhMain').attr('data-gvhestadopanel','W'); break; } modoPropiedad = false; if (defaults.modo == 'off') modoPropiedad = true; campo = $(':input[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).filter('[id^='+prefijo+'],[id^=c'+prefijo+']'); campo.map(function() { $(this).prop('readonly',modoPropiedad); $(this).prop('disabled',modoPropiedad); $(this).addClass(defaults.css); if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } }); lista = $('select[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).filter('[id^='+prefijo+'],[id^=c'+prefijo+']'); lista.map(function() { $(this).prop('readonly',modoPropiedad); $(this).prop('disabled',modoPropiedad); $(this).addClass(defaults.css); if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } }); radio = $(':radio[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).filter('[id^='+prefijo+'],[id^=c'+prefijo+']').filter(state); radio.map(function() { $(this).prop('readonly',modoPropiedad); $(this).prop('disabled',modoPropiedad); $(this).addClass(defaults.css); if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } }); $('span[id^=file_][data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).map(function () { $(this).removeClass('disabled'); id = $(this).attr('id'); vId = id.split('file_'); $('span[id*='+vId[1]+']').filter('[data-gvhFunction=fileUp]').filter('[data-gvhpanelon='+defaults.panel+']').filter(state).map(function () { $(this).removeClass('disabled'); }); if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } }); $('textarea[data-gvhWindow='+ambito+'][data-gvhpanelon='+defaults.panel+']').each(function (index) { var idTA = "editor_"+$(this).attr('id'); var length_idTA = $('#'+idTA).length; if (length_idTA > 0) { if ( ($('textarea[id*='+idTA+']').hasClass('noEdit') == true) || ($('textarea[id*='+idTA+']').hasClass('tableNoEdit') == true) ) { $("div[id*='editor_"+idTA+"']").attr('contenteditable','false'); } else { $("div[id*='editor_"+idTA+"']").attr('contenteditable','true'); } if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); // Botones tooltip del panel botonTooltip = $('button[data-gvhWindow='+ambito+'][id*=calD_'+prefijo+'][data-gvhposition=panel]'); $('button[data-gvhWindow='+ambito+'][data-gvhposition=panel]').each(function() { if ($(this).attr('data-gvhpanelon') == defaults.panel) { if (defaults.operacion == 'insert') { $(this).show(); $(this).filter('[data-gvhstate=edit],[data-gvhstate=new]').removeClass('disabled'); } else { if ($(this).is(':visible')) { $(this).filter('[data-gvhstate=edit]').removeClass('disabled'); } } if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } }); // Botones tooltip del panel /*botonTooltip = $('button[data-gvhWindow='+ambito+'][id*=calD_'+prefijo+'][data-gvhposition=panel]'); botonTooltip.map(function() { if ($(this).attr('data-gvhpanelon') == defaults.panel) { if (defaults.operacion == 'insert') { $(this).show(); $(this).filter('[data-gvhstate=edit],[data-gvhstate=new]').removeClass('disabled'); } else { if ($(this).is(':visible')) { $(this).filter('[data-gvhstate=edit]').removeClass('disabled'); } } if (defaults.modo == 'on') { tabindex = $(this).attr('tabindex'); if (tabindex < 0) tabindex = $(this).attr('tabindex')*(-1); $(this).attr('tabindex',tabindex); } } });*/ } }; /* * 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); $('button[data-gvhWindow='+ambito+'][id*=bttlTreeSelector_]').filter('[data-gvhstate=edit]').filter('[data-gvhposition=panel]').removeClass('disabled'); boton = $('button[data-gvhWindow='+ambito+'][id*=btn_][data-gvhpanelon='+defaults.panel+']'); 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()'); idPanel = 'P_'+defaults.panel; divPanel = $('#P_'+defaults.panel).filter('[data-gvhWindow='+ambito+']'); divPanel.attr('data-gvhestadopanel','I'); $('#gvhMain').attr('data-gvhestadopanel','I'); modoPanel = 'I'; claseManejadora = defaults.claseM; if (defaults.patron == 'maestro') { $('div[id$=Detalle][data-gvhWindow='+ambito+']').filter('[id^=P_]').hide(); $('div[id^=pag_'+defaults.panel+'][data-gvhWindow='+ambito+']').hide(); $('div[id=detalles][data-gvhWindow='+ambito+']').hide(); } else if (defaults.patron == 'detalle') { $('div[id^=pag_][data-gvhWindow='+ambito+']').filter('[id*=Detalle]').hide(); } 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) $('div[id^=pag_][data-gvhWindow='+ambito+']').filter('[id$=___insTR]').show(); } idPanelIns = 'pag_'+defaults.panel+'_ins'; panelIns = $('#'+idPanelIns).filter('[data-gvhWindow='+ambito+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); if (panelIns.is(':hidden')) { panelIns.show(); panelVisible = $('div[id*=pag_'+defaults.panel+'_0]').filter('[data-gvhWindow='+ambito+']').filter('[data-gvhClaseManejadora='+claseManejadora+']'); if ((panelVisible.length > 0) && (panelVisible.is(':visible'))) { panelVisible.hide(); } panelBlock = $('div[data-gvhpagina=block][data-gvhWindow='+ambito+']'); if ((panelBlock.length > 0) && (panelBlock.is(':visible'))) { panelBlock.hide(); } panelPaginacion = $('div[id*=capa_'+defaults.panel+'_paginacion]').filter('[data-gvhWindow='+ambito+']'); if ((panelPaginacion.length > 0) && (panelPaginacion.is(':visible'))) { panelPaginacion.hide(); } $('#'+defaults.panel+'_ins tbody tr').map(function () { trClass = $(this).attr('class'); if (trClass != 'tabularHead') { $(this).removeClass(trClass); } }); } // 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' }); $('#'+idPanel).iconUpdate({ id: $('#'+idPanel).closest('form').attr('id'), panel: defaults.panel }); 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"); } 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' },options); if ((defaults.sufijos.length == 0) && (defaults.checked != 'simple')) { $(this).showMessage('gvhlang_msj16','alert'); } else { var rowsPag = 0; var numReg = 0; var indiceJSON = 0; claseM = $('#'+defaults.id).attr('data-gvhClaseManejadora'); pagActual = datosJSON[claseM][defaults.panel]['panel']['pagActive']; panelJSON = defaults.panel; if (defaults.panel == 'lisDetalle') panelJSON = 'lis'; else if (defaults.panel == 'ediDetalle') panelJSON = 'edi'; raizJSON = datosJSON[claseM][panelJSON]; if (defaults.checked == 'all') { //REVIEW: CHECKBOX //campo = $('input[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[id^=cam_],[id^=ccam_]'); 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'); }); 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['numReg']; for(i=0;i 0) { $('div[data-gvhWindow='+ambito+'][id^=editor_cam_]').filter('[id*='+defaults.pag+']').each(function() { $(this).attr('contenteditable','false'); }) } 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).iconUpdate({ id: $('#'+defaults.id).closest('form').attr('id'), panel: defaults.panel }); $('#'+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); idFirstFocus = ''; console.log(' ** gvh_funcionesPaneles.js - formOnUpdateReg()'); claseM = $(this).attr('data-gvhClaseManejadora'); // datosJSON[claseM][defaults.panel]['panel']['modo'] = "modificar"; $('#'+defaults.panel+'_paginacion').twbsPagination({estado:'modificada'}); panelJSON = defaults.panel; if (defaults.panel == 'lisDetalle') panelJSON = 'lis'; else if (defaults.panel == 'ediDetalle') panelJSON = 'edi'; raizJSON = datosJSON[claseM][panelJSON]; numReg = raizJSON['numReg']; console.log(datosJSON); //reg = raizJSON['panel']['pagActive']; reg = $('#pagActual___'+claseM).val(); raizJSON['data'][reg]['gvhJS_state'] = 'modificada'; if ($('div[id^=editor_cam_]').length > 0) { $('div[id^=editor_cam_]').filter('[id*='+defaults.sufijo+']').each(function() { $(this).attr('contenteditable','true'); }) } $('span[id^=file_cam][data-gvhWindow='+ambito+']').filter('[id*='+defaults.sufijo+']').filter('[data-gvhpanelon='+defaults.panel+']').filter('[data-gvhstate=edit]').map(function () { $(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-gvhstate=edit]').filter('[data-gvhposition=panel]').removeClass('disabled'); $('button[id*='+defaults.sufijo+'][data-gvhWindow='+ambito+']').filter('[data-gvhstate=edit]').filter('[data-gvhposition=panel]').removeClass('disabled'); id = defaults.id; if (id == '') { id = 'P_'+defaults.panel; } $('#'+id).formOnButtons({ id: id, panel: defaults.panel, modo: 'W' }); $('#'+id).iconUpdate({ id: $('#'+id).closest('form').attr('id'), panel: defaults.panel }); $('#'+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')) { firstFocus = $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhFirstFocus'); idFirstFocus = 'cam___'+firstFocus+'_'; //cam___eventos___edi_0 sufijo: _edi_0 } foco = false; //REVIEW: CHECKBOX //$(':input').filter('[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[data-gvhstate=edit]').filter('[id^=cam_],[id^=ccam_]').filter('[id*='+defaults.sufijo+']').map(function() $(':input').filter('[data-gvhpanelon='+defaults.panel+'][data-gvhWindow='+ambito+']').filter('[data-gvhstate=edit]').filter('[id^=cam_]').filter('[id*='+defaults.sufijo+']').map(function() { $(this).prop('readonly',false); $(this).prop('disabled',false); $(this).addClass('modify'); id = $(this).attr('id'); 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); 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()'); panelJSON = $('#'+defaults.id).attr('data-gvhPanelJSON'); datosJSONPanel = datosJSON[defaults.claseM][panelJSON]; switch(panelJSON) { case 'fil': numCampos = datosJSONPanel['data'][0]['gvhJS_fields'].length; for (var field in datosJSONPanel['data'][0]['gvhJS_fields']) { if (field != '') { plugin = datosJSONPanel['data'][0]['gvhJS_fields'][field]['CWPlugin']; campo = $('#'+field+'[data-gvhWindow='+ambito+']'); switch(plugin) { case 'cwcampotexto': case 'cwareatexto': campo.val(''); datosJSONPanel['data'][0]['gvhJS_fields'][field]['value'] = ''; break; case 'cwlista': select2 = campo.attr('data-gvhSelect2'); if (select2 == 'true') { campo.val(''); campo.select2({ allowClear: true }); } else { campo.prop('selectedIndex', 0); } dependiente = campo.attr('data-gvhDependiente'); if (dependiente == 'true') { campo.empty(); } datosJSONPanel['data'][0]['gvhJS_fields'][field]['value'] = ''; break; case 'cwlistaRadio': case 'CWCheckbox': if (campo.is(':visible')) { campo.prop('checked',false); } break; default: console.log('cleanForm() - '+field+' tipo de campo no contemplado '+plugin); break; } } } break; case 'edi': pagActiva = datosJSONPanel['panel']['pagActive']; if (pagActiva === null) pagActiva = 0; numCampos = datosJSONPanel['data'][pagActiva]['gvhJS_fields'].length; for (var field in datosJSONPanel['data'][pagActiva]['gvhJS_fields']) { if (field != '') { plugin = datosJSONPanel['data'][pagActiva]['gvhJS_fields'][field]['CWPlugin']; idField = datosJSONPanel['data'][pagActiva]['gvhJS_fields'][field]['id']; campo = $('#'+idField).filter('[data-gvhWindow='+ambito+']'); // Copiamos los valores originales del objeto datosJSON valorAnterior = datosJSONPanel['data'][pagActiva]['gvhJS_fields'][field]['valueOld']; switch(plugin) { case 'cwcampotexto': case 'cwareatexto': campo.val(valorAnterior); break; case 'cwlista': select2 = campo.attr('data-gvhSelect2'); jsonLista = datosJSONPanel['components']['gvh_list']; if (select2 == 'true') { lista = datosJSONPanel['data'][pagActiva]['gvhJS_fields'][field]['lista']; descripcion = ''; for (i=0;i 0) { campo.addList({ gvhLista:listOptions, selectedValue:valorAnterior }); } } else { $('#'+idField+' option[value="'+valorAnterior+'"]').prop("selected", true); } break; case 'cwlistaRadio': valorCheck = datosJSONPanel['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': valorCheck = datosJSONPanel['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()'); console.log(datosJSON); if ( (defaults.sufijos.length == 0) && (defaults.checked == 'simple')) { $(this).showMessage('gvhlang_msj16','alert'); } else { if (defaults.modo == 'on') { $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhestadopanel','W'); $('#gvhMain').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; claseM = $('#claseManejadora___'+defaults.panel).val(); pagActual = $('input[id=pagActual___'+claseM+']').val(); regJSON = ''; panelJSON = defaults.panel; if (defaults.panel == 'lisDetalle') panelJSON = 'lis'; else if (defaults.panel == 'ediDetalle') panelJSON = 'edi'; raizJSON = datosJSON[claseM][panelJSON]; if (defaults.checked == 'all') { 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'); rowsPag = raizJSON['panel']['rowsPag']; numReg = raizJSON['numReg']; for(i=0;i 0) { $('#'+defaults.panel+'_imgModificado').show(); } } else { $('#capa_menuFalso').hide(); $('#capa_menuReal').show(); if ($('#'+defaults.panel+'_imgModificado').length > 0) { $('#'+defaults.panel+'_imgModificado').hide(); } } } /* * fieldsRequired() * FUNCIӓN: Comprobación obligatorios * defaults: id - del botón que comprobará los campos * panel - panel donde se encuentran los campos * estadoPanel */ $.fn.fieldsRequired = function(options) { var defaults = $.extend({ id: '', panel: '', estadoPanel: 'R', claseM: '' },options); console.log(' ** gvh_funcionesPaneles.js - fieldsRequired()'); var correcto = 'correcto'; var fieldsRequired = ''; panelJSON = defaults.panel; if (panelJSON == 'ediDetalle') panelJSON = 'edi'; else if (panelJSON == 'lisDetalle') panelJSON = 'lis'; raizJSON = datosJSON[defaults.claseM][panelJSON]; dataRequired = raizJSON['dataRequired']; console.log('datos Obligatorios: ');console.log(dataRequired); dataRequiredLength = dataRequired.length; if (dataRequiredLength > 0) { // HAY DATOS OBLIGATORIOS if (panelJSON == 'edi') { pagActive = raizJSON['panel']['pagActive']; stateRow = raizJSON['data'][pagActive]['gvhJS_state']; if ((stateRow != 'nada') || (stateRow != 'nulo')) { for(r=0;r
'; correcto = 'incorrecto'; field.addClass('fieldRequired'); } } } } else { numRows = Object.keys(raizJSON.data).length-1; for(i=0;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' },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 }); } 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' },options); console.log('gvh_funcionesPaneles.js - changeField() '+defaults.id); //idEstado = 'est_'+defaults.id.split('___')[2]; idCampo = defaults.id; field = $('#'+idCampo); if (defaults.estado == 'insertada') { $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhestadopanel','I'); $('#gvhMain').attr('data-gvhestadopanel','I'); } else { $('div[id=P_'+defaults.panel+'][data-gvhWindow='+ambito+']').attr('data-gvhestadopanel','W'); $('#gvhMain').attr('data-gvhestadopanel','W'); } if (defaults.panel != 'fil') { $('#'+defaults.panel).iconUpdate({ id: defaults.panel, panel: defaults.panel }); } var claseM = field.attr('data-gvhClaseManejadora'); var pagActual = $('input[id=pagActual___'+claseM+']').val(); 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]; 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 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['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') { // 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 { sufijo = idCampo.split('___')[2].split('_')[1]; // Si nos encontramos en un panel LIS, el índice de página es diferente if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle')) { 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; prefijo = 'cam___'; if (defaults.estado == 'insertada') { prefijo = 'ins___'; } 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; 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['data'][regJSON]['gvhJS_state'] = defaults.estado; 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)) { formulario = field.closest('form'); field.updateEvent({ id: idCampo, actualizaA: actualizaA, panel: defaults.panel, claseM: claseM, formulario: formulario },options); } } })(jQuery);