/* 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 ($) { /* * 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'); 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; } panelJSON = defaults.panel.substring(0,3); raizJSON = datosJSON[claseManejadora][panelJSON]; modoPropiedad = false; if (defaults.modo == 'off') modoPropiedad = true; 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']; 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]; var inter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { 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') { 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('[id^='+prefijo+'],[id^=c'+prefijo+']'); lista.map(function() { id = $(this).attr('id'); idCampo = id.split('___')[1]; iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { 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') { 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() { id = $(this).attr('id'); idCampo = id.split('___')[1]; iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { 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') { 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 () { id = $(this).attr('id'); vId = id.split('file_'); idCampo = vId[1].split('___')[1]; iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { 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') { 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) { 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) { idCampo = id.split('___')[1]; iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; //console.log(idCampo+' '+iter+' '+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') { 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][data-gvhpanelon='+defaults.panel+']').map(function() { id = $(this).attr('id'); idCampo = id.split('___')[1]; iter = raizJSON['panel']['pagActive']; if (panelJSON == 'lis') { row = idCampo[2].split('_')[1]; var iter = gvh.indexDataJSON(claseManejadora,panelJSON,row); } if (raizJSON['data'][iter] != undefined) { state = raizJSON['data'][iter]['gvhJS_fields'][idCampo]['state']; //console.log(idCampo+' '+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') { 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+']'); if (defaults.panel != 'fil') gvh.blockExit(false,'I',defaults.panel); $('#'+ambito).attr('data-gvhestadopanel','I'); modoPanel = 'I'; claseManejadora = defaults.claseM; panelJSON = defaults.panel.substring(0,3); raizJSON = datosJSON[claseManejadora][panelJSON]; numReg = raizJSON['panel']['numReg']; $(this).setAllState_gvhJSON({ selected: 'nada', claseM: claseManejadora, panel: panelJSON, ini: 0, fin: numReg }); $(this).setAllSelected_gvhJSON({ selected: 'no', claseM: claseManejadora, panel: panelJSON, ini: 0, fin: numReg }); reg = $('#P_'+defaults.panel).attr('data-gvhPagActual'); if (panelJSON == 'edi') raizJSON['data'][reg]['gvhJS_state'] = 'insertada'; 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')) { 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); } }); panelIns.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"); } 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; panelJSON = defaults.panel.substring(0,3); raizJSON = datosJSON[claseM][panelJSON]; 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_]'); 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']; 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'); }) } 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); idFirstFocus = ''; console.log(' ** gvh_funcionesPaneles.js - formOnUpdateReg() '); //console.log(datosJSON); var claseM = $(this).attr('data-gvhClaseManejadora'); $('#'+defaults.panel+'_paginacion').twbsPagination({estado:'modificada'}); if (defaults.panel != 'fil') gvh.blockExit(false,'W',defaults.panel); panelJSON = defaults.panel.substring(0,3); raizJSON = datosJSON[claseM][panelJSON]; var numReg = raizJSON['panel']['numReg']; var pagActive = raizJSON['panel']['pagActive']; var 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() { idEditor = $(this).attr('id').split('___')[1]; if (raizJSON['data'][pagActive]['gvhJS_fields'][idEditor] != undefined) { editable = raizJSON['data'][pagActive]['gvhJS_fields'][idEditor]['state']; 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 (raizJSON['data'][pagActive]['gvhJS_fields'][idSpan] != undefined) { var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idSpan]['state']; 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 (raizJSON['data'][pagActive]['gvhJS_fields'][idButton] != undefined) { var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idButton]['state']; if (editable) { $(this).removeClass('disabled'); } } }); $('button[id*='+defaults.sufijo+'][data-gvhWindow='+ambito+']').filter('[data-gvhposition=panel]').map(function () { var idButton = $(this).attr('id').split('___')[1]; if (raizJSON['data'][pagActive]['gvhJS_fields'][idButton] != undefined) { var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idButton]['state']; if (editable) { $(this).removeClass('disabled'); } } }); 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')) { 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[data-gvhWindow='+ambito+']').filter('[data-gvhpanelon='+defaults.panel+']').filter('[id^=cam_]').map(function() { var idInput = $(this).attr('id').split('___')[1]; if (raizJSON['data'][pagActive]['gvhJS_fields'][idInput] != undefined) { var editable = raizJSON['data'][pagActive]['gvhJS_fields'][idInput]['state']; if ((editable) && (editable != 'new')) { $(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() '+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; regJSON = ''; claseM = $('#'+defaults.id).attr('data-gvhClaseManejadora'); panelJSON = defaults.panel.substring(0,3); raizJSON = datosJSON[claseM][panelJSON]; pagActual = raizJSON['panel']['pagActive']; 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']; numReg = raizJSON['panel']['numReg']; for(i=0;i 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; ini = 0; //numReg = raizJSON['numReg']; numReg = raizJSON['panel']['numReg']; 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['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['data'][regJSON]['gvhJS_selected'] = "selected"; 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)) { console.log('changeField() - actualizaA'); formulario = field.closest('form'); field.updateEvent({ id: idCampo, actualizaA: actualizaA, panel: defaults.panel, claseM: claseM, formulario: formulario },options); } } })(jQuery);