@@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n';
99import React from 'react' ;
1010import { Route , RouteComponentProps , Switch } from 'react-router-dom' ;
1111
12- import { EuiFlexItem , EuiFlexGroup } from '@elastic/eui' ;
12+ import { EuiErrorBoundary , EuiFlexItem , EuiFlexGroup } from '@elastic/eui' ;
1313import { DocumentTitle } from '../../components/document_title' ;
1414import { HelpCenterContent } from '../../components/help_center_content' ;
1515import { RoutedTabs } from '../../components/navigation/routed_tabs' ;
@@ -36,103 +36,105 @@ export const InfrastructurePage = ({ match }: RouteComponentProps) => {
3636 const uiCapabilities = useKibana ( ) . services . application ?. capabilities ;
3737
3838 return (
39- < Source . Provider sourceId = "default" >
40- < WaffleOptionsProvider >
41- < WaffleTimeProvider >
42- < WaffleFiltersProvider >
43- < ColumnarPage >
44- < DocumentTitle
45- title = { i18n . translate ( 'xpack.infra.homePage.documentTitle' , {
46- defaultMessage : 'Metrics' ,
47- } ) }
48- />
49-
50- < HelpCenterContent
51- feedbackLink = "https://discuss.elastic.co/c/metrics"
52- appName = { i18n . translate ( 'xpack.infra.header.infrastructureHelpAppName' , {
53- defaultMessage : 'Metrics' ,
54- } ) }
55- />
39+ < EuiErrorBoundary >
40+ < Source . Provider sourceId = "default" >
41+ < WaffleOptionsProvider >
42+ < WaffleTimeProvider >
43+ < WaffleFiltersProvider >
44+ < ColumnarPage >
45+ < DocumentTitle
46+ title = { i18n . translate ( 'xpack.infra.homePage.documentTitle' , {
47+ defaultMessage : 'Metrics' ,
48+ } ) }
49+ />
5650
57- < Header
58- breadcrumbs = { [
59- {
60- text : i18n . translate ( 'xpack.infra.header.infrastructureTitle' , {
61- defaultMessage : 'Metrics' ,
62- } ) ,
63- } ,
64- ] }
65- readOnlyBadge = { ! uiCapabilities ?. infrastructure ?. save }
66- />
67- < AppNavigation
68- aria-label = { i18n . translate ( 'xpack.infra.header.infrastructureNavigationTitle' , {
69- defaultMessage : 'Metrics' ,
70- } ) }
71- >
72- < EuiFlexGroup gutterSize = { 'none' } alignItems = { 'center' } >
73- < EuiFlexItem >
74- < RoutedTabs
75- tabs = { [
76- {
77- app : 'metrics' ,
78- title : i18n . translate ( 'xpack.infra.homePage.inventoryTabTitle' , {
79- defaultMessage : 'Inventory' ,
80- } ) ,
81- pathname : '/inventory' ,
82- } ,
83- {
84- app : 'metrics' ,
85- title : i18n . translate ( 'xpack.infra.homePage.metricsExplorerTabTitle' , {
86- defaultMessage : 'Metrics Explorer' ,
87- } ) ,
88- pathname : '/explorer' ,
89- } ,
90- {
91- app : 'metrics' ,
92- title : i18n . translate ( 'xpack.infra.homePage.settingsTabTitle' , {
93- defaultMessage : 'Settings' ,
94- } ) ,
95- pathname : '/settings' ,
96- } ,
97- ] }
98- />
99- </ EuiFlexItem >
100- < EuiFlexItem grow = { false } >
101- < Route path = { '/explorer' } component = { MetricsAlertDropdown } />
102- < Route path = { '/inventory' } component = { InventoryAlertDropdown } />
103- </ EuiFlexItem >
104- </ EuiFlexGroup >
105- </ AppNavigation >
51+ < HelpCenterContent
52+ feedbackLink = "https://discuss.elastic.co/c/metrics"
53+ appName = { i18n . translate ( 'xpack.infra.header.infrastructureHelpAppName' , {
54+ defaultMessage : 'Metrics' ,
55+ } ) }
56+ />
10657
107- < Switch >
108- < Route path = { '/inventory' } component = { SnapshotPage } />
109- < Route
110- path = { '/explorer' }
111- render = { props => (
112- < WithSource >
113- { ( { configuration, createDerivedIndexPattern } ) => (
114- < MetricsExplorerOptionsContainer . Provider >
115- < WithMetricsExplorerOptionsUrlState />
116- { configuration ? (
117- < MetricsExplorerPage
118- derivedIndexPattern = { createDerivedIndexPattern ( 'metrics' ) }
119- source = { configuration }
120- { ...props }
121- />
122- ) : (
123- < SourceLoadingPage />
124- ) }
125- </ MetricsExplorerOptionsContainer . Provider >
126- ) }
127- </ WithSource >
128- ) }
58+ < Header
59+ breadcrumbs = { [
60+ {
61+ text : i18n . translate ( 'xpack.infra.header.infrastructureTitle' , {
62+ defaultMessage : 'Metrics' ,
63+ } ) ,
64+ } ,
65+ ] }
66+ readOnlyBadge = { ! uiCapabilities ?. infrastructure ?. save }
12967 />
130- < Route path = { '/settings' } component = { MetricsSettingsPage } />
131- </ Switch >
132- </ ColumnarPage >
133- </ WaffleFiltersProvider >
134- </ WaffleTimeProvider >
135- </ WaffleOptionsProvider >
136- </ Source . Provider >
68+ < AppNavigation
69+ aria-label = { i18n . translate ( 'xpack.infra.header.infrastructureNavigationTitle' , {
70+ defaultMessage : 'Metrics' ,
71+ } ) }
72+ >
73+ < EuiFlexGroup gutterSize = { 'none' } alignItems = { 'center' } >
74+ < EuiFlexItem >
75+ < RoutedTabs
76+ tabs = { [
77+ {
78+ app : 'metrics' ,
79+ title : i18n . translate ( 'xpack.infra.homePage.inventoryTabTitle' , {
80+ defaultMessage : 'Inventory' ,
81+ } ) ,
82+ pathname : '/inventory' ,
83+ } ,
84+ {
85+ app : 'metrics' ,
86+ title : i18n . translate ( 'xpack.infra.homePage.metricsExplorerTabTitle' , {
87+ defaultMessage : 'Metrics Explorer' ,
88+ } ) ,
89+ pathname : '/explorer' ,
90+ } ,
91+ {
92+ app : 'metrics' ,
93+ title : i18n . translate ( 'xpack.infra.homePage.settingsTabTitle' , {
94+ defaultMessage : 'Settings' ,
95+ } ) ,
96+ pathname : '/settings' ,
97+ } ,
98+ ] }
99+ />
100+ </ EuiFlexItem >
101+ < EuiFlexItem grow = { false } >
102+ < Route path = { '/explorer' } component = { MetricsAlertDropdown } />
103+ < Route path = { '/inventory' } component = { InventoryAlertDropdown } />
104+ </ EuiFlexItem >
105+ </ EuiFlexGroup >
106+ </ AppNavigation >
107+
108+ < Switch >
109+ < Route path = { '/inventory' } component = { SnapshotPage } />
110+ < Route
111+ path = { '/explorer' }
112+ render = { props => (
113+ < WithSource >
114+ { ( { configuration, createDerivedIndexPattern } ) => (
115+ < MetricsExplorerOptionsContainer . Provider >
116+ < WithMetricsExplorerOptionsUrlState />
117+ { configuration ? (
118+ < MetricsExplorerPage
119+ derivedIndexPattern = { createDerivedIndexPattern ( 'metrics' ) }
120+ source = { configuration }
121+ { ...props }
122+ />
123+ ) : (
124+ < SourceLoadingPage />
125+ ) }
126+ </ MetricsExplorerOptionsContainer . Provider >
127+ ) }
128+ </ WithSource >
129+ ) }
130+ />
131+ < Route path = { '/settings' } component = { MetricsSettingsPage } />
132+ </ Switch >
133+ </ ColumnarPage >
134+ </ WaffleFiltersProvider >
135+ </ WaffleTimeProvider >
136+ </ WaffleOptionsProvider >
137+ </ Source . Provider >
138+ </ EuiErrorBoundary >
137139 ) ;
138140} ;
0 commit comments