services.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. function changeServices(e) {
  2. e.preventDefault();
  3. var url = "services/update?1=1";
  4. var i, inputs = document.querySelectorAll("#" + e.target.id + " input,select");
  5. for (i = 0; i < inputs.length; i++) {
  6. if (inputs[i].type == "checkbox") {
  7. if (inputs[i].name.slice(-6) == "enable")
  8. continue;
  9. var val = (inputs[i].checked) ? 1 : 0;
  10. url += "&" + inputs[i].name + "=" + val;
  11. }
  12. else
  13. url += "&" + inputs[i].name + "=" + inputs[i].value;
  14. };
  15. hideWarning();
  16. var n = e.target.id.replace("-form", "");
  17. var cb = $("#" + n + "-button");
  18. addClass(cb, "pure-button-disabled");
  19. ajaxSpin("POST", url, function (resp) {
  20. showNotification(n + " updated");
  21. removeClass(cb, "pure-button-disabled");
  22. }, function (s, st) {
  23. showWarning("Error: " + st);
  24. removeClass(cb, "pure-button-disabled");
  25. window.setTimeout(fetchServices, 100);
  26. });
  27. }
  28. function displayServices(data) {
  29. Object.keys(data).forEach(function (v) {
  30. el = $("#" + v);
  31. if (el != null) {
  32. if (el.nodeName === "INPUT") el.value = data[v];
  33. else el.innerHTML = data[v];
  34. return;
  35. }
  36. el = document.querySelector('input[name="' + v + '"]');
  37. if (el == null)
  38. el = document.querySelector('select[name="' + v + '"]');
  39. if (el != null) {
  40. if (el.type == "checkbox") {
  41. el.checked = data[v] == "enabled";
  42. } else el.value = data[v];
  43. }
  44. });
  45. $("#syslog-spinner").setAttribute("hidden", "");
  46. $("#sntp-spinner").setAttribute("hidden", "");
  47. if (data.syslog_host !== undefined) {
  48. $("#Syslog-form").removeAttribute("hidden");
  49. } else {
  50. // syslog disabled...
  51. $("#Syslog-form").parentNode.setAttribute("hidden", "");
  52. }
  53. $("#SNTP-form").removeAttribute("hidden");
  54. var i, inputs = $("input");
  55. }
  56. function fetchServices() {
  57. ajaxJson("GET", "/services/info", displayServices, function () {
  58. window.setTimeout(fetchServices, 1000);
  59. });
  60. }