Skip to content

Commit 9f173d7

Browse files
#RI-2733-update filtered event (#556)
* #RI-2733-update filtered event
1 parent a6134eb commit 9f173d7

File tree

8 files changed

+94
-71
lines changed

8 files changed

+94
-71
lines changed

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
updateHashFieldsAction,
1313
} from 'uiSrc/slices/hash'
1414
import { formatLongName, Nullable } from 'uiSrc/utils'
15-
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent } from 'uiSrc/telemetry'
15+
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent, getMatchType } from 'uiSrc/telemetry'
1616
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
1717
import InlineItemEditor from 'uiSrc/components/inline-item-editor/InlineItemEditor'
1818
import {
@@ -25,6 +25,7 @@ import { connectedInstanceSelector } from 'uiSrc/slices/instances'
2525
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
2626
import HelpTexts from 'uiSrc/constants/help-texts'
2727
import {
28+
GetHashFieldsResponse,
2829
AddFieldsToHashDto,
2930
HashFieldDto,
3031
} from 'apiSrc/modules/browser/dto/hash.dto'
@@ -126,8 +127,24 @@ const HashDetails = (props: Props) => {
126127
const fieldColumn = search.find((column) => column.id === 'field')
127128
if (fieldColumn) {
128129
const { value: match } = fieldColumn
130+
const onSuccess = (data: GetHashFieldsResponse) => {
131+
const matchValue = getMatchType(match)
132+
sendEventTelemetry({
133+
event: getBasedOnViewTypeEvent(
134+
viewType,
135+
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
136+
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
137+
),
138+
eventData: {
139+
databaseId: instanceId,
140+
keyType: KeyTypes.Hash,
141+
match: matchValue,
142+
length: data.total,
143+
}
144+
})
145+
}
129146
setMatch(match)
130-
dispatch(fetchHashFields(key, 0, SCAN_COUNT_DEFAULT, match || matchAllValue))
147+
dispatch(fetchHashFields(key, 0, SCAN_COUNT_DEFAULT, match || matchAllValue, onSuccess))
131148
}
132149
}
133150

redisinsight/ui/src/pages/browser/components/list-details/ListDetails.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ import {
1414
updateListValueStateSelector,
1515
fetchSearchingListElementAction,
1616
} from 'uiSrc/slices/list'
17+
import { connectedInstanceSelector } from 'uiSrc/slices/instances'
18+
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent } from 'uiSrc/telemetry'
19+
import { KeyTypes } from 'uiSrc/constants'
1720
import {
1821
ITableColumn,
1922
IColumnSearchState,
2023
} from 'uiSrc/components/virtual-table/interfaces'
2124
import { formatLongName, validateListIndex } from 'uiSrc/utils'
22-
import { selectedKeyDataSelector } from 'uiSrc/slices/keys'
25+
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/keys'
2326
import { NoResultsFoundText } from 'uiSrc/constants/texts'
2427
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
2528
import InlineItemEditor from 'uiSrc/components/inline-item-editor/InlineItemEditor'
@@ -53,6 +56,8 @@ const ListDetails = (props: Props) => {
5356
)
5457

5558
const { name: key } = useSelector(selectedKeyDataSelector) ?? { name: '' }
59+
const { id: instanceId } = useSelector(connectedInstanceSelector)
60+
const { viewType } = useSelector(keysSelector)
5661

5762
const dispatch = useDispatch()
5863

@@ -91,6 +96,20 @@ const ListDetails = (props: Props) => {
9196

9297
const handleSearch = (search: IColumnSearchState[]) => {
9398
const indexColumn = search.find((column) => column.id === 'index')
99+
const onSuccess = () => {
100+
sendEventTelemetry({
101+
event: getBasedOnViewTypeEvent(
102+
viewType,
103+
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
104+
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
105+
),
106+
eventData: {
107+
databaseId: instanceId,
108+
keyType: KeyTypes.List,
109+
match: 'EXACT_VALUE_NAME',
110+
}
111+
})
112+
}
94113

95114
if (!indexColumn?.value) {
96115
dispatch(fetchListElements(key, 0, SCAN_COUNT_DEFAULT))
@@ -102,7 +121,8 @@ const ListDetails = (props: Props) => {
102121
dispatch(
103122
fetchSearchingListElementAction(
104123
key,
105-
value ? +value : initSearchingIndex
124+
value ? +value : initSearchingIndex,
125+
onSuccess
106126
)
107127
)
108128
}

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88

99
import { formatLongName } from 'uiSrc/utils'
1010
import { KeyTypes } from 'uiSrc/constants'
11-
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent } from 'uiSrc/telemetry'
11+
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent, getMatchType } from 'uiSrc/telemetry'
1212
import { connectedInstanceSelector } from 'uiSrc/slices/instances'
1313
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/keys'
1414
import {
@@ -24,6 +24,7 @@ import { NoResultsFoundText } from 'uiSrc/constants/texts'
2424
import { IColumnSearchState, ITableColumn } from 'uiSrc/components/virtual-table/interfaces'
2525
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
2626
import PopoverDelete from 'uiSrc/pages/browser/components/popover-delete/PopoverDelete'
27+
import { GetSetMembersResponse } from 'apiSrc/modules/browser/dto/set.dto'
2728

2829
import styles from './styles.module.scss'
2930

@@ -82,8 +83,24 @@ const SetDetails = (props: Props) => {
8283
if (!fieldColumn) { return }
8384

8485
const { value: match } = fieldColumn
86+
const onSuccess = (data: GetSetMembersResponse) => {
87+
const matchValue = getMatchType(match)
88+
sendEventTelemetry({
89+
event: getBasedOnViewTypeEvent(
90+
viewType,
91+
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
92+
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
93+
),
94+
eventData: {
95+
databaseId: instanceId,
96+
keyType: KeyTypes.Set,
97+
match: matchValue,
98+
length: data.total,
99+
}
100+
})
101+
}
85102
setMatch(match)
86-
dispatch(fetchSetMembers(key, 0, SCAN_COUNT_DEFAULT, match || matchAllValue))
103+
dispatch(fetchSetMembers(key, 0, SCAN_COUNT_DEFAULT, match || matchAllValue, onSuccess))
87104
}
88105

89106
const columns:ITableColumn[] = [

redisinsight/ui/src/pages/browser/components/zset-details/ZSetDetails.tsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ import HelpTexts from 'uiSrc/constants/help-texts'
2121
import { NoResultsFoundText } from 'uiSrc/constants/texts'
2222
import { selectedKeyDataSelector, keysSelector } from 'uiSrc/slices/keys'
2323
import { formatLongName, validateScoreNumber } from 'uiSrc/utils'
24-
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent } from 'uiSrc/telemetry'
24+
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent, getMatchType } from 'uiSrc/telemetry'
2525
import { connectedInstanceSelector } from 'uiSrc/slices/instances'
2626
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
2727
import InlineItemEditor from 'uiSrc/components/inline-item-editor/InlineItemEditor'
2828
import { IColumnSearchState, ITableColumn } from 'uiSrc/components/virtual-table/interfaces'
29-
import { AddMembersToZSetDto, ZSetMemberDto } from 'apiSrc/modules/browser/dto'
29+
import { AddMembersToZSetDto, SearchZSetMembersResponse, ZSetMemberDto } from 'apiSrc/modules/browser/dto'
3030
import PopoverDelete from '../popover-delete/PopoverDelete'
3131

3232
import styles from './styles.module.scss'
@@ -124,6 +124,22 @@ const ZSetDetails = (props: Props) => {
124124
if (!fieldColumn) { return }
125125

126126
const { value: match } = fieldColumn
127+
const onSuccess = (data: SearchZSetMembersResponse) => {
128+
const matchValue = getMatchType(match)
129+
sendEventTelemetry({
130+
event: getBasedOnViewTypeEvent(
131+
viewType,
132+
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
133+
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
134+
),
135+
eventData: {
136+
databaseId: instanceId,
137+
keyType: KeyTypes.ZSet,
138+
match: matchValue,
139+
length: data.total,
140+
}
141+
})
142+
}
127143
setMatch(match)
128144
if (match === '') {
129145
dispatch(
@@ -132,7 +148,7 @@ const ZSetDetails = (props: Props) => {
132148
return
133149
}
134150
dispatch(
135-
fetchSearchZSetMembers(key, 0, SCAN_COUNT_DEFAULT, match)
151+
fetchSearchZSetMembers(key, 0, SCAN_COUNT_DEFAULT, match, onSuccess)
136152
)
137153
}
138154

redisinsight/ui/src/slices/hash.ts

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { cloneDeep, remove, isNull } from 'lodash'
33
import { apiService } from 'uiSrc/services'
44
import { ApiEndpoints, KeyTypes } from 'uiSrc/constants'
55
import { getApiErrorMessage, getUrl, isStatusSuccessful } from 'uiSrc/utils'
6-
import { getBasedOnViewTypeEvent, getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
6+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
77
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
88
import successMessages from 'uiSrc/components/notifications/success-messages'
99
import {
@@ -188,7 +188,8 @@ export function fetchHashFields(
188188
key: string,
189189
cursor: number,
190190
count: number,
191-
match: string
191+
match: string,
192+
onSuccess?: (data: GetHashFieldsResponse) => void,
192193
) {
193194
return async (dispatch: AppDispatch, stateInit: () => RootState) => {
194195
dispatch(loadHashFields(isNull(match) ? '*' : match))
@@ -209,23 +210,9 @@ export function fetchHashFields(
209210
)
210211

211212
if (isStatusSuccessful(status)) {
212-
const matchValue = getMatchType(match)
213-
sendEventTelemetry({
214-
event: getBasedOnViewTypeEvent(
215-
state.browser.keys?.viewType,
216-
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
217-
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
218-
),
219-
eventData: {
220-
databaseId: state.connections.instances?.connectedInstance?.id,
221-
keyType: KeyTypes.Hash,
222-
match: matchValue,
223-
length: data.total,
224-
}
225-
})
226-
227213
dispatch(loadHashFieldsSuccess(data))
228214
dispatch(updateSelectedKeyRefreshTime(Date.now()))
215+
onSuccess?.(data)
229216
}
230217
} catch (error) {
231218
const errorMessage = getApiErrorMessage(error)

redisinsight/ui/src/slices/list.ts

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,8 @@ export function fetchMoreListElements(
282282
// Asynchronous thunk actions
283283
export function fetchSearchingListElementAction(
284284
key: string,
285-
index: Nullable<number>
285+
index: Nullable<number>,
286+
onSuccess?: () => void,
286287
) {
287288
return async (dispatch: AppDispatch, stateInit: () => RootState) => {
288289
dispatch(loadSearchingListElement(index))
@@ -302,18 +303,7 @@ export function fetchSearchingListElementAction(
302303
if (isStatusSuccessful(status)) {
303304
dispatch(loadSearchingListElementSuccess(data))
304305
dispatch(updateSelectedKeyRefreshTime(Date.now()))
305-
sendEventTelemetry({
306-
event: getBasedOnViewTypeEvent(
307-
state.browser.keys?.viewType,
308-
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
309-
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
310-
),
311-
eventData: {
312-
databaseId: state.connections.instances?.connectedInstance?.id,
313-
keyType: KeyTypes.List,
314-
match: 'EXACT_VALUE_NAME',
315-
}
316-
})
306+
onSuccess?.()
317307
}
318308
} catch (error) {
319309
const errorMessage = getApiErrorMessage(error)

redisinsight/ui/src/slices/set.ts

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { remove } from 'lodash'
44
import { apiService } from 'uiSrc/services'
55
import { ApiEndpoints, KeyTypes } from 'uiSrc/constants'
66
import { getApiErrorMessage, getUrl, isStatusSuccessful } from 'uiSrc/utils'
7-
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent, getMatchType } from 'uiSrc/telemetry'
7+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
88
import {
99
AddMembersToSetDto,
1010
GetSetMembersResponse,
@@ -149,7 +149,8 @@ export function fetchSetMembers(
149149
key: string,
150150
cursor: number,
151151
count: number,
152-
match: string
152+
match: string,
153+
onSuccess?: (data: GetSetMembersResponse) => void,
153154
) {
154155
return async (dispatch: AppDispatch, stateInit: () => RootState) => {
155156
dispatch(loadSetMembers(match))
@@ -170,22 +171,9 @@ export function fetchSetMembers(
170171
)
171172

172173
if (isStatusSuccessful(status)) {
173-
const matchValue = getMatchType(match)
174-
sendEventTelemetry({
175-
event: getBasedOnViewTypeEvent(
176-
state.browser.keys?.viewType,
177-
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
178-
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
179-
),
180-
eventData: {
181-
databaseId: state.connections.instances?.connectedInstance?.id,
182-
keyType: KeyTypes.Set,
183-
match: matchValue,
184-
length: data.total,
185-
}
186-
})
187174
dispatch(loadSetMembersSuccess(data))
188175
dispatch(updateSelectedKeyRefreshTime(Date.now()))
176+
onSuccess?.(data)
189177
}
190178
} catch (error) {
191179
const errorMessage = getApiErrorMessage(error)

redisinsight/ui/src/slices/zset.ts

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createSlice } from '@reduxjs/toolkit'
44
import { apiService } from 'uiSrc/services'
55
import { ApiEndpoints, SortOrder, KeyTypes } from 'uiSrc/constants'
66
import { getApiErrorMessage, getUrl, isStatusSuccessful } from 'uiSrc/utils'
7-
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent, getMatchType } from 'uiSrc/telemetry'
7+
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
88
import { StateZset } from 'uiSrc/slices/interfaces/zset'
99
import successMessages from 'uiSrc/components/notifications/success-messages'
1010
import {
@@ -427,7 +427,8 @@ export function fetchSearchZSetMembers(
427427
key: string,
428428
cursor: number,
429429
count: number,
430-
match: string
430+
match: string,
431+
onSuccess?: (data: SearchZSetMembersResponse) => void,
431432
) {
432433
return async (dispatch: AppDispatch, stateInit: () => RootState) => {
433434
dispatch(searchZSetMembers(isNull(match) ? '*' : match))
@@ -447,22 +448,9 @@ export function fetchSearchZSetMembers(
447448
)
448449

449450
if (isStatusSuccessful(status)) {
450-
const matchValue = getMatchType(match)
451-
sendEventTelemetry({
452-
event: getBasedOnViewTypeEvent(
453-
state.browser.keys?.viewType,
454-
TelemetryEvent.BROWSER_KEY_VALUE_FILTERED,
455-
TelemetryEvent.TREE_VIEW_KEY_VALUE_FILTERED
456-
),
457-
eventData: {
458-
databaseId: state.connections.instances?.connectedInstance?.id,
459-
keyType: KeyTypes.ZSet,
460-
match: matchValue,
461-
length: data.total,
462-
}
463-
})
464451
dispatch(searchZSetMembersSuccess(data))
465452
dispatch(updateSelectedKeyRefreshTime(Date.now()))
453+
onSuccess?.(data)
466454
}
467455
} catch (error) {
468456
const errorMessage = getApiErrorMessage(error)

0 commit comments

Comments
 (0)