Guest User

Untitled

a guest
Apr 2nd, 2024
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>task</title>
  5. <meta
  6. charset="UTF-8"
  7. name="viewport"
  8. http-equiv="X-UA-Compatible"
  9. content="width=device-width, initial-scale=1.0, user-scalable=no, ie=edge"
  10. />
  11. <style>
  12. #taskList {
  13. display: flex;
  14. flex-direction: column;
  15. text-align: center;
  16. border: 3px solid rgb(0, 0, 200);
  17. border-radius: 10px;
  18. background-image: linear-gradient(rgb(155, 255, 155), rgb(155, 155, 255));
  19. }
  20. #taskList > h4 {
  21. margin: 0;
  22. color: rgb(255, 255, 255);
  23. background-color: rgb(0, 0, 255);
  24. }
  25. #taskList > input, #taskList > small > input {
  26. flex: 2;
  27. outline: none;
  28. text-align: center;
  29. }
  30. #taskList > button, #taskList > small > button {
  31. border: 0;
  32. color: rgb(255, 255, 255);
  33. background-color: rgb(0, 0, 255);
  34. }
  35. #taskList > small {
  36. display: inherit;
  37. border-top: 3px solid rgb(0, 0, 200);
  38. }
  39. #taskList > small > b {
  40. flex: 2;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <div id="taskList">
  46. <h4>Tasks</h4>
  47. <input type="text" id="taskInput" />
  48. <button>+</button>
  49. </div>
  50. <script>
  51. var index = 1;
  52.  
  53. var taskList = document.getElementById("taskList");
  54.  
  55. taskList.children[2].addEventListener("click", ()=>{post(taskList.children[1].value)});
  56.  
  57. var createTask = (id, val) => {
  58. var task = document.createElement("small");
  59. task.id = id;
  60. task.innerHTML = `
  61. <button onclick="updateTask('${id}')">/</button>
  62. <b>${val}</b>
  63. <button onclick="deleteTask('${id}')">-</button>
  64. `;
  65. taskList.appendChild(task);
  66. };
  67.  
  68. var deleteTask = (taskId) => {
  69. var el = document.getElementById(taskId);
  70. var text = "";
  71. for(var i=2;i < el.innerText.length-2; i++){
  72. text += el.innerText[i];
  73. }
  74. fetch("/delete", {
  75. method: "DELETE",
  76. body: JSON.stringify({id: taskId, task: text})
  77. });
  78. document.getElementById(taskId).remove();
  79. };
  80.  
  81. var updateTask = (id) => {
  82. var el = document.getElementById(id);
  83. var text = "";
  84. for(var i=1;i < el.innerText.length-1; i++){
  85. text += el.innerText[i];
  86. }
  87. el.innerHTML = `<button>ok</button><input type="text" value="${text}" />`;
  88. el.children[0].addEventListener("click", () => {
  89. text = el.children[1].value;
  90. el.innerHTML = `
  91. <button onclick="updateTask('${id}')">/</button>
  92. <b>${text}</b>
  93. <button onclick="deleteTask('${id}')">-</button>
  94. `;
  95. });
  96. };
  97.  
  98. fetch("/getTasks", {method: "GET"}).then(response => response.text()).then(data => {
  99. const parser = new DOMParser();
  100. const xml = parser.parseFromString(data, "text/xml");
  101. const items = xml.getElementsByTagName("task");
  102. for(var i=0; i < items.length; i++){
  103. createTask(items[i].children[0].textContent, items[i].children[1].textContent);
  104. }
  105. index = Number(items[items.length - 1].children[0].textContent);
  106. }).catch(err => alert(err));
  107.  
  108. post = (val) => {
  109. fetch("/postTask", {
  110. method: "POST",
  111. body: JSON.stringify({task: val})
  112. }).then(response => response.json()).then(data => {
  113. if(data.error){
  114. alert(data.error);
  115. document.getElementById(data.field).style.cssText = `
  116. color: rgb(255, 0, 0);
  117. border-color: rgb(255, 0, 0);
  118. `;
  119. } else if(data.success){
  120. index++;
  121. createTask(index.toString(), val);
  122. taskList.children[1].style.cssText = `
  123. color: rgb(0, 0, 0);
  124. border-color: default;
  125. `;
  126. }
  127. });
  128. };
  129. </script>
  130. </body>
  131. </html>
Advertisement
Add Comment
Please, Sign In to add comment