Advertisement
GalinaKG

task 2 by the exam

Apr 10th, 2023 (edited)
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.addEventListener('load', solve);
  2.  
  3. function solve() {
  4.     const titleEl = document.getElementById('title');
  5.     const descriptionEl = document.getElementById('description');
  6.     const labelEl = document.getElementById('label');
  7.     const estimationPointsEl = document.getElementById('points');
  8.     const assigneeEl = document.getElementById('assignee')
  9.     const createBtn = document.getElementById('create-task-btn');
  10.     const deleteTaskBtn = document.getElementById('delete-task-btn');
  11.     createBtn.addEventListener('click', onCreate);
  12.     deleteTaskBtn.addEventListener('click', onDeleteTask);
  13.     let sectionTasks = document.getElementById('tasks-section');
  14.     let pointsEl = document.getElementById('total-sprint-points');
  15.     let taskIdEl = document.getElementById('task-id');
  16.     let totalPoints = 0;
  17.     let id = 0;
  18.  
  19.     let title;
  20.     let description;
  21.     let label;
  22.     let estimatedPoints;
  23.     let assignee;
  24.  
  25.     function onCreate() {
  26.         title = titleEl.value;
  27.         description = descriptionEl.value;
  28.         label = labelEl.value;
  29.         estimatedPoints = estimationPointsEl.value;
  30.         assignee = assigneeEl.value;
  31.  
  32.  
  33.         if (!title || !description || !label || !estimatedPoints || !assignee) {
  34.             return;
  35.         }
  36.  
  37.         id++;
  38.         totalPoints += Number(estimatedPoints);
  39.         let article = createElement('article', sectionTasks, '', ['task-card']);
  40.         article.id = `task-${id}`;
  41.         let div = createElement('div', article, `${label}`);
  42.         if (label == 'Feature') {
  43.             div.setAttribute('class', 'task-card-label feature');
  44.             div.innerHTMLt = `Feature ⊡`;
  45.         } else if (label == 'Low Priority Bug') {
  46.             div.setAttribute('class', 'task-card-label low-priority')
  47.             div.innerHTML = `Low Priority Bug ☉`;
  48.         } else if (label == 'High Priority Bug') {
  49.             div.setAttribute('class', 'task-card-label high-priority');
  50.             div.innerHTML = `High Priority Bug ⚠`;
  51.         }
  52.        
  53.         let h3 = createElement('h3', article, `${title}`, ['task-card-title']);
  54.         let p = createElement('p', article, `${description}`, ['task-card-description']);
  55.         let div2 = createElement('div', article, `Estimated at ${estimatedPoints} pts`, ['task-card-points']);
  56.         let div3 = createElement('div', article, `Assigned to: ${assignee}`, ['task-card-assignee']);
  57.         let div4 = createElement('div', article, '', ['task-card-actions']);
  58.         let deleteBtn = createElement('button', div4, 'Delete');
  59.         deleteBtn.addEventListener('click', onDelete);
  60.    
  61.         titleEl.value = '';
  62.         descriptionEl.value = '';
  63.         labelEl.value = '';
  64.         estimationPointsEl.value = '';
  65.         assigneeEl.value = '';
  66.  
  67.         pointsEl.textContent = `Total Points: ${totalPoints}pts`;
  68.     }
  69.  
  70.     function onDelete(e) {
  71.        taskIdEl.value = e.target.parentNode.parentNode.id;
  72.        titleEl.value = title;
  73.        descriptionEl.value = description;
  74.        labelEl.value = label;
  75.        estimationPointsEl.value = estimatedPoints;
  76.        assigneeEl.value = assignee;
  77.  
  78.        deleteTaskBtn.disabled = false;
  79.        createBtn.disabled = true;
  80.        titleEl.disabled = true;
  81.        descriptionEl.disabled = true;
  82.        labelEl.disabled = true;
  83.        estimationPointsEl.disabled = true;
  84.        assigneeEl.disabled = true;
  85.     }
  86.  
  87.     function onDeleteTask(e) {
  88.         let currId = taskIdEl.value;
  89.         let articleArrs = Array.from(sectionTasks.querySelectorAll('article'));
  90.         let articleForRemove = articleArrs.find((art) => art.id == currId);
  91.         let currPoints = estimationPointsEl.value;
  92.         articleForRemove.remove()
  93.         totalPoints -= Number(currPoints);
  94.         pointsEl.textContent = `Total Points ${totalPoints}pts`;
  95.  
  96.         titleEl.value = '';
  97.         descriptionEl.value = '';
  98.         labelEl.value = '';
  99.         estimationPointsEl.value = '';
  100.         assigneeEl.value = '';
  101.  
  102.         titleEl.disabled = false;
  103.         descriptionEl.disabled = false;
  104.         labelEl.disabled = false;
  105.         estimationPointsEl.disabled = false;
  106.         assigneeEl.disabled = false;
  107.  
  108.         deleteTaskBtn.disabled = true;
  109.         createBtn.disabled = false;
  110.     }
  111.  
  112.     function createElement(type, parentNode, content, classes, id, attributes, useInnerHtml) {
  113.         const htmlElement = document.createElement(type);
  114.      
  115.         if (content && useInnerHtml) {
  116.           htmlElement.innerHTML = content;
  117.         } else {
  118.           if (content && type !== 'input') {
  119.             htmlElement.textContent = content;
  120.           }
  121.      
  122.           if (content && type === 'input') {
  123.             htmlElement.value = content;
  124.           }
  125.         }
  126.      
  127.         if (classes && classes.length > 0) {
  128.           htmlElement.classList.add(...classes);
  129.         }
  130.      
  131.         if (id) {
  132.           htmlElement.id = id;
  133.         }
  134.      
  135.         // { src: 'link', href: 'http' }
  136.         if (attributes) {
  137.           for (const key in attributes) {
  138.             htmlElement.setAttribute(key, attributes[key])
  139.           }
  140.         }
  141.      
  142.         if (parentNode) {
  143.           parentNode.appendChild(htmlElement);
  144.         }
  145.      
  146.         return htmlElement;
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement