page3.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. let timeLogLevel = "";
  2. function setTimeLogLevel() {
  3. const level = logLevel.value;
  4. fetch("/api/time/loglevel", {
  5. method: "POST",
  6. headers: {"Content-Type": "application/json"},
  7. body: JSON.stringify({level})
  8. })
  9. .then(async r => {
  10. if (!r.ok) throw new Error(await r.text());
  11. timeLogLevel = level;
  12. })
  13. .catch(e => {
  14. logLevel.value = timeLogLevel;
  15. });
  16. }
  17. function getTimeLogLevel() {
  18. fetch("/api/time/loglevel")
  19. .then(async r => {
  20. if (!r.ok) throw new Error(await r.text());
  21. return r.json();
  22. })
  23. .then(d => {
  24. timeLogLevel = d.log_level;
  25. logLevel.value = d.log_level;
  26. })
  27. .catch(e => {
  28. timeLogLevel = "";
  29. logLevel.value = "";
  30. });
  31. }
  32. function downloadTimeLogFile() {
  33. const btn = event.currentTarget;
  34. btn.disabled = true;
  35. fetch("/api/time/logfile")
  36. .then(async r => {
  37. if (!r.ok) {
  38. throw new Error("HTTP " + r.status);
  39. }
  40. const disposition = r.headers.get("Content-Disposition");
  41. let filename = "time.log.tar.gz";
  42. if (disposition) {
  43. const match = disposition.match(/filename="?([^";]+)"?/);
  44. if (match) {
  45. filename = match[1];
  46. }
  47. }
  48. return {
  49. blob: await r.blob(),
  50. filename
  51. };
  52. })
  53. .then(({ blob, filename }) => {
  54. const url = URL.createObjectURL(blob);
  55. const a = document.createElement("a");
  56. a.href = url;
  57. a.download = filename;
  58. document.body.appendChild(a);
  59. a.click();
  60. a.remove();
  61. setTimeout(() => {
  62. URL.revokeObjectURL(url);
  63. }, 1000);
  64. alert("下载成功");
  65. })
  66. .catch(e => {
  67. console.error("download failed:", e);
  68. alert("下载失败: " + e.message);
  69. })
  70. .finally(() => {
  71. btn.disabled = false;
  72. btn.textContent = "下载";
  73. });
  74. }
  75. function restartTimeService() {
  76. if (!confirm("确定重启时间服务吗?")) {
  77. return;
  78. }
  79. const btn = event.currentTarget;
  80. btn.disabled = true;
  81. fetch("/api/time/restart", {
  82. method: "POST"
  83. })
  84. .then(async r => {
  85. if (!r.ok) {
  86. throw new Error(await r.text());
  87. }
  88. logLevel.value = "info";
  89. timeLogLevel = logLevel.value;
  90. alert("重启成功");
  91. })
  92. .catch(e => {
  93. console.error("restart failed:", e);
  94. alert("重启失败: " + e.message);
  95. })
  96. .finally(() => {
  97. btn.disabled = false;
  98. });
  99. }
  100. let timeStatusTimer = null;
  101. function getTimeStatus() {
  102. fetch("/api/time/status")
  103. .then(async r => {
  104. if (!r.ok) {
  105. throw new Error("HTTP " + r.status);
  106. }
  107. return r.json();
  108. })
  109. .then(data => {
  110. document.getElementById("var1").textContent = data.var1 || "--";
  111. document.getElementById("var2").textContent = data.var2 || "--";
  112. document.getElementById("var3").textContent = data.var3 || "--";
  113. document.getElementById("var4").textContent = data.var4 || "--";
  114. document.getElementById("var5").textContent = data.var5 || "--";
  115. })
  116. .catch(e => {
  117. console.error("time status failed:", e);
  118. document.getElementById("var1").textContent = "--";
  119. document.getElementById("var2").textContent = "--";
  120. document.getElementById("var3").textContent = "--";
  121. document.getElementById("var4").textContent = "--";
  122. document.getElementById("var5").textContent = "--";
  123. });
  124. }
  125. function startTimeStatusRefresh() {
  126. if (timeStatusTimer) {
  127. return;
  128. }
  129. getTimeStatus();
  130. timeStatusTimer = setInterval(() => {
  131. getTimeStatus();
  132. }, 1000);
  133. }
  134. function stopTimeStatusRefresh() {
  135. if (timeStatusTimer) {
  136. clearInterval(timeStatusTimer);
  137. timeStatusTimer = null;
  138. }
  139. }
  140. function initPage3() {
  141. startTimeStatusRefresh()
  142. getTimeLogLevel();
  143. connectLog("yfkj-timesyncd.service", "text1");
  144. }
  145. function exitPage3() {
  146. stopTimeStatusRefresh()
  147. disconnectLog();
  148. }