import { CheckOutlined, ClockCircleOutlined, CloseOutlined, LoadingOutlined } from '@ant-design/icons'; import { GPTVis } from '@antv/gpt-vis'; import classNames from 'classnames'; import { ReactNode } from 'react'; import rehypeRaw from 'rehype-raw'; import remarkGfm from 'remark-gfm'; import markdownComponents from './config'; interface IVisPlugin { name: string; args: { query: string; }; status: 'todo' | 'runing' | 'failed' | 'complete' | (string & {}); logo: string | null; result: string; err_msg: string | null; } interface Props { data: IVisPlugin; } const pluginViewStatusMapper: Record = { todo: { bgClass: 'bg-gray-500', icon: , }, runing: { bgClass: 'bg-blue-500', icon: , }, failed: { bgClass: 'bg-red-500', icon: , }, complete: { bgClass: 'bg-green-500', icon: , }, }; function VisPlugin({ data }: Props) { const { bgClass, icon } = pluginViewStatusMapper[data.status] ?? {}; return (
{data.name} {icon}
{data.result ? (
{data.result ?? ''}
) : (
{data.err_msg}
)}
); } export default VisPlugin;