You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

admin.js 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. document.addEventListener("DOMContentLoaded", function(){
  2. var form = document.getElementById("formNewUser");
  3. form.addEventListener("submit", function(e){
  4. e.preventDefault();
  5. console.log("Sending Formular")
  6. async function register(){
  7. var email = document.getElementById("email").value;
  8. var username = document.getElementById("username").value;
  9. var bodyContent = {email:email, username:username};
  10. var response = await fetch("/newmod", {
  11. method: "POST",
  12. headers: {
  13. "Accept":"application/json",
  14. "Content-Type":"application/json"
  15. },
  16. body:JSON.stringify(bodyContent)
  17. });
  18. var data = await response.json();
  19. console.log(data);
  20. loadMods();
  21. }
  22. register();
  23. });
  24. document.getElementById("changePwBtn").onclick = function(){
  25. window.location = "/new-password";
  26. }
  27. /*changin page*/
  28. var pageUp = document.getElementById("pageUp");
  29. var pageDown = document.getElementById("pageDown");
  30. pageUp.addEventListener("click", () => {
  31. if(maxPages > currentPage+1) {
  32. currentPage++;
  33. loadMods();
  34. }
  35. });
  36. pageDown.addEventListener("click", () => {
  37. if(currentPage > 0){
  38. currentPage--;
  39. loadMods();
  40. }
  41. });
  42. /*logout*/
  43. var lgoBtn = document.getElementById("lgoBtn");
  44. lgoBtn.addEventListener("click", () => {
  45. window.location = "/logout";
  46. });
  47. var maxPages;
  48. var currentPage = 0;
  49. var maxDisplayed = 8;
  50. async function loadMods(){
  51. var response = await fetch("/getmods", {
  52. method: "GET",
  53. headers: {
  54. "Accept":"application/json",
  55. "Content-Type":"application/json"
  56. }
  57. })
  58. var data = await response.json();
  59. try{
  60. showMods(data.users.slice(0 + (currentPage * maxDisplayed), maxDisplayed + (currentPage * maxDisplayed)));
  61. console.log(data.users.slice(0 + (currentPage * maxDisplayed), maxDisplayed + (currentPage * maxDisplayed)));
  62. maxPages = data.users.length / 8;
  63. console.log(maxPages, currentPage+1)
  64. }catch(error){
  65. document.getElementById("table").innerHTML = ""; //empty table
  66. }
  67. };
  68. loadMods();
  69. function showMods(pdata){
  70. document.getElementById("table").innerHTML = ""; //empty table
  71. var container = document.getElementById("table"); //insert in table
  72. pdata.forEach(element => {
  73. var row = document.createElement("div");
  74. var status;
  75. var susbuttonstate;
  76. if(element.suspended) {
  77. status = "suspended"
  78. susbuttonstate = "icon-pause"
  79. } else {
  80. status = "notSuspended"
  81. susbuttonstate = "icon-play"
  82. }
  83. row.classList.add("row");
  84. row.innerHTML = `
  85. <div class="col-left">
  86. <h2>${element.username}</h2>
  87. </div>
  88. <div class="col-right">
  89. <button class="${status} susButton" data-username="${element.username}">
  90. <i class="${susbuttonstate} , icon"></i>
  91. </button>
  92. <button class="remButton" data-username="${element.username}">
  93. <i class="icon-trash , icon"></i>
  94. </button>
  95. </div>
  96. `
  97. container.appendChild(row)
  98. });
  99. }
  100. async function toggleSus(pun){
  101. var response = await fetch("/toggleSus", {
  102. method: "POST",
  103. headers: {
  104. "Accept":"application/json",
  105. "Content-Type":"application/json"
  106. },
  107. body:JSON.stringify({username:pun})
  108. })
  109. var data = await response.json();
  110. console.log(data);
  111. if(data.suc || !data.suc){
  112. loadMods();
  113. }
  114. };
  115. async function deleteMod(username){
  116. var response = await fetch("/deleteMod", {
  117. method: "POST",
  118. headers: {
  119. "Accept":"application/json",
  120. "Content-Type":"application/json"
  121. },
  122. body:JSON.stringify({username:username})
  123. })
  124. var data = await response.json();
  125. console.log(data);
  126. if(data.suc || !data.suc){
  127. loadMods();
  128. }
  129. };
  130. var mngBtn = document.getElementById("mngBtn");
  131. mngBtn.addEventListener("click", () => {
  132. window.location = "/manage-posts";
  133. });
  134. document.addEventListener("click", function(e){
  135. if(e.target && e.target.classList.contains("susButton")){
  136. var un = e.target.getAttribute("data-username");
  137. toggleSus(un);
  138. }else if(e.target && e.target.classList.contains("remButton")){
  139. var username = e.target.getAttribute("data-username");
  140. deleteMod(username);
  141. }
  142. })
  143. /*-----New User Popup-----*/
  144. const openPopupBtns = document.querySelectorAll("[data-popup-target]");
  145. const closePopupBtns = document.querySelectorAll("[data-close-btn]");
  146. const overlay = document.getElementById("overlay");
  147. openPopupBtns.forEach(btn => {
  148. btn.addEventListener("click", () => {
  149. const popup = document.querySelector(btn.dataset.popupTarget);
  150. openPopup(popup);
  151. })
  152. });
  153. closePopupBtns.forEach(btn => {
  154. btn.addEventListener("click", () => {
  155. const popup = btn.closest(".popup")
  156. closePopup(popup);
  157. })
  158. });
  159. function openPopup(popup) {
  160. if (popup == null) return
  161. popup.classList.add("active");
  162. overlay.classList.add("active");
  163. }
  164. function closePopup(popup) {
  165. if (popup == null) return
  166. popup.classList.remove("active");
  167. overlay.classList.remove("active");
  168. }
  169. });