Skip to content

Commit b9be009

Browse files
#RI-916-add telemetry events (#676)
1 parent 37ecb47 commit b9be009

File tree

18 files changed

+228
-116
lines changed

18 files changed

+228
-116
lines changed

redisinsight/ui/src/components/range-filter/RangeFilter.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ export interface Props {
1212
min: number
1313
start: number
1414
end: number
15-
handleChangeStart: (value: number) => void
16-
handleChangeEnd: (value: number) => void
15+
handleChangeStart: (value: number, shouldSentEventTelemetry: boolean) => void
16+
handleChangeEnd: (value: number, shouldSentEventTelemetry: boolean) => void
1717
handleResetFilter: () => void
1818
}
1919

@@ -51,14 +51,14 @@ const RangeFilter = (props: Props) => {
5151

5252
const onMouseUpStart = useCallback(
5353
({ target: { value } }) => {
54-
handleChangeStart(value)
54+
handleChangeStart(value, true)
5555
},
5656
[]
5757
)
5858

5959
const onMouseUpEnd = useCallback(
6060
({ target: { value } }) => {
61-
handleChangeEnd(value)
61+
handleChangeEnd(value, true)
6262
},
6363
[]
6464
)
@@ -103,10 +103,10 @@ const RangeFilter = (props: Props) => {
103103

104104
useEffect(() => {
105105
if (max && prevValue && prevValue.max !== max && end === prevValue.max) {
106-
handleChangeEnd(max)
106+
handleChangeEnd(max, false)
107107
}
108108
if (min && prevValue && prevValue.min !== min && start === prevValue.min) {
109-
handleChangeStart(min)
109+
handleChangeStart(min, false)
110110
}
111111
}, [prevValue])
112112

redisinsight/ui/src/pages/browser/components/hash-details/HashDetails.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,23 @@ const HashDetails = (props: Props) => {
8181
setDeleting(`${field + suffix}`)
8282
}, [])
8383

84+
const onSuccessRemoved = () => {
85+
sendEventTelemetry({
86+
event: getBasedOnViewTypeEvent(
87+
viewType,
88+
TelemetryEvent.BROWSER_KEY_VALUE_REMOVED,
89+
TelemetryEvent.TREE_VIEW_KEY_VALUE_REMOVED
90+
),
91+
eventData: {
92+
databaseId: instanceId,
93+
keyType: KeyTypes.Hash,
94+
numberOfRemoved: 1,
95+
}
96+
})
97+
}
98+
8499
const handleDeleteField = (field = '') => {
85-
dispatch(deleteHashFields(key, [field]))
100+
dispatch(deleteHashFields(key, [field], onSuccessRemoved))
86101
closePopover()
87102
}
88103

redisinsight/ui/src/pages/browser/components/key-details-add-items/add-hash-fields/AddHashFields.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ import {
1010
EuiFieldText,
1111
EuiPanel,
1212
} from '@elastic/eui'
13-
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
13+
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/browser/keys'
14+
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
1415
import {
1516
updateHashValueStateSelector,
1617
resetUpdateValue,
1718
addHashFieldsAction,
1819
} from 'uiSrc/slices/browser/hash'
1920
import { AddFieldsToHashDto } from 'apiSrc/modules/browser/dto/hash.dto'
21+
import { KeyTypes } from 'uiSrc/constants'
22+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
2023
import AddItemsActions from 'uiSrc/pages/browser/components/add-items-actions/AddItemsActions'
2124

2225
import styles from '../styles.module.scss'
@@ -43,6 +46,8 @@ const AddHashFields = (props: Props) => {
4346
const [fields, setFields] = useState<IHashFieldState[]>([{ ...INITIAL_HASH_FIELD_STATE }])
4447
const { loading } = useSelector(updateHashValueStateSelector)
4548
const { name: selectedKey = '' } = useSelector(selectedKeyDataSelector) ?? { name: undefined }
49+
const { viewType } = useSelector(keysSelector)
50+
const { id: instanceId } = useSelector(connectedInstanceSelector)
4651
const lastAddedFieldName = useRef<HTMLInputElement>(null)
4752

4853
useEffect(() =>
@@ -84,6 +89,22 @@ const AddHashFields = (props: Props) => {
8489
setFields(newState)
8590
}
8691

92+
const onSuccessAdded = () => {
93+
onCancel()
94+
sendEventTelemetry({
95+
event: getBasedOnViewTypeEvent(
96+
viewType,
97+
TelemetryEvent.BROWSER_KEY_VALUE_ADDED,
98+
TelemetryEvent.TREE_VIEW_KEY_VALUE_ADDED
99+
),
100+
eventData: {
101+
databaseId: instanceId,
102+
keyType: KeyTypes.Hash,
103+
numberOfAdded: fields.length,
104+
}
105+
})
106+
}
107+
87108
const handleFieldChange = (formField: string, id: number, value: any) => {
88109
const newState = fields.map((item) => {
89110
if (item.id === id) {
@@ -105,7 +126,7 @@ const AddHashFields = (props: Props) => {
105126
value: item.fieldValue,
106127
})),
107128
}
108-
dispatch(addHashFieldsAction(data, onCancel))
129+
dispatch(addHashFieldsAction(data, onSuccessAdded))
109130
}
110131

111132
const isClearDisabled = (item: IHashFieldState): boolean =>

redisinsight/ui/src/pages/browser/components/key-details-add-items/add-list-elements/AddListElements.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ import {
1313
EuiSuperSelectOption,
1414
} from '@elastic/eui'
1515

16-
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
16+
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/browser/keys'
17+
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
1718
import { insertListElementsAction } from 'uiSrc/slices/browser/list'
19+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
20+
import { KeyTypes } from 'uiSrc/constants'
1821
import { PushElementToListDto } from 'apiSrc/modules/browser/dto'
1922

2023
import { AddListFormConfig as config } from '../../add-key/constants/fields-config'
@@ -50,6 +53,8 @@ const AddListElements = (props: Props) => {
5053
const [element, setElement] = useState<string>('')
5154
const [destination, setDestination] = useState<ListElementDestination>(TAIL_DESTINATION)
5255
const { name: selectedKey = '' } = useSelector(selectedKeyDataSelector) ?? { name: undefined }
56+
const { viewType } = useSelector(keysSelector)
57+
const { id: instanceId } = useSelector(connectedInstanceSelector)
5358

5459
const elementInput = useRef<HTMLInputElement>(null)
5560

@@ -60,13 +65,29 @@ const AddListElements = (props: Props) => {
6065
elementInput.current?.focus()
6166
}, [])
6267

68+
const onSuccessAdded = () => {
69+
onCancel()
70+
sendEventTelemetry({
71+
event: getBasedOnViewTypeEvent(
72+
viewType,
73+
TelemetryEvent.BROWSER_KEY_VALUE_ADDED,
74+
TelemetryEvent.TREE_VIEW_KEY_VALUE_ADDED
75+
),
76+
eventData: {
77+
databaseId: instanceId,
78+
keyType: KeyTypes.List,
79+
numberOfAdded: 1,
80+
}
81+
})
82+
}
83+
6384
const submitData = (): void => {
6485
const data: PushElementToListDto = {
6586
keyName: selectedKey,
6687
element,
6788
destination,
6889
}
69-
dispatch(insertListElementsAction(data, props.onCancel))
90+
dispatch(insertListElementsAction(data, onSuccessAdded))
7091
}
7192

7293
return (

redisinsight/ui/src/pages/browser/components/key-details-add-items/add-set-members/AddSetMembers.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ import {
1111
EuiPanel,
1212
} from '@elastic/eui'
1313

14-
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
14+
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/browser/keys'
1515
import { addSetMembersAction, setSelector } from 'uiSrc/slices/browser/set'
16+
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
17+
import { KeyTypes } from 'uiSrc/constants'
18+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
1619

1720
import AddItemsActions from '../../add-items-actions/AddItemsActions'
1821
import { AddZsetFormConfig as config } from '../../add-key/constants/fields-config'
@@ -39,12 +42,30 @@ const AddSetMembers = (props: Props) => {
3942
const [members, setMembers] = useState<ISetMemberState[]>([{ ...INITIAL_SET_MEMBER_STATE }])
4043
const { loading } = useSelector(setSelector)
4144
const { name: selectedKey = '' } = useSelector(selectedKeyDataSelector) ?? { name: undefined }
45+
const { viewType } = useSelector(keysSelector)
46+
const { id: instanceId } = useSelector(connectedInstanceSelector)
4247
const lastAddedMemberName = useRef<HTMLInputElement>(null)
4348

4449
useEffect(() => {
4550
lastAddedMemberName.current?.focus()
4651
}, [members.length])
4752

53+
const onSuccessAdded = () => {
54+
onCancel()
55+
sendEventTelemetry({
56+
event: getBasedOnViewTypeEvent(
57+
viewType,
58+
TelemetryEvent.BROWSER_KEY_VALUE_ADDED,
59+
TelemetryEvent.TREE_VIEW_KEY_VALUE_ADDED
60+
),
61+
eventData: {
62+
databaseId: instanceId,
63+
keyType: KeyTypes.Set,
64+
numberOfAdded: members.length,
65+
}
66+
})
67+
}
68+
4869
const addMember = () => {
4970
const lastField = members[members.length - 1]
5071
const newState = [
@@ -90,7 +111,7 @@ const AddSetMembers = (props: Props) => {
90111
keyName: selectedKey,
91112
members: members.map((item) => item.name),
92113
}
93-
dispatch(addSetMembersAction(data, onCancel))
114+
dispatch(addSetMembersAction(data, onSuccessAdded))
94115
}
95116

96117
const isClearDisabled = (item: ISetMemberState): boolean => members.length === 1 && !item.name.length

redisinsight/ui/src/pages/browser/components/key-details-add-items/add-stream-entity/AddStreamEntries.tsx

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { keyBy, mapValues, toNumber } from 'lodash'
44
import React, { useEffect, useState } from 'react'
55
import { useDispatch, useSelector } from 'react-redux'
66
import { entryIdRegex } from 'uiSrc/utils'
7-
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
7+
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/browser/keys'
88
import { addNewEntriesAction, streamDataSelector } from 'uiSrc/slices/browser/stream'
9-
9+
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
1010
import { AddStreamFormConfig as config } from 'uiSrc/pages/browser/components/add-key/constants/fields-config'
1111
import { INITIAL_STREAM_FIELD_STATE } from 'uiSrc/pages/browser/components/add-key/AddKeyStream/AddKeyStream'
1212
import { StreamEntryFields } from 'uiSrc/pages/browser/components/key-details-add-items'
13+
import { KeyTypes } from 'uiSrc/constants'
14+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
1315
import { AddStreamEntriesDto } from 'apiSrc/modules/browser/dto/stream.dto'
1416

1517
import styles from './styles.module.scss'
@@ -22,6 +24,8 @@ const AddStreamEntries = (props: Props) => {
2224
const { onCancel } = props
2325
const { lastEntry } = useSelector(streamDataSelector)
2426
const { name: keyName = '' } = useSelector(selectedKeyDataSelector) ?? { name: undefined }
27+
const { viewType } = useSelector(keysSelector)
28+
const { id: instanceId } = useSelector(connectedInstanceSelector)
2529

2630
const [entryID, setEntryID] = useState<string>('*')
2731
const [entryIdError, setEntryIdError] = useState('')
@@ -70,6 +74,22 @@ const AddStreamEntries = (props: Props) => {
7074
setEntryIdError('Must be greater than the last ID')
7175
}
7276

77+
const onSuccessAdded = () => {
78+
onCancel()
79+
sendEventTelemetry({
80+
event: getBasedOnViewTypeEvent(
81+
viewType,
82+
TelemetryEvent.BROWSER_KEY_VALUE_ADDED,
83+
TelemetryEvent.TREE_VIEW_KEY_VALUE_ADDED
84+
),
85+
eventData: {
86+
databaseId: instanceId,
87+
keyType: KeyTypes.Stream,
88+
numberOfAdded: fields.length,
89+
}
90+
})
91+
}
92+
7393
const submitData = (): void => {
7494
if (isFormValid) {
7595
const data: AddStreamEntriesDto = {
@@ -79,7 +99,7 @@ const AddStreamEntries = (props: Props) => {
7999
fields: mapValues(keyBy(fields, 'fieldName'), 'fieldValue')
80100
}]
81101
}
82-
dispatch(addNewEntriesAction(data, onCancel))
102+
dispatch(addNewEntriesAction(data, onSuccessAdded))
83103
}
84104
}
85105

redisinsight/ui/src/pages/browser/components/key-details-remove-items/remove-list-elements/RemoveListElements.tsx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,30 @@ const RemoveListElements = (props: Props) => {
119119
setIsPopoverOpen(false)
120120
}
121121

122+
const onSuccessRemoved = () => {
123+
onCancel()
124+
sendEventTelemetry({
125+
event: getBasedOnViewTypeEvent(
126+
viewType,
127+
TelemetryEvent.BROWSER_KEY_VALUE_REMOVED,
128+
TelemetryEvent.TREE_VIEW_KEY_VALUE_REMOVED
129+
),
130+
eventData: {
131+
databaseId: instanceId,
132+
keyType: KeyTypes.List,
133+
numberOfRemoved: toNumber(count),
134+
}
135+
})
136+
}
137+
122138
const submitData = (): void => {
123139
const data: DeleteListElementsDto = {
124140
keyName: selectedKey,
125141
count: toNumber(count),
126142
destination,
127143
}
128144
closePopover()
129-
dispatch(deleteListElementsAction(data, props.onCancel))
145+
dispatch(deleteListElementsAction(data, onSuccessRemoved))
130146
}
131147

132148
const RemoveButton = () => (

redisinsight/ui/src/pages/browser/components/set-details/SetDetails.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,23 @@ const SetDetails = (props: Props) => {
6060
setDeleting(`${member + suffix}`)
6161
}
6262

63+
const onSuccessRemoved = () => {
64+
sendEventTelemetry({
65+
event: getBasedOnViewTypeEvent(
66+
viewType,
67+
TelemetryEvent.BROWSER_KEY_VALUE_REMOVED,
68+
TelemetryEvent.TREE_VIEW_KEY_VALUE_REMOVED
69+
),
70+
eventData: {
71+
databaseId: instanceId,
72+
keyType: KeyTypes.Set,
73+
numberOfRemoved: 1,
74+
}
75+
})
76+
}
77+
6378
const handleDeleteMember = (member = '') => {
64-
dispatch(deleteSetMembers(key, [member]))
79+
dispatch(deleteSetMembers(key, [member], onSuccessRemoved))
6580
closePopover()
6681
}
6782

0 commit comments

Comments
 (0)