Skip to content

Commit 6a1b840

Browse files
committed
wip fix ti filters
1 parent 8ff60b2 commit 6a1b840

8 files changed

Lines changed: 56 additions & 36 deletions

File tree

x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import React, { memo, useMemo } from 'react';
99
import type { SecuritySolutionPluginContext } from '@kbn/threat-intelligence-plugin/public';
1010
import { THREAT_INTELLIGENCE_BASE_PATH } from '@kbn/threat-intelligence-plugin/public';
11-
import type { SourcererDataView } from '@kbn/threat-intelligence-plugin/public/types';
1211
import type { Store } from 'redux';
1312
import { useSelector } from 'react-redux';
1413
import { useUserPrivileges } from '../common/components/user_privileges';
@@ -45,11 +44,11 @@ const ThreatIntelligence = memo(() => {
4544
const securitySolutionContext: SecuritySolutionPluginContext = useMemo(
4645
() => ({
4746
securitySolutionStore,
47+
selectedDataView: sourcererDataView,
4848

4949
getFiltersGlobalComponent: () => FiltersGlobal,
5050
getPageWrapper: () => SecuritySolutionPageWrapper,
5151
licenseService,
52-
sourcererDataView: sourcererDataView as unknown as SourcererDataView,
5352
getUseInvestigateInTimeline: useInvestigateInTimeline,
5453

5554
blockList: {
@@ -62,10 +61,6 @@ const ThreatIntelligence = memo(() => {
6261
getFormComponent: () => BlockListForm,
6362
} as unknown as SecuritySolutionPluginContext['blockList'],
6463

65-
useQuery: () => useSelector(inputsSelectors.globalQuerySelector()),
66-
useFilters: () => useSelector(inputsSelectors.globalFiltersQuerySelector()),
67-
useGlobalTime,
68-
6964
registerQuery: (query) =>
7065
securitySolutionStore.dispatch(
7166
setQuery({
@@ -85,6 +80,10 @@ const ThreatIntelligence = memo(() => {
8580
),
8681

8782
SiemSearchBar,
83+
84+
useQuery: () => useSelector(inputsSelectors.globalQuerySelector()),
85+
useFilters: () => useSelector(inputsSelectors.globalFiltersQuerySelector()),
86+
useGlobalTime,
8887
}),
8988
[canWriteBlocklist, http, securitySolutionStore, sourcererDataView]
9089
);

x-pack/plugins/threat_intelligence/public/containers/field_types_provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const FieldTypesProvider: FC = ({ children }) => {
2121
// field name to field type map to allow the cell_renderer to format dates
2222
const fieldTypes: FieldTypesContextValue = useMemo(
2323
() =>
24-
indexPattern.fields.reduce((acc, field) => {
24+
Object.values(indexPattern.fields).reduce((acc, field) => {
2525
acc[field.name] = field.type;
2626
return acc;
2727
}, {} as FieldTypesContextValue),

x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ export const getSecuritySolutionContextMock = (): SecuritySolutionPluginContext
2626
return true;
2727
},
2828
},
29-
sourcererDataView: {
29+
selectedDataView: {
3030
browserFields: {},
31-
selectedPatterns: [],
3231
indexPattern: { fields: [], title: '' },
3332
loading: false,
33+
indicesExist: true,
34+
sourcererDataView: {},
3435
},
3536
securitySolutionStore: {
3637
// @ts-ignore

x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const COMBOBOX_SINGLE_SELECTION = { asPlainText: true };
2727
export const IndicatorsFieldSelector = memo<IndicatorsFieldSelectorProps>(
2828
({ indexPattern, valueChange, defaultStackByValue = DEFAULT_STACK_BY_VALUE }) => {
2929
const styles = useStyles();
30-
const defaultStackByValueInfo = indexPattern.fields.find(
30+
const defaultStackByValueInfo = Object.values(indexPattern.fields).find(
3131
(f: DataViewField) => f.name === defaultStackByValue
3232
);
3333
const [selectedField, setSelectedField] = useState<Array<EuiComboBoxOptionOption<string>>>([
@@ -39,7 +39,7 @@ export const IndicatorsFieldSelector = memo<IndicatorsFieldSelectorProps>(
3939
const fields: Array<EuiComboBoxOptionOption<string>> = useMemo(
4040
() =>
4141
indexPattern
42-
? indexPattern.fields.map((f: DataViewField) => ({
42+
? Object.values(indexPattern.fields).map((f: DataViewField) => ({
4343
label: f.name,
4444
value: f.type,
4545
}))

x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,40 +25,40 @@ const indicatorNameField = {
2525
} as const;
2626

2727
export const useSourcererDataView = () => {
28-
const { sourcererDataView } = useSecurityContext();
28+
const { selectedDataView } = useSecurityContext();
2929

3030
const updatedPattern = useMemo(() => {
31-
const fields = [...sourcererDataView.indexPattern.fields, indicatorNameField];
31+
const fields = selectedDataView.sourcererDataView.fields;
3232

3333
return {
34-
...sourcererDataView.indexPattern,
34+
...selectedDataView.indexPattern,
3535
fields,
3636
} as SecuritySolutionDataViewBase;
37-
}, [sourcererDataView.indexPattern]);
37+
}, [selectedDataView.indexPattern, selectedDataView.sourcererDataView.fields]);
3838

3939
const indexPatterns = useMemo(() => [updatedPattern], [updatedPattern]);
4040

4141
const browserFields = useMemo(() => {
42-
const { threat = { fields: {} } } = sourcererDataView.browserFields;
42+
const { threat = { fields: {} } } = selectedDataView.browserFields;
4343

4444
return {
45-
...sourcererDataView.browserFields,
45+
...selectedDataView.browserFields,
4646
threat: {
4747
fields: {
4848
...threat.fields,
4949
[indicatorNameField.name]: indicatorNameField,
5050
},
5151
},
5252
};
53-
}, [sourcererDataView.browserFields]);
53+
}, [selectedDataView.browserFields]);
5454

5555
return useMemo(
5656
() => ({
57-
sourcererDataView,
57+
sourcererDataView: selectedDataView,
5858
indexPatterns,
5959
indexPattern: updatedPattern,
6060
browserFields,
6161
}),
62-
[browserFields, indexPatterns, sourcererDataView, updatedPattern]
62+
[browserFields, indexPatterns, selectedDataView, updatedPattern]
6363
);
6464
};

x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const IndicatorsPageContent: VFC = () => {
8484
<QueryBar
8585
queries={[indicatorChartQuery, indicatorListQuery]}
8686
indexPattern={indexPattern}
87-
sourcererDataView={sourcererDataView}
87+
sourcererDataView={sourcererDataView.sourcererDataView}
8888
/>
8989
</FiltersGlobal>
9090

x-pack/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import React, { useEffect, VFC } from 'react';
99
import { useSecurityContext } from '../../../hooks/use_security_context';
10-
import { SecuritySolutionDataViewBase, SourcererDataView } from '../../../types';
10+
import { SecuritySolutionDataViewBase, SelectedDataView } from '../../../types';
1111

1212
interface QueryBarProps {
1313
indexPattern: SecuritySolutionDataViewBase;
@@ -16,7 +16,7 @@ interface QueryBarProps {
1616
refetch: VoidFunction;
1717
loading: boolean;
1818
}>;
19-
sourcererDataView: SourcererDataView | undefined;
19+
sourcererDataView: SelectedDataView | undefined;
2020
}
2121

2222
export const QueryBar: VFC<QueryBarProps> = ({ queries, sourcererDataView }) => {

x-pack/plugins/threat_intelligence/public/types.ts

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@
88
import { ComponentType, NamedExoticComponent, ReactElement, ReactNode, VFC } from 'react';
99
import { CoreStart } from '@kbn/core/public';
1010
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
11-
import {
12-
DataViewField,
13-
DataViewsPublicPluginStart,
14-
FieldSpec,
15-
} from '@kbn/data-views-plugin/public';
11+
import { DataViewsPublicPluginStart, FieldSpec } from '@kbn/data-views-plugin/public';
1612
import { Storage } from '@kbn/kibana-utils-plugin/public';
1713
import { TimelinesUIStart } from '@kbn/timelines-plugin/public';
1814
import type { TriggersAndActionsUIPublicPluginStart as TriggersActionsStart } from '@kbn/triggers-actions-ui-plugin/public';
@@ -26,7 +22,7 @@ import { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-
2622
import { Policy } from './modules/block_list/hooks/use_policies';
2723

2824
export interface SecuritySolutionDataViewBase extends DataViewBase {
29-
fields: Array<FieldSpec & DataViewField>;
25+
fields: FieldSpec[];
3026
}
3127

3228
// eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -64,12 +60,7 @@ export interface LicenseAware {
6460

6561
export type BrowserFields = Readonly<Record<string, Partial<BrowserField>>>;
6662

67-
export interface SourcererDataView {
68-
indexPattern: SecuritySolutionDataViewBase;
69-
browserFields: BrowserFields;
70-
selectedPatterns: string[];
71-
loading: boolean;
72-
}
63+
export type SourcererDataView = any;
7364

7465
export interface UseInvestigateInTimelineProps {
7566
dataProviders: DataProvider[];
@@ -101,6 +92,35 @@ export interface Blocking {
10192
getFormComponent: () => NamedExoticComponent<BlockListFormProps>;
10293
}
10394

95+
/**
96+
* Combined data from SourcererDataView and SourcererScope to create
97+
* selected data view state
98+
*/
99+
export interface SelectedDataView {
100+
/**
101+
* @deprecated use EcsFlat or fields / indexFields from data view
102+
*/
103+
browserFields: SourcererDataView['browserFields'];
104+
105+
/**
106+
* @deprecated use sourcererDataView
107+
* DataViewBase with enhanced index fields used in timelines
108+
*/
109+
indexPattern: SecuritySolutionDataViewBase;
110+
/** do the selected indices exist */
111+
indicesExist: boolean;
112+
/** is an update being made to the data view */
113+
loading: boolean;
114+
115+
/**
116+
* Easier to add this additional data rather than
117+
* try to extend the SelectedDataView type from DataView.
118+
*/
119+
sourcererDataView: SourcererDataView;
120+
121+
selectedPatterns: string[];
122+
}
123+
104124
/**
105125
* Methods exposed from the security solution to the threat intelligence application.
106126
*/
@@ -123,7 +143,7 @@ export interface SecuritySolutionPluginContext {
123143
/**
124144
* Gets Security Solution shared information like browerFields, indexPattern and selectedPatterns in DataView.
125145
*/
126-
sourcererDataView: SourcererDataView;
146+
selectedDataView: SelectedDataView;
127147

128148
/**
129149
* Security Solution store

0 commit comments

Comments
 (0)