Advertisement
ErolKZ

Untitled

Mar 9th, 2022
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1.  
  2. function attachEvents() {
  3.  
  4. // HTML Elements and URL's
  5.  
  6. let baseUrl = `http://localhost:3030/jsonstore/phonebook`;
  7.  
  8. let loadBtnElement = document.getElementById('btnLoad');
  9.  
  10. let createBtnElement = document.getElementById('btnCreate');
  11.  
  12. let personInpElement = document.getElementById('person');
  13.  
  14. let phoneInpElement = document.getElementById('phone');
  15.  
  16. let ulElement = document.getElementById('phonebook');
  17.  
  18. // Load button event
  19.  
  20. loadBtnElement.addEventListener('click', (e) => {
  21.  
  22. loadEntries(baseUrl);
  23.  
  24. })
  25.  
  26. // Create button event
  27.  
  28. createBtnElement.addEventListener('click', (e) => {
  29.  
  30. createEntries(baseUrl);
  31.  
  32. })
  33.  
  34. // Delete button event
  35.  
  36. deleteButton.addEventListener('click', (e) => {
  37.  
  38. // deleteEntry();
  39.  
  40. })
  41.  
  42. // Creating entries functionality
  43.  
  44. async function createEntries(url) {
  45.  
  46. if (personInpElement.value === '' || phoneInpElement.value === '') {
  47.  
  48. alert('Invalid person or phone entry');
  49.  
  50. } else {
  51.  
  52. let entry = {
  53.  
  54. person: personInpElement.value,
  55.  
  56. phone: phoneInpElement.value
  57.  
  58. }
  59.  
  60. await request(url, 'POST', entry);
  61.  
  62. personInpElement.value = '';
  63.  
  64. phoneInpElement.value = '';
  65.  
  66. }
  67.  
  68.  
  69. }
  70.  
  71. // Load entries functionality
  72.  
  73. async function loadEntries(url) {
  74.  
  75. console.log(await request(url));
  76.  
  77. let entriesArr = Object.values(await request(url));
  78.  
  79. entriesArr.forEach(entry => {
  80.  
  81. let liElement = document.createElement('li');
  82.  
  83. let deleteButton = document.createElement('button');
  84.  
  85. deleteButton.textContent = 'Delete';
  86.  
  87. deleteButton.classList.add('button');
  88.  
  89. liElement.append(entry, deleteButton);
  90.  
  91. ulElement.appendChild(liElement);
  92.  
  93. })
  94.  
  95. }
  96.  
  97.  
  98.  
  99. // Universal Request Function
  100.  
  101. async function request(url, method, option) {
  102.  
  103. if (method) {
  104.  
  105. method = {
  106.  
  107. method: method,
  108.  
  109. headers: {
  110.  
  111. 'Content-Type': 'application/json'
  112.  
  113. },
  114.  
  115. body: JSON.stringify(option)
  116.  
  117. };
  118.  
  119. };
  120.  
  121. const response = await fetch(url, method);
  122.  
  123. return response.json();
  124.  
  125. }
  126.  
  127.  
  128. }
  129.  
  130. attachEvents();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement