plc_control/web/ops/js/api.js

34 lines
1.3 KiB
JavaScript

async function jsonOrThrow(response, fallbackMessage) {
if (response.ok) {
if (response.status === 204) return null;
return response.json();
}
let detail = "";
try {
const body = await response.json();
detail = body?.message || body?.err_msg || JSON.stringify(body);
} catch {
detail = await response.text();
}
throw new Error(`${fallbackMessage}: ${response.status} ${detail || response.statusText}`);
}
export async function fetchOverview() {
const response = await fetch("/api/runtime/overview");
return jsonOrThrow(response, "加载段运行态失败");
}
async function postControl(path, label) {
const response = await fetch(path, { method: "POST" });
return jsonOrThrow(response, label);
}
export const segmentControl = {
startAuto: (id) => postControl(`/api/control/segment/${id}/start-auto`, "启动自动控制失败"),
stopAuto: (id) => postControl(`/api/control/segment/${id}/stop-auto`, "停止自动控制失败"),
ackFault: (id) => postControl(`/api/control/segment/${id}/ack-fault`, "故障确认失败"),
reset: (id) => postControl(`/api/control/segment/${id}/reset`, "复位失败"),
batchStart: () => postControl(`/api/control/segment/batch-start-auto`, "批量启动失败"),
batchStop: () => postControl(`/api/control/segment/batch-stop-auto`, "批量停止失败"),
};