(function jf_init_ofertas() {
function obtener_ofertas(url, filtros) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var modulePs = document.getElementById("module_ps");
if (modulePs) {
var cargandoOferta = document.getElementById("cargando_oferta");
if (cargandoOferta) {
cargandoOferta.style.display = "none";
}
var modulePsOfertas = document.getElementById("module_ps_ofertas");
if (!modulePsOfertas) {
modulePsOfertas = document.createElement("div");
modulePsOfertas.id = "module_ps_ofertas";
modulePs.appendChild(modulePsOfertas);
}
modulePsOfertas.innerHTML = this.responseText;
document.querySelectorAll("#siguiente-pagina > div > a").forEach(function(element) {
//Agregar un evento de clic al elemento
element.addEventListener('click', function(event) {
// Evitar el comportamiento predeterminado del enlace
event.preventDefault();
obtener_ofertas(event.srcElement.href, false);
});
});
var ofertasCargadoEvent = new Event("ofertas_jf_cargado");
document.dispatchEvent(ofertasCargadoEvent);
} else {
alert("No se ha encontrado el elemento module_ps");
}
} else if (this.readyState == 1) {
var modulePs = document.getElementById("module_ps");
if (modulePs) {
var modulePsOfertas = document.getElementById("module_ps_ofertas");
if (!modulePsOfertas) {
modulePsOfertas = document.createElement("div");
modulePsOfertas.id = "module_ps_ofertas";
modulePs.appendChild(modulePsOfertas);
}
var cargandoOferta = document.getElementById("cargando_oferta");
if (cargandoOferta) {
cargandoOferta.style.display = "";
} else {
var cargandoOferta = document.createElement("div");
cargandoOferta.id = "cargando_oferta";
cargandoOferta.textContent = "";
modulePsOfertas.appendChild(cargandoOferta);
}
}
}
};
if(filtros) {
url = url + "?p="+filtros.province+"&t="+filtros.town+"&f="+filtros.fecha+"&c="+filtros.contrato+"&h="+filtros.horario+"&j="+filtros.jornada+"&s="+filtros.sector;
}
xhttp.open("GET", url, true);
xhttp.send();
}
function obtener_filtro(url) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var modulePs = document.getElementById("module_ps");
if (modulePs) {
var primerHijo = modulePs.firstChild;
var modulePSFiltro = document.getElementById("module_ps_filtro");
if (!modulePSFiltro) {
modulePSFiltro = document.createElement("div");
modulePSFiltro.id = "module_ps_filtro";
modulePs.insertBefore(modulePSFiltro,primerHijo);
}
modulePSFiltro.innerHTML = this.responseText;
configurar_filtro();
/* var selector = document.querySelector('#siguiente-pagina > div > a');
// Agregar un evento de clic al elemento
selector.addEventListener('click', function(event) {
// Evitar el comportamiento predeterminado del enlace
event.preventDefault();
});*/
}
}
};
xhttp.open("GET", url, true);
xhttp.send();
}
function getTowns(id) {
let town_elem = document.querySelector(".town_offer");
if (id == -1) {
town_elem.innerHTML = "";
town_elem.classList.add("disabled");
town_elem.disabled = true;
} else {
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.jobfie.es/general/getTowns/" + id, true);
xhr.onload = function() {
if (xhr.status === 200) {
town_elem.innerHTML = "";
town_elem.innerHTML += xhr.responseText;
town_elem.classList.remove("disabled");
town_elem.disabled = false;
}
};
xhr.send();
}
}
function getOptions(type, element_class, cond, clean) {
var url = "https://www.jobfie.es/general/getOptions/" + type;
if (cond != null) {
url += "/" + cond;
}
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onload = function() {
if (xhr.status === 200) {
var element = document.querySelector(element_class);
if(element) {
element.innerHTML = xhr.responseText;
}
} else {
alert("No se ha podido comunicar con el servidor, sentimos las molestias, inténtelo de nuevo y si persiste el problema contacte con el servicio de atención al cliente");
}
};
xhr.send();
}
function configurar_filtro() {
document.querySelectorAll(".town-offer").forEach(function(element) {
element.disabled = true;
});
document.querySelector("select[name=province_offer]").addEventListener("change", function() {
document.querySelector("#town_offer").value = -1;
getTowns(this.value);
});
getTowns(-1);
document.querySelector(".clear-filter").addEventListener("click", function() {
document.querySelectorAll(".filtro-buscador-externo select").forEach(function(element) {
element.value = "-1";
getTowns(-1);
});
document.querySelector(".finder-offers").dispatchEvent(new Event("click"));
});
document.querySelectorAll(".filtro-buscador-externo select").forEach(function(element) {
element.addEventListener("change", function() {
//Activar si queremos que cada vez que cambie una opción busque ofertas
//document.querySelector(".finder-offers").dispatchEvent(new Event("click"));
});
});
document.querySelector(".finder-offers").addEventListener("click", function() {
let filtros = {};
let province = document.querySelector("#province_offer");
if(province) {
filtros.province = province.value ? province.value : -1;
} else {
filtros.province = -1;
}
let town = document.querySelector("#town_offer");
if(town) {
filtros.town = town.value ? town.value : -1;
} else {
filtros.town = -1;
}
let fecha = document.querySelector("#release_date_offer");
if(fecha) {
filtros.fecha = fecha.value ? fecha.value : -1;
} else {
filtros.fecha = -1;
}
let contrato = document.querySelector("#contrato_offer");
if(contrato) {
filtros.contrato = contrato.value ? contrato.value : -1;
} else {
filtros.contrato = -1;
}
let horario = document.querySelector("#horario_offer");
if(horario) {
filtros.horario = horario.value ? horario.value : -1;
} else {
filtros.horario = -1;
}
let jornada = document.querySelector("#jornada_offer");
if(jornada) {
filtros.jornada = jornada.value ? jornada.value : -1;
} else {
filtros.jornada = -1;
}
let sector = document.querySelector("#sector_offer");
if(sector) {
filtros.sector = sector.value ? sector.value : -1;
} else {
filtros.sector = -1;
}
obtener_ofertas("https://www.jobfie.es/auth/getExternalOffersCompany/33845",filtros);
});
}
window.addEventListener("load", function() {
//Cargamos las ofertas de trabajo
obtener_ofertas("https://www.jobfie.es/auth/getExternalOffersCompany/33845");
//Cargamos el filtro de ofertas de trabajo
obtener_filtro("https://www.jobfie.es/auth/getExternalFilterOffersCompany/33845");
});
})();