archinsa/js/index.js
2024-04-06 11:37:53 +02:00

182 lines
5.5 KiB
JavaScript

async function test_auth(){
resp = await fetch("api.php/test_auth");
data = await resp.json();
document.getElementById("user_status").innerText = data["msg"];
}
// fonction de test, innutile en prod
async function authenticate_user(){
resp = await fetch("api.php/auth");
data = await resp.json();
console.log("test");
if(data.status == 1){
document.getElementById("user_status").innerText = data["msg"];
}
}
async function unauthenticate_user(){
resp = await fetch("api.php/unauth");
data = await resp.json();
if(data.status == 1){
document.getElementById("user_status").innerText = data["msg"];
}
}
async function rechercher(){
var req = document.body.getElementById("recherche_input").value;
var themes = [];
Array.from(document.body.getElementsByClassName("theme")).forEach(function (el) {
// on encode en url pour pouvoir le passer dans la requete GET
themes.push(encodeURIComponent(el.innerText));
});
var duree =document.body.getElementById("duree_input").value
var url = "api.php/rechercher?req="+req;
if(themes.toString() != ""){
url = url +"&themes="+themes.toString();
}
if(duree != ""){
url = url +"duree="+duree;
}
console.log(url);
resp = await fetch(url);
data = await resp.json();
// vide d'abord les éléments présents dans la liste sur la page
document.body.getElementById("liste_resultats").innerHTML = "";
if(data.status == 1){
data.resultats.forEach(doc => {
// on affiche le titre du résultat parce qu'on est pas des sauvages
let titre_ensemble;
titre_ensemble = document.createElement("h2");
titre_ensemble.innerText = doc.titre;
titre_ensemble.setAttribute("onclick","document.location.href='ens.php?ensemble_id="+doc.ensemble_id.toString()+"'");
document.getElementById("liste_resultats").appendChild(titre_ensemble);
// images ou pdf ?
let ele;
if(doc.upload_path.toString().split(".").pop() == "pdf"){
ele = document.createElement("embed");
}else{
ele = document.createElement("img");
}
ele.src = doc.upload_path;
ele.setAttribute("onclick","document.location.href='ens.php?ensemble_id="+doc.ensemble_id.toString()+"'");
document.getElementById("liste_resultats").appendChild(ele);
});
}
}
async function gen_chronologie(){
var url = "api.php/generer_chronologie";
console.log(url);
resp = await fetch(url);
data = await resp.json();
console.log(data);
// vide d'abord les éléments présents dans la liste sur la page
document.getElementById("liste_resultats").innerHTML = "";
// ensuite on ajoute un petit titre à la chronologie
let titre = document.createElement("h1");
titre.innerText = "Documents récemment publiés";
document.getElementById("liste_resultats").appendChild(titre);
// et on remplis avec ce que l'api a généré
if(data.status == 1){
data.resultats.forEach(ens => {
ens.documents.forEach(doc=>{
// on affiche le titre du résultat parce qu'on est pas des sauvages
let titre_ensemble;
titre_ensemble = document.createElement("h2");
titre_ensemble.innerText = doc.titre;
titre_ensemble.setAttribute("onclick","document.location.href='ens.php?ensemble_id="+doc.ensemble_id.toString()+"'");
document.getElementById("liste_resultats").appendChild(titre_ensemble);
// fichiers spéciaux ?
let apercu;
let ext = doc.upload_path.toString().split(".").pop();
switch(ext){
case "pdf":
ele = document.createElement("embed");
break;
case "html":
ele = document.createElement("iframe");
ele.setAttribute("sandbox","allow-forms allow-modals allow-scripts");
break;
default:
ele = document.createElement("img");
break;
}
ele.src = doc.upload_path;
ele.setAttribute("onclick","document.location.href='ens.php?ensemble_id="+doc.ensemble_id.toString()+"'");
document.getElementById("liste_resultats").appendChild(ele);
});
});
}
}
document.addEventListener("DOMContentLoaded", (event)=>{
gen_chronologie();
test_auth();
document.getElementById("recherche_input").onkeydown =function(event) {
if (event.key === "Enter"){
rechercher();
}
}
document.getElementById("themes_input").onkeydown =function(event) {
if (event.key === "Enter"){
var theme = document.createElement("div");
theme.setAttribute("class","theme");
theme.innerText = document.getElementById("themes_input").value;
document.getElementById("recherche_form").appendChild(theme);
document.getElementById("themes_input").value = "";
}
}
document.getElementById("btn-connection").addEventListener("click", (event) => {
authenticate_user();
});
document.getElementById("btn-deconnection").addEventListener("click", (event) => {
unauthenticate_user();
});
});