/* ### CLASES JS ### */ // Clase Muestra para almacenar información de las muestras de la db function Muestra (){ this.id = 0; // Id como INTEGER en la db this.modelo = ''; // Modelo como STRING en la db this.idmaterial = 0; // Id_material como INTEGER en la db this.idmedida = 0; // Id_medida como INTEGER en la db this.linkfoto = ''; // Link_foto como STRING en la DB } // Clase Buscador para controlar los cambios en Búsqueda Avanzada function Buscador (){ this.filtros = Array(0,0,0); //Los ids de los items seleccionados en los filtros (ORDENADOS) this.texto = ""; //El texto o cadena a buscar this.orden = ""; //La variable para ordenar los resultados this.estilo = "ficha"; //La variable para mostrar los resultados en forma de fichas o de lista (por defecto: 'ficha') this.contador = 0; //El número de items que se muestran en el panel de resultados this.recuento = 0; //El número de resultados this.resultado_fs = Array("",""); //Los códigos HTML resultado para el contenido de los filtros this.resultados = Array(); } Buscador.prototype.abrirFiltros = function (id_filtro) { // Recogemos en variables locales los datos que necesitamos desde el propio objeto var esteObj = this; var objB_json = JSON.stringify(this); var operacion = "abrirFiltro"+id_filtro; var _resultado_fs = this.resultado_fs; //console.log(objB_json); $.ajax({ // la URL para la petición url : 'php/contenidos/buscadoravanzado.php', // la información a enviar // (también es posible utilizar una cadena de datos) data : { objB_json : objB_json , operacion : operacion}, // especifica si será una petición POST o GET type : 'POST', // el tipo de información que se espera de respuesta //dataType : 'json', // código a ejecutar si la petición es satisfactoria; // la respuesta es pasada como argumento a la función success : function(respuesta) { var resp = JSON.parse(respuesta); // Metemos los elementos de resultado en su parámetro de este objeto _resultado_fs[id_filtro-2] = resp.resultado_fs[id_filtro-2]; //Es -2 porque filtro2=...fs[0] y filtro3=...fs[1] //console.log(resp); // Mostramos los datos de resultados en su lugar correspondiente $('#filtro_'+id_filtro+'_items').stop().hide().html(_resultado_fs[id_filtro-2]).fadeIn(800); // En caso de que el filtro objetivo (id_filtro) sea el filtro 2, aplicamos una condición para vaciar el contenido del filtro 3 if(id_filtro==2){ $('#filtro_'+(id_filtro+1)+'_items').stop().hide().html("Seleccione un Producto y un Material para que aparezcan las medidas.").fadeIn(800); } footerForzado(); esteObj.buscar(); }, // código a ejecutar si la petición falla; // son pasados como argumentos a la función // el objeto de la petición en crudo y código de estatus de la petición error : function(xhr, status) { console.log('Error en la ejecución de AJAX. Status: '+status); }, // código a ejecutar sin importar si la petición falló o no complete : function(xhr, status) { //alert('Petición realizada'); } }); }; Buscador.prototype.restaurarFiltros = function () { // Recogemos en variables locales los datos que necesitamos desde el propio objeto var esteObj = this; // Fijamos los ids de los items seleccionados en los filtros a cero this.filtros[0] = 0; this.filtros[1] = 0; this.filtros[2] = 0; // Hacemos uncheck a todos los elementos del filtro 1 $("input[name='filtro_1']").prop( "checked", false ); // Vaciamos los filtros 2 y 3 $('#filtro_2_items').stop().hide().html("Seleccione un Producto para que aparezcan las opciones de Material.").fadeIn(800); $('#filtro_3_items').stop().hide().html("Seleccione un Producto y un Material para que aparezcan las medidas.").fadeIn(800); // Esto lo activaríamos en caso de que quisieramos que al borrar los filtros aparecieran todos los resultados de una búsqueda global. //esteObj.buscar(); // De momento no queremos búsquedas globales de todos los elementos que hay en la db, así que simplemente vaciamos el contenedor: $('#sect_bsqav_resultados').hide(); $('#boton_vermas').hide(400); footerForzado(); }; Buscador.prototype.buscar = function () { // Recogemos en variables locales los datos que necesitamos desde el propio objeto var esteObj = this; var objB_json = JSON.stringify(this); var operacion = "buscar"; $("#boton_vermas").hide(); //console.log(objB_json); $.ajax({ // la URL para la petición url : 'php/contenidos/buscadoravanzado.php', // la información a enviar // (también es posible utilizar una cadena de datos) data : { objB_json : objB_json , operacion : operacion}, // especifica si será una petición POST o GET type : 'POST', // el tipo de información que se espera de respuesta //dataType : 'json', // código a ejecutar si la petición es satisfactoria; // la respuesta es pasada como argumento a la función success : function(respuesta) { var resp = JSON.parse(respuesta); var resp_resultados = resp.resultados; // Limpiamos el array de resultados para evitar duplicidades esteObj.resultados.length = 0; //console.log(resp.resultados); // Metemos los elementos de resultado en su parámetro de este objeto for (var i in resp_resultados) { esteObj.resultados[i] = resp_resultados[i]; //$('#sect_bsqav_resultados').stop().hide().append(esteObj.resultados[i]).fadeIn(800); } // Mostramos el recuento de resultados esteObj.recuento = resp.recuento; $("#bsqav_cab_recuentolabel span").stop().hide().html(esteObj.recuento).fadeIn(800); // Mostramos los resultados esteObj.contador = 0; var resultados_html = ""; // Condicional para comprobar si el array de resultados ha devuelto menos de 8 items, // y evitar que aparezca alguno como undefined en las iteraciones del bucle. if (esteObj.resultados.length > 8) { esteObj.contador = 8; $("#boton_vermas").fadeIn(800); } else { esteObj.contador = esteObj.resultados.length; } for (var i = 0 ; i