taskList.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. window.currentList = 0
  2. async function openTask(event) {
  3. let taskId = event.target.parentNode.getAttribute('data_id')
  4. let response = await fetch(`/tasks/${taskId}`, {
  5. method: "GET",
  6. headers: {
  7. 'Accept': 'application/json',
  8. 'Content-Type': 'application/json'
  9. }
  10. }
  11. )
  12. if (response.status === 200) {
  13. let result = await response.json()
  14. let task = result.data
  15. document.querySelector('#taskFormContainer h2').innerHTML = "Редактирование"
  16. if (task) {
  17. document.querySelector('#taskFormContainer #task_id').value = task.id
  18. document.querySelector('#taskFormContainer #name').value = task.name
  19. document.querySelector('#taskFormContainer #type_name').value = task.type.name
  20. document.querySelector('#taskFormContainer #place').value = task.place
  21. document.querySelector('#taskFormContainer #date').value = task.date
  22. document.querySelector('#taskFormContainer #time').value = task.time
  23. document.querySelector('#taskFormContainer #duration').value = task.duration
  24. document.querySelector('#taskFormContainer #comment').value = task.comment
  25. }
  26. }
  27. else {
  28. alert("task Not found")
  29. }
  30. }
  31. async function onClickDone(event) {
  32. event.stopPropagation()
  33. let taskId = event.target.parentNode.parentNode.getAttribute("data_id")
  34. let body = {
  35. done: event.target.checked,
  36. "_token": document.getElementsByName('_token')[0].value
  37. }
  38. event.target.disabled= true;
  39. let response = await fetch(`/tasks/${taskId}`, {
  40. method: "PUT",
  41. headers: {
  42. 'Accept': 'application/json',
  43. 'Content-Type': 'application/json'
  44. },
  45. body: JSON.stringify(body)
  46. }
  47. )
  48. if (response.status === 201) {
  49. await loadNewTaskList()
  50. }
  51. else {
  52. let result = await response.json()
  53. console.log(result)
  54. event.target.checked = !event.target.checked
  55. }
  56. event.target.disabled= false
  57. }
  58. async function listTypeEvent(event) {
  59. let allButtons = document.querySelectorAll('.btn-group-lg button')
  60. allButtons.forEach((buttonElem) => {
  61. buttonElem.disabled = true
  62. buttonElem.classList.remove('active')
  63. })
  64. event.target.classList.add('active')
  65. event.target.disabled = false
  66. await loadNewTaskList(event.target.getAttribute('dataListType'))
  67. allButtons.forEach((buttonElem) => {
  68. buttonElem.disabled = false
  69. })
  70. }
  71. async function loadNewTaskList(listType = window.currentList) {
  72. let response = await fetch(`/tasks?TypeList=${listType}`, {
  73. method: "GET",
  74. headers: {
  75. 'Accept': 'application/json',
  76. 'Content-Type': 'application/json'
  77. }
  78. }
  79. )
  80. if (response.status === 200) {
  81. let result = await response.json()
  82. window.currentList = listType
  83. let tableBody = document.querySelector('tbody')
  84. tableBody.innerHTML = ""
  85. result.data.forEach((task) => {
  86. let row = document.createElement('tr')
  87. row.onclick = openTask
  88. for (let i = 0; i < 7; i++)
  89. row.append(document.createElement('td'))
  90. fillRow(row, task)
  91. let doneElem = document.createElement('td')
  92. let inputDone = document.createElement('input')
  93. inputDone.type = 'checkbox'
  94. inputDone.onclick = onClickDone
  95. inputDone.checked = task.done
  96. doneElem.append(inputDone)
  97. row.append(doneElem)
  98. tableBody.append(row)
  99. })
  100. }
  101. }