From a99d7f09a1e4fb091d237484bd77d5dcdeec15b4 Mon Sep 17 00:00:00 2001
From: Raj Kamal Singh <1133322+rkssisodiya@users.noreply.github.com>
Date: Wed, 15 Nov 2023 14:38:30 +0530
Subject: [PATCH] Chore: logs pipelines UI telemetry (#3964)
* chore: emit event when user saves pipelines
* chore: emit tracking event for entered edit mode
* chore: emit tracking event for clicking add new processor
* chore: emit tracking event for clicking preview pipeline btn
* chore: address PR feedback
---
.../Layouts/Pipeline/CreatePipelineButton.tsx | 13 ++++++++++++-
.../PipelineListsView/PipelineExpandView.tsx | 5 +++++
.../PipelineListsView/PipelineListsView.tsx | 17 +++++++++++++++--
.../components/PreviewAction.tsx | 10 +++++++++-
4 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/frontend/src/container/PipelinePage/Layouts/Pipeline/CreatePipelineButton.tsx b/frontend/src/container/PipelinePage/Layouts/Pipeline/CreatePipelineButton.tsx
index 04358c39b7..bcd4e2c2b2 100644
--- a/frontend/src/container/PipelinePage/Layouts/Pipeline/CreatePipelineButton.tsx
+++ b/frontend/src/container/PipelinePage/Layouts/Pipeline/CreatePipelineButton.tsx
@@ -3,6 +3,7 @@ import TextToolTip from 'components/TextToolTip';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { ActionMode, ActionType, Pipeline } from 'types/api/pipeline/def';
+import { trackEvent } from 'utils/segmentAnalytics';
import { ButtonContainer, CustomButton } from '../../styles';
import { checkDataLength } from '../utils';
@@ -21,10 +22,20 @@ function CreatePipelineButton({
);
const isDisabled = isActionMode === ActionMode.Editing;
- const onEnterEditMode = (): void => setActionMode(ActionMode.Editing);
+ const onEnterEditMode = (): void => {
+ setActionMode(ActionMode.Editing);
+
+ trackEvent('Logs: Pipelines: Entered Edit Mode', {
+ source: 'signoz-ui',
+ });
+ };
const onAddNewPipeline = (): void => {
setActionMode(ActionMode.Editing);
setActionType(ActionType.AddPipeline);
+
+ trackEvent('Logs: Pipelines: Clicked Add New Pipeline', {
+ source: 'signoz-ui',
+ });
};
return (
diff --git a/frontend/src/container/PipelinePage/PipelineListsView/PipelineExpandView.tsx b/frontend/src/container/PipelinePage/PipelineListsView/PipelineExpandView.tsx
index bcd1e37670..22003fc4eb 100644
--- a/frontend/src/container/PipelinePage/PipelineListsView/PipelineExpandView.tsx
+++ b/frontend/src/container/PipelinePage/PipelineListsView/PipelineExpandView.tsx
@@ -11,6 +11,7 @@ import {
PipelineData,
ProcessorData,
} from 'types/api/pipeline/def';
+import { trackEvent } from 'utils/segmentAnalytics';
import { tableComponents } from '../config';
import { ModalFooterTitle } from '../styles';
@@ -189,6 +190,10 @@ function PipelineExpandView({
const addNewProcessorHandler = useCallback((): void => {
setActionType(ActionType.AddProcessor);
+
+ trackEvent('Logs: Pipelines: Clicked Add New Processor', {
+ source: 'signoz-ui',
+ });
}, [setActionType]);
const footer = useCallback((): JSX.Element | undefined => {
diff --git a/frontend/src/container/PipelinePage/PipelineListsView/PipelineListsView.tsx b/frontend/src/container/PipelinePage/PipelineListsView/PipelineListsView.tsx
index e7211c059c..a9bf96d4dc 100644
--- a/frontend/src/container/PipelinePage/PipelineListsView/PipelineListsView.tsx
+++ b/frontend/src/container/PipelinePage/PipelineListsView/PipelineListsView.tsx
@@ -15,6 +15,7 @@ import {
PipelineData,
ProcessorData,
} from 'types/api/pipeline/def';
+import { trackEvent } from 'utils/segmentAnalytics';
import { v4 } from 'uuid';
import { tableComponents } from '../config';
@@ -329,6 +330,10 @@ function PipelineListsView({
const addNewPipelineHandler = useCallback((): void => {
setActionType(ActionType.AddPipeline);
+
+ trackEvent('Logs: Pipelines: Clicked Add New Pipeline', {
+ source: 'signoz-ui',
+ });
}, [setActionType]);
const footer = useCallback((): JSX.Element | undefined => {
@@ -359,8 +364,16 @@ function PipelineListsView({
refetchPipelineLists();
setActionMode(ActionMode.Viewing);
setShowSaveButton(undefined);
- setCurrPipelineData(response.payload?.pipelines || []);
- setPrevPipelineData(response.payload?.pipelines || []);
+
+ const pipelinesInDB = response.payload?.pipelines || [];
+ setCurrPipelineData(pipelinesInDB);
+ setPrevPipelineData(pipelinesInDB);
+
+ trackEvent('Logs: Pipelines: Saved Pipelines', {
+ count: pipelinesInDB.length,
+ enabled: pipelinesInDB.filter((p) => p.enabled).length,
+ source: 'signoz-ui',
+ });
} else {
modifiedPipelineData.forEach((item: PipelineData) => {
const pipelineData = item;
diff --git a/frontend/src/container/PipelinePage/PipelineListsView/TableComponents/PipelineActions/components/PreviewAction.tsx b/frontend/src/container/PipelinePage/PipelineListsView/TableComponents/PipelineActions/components/PreviewAction.tsx
index 353feec486..0236a04737 100644
--- a/frontend/src/container/PipelinePage/PipelineListsView/TableComponents/PipelineActions/components/PreviewAction.tsx
+++ b/frontend/src/container/PipelinePage/PipelineListsView/TableComponents/PipelineActions/components/PreviewAction.tsx
@@ -3,6 +3,7 @@ import { Divider, Modal } from 'antd';
import PipelineProcessingPreview from 'container/PipelinePage/PipelineListsView/Preview/PipelineProcessingPreview';
import { useState } from 'react';
import { PipelineData } from 'types/api/pipeline/def';
+import { trackEvent } from 'utils/segmentAnalytics';
import { iconStyle } from '../../../config';
@@ -18,9 +19,16 @@ function PreviewAction({ pipeline }: PreviewActionProps): JSX.Element | null {
return null;
}
+ const onOpenPreview = (): void => {
+ openModal();
+ trackEvent('Logs: Pipelines: Clicked Preview Pipeline', {
+ source: 'signoz-ui',
+ });
+ };
+
return (
<>
-
+