|
import CopyToClipboard from '@/components/copy-to-clipboard'; |
|
import { useDebugSingle, useFetchInputElements } from '@/hooks/flow-hooks'; |
|
import { IModalProps } from '@/interfaces/common'; |
|
import { CloseOutlined } from '@ant-design/icons'; |
|
import { Drawer } from 'antd'; |
|
import { isEmpty } from 'lodash'; |
|
import { useCallback } from 'react'; |
|
import { useTranslation } from 'react-i18next'; |
|
import JsonView from 'react18-json-view'; |
|
import 'react18-json-view/src/style.css'; |
|
import DebugContent from '../../debug-content'; |
|
|
|
interface IProps { |
|
componentId?: string; |
|
} |
|
|
|
const SingleDebugDrawer = ({ |
|
componentId, |
|
visible, |
|
hideModal, |
|
}: IModalProps<any> & IProps) => { |
|
const { t } = useTranslation(); |
|
const { data: list } = useFetchInputElements(componentId); |
|
const { debugSingle, data, loading } = useDebugSingle(); |
|
|
|
const onOk = useCallback( |
|
(nextValues: any[]) => { |
|
if (componentId) { |
|
debugSingle({ component_id: componentId, params: nextValues }); |
|
} |
|
}, |
|
[componentId, debugSingle], |
|
); |
|
|
|
const content = JSON.stringify(data, null, 2); |
|
|
|
return ( |
|
<Drawer |
|
title={ |
|
<div className="flex justify-between"> |
|
{t('flow.testRun')} |
|
<CloseOutlined onClick={hideModal} /> |
|
</div> |
|
} |
|
width={'100%'} |
|
onClose={hideModal} |
|
open={visible} |
|
getContainer={false} |
|
mask={false} |
|
placement={'bottom'} |
|
height={'95%'} |
|
closeIcon={null} |
|
> |
|
<section className="overflow-y-auto"> |
|
<DebugContent |
|
parameters={list} |
|
ok={onOk} |
|
isNext={false} |
|
loading={loading} |
|
submitButtonDisabled={list.length === 0} |
|
></DebugContent> |
|
{!isEmpty(data) ? ( |
|
<div className="mt-4 rounded-md bg-slate-200 border border-neutral-200"> |
|
<div className="flex justify-between p-2"> |
|
<span>JSON</span> |
|
<CopyToClipboard text={content}></CopyToClipboard> |
|
</div> |
|
<JsonView |
|
src={data} |
|
displaySize |
|
collapseStringsAfterLength={100000000000} |
|
className="w-full h-[800px] break-words overflow-auto p-2 bg-slate-100" |
|
/> |
|
</div> |
|
) : null} |
|
</section> |
|
</Drawer> |
|
); |
|
}; |
|
|
|
export default SingleDebugDrawer; |
|
|