Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 66x | import { CellComponentDisplayPage } from '@props/RecordProps';
import { Drawer, Tag } from 'antd';
import React, { ReactElement, Suspense, useState } from 'react';
import { BugOutlined } from '@ant-design/icons';
import { emptyMethod } from '@utils/Constants';
import CodeEditor from '../fields/CodeEditor';
import { useTranslation } from 'react-i18next';
import { stopPropagationAndPreventDefault } from '@utils/ObjectUtils';
import { isBlank } from '@utils/StringUtils';
export interface StacktraceCellProps {
zIndex: number;
value?: string;
page?: CellComponentDisplayPage;
}
const StacktraceCell = (props: StacktraceCellProps): ReactElement => {
const { zIndex, value } = props;
const [visible, setVisible] = useState<boolean>(false);
const { t } = useTranslation();
return (isBlank(value))? (<></>) : (
<>
<Tag
onClick={() => setVisible(true)}
icon={<BugOutlined style={{color: "red"}}/>}
style={{cursor: "pointer", borderRadius: "4px"}}
>
{t('Exception')}
</Tag>
<Drawer
title={undefined}
width={1200}
rootStyle={{ zIndex: zIndex + 2}}
rootClassName="action-button-popover-container stacktrace-drawer"
open={visible}
closeIcon={undefined}
headerStyle={{ display: "none" }}
onClose={() => setVisible(false)}
>
<pre
className="line-numbers code-cell"
onClick={(event: React.MouseEvent<unknown>) => stopPropagationAndPreventDefault(event)}
>
<Suspense fallback={<div />}>
<CodeEditor
value={value ?? ""}
onChange={emptyMethod}
name={"code"}
updatable={false}
width="100%"
mode={"json"}
zIndex={zIndex}
/>
</Suspense>
</pre>
</Drawer>
</>
);
};
export default StacktraceCell;
|