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.

manage-post.js 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. document.addEventListener("DOMContentLoaded", function(){
  2. /*changin page*/
  3. var pageUp = document.getElementById("pageUp");
  4. var pageDown = document.getElementById("pageDown");
  5. var reviewButtons = document.getElementsByClassName('editButton');
  6. pageUp.addEventListener("click", () => {
  7. if(maxPages > currentPage+1) {
  8. currentPage++;
  9. loadPosts();
  10. }
  11. });
  12. pageDown.addEventListener("click", () => {
  13. if(currentPage > 0){
  14. currentPage--;
  15. loadPosts();
  16. }
  17. });
  18. /*logout*/
  19. var lgoBtn = document.getElementById("lgoBtn");
  20. lgoBtn.addEventListener("click", () => {
  21. window.location = "/logout";
  22. });
  23. var mngBtn = document.getElementById("mngBtn");
  24. mngBtn.addEventListener("click", () => {
  25. window.location = "/main";
  26. });
  27. async function toggleSus(postid){
  28. var response = await fetch("/toggleShow", {
  29. method: "POST",
  30. headers: {
  31. "Accept":"application/json",
  32. "Content-Type":"application/json"
  33. },
  34. body:JSON.stringify({postid:postid})
  35. })
  36. var data = await response.json();
  37. console.log(data);
  38. if(data.suc || !data.suc){
  39. loadPosts();
  40. }
  41. };
  42. async function deletePost(postid){
  43. var response = await fetch("/deletePost", {
  44. method: "POST",
  45. headers: {
  46. "Accept":"application/json",
  47. "Content-Type":"application/json"
  48. },
  49. body:JSON.stringify({postid:postid})
  50. })
  51. var data = await response.json();
  52. console.log(data);
  53. if(data.suc || !data.suc){
  54. loadPosts();
  55. }
  56. };
  57. document.addEventListener("click", function(e){
  58. if(e.target && e.target.classList.contains("susButton")){
  59. var postid = e.target.getAttribute("data-username");
  60. toggleSus(postid);
  61. }else if(e.target && e.target.classList.contains("remButton")){
  62. var postid = e.target.getAttribute("data-username");
  63. deletePost(postid);
  64. }
  65. })
  66. /*Show Elements*/
  67. var maxPages;
  68. var currentPage = 0;
  69. var maxDisplayed = 8;
  70. async function loadPosts(){
  71. var response = await fetch("/getposts", {
  72. method: "GET",
  73. headers: {
  74. "Accept":"application/json",
  75. "Content-Type":"application/json"
  76. }
  77. })
  78. var data = await response.json();
  79. try{
  80. showPosts(data.users.slice(0 + (currentPage * maxDisplayed), maxDisplayed + (currentPage * maxDisplayed)));
  81. console.log(data.users.slice(0 + (currentPage * maxDisplayed), maxDisplayed + (currentPage * maxDisplayed)));
  82. maxPages = data.users.length / 8;
  83. console.log(maxPages, currentPage+1)
  84. reviewButtons = document.getElementsByClassName('editButton');
  85. console.log(reviewButtons.length);
  86. addButtons();
  87. }catch(error){
  88. document.getElementById("table").innerHTML = ""; //empty table
  89. }
  90. };
  91. loadPosts();
  92. function showPosts(pdata){
  93. document.getElementById("table").innerHTML = ""; //empty table
  94. var container = document.getElementById("table"); //insert in table
  95. pdata.forEach(element => {
  96. var row = document.createElement("div");
  97. var status;
  98. var susbuttonstate;
  99. if(!element.showpost) {
  100. status = "hidden"
  101. susbuttonstate = "icon-eye-close"
  102. } else {
  103. status = "shown"
  104. susbuttonstate = "icon-eye-open"
  105. }
  106. row.classList.add("row");
  107. row.innerHTML = `
  108. <div class="col-left">
  109. <h2>${element.title}</h2>
  110. </div>
  111. <div class="col-right">
  112. <button class="editButton" data-username="${element.postid}">
  113. <i class="icon-file-text-alt , icon"></i>
  114. </button>
  115. <button class="${status} susButton" data-username="${element.postid}">
  116. <i class="${susbuttonstate} , icon"></i>
  117. </button>
  118. <button class="remButton" data-username="${element.postid}">
  119. <i class="icon-trash , icon"></i>
  120. </button>
  121. </div>
  122. `
  123. container.appendChild(row)
  124. });
  125. }
  126. async function reviewPost(postid){
  127. var response = await fetch("/updatePostID", {
  128. method: "POST",
  129. headers: {
  130. "Accept":"application/json",
  131. "Content-Type":"application/json"
  132. },
  133. body:JSON.stringify({postid:postid})
  134. })
  135. var data = await response.json();
  136. if(data || !data)
  137. {
  138. window.location = "/post-review";
  139. }
  140. };
  141. function addButtons(){
  142. for(let i = 0; i < reviewButtons.length; i++){
  143. reviewButtons[i].addEventListener('click', function(){
  144. reviewPost(this.dataset.username)
  145. })
  146. }
  147. }
  148. });