const base_url = "https://oss110metz.rezo-rm.fr/" var page = ['#main-page', '#admin-page', '#login-page', '#demande-page']; window.onpopstate = history.onpushstate = function(e) { if (e.state) { show_page(e.state, true); } else { history.back(); } }; history.pushState("#main-page", "", "") function show_page(id, historyPush) { for(i in page) { $(page[i]).hide(); } $(id).show(); if (!historyPush) { history.pushState(id, "", "") } } $("#login-button").click(function (e) { var data = JSON.stringify({ user: $("#login").val(), password: $("#password").val() }); $("#password").val(''); $.ajax({ type: "POST", url: base_url + "login", data: data, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { localStorage.setItem("token", data.token); localStorage.setItem("user", data.user.uid); localStorage.setItem("isAdmin", data.user.isAdmin); if (data.user.isAdmin) { show_page('#admin-page'); get_admin("prank"); } else { show_page('#demande-page'); } } else { alert(data.why); } } }); }); $("#prank-button").click(function () { if (localStorage.getItem('token')) { show_page('#demande-page'); } else { show_page('#login-page'); } }); $("#logo").click(function () { if (localStorage.getItem('token')) { if (localStorage.getItem('isAdmin')) { show_page('#admin-page'); // Load prank by default get_admin("prank"); } else { show_page('#demande-page'); } } else { show_page('#login-page'); } }); $("#admin-prank").click(() => { get_admin("prank"); }) $("#admin-treasure").click(() => { get_admin("treasure"); }) $("#admin-activity").click(() => { get_admin("activity"); }) function get_admin(type) { $("#admin-content").empty(); $.ajax({ type: "POST", url: base_url + "get", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), type: type, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { switch (type) { case "prank": let doneCnt = 0; let prankData = []; for (prankUid in data.prankData) { data.prankData[prankUid].prankUid = prankUid; prankData.push(data.prankData[prankUid]); } prankData.sort((a, b) => new Date(a.date) - new Date(b.date)); for (entry in prankData) { switch (prankData[entry].type) { case "crêpe": if (prankData[entry].state == "Pending" || prankData[entry].state == "Accepted") { $("#admin-content").append(`
Demande de crêpe par ${prankData[entry].creator}
Quantité: ${prankData[entry].amount}
Garniture: ${prankData[entry].supplement}
Livraison: ${prankData[entry].where}
Livraison: ${prankData[entry].note}
UID: ${prankData[entry].prankUid}
DATE: ${prankData[entry].date}
${(prankData[entry].state == "Pending") ? "Accepter" : "Récupérer (accepté par: "+prankData[entry].manageBy+")"}
Done
Refuser
`) } else if(prankData[entry].state == "done") { doneCnt++; } break; case "kidnap": // Not Handle break; } } $("#admin-content").append(`
Nombre totale de mission achevées: ${doneCnt}
`); break; case "treasure": let treasureData = []; for (treasureUid in data.treasureData) { data.treasureData[treasureUid].treasureUid = treasureUid; treasureData.push(data.treasureData[treasureUid]); } treasureData.sort((a, b) => new Date(a.date) - new Date(b.date)); for (entry in treasureData) { if (treasureData[entry].state == "Pending") { $("#admin-content").append(`
Demande de vérification par ${treasureData[entry].creator}
Activité: ${treasureData[entry].activity.title}
Description: ${treasureData[entry].desc}
Image: Lien
UID: ${treasureData[entry].treasureUid}
DATE: ${treasureData[entry].date}
Accepter
Refuser
`) } } break; case "activity": $("#admin-content").append(`
Titre:
Description:
Lieu:
Début:
Fin:
Ajouter une activité
`) let activityData = []; for (activityUid in data.activityData) { data.activityData[activityUid].activityUid = activityUid; activityData.push(data.activityData[activityUid]); } activityData.sort((a, b) => new Date(a.start) - new Date(b.start)); for (entry in activityData) { if (activityData[entry].type = "event") { $("#admin-content").append(`
Event:
Description:
Lieu:
Début:
Fin:
UID: ${activityData[entry].activityUid}
Update
Supprimer
`) } else if (activityData[entry].type = "treasure") { $("#admin-content").prepend(`
Trésor:
Description:
Lieu:
Début:
Status: ${activityData[entry].treasureState}
UID: ${activityData[entry].activityUid}
Update
Supprimer
`) } } break; } refreshListener(); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); } function refreshListener() { $(".prank-btn-accept").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "acceptPrank", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), prankUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { let btnElems = $("#"+uid).children()[6]; btnElems.children[0].style.display = "none"; btnElems.children[1].style.display = "flex"; } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".prank-btn-refused").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "refusePrank", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), prankUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { $("#"+uid).remove(); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".prank-btn-done").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "donePrank", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), prankUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { $("#"+uid).remove(); $("#prankDone")[0].innerHTML = "Nombre totale de mission achevées: " + (parseInt($("#prankDone")[0].innerHTML.replace("Nombre totale de mission achevées: ", "")) + 1); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".treasure-btn-accept").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "acceptTreasure", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), treasureUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { $("#"+uid).remove(); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".treasure-btn-refused").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "refuseTreasure", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), treasureUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { $("#"+uid).remove(); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".activity-btn-update").click((e) => { let uid = e.target.parentNode.parentNode.id; let children = e.target.parentNode.parentNode.children; $.ajax({ type: "POST", url: base_url + "addActivity", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), activityUid: uid, type: (children[0].innerHTML.substring(0, 5) == "Event") ? "event" : "treasure", title: children[0].children[0].value, desc: children[1].children[0].value, where: children[2].children[0].value, start: new Date(children[3].children[0].value).toString(), end: (children[3].children.length == 0) ? null : new Date(children[4].children[0].value).toString(), }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { alert("Update réussie") } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $(".activity-btn-delete").click((e) => { let uid = e.target.parentNode.parentNode.id $.ajax({ type: "POST", url: base_url + "delActivity", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), activityUid: uid, }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { $("#"+uid).remove(); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) $("#activityType").on("change", function() { if (this.value == "treasure") { $("#activity-end-add").css("display", "none"); } else if (this.value == "event") { $("#activity-end-add").css("display", "flex"); } }) $("#activity-btn-add").click((e) => { let children = e.target.parentNode.parentNode.children; $.ajax({ type: "POST", url: base_url + "addActivity", data: JSON.stringify({ uid: localStorage.getItem('user'), token: localStorage.getItem('token'), type: $("#activityType").val(), title: children[2].children[0].value, desc: children[3].children[0].value, where: children[4].children[0].value, start: new Date(children[5].children[0].value).toString(), end: ($("#activityType").val() == "treasure") ? null : new Date(children[6].children[0].value).toString(), }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if(data.success) { get_admin("activity"); } else { if (data.why == "Not authentificated") { show_page('#login-page'); } else { alert(data.why); } } } }); }) } $(window).on("load", function() { /* Register the Service Worker */ if ('serviceWorker' in navigator) { navigator.serviceWorker.register('./js/sw.js'); } for(i in page) { $(page[i]).css('z-index', i); } /* load timer */ window.setInterval(function() { var time = $("#timer").text(); var t = time.split(":").map(t => parseInt(t)); t[2] -= 1; if (t[2] < 0) { t[2] = 59; t[1] -= 1; } if (t[1] < 0) { t[1] = 59; t[0] -= 1; } if (t[0] < 0) { t[0] = 0; t[1] = 0; t[2] = 0; } $("#timer").text((new Date('December 17, 1995 ' + t.join(':'))).toLocaleTimeString('default', { hour: '2-digit', minute: '2-digit', second: '2-digit' })); }, 1000); }); function toIsoString(date) { var tzo = -date.getTimezoneOffset(), dif = tzo >= 0 ? '+' : '-', pad = function(num) { return (num < 10 ? '0' : '') + num; }; return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate()) + 'T' + pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds()); }