(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("