taskForm.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. async function saveTask() {
  2. document.getElementsByClassName('errorsContainer')[0].innerHTML = "";
  3. if (document.querySelector('#taskFormContainer #task_id').value !== "0" && document.querySelector('#taskFormContainer #task_id').value !== "") {
  4. return updateTask()
  5. }
  6. let body = {
  7. "name": document.querySelector('#taskFormContainer #name').value,
  8. "type_name": document.querySelector('#taskFormContainer #type_name').value,
  9. "place": document.querySelector('#taskFormContainer #place').value,
  10. "date": document.querySelector('#taskFormContainer #date').value,
  11. "time": document.querySelector('#taskFormContainer #time').value,
  12. "duration": document.querySelector('#taskFormContainer #duration').value,
  13. "comment": document.querySelector('#taskFormContainer #comment').value,
  14. "_token": document.getElementsByName('_token')[0].value
  15. }
  16. let response = await fetch("/tasks/", {
  17. method: "POST",
  18. headers: {
  19. 'Accept': 'application/json',
  20. 'Content-Type': 'application/json'
  21. },
  22. body: JSON.stringify(body)
  23. }
  24. )
  25. if (response.status === 201) {
  26. await loadNewTaskList()
  27. document.querySelector('#taskFormContainer #task_id').value = ""
  28. //elem = document.createElement('tr')
  29. //for (let i = 0; i < 7; i++) {
  30. // elem.innerHTML += document.createElement('td')
  31. //}
  32. //elem.innerHTML += '<td><label for="done"></label> <input id="done" type="checkbox" onclick="onClickDone(event)"></td>'
  33. //fillRow(elem, result)
  34. //console.log(elem)
  35. //document.querySelector('tbody').append(elem)
  36. }
  37. else if (response.status === 422) {
  38. let result = await response.json()
  39. printErrors(result)
  40. }
  41. }
  42. function printErrors(error_obj) {
  43. let container = document.getElementsByClassName('errorsContainer')[0];
  44. let errors = document.createElement('div');
  45. errors.classList.add('alert');
  46. errors.classList.add('alert-danger');
  47. Object.keys(error_obj.errors).map((errorName) => {
  48. errors.innerHTML += `<p>${errorName}: ${error_obj.errors[errorName]}\n</p>`
  49. })
  50. container.append(errors)
  51. }
  52. function newTask() {
  53. document.querySelector('#taskFormContainer h2').innerHTML = "Создание"
  54. document.querySelector('#taskFormContainer #task_id').value = 0
  55. document.querySelector('#taskFormContainer #name').value = ""
  56. document.querySelector('#taskFormContainer #type_name').value = ""
  57. document.querySelector('#taskFormContainer #place').value = ""
  58. document.querySelector('#taskFormContainer #date').value = ""
  59. document.querySelector('#taskFormContainer #time').value = ""
  60. document.querySelector('#taskFormContainer #duration').value = ""
  61. document.querySelector('#taskFormContainer #comment').value = ""
  62. }
  63. async function updateTask() {
  64. document.getElementsByClassName('errorsContainer')[0].innerHTML = "";
  65. let taskId = document.querySelector('#taskFormContainer #task_id').value
  66. let body = {
  67. "name": document.querySelector('#taskFormContainer #name').value,
  68. "type_name": document.querySelector('#taskFormContainer #type_name').value,
  69. "place": document.querySelector('#taskFormContainer #place').value,
  70. "date": document.querySelector('#taskFormContainer #date').value,
  71. "time": document.querySelector('#taskFormContainer #time').value,
  72. "duration": document.querySelector('#taskFormContainer #duration').value,
  73. "comment": document.querySelector('#taskFormContainer #comment').value,
  74. "_token": document.getElementsByName('_token')[0].value
  75. }
  76. let response = await fetch(`/tasks/${taskId}`, {
  77. method: "PUT",
  78. headers: {
  79. 'Accept': 'application/json',
  80. 'Content-Type': 'application/json'
  81. },
  82. body: JSON.stringify(body)
  83. }
  84. )
  85. if (response.status === 201) {
  86. let result = await response.json()
  87. await loadNewTaskList()
  88. document.querySelector('#taskFormContainer #task_id').value = result.body.id
  89. document.querySelector('#taskFormContainer #name').value = result.body.name
  90. document.querySelector('#taskFormContainer #type_name').value = result.body.type.name
  91. document.querySelector('#taskFormContainer #place').value = result.body.place
  92. document.querySelector('#taskFormContainer #date').value = result.body.date
  93. document.querySelector('#taskFormContainer #time').value = result.body.time
  94. document.querySelector('#taskFormContainer #duration').value = result.body.duration
  95. document.querySelector('#taskFormContainer #comment').value = result.body.comment
  96. } else if (response.status === 422) {
  97. let result = await response.json()
  98. printErrors(result)
  99. }
  100. }
  101. function formatDate(date) {
  102. let dd = date.getDate()
  103. if (dd < 10) dd = '0' + dd
  104. let mm = date.getMonth() + 1
  105. if (mm < 10) mm = '0' + mm
  106. let yy = date.getFullYear()
  107. return dd + '.' + mm + '.' + yy
  108. }
  109. function fillRow(elem, data) {
  110. let cols = elem.querySelectorAll('td')
  111. elem.setAttribute('data_id', data.id)
  112. cols[0].innerText = data.name
  113. cols[1].innerText = data.type.name
  114. cols[2].innerText = data.place
  115. cols[3].innerText = formatDate(new Date(Date.parse(data.date)))
  116. cols[4].innerText = data.time
  117. cols[5].innerText = data.duration
  118. cols[6].innerText = data.comment
  119. }