(function($){ /* * updateEvent() * FUNCIÓN: lanzar acción de interfaz * PARAMS: id - del botón para el que lanza la acción de interfaz * panel - panel donde se encuentran los campos * regOrigen - nómero de registro de la ventana origen */ $.fn.updateEvent = function(options) { var defaults = $.extend({ id: '', actualizaA: '', panel: '', claseM: '', formulario: '' },options); if ((defaults.actualizaA != '') && (defaults.actualizaA != undefined)) { id = defaults.id; if ($('#'+defaults.id).is(':radio')) { id = $(this).attr('name'); } else if ($('#'+defaults.id).is(':checkbox')) { id = $(this).attr('id').substr(1,$(this).attr('id').length); } var action = 'phrame.php?action=gvHrefreshUI&gvHclass='+defaults.claseM+'&gvHfname='+$(defaults.formulario).attr('id')+'&gvHfrom='+id+'&gvHvalue='+$('#'+id).val()+'&gvHtarget='+defaults.actualizaA; var actionOld = $(defaults.formulario).attr('action'); $(this).loading(); console.log('actionOld: '+actionOld); $(defaults.formulario).prop('action',action); $(defaults.formulario).prop('target','oculto'); $(defaults.formulario).submit(); $(defaults.formulario).prop('action',actionOld); } }; /* * iconUpdate() * FUNCIÓN: Activar botones de la barra inferior * PARAMS: id - del botón para el que se van a activar los campos * panel - panel donde se encuentran los campos */ $.fn.iconUpdate = function(options) { var defaults = $.extend({ id: '', panel: '', modo: 'on' },options); if (defaults.modo == 'on') { $('#capa_menuFalso').show(); $('#capa_menuReal').hide(); if ($('#'+defaults.panel+'_imgModificado').length > 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 * PARAMS: id - del botón que comprobaró los campos * panel - panel donde se encuentran los campos */ $.fn.fieldsRequired = function(options) { console.log(' ** gvh_comprobar.js - fieldsRequired()'); var defaults = $.extend({ id: '', panel: '', estadoPanel: 'R' },options); var correcto = 'correcto'; var fields = ''; if ((defaults.panel == 'edi') || (defaults.panel == 'ediDetalle')) { id = $('div[id*=pag_'+defaults.panel+'_]').attr('id'); sufijo = id.split('_')[2]; if (defaults.estadoPanel == 'I') { sufijo = $('div[data-gvhpagina*='+defaults.panel+'_ins]').attr('id').split('_')[2]; } if (($('input[type=hidden]').filter('[id*=est_'+defaults.panel+']').val() != 'nada') || (defaults.estadoPanel != 'R')) { $(('input[id*='+defaults.panel+'_'+sufijo+']:required')).map(function() { if ($(this).val() == '') { label = $("label[for='"+$(this).attr('id')+"']").text(); label = label.substring(1,label.length-1); fields += '- '+label+'
'; correcto = 'incorrecto'; $(this).addClass('fieldRequired'); } }) } } else { $('input[id*=est_'+defaults.panel+']').map(function() { if ($(this).val() != 'nada') { sufijo = $(this).attr('id').split('_')[2]; ini = "cam___"; if ($(this).val() == 'insertada') ini = 'ins___'; $('input:required').filter('[id$='+defaults.panel+'_'+sufijo+']').filter('[id^='+ini+']').map(function() { if ($(this).val() == '') { label = $("label[for='"+$(this).attr('id')+"']").text(); label = label.substring(1,label.length-1); if (label != '') { fields += '- '+label+'
'; } correcto = 'incorrecto'; $(this).addClass('fieldRequired'); } }) } }); } return fields; } /* * changeState() * FUNCIÓN: Marcaró el estado del registro: insertada/modificada * PARAMS: id - del campo * estado - 'insertada'/'modificada' */ $.fn.changeState = function(options) { var defaults = $.extend({ id: '', panel: '', estado: 'nada' },options); console.log('gvh_comprobar.js - changeState() '+defaults.id); idEstado = 'est_'+defaults.id.split('___')[2]; $('#'+idEstado).val(defaults.estado); if (defaults.estado == 'insertada') { $('div[id=P_'+defaults.panel+']').attr('data-gvhestadopanel','I'); } else { $('div[id=P_'+defaults.panel+']').attr('data-gvhestadopanel','W'); } if (defaults.panel != 'fil') { $('#'+defaults.panel).iconUpdate({ id: defaults.panel, panel: defaults.panel }); } var claseM = $('#'+defaults.id).attr('data-gvhClaseManejadora'); var pagActual = $('input[id=pagActual___'+claseM+']').val(); var rowsPag = 0; var numReg = 0; var indiceJSON = 0; panelJSON = defaults.panel; if (defaults.panel == 'lisDetalle') panelJSON = 'lis'; else if (defaults.panel == 'ediDetalle') panelJSON = 'edi'; raizJSON = datosJSON[claseM][panelJSON]; if (raizJSON['gvhJSON'] == 'true') { regJSON = pagActual; esRadio = $('input:radio[id='+defaults.id+']').length; esCheck = $(':checkbox[id='+defaults.id+']').length; esImg = $('#'+defaults.id).attr('src'); valorCampo = $('#'+defaults.id).val(); campo = defaults.id.split('___')[1]; if (defaults.panel == 'fil') { regJSON = 0; campo = defaults.id; } if ((esImg != '') && (esImg != undefined)) // Campo IMG el valor es el atributo SRC { valorCampo = $('#'+defaults.id).attr('src'); } if (esRadio > 0) { name = $('input:radio[id='+defaults.id+']').attr('name'); campo = name.split('___')[1]; } else if (esCheck > 0) { campoPanel = defaults.id.split('___')[1]+'___'+defaults.id.split('___')[2]; valorCampo = $('#cam___'+campoPanel).val(); } if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle')) { rowsPag = raizJSON['panel']['rowsPag']; regCheck = defaults.id.split('___')[2].split('_')[1]; regJSON = (rowsPag*pagActual)+parseInt(regCheck); } //raizJSON['data'][regJSON]['gvhJS_fields'][campo]['value'] = unescape(encodeURIComponent($('#'+defaults.id).val())); raizJSON['data'][regJSON]['gvhJS_fields'][campo]['value'] = unescape(encodeURIComponent(valorCampo)); try { //valueJSONDecode = unescape(encodeURIComponent($('#'+defaults.id).val())); valueJSONDecode = unescape(encodeURIComponent(valorCampo)); } catch(e) { valueJSONDecode = $('#'+defaults.id).val(); } raizJSON['data'][regJSON]['gvhJS_fields'][campo]['value'] = valueJSONDecode; raizJSON['data'][regJSON]['gvhJS_state'] = defaults.estado; } actualizaA = $('#'+defaults.id).attr('data-gvhActualizaA'); if ((actualizaA != '') && (actualizaA != undefined)) { formulario = $('#'+defaults.id).closest('form'); $('#'+defaults.id).updateEvent({ id: defaults.id, actualizaA: actualizaA, panel: defaults.panel, claseM: claseM, formulario: formulario },options); } } /* * select2.defaults() * FUNCIÓN: Propiedades por defecto de las listas tipo select2 */ /* width: 'auto', closeOnSelect: true, placeholder: 'Selecciona una opción', allowClear: true, minimumResultsForSearch: 15, containerCssClass: 'tpx-select2-container', dropdownCssClass: 'tpx-select2-drop'*/ $.fn.select2.defaults = $.extend($.fn.select2.defaults, { width: 'auto', allowClear: true, closeOnSelect: true, // móltiple - se cierra tras la selección placeholder: 'Selecciona una opción', containerCssClass: 'tpx-select2-container', dropdownCssClass: 'tpx-select2-drop' }); /* * M“CARAS (libreríRobinHerbots.jquery.inputmask.bundle.js) */ // Expresiones regulares $(':input[data-gvhRegExp]').each( function() { var mascara = $(this).attr('data-gvhRegExp'); switch(mascara) { case 'email': case 'ip': case 'url': $(this).inputmask(mascara); break; default: //$(this).inputmask('Regex', { regex: "[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\\.[a-zA-Z]{2,4}" }); $(this).inputmask('Regex', {regex: mascara}); break; } } ); /* * validateDate() * FUNCIÓN: Comprobar que la fecha sea correcta * PARAMS: fecha - fecha introducida * separador */ $.fn.validateDate = function(options) { var defaults = $.extend({ id: '', fecha: '', separador: '/', mascara: 'dd/mm/yyyy' },options); separador = defaults.separador; if (defaults.mascara.indexOf('/') != -1) separador = '/'; if (defaults.mascara.indexOf('-') != -1) separador = '-'; if ((defaults.mascara == 'dd/mm/yyyy') || (defaults.mascara == 'dd-mm-yyyy')) var dateDDMMYYYRegex = /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](18|19|20)\d\d$/; if ((defaults.mascara == 'mm/dd/yyyy') || (defaults.mascara == 'mm-dd-yyyy')) var dateDDMMYYYRegex = /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](18|19|20)\d\d$/; if (defaults.fecha != '') { correcto = defaults.fecha.match(dateDDMMYYYRegex); if (correcto) { fecha = defaults.fecha.split(separador); dia = fecha[0]; mes = fecha[1]; anio = fecha[2]; var error = 0; if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) { correcto = false; } if (mes == 2) { // bisiesto var bisiesto = (anio % 4 == 0 && (anio % 100 != 0 || anio % 400 == 0)); if (dia > 29 || (dia==29 && !bisiesto)) { correcto = false; } } } if (!correcto) { $('#'+defaults.id).showMessage('gvhlang_msj900','error'); $('#'+defaults.id).val(''); } return correcto; } } $.fn.changeField = function(options) { var defaults = $.extend({ id: '', type: 'input' },options); id = defaults.id; vId = id.split('___'); panel = $('#'+id).attr('data-gvhPanelOn'); estado = ''; edicion = 'off'; cambios = false; if (panel != 'fil') { if ((vId[0] == 'ins') || (vId[0] == 'cins')) { estado = 'insertada'; edicion = 'on'; cambios = true; } else if ((vId[0] == 'cam') || (vId[0] == 'ccam')) { estado = 'modificada'; edicion = 'on'; idAnt = id.replace('cam___','ant___'); cambios = true; } if (edicion == 'on') { $(this).changeState({ id: id, panel: panel, estado: estado }); } } else { actualizaA = $('#'+id).attr('data-gvhActualizaA'); if ((actualizaA != '') && (actualizaA != undefined)) { formulario = $('#'+id).closest('form'); $('#'+id).updateEvent({ id: id, actualizaA: actualizaA, panel: panel, claseM: $('#'+id).attr('data-gvhClaseManejadora'), formulario: formulario }); } } if ($('#l'+id).length > 0) { $('#l'+id).val($('#'+id).val()); } }; $.fn.changeInputMask = function() { console.log('changeInputMask() - '+$(this).val()); console.log($(this).attr('data-inputmask')); // Apagamos el evento change para no entrar en conflicto con la libreríRobinHerbots inputmask $(this).off("change", $.fn.changeInputMask); id = $(this).attr('id'); $(this).changeField({ id: id, type: 'input' }); // Volvemos a activar el evento change para no entrar en conflicto con la libreríRobinHerbots inputmask $(this).on("change", $.fn.changeInputMask); }; $.fn.keyPressMask = function() { console.log('keyPressMask() - '+$(this).val()); }; })(jQuery); /********************************************************************************************************************************************** * * * EVENTOS DESDE EL DOM * * * ***********************************************************************************************************************************************/ // Los campos con máscara $(':input[data-inputmask]').on("change", $.fn.changeInputMask); $('[data-gvhTypeDate=numeric]').inputmask(); $('[data-gvhTypeDate=float]').inputmask({ 'alias': 'decimal', rightAlign: true, 'groupSeparator': '.', 'radixPoint': ',', 'autoGroup': true //'groupSize': parseInt($(this).attr('data-gvhGroupSize')) }); $(':input[type=text],:input[type=radio]').not('[data-inputmask]').on({ change: function() { id = $(this).attr('id'); $(this).changeField({ id: id, type: 'input' }) } }); $('textarea').on({ change: function() { id = $(this).attr('id'); $(this).changeField({ id: id, type: 'textarea' }) } }); $('select').filter('[data-gvhCWSource=CWLista]').on({ change: function() { id = $(this).attr('id'); $(this).changeField({ id: id, type: 'select' }) } }); $(':checkbox').not('[id^=check_],[id^=checkAll_]').on({ change: function() { id = $(this).attr('id'); $(this).changeField({ id: id, type: 'checkbox' }) } }); $('.jqte_editor').on({ focusout: function() { id = $(this).attr('id'); vId = id.split('___'); prefijo = vId[0].split('_')[1]; idCampo = prefijo+'___'+vId[1]+'___'+vId[2]; panel = $('#'+idCampo).attr('data-gvhPanelOn'); estado = ''; if (prefijo == 'ins') estado = 'insertada'; else if (prefijo == 'cam') estado = 'modificada'; if ((prefijo == 'ins') || (prefijo == 'cam')) { $(this).changeState({ id: idCampo, panel: panel, estado: estado }); } else if (panel == 'fil') { actualizaA = $('#'+idCampo).attr('data-gvhActualizaA'); if ((actualizaA != '') && (actualizaA != undefined)) { formulario = $('#'+id).closest('form'); $('#'+id).updateEvent({ id: idCampo, actualizaA: $('#'+idCampo).attr('data-gvhActualizaA'), panel: panel, claseM: $('#'+idCampo).attr('data-gvhClaseManejadora'), formulario: formulario }); } } if ($('#l'+id).length > 0) { $('#l'+id).val($('#'+id).val()); } } }) /* ********************************** /* Checkbox copia valor a campo oculto * óDesapareceró cuando cambie la forma de comunicación con negocio? ************************************/ $('input[type=checkbox]').filter('[id^=ccam_]').on({ click: function() { idOculto = 'cam'+$(this).attr('id').substring(4,$(this).attr('id').length); if ($(this).is(':checked')) { valueCheck = $(this).attr('data-gvhValueCheck'); $('input[id='+idOculto+']').val(valueCheck); } else { valueUnCheck = $(this).attr('data-gvhValueUnCheck'); $('input[id='+idOculto+']').val(valueUnCheck); } } }), $('input[type=checkbox]').filter('[id^=cins_]').on({ click: function() { idOculto = 'hins'+$(this).attr('id').substring(4,$(this).attr('id').length); if ($(this).is(':checked')) { valueCheck = $(this).attr('data-gvhValueCheck'); $('input[id='+idOculto+']').val(valueCheck); } else { valueUnCheck = $(this).attr('data-gvhValueUnCheck'); $('input[id='+idOculto+']').val(valueUnCheck); } } }); var fileCollection = new Array(); $('input:file').on('change',function(e) { var files = e.target.files; var count = files.length; var tmp_files = ''; var panel = $(this).attr('data-gvhPanelOn'); var claseM = $(this).attr('data-gvhClaseManejadora'); var iter = $(this).attr('data-gvhIterActual'); var id = $(this).attr('id'); $('span[id^=toUpload_'+id+']').filter('[data-gvhPanelOn='+panel+']').filter('[data-gvhClaseManejadora='+claseM+']').map(function() { $(this).empty(); idToUpload = $(this).attr('id'); }); $('#'+idToUpload).empty(); $('#'+idToUpload).append(""); $('#'+idToUpload).css('visibility', 'visible'); } }; if (count < 1) { actualizaA = $('#'+id).attr('data-gvhActualizaA'); if ((actualizaA != '') && (actualizaA != undefined)) { formulario = $('#'+id).closest('form'); $('#'+id).updateEvent({ id: id, actualizaA: actualizaA, panel: panel, claseM: claseM, formulario: formulario }); } } }); estado = ''; vId = id.split('___'); if (vId[0] == 'ins') { estado = 'insertada'; } else if (vId[0] == 'cam') { estado = 'modificada'; } $(this).changeState({ id: id, panel: panel, estado: estado }); });