confirm_handler.js 1.9 KB

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