/* ### 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