import { ConfirmDialog } from "~/components/common/ConfirmDialog"; import type { Schedule, ScheduleArtifact, ScheduleNode, } from "~/services/api"; export type SchedulePendingConfirm = | { kind: "schedule"; schedule: Schedule } | { kind: "artifact"; artifact: ScheduleArtifact } | { kind: "node"; node: ScheduleNode } | { kind: "node-history"; node: ScheduleNode }; type SchedulePendingConfirmDialogProps = { pending: SchedulePendingConfirm | null; onOpenChange: (open: boolean) => void; onConfirm: () => void | Promise; }; function copyFor(pending: SchedulePendingConfirm) { switch (pending.kind) { case "schedule": return { title: "确定删除调度?", description: `确定删除调度"${pending.schedule.schedule_name}"吗?`, confirmLabel: "删除", }; case "artifact": return { title: "确定移出调度列表?", description: `确定将"${pending.artifact.script_name} ${pending.artifact.version_label}"移出调度列表吗?稳定版本本身和历史运行记录不会被删除。`, confirmLabel: "移出", }; case "node": return { title: "确定删除节点?", description: `确定删除节点"${pending.node.node_name}"吗?`, confirmLabel: "删除", }; case "node-history": return { title: "一并删除运行日志?", description: "该节点有运行日志,是否一并删除?", confirmLabel: "删除", }; } } export function SchedulePendingConfirmDialog({ pending, onOpenChange, onConfirm, }: SchedulePendingConfirmDialogProps) { const copy = pending ? copyFor(pending) : null; return ( ); }