QueryAttemptList.tsx 1.2 KB

12345678910111213
  1. import type { CanvasItem, QueryAttempt } from "@/lib/types";
  2. import { queryAttemptItem } from "@/lib/layout";
  3. const statusText = { hit: "命中", empty: "无结果", failure: "失败", running: "进行中", interrupted: "构建中断", unknown: "状态未知" } as const;
  4. export function QueryAttemptList({ id, attempts, roundIndex, branchId, onOpen }: { id?: string; attempts: QueryAttempt[]; roundIndex: number; branchId: number; onOpen: (item: CanvasItem, target: "business") => void }) {
  5. return <ol id={id} className="queryAttemptList">
  6. {attempts.map((attempt, index) => {
  7. const item = queryAttemptItem(attempt, roundIndex, branchId);
  8. return <li key={attempt.id}><button type="button" className="nodrag nopan" data-focus-return={`${item.id}:query`} onClick={(event) => { event.stopPropagation(); onOpen(item, "business"); }}><span className="queryIndex">{String(index + 1).padStart(2, "0")}</span><span className="queryText">{attempt.queryLabel}</span><span className={`queryStatus query-${attempt.status}`}>{attempt.resultCount && attempt.resultCount > 0 ? `${attempt.resultCount} 条` : statusText[attempt.status]}</span></button></li>;
  9. })}
  10. </ol>;
  11. }