|
|
|
@ -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", ` |
|
|
|
<span id="${treasureData[entry].treasureUid}" class="treasure"> |
|
|
|
<div class="treasure-title">Demande de vérification par ${treasureData[entry].creator}</div> |
|
|
|
<div class="treasure-activity">Activité: ${treasureData[entry].activity.title}</div> |
|
|
|
<div class="treasure-desc">Description: ${treasureData[entry].desc}</div> |
|
|
|
<div class="treasure-image">Image: <a href="${base_url}static/images/${treasureData[entry].image}" target="_blank">lien</a></div> |
|
|
|
<span class="treasure-footer"> |
|
|
|
<div class="treasure-uid">UID: ${treasureData[entry].treasureUid}</div> |
|
|
|
<div class="treasure-date">UID: ${treasureData[entry].date}</div> |
|
|
|
</span> |
|
|
|
<span class="treasure-btn"> |
|
|
|
<div class="treasure-btn-accept">Accepter</div> |
|
|
|
<div class="treasure-btn-refused">Refuser</div> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
`)
|
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
case: "activity": |
|
|
|
$("#admin-content").insertAdjacentHTML("beforeend", ` |
|
|
|
<span id="addActivity" class="activity"> |
|
|
|
<label for="activityType">Choisir une option:</label> |
|
|
|
<select name="type" id="activityType"> |
|
|
|
<option value="event">Event</option> |
|
|
|
<option value="treasure">Trésor</option> |
|
|
|
</select> |
|
|
|
<div class="activity-title">Titre: <input type="text"/></div> |
|
|
|
<div class="activity-desc">Description: <input type="text"/></div> |
|
|
|
<div class="activity-where">Lieu: <input type="text"/></div> |
|
|
|
<div class="activity-start">Début: <input type="datetime-local"/></div> |
|
|
|
<div class="activity-end">Fin: <input type="datetime-local"/></div> |
|
|
|
<span class="activity-btn"> |
|
|
|
<div id="activity-btn-add">Ajouter une activité</div> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
`)
|
|
|
|
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", ` |
|
|
|
<span id="${activityData[entry].activityUid}" class="activity"> |
|
|
|
<div class="activity-title">Event: <input type="text" value="${activityData[entry].title}"/></div> |
|
|
|
<div class="activity-desc">Description: <input type="text" value="${activityData[entry].desc}"/></div> |
|
|
|
<div class="activity-where">Lieu: <input type="text" value="${activityData[entry].where}"/></div> |
|
|
|
<div class="activity-start">Début: <input type="datetime-local" value="${toIsoString(new Date(activityData[entry].start)}"/></div> |
|
|
|
<div id="activity-end-add" class="activity-end">Fin: <input type="datetime-local" value="${toIsoString(new Date(activityData[entry].end)}"/></div> |
|
|
|
<span class="activity-footer"> |
|
|
|
<div class="activity-uid">UID: ${activityData[entry].activityUid}</div> |
|
|
|
</span> |
|
|
|
<span class="activity-btn"> |
|
|
|
<div class="activity-btn-update">Update</div> |
|
|
|
<div class="activity-btn-delete">Supprimer</div> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
`)
|
|
|
|
} else if (activityData[entry].type = "treasure") { |
|
|
|
$("#admin-content").insertAdjacentHTML("beforebegin", ` |
|
|
|
<span id="${activityData[entry].activityUid}" class="activity"> |
|
|
|
<div class="activity-title">Trésor: <input type="text" value="${activityData[entry].title}"/></div> |
|
|
|
<div class="activity-desc">Description: <input type="text" value="${activityData[entry].desc}"/></div> |
|
|
|
<div class="activity-where">Lieu: <input type="text" value="${activityData[entry].where}"/></div> |
|
|
|
<div class="activity-start">Début: <input type="datetime-local" value="${toIsoString(new Date(activityData[entry].start)}"/></div> |
|
|
|
<div class="activity-state">Status: ${activityData[entry].treasureState}</div> |
|
|
|
<span class="activity-footer"> |
|
|
|
<div class="activity-uid">UID: ${activityData[entry].activityUid}</div> |
|
|
|
</span> |
|
|
|
<span class="activity-btn"> |
|
|
|
<div class="activity-btn-update">Update</div> |
|
|
|
<div class="activity-btn-delete">Supprimer</div> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
`)
|
|
|
|
} |
|
|
|
} |
|
|
|
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()); |
|
|
|
} |
|
|
|
|