4
0

confirm_handler.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. class ConfirmHandler {
  2. remove(url) {
  3. let request = new RequestBuilder(url);
  4. request.withCallback(() => window.location.reload());
  5. request.execute();
  6. }
  7. handle(event) {
  8. let questionElement = document.createElement("span");
  9. let linkElement = event.target;
  10. let containerElement = linkElement.parentNode;
  11. linkElement.style.display = "none";
  12. let yesElement = document.createElement("a");
  13. yesElement.href = "#";
  14. yesElement.appendChild(document.createTextNode(linkElement.dataset.labelYes));
  15. yesElement.onclick = (event) => {
  16. event.preventDefault();
  17. let loadingElement = document.createElement("span");
  18. loadingElement.className = "loading";
  19. loadingElement.appendChild(document.createTextNode(linkElement.dataset.labelLoading));
  20. questionElement.remove();
  21. containerElement.appendChild(loadingElement);
  22. this.remove(linkElement.dataset.url);
  23. };
  24. let noElement = document.createElement("a");
  25. noElement.href = "#";
  26. noElement.appendChild(document.createTextNode(linkElement.dataset.labelNo));
  27. noElement.onclick = (event) => {
  28. event.preventDefault();
  29. linkElement.style.display = "inline";
  30. questionElement.remove();
  31. };
  32. questionElement.className = "confirm";
  33. questionElement.appendChild(document.createTextNode(linkElement.dataset.labelQuestion + " "));
  34. questionElement.appendChild(yesElement);
  35. questionElement.appendChild(document.createTextNode(", "));
  36. questionElement.appendChild(noElement);
  37. containerElement.appendChild(questionElement);
  38. }
  39. }