var gnssLogLevel = ""; function setGnssLogLevel() { var level = logLevel.value; fetch("/api/gnss/loglevel", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ level: level }), }) .then(function (r) { if (!r.ok) { return r.text().then(function (t) { throw new Error(t); }); } gnssLogLevel = level; }) .catch(function (e) { logLevel.value = gnssLogLevel; }); } function getGnssLogLevel() { fetch("/api/gnss/loglevel") .then(function (r) { if (!r.ok) { return r.text().then(function (t) { throw new Error(t); }); } return r.json(); }) .then(function (d) { gnssLogLevel = d.log_level; logLevel.value = d.log_level; }) .catch(function (e) { gnssLogLevel = ""; logLevel.value = ""; }); } function downloadGnssLogFile(event) { var btn = event.currentTarget; btn.disabled = true; fetch("/api/gnss/logfile") .then(function (r) { if (!r.ok) { throw new Error("HTTP " + r.status); } var disposition = r.headers.get("Content-Disposition"); var filename = "gnss.log.tar.gz"; if (disposition) { var match = disposition.match(/filename="?([^";]+)"?/); if (match) { filename = match[1]; } } return r.blob().then(function (blob) { return { blob: blob, filename: filename }; }); }) .then(function (res) { downloadBlobFile(res.blob, res.filename); alert("下载成功"); }) .catch(function (e) { console.error("download failed:", e); alert("下载失败: " + e.message); }) .finally(function () { btn.disabled = false; btn.textContent = "下载"; }); } function restartGnssService(event) { if (!confirm("确定重启定位服务吗?")) { return; } var btn = event.currentTarget; btn.disabled = true; fetch("/api/gnss/restart", { method: "POST", }) .then(function (r) { if (!r.ok) { return r.text().then(function (t) { throw new Error(t); }); } alert("重启成功"); }) .catch(function (e) { console.error("restart failed:", e); alert("重启失败: " + e.message); }) .finally(function () { btn.disabled = false; }); } var gnssStatusTimer = null; function getGnssStatus() { fetch("/api/gnss/status") .then(function (r) { if (!r.ok) { throw new Error("HTTP " + r.status); } return r.json(); }) .then(function (data) { ["var1", "var2", "var3", "var5", "var6"].forEach(function (id) { setText(id, data[id], "page4"); }); // var1 为 {level,text} 状态对象或 "--" 字符串, 两者都表示无有效定位数据时显示 "--" var hasFix = data.var1 && typeof data.var1 === "object"; if (!hasFix) { setText("var4", "--"); } else { var located = data.var2 !== "" && data.var3 !== "" && data.var2 !== "--" && data.var3 !== "--"; setText("var4", located ? "已定位" : "定位中", "page4"); } }) .catch(function (e) { console.error("getGnssStatus() failed:", e); ["var1", "var2", "var3", "var4", "var5", "var6"].forEach(function (id) { setText(id, null, "page4"); }); }); getGnssLogLevel(); } function startGnssStatusRefresh() { if (gnssStatusTimer) { return; } getGnssStatus(); gnssStatusTimer = setInterval(function () { getGnssStatus(); }, 5000); } function stopGnssStatusRefresh() { if (gnssStatusTimer) { clearInterval(gnssStatusTimer); gnssStatusTimer = null; } } function initPage4() { startGnssStatusRefresh(); connectLog("yfkj-gnss.service", "text1"); } function exitPage4() { stopGnssStatusRefresh(); disconnectLog(); }