Skip to content

Commit 46d18d9

Browse files
added see related events logexplorer filters (#2320)
* fix[frontend](user_auditor/logexplorer): added see related events logexplorer filters * fix[backend](integrations): added custom data types support on custom integrations
1 parent 2094202 commit 46d18d9

4 files changed

Lines changed: 51 additions & 8 deletions

File tree

backend/modules/integrations/usecase/module.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ func (u *moduleUsecase) Create(ctx context.Context, req dto.CreateModuleRequest)
167167
}
168168

169169
if _,err:= u.opensearch.Create(ctx,os_dto.CreateIndexPatternRequest{
170+
Pattern: req.DataType,
170171
PatternModule: &req.ModuleName,
171172
});err!=nil{
172173
//opensearch insertion fails, rolling back database

backend/modules/opensearch/usecase/index_pattern.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ func (u *indexPatternUsecase) Create(ctx context.Context, req dto.CreateIndexPat
4949
return nil, errInvalidPattern
5050
}
5151

52+
if !strings.HasPrefix(req.Pattern,constants.CUSTOM_INDEX_PREFIX) {
53+
normalized := strings.ReplaceAll(strings.Trim(strings.ToLower(req.Pattern), ""), " ", "-")
54+
req.Pattern = fmt.Sprintf("%s-%s-*", constants.CUSTOM_INDEX_PREFIX, normalized)
55+
}
56+
57+
5258
p := &domain.UtmIndexPattern{
5359
Pattern: req.Pattern,
5460
PatternModule: req.PatternModule,

frontend/src/features/log-explorer/pages/LogExplorerPage.tsx

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,53 @@ import { presetRange } from '@/shared/components/ui/time-range-picker'
44
import { LogExplorerTabsBar } from '../components/LogExplorerTabsBar'
55
import { LogExplorerView } from '../components/LogExplorerView'
66
import { useLogExplorerTabs } from '../hooks/useLogExplorerTabs'
7+
import type { FilterType } from '../types/log-explorer.types'
8+
9+
const TS_FIELD = '@timestamp'
710

811
export function LogExplorerPage() {
912
const location = useLocation()
1013
const navigate = useNavigate()
1114
const tabs = useLogExplorerTabs()
1215
const seededRef = useRef(false)
1316

14-
// Integration "View events" deep-link (?dataType=<value>) → open in a NEW tab.
17+
// Deep-link seed: any query param becomes a filter (?field=value; comma-list
18+
// ?field=a,b,c → IS_ONE_OF_TERMS). Reserved: ?@timestamp=<preset-id> sets the
19+
// range (e.g. 24h, 7d, 30d). No params → normal open, existing tabs shown.
1520
useEffect(() => {
1621
if (seededRef.current) return
17-
const dataType = new URLSearchParams(location.search).get('dataType')
18-
if (!dataType) return
22+
const params = new URLSearchParams(location.search)
23+
24+
let range = presetRange('30d')
25+
const filters: FilterType[] = []
26+
for (const [field, raw] of params.entries()) {
27+
if (field === TS_FIELD) {
28+
range = presetRange(raw)
29+
continue
30+
}
31+
const values = raw.split(',').map((s) => s.trim()).filter(Boolean)
32+
if (values.length === 0) continue
33+
filters.push(
34+
values.length === 1
35+
? { field, operator: 'IS', value: values[0] }
36+
: { field, operator: 'IS_ONE_OF_TERMS', value: values }
37+
)
38+
}
39+
40+
if (filters.length === 0) return
41+
1942
seededRef.current = true
43+
const first = filters[0]
44+
const name =
45+
filters.length === 1
46+
? `${first.field}: ${Array.isArray(first.value) ? first.value.join(',') : String(first.value)}`
47+
: 'Filtered'
2048
tabs.addTab({
21-
name: `dataType: ${dataType}`,
49+
name,
2250
patternStr: 'v11-log-*',
23-
filters: [{ field: 'dataType', operator: 'IS', value: dataType }],
24-
range: presetRange('30d'),
25-
columns: ['dataType'],
51+
filters,
52+
range,
53+
columns: filters.map((f) => f.field),
2654
})
2755
navigate(location.pathname, { replace: true })
2856
// eslint-disable-next-line react-hooks/exhaustive-deps

frontend/src/features/user-auditor/pages/UserAuditorPage.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,15 @@ function UserDrawer({ user, onClose, t }: { user: ADUser; onClose: () => void; t
612612

613613
<div className="mt-4 flex flex-wrap items-center gap-2">
614614
<Button size="sm" variant="outline" asChild>
615-
<Link to="/log-explorer">
615+
<Link
616+
to={`/log-explorer?${new URLSearchParams({
617+
dataType: 'wineventlog',
618+
tenantId: user.tenantId,
619+
eventCode: '4720,4726,4624',
620+
eventDataTargetSid: user.sid,
621+
'@timestamp': '30d',
622+
}).toString()}`}
623+
>
616624
<ExternalLink size={14} className="mr-1.5" />
617625
{t('userAuditor.drawer.viewInLogs')}
618626
</Link>

0 commit comments

Comments
 (0)