From b89130c90d48c1e03caca61c82251654f4dbeb3c Mon Sep 17 00:00:00 2001 From: Catherine Liu Date: Mon, 26 Oct 2020 15:23:15 -0700 Subject: [PATCH 1/5] Added telemetry for the home page --- .../components/add_data/add_data.tsx | 101 ++++++++++-------- .../public/application/components/home.js | 14 ++- .../components/manage_data/manage_data.tsx | 81 ++++++++------ .../solutions_section/solution_panel.tsx | 75 +++++++------ .../overview_page_footer.tsx | 72 +++++++------ 5 files changed, 197 insertions(+), 146 deletions(-) diff --git a/src/plugins/home/public/application/components/add_data/add_data.tsx b/src/plugins/home/public/application/components/add_data/add_data.tsx index 0311c1fc5e5c..4b2a3d2d5d22 100644 --- a/src/plugins/home/public/application/components/add_data/add_data.tsx +++ b/src/plugins/home/public/application/components/add_data/add_data.tsx @@ -17,69 +17,78 @@ * under the License. */ -import React, { FC } from 'react'; +import React, { FC, MouseEvent } from 'react'; import PropTypes from 'prop-types'; import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; +import { METRIC_TYPE } from '@kbn/analytics'; // @ts-expect-error untyped service import { FeatureCatalogueEntry } from '../../services'; import { createAppNavigationHandler } from '../app_navigation_handler'; // @ts-expect-error untyped component import { Synopsis } from '../synopsis'; +import { getServices } from '../../kibana_services'; interface Props { addBasePath: (path: string) => string; features: FeatureCatalogueEntry[]; } -export const AddData: FC = ({ addBasePath, features }) => ( -
- - - -

- -

-
-
+export const AddData: FC = ({ addBasePath, features }) => { + const { trackUiMetric } = getServices(); - -
- - - -
-
-
- - + return ( +
+ + + +

+ +

+
+
- - {features.map((feature) => ( - - + +
+ + + +
- ))} -
-
-); + + + + + + {features.map((feature) => ( + + { + createAppNavigationHandler(feature.path)(event); + trackUiMetric(METRIC_TYPE.CLICK, `ingest_data_card_${feature.id}`); + }} + description={feature.description} + iconType={feature.icon} + title={feature.title} + url={addBasePath(feature.path)} + wrapInPanel + /> + + ))} + +
+ ); +}; AddData.propTypes = { addBasePath: PropTypes.func.isRequired, diff --git a/src/plugins/home/public/application/components/home.js b/src/plugins/home/public/application/components/home.js index 054f5a5344df..a990beaa6a44 100644 --- a/src/plugins/home/public/application/components/home.js +++ b/src/plugins/home/public/application/components/home.js @@ -21,6 +21,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule } from '@elastic/eui'; +import { METRIC_TYPE } from '@kbn/analytics'; import { i18n } from '@kbn/i18n'; import { OverviewPageFooter, @@ -120,7 +121,7 @@ export class Home extends Component { renderNormal() { const { addBasePath, solutions, directories } = this.props; - + const { trackUiMetric } = getServices(); const devTools = this.findDirectoryById('console'); const addDataFeatures = this.getFeaturesByCategory(FeatureCatalogueCategory.DATA); const manageDataFeatures = this.getFeaturesByCategory(FeatureCatalogueCategory.ADMIN); @@ -171,7 +172,16 @@ export class Home extends Component {