Skip to content

Commit 354933c

Browse files
Merge pull request #96 from RedisInsight/feature/RI-2101_Cover_additional_events
#RI-2101 [Telemetry] Cover additional events in Workbench
2 parents fd4f50d + 67d41ad commit 354933c

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
lines changed

redisinsight/ui/src/pages/workbench/components/enablament-area/EnablementArea/EnablementArea.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ export interface Props {
2222
items: Record<string, IEnablementAreaItem>;
2323
loading: boolean;
2424
openScript: (script: string, path: string) => void;
25-
openInternalPage: (page: IInternalPage) => void;
25+
onOpenInternalPage: (page: IInternalPage) => void;
2626
}
2727

28-
const EnablementArea = ({ items, openScript, loading }: Props) => {
28+
const EnablementArea = ({ items, openScript, loading, onOpenInternalPage }: Props) => {
2929
const { search } = useLocation()
3030
const history = useHistory()
3131
const dispatch = useDispatch()
@@ -51,6 +51,7 @@ const EnablementArea = ({ items, openScript, loading }: Props) => {
5151
history.push({
5252
search: `?guide=${page.path}`
5353
})
54+
onOpenInternalPage(page)
5455
}
5556

5657
const handleCloseInternalPage = () => {

redisinsight/ui/src/pages/workbench/components/enablament-area/EnablementArea/components/InternalPage/InternalPage.tsx

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import JsxParser from 'react-jsx-parser'
1010
import cx from 'classnames'
1111
import { debounce } from 'lodash'
12+
import { useParams } from 'react-router-dom'
1213

1314
import {
1415
LazyCodeButton,
@@ -18,6 +19,7 @@ import {
1819
Pagination
1920
} from 'uiSrc/pages/workbench/components/enablament-area/EnablementArea/components'
2021
import { IEnablementAreaItem } from 'uiSrc/slices/interfaces'
22+
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
2123

2224
import styles from './styles.module.scss'
2325
import './styles.scss'
@@ -32,18 +34,52 @@ export interface Props {
3234
scrollTop?: number;
3335
onScroll?: (top: number) => void;
3436
id: string;
37+
path: string;
3538
pagination?: IEnablementAreaItem[]
3639
}
3740
const InternalPage = (props: Props) => {
38-
const { onClose, title, backTitle, isLoading, error, content, onScroll, scrollTop, pagination, id } = props
41+
const {
42+
onClose,
43+
title,
44+
backTitle,
45+
isLoading,
46+
error,
47+
content,
48+
onScroll,
49+
scrollTop,
50+
pagination,
51+
id,
52+
path,
53+
} = props
3954
const components: any = { LazyCodeButton, InternalLink, Image }
4055
const containerRef = useRef<HTMLDivElement>(null)
56+
const { instanceId = '' } = useParams<{ instanceId: string }>()
4157
const handleScroll = debounce(() => {
4258
if (containerRef.current && onScroll) {
4359
onScroll(containerRef.current.scrollTop)
4460
}
4561
}, 500)
4662

63+
const sendEventClickExternalLinkTelemetry = (link: string = '') => {
64+
sendEventTelemetry({
65+
event: TelemetryEvent.WORKBENCH_ENABLEMENT_AREA_LINK_CLICKED,
66+
eventData: {
67+
path,
68+
link,
69+
databaseId: instanceId,
70+
}
71+
})
72+
}
73+
74+
const handleClick = (event: React.MouseEvent<HTMLElement>) => {
75+
const target = event.target as HTMLElement
76+
77+
// send telemetry event after click on an external link
78+
if (target?.getAttribute('href') && target?.getAttribute('target')) {
79+
sendEventClickExternalLinkTelemetry(target?.innerText)
80+
}
81+
}
82+
4783
useEffect(() => {
4884
if (!isLoading && !error && scrollTop && containerRef.current) {
4985
setTimeout(() => {
@@ -57,7 +93,7 @@ const InternalPage = (props: Props) => {
5793
components={components}
5894
autoCloseVoidElements
5995
jsx={content}
60-
onError={(e) => console.log(e)}
96+
onError={(e) => console.error(e)}
6197
/>
6298
), [content])
6399

@@ -82,7 +118,13 @@ const InternalPage = (props: Props) => {
82118
<EuiText className={styles.pageTitle} color="default">{title?.toUpperCase()}</EuiText>
83119
</div>
84120
</EuiFlyoutHeader>
85-
<div ref={containerRef} className={cx(styles.content, 'enablement-area__page')} onScroll={handleScroll}>
121+
<div
122+
ref={containerRef}
123+
className={cx(styles.content, 'enablement-area__page')}
124+
onScroll={handleScroll}
125+
onClick={handleClick}
126+
role="none"
127+
>
86128
{ isLoading && <EuiLoadingContent data-testid="enablement-area__page-loader" lines={3} /> }
87129
{ !isLoading && error && <EmptyPrompt /> }
88130
{ !isLoading && !error && contentComponent }

redisinsight/ui/src/pages/workbench/components/enablament-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ const LazyInternalPage = ({ onClose, title, path }: Props) => {
7575
return (
7676
<InternalPage
7777
id={pageData.name}
78+
path={path}
7879
onClose={onClose}
7980
title={startCase(title || pageData.name)}
8081
backTitle={startCase(pageData?.parent)}

redisinsight/ui/src/pages/workbench/components/enablament-area/EnablementAreaCollapse/EnablementAreaCollapse.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const EnablementAreaCollapse = ({ isMinimized, setIsMinimized }: Props) => (
2525
size="m"
2626
onClick={() => setIsMinimized(false)}
2727
data-testid="expand-enablement-area"
28+
aria-label="expand-enablement-area"
2829
/>
2930
</EuiToolTip>
3031
) : (
@@ -41,6 +42,7 @@ const EnablementAreaCollapse = ({ isMinimized, setIsMinimized }: Props) => (
4142
size="m"
4243
onClick={() => setIsMinimized(true)}
4344
data-testid="collapse-enablement-area"
45+
aria-label="collapse-enablement-area"
4446
/>
4547
</EuiToolTip>
4648
)}

redisinsight/ui/src/pages/workbench/components/enablament-area/EnablementAreaWrapper.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const EnablementAreaWrapper = React.memo(({ isMinimized, setIsMinimized, scriptE
5252
}, 0)
5353
}
5454

55-
const openInternalPage = ({ path }: IInternalPage) => {
55+
const onOpenInternalPage = ({ path }: IInternalPage) => {
5656
sendEventTelemetry({
5757
event: TelemetryEvent.WORKBENCH_ENABLEMENT_AREA_GUIDE_OPENED,
5858
eventData: {
@@ -83,7 +83,7 @@ const EnablementAreaWrapper = React.memo(({ isMinimized, setIsMinimized, scriptE
8383
items={items}
8484
loading={loading}
8585
openScript={openScript}
86-
openInternalPage={openInternalPage}
86+
onOpenInternalPage={onOpenInternalPage}
8787
/>
8888
</EuiFlexItem>
8989
</EuiFlexGroup>

0 commit comments

Comments
 (0)