Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const baseURL = 'https://baas.kinvey.com/appdata/';
  2. const appKey = 'kid_rJhI6qsbr';
  3. const userName = 'guest';
  4. const password = 'guest';
  5. const endpoint = 'books';
  6. const headers = {
  7.     'Authorization':`Basic ${btoa(userName + ':' + password)}`,
  8.     'Content-Type':'application/json'
  9. };
  10. let tBody = document.querySelector('tbody');
  11. let title = document.getElementById('title');
  12. let author = document.getElementById('author');
  13. let isbn = document.getElementById('isbn');
  14.  
  15. document.querySelector('button').addEventListener('click',handleLoadBooks);
  16. let submitButton = document.getElementById('submitBtn');
  17. submitButton.addEventListener('click',handleAddBook);
  18. let form = document.querySelector('form').querySelector('h3');
  19.  
  20.  
  21.  
  22. async function handleLoadBooks() {
  23.     tBody.innerHTML = '';
  24.     let bookObject = await fetch(baseURL + appKey + '/' + endpoint,{
  25.     method:'GET',
  26.     headers:headers
  27. }).then((data) => data.json())
  28.         .then(data => data);
  29.  
  30.     for(let book of Object.values(bookObject)){
  31.             createBook(book.title,book.author,book.isbn,book._id);
  32.     }
  33. }
  34.  
  35. function createBook(title,author,isbn,id) {
  36.     let newTrElement = document.createElement('tr');
  37.     let tdBook = document.createElement('td');
  38.     tdBook.textContent = title;
  39.     tdBook.id = id;
  40.     let tdAuthor = document.createElement('td');
  41.     tdAuthor.textContent = author;
  42.     let tdIsbn = document.createElement('td');
  43.     tdIsbn.textContent = isbn;
  44.     let tdButtons = document.createElement('td');
  45.     let edit = document.createElement('button');
  46.     edit.textContent = 'Edit';
  47.     edit.id = 'editBtn';
  48.     edit.addEventListener('click',handleEdit);
  49.     let deleteBtn = document.createElement('button');
  50.     deleteBtn.textContent = 'Delete';
  51.     deleteBtn.addEventListener('click',handleDelete);
  52.     tdButtons.appendChild(edit);
  53.     tdButtons.appendChild(deleteBtn);
  54.  
  55.     newTrElement.appendChild(tdBook);
  56.     newTrElement.appendChild(tdAuthor);
  57.     newTrElement.appendChild(tdIsbn);
  58.     newTrElement.appendChild(tdButtons);
  59.  
  60.     tBody.appendChild(newTrElement);
  61.  
  62. }
  63.  
  64. async function handleAddBook(e) {
  65.     e.preventDefault();
  66.  
  67.     let bookObject = {"title":`${title.value}`, "author":`${author.value}`, "isbn":`${isbn.value}`};
  68.  
  69.     try{
  70.         await fetch(baseURL + appKey + '/' + endpoint,{
  71.             method:'POST',
  72.             headers:headers,
  73.             body:JSON.stringify(bookObject)
  74.         })
  75.             .then(response => response.json())
  76.             .then(print => {
  77.                 createBook(title.value,author.value,isbn.value,print._id);
  78.             });
  79.     }catch (e) {
  80.         console.log(e.message)
  81.     }
  82.  
  83.     title.value = '';
  84.     author.value = '';
  85.     isbn.value = '';
  86. }
  87.  
  88. async function handleEdit(e){
  89.     e.preventDefault();
  90.     if(this.textContent === 'Edit'){
  91.         submitButton.style.display = 'none';
  92.         this.textContent = 'Click to save changes';
  93.         form.textContent = 'EDIT FORM';
  94.     }else{
  95.         let currentTitle = this.parentNode.parentNode.querySelector('td');
  96.         let currentAuthor = this.parentNode.parentNode.querySelectorAll('td')[1];
  97.         let currentIsbn = this.parentNode.parentNode.querySelectorAll('td')[2];
  98.         console.log(currentIsbn);
  99.         let book = {"title":`${currentTitle.textContent}`, "author":`${currentAuthor.textContent}`, "isbn":`${currentIsbn.textContent}`};
  100.         if(title.value){
  101.             book["title"] = title.value;
  102.         }
  103.         if(author.value){
  104.             book["author"] = author.value;
  105.         }
  106.         if(isbn.value){
  107.             book["isbn"] = isbn.value;
  108.         }
  109.  
  110.         try{
  111.             await fetch(baseURL + `${appKey}/` + `${endpoint}/` + `${this.parentNode.parentNode.querySelector('td').id}`,{
  112.                 method:'PUT',
  113.                 headers:headers,
  114.                 body:JSON.stringify(book)
  115.             })
  116.                 .then(book => book.json());
  117.  
  118.             currentTitle.textContent = book["title"];
  119.             currentAuthor.textContent = book["author"];
  120.             currentIsbn.textContent = book["isbn"];
  121.             submitButton.style.display = 'block';
  122.             this.textContent = 'Edit';
  123.             form.textContent = 'CREATION FORM';
  124.         }catch (e) {
  125.             console.log(e.message)
  126.         }
  127.     }
  128.  
  129.     title.value = '';
  130.     author.value = '';
  131.     isbn.value = '';
  132. }
  133.  
  134.  
  135. async function handleDelete() {
  136.     let idToEdit = this.parentNode.parentNode.querySelector('td').id;
  137.     try{
  138.         await fetch(baseURL + `${appKey}/` + `${endpoint}/` + idToEdit,{
  139.             method:'DELETE',
  140.             headers:headers
  141.         })
  142.             .then(book => book.json());
  143.         let element = this.parentNode.parentNode;
  144.         element.parentNode.removeChild(element);
  145.     }catch (e) {
  146.         console.log(e.message)
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement