Advertisement
Silviya7

SprintBoard

Jun 12th, 2024 (edited)
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. function attachEvents() {
  3.    const baseUrl='http://localhost:3030/jsonstore/tasks/';
  4.    
  5.     const BtnLoad=document.getElementById('load-board-btn');
  6.     const BtnAdd= document.getElementById('create-task-btn');
  7.  
  8.      const TODO= document.querySelector('#todo-section .task-list');
  9.      const InProgress=document.querySelector('#in-progress-section .task-list');
  10.      const CodeReview=document.querySelector('#code-review-section .task-list');
  11.      const Done= document.querySelector('#done-section .task-list');
  12.    
  13.  
  14.      const InputTitle= document.querySelector('#title');
  15.      const InputDescription= document.querySelector('#description');
  16.      let idtask;
  17.     const LoadBoards = async(e)=> {
  18.         e.preventDefault();
  19.         const response = await fetch(baseUrl);
  20.         const data= await response.json();
  21.         console.log(Object.values(data));
  22.  
  23.          TODO.innerHTML='';
  24.          InProgress.innerHTML='';
  25.          CodeReview.innerHTML='';
  26.          Done.innerHTML='';
  27.         for (const task of Object.values(data)) {
  28.            
  29.             const Eltitle=document.createElement('h3');
  30.             Eltitle.textContent=task.title;
  31.             const Eldescription=document.createElement('p');
  32.             Eldescription.textContent=task.description;
  33.            
  34.             const BtnMove= document.createElement('button');        
  35.             BtnMove.setAttribute("data-id", task._id)
  36.            
  37.             const Elli= document.createElement('li');
  38.             Elli.classList.add('task');
  39.  
  40.             Elli.appendChild(Eltitle);
  41.             Elli.appendChild(Eldescription);
  42.             Elli.appendChild(BtnMove);    
  43.          
  44.             //add task in different column
  45.             switch(task.status){
  46.  
  47.                 case 'ToDo':
  48.                 TODO.appendChild(Elli);              
  49.                 BtnMove.textContent='Move to In Progress';
  50.                  break;
  51.                 case 'In Progress':              
  52.                   InProgress.appendChild(Elli);
  53.                 BtnMove.textContent='Move to Code Review';
  54.                   break;
  55.                 case 'Code Review':
  56.                 CodeReview.appendChild(Elli);
  57.                 BtnMove.textContent='Move to Done';
  58.                   break;
  59.                 case 'Done':
  60.                 Done.appendChild(Elli);
  61.                 BtnMove.textContent='Close';
  62.                   break;
  63.             }
  64.  
  65.               BtnMove.addEventListener('click',async(event)=>{
  66.               event.preventDefault();
  67.                idtask=task._id;  
  68.                const title= task.title;
  69.                const description=task.description;
  70.                let status=task.status;        
  71.                const BtnText=  BtnMove.textContent;
  72.                let response='';
  73.          
  74.  
  75.                 switch(status){
  76.                  case'ToDo':
  77.                  status='In Progress';
  78.                  BtnMove.textContent='Move to Code Review';  
  79.                  TODO.removeChild(Elli) ;
  80.                  InProgress.appendChild(Elli);
  81.                                      
  82.                   response= await fetch(`${baseUrl}${idtask}`,{
  83.                 // method:'PATCH',
  84.                 method:'PUT',
  85.                  headers:{
  86.                      'content-type':'application/json',
  87.                  },
  88.                  body: JSON.stringify({title, description, status, _id:idtask})
  89.                 // body:JSON.stringify({ status:'In Progress'
  90.                
  91.                  });
  92.                   break;
  93.  
  94.                  case'In Progress':
  95.                  status='Code Review';
  96.                  BtnMove.textContent='Move to Done';
  97.                  InProgress.removeChild(Elli) ;
  98.                  CodeReview.appendChild(Elli);
  99.                
  100.                  response= await fetch(`${baseUrl}${idtask}`,{
  101.                    // method:'PATCH',
  102.                    method:'PUT',
  103.                     headers:{
  104.                       'content-type':'application/json',
  105.                     },              
  106.                    // body:JSON.stringify({
  107.                     //    status:'Code Review'
  108.                     body: JSON.stringify({title, description, status, _id:idtask})
  109.                  
  110.                   });
  111.                  break;
  112.  
  113.                  case'Code Review':
  114.                  status='Done' ;  
  115.                  BtnMove.textContent='Close';
  116.                  CodeReview.removeChild(Elli) ;  
  117.                  Done.appendChild(Elli);            
  118.                          
  119.                  response= await fetch(`${baseUrl}${idtask}`,{
  120.                    // method:'PATCH',
  121.                    method:'PUT',
  122.                     headers:{
  123.                       'content-type':'application/json',
  124.                     },
  125.                     body: JSON.stringify({title, description, status, _id:idtask})
  126.                   //  body:JSON.stringify({
  127.                   //     status:'Done'
  128.                  // })
  129.                   });
  130.                  break;
  131.                  case 'Done':
  132.                
  133.                   response= await fetch(`${baseUrl}${idtask}`,{
  134.                      method:'DELETE'
  135.                   });
  136.                
  137.                   Done.removeChild(Elli);
  138.              
  139.  
  140.                 }
  141.            
  142.                 LoadBoards(event);
  143.             })
  144.         }
  145.  
  146.     }
  147.  
  148.     BtnLoad.addEventListener('click',LoadBoards);
  149.  
  150.     BtnAdd.addEventListener('click',async(event)=>{
  151.  
  152.       event.preventDefault();
  153.       const title= InputTitle.value;
  154.       const description=InputDescription.value;
  155.  
  156.        if( title == ''|| description ==''){
  157.         return;
  158.         }
  159.        
  160.         //nqma id
  161.         const status='ToDo';
  162.        // let btn = event.target;
  163.        
  164.        
  165.         const response=await fetch(baseUrl, {
  166.             method :'POST',
  167.             headers:{
  168.             'content-type':'application/json',
  169.             },
  170.             body: JSON.stringify({title,description,status}),
  171.             })          
  172.             .catch(() => {
  173.                 return;
  174.             });
  175.  
  176.  
  177.             LoadBoards(event);
  178.            
  179.             InputTitle.value = "";
  180.             InputDescription.value ="";
  181.                
  182.          
  183.     })
  184.  
  185. }
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement