-
Notifications
You must be signed in to change notification settings - Fork 171
Expand file tree
/
Copy pathpanel.tsx
More file actions
108 lines (97 loc) · 3.59 KB
/
panel.tsx
File metadata and controls
108 lines (97 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import React, { useState } from 'react'
import { Tabs, Text, Anchor } from '@mantine/core'
import { datadogRum } from '@datadog/browser-rum'
import { useEvents } from '../hooks/useEvents'
import { useAutoFlushEvents } from '../hooks/useAutoFlushEvents'
import { useNetworkRules } from '../hooks/useNetworkRules'
import { useSettings } from '../hooks/useSettings'
import { DEFAULT_PANEL_TAB, PanelTabs } from '../../common/panelTabConstants'
import type { Settings } from '../../common/extension.types'
import { useDebugMode } from '../hooks/useDebugMode'
import { SettingsTab } from './tabs/settingsTab'
import { InfosTab } from './tabs/infosTab'
import { EventsTab, DEFAULT_COLUMNS } from './tabs/eventsTab'
import { ReplayTab } from './tabs/replayTab'
import * as classes from './panel.module.css'
export function Panel() {
const [settings] = useSettings()
useAutoFlushEvents(settings.autoFlush)
useNetworkRules(settings)
useDebugMode(settings.debugMode)
const { events, filters, setFilters, clear, facetRegistry } = useEvents(settings)
const [columns, setColumns] = useState(DEFAULT_COLUMNS)
const [activeTab, setActiveTab] = useState<string | null>(DEFAULT_PANEL_TAB)
function updateActiveTab(activeTab: string | null) {
setActiveTab(activeTab)
datadogRum.startView(activeTab!)
}
return (
<Tabs color="violet" value={activeTab} className={classes.tabs} onChange={updateActiveTab}>
<Tabs.List className={classes.topBox} data-dd-privacy="allow">
<div className={classes.tabBox}>
<Tabs.Tab value={PanelTabs.Events}>Events</Tabs.Tab>
<Tabs.Tab
value={PanelTabs.Infos}
rightSection={
isOverridingInitConfiguration(settings) && (
<Text c="orange" fw="bold" title="Overriding init configuration">
⚠
</Text>
)
}
>
<Text>Infos</Text>
</Tabs.Tab>
<Tabs.Tab value={PanelTabs.Replay}>
<Text>Live replay</Text>
</Tabs.Tab>
<Tabs.Tab
value={PanelTabs.Settings}
rightSection={
isInterceptingNetworkRequests(settings) && (
<Text c="orange" fw="bold" title="Intercepting network requests">
⚠
</Text>
)
}
>
Settings
</Tabs.Tab>
</div>
<Anchor
className={classes.link}
href="https://github.com/DataDog/browser-sdk/tree/main/developer-extension#browser-sdk-developer-extension"
target="_blank"
>
🔗 Documentation
</Anchor>
</Tabs.List>
<Tabs.Panel value={PanelTabs.Events} className={classes.tab}>
<EventsTab
events={events}
facetRegistry={facetRegistry}
filters={filters}
onFiltersChange={setFilters}
columns={columns}
onColumnsChange={setColumns}
clear={clear}
/>
</Tabs.Panel>
<Tabs.Panel value={PanelTabs.Infos} className={classes.tab}>
<InfosTab />
</Tabs.Panel>
<Tabs.Panel value={PanelTabs.Replay} className={classes.tab}>
<ReplayTab />
</Tabs.Panel>
<Tabs.Panel value={PanelTabs.Settings} className={classes.tab}>
<SettingsTab />
</Tabs.Panel>
</Tabs>
)
}
function isInterceptingNetworkRequests(settings: Settings) {
return settings.blockIntakeRequests || settings.useRumSlim
}
function isOverridingInitConfiguration(settings: Settings) {
return settings.rumConfigurationOverride || settings.logsConfigurationOverride
}