Skip to content

Commit

Permalink
Navigation: add event tracking for dashboard save as events (#62568)
Browse files Browse the repository at this point in the history
* add event tracking for dashboard save as events

* emit a grafana_dashboard_copied event instead
  • Loading branch information
ashharrison90 authored Jan 31, 2023
1 parent 65fbbc0 commit 029253d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React from 'react';

import { selectors } from '@grafana/e2e-selectors';
import { reportInteraction } from '@grafana/runtime';
import { Button, ButtonVariant, ComponentSize, ModalsController } from '@grafana/ui';
import { DashboardModel } from 'app/features/dashboard/state';

Expand Down Expand Up @@ -49,6 +50,7 @@ export const SaveDashboardAsButton: React.FC<SaveDashboardButtonProps & { varian
<Button
size={size}
onClick={() => {
reportInteraction('grafana_dashboard_save_as_clicked');
showModal(SaveDashboardDrawer, {
dashboard,
onSaveSuccess,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export const SaveDashboardDrawer = ({ dashboard, onDismiss, onSaveSuccess, isCop
}, [dashboard, previous.value, options, isNew]);

const [showDiff, setShowDiff] = useState(false);
const { state, onDashboardSave } = useDashboardSave(dashboard);
const { state, onDashboardSave } = useDashboardSave(dashboard, isCopy);
const onSuccess = onSaveSuccess
? () => {
onDismiss();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const saveDashboard = async (saveModel: any, options: SaveDashboardOptions, dash
return result;
};

export const useDashboardSave = (dashboard: DashboardModel) => {
export const useDashboardSave = (dashboard: DashboardModel, isCopy = false) => {
const [state, onDashboardSave] = useAsyncFn(
async (clone: any, options: SaveDashboardOptions, dashboard: DashboardModel) =>
await saveDashboard(clone, options, dashboard),
Expand All @@ -46,10 +46,17 @@ export const useDashboardSave = (dashboard: DashboardModel) => {
// important that these happen before location redirect below
appEvents.publish(new DashboardSavedEvent());
notifyApp.success('Dashboard saved');
reportInteraction(`grafana_dashboard_${dashboard.id ? 'saved' : 'created'}`, {
name: dashboard.title,
url: state.value.url,
});
if (isCopy) {
reportInteraction('grafana_dashboard_copied', {
name: dashboard.title,
url: state.value.url,
});
} else {
reportInteraction(`grafana_dashboard_${dashboard.id ? 'saved' : 'created'}`, {
name: dashboard.title,
url: state.value.url,
});
}

const currentPath = locationService.getLocation().pathname;
const newUrl = locationUtil.stripBaseFromUrl(state.value.url);
Expand All @@ -67,7 +74,7 @@ export const useDashboardSave = (dashboard: DashboardModel) => {
);
}
}
}, [dashboard, state, notifyApp, dispatch]);
}, [dashboard, isCopy, state, notifyApp, dispatch]);

return { state, onDashboardSave };
};

0 comments on commit 029253d

Please sign in to comment.