27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
import { emitApi } from "../core/http.js";
|
|
import { parseOptions, requiredNumber, requiredString } from "../core/options.js";
|
|
import { requireNetwork } from "../core/runtime.js";
|
|
import { addMinutesPreservingOffset, parseTime } from "../core/time.js";
|
|
import type { HandlerMap, RuntimeContext } from "../core/types.js";
|
|
|
|
function simulationRun(ctx: RuntimeContext, argv: string[]): Promise<void> {
|
|
const { values } = parseOptions(argv, { duration: "integer" });
|
|
const start = parseTime(requiredString(values, "start-time"), "--start-time");
|
|
const duration = requiredNumber(values, "duration");
|
|
const end = addMinutesPreservingOffset(start, duration);
|
|
const network = requireNetwork(ctx);
|
|
return emitApi(
|
|
ctx,
|
|
"触发模拟成功",
|
|
{ method: "POST", path: "/runsimulationmanuallybydate/", body: { name: network, start_time: start.replace(/\.\d+/, ""), duration }, requireNetworkCtx: true },
|
|
[
|
|
`tjwater-cli data timeseries realtime links --start-time ${start} --end-time ${end}`,
|
|
`tjwater-cli data timeseries realtime nodes --start-time ${start} --end-time ${end}`,
|
|
],
|
|
);
|
|
}
|
|
|
|
export const simulationHandlers: HandlerMap = {
|
|
"simulation run": simulationRun,
|
|
};
|