Advertisement
osman1997

4. book library

Jul 10th, 2021
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. let submitButton = document.getElementById('submit-button');
  2. let loadBookButton = document.getElementById('loadBooks');
  3.  
  4. let headingTitle = document.getElementById('headingTitle');
  5.  
  6. loadBookButton.addEventListener('click', reloadTable);
  7.  
  8. submitButton.addEventListener('click', createBook);
  9.  
  10. let getTable = document.querySelector('table tbody');
  11.  
  12. async function reloadTable() {
  13.  
  14. Array.from(getTable.querySelectorAll('tr')).forEach(item => item.remove());
  15.  
  16. await fetch('http://localhost:3030/jsonstore/collections/books')
  17. .then(res => res.json())
  18. .then(data => {
  19. for (const [key, value] of Object.entries(data)) {
  20. let createTr = document.createElement('tr');
  21. let createTitleTd = document.createElement('td');
  22. let createAuthorTd = document.createElement('td');
  23. let createEditButton = document.createElement('button');
  24. let createDeleteButton = document.createElement('button');
  25. let idTd = document.createElement('td');
  26. idTd.textContent = key;
  27. idTd.classList.add('hide');
  28.  
  29. createEditButton.textContent = 'Edit';
  30. createDeleteButton.textContent = 'Delete'; //Edit Delete Events
  31.  
  32. createDeleteButton.addEventListener('click', (e) => {
  33. let getId = e.currentTarget.parentNode.parentNode.querySelector('.hide').textContent;
  34. let url = 'http://localhost:3030/jsonstore/collections/books/';
  35. fetch(`${url}${getId}`, {
  36. method: 'DELETE',
  37. headers: {
  38. 'Content-Type': 'application/json'
  39. }
  40. });
  41. });
  42.  
  43.  
  44. createEditButton.addEventListener('click', handleEdit);
  45.  
  46. async function handleEdit(e) {
  47. e.preventDefault();
  48.  
  49. let title = document.getElementById('title');
  50. let author = document.getElementById('author');
  51.  
  52. let url = 'http://localhost:3030/jsonstore/collections/books/';
  53. let id = e.currentTarget.parentNode.parentNode.querySelector('.hide').textContent;
  54.  
  55. if (title.value !== '' && author.value !== '') {
  56. let bookData = {
  57. author: author.value,
  58. title: title.value
  59. }
  60.  
  61. await fetch(`${url}${id}`, {
  62. method: 'put',
  63. headers: { 'Content-Type': 'application/json' },
  64. body: JSON.stringify(bookData)
  65. });
  66. }
  67.  
  68.  
  69. }
  70.  
  71.  
  72.  
  73. let createTdButton = document.createElement('td');
  74.  
  75. createTdButton.append(createEditButton);
  76. createTdButton.append(createDeleteButton);
  77.  
  78.  
  79. createTitleTd.textContent = value.title;
  80. createAuthorTd.textContent = value.author;
  81.  
  82. createTr.appendChild(createTitleTd);
  83. createTr.appendChild(createAuthorTd);
  84. createTr.appendChild(createTdButton);
  85. createTr.appendChild(idTd);
  86.  
  87. getTable.appendChild(createTr);
  88. }
  89. })
  90. }
  91.  
  92. async function createBook(e) {
  93.  
  94. e.preventDefault();
  95.  
  96. let title = document.getElementById('title');
  97. let author = document.getElementById('author');
  98.  
  99. if (title.value !== '' && author.value !== '') {
  100. let bookData = {
  101. title: title.value,
  102. author: author.value
  103. };
  104.  
  105. let url = 'http://localhost:3030/jsonstore/collections/books';
  106.  
  107. await fetch(url, {
  108. method: 'POST',
  109. headers: {
  110. 'Content-Type': 'application/json'
  111. },
  112. body: JSON.stringify(bookData)
  113. });
  114. }
  115.  
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement