Skip to content

Commit 8fbaf2e

Browse files
committed
Refactor flyout into standalone component
Signed-off-by: Tyler Ohlsen <ohltyler@amazon.com>
1 parent 76bcfbf commit 8fbaf2e

File tree

2 files changed

+82
-48
lines changed

2 files changed

+82
-48
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import React from 'react';
7+
import {
8+
EuiCodeBlock,
9+
EuiFlexGroup,
10+
EuiFlexItem,
11+
EuiFlyout,
12+
EuiFlyoutBody,
13+
EuiFlyoutHeader,
14+
EuiTitle,
15+
EuiText,
16+
EuiEmptyPrompt,
17+
EuiLoadingSpinner,
18+
} from '@elastic/eui';
19+
20+
interface ResourceFlyoutProps {
21+
resourceName: string;
22+
resourceDetails: string;
23+
onClose: () => void;
24+
loading: boolean;
25+
errorMessage?: string;
26+
}
27+
28+
/**
29+
* The searchable list of resources for a particular workflow.
30+
*/
31+
export function ResourceFlyout(props: ResourceFlyoutProps) {
32+
return (
33+
<EuiFlyout onClose={props.onClose}>
34+
<EuiFlyoutHeader>
35+
<EuiTitle>
36+
<h2>Resource details</h2>
37+
</EuiTitle>
38+
</EuiFlyoutHeader>
39+
<EuiFlyoutBody>
40+
<EuiFlexGroup direction="column" gutterSize="xs">
41+
<EuiFlexItem grow={true}>
42+
<EuiText size="m">
43+
<h4>Resource details</h4>
44+
</EuiText>
45+
</EuiFlexItem>
46+
<EuiFlexItem grow={true}>
47+
{!props.errorMessage && !props.loading ? (
48+
<EuiCodeBlock
49+
language="json"
50+
fontSize="m"
51+
isCopyable={true}
52+
overflowHeight={600}
53+
>
54+
{props.resourceDetails}
55+
</EuiCodeBlock>
56+
) : props.loading ? (
57+
<EuiEmptyPrompt
58+
icon={<EuiLoadingSpinner size="xl" />}
59+
title={<h2>Loading</h2>}
60+
/>
61+
) : (
62+
<EuiEmptyPrompt
63+
iconType="alert"
64+
iconColor="danger"
65+
title={<h2>Error loading resource details</h2>}
66+
body={<p>{props.errorMessage}</p>}
67+
/>
68+
)}
69+
</EuiFlexItem>
70+
</EuiFlexGroup>
71+
</EuiFlyoutBody>
72+
</EuiFlyout>
73+
);
74+
}

public/pages/workflow_detail/tools/resources/resource_list_with_flyout.tsx

+8-48
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,10 @@ import React, { useState, useEffect } from 'react';
77
import { useSelector } from 'react-redux';
88
import {
99
Direction,
10-
EuiCodeBlock,
1110
EuiFlexGroup,
1211
EuiFlexItem,
13-
EuiFlyout,
14-
EuiFlyoutBody,
15-
EuiFlyoutHeader,
1612
EuiInMemoryTable,
17-
EuiTitle,
1813
EuiIcon,
19-
EuiText,
20-
EuiEmptyPrompt,
21-
EuiLoadingSpinner,
2214
} from '@elastic/eui';
2315
import {
2416
Workflow,
@@ -38,6 +30,7 @@ import {
3830
getErrorMessageForStepType,
3931
} from '../../../../utils';
4032
import { columns } from './columns';
33+
import { ResourceFlyout } from './resource_flyout';
4134

4235
interface ResourceListFlyoutProps {
4336
workflow?: Workflow;
@@ -173,46 +166,13 @@ export function ResourceListWithFlyout(props: ResourceListFlyoutProps) {
173166
</EuiFlexItem>
174167
</EuiFlexGroup>
175168
{isFlyoutVisible && (
176-
<EuiFlyout onClose={closeFlyout}>
177-
<EuiFlyoutHeader>
178-
<EuiTitle>
179-
<h2>{selectedRowData?.id}</h2>
180-
</EuiTitle>
181-
</EuiFlyoutHeader>
182-
<EuiFlyoutBody>
183-
<EuiFlexGroup direction="column" gutterSize="xs">
184-
<EuiFlexItem grow={true}>
185-
<EuiText size="m">
186-
<h4>Resource details</h4>
187-
</EuiText>
188-
</EuiFlexItem>
189-
<EuiFlexItem grow={true}>
190-
{!rowErrorMessage && !loading ? (
191-
<EuiCodeBlock
192-
language="json"
193-
fontSize="m"
194-
isCopyable={true}
195-
overflowHeight={600}
196-
>
197-
{resourceDetails}
198-
</EuiCodeBlock>
199-
) : loading ? (
200-
<EuiEmptyPrompt
201-
icon={<EuiLoadingSpinner size="xl" />}
202-
title={<h2>Loading</h2>}
203-
/>
204-
) : (
205-
<EuiEmptyPrompt
206-
iconType="alert"
207-
iconColor="danger"
208-
title={<h2>Error loading resource details</h2>}
209-
body={<p>{rowErrorMessage}</p>}
210-
/>
211-
)}
212-
</EuiFlexItem>
213-
</EuiFlexGroup>
214-
</EuiFlyoutBody>
215-
</EuiFlyout>
169+
<ResourceFlyout
170+
resourceName={selectedRowData?.id || ''}
171+
resourceDetails={resourceDetails || ''}
172+
onClose={closeFlyout}
173+
loading={loading}
174+
errorMessage={rowErrorMessage || undefined}
175+
/>
216176
)}
217177
</>
218178
);

0 commit comments

Comments
 (0)