Advertisement
Iv555

Untitled

Apr 9th, 2023
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.15 KB | None | 0 0
  1. window.addEventListener('load', solve);
  2.  
  3. function solve() {
  4. let id = 0;
  5. let totalPoints = 0;
  6. const taskIdInput = document.getElementById('task-id');
  7. const titleInput = document.getElementById('title');
  8. const descriptionInput = document.getElementById('description');
  9. const selectLabelInput = document.getElementById('label');
  10. const pointsInput = document.getElementById('points');
  11. const assigneeInput = document.getElementById('assignee');
  12. const createTaskBtn = document.getElementById('create-task-btn');
  13. const deleteTaskBtn = document.getElementById('delete-task-btn');
  14. const tasksSection = document.getElementById('tasks-section');
  15. const totalSprintPoints = document.getElementById('total-sprint-points');
  16. const form = document.getElementById('create-task-form');
  17.  
  18. const selectLabelIcons = {
  19. 'Feature': '&#8865',
  20. 'Low Priority Bug': '&#9737',
  21. 'High Priority Bug': '&#9888',
  22. }
  23.  
  24. const labelDivAddClass = {
  25. 'Feature': 'feature',
  26. 'Low Priority Bug': 'low-priority',
  27. 'High Priority Bug': 'high-priority',
  28. }
  29.  
  30. createTaskBtn.addEventListener('click', createTask);
  31.  
  32. function createTask() {
  33. const title = titleInput.value;
  34. const description = descriptionInput.value;
  35. const points = pointsInput.value;
  36. const assignee = assigneeInput.value;
  37. const selectLabel = selectLabelInput.value;
  38.  
  39. if (title && description && points && assignee && selectLabel) {
  40. totalPoints += Number(points);
  41. totalSprintPoints.textContent = `Total Points ${totalPoints}pts`;
  42. const article = createElements('article', '', false, tasksSection, `task-${++id}`, ['task-card']);
  43. const selectLabelDiv = createElements('div', `${selectLabel} ${selectLabelIcons[selectLabel]}`, true, article, '', ['task-card-label', labelDivAddClass[selectLabel]]);
  44. const titleH3 = createElements('h3', title, false, article, '', ['task-card-title']);
  45. const descriptionPara = createElements('p', description, false, article, '', ['task-card-description']);
  46. const pointsDiv = createElements('div', `Estimated at ${points} pts`, false, article, '', ['task-card-points']);
  47. const assigneeDiv = createElements('div', `Assigned to ${assignee}`, false, article, '', ['task-card-assignee']);
  48. const taskCardActionsDiv = createElements('div', '', false, article, '', ['task-card-actions']);
  49. const deleteBtn = createElements('button', 'Delete', false, taskCardActionsDiv);
  50.  
  51. form.reset();
  52.  
  53. deleteBtn.addEventListener('click', (e) => {
  54. taskIdInput.id = e.currentTarget.parentNode.parentNode.id;
  55. titleInput.value = title;
  56. descriptionInput.value = description;
  57. pointsInput.value = points;
  58. assigneeInput.value = assignee;
  59. selectLabelInput.value = selectLabel;
  60. deleteTaskBtn.disabled = false;
  61. createTaskBtn.disabled = true;
  62. titleInput.disabled = true;
  63. descriptionInput.disabled = true;
  64. pointsInput.disabled = true;
  65. assigneeInput.disabled = true;
  66. selectLabelInput.disabled = true;
  67. })
  68. }
  69. }
  70.  
  71. deleteTaskBtn.addEventListener('click', (e) => {
  72. const searchForm = e.currentTarget.parentNode.parentNode;
  73. const elementToRemoveId = searchForm.getElementsByTagName('input')[0].id;
  74. let articleToRemove = tasksSection.querySelector(`#${elementToRemoveId}`);
  75. articleToRemove.remove();
  76. totalPoints -= Number(pointsInput.value)
  77. totalSprintPoints.textContent = `Total Points ${totalPoints}pts`;
  78. form.reset();
  79. selectLabelInput.value = '';
  80. titleInput.disabled = false;
  81. descriptionInput.disabled = false;
  82. pointsInput.disabled = false;
  83. assigneeInput.disabled = false;
  84. selectLabelInput.disabled = false;
  85. deleteTaskBtn.disabled = true;
  86. createTaskBtn.disabled = false;
  87. })
  88.  
  89.  
  90. function createElements(type, contentOrValue, useInnerHTML, parentNode, id, classes, attributes) {
  91. const htmlElement = document.createElement(type);
  92. if (contentOrValue && useInnerHTML) {
  93. htmlElement.innerHTML = contentOrValue;
  94. }
  95. else {
  96. if (contentOrValue && type === 'input') {
  97. htmlElement.value = contentOrValue;
  98. }
  99. if (contentOrValue && type !== 'input') {
  100. htmlElement.textContent = contentOrValue;
  101. }
  102. }
  103.  
  104. if (id) {
  105. htmlElement.id = id;
  106. }
  107. if (classes) {
  108. htmlElement.classList.add(...classes)
  109. }
  110. // {src: 'link', href : 'http'}
  111. if (attributes) {
  112. for (const key in attributes) {
  113. htmlElement.setAttribute(key, attributes[key])
  114. }
  115. }
  116. if (parentNode) {
  117. parentNode.appendChild(htmlElement);
  118. }
  119. return htmlElement;
  120. }
  121.  
  122. }
  123.  
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement