Advertisement
pacho_the_python

Untitled

Apr 10th, 2023
3,087
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function task_1(data) {
  2.  
  3.     class Task {
  4.         constructor(id, title, status, points) {
  5.             this.id = id
  6.             this.title = title
  7.             this.status = status
  8.             this.points = points
  9.         }
  10.     }
  11.  
  12.     let board_num = Number(data.shift())
  13.     let task_board = {}
  14.     for (let i = 0; i < board_num; i++) {
  15.         let [name, id, title, status, points] = data.shift().split(':')
  16.         if (!task_board.hasOwnProperty(name)) {
  17.             let new_task = new Task(id, title, status, points)
  18.             task_board[name] = [new_task]
  19.         } else {
  20.             let new_task = new Task(id, title, status, points)
  21.             task_board[name].push(new_task)
  22.         }
  23.     }
  24.     for (let j = 0; j < data.length; j++) {
  25.         let command_data = data[j].split(':')
  26.         let command = command_data[0]
  27.         if (command === 'Add New') {
  28.             let hero_name = command_data[1]
  29.             let task_id = command_data[2]
  30.             let task_title = command_data[3]
  31.             let task_status = command_data[4]
  32.             let task_points = command_data[5]
  33.             if (task_board.hasOwnProperty(hero_name)) {
  34.                 let added_task = new Task(task_id, task_title, task_status, task_points)
  35.                 task_board[hero_name].push(added_task)
  36.             } else {
  37.                 console.log(`Assignee ${hero_name} does not exist on the board!`)
  38.             }
  39.         }
  40.         else if (command === 'Change Status') {
  41.             let current_name = command_data[1]
  42.             let current_id = command_data[2]
  43.             let new_status = command_data[3]
  44.             if (task_board.hasOwnProperty(current_name)) {
  45.                 let change_status_task = get_current_task(task_board[current_name], current_id)
  46.                 if (change_status_task) {
  47.                     change_status_task.status = new_status
  48.                 } else {
  49.                     console.log(`Task with ID ${current_id} does not exist for ${current_name}!`)
  50.                 }
  51.             } else {
  52.                 console.log(`Assignee ${current_name} does not exist on the board!`)
  53.             }
  54.         }
  55.         else if (command === 'Remove Task') {
  56.             let assignee_name  = command_data[1]
  57.             let index = Number(command_data[2])
  58.             if (task_board.hasOwnProperty(assignee_name)) {
  59.                 if (0 <= index && index < task_board[assignee_name].length) {
  60.                     task_board[assignee_name].splice(index, 1)
  61.                 } else {
  62.                     console.log("Index is out of range!")
  63.                 }
  64.             } else {
  65.                 console.log(`Assignee ${assignee_name} does not exist on the board!`)
  66.             }
  67.         }
  68.     }
  69.  
  70.     let to_do = 0
  71.     let progress = 0
  72.     let core_review = 0
  73.     let done = 0
  74.     let sum = 0
  75.  
  76.     let task_data = Object.values(task_board)
  77.     for (const items of task_data) {
  78.         for (const item of items) {
  79.             if (item.status === 'ToDo') {
  80.                 to_do += Number(item.points)
  81.                 sum += Number(item.points)
  82.             }
  83.             else if (item.status === 'In Progress') {
  84.                 progress += Number(item.points)
  85.                 sum += Number(item.points)
  86.             }
  87.             else if (item.status === 'Code Review') {
  88.                 core_review += Number(item.points)
  89.                 sum += Number(item.points)
  90.             }
  91.             else if (item.status === 'Done') {
  92.                 done += Number(item.points)
  93.             }
  94.         }
  95.     }
  96.  
  97.     console.log(`ToDo: ${to_do}pts`)
  98.     console.log(`In Progress: ${progress}pts`)
  99.     console.log(`Code Review: ${core_review}pts`)
  100.     console.log(`Done Points: ${done}pts`)
  101.  
  102.     if (done >= sum) {
  103.         console.log('Sprint was successful!')
  104.     } else {
  105.         console.log('Sprint was unsuccessful...')
  106.     }
  107.  
  108.  
  109.  
  110.     function get_current_task(task_list, task_id) {
  111.         for (const task of task_list) {
  112.             if (task.id === task_id) {
  113.                 return task
  114.             }
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement