From 54c58ab6eae130cb0eab3d117187b9c54e7033a6 Mon Sep 17 00:00:00 2001 From: asyncnomi Date: Mon, 2 Jan 2023 23:33:43 +0100 Subject: [PATCH] Admin page html + js finished --- index.js | 17 ++- static/js/main.js | 361 ++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 309 insertions(+), 69 deletions(-) diff --git a/index.js b/index.js index bce5fb4..61264f1 100644 --- a/index.js +++ b/index.js @@ -316,21 +316,25 @@ fastify.post('/get', async (request, reply) => { } break; case "treasure": + let treasureData = JSON.parse(JSON.stringify(TreasureData)); + for (treasure in treasureData) { + treasureData[treasure].activity = ActivityData[treasureData[treasure].activity]; + } if (AdminUsersUid.includes(content.uid)) { return { sucess: true, - prankData: TreasureData + treasureData: treasureData } } else { - let treasureData = {}; - for (treasure in TreasureData) { - if (TreasureData[treasure].creator == content.uid) { - treasureData[treasure] = TreasureData[treasure]; + let treasureDataUser = {}; + for (treasure in treasureData) { + if (treasureData[treasure].creator == content.uid) { + treasureDataUser[treasure] = treasureData[treasure]; } } return { success: true, - treasureData: treasureData + treasureData: treasureDataUser } } break; @@ -477,6 +481,7 @@ fastify.post('/sendTreasure', async (request, reply) => { let imageUid = makeid(128); fs.writeFileSync("static/images/"+imageUid, content.image); TreasureData[treasureUid] = { + date: new Date(), creator: content.uid, image: imageUid, desc: content.desc, diff --git a/static/js/main.js b/static/js/main.js index be5363b..023154d 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -62,7 +62,7 @@ $("#logo").click(function () { if (localStorage.getItem('isAdmin')) { show_page('#admin-page'); // Load prank by default - + get_admin("prank"); } else { show_page('#demande-page'); @@ -136,10 +136,97 @@ function get_admin(type) { `); break; case: "treasure": + let treasureData = []; + for (treasureUid in data.treasureData) { + data.treasureData[treasureUid].treasureUid = treasureUid; + treasureData.push(data.treasureData[treasureUid]); + } + treasureData.sort((a, b) => Date(a.date) - Date(b.date)); + for (entry in treasureData) { + if (treasureData[entry].state == "pending") { + $("#admin-content").insertAdjacentHTML("beforeend", ` + +
Demande de vérification par ${treasureData[entry].creator}
+
Activité: ${treasureData[entry].activity.title}
+
Description: ${treasureData[entry].desc}
+
Image: lien
+ +
UID: ${treasureData[entry].treasureUid}
+
UID: ${treasureData[entry].date}
+
+ +
Accepter
+
Refuser
+
+
+ `) + } + } break; case: "activity": + $("#admin-content").insertAdjacentHTML("beforeend", ` + + + +
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) => Date(a.start) - Date(b.start)); + for (entry in activityData) { + if (activityData[entry].type = "event") { + $("#admin-content").insertAdjacentHTML("beforeend", ` + +
Event:
+
Description:
+
Lieu:
+
Début:
+
Fin:
+ +
UID: ${activityData[entry].activityUid}
+
+ +
Update
+
Supprimer
+
+
+ `) + } else if (activityData[entry].type = "treasure") { + $("#admin-content").insertAdjacentHTML("beforebegin", ` + +
Trésor:
+
Description:
+
Lieu:
+
Début:
+
Status: ${activityData[entry].treasureState}
+ +
UID: ${activityData[entry].activityUid}
+
+ +
Update
+
Supprimer
+
+
+ `) + } + } break; } + refreshListener(); } else { alert(data.why); } @@ -147,77 +234,210 @@ function get_admin(type) { }); } -$(".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", +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()[2].style.display = "flex"; - } else { - alert(data.why); + success: function (data) { + if(data.success) { + let btnElems = $("#"+uid).children()[6]; + btnElems.children()[0].style.display = "none"; + btnElems.children()[2].style.display = "flex"; + } 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", + $(".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) { - let btnElems = $("#"+uid).remove(); - } else { - alert(data.why); + success: function (data) { + if(data.success) { + $("#"+uid).remove(); + } 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", + $(".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) { - let btnElems = $("#"+uid).remove(); - $("#prankDone").innerHTML = parseInt($("#prankDone").innerHTML) + 1; - } else { - alert(data.why); + success: function (data) { + if(data.success) { + $("#"+uid).remove(); + $("#prankDone").innerHTML = parseInt($("#prankDone").innerHTML) + 1; + } 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 { + 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 { + 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 + "refuseTreasure", + 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 { + 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 { + alert(data.why); + } + } + }); + }) + $("activityType").on("change", function() { + if (this.value == "treasure") { + $("#activity-end-add").style.display = "none"; + } else if (this.value == "event") { + $("#activity-end-add").style.display = "flex"; } - }); -}) + }) + $(".activity-btn-add").click((e) => { + let children = e.target.parentNode.parentNode.children(); + $.ajax({ + type: "POST", + url: base_url + "refuseTreasure", + 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 { + alert(data.why); + } + } + }); + }) +} $(window).on("load", function() { @@ -255,3 +475,18 @@ $(window).on("load", function() { })); }, 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()); +}