-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathJsonPreviewModal.tsx
41 lines (38 loc) · 1.21 KB
/
JsonPreviewModal.tsx
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
import { type FC } from 'react';
import { Button, Modal } from 'react-bootstrap';
import JsonHighlight from 'components/JsonHighlight';
import { type Result } from '@eosc-perf/eosc-perf-client';
type JsonPreviewModalProps = {
result: Result | null;
show: boolean;
closeModal: () => void;
};
/**
* Modal to view the JSON data of a result
*
* @param props
* @param props.result
* @param props.show
* @param props.closeModal
*/
const JsonPreviewModal: FC<JsonPreviewModalProps> = ({ result, show, closeModal }) => {
return (
<Modal show={show} scrollable size="lg" onHide={closeModal}>
<Modal.Header>
<Modal.Title>JSON Data</Modal.Title>
</Modal.Header>
<Modal.Body>
{result !== null && (
<JsonHighlight>{JSON.stringify(result.json, null, 4)}</JsonHighlight>
)}
{result == null && <div className="text-muted">Loading...</div>}
</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={closeModal}>
Close
</Button>
</Modal.Footer>
</Modal>
);
};
export default JsonPreviewModal;