var btnDescargarPDF = document.getElementById('btn-descargar-pdf');
var buscadorNodosInput = document.getElementById('buscador-nodos-input');
var buscadorNodosBtn = document.getElementById('btn-buscador-nodos');
var limpiadorBuscadorNodos = document.getElementById('limpiador-buscador-nodos');
var buscadorNodosURL = document.getElementById('buscador-nodos-url');
var filtrosAutomaticos = 1;
var restringir = 1;
function toggleFiltrosNodos(btn) {
$('.contenedor-filtros').slideToggle(function() {
if ($(btn).hasClass('btn-cerrar-filtros') && $('.contenedor-filtros').is(':visible') === false) {
$("html, body").animate({
scrollTop: $('header').outerHeight() + $("#resultados-modos").position().top + $("#resultados-modos").outerHeight()
});
}
});
}
function aplicarFiltrosNodos() {
var urlInicial = $('#url-inicial').val();
var urlFiltros = $('#url-filtros').val();
var urlFiltrosTexto = $('#url-filtros-texto').val();
var urlDefinitiva = new String();
var filtros = new String();
var contadorFiltrosNodos = 0;
$('.contenedor-filtros .filtro').each(function(index, element) {
var caracteristica = $(this).prop('id');
var nodeName = $(this).prop('nodeName');
switch (nodeName) {
case 'SELECT':
var valor = $(this).val();
if (valor != '') {
filtros = filtros + caracteristica + ':' + valor + ';';
contadorFiltrosNodos++;
}
break;
case 'INPUT':
var type = $(this).prop('type');
if (type === 'checkbox') {
if ($(this).is(':checked')) {
filtros = filtros + caracteristica + ';';
contadorFiltrosNodos++;
}
}
break;
}
});
if (contadorFiltrosNodos > 0) {
filtros = filtros.slice(0, -1);
if (buscadorNodosInput && buscadorNodosInput.value.trim().length > 0) {
urlDefinitiva = urlFiltrosTexto + '&nod_filtros=' + filtros + '&filtro=' + buscadorNodosInput.value;
} else {
urlDefinitiva = urlFiltros + '_' + filtros + '_nn';
}
window.location.href = urlDefinitiva;
} else {
window.location.href = urlInicial + '_nn';
}
}
function generarFiltros () {
$('.contenedor-filtros .filtro').attr('disabled', true);
var configuracionFiltros = new ConfiguracionFiltros();
consultarFiltros(configuracionFiltros);
pintarNuevosFiltros();
activarFiltros();
}
function ConfiguracionFiltros () {
this.id = $('#id-nodo').val();
var filtros = new String();
$('.contenedor-filtros .filtro').each(function(index, element) {
var caracteristica = $(this).prop('id');
var nodeName = $(this).prop('nodeName');
switch (nodeName) {
case 'SELECT':
var valor = $(this).val();
if (valor != '') {
filtros = filtros + caracteristica + ':' + valor + ';';
}
break;
case 'INPUT':
var type = $(this).prop('type');
if (type === 'checkbox') {
if ($(this).is(':checked')) {
filtros = filtros + caracteristica + ';';
}
}
break;
}
});
this.filtros = filtros;
}
var nuevosFiltros = new Array();
function consultarFiltros (config) {
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'ControlNodos',
async: false,
data: {
tabla: 1,
estado: 3,
id_nodo: config.id,
nod_filtros: config.filtros
},
success: function(response) {
nuevosFiltros = response.filtros;
},
error: function(response) {
console.log('error AJAX');
console.log(response);
}
});
}
function pintarNuevosFiltros () {
for (var i = 0; i < nuevosFiltros.length; i++) {
var filtro = nuevosFiltros[i];
if (filtro.tipo === 0) {
// Checkbox
var seleccionado = filtro.valores[0].seleccionado;
if (seleccionado === 0) {
$('#' + filtro.id_caracteristica + '.filtro').attr('checked', false);
} else if (seleccionado === 1) {
$('#' + filtro.id_caracteristica + '.filtro').attr('checked', true);
}
$('#' + filtro.id_caracteristica + '.filtro').attr('disabled', false);
} else {
// Desplegable
var htmlSelect = '';
if (filtro.valores.length > 0) {
for (var j = 0; j < filtro.valores.length; j++) {
var option = filtro.valores[j];
if (option.seleccionado === 0) {
htmlSelect = htmlSelect + '';
} else {
htmlSelect = htmlSelect + '';
}
}
$('#' + filtro.id_caracteristica + '.filtro').html(htmlSelect).attr('disabled', false);
} else {
$('#' + filtro.id_caracteristica + '.filtro').html(htmlSelect);
}
}
}
}
function comprobarDescargaPDF() {
var boton = this;
var id = $(this).data('id-nodo');
$(boton).attr('disabled', true).text('Generando fichero...');
var interval = setInterval(function(){
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'ControlNodos',
async: false,
data: {
tabla: 1,
estado: 4,
id_nodo: id
},
success: function(response) {
if (response === 0) {
clearInterval(interval);
$(boton).attr('disabled', false).text('Descargar');
}
},
error: function(error) {
console.log(error);
}
});
}, 2000);
}
// Cargando
var filtrosActivados = false;
function activarFiltros() {
$('.contenedor-filtros.cargando').removeClass('cargando');
filtrosActivados = true;
}
function desactivarFiltros() {
$('.contenedor-filtros.cargando').addClass('cargando');
filtrosActivados = false
}
var filtroActivo = false;
function actualizarEstadoFiltros () {
$('.contenedor-filtros .filtro').each(function () {
if (this.value !== '') {
filtroActivo = true;
return false;
}
});
}
// Handler de eventos
function buscadorNodosHandler() {
var valor = buscadorNodosInput.value.trim();
var minLength = 2;
var maxLength = 60;
var regexp = new RegExp("^[ 0-9-A-ZÑÁÉÍÓÚ*/.]{2," + maxLength + "}$");
if ((valor.toUpperCase().search(regexp))!=0){
modalAviso("La referencia debe tener una longitud mínima de 2 caracteres y solo puede contener letras y números...", function () {
buscadorNodosInput.select();
});
return;
}
window.location.href = buscadorNodosURL.value + '&filtro=' + valor;
}
function limpiadorBuscadorNodosHandler() {
window.location.href = buscadorNodosURL.value;
}
// Eventos
if (btnDescargarPDF) {
btnDescargarPDF.addEventListener('click', comprobarDescargaPDF);
}
if (restringir === 1 && filtrosAutomaticos === 0) {
$('.contenedor-filtros .filtro').change(function() {
generarFiltros();
});
}
window.addEventListener('load', function () {
actualizarEstadoFiltros();
if (filtroActivo) {
activarFiltros();
}
});
$(document).ready(function() {
if (restringir === 1 && $('#nod-filtros').val() != undefined && $('#nod-filtros').val().length > 0) {
generarFiltros();
} else {
activarFiltros();
}
});
if (buscadorNodosBtn) {
buscadorNodosBtn.addEventListener('click', buscadorNodosHandler);
}
if (buscadorNodosInput) {
buscadorNodosInput.addEventListener('keypress', function(e) {
if (e.keyCode === 13) {
buscadorNodosHandler();
}
});
}
if (limpiadorBuscadorNodos) {
limpiadorBuscadorNodos.addEventListener('click', limpiadorBuscadorNodosHandler);
}