Skip to content

Commit

Permalink
[Synthetics] Measure overview page performance (elastic#191703)
Browse files Browse the repository at this point in the history
## Summary

Measure overview page performance !!

also introduced the usePageReady hook in ebt-tooling !!

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
  • Loading branch information
shahzad31 and kibanamachine authored Aug 29, 2024
1 parent 6a25a50 commit b9072e3
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

import { useEffect, useState } from 'react';
import { CustomMetrics } from './performance_context';
import { usePerformanceContext } from '../../..';

export const usePageReady = (state: { customMetrics?: CustomMetrics; isReady: boolean }) => {
const { onPageReady } = usePerformanceContext();

const [isReported, setIsReported] = useState(false);

useEffect(() => {
if (state.isReady && !isReported) {
onPageReady(state.customMetrics);
setIsReported(true);
}
}, [isReported, onPageReady, state.customMetrics, state.isReady]);
};
1 change: 1 addition & 0 deletions packages/kbn-ebt-tools/src/performance_metrics/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ function dynamic<TElement extends React.ComponentType<any>, TRef = {}>(loader: L

export { usePerformanceContext } from './context/use_performance_context';
export { perfomanceMarkers } from './performance_markers';
export { usePageReady } from './context/use_page_ready';
export const PerformanceContextProvider = dynamic(() => import('./context/performance_context'));
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { EuiFlexGroup, EuiSpacer, EuiFlexItem } from '@elastic/eui';
import { useDispatch, useSelector } from 'react-redux';
import { useTrackPageview } from '@kbn/observability-shared-plugin/public';
import { Redirect, useLocation } from 'react-router-dom';
import { usePageReady } from '@kbn/ebt-tools';
import { selectOverviewStatus } from '../../../state/overview_status';
import { DisabledCallout } from '../management/disabled_callout';
import { FilterGroup } from '../common/monitor_filters/filter_group';
import { OverviewAlerts } from './overview/overview_alerts';
Expand Down Expand Up @@ -45,6 +47,9 @@ export const OverviewPage: React.FC = () => {
const { search } = useLocation();

const { loading: locationsLoading, locationsLoaded } = useSelector(selectServiceLocationsState);
const { loaded } = useSelector(selectOverviewStatus);

usePageReady({ isReady: loaded });

useEffect(() => {
if (!locationsLoading && !locationsLoaded) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render';
import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme';
import { Router } from '@kbn/shared-ux-router';

import { PerformanceContextProvider } from '@kbn/ebt-tools';
import { SyntheticsSharedContext } from './contexts/synthetics_shared_context';
import { kibanaService } from '../../utils/kibana_service';
import { ActionMenu } from './components/common/header/action_menu';
Expand Down Expand Up @@ -72,13 +73,15 @@ const Application = (props: SyntheticsAppProps) => {
<PresentationContextProvider>
<Router history={appMountParameters.history}>
<SyntheticsSettingsContextProvider {...props}>
<div className={APP_WRAPPER_CLASS} data-test-subj="syntheticsApp">
<InspectorContextProvider>
<PageRouter />
<ActionMenu appMountParameters={appMountParameters} />
<TestNowModeFlyoutContainer />
</InspectorContextProvider>
</div>
<PerformanceContextProvider>
<div className={APP_WRAPPER_CLASS} data-test-subj="syntheticsApp">
<InspectorContextProvider>
<PageRouter />
<ActionMenu appMountParameters={appMountParameters} />
<TestNowModeFlyoutContainer />
</InspectorContextProvider>
</div>
</PerformanceContextProvider>
</SyntheticsSettingsContextProvider>
</Router>
</PresentationContextProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@
"@kbn/presentation-util-plugin",
"@kbn/core-application-browser",
"@kbn/dashboard-plugin",
"@kbn/slo-plugin"
"@kbn/slo-plugin",
"@kbn/ebt-tools"
],
"exclude": ["target/**/*"]
}

0 comments on commit b9072e3

Please sign in to comment.