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); }