Skip to content

Commit 7406334

Browse files
move flyout logic to a render prop for better composability
1 parent 35a39b8 commit 7406334

4 files changed

Lines changed: 21 additions & 12 deletions

File tree

x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import { EuiHealth } from '@elastic/eui';
1010
import { getSeriesAndDomain, getSidebarItems, getLegendItems } from './data_formatting';
1111
import { SidebarItem, LegendItem, NetworkItems } from './types';
1212
import { WaterfallProvider, WaterfallChart, RenderItem, useFlyout } from '../../waterfall';
13-
import { WaterfallFlyout } from '../../waterfall/components/waterfall_flyout';
1413
import { useTrackMetric, METRIC_TYPE } from '../../../../../../../observability/public';
1514
import { WaterfallFilter } from './waterfall_filter';
15+
import { WaterfallFlyout } from './waterfall_flyout';
1616
import { WaterfallSidebarItem } from './waterfall_sidebar_item';
1717

1818
export const renderLegendItem: RenderItem<LegendItem> = (item) => {
@@ -67,6 +67,16 @@ export const WaterfallChartWrapper: React.FC<Props> = ({ data, total }) => {
6767
);
6868
}, [activeFilters, setActiveFilters, onlyHighlighted, setOnlyHighlighted, query, setQuery]);
6969

70+
const renderFlyout = useCallback(() => {
71+
return (
72+
<WaterfallFlyout
73+
flyoutData={flyoutData}
74+
onFlyoutClose={onFlyoutClose}
75+
isFlyoutVisible={isFlyoutVisible}
76+
/>
77+
);
78+
}, [flyoutData, isFlyoutVisible, onFlyoutClose]);
79+
7080
const renderSidebarItem: RenderItem<SidebarItem> = useCallback(
7181
(item) => {
7282
return (
@@ -121,14 +131,10 @@ export const WaterfallChartWrapper: React.FC<Props> = ({ data, total }) => {
121131
}, [])}
122132
renderSidebarItem={renderSidebarItem}
123133
renderLegendItem={renderLegendItem}
134+
renderFlyout={renderFlyout}
124135
renderFilter={renderFilter}
125136
fullHeight={true}
126137
/>
127-
<WaterfallFlyout
128-
flyoutData={flyoutData}
129-
isFlyoutVisible={isFlyoutVisible}
130-
onFlyoutClose={onFlyoutClose}
131-
/>
132138
</WaterfallProvider>
133139
);
134140
};

x-pack/plugins/uptime/public/components/monitor/synthetics/waterfall/components/waterfall_flyout.test.tsx renamed to x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
REQUEST_HEADERS,
1515
RESPONSE_HEADERS,
1616
} from './waterfall_flyout';
17-
import { WaterfallMetadataEntry } from '../types';
17+
import { WaterfallMetadataEntry } from '../../waterfall/types';
1818

1919
describe('WaterfallFlyout', () => {
2020
const flyoutData: WaterfallMetadataEntry = {

x-pack/plugins/uptime/public/components/monitor/synthetics/waterfall/components/waterfall_flyout.tsx renamed to x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ import {
1818
EuiFlexItem,
1919
} from '@elastic/eui';
2020
import { i18n } from '@kbn/i18n';
21-
import { Table } from './waterfall_flyout_table';
21+
import { Table } from '../../waterfall/components/waterfall_flyout_table';
2222
import { MiddleTruncatedText } from '../../waterfall';
23-
import { WaterfallMetadataEntry } from '../types';
24-
import { OnFlyoutClose } from './use_flyout';
23+
import { WaterfallMetadataEntry } from '../../waterfall/types';
24+
import { OnFlyoutClose } from '../../waterfall/components/use_flyout';
2525
import { METRIC_TYPE, useUiTracker } from '../../../../../../../observability/public';
2626

2727
export const DETAILS = i18n.translate('xpack.uptime.synthetics.waterfall.flyout.details', {

x-pack/plugins/uptime/public/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,16 @@ export type RenderItem<I = any> = (
3232
index: number,
3333
onClick?: (event: any) => void
3434
) => JSX.Element;
35-
export type RenderFilter = () => JSX.Element;
35+
export type RenderElement = () => JSX.Element;
3636

3737
export interface WaterfallChartProps {
3838
tickFormat: TickFormatter;
3939
domain: DomainRange;
4040
barStyleAccessor: BarStyleAccessor;
4141
renderSidebarItem?: RenderItem;
4242
renderLegendItem?: RenderItem;
43-
renderFilter?: RenderFilter;
43+
renderFilter?: RenderElement;
44+
renderFlyout?: RenderElement;
4445
maxHeight?: string;
4546
fullHeight?: boolean;
4647
}
@@ -52,6 +53,7 @@ export const WaterfallChart = ({
5253
renderSidebarItem,
5354
renderLegendItem,
5455
renderFilter,
56+
renderFlyout,
5557
maxHeight = '800px',
5658
fullHeight = false,
5759
}: WaterfallChartProps) => {
@@ -134,6 +136,7 @@ export const WaterfallChart = ({
134136
</EuiFlexGroup>
135137
</WaterfallChartOuterContainer>
136138
{shouldRenderLegend && <Legend items={legendItems!} render={renderLegendItem!} />}
139+
{renderFlyout && renderFlyout()}
137140
</RelativeContainer>
138141
);
139142
};

0 commit comments

Comments
 (0)