34 lines
1.3 KiB
JavaScript
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`, "批量停止失败"),
|
|
};
|