You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by kg...@apache.org on 2023/04/28 07:07:07 UTC
[superset] branch master updated: chore: Add logging events for drill by (#23854)
This is an automated email from the ASF dual-hosted git repository.
kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 07381834f8 chore: Add logging events for drill by (#23854)
07381834f8 is described below
commit 07381834f885d5813862d33b2870ad7be5cfdfca
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Fri Apr 28 09:06:57 2023 +0200
chore: Add logging events for drill by (#23854)
---
.../src/components/Chart/DrillBy/DrillByModal.tsx | 45 +++++++++++++++++++---
superset-frontend/src/logger/LogUtils.ts | 5 +++
2 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx b/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx
index 1204a77bdf..d1e8b39e0c 100644
--- a/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx
+++ b/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx
@@ -35,7 +35,7 @@ import {
useTheme,
ContextMenuFilters,
} from '@superset-ui/core';
-import { useSelector } from 'react-redux';
+import { useDispatch, useSelector } from 'react-redux';
import { Link } from 'react-router-dom';
import Modal from 'src/components/Modal';
import Loading from 'src/components/Loading';
@@ -43,11 +43,17 @@ import Button from 'src/components/Button';
import { RootState } from 'src/dashboard/types';
import { DashboardPageIdContext } from 'src/dashboard/containers/DashboardPage';
import { postFormData } from 'src/explore/exploreUtils/formData';
-import { noOp } from 'src/utils/common';
import { simpleFilterToAdhoc } from 'src/utils/simpleFilterToAdhoc';
import { useDatasetMetadataBar } from 'src/features/datasets/metadataBar/useDatasetMetadataBar';
import { useToasts } from 'src/components/MessageToasts/withToasts';
import Alert from 'src/components/Alert';
+import { logEvent } from 'src/logger/actions';
+import {
+ LOG_ACTIONS_DRILL_BY_BREADCRUMB_CLICKED,
+ LOG_ACTIONS_DRILL_BY_EDIT_CHART,
+ LOG_ACTIONS_DRILL_BY_MODAL_OPENED,
+ LOG_ACTIONS_FURTHER_DRILL_BY,
+} from 'src/logger/LogUtils';
import { Dataset, DrillByType } from '../types';
import DrillByChart from './DrillByChart';
import { ContextMenuItem } from '../ChartContextMenu/ChartContextMenu';
@@ -67,9 +73,18 @@ interface ModalFooterProps {
}
const ModalFooter = ({ formData, closeModal }: ModalFooterProps) => {
+ const dispatch = useDispatch();
const { addDangerToast } = useToasts();
const [url, setUrl] = useState('');
const dashboardPageId = useContext(DashboardPageIdContext);
+ const onEditChartClick = useCallback(() => {
+ dispatch(
+ logEvent(LOG_ACTIONS_DRILL_BY_EDIT_CHART, {
+ slice_id: formData.slice_id,
+ }),
+ );
+ }, [dispatch, formData.slice_id]);
+
const [datasource_id, datasource_type] = formData.datasource.split('__');
useEffect(() => {
postFormData(Number(datasource_id), datasource_type, formData, 0)
@@ -93,7 +108,7 @@ const ModalFooter = ({ formData, closeModal }: ModalFooterProps) => {
<Button
buttonStyle="secondary"
buttonSize="small"
- onClick={noOp}
+ onClick={onEditChartClick}
disabled={!url}
>
<Link
@@ -137,6 +152,7 @@ export default function DrillByModal({
formData,
onHideModal,
}: DrillByModalProps) {
+ const dispatch = useDispatch();
const theme = useTheme();
const { addDangerToast } = useToasts();
const [isChartDataLoading, setIsChartDataLoading] = useState(true);
@@ -145,6 +161,14 @@ export default function DrillByModal({
{ ...drillByConfig, column },
]);
+ useEffect(() => {
+ dispatch(
+ logEvent(LOG_ACTIONS_DRILL_BY_MODAL_OPENED, {
+ slice_id: formData.slice_id,
+ }),
+ );
+ }, [dispatch, formData.slice_id]);
+
const {
column: currentColumn,
groupbyFieldName = drillByConfig.groupbyFieldName,
@@ -233,6 +257,11 @@ export default function DrillByModal({
const onBreadcrumbClick = useCallback(
(breadcrumb: DrillByBreadcrumb, index: number) => {
+ dispatch(
+ logEvent(LOG_ACTIONS_DRILL_BY_BREADCRUMB_CLICKED, {
+ slice_id: formData.slice_id,
+ }),
+ );
setDrillByConfigs(prevConfigs => prevConfigs.slice(0, index));
setBreadcrumbsData(prevBreadcrumbs => {
const newBreadcrumbs = prevBreadcrumbs.slice(0, index + 1);
@@ -263,7 +292,7 @@ export default function DrillByModal({
return newFormData;
});
},
- [drillByConfigs, formData, getFormDataChangesFromConfigs],
+ [dispatch, drillByConfigs, formData, getFormDataChangesFromConfigs],
);
const breadcrumbs = useDrillByBreadcrumbs(breadcrumbsData, onBreadcrumbClick);
@@ -314,6 +343,12 @@ export default function DrillByModal({
newColumn: Column,
drillByConfig: Required<ContextMenuFilters>['drillBy'],
) => {
+ dispatch(
+ logEvent(LOG_ACTIONS_FURTHER_DRILL_BY, {
+ drill_depth: drillByConfigs.length + 1,
+ slice_id: formData.slice_id,
+ }),
+ );
setCurrentFormData(drilledFormData);
setDrillByConfigs(prevConfigs => [
...prevConfigs,
@@ -326,7 +361,7 @@ export default function DrillByModal({
return newBreadcrumbs;
});
},
- [drilledFormData],
+ [dispatch, drillByConfigs.length, drilledFormData, formData.slice_id],
);
const additionalConfig = useMemo(
diff --git a/superset-frontend/src/logger/LogUtils.ts b/superset-frontend/src/logger/LogUtils.ts
index 1e67400520..cf5580c7bd 100644
--- a/superset-frontend/src/logger/LogUtils.ts
+++ b/superset-frontend/src/logger/LogUtils.ts
@@ -54,6 +54,11 @@ export const LOG_ACTIONS_SQLLAB_WARN_LOCAL_STORAGE_USAGE =
'sqllab_warn_local_storage_usage';
export const LOG_ACTIONS_SQLLAB_FETCH_FAILED_QUERY =
'sqllab_fetch_failed_query';
+export const LOG_ACTIONS_DRILL_BY_MODAL_OPENED = 'drill_by_modal_opened';
+export const LOG_ACTIONS_FURTHER_DRILL_BY = 'further_drill_by';
+export const LOG_ACTIONS_DRILL_BY_EDIT_CHART = 'drill_by_edit_chart';
+export const LOG_ACTIONS_DRILL_BY_BREADCRUMB_CLICKED =
+ 'drill_by_breadcrumb_clicked';
// Log event types --------------------------------------------------------------
export const LOG_EVENT_TYPE_TIMING = new Set([