page4.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. var gnssLogLevel = "";
  2. function setGnssLogLevel() {
  3. var level = logLevel.value;
  4. fetch("/api/gnss/loglevel", {
  5. method: "POST",
  6. headers: { "Content-Type": "application/json" },
  7. body: JSON.stringify({ level: level }),
  8. })
  9. .then(function (r) {
  10. if (!r.ok) {
  11. return r.text().then(function (t) {
  12. throw new Error(t);
  13. });
  14. }
  15. gnssLogLevel = level;
  16. })
  17. .catch(function (e) {
  18. logLevel.value = gnssLogLevel;
  19. });
  20. }
  21. function getGnssLogLevel() {
  22. fetch("/api/gnss/loglevel")
  23. .then(function (r) {
  24. if (!r.ok) {
  25. return r.text().then(function (t) {
  26. throw new Error(t);
  27. });
  28. }
  29. return r.json();
  30. })
  31. .then(function (d) {
  32. gnssLogLevel = d.log_level;
  33. logLevel.value = d.log_level;
  34. })
  35. .catch(function (e) {
  36. gnssLogLevel = "";
  37. logLevel.value = "";
  38. });
  39. }
  40. function downloadGnssLogFile(event) {
  41. var btn = event.currentTarget;
  42. btn.disabled = true;
  43. fetch("/api/gnss/logfile")
  44. .then(function (r) {
  45. if (!r.ok) {
  46. throw new Error("HTTP " + r.status);
  47. }
  48. var disposition = r.headers.get("Content-Disposition");
  49. var filename = "gnss.log.tar.gz";
  50. if (disposition) {
  51. var match = disposition.match(/filename="?([^";]+)"?/);
  52. if (match) {
  53. filename = match[1];
  54. }
  55. }
  56. return r.blob().then(function (blob) {
  57. return { blob: blob, filename: filename };
  58. });
  59. })
  60. .then(function (res) {
  61. downloadBlobFile(res.blob, res.filename);
  62. alert("下载成功");
  63. })
  64. .catch(function (e) {
  65. console.error("download failed:", e);
  66. alert("下载失败: " + e.message);
  67. })
  68. .finally(function () {
  69. btn.disabled = false;
  70. btn.textContent = "下载";
  71. });
  72. }
  73. function restartGnssService(event) {
  74. if (!confirm("确定重启定位服务吗?")) {
  75. return;
  76. }
  77. var btn = event.currentTarget;
  78. btn.disabled = true;
  79. fetch("/api/gnss/restart", {
  80. method: "POST",
  81. })
  82. .then(function (r) {
  83. if (!r.ok) {
  84. return r.text().then(function (t) {
  85. throw new Error(t);
  86. });
  87. }
  88. alert("重启成功");
  89. })
  90. .catch(function (e) {
  91. console.error("restart failed:", e);
  92. alert("重启失败: " + e.message);
  93. })
  94. .finally(function () {
  95. btn.disabled = false;
  96. });
  97. }
  98. var gnssStatusTimer = null;
  99. function getGnssStatus() {
  100. fetch("/api/gnss/status")
  101. .then(function (r) {
  102. if (!r.ok) {
  103. throw new Error("HTTP " + r.status);
  104. }
  105. return r.json();
  106. })
  107. .then(function (data) {
  108. ["var1", "var2", "var3", "var5", "var6"].forEach(function (id) {
  109. setText(id, data[id], "page4");
  110. });
  111. // var1 为 {level,text} 状态对象或 "--" 字符串, 两者都表示无有效定位数据时显示 "--"
  112. var hasFix = data.var1 && typeof data.var1 === "object";
  113. if (!hasFix) {
  114. setText("var4", "--");
  115. } else {
  116. var located =
  117. data.var2 !== "" &&
  118. data.var3 !== "" &&
  119. data.var2 !== "--" &&
  120. data.var3 !== "--";
  121. setText("var4", located ? "已定位" : "定位中", "page4");
  122. }
  123. })
  124. .catch(function (e) {
  125. console.error("getGnssStatus() failed:", e);
  126. ["var1", "var2", "var3", "var4", "var5", "var6"].forEach(function (id) {
  127. setText(id, null, "page4");
  128. });
  129. });
  130. getGnssLogLevel();
  131. }
  132. function startGnssStatusRefresh() {
  133. if (gnssStatusTimer) {
  134. return;
  135. }
  136. getGnssStatus();
  137. gnssStatusTimer = setInterval(function () {
  138. getGnssStatus();
  139. }, 5000);
  140. }
  141. function stopGnssStatusRefresh() {
  142. if (gnssStatusTimer) {
  143. clearInterval(gnssStatusTimer);
  144. gnssStatusTimer = null;
  145. }
  146. }
  147. function initPage4() {
  148. startGnssStatusRefresh();
  149. connectLog("yfkj-gnss.service", "text1");
  150. }
  151. function exitPage4() {
  152. stopGnssStatusRefresh();
  153. disconnectLog();
  154. }