From 6a995d526a96101e187d2a4555c914431cd50c69 Mon Sep 17 00:00:00 2001 From: Levente Balogh Date: Fri, 26 May 2023 10:22:07 +0200 Subject: [PATCH] Datasources: Extend optional reporting (#69061) * feat: add default properties to the `reportInteraction()` * chore: add more tracking events to the ds-config page * refactor: adding the `path` to the `meta` instaed --- .../grafana-runtime/src/services/EchoSrv.ts | 1 + public/app/core/services/echo/Echo.ts | 1 + .../datasources/components/EditDataSource.tsx | 25 ++++++++++++++++--- .../components/EditDataSourceActions.tsx | 4 ++- public/app/features/datasources/tracking.ts | 8 ++++++ 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/grafana-runtime/src/services/EchoSrv.ts b/packages/grafana-runtime/src/services/EchoSrv.ts index d2dc93920d3..3bfa36576de 100644 --- a/packages/grafana-runtime/src/services/EchoSrv.ts +++ b/packages/grafana-runtime/src/services/EchoSrv.ts @@ -18,6 +18,7 @@ export interface EchoMeta { windowSize: SizeMeta; userAgent: string; url?: string; + path?: string; /** * A unique browser session */ diff --git a/public/app/core/services/echo/Echo.ts b/public/app/core/services/echo/Echo.ts index 755576922e2..35e60f432ee 100644 --- a/public/app/core/services/echo/Echo.ts +++ b/public/app/core/services/echo/Echo.ts @@ -79,6 +79,7 @@ export class Echo implements EchoSrv { userAgent: window.navigator.userAgent, ts: new Date().getTime(), timeSinceNavigationStart: performance.now(), + path: window.location.pathname, url: window.location.href, }; }; diff --git a/public/app/features/datasources/components/EditDataSource.tsx b/public/app/features/datasources/components/EditDataSource.tsx index 460fd603244..b969b9d7c6a 100644 --- a/public/app/features/datasources/components/EditDataSource.tsx +++ b/public/app/features/datasources/components/EditDataSource.tsx @@ -24,6 +24,7 @@ import { useTestDataSource, useUpdateDatasource, } from '../state'; +import { trackDsConfigClicked, trackDsConfigUpdated } from '../tracking'; import { DataSourceRights } from '../types'; import { BasicSettings } from './BasicSettings'; @@ -119,9 +120,13 @@ export function EditDataSourceView({ const onSubmit = async (e: React.MouseEvent | React.FormEvent) => { e.preventDefault(); + trackDsConfigClicked('save_and_test'); + try { await onUpdate({ ...dataSource }); + trackDsConfigUpdated('success'); } catch (err) { + trackDsConfigUpdated('fail'); return; } @@ -129,7 +134,15 @@ export function EditDataSourceView({ }; if (loadError) { - return ; + return ( + { + trackDsConfigClicked('delete'); + onDelete(); + }} + /> + ); } if (loading) { @@ -181,8 +194,14 @@ export function EditDataSourceView({ { + trackDsConfigClicked('delete'); + onDelete(); + }} + onTest={() => { + trackDsConfigClicked('test'); + onTest(); + }} canDelete={!readOnly && hasDeleteRights} canSave={!readOnly && hasWriteRights} /> diff --git a/public/app/features/datasources/components/EditDataSourceActions.tsx b/public/app/features/datasources/components/EditDataSourceActions.tsx index f04c9a22acd..b41ea17f88e 100644 --- a/public/app/features/datasources/components/EditDataSourceActions.tsx +++ b/public/app/features/datasources/components/EditDataSourceActions.tsx @@ -6,7 +6,7 @@ import { contextSrv } from 'app/core/core'; import { AccessControlAction } from 'app/types'; import { useDataSource } from '../state'; -import { trackCreateDashboardClicked, trackExploreClicked } from '../tracking'; +import { trackCreateDashboardClicked, trackDsConfigClicked, trackExploreClicked } from '../tracking'; import { constructDataSourceExploreUrl } from '../utils'; interface Props { @@ -25,6 +25,7 @@ export function EditDataSourceActions({ uid }: Props) { size="sm" href={constructDataSourceExploreUrl(dataSource)} onClick={() => { + trackDsConfigClicked('explore'); trackExploreClicked({ grafana_version: config.buildInfo.version, datasource_uid: dataSource.uid, @@ -41,6 +42,7 @@ export function EditDataSourceActions({ uid }: Props) { variant="secondary" href={`dashboard/new-with-ds/${dataSource.uid}`} onClick={() => { + trackDsConfigClicked('build_a_dashboard'); trackCreateDashboardClicked({ grafana_version: config.buildInfo.version, datasource_uid: dataSource.uid, diff --git a/public/app/features/datasources/tracking.ts b/public/app/features/datasources/tracking.ts index 05231abfeed..a244f090dd8 100644 --- a/public/app/features/datasources/tracking.ts +++ b/public/app/features/datasources/tracking.ts @@ -78,3 +78,11 @@ export const trackCreateDashboardClicked = (props: DataSourceGeneralTrackingProp export const trackDataSourcesListViewed = (props: { grafana_version?: string; path?: string }) => { reportInteraction('grafana_ds_datasources_list_viewed', props); }; + +export const trackDsConfigClicked = (item: string) => { + reportInteraction('connections_datasources_settings_clicked', { item }); +}; + +export const trackDsConfigUpdated = (item: string) => { + reportInteraction('connections_datasources_ds_configured', { item }); +};