diff --git a/src/core/public/chrome/chrome_service.test.ts b/src/core/public/chrome/chrome_service.test.ts
index 8dc81dceaccd6..0150554a60906 100644
--- a/src/core/public/chrome/chrome_service.test.ts
+++ b/src/core/public/chrome/chrome_service.test.ts
@@ -405,6 +405,59 @@ describe('start', () => {
`);
});
});
+
+ describe('erase chrome fields', () => {
+ it('while switching an app', async () => {
+ const startDeps = defaultStartDeps([new FakeApp('alpha')]);
+ const { navigateToApp } = startDeps.application;
+ const { chrome, service } = await start({ startDeps });
+
+ const helpExtensionPromise = chrome.getHelpExtension$().pipe(toArray()).toPromise();
+ const breadcrumbsPromise = chrome.getBreadcrumbs$().pipe(toArray()).toPromise();
+ const badgePromise = chrome.getBadge$().pipe(toArray()).toPromise();
+ const docTitleResetSpy = jest.spyOn(chrome.docTitle, 'reset');
+
+ const promises = Promise.all([helpExtensionPromise, breadcrumbsPromise, badgePromise]);
+
+ chrome.setHelpExtension({ appName: 'App name' });
+ chrome.setBreadcrumbs([{ text: 'App breadcrumb' }]);
+ chrome.setBadge({ text: 'App badge', tooltip: 'App tooltip' });
+
+ navigateToApp('alpha');
+
+ service.stop();
+
+ expect(docTitleResetSpy).toBeCalledTimes(1);
+ await expect(promises).resolves.toMatchInlineSnapshot(`
+ Array [
+ Array [
+ undefined,
+ Object {
+ "appName": "App name",
+ },
+ undefined,
+ ],
+ Array [
+ Array [],
+ Array [
+ Object {
+ "text": "App breadcrumb",
+ },
+ ],
+ Array [],
+ ],
+ Array [
+ undefined,
+ Object {
+ "text": "App badge",
+ "tooltip": "App tooltip",
+ },
+ undefined,
+ ],
+ ]
+ `);
+ });
+ });
});
describe('stop', () => {
diff --git a/src/core/public/chrome/chrome_service.tsx b/src/core/public/chrome/chrome_service.tsx
index d29120e6ee9ac..ef9a682d609ec 100644
--- a/src/core/public/chrome/chrome_service.tsx
+++ b/src/core/public/chrome/chrome_service.tsx
@@ -157,6 +157,14 @@ export class ChromeService {
const recentlyAccessed = await this.recentlyAccessed.start({ http });
const docTitle = this.docTitle.start({ document: window.document });
+ // erase chrome fields from a previous app while switching to a next app
+ application.currentAppId$.subscribe(() => {
+ helpExtension$.next(undefined);
+ breadcrumbs$.next([]);
+ badge$.next(undefined);
+ docTitle.reset();
+ });
+
const setIsNavDrawerLocked = (isLocked: boolean) => {
isNavDrawerLocked$.next(isLocked);
localStorage.setItem(IS_LOCKED_KEY, `${isLocked}`);
diff --git a/src/plugins/saved_objects_management/public/management_section/mount_section.tsx b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx
index 9cfe99fd3bbf8..4339c2fa13c0f 100644
--- a/src/plugins/saved_objects_management/public/management_section/mount_section.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx
@@ -21,6 +21,7 @@ import React, { lazy, Suspense } from 'react';
import ReactDOM from 'react-dom';
import { Router, Switch, Route } from 'react-router-dom';
import { I18nProvider } from '@kbn/i18n/react';
+import { i18n } from '@kbn/i18n';
import { EuiLoadingSpinner } from '@elastic/eui';
import { CoreSetup } from 'src/core/public';
import { ManagementAppMountParams } from '../../../management/public';
@@ -36,6 +37,10 @@ interface MountParams {
let allowedObjectTypes: string[] | undefined;
+const title = i18n.translate('savedObjectsManagement.objects.savedObjectsTitle', {
+ defaultMessage: 'Saved Objects',
+});
+
const SavedObjectsEditionPage = lazy(() => import('./saved_objects_edition_page'));
const SavedObjectsTablePage = lazy(() => import('./saved_objects_table_page'));
export const mountManagementSection = async ({
@@ -49,6 +54,8 @@ export const mountManagementSection = async ({
allowedObjectTypes = await getAllowedTypes(coreStart.http);
}
+ coreStart.chrome.docTitle.change(title);
+
const capabilities = coreStart.application.capabilities;
const RedirectToHomeIfUnauthorized: React.FunctionComponent = ({ children }) => {
diff --git a/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/StaticPlot.js b/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/StaticPlot.js
index d489970b55f29..e49899da85e0d 100644
--- a/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/StaticPlot.js
+++ b/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/StaticPlot.js
@@ -71,11 +71,29 @@ class StaticPlot extends PureComponent {
const data = serie.data.map((value) => {
return 'y' in value && isValidCoordinateValue(value.y)
? value
- : {
- ...value,
- y: undefined,
- };
+ : { ...value, y: undefined };
});
+
+ // make sure individual markers are displayed in cases
+ // where there are gaps
+
+ const markersForGaps = serie.data.map((value, index) => {
+ const prevHasData = getNull(serie.data[index - 1] ?? {});
+ const nextHasData = getNull(serie.data[index + 1] ?? {});
+ const thisHasData = getNull(value);
+
+ const isGap = !prevHasData && !nextHasData && thisHasData;
+
+ if (!isGap) {
+ return {
+ ...value,
+ y: undefined,
+ };
+ }
+
+ return value;
+ });
+
return [
,
+ ,
];
}
@@ -132,7 +165,7 @@ class StaticPlot extends PureComponent {
curve={'curveMonotoneX'}
data={serie.data}
color={serie.color}
- size={0.5}
+ size={1}
/>
);
default:
diff --git a/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/test/__snapshots__/CustomPlot.test.js.snap b/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/test/__snapshots__/CustomPlot.test.js.snap
index 8101b01a83b08..f413610ebd984 100644
--- a/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/test/__snapshots__/CustomPlot.test.js.snap
+++ b/x-pack/plugins/apm/public/components/shared/charts/CustomPlot/test/__snapshots__/CustomPlot.test.js.snap
@@ -460,7 +460,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -477,7 +477,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -494,7 +494,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -511,7 +511,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -528,7 +528,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -545,7 +545,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -562,7 +562,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -579,7 +579,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -596,7 +596,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -613,7 +613,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -630,7 +630,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -647,7 +647,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -664,7 +664,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -681,7 +681,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -698,7 +698,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -715,7 +715,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -732,7 +732,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -749,7 +749,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -766,7 +766,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -783,7 +783,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -800,7 +800,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -817,7 +817,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -834,7 +834,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -851,7 +851,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -868,7 +868,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -885,7 +885,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -902,7 +902,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -919,7 +919,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -936,7 +936,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -953,7 +953,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -970,7 +970,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -1013,7 +1013,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1030,7 +1030,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1047,7 +1047,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1064,7 +1064,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1081,7 +1081,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1098,7 +1098,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1115,7 +1115,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1132,7 +1132,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1149,7 +1149,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1166,7 +1166,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1183,7 +1183,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1200,7 +1200,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1217,7 +1217,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1234,7 +1234,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1251,7 +1251,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1268,7 +1268,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1285,7 +1285,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1302,7 +1302,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1319,7 +1319,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1336,7 +1336,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1353,7 +1353,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1370,7 +1370,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1387,7 +1387,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1404,7 +1404,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1421,7 +1421,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1438,7 +1438,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1455,7 +1455,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1472,7 +1472,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1489,7 +1489,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1506,7 +1506,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1523,7 +1523,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -1566,7 +1566,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1583,7 +1583,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1600,7 +1600,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1617,7 +1617,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1634,7 +1634,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1651,7 +1651,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1668,7 +1668,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1685,7 +1685,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1702,7 +1702,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1719,7 +1719,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1736,7 +1736,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1753,7 +1753,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1770,7 +1770,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1787,7 +1787,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1804,7 +1804,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1821,7 +1821,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1838,7 +1838,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1855,7 +1855,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1872,7 +1872,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1889,7 +1889,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1906,7 +1906,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1923,7 +1923,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1940,7 +1940,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1957,7 +1957,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1974,7 +1974,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -1991,7 +1991,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -2008,7 +2008,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -2025,7 +2025,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -2042,7 +2042,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -2059,7 +2059,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -2076,7 +2076,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -3396,7 +3396,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3413,7 +3413,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3430,7 +3430,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3447,7 +3447,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3464,7 +3464,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3481,7 +3481,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3498,7 +3498,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3515,7 +3515,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3532,7 +3532,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3549,7 +3549,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3566,7 +3566,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3583,7 +3583,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3600,7 +3600,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3617,7 +3617,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3634,7 +3634,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3651,7 +3651,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3668,7 +3668,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3685,7 +3685,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3702,7 +3702,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3719,7 +3719,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3736,7 +3736,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3753,7 +3753,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3770,7 +3770,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3787,7 +3787,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3804,7 +3804,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3821,7 +3821,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3838,7 +3838,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3855,7 +3855,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3872,7 +3872,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3889,7 +3889,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3906,7 +3906,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#da8b45",
@@ -3949,7 +3949,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -3966,7 +3966,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -3983,7 +3983,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4000,7 +4000,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4017,7 +4017,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4034,7 +4034,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4051,7 +4051,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4068,7 +4068,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4085,7 +4085,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4102,7 +4102,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4119,7 +4119,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4136,7 +4136,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4153,7 +4153,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4170,7 +4170,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4187,7 +4187,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4204,7 +4204,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4221,7 +4221,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4238,7 +4238,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4255,7 +4255,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4272,7 +4272,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4289,7 +4289,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4306,7 +4306,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4323,7 +4323,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4340,7 +4340,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4357,7 +4357,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4374,7 +4374,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4391,7 +4391,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4408,7 +4408,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4425,7 +4425,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4442,7 +4442,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4459,7 +4459,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#d6bf57",
@@ -4502,7 +4502,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4519,7 +4519,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4536,7 +4536,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4553,7 +4553,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4570,7 +4570,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4587,7 +4587,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4604,7 +4604,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4621,7 +4621,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4638,7 +4638,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4655,7 +4655,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4672,7 +4672,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4689,7 +4689,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4706,7 +4706,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4723,7 +4723,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4740,7 +4740,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4757,7 +4757,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4774,7 +4774,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4791,7 +4791,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4808,7 +4808,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4825,7 +4825,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4842,7 +4842,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4859,7 +4859,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4876,7 +4876,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4893,7 +4893,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4910,7 +4910,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4927,7 +4927,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4944,7 +4944,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4961,7 +4961,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4978,7 +4978,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -4995,7 +4995,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
@@ -5012,7 +5012,7 @@ Array [
onContextMenu={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
- r={0.5}
+ r={1}
style={
Object {
"fill": "#6092c0",
diff --git a/x-pack/plugins/apm/public/components/shared/charts/ErroneousTransactionsRateChart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/ErroneousTransactionsRateChart/index.tsx
index 8214c081e6ce1..3b6d1684e08e1 100644
--- a/x-pack/plugins/apm/public/components/shared/charts/ErroneousTransactionsRateChart/index.tsx
+++ b/x-pack/plugins/apm/public/components/shared/charts/ErroneousTransactionsRateChart/index.tsx
@@ -88,7 +88,7 @@ export function ErroneousTransactionsRateChart() {
},
{
data: errorRates,
- type: 'line',
+ type: 'linemark',
color: theme.euiColorVis7,
hideLegend: true,
title: i18n.translate('xpack.apm.errorRateChart.rateLabel', {
diff --git a/x-pack/plugins/apm/public/utils/testHelpers.tsx b/x-pack/plugins/apm/public/utils/testHelpers.tsx
index 217e6a30a33b4..a750a9ea7af67 100644
--- a/x-pack/plugins/apm/public/utils/testHelpers.tsx
+++ b/x-pack/plugins/apm/public/utils/testHelpers.tsx
@@ -151,7 +151,20 @@ export async function inspectSearchParams(
end: 1528977600000,
apmEventClient: { search: spy } as any,
internalClient: { search: spy } as any,
- config: new Proxy({}, { get: () => 'myIndex' }) as APMConfig,
+ config: new Proxy(
+ {},
+ {
+ get: (_, key) => {
+ switch (key) {
+ default:
+ return 'myIndex';
+
+ case 'xpack.apm.metricsInterval':
+ return 30;
+ }
+ },
+ }
+ ) as APMConfig,
uiFiltersES: [{ term: { 'my.custom.ui.filter': 'foo-bar' } }],
indices: {
/* eslint-disable @typescript-eslint/naming-convention */
diff --git a/x-pack/plugins/apm/server/index.ts b/x-pack/plugins/apm/server/index.ts
index fa4b8b821f9f8..29b2a77df348e 100644
--- a/x-pack/plugins/apm/server/index.ts
+++ b/x-pack/plugins/apm/server/index.ts
@@ -31,6 +31,7 @@ export const config = {
maxTraceItems: schema.number({ defaultValue: 1000 }),
}),
telemetryCollectionEnabled: schema.boolean({ defaultValue: true }),
+ metricsInterval: schema.number({ defaultValue: 30 }),
}),
};
@@ -68,6 +69,7 @@ export function mergeConfigs(
'xpack.apm.autocreateApmIndexPattern': apmConfig.autocreateApmIndexPattern,
'xpack.apm.telemetryCollectionEnabled':
apmConfig.telemetryCollectionEnabled,
+ 'xpack.apm.metricsInterval': apmConfig.metricsInterval,
};
}
diff --git a/x-pack/plugins/apm/server/lib/helpers/metrics.ts b/x-pack/plugins/apm/server/lib/helpers/metrics.ts
index c57769e9e15da..9f5b5cdf47552 100644
--- a/x-pack/plugins/apm/server/lib/helpers/metrics.ts
+++ b/x-pack/plugins/apm/server/lib/helpers/metrics.ts
@@ -6,13 +6,17 @@
import { getBucketSize } from './get_bucket_size';
-export function getMetricsDateHistogramParams(start: number, end: number) {
+export function getMetricsDateHistogramParams(
+ start: number,
+ end: number,
+ metricsInterval: number
+) {
const { bucketSize } = getBucketSize(start, end, 'auto');
return {
field: '@timestamp',
- // ensure minimum bucket size of 30s since this is the default resolution for metric data
- fixed_interval: `${Math.max(bucketSize, 30)}s`,
+ // ensure minimum bucket size of configured interval since this is the default resolution for metric data
+ fixed_interval: `${Math.max(bucketSize, metricsInterval)}s`,
min_doc_count: 0,
extended_bounds: { min: start, max: end },
diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts
index e5c573ba1ec02..551384da2cca7 100644
--- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts
+++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts
@@ -42,7 +42,7 @@ export async function fetchAndTransformGcMetrics({
chartBase: ChartBase;
fieldName: typeof METRIC_JAVA_GC_COUNT | typeof METRIC_JAVA_GC_TIME;
}) {
- const { start, end, apmEventClient } = setup;
+ const { start, end, apmEventClient, config } = setup;
const { bucketSize } = getBucketSize(start, end, 'auto');
@@ -75,7 +75,11 @@ export async function fetchAndTransformGcMetrics({
},
aggs: {
over_time: {
- date_histogram: getMetricsDateHistogramParams(start, end),
+ date_histogram: getMetricsDateHistogramParams(
+ start,
+ end,
+ config['xpack.apm.metricsInterval']
+ ),
aggs: {
// get the max value
max: {
diff --git a/x-pack/plugins/apm/server/lib/metrics/fetch_and_transform_metrics.ts b/x-pack/plugins/apm/server/lib/metrics/fetch_and_transform_metrics.ts
index f6e201b395c37..a42a10d6518a0 100644
--- a/x-pack/plugins/apm/server/lib/metrics/fetch_and_transform_metrics.ts
+++ b/x-pack/plugins/apm/server/lib/metrics/fetch_and_transform_metrics.ts
@@ -65,7 +65,7 @@ export async function fetchAndTransformMetrics({
aggs: T;
additionalFilters?: Filter[];
}) {
- const { start, end, apmEventClient } = setup;
+ const { start, end, apmEventClient, config } = setup;
const projection = getMetricsProjection({
setup,
@@ -83,7 +83,11 @@ export async function fetchAndTransformMetrics({
},
aggs: {
timeseriesData: {
- date_histogram: getMetricsDateHistogramParams(start, end),
+ date_histogram: getMetricsDateHistogramParams(
+ start,
+ end,
+ config['xpack.apm.metricsInterval']
+ ),
aggs,
},
...aggs,
diff --git a/x-pack/plugins/apm/server/lib/transaction_groups/get_error_rate.ts b/x-pack/plugins/apm/server/lib/transaction_groups/get_error_rate.ts
index d4e0bd1d54da1..ec2d8144cf3ff 100644
--- a/x-pack/plugins/apm/server/lib/transaction_groups/get_error_rate.ts
+++ b/x-pack/plugins/apm/server/lib/transaction_groups/get_error_rate.ts
@@ -12,12 +12,12 @@ import {
} from '../../../common/elasticsearch_fieldnames';
import { ProcessorEvent } from '../../../common/processor_event';
import { rangeFilter } from '../../../common/utils/range_filter';
-import { getMetricsDateHistogramParams } from '../helpers/metrics';
import {
Setup,
SetupTimeRange,
SetupUIFilters,
} from '../helpers/setup_request';
+import { getBucketSize } from '../helpers/get_bucket_size';
export async function getErrorRate({
serviceName,
@@ -57,7 +57,12 @@ export async function getErrorRate({
query: { bool: { filter } },
aggs: {
total_transactions: {
- date_histogram: getMetricsDateHistogramParams(start, end),
+ date_histogram: {
+ field: '@timestamp',
+ fixed_interval: getBucketSize(start, end, 'auto').intervalString,
+ min_doc_count: 0,
+ extended_bounds: { min: start, max: end },
+ },
aggs: {
erroneous_transactions: {
filter: { range: { [HTTP_RESPONSE_STATUS_CODE]: { gte: 400 } } },
diff --git a/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts b/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts
index 7248399d1f93f..fbdddea32deb4 100644
--- a/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts
+++ b/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts
@@ -36,7 +36,7 @@ export async function getTransactionBreakdown({
transactionName?: string;
transactionType: string;
}) {
- const { uiFiltersES, apmEventClient, start, end } = setup;
+ const { uiFiltersES, apmEventClient, start, end, config } = setup;
const subAggs = {
sum_all_self_times: {
@@ -104,7 +104,11 @@ export async function getTransactionBreakdown({
aggs: {
...subAggs,
by_date: {
- date_histogram: getMetricsDateHistogramParams(start, end),
+ date_histogram: getMetricsDateHistogramParams(
+ start,
+ end,
+ config['xpack.apm.metricsInterval']
+ ),
aggs: subAggs,
},
},
diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/index.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/index.tsx
index 521fbf209870c..f11d6cdb8d26d 100644
--- a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/index.tsx
+++ b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/index.tsx
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-export { LogEntryFlyout } from './log_entry_flyout';
+export * from './log_entry_flyout';
diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
index 57f27ee76184b..76ffada510e51 100644
--- a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
+++ b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
@@ -26,12 +26,10 @@ import { InfraLoadingPanel } from '../../loading';
import { LogEntryActionsMenu } from './log_entry_actions_menu';
import { LogEntriesItem, LogEntriesItemField } from '../../../../common/http_api';
-interface Props {
+export interface LogEntryFlyoutProps {
flyoutItem: LogEntriesItem | null;
setFlyoutVisibility: (visible: boolean) => void;
- setFilter: (filter: string) => void;
- setTarget: (timeKey: TimeKey, flyoutItemId: string) => void;
-
+ setFilter: (filter: string, flyoutItemId: string, timeKey?: TimeKey) => void;
loading: boolean;
}
@@ -40,27 +38,27 @@ export const LogEntryFlyout = ({
loading,
setFlyoutVisibility,
setFilter,
- setTarget,
-}: Props) => {
+}: LogEntryFlyoutProps) => {
const createFilterHandler = useCallback(
(field: LogEntriesItemField) => () => {
+ if (!flyoutItem) {
+ return;
+ }
+
const filter = `${field.field}:"${field.value}"`;
- setFilter(filter);
+ const timestampMoment = moment(flyoutItem.key.time);
+ let target;
- if (flyoutItem && flyoutItem.key) {
- const timestampMoment = moment(flyoutItem.key.time);
- if (timestampMoment.isValid()) {
- setTarget(
- {
- time: timestampMoment.valueOf(),
- tiebreaker: flyoutItem.key.tiebreaker,
- },
- flyoutItem.id
- );
- }
+ if (timestampMoment.isValid()) {
+ target = {
+ time: timestampMoment.valueOf(),
+ tiebreaker: flyoutItem.key.tiebreaker,
+ };
}
+
+ setFilter(filter, flyoutItem.id, target);
},
- [flyoutItem, setFilter, setTarget]
+ [flyoutItem, setFilter]
);
const closeFlyout = useCallback(() => setFlyoutVisibility(false), [setFlyoutVisibility]);
diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_providers.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_providers.tsx
index e986fa37c2b2c..4ad654614237d 100644
--- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_providers.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_providers.tsx
@@ -10,6 +10,7 @@ import { LogEntryCategoriesModuleProvider } from '../../../containers/logs/log_a
import { LogEntryRateModuleProvider } from '../../../containers/logs/log_analysis/modules/log_entry_rate';
import { useLogSourceContext } from '../../../containers/logs/log_source';
import { useActiveKibanaSpace } from '../../../hooks/use_kibana_space';
+import { LogFlyout } from '../../../containers/logs/log_flyout';
export const LogEntryRatePageProviders: React.FunctionComponent = ({ children }) => {
const { sourceId, sourceConfiguration } = useLogSourceContext();
@@ -23,20 +24,22 @@ export const LogEntryRatePageProviders: React.FunctionComponent = ({ children })
}
return (
-
-
+
- {children}
-
-
+
+ {children}
+
+
+
);
};
diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx
index 65cc4a6c4a704..de72ac5c5a574 100644
--- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx
@@ -7,7 +7,9 @@
import datemath from '@elastic/datemath';
import { EuiFlexGroup, EuiFlexItem, EuiPage, EuiPanel, EuiSuperDatePicker } from '@elastic/eui';
import moment from 'moment';
-import React, { useCallback, useEffect, useMemo, useState } from 'react';
+import { encode, RisonValue } from 'rison-node';
+import { stringify } from 'query-string';
+import React, { useCallback, useEffect, useMemo, useState, useContext } from 'react';
import { euiStyled, useTrackPageview } from '../../../../../observability/public';
import { TimeRange } from '../../../../common/http_api/shared/time_range';
import { bucketSpan } from '../../../../common/log_analysis';
@@ -29,6 +31,9 @@ import {
StringTimeRange,
useLogAnalysisResultsUrlState,
} from './use_log_entry_rate_results_url_state';
+import { LogEntryFlyout, LogEntryFlyoutProps } from '../../../components/logging/log_entry_flyout';
+import { LogFlyout } from '../../../containers/logs/log_flyout';
+import { useKibana } from '../../../../../../../src/plugins/kibana_react/public';
export const SORT_DEFAULTS = {
direction: 'desc' as const,
@@ -42,6 +47,7 @@ export const PAGINATION_DEFAULTS = {
export const LogEntryRateResultsContent: React.FunctionComponent = () => {
useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_results' });
useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_results', delay: 15000 });
+ const navigateToApp = useKibana().services.application?.navigateToApp;
const { sourceId } = useLogSourceContext();
@@ -79,6 +85,30 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => {
lastChangedTime: Date.now(),
}));
+ const linkToLogStream = useCallback(
+ (filter, id, timeKey) => {
+ const params = {
+ logPosition: encode({
+ end: moment(queryTimeRange.value.endTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
+ position: timeKey as RisonValue,
+ start: moment(queryTimeRange.value.startTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
+ streamLive: false,
+ }),
+ flyoutOptions: encode({
+ surroundingLogsId: id,
+ }),
+ logFilter: encode({
+ expression: filter,
+ kind: 'kuery',
+ }),
+ };
+
+ // eslint-disable-next-line no-unused-expressions
+ navigateToApp?.('logs', { path: `/stream?${stringify(params)}` });
+ },
+ [queryTimeRange, navigateToApp]
+ );
+
const bucketDuration = useMemo(
() => getBucketDuration(queryTimeRange.value.startTime, queryTimeRange.value.endTime),
[queryTimeRange.value.endTime, queryTimeRange.value.startTime]
@@ -115,6 +145,10 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => {
filteredDatasets: selectedDatasets,
});
+ const { flyoutVisible, setFlyoutVisibility, flyoutItem, isLoading: isFlyoutLoading } = useContext(
+ LogFlyout.Context
+ );
+
const handleQueryTimeRangeChange = useCallback(
({ start: startTime, end: endTime }: { start: string; end: string }) => {
setQueryTimeRange({
@@ -198,75 +232,86 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => {
);
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {flyoutVisible ? (
+
+ ) : null}
+ >
);
};
diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
index fece2522de574..a543f95bf4ffb 100644
--- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
@@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import React, { useMemo, useCallback, useState } from 'react';
+import React, { useMemo, useCallback, useState, useContext } from 'react';
import moment from 'moment';
import { encode } from 'rison-node';
import { i18n } from '@kbn/i18n';
@@ -37,6 +37,7 @@ import {
} from '../../../../../utils/source_configuration';
import { localizedDate } from '../../../../../../common/formatters/datetime';
import { LogEntryAnomaly } from '../../../../../../common/http_api';
+import { LogFlyout } from '../../../../../containers/logs/log_flyout';
export const exampleMessageScale = 'medium' as const;
export const exampleTimestampFormat = 'time' as const;
@@ -45,6 +46,13 @@ const MENU_LABEL = i18n.translate('xpack.infra.logAnomalies.logEntryExamplesMenu
defaultMessage: 'View actions for log entry',
});
+const VIEW_DETAILS_LABEL = i18n.translate(
+ 'xpack.infra.logs.analysis.logEntryExamplesViewDetailsLabel',
+ {
+ defaultMessage: 'View details',
+ }
+);
+
const VIEW_IN_STREAM_LABEL = i18n.translate(
'xpack.infra.logs.analysis.logEntryExamplesViewInStreamLabel',
{
@@ -80,6 +88,8 @@ export const LogEntryExampleMessage: React.FunctionComponent = ({
const setItemIsHovered = useCallback(() => setIsHovered(true), []);
const setItemIsNotHovered = useCallback(() => setIsHovered(false), []);
+ const { setFlyoutVisibility, setFlyoutId } = useContext(LogFlyout.Context);
+
// handle special cases for the dataset value
const humanFriendlyDataset = getFriendlyNameForPartitionId(dataset);
@@ -116,6 +126,13 @@ export const LogEntryExampleMessage: React.FunctionComponent = ({
}
return [
+ {
+ label: VIEW_DETAILS_LABEL,
+ onClick: () => {
+ setFlyoutId(id);
+ setFlyoutVisibility(true);
+ },
+ },
{
label: VIEW_IN_STREAM_LABEL,
onClick: viewInStreamLinkProps.onClick,
@@ -127,7 +144,13 @@ export const LogEntryExampleMessage: React.FunctionComponent = ({
href: viewAnomalyInMachineLearningLinkProps.href,
},
];
- }, [viewInStreamLinkProps, viewAnomalyInMachineLearningLinkProps]);
+ }, [
+ id,
+ setFlyoutId,
+ setFlyoutVisibility,
+ viewInStreamLinkProps,
+ viewAnomalyInMachineLearningLinkProps,
+ ]);
return (
{
const [, { setContextEntry }] = useContext(ViewLogInContext.Context);
+ const setFilter = useCallback(
+ (filter, flyoutItemId, timeKey) => {
+ applyLogFilterQuery(filter);
+ if (timeKey) {
+ jumpToTargetPosition(timeKey);
+ }
+ setSurroundingLogsId(flyoutItemId);
+ stopLiveStreaming();
+ },
+ [applyLogFilterQuery, jumpToTargetPosition, setSurroundingLogsId, stopLiveStreaming]
+ );
+
return (
<>
@@ -65,12 +77,7 @@ export const LogsPageLogsContent: React.FunctionComponent = () => {
{flyoutVisible ? (
{
- jumpToTargetPosition(timeKey);
- setSurroundingLogsId(flyoutItemId);
- stopLiveStreaming();
- }}
+ setFilter={setFilter}
setFlyoutVisibility={setFlyoutVisibility}
flyoutItem={flyoutItem}
loading={isLoading}
diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/expectation/error_rate.json b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/expectation/error_rate.json
index 9ff45ebdbb21b..e448729f44a98 100644
--- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/expectation/error_rate.json
+++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/expectation/error_rate.json
@@ -1,42 +1,970 @@
{
- "noHits":false,
- "erroneousTransactionsRate":[
- {
- "x":1593413100000,
- "y":null
- },
- {
- "x":1593413130000,
- "y":null
- },
- {
- "x":1593413160000,
- "y":null
- },
- {
- "x":1593413190000,
- "y":null
- },
- {
- "x":1593413220000,
- "y":null
- },
- {
- "x":1593413250000,
- "y":0
- },
- {
- "x":1593413280000,
- "y":0.14102564102564102
- },
- {
- "x":1593413310000,
- "y":0.14634146341463414
- },
- {
- "x":1593413340000,
- "y":null
- }
- ],
- "average":0.09578903481342504
-}
\ No newline at end of file
+ "noHits": false,
+ "erroneousTransactionsRate": [
+ {
+ "x": 1593413100000,
+ "y": null
+ },
+ {
+ "x": 1593413101000,
+ "y": null
+ },
+ {
+ "x": 1593413102000,
+ "y": null
+ },
+ {
+ "x": 1593413103000,
+ "y": null
+ },
+ {
+ "x": 1593413104000,
+ "y": null
+ },
+ {
+ "x": 1593413105000,
+ "y": null
+ },
+ {
+ "x": 1593413106000,
+ "y": null
+ },
+ {
+ "x": 1593413107000,
+ "y": null
+ },
+ {
+ "x": 1593413108000,
+ "y": null
+ },
+ {
+ "x": 1593413109000,
+ "y": null
+ },
+ {
+ "x": 1593413110000,
+ "y": null
+ },
+ {
+ "x": 1593413111000,
+ "y": null
+ },
+ {
+ "x": 1593413112000,
+ "y": null
+ },
+ {
+ "x": 1593413113000,
+ "y": null
+ },
+ {
+ "x": 1593413114000,
+ "y": null
+ },
+ {
+ "x": 1593413115000,
+ "y": null
+ },
+ {
+ "x": 1593413116000,
+ "y": null
+ },
+ {
+ "x": 1593413117000,
+ "y": null
+ },
+ {
+ "x": 1593413118000,
+ "y": null
+ },
+ {
+ "x": 1593413119000,
+ "y": null
+ },
+ {
+ "x": 1593413120000,
+ "y": null
+ },
+ {
+ "x": 1593413121000,
+ "y": null
+ },
+ {
+ "x": 1593413122000,
+ "y": null
+ },
+ {
+ "x": 1593413123000,
+ "y": null
+ },
+ {
+ "x": 1593413124000,
+ "y": null
+ },
+ {
+ "x": 1593413125000,
+ "y": null
+ },
+ {
+ "x": 1593413126000,
+ "y": null
+ },
+ {
+ "x": 1593413127000,
+ "y": null
+ },
+ {
+ "x": 1593413128000,
+ "y": null
+ },
+ {
+ "x": 1593413129000,
+ "y": null
+ },
+ {
+ "x": 1593413130000,
+ "y": null
+ },
+ {
+ "x": 1593413131000,
+ "y": null
+ },
+ {
+ "x": 1593413132000,
+ "y": null
+ },
+ {
+ "x": 1593413133000,
+ "y": null
+ },
+ {
+ "x": 1593413134000,
+ "y": null
+ },
+ {
+ "x": 1593413135000,
+ "y": null
+ },
+ {
+ "x": 1593413136000,
+ "y": null
+ },
+ {
+ "x": 1593413137000,
+ "y": null
+ },
+ {
+ "x": 1593413138000,
+ "y": null
+ },
+ {
+ "x": 1593413139000,
+ "y": null
+ },
+ {
+ "x": 1593413140000,
+ "y": null
+ },
+ {
+ "x": 1593413141000,
+ "y": null
+ },
+ {
+ "x": 1593413142000,
+ "y": null
+ },
+ {
+ "x": 1593413143000,
+ "y": null
+ },
+ {
+ "x": 1593413144000,
+ "y": null
+ },
+ {
+ "x": 1593413145000,
+ "y": null
+ },
+ {
+ "x": 1593413146000,
+ "y": null
+ },
+ {
+ "x": 1593413147000,
+ "y": null
+ },
+ {
+ "x": 1593413148000,
+ "y": null
+ },
+ {
+ "x": 1593413149000,
+ "y": null
+ },
+ {
+ "x": 1593413150000,
+ "y": null
+ },
+ {
+ "x": 1593413151000,
+ "y": null
+ },
+ {
+ "x": 1593413152000,
+ "y": null
+ },
+ {
+ "x": 1593413153000,
+ "y": null
+ },
+ {
+ "x": 1593413154000,
+ "y": null
+ },
+ {
+ "x": 1593413155000,
+ "y": null
+ },
+ {
+ "x": 1593413156000,
+ "y": null
+ },
+ {
+ "x": 1593413157000,
+ "y": null
+ },
+ {
+ "x": 1593413158000,
+ "y": null
+ },
+ {
+ "x": 1593413159000,
+ "y": null
+ },
+ {
+ "x": 1593413160000,
+ "y": null
+ },
+ {
+ "x": 1593413161000,
+ "y": null
+ },
+ {
+ "x": 1593413162000,
+ "y": null
+ },
+ {
+ "x": 1593413163000,
+ "y": null
+ },
+ {
+ "x": 1593413164000,
+ "y": null
+ },
+ {
+ "x": 1593413165000,
+ "y": null
+ },
+ {
+ "x": 1593413166000,
+ "y": null
+ },
+ {
+ "x": 1593413167000,
+ "y": null
+ },
+ {
+ "x": 1593413168000,
+ "y": null
+ },
+ {
+ "x": 1593413169000,
+ "y": null
+ },
+ {
+ "x": 1593413170000,
+ "y": null
+ },
+ {
+ "x": 1593413171000,
+ "y": null
+ },
+ {
+ "x": 1593413172000,
+ "y": null
+ },
+ {
+ "x": 1593413173000,
+ "y": null
+ },
+ {
+ "x": 1593413174000,
+ "y": null
+ },
+ {
+ "x": 1593413175000,
+ "y": null
+ },
+ {
+ "x": 1593413176000,
+ "y": null
+ },
+ {
+ "x": 1593413177000,
+ "y": null
+ },
+ {
+ "x": 1593413178000,
+ "y": null
+ },
+ {
+ "x": 1593413179000,
+ "y": null
+ },
+ {
+ "x": 1593413180000,
+ "y": null
+ },
+ {
+ "x": 1593413181000,
+ "y": null
+ },
+ {
+ "x": 1593413182000,
+ "y": null
+ },
+ {
+ "x": 1593413183000,
+ "y": null
+ },
+ {
+ "x": 1593413184000,
+ "y": null
+ },
+ {
+ "x": 1593413185000,
+ "y": null
+ },
+ {
+ "x": 1593413186000,
+ "y": null
+ },
+ {
+ "x": 1593413187000,
+ "y": null
+ },
+ {
+ "x": 1593413188000,
+ "y": null
+ },
+ {
+ "x": 1593413189000,
+ "y": null
+ },
+ {
+ "x": 1593413190000,
+ "y": null
+ },
+ {
+ "x": 1593413191000,
+ "y": null
+ },
+ {
+ "x": 1593413192000,
+ "y": null
+ },
+ {
+ "x": 1593413193000,
+ "y": null
+ },
+ {
+ "x": 1593413194000,
+ "y": null
+ },
+ {
+ "x": 1593413195000,
+ "y": null
+ },
+ {
+ "x": 1593413196000,
+ "y": null
+ },
+ {
+ "x": 1593413197000,
+ "y": null
+ },
+ {
+ "x": 1593413198000,
+ "y": null
+ },
+ {
+ "x": 1593413199000,
+ "y": null
+ },
+ {
+ "x": 1593413200000,
+ "y": null
+ },
+ {
+ "x": 1593413201000,
+ "y": null
+ },
+ {
+ "x": 1593413202000,
+ "y": null
+ },
+ {
+ "x": 1593413203000,
+ "y": null
+ },
+ {
+ "x": 1593413204000,
+ "y": null
+ },
+ {
+ "x": 1593413205000,
+ "y": null
+ },
+ {
+ "x": 1593413206000,
+ "y": null
+ },
+ {
+ "x": 1593413207000,
+ "y": null
+ },
+ {
+ "x": 1593413208000,
+ "y": null
+ },
+ {
+ "x": 1593413209000,
+ "y": null
+ },
+ {
+ "x": 1593413210000,
+ "y": null
+ },
+ {
+ "x": 1593413211000,
+ "y": null
+ },
+ {
+ "x": 1593413212000,
+ "y": null
+ },
+ {
+ "x": 1593413213000,
+ "y": null
+ },
+ {
+ "x": 1593413214000,
+ "y": null
+ },
+ {
+ "x": 1593413215000,
+ "y": null
+ },
+ {
+ "x": 1593413216000,
+ "y": null
+ },
+ {
+ "x": 1593413217000,
+ "y": null
+ },
+ {
+ "x": 1593413218000,
+ "y": null
+ },
+ {
+ "x": 1593413219000,
+ "y": null
+ },
+ {
+ "x": 1593413220000,
+ "y": null
+ },
+ {
+ "x": 1593413221000,
+ "y": null
+ },
+ {
+ "x": 1593413222000,
+ "y": null
+ },
+ {
+ "x": 1593413223000,
+ "y": null
+ },
+ {
+ "x": 1593413224000,
+ "y": null
+ },
+ {
+ "x": 1593413225000,
+ "y": null
+ },
+ {
+ "x": 1593413226000,
+ "y": null
+ },
+ {
+ "x": 1593413227000,
+ "y": null
+ },
+ {
+ "x": 1593413228000,
+ "y": null
+ },
+ {
+ "x": 1593413229000,
+ "y": null
+ },
+ {
+ "x": 1593413230000,
+ "y": null
+ },
+ {
+ "x": 1593413231000,
+ "y": null
+ },
+ {
+ "x": 1593413232000,
+ "y": null
+ },
+ {
+ "x": 1593413233000,
+ "y": null
+ },
+ {
+ "x": 1593413234000,
+ "y": null
+ },
+ {
+ "x": 1593413235000,
+ "y": null
+ },
+ {
+ "x": 1593413236000,
+ "y": null
+ },
+ {
+ "x": 1593413237000,
+ "y": null
+ },
+ {
+ "x": 1593413238000,
+ "y": null
+ },
+ {
+ "x": 1593413239000,
+ "y": null
+ },
+ {
+ "x": 1593413240000,
+ "y": null
+ },
+ {
+ "x": 1593413241000,
+ "y": null
+ },
+ {
+ "x": 1593413242000,
+ "y": null
+ },
+ {
+ "x": 1593413243000,
+ "y": null
+ },
+ {
+ "x": 1593413244000,
+ "y": null
+ },
+ {
+ "x": 1593413245000,
+ "y": null
+ },
+ {
+ "x": 1593413246000,
+ "y": null
+ },
+ {
+ "x": 1593413247000,
+ "y": null
+ },
+ {
+ "x": 1593413248000,
+ "y": null
+ },
+ {
+ "x": 1593413249000,
+ "y": null
+ },
+ {
+ "x": 1593413250000,
+ "y": null
+ },
+ {
+ "x": 1593413251000,
+ "y": null
+ },
+ {
+ "x": 1593413252000,
+ "y": null
+ },
+ {
+ "x": 1593413253000,
+ "y": null
+ },
+ {
+ "x": 1593413254000,
+ "y": null
+ },
+ {
+ "x": 1593413255000,
+ "y": null
+ },
+ {
+ "x": 1593413256000,
+ "y": null
+ },
+ {
+ "x": 1593413257000,
+ "y": null
+ },
+ {
+ "x": 1593413258000,
+ "y": null
+ },
+ {
+ "x": 1593413259000,
+ "y": null
+ },
+ {
+ "x": 1593413260000,
+ "y": null
+ },
+ {
+ "x": 1593413261000,
+ "y": null
+ },
+ {
+ "x": 1593413262000,
+ "y": null
+ },
+ {
+ "x": 1593413263000,
+ "y": null
+ },
+ {
+ "x": 1593413264000,
+ "y": null
+ },
+ {
+ "x": 1593413265000,
+ "y": null
+ },
+ {
+ "x": 1593413266000,
+ "y": null
+ },
+ {
+ "x": 1593413267000,
+ "y": null
+ },
+ {
+ "x": 1593413268000,
+ "y": null
+ },
+ {
+ "x": 1593413269000,
+ "y": null
+ },
+ {
+ "x": 1593413270000,
+ "y": null
+ },
+ {
+ "x": 1593413271000,
+ "y": null
+ },
+ {
+ "x": 1593413272000,
+ "y": 0
+ },
+ {
+ "x": 1593413273000,
+ "y": 0
+ },
+ {
+ "x": 1593413274000,
+ "y": null
+ },
+ {
+ "x": 1593413275000,
+ "y": null
+ },
+ {
+ "x": 1593413276000,
+ "y": null
+ },
+ {
+ "x": 1593413277000,
+ "y": 0
+ },
+ {
+ "x": 1593413278000,
+ "y": null
+ },
+ {
+ "x": 1593413279000,
+ "y": null
+ },
+ {
+ "x": 1593413280000,
+ "y": null
+ },
+ {
+ "x": 1593413281000,
+ "y": 0
+ },
+ {
+ "x": 1593413282000,
+ "y": null
+ },
+ {
+ "x": 1593413283000,
+ "y": null
+ },
+ {
+ "x": 1593413284000,
+ "y": 0
+ },
+ {
+ "x": 1593413285000,
+ "y": 0
+ },
+ {
+ "x": 1593413286000,
+ "y": 0.125
+ },
+ {
+ "x": 1593413287000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413288000,
+ "y": 0
+ },
+ {
+ "x": 1593413289000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413290000,
+ "y": 0
+ },
+ {
+ "x": 1593413291000,
+ "y": 0
+ },
+ {
+ "x": 1593413292000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413293000,
+ "y": 0
+ },
+ {
+ "x": 1593413294000,
+ "y": 0
+ },
+ {
+ "x": 1593413295000,
+ "y": 0
+ },
+ {
+ "x": 1593413296000,
+ "y": 0
+ },
+ {
+ "x": 1593413297000,
+ "y": 0
+ },
+ {
+ "x": 1593413298000,
+ "y": 0
+ },
+ {
+ "x": 1593413299000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413300000,
+ "y": 0.3333333333333333
+ },
+ {
+ "x": 1593413301000,
+ "y": 0.14285714285714285
+ },
+ {
+ "x": 1593413302000,
+ "y": 0
+ },
+ {
+ "x": 1593413303000,
+ "y": 0
+ },
+ {
+ "x": 1593413304000,
+ "y": 0
+ },
+ {
+ "x": 1593413305000,
+ "y": 0.6666666666666666
+ },
+ {
+ "x": 1593413306000,
+ "y": 0
+ },
+ {
+ "x": 1593413307000,
+ "y": 0
+ },
+ {
+ "x": 1593413308000,
+ "y": 0.3333333333333333
+ },
+ {
+ "x": 1593413309000,
+ "y": 0.3333333333333333
+ },
+ {
+ "x": 1593413310000,
+ "y": 0.3333333333333333
+ },
+ {
+ "x": 1593413311000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413312000,
+ "y": 0
+ },
+ {
+ "x": 1593413313000,
+ "y": 0
+ },
+ {
+ "x": 1593413314000,
+ "y": 0
+ },
+ {
+ "x": 1593413315000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413316000,
+ "y": 0
+ },
+ {
+ "x": 1593413317000,
+ "y": 0
+ },
+ {
+ "x": 1593413318000,
+ "y": 0
+ },
+ {
+ "x": 1593413319000,
+ "y": 0
+ },
+ {
+ "x": 1593413320000,
+ "y": 0.3333333333333333
+ },
+ {
+ "x": 1593413321000,
+ "y": 0
+ },
+ {
+ "x": 1593413322000,
+ "y": 0.5
+ },
+ {
+ "x": 1593413323000,
+ "y": null
+ },
+ {
+ "x": 1593413324000,
+ "y": null
+ },
+ {
+ "x": 1593413325000,
+ "y": null
+ },
+ {
+ "x": 1593413326000,
+ "y": null
+ },
+ {
+ "x": 1593413327000,
+ "y": null
+ },
+ {
+ "x": 1593413328000,
+ "y": null
+ },
+ {
+ "x": 1593413329000,
+ "y": null
+ },
+ {
+ "x": 1593413330000,
+ "y": null
+ },
+ {
+ "x": 1593413331000,
+ "y": null
+ },
+ {
+ "x": 1593413332000,
+ "y": null
+ },
+ {
+ "x": 1593413333000,
+ "y": null
+ },
+ {
+ "x": 1593413334000,
+ "y": null
+ },
+ {
+ "x": 1593413335000,
+ "y": null
+ },
+ {
+ "x": 1593413336000,
+ "y": null
+ },
+ {
+ "x": 1593413337000,
+ "y": null
+ },
+ {
+ "x": 1593413338000,
+ "y": null
+ },
+ {
+ "x": 1593413339000,
+ "y": null
+ },
+ {
+ "x": 1593413340000,
+ "y": null
+ }
+ ],
+ "average": 0.14188815060908083
+}