Skip to content

Commit

Permalink
Post-review feedback & avoid local storage collision
Browse files Browse the repository at this point in the history
  • Loading branch information
albertoblaz committed Feb 11, 2025
1 parent 7870f22 commit 76d5f7c
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,21 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React, { useState, useEffect, useMemo, useCallback } from 'react';
import React, { useMemo, useCallback } from 'react';
import { EuiSpacer, EuiFlexItem } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FilterGroup } from '@kbn/alerts-ui-shared/src/alert_filter_controls/filter_group';
import type { FilterControlConfig } from '@kbn/alerts-ui-shared';
import type { FieldSpec } from '@kbn/data-views-plugin/common';
import type { DataViewBase, Filter } from '@kbn/es-query';
import type { Filter } from '@kbn/es-query';
import { createKbnUrlStateStorage, Storage } from '@kbn/kibana-utils-plugin/public';
import { ControlGroupRenderer } from '@kbn/controls-plugin/public';
import type { DataViewSpec } from '@kbn/data-plugin/common';
import { useHistory } from 'react-router-dom';
import { useKibana } from '../../../common/lib/kibana';
import { useDataViewContext } from '../../hooks/data_view_context';
import { useSpaceId } from '../../../common/hooks/use_space_id';
import { URL_PARAM_KEY } from '../../../common/hooks/use_url_state';
import { useGlobalTime } from '../../../common/containers/use_global_time';
import { FilterGroupLoading } from './filters_loading';
import { ASSET_INVENTORY_RULE_TYPE_IDS } from './rule_type_ids';

const SECURITY_ASSET_INVENTORY_DATA_VIEW = {
id: 'asset-inventory-logs-default',
Expand Down Expand Up @@ -53,27 +52,13 @@ const DEFAULT_ASSET_INVENTORY_FILTERS: FilterControlConfig[] = [
},
];

type DataView = Omit<DataViewBase, 'fields'> & { fields: FieldSpec[] };

export interface FiltersProps {
// TODO Remove dataView prop when integrating with backend (fetched from hook)
dataView: DataView;
dataViewSpec: DataViewSpec;
onFiltersChange: (newFilters: Filter[]) => void;
}

export const Filters = ({
dataView,
dataViewSpec: indexPattern,
onFiltersChange,
...props
}: FiltersProps) => {
const {
// http,
// notifications: { toasts },
dataViews,
} = useKibana().services;
const { to, from } = useGlobalTime();
export const Filters = ({ onFiltersChange }: FiltersProps) => {
const { dataView: indexPattern, dataViewIsLoading, dataViewIsRefetching } = useDataViewContext();
const { from, to } = useGlobalTime();
const spaceId = useSpaceId();
const history = useHistory();
const urlStorage = useMemo(
Expand Down Expand Up @@ -112,40 +97,6 @@ export const Filters = ({
[indexPattern]
);

const [loadingPageFilters, setLoadingPageFilters] = useState(true);

// TODO Resolve when integrating with backend
// const { dataView, isLoading: isLoadingDataView } = useAlertsDataView({
// ruleTypeIds,
// dataViewsService: dataViews,
// http,
// toasts,
// });
const isLoadingDataView = false;

useEffect(() => {
if (!isLoadingDataView) {
// If a data view spec is provided, create a new data view
if (dataViewSpec?.id) {
(async () => {
// Creates an adhoc data view starting from the alert data view
// and applying the overrides specified in the dataViewSpec
const spec = {
...(dataView ?? {}),
...(dataViewSpec ?? {}),
// } as DataViewSpec;
} as unknown as DataViewSpec;
await dataViews.create(spec);
setLoadingPageFilters(false);
})();
} else {
setLoadingPageFilters(false);
}
}

return () => dataViews.clearInstanceCache();
}, [dataView, dataViewSpec, dataViews, isLoadingDataView]);

const handleFilterChanges = useCallback(
(newFilters: Filter[]) => {
if (!onFiltersChange) {
Expand All @@ -170,7 +121,7 @@ export const Filters = ({
return null;
}

if (loadingPageFilters) {
if (dataViewIsLoading || dataViewIsRefetching) {
return (
<EuiFlexItem grow={true}>
<FilterGroupLoading />
Expand All @@ -184,8 +135,7 @@ export const Filters = ({
<FilterGroup
dataViewId={dataViewSpec?.id || null}
onFiltersChange={handleFilterChanges}
ruleTypeIds={[]}
storageKey={'assetInventory'}
ruleTypeIds={ASSET_INVENTORY_RULE_TYPE_IDS}
Storage={Storage}
defaultControls={DEFAULT_ASSET_INVENTORY_FILTERS}
chainingSystem="HIERARCHICAL"
Expand All @@ -199,7 +149,6 @@ export const Filters = ({
to,
mode: 'absolute',
}}
{...props}
/>
<EuiSpacer size="l" />
</>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

const RULE_TYPE_PREFIX = `assetInventorySiem` as const;
export const EQL_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.eqlRule` as const;
export const ESQL_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.esqlRule` as const;
export const INDICATOR_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.indicatorRule` as const;
export const ML_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.mlRule` as const;
export const QUERY_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.queryRule` as const;
export const SAVED_QUERY_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.savedQueryRule` as const;
export const THRESHOLD_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.thresholdRule` as const;
export const NEW_TERMS_RULE_TYPE_ID = `${RULE_TYPE_PREFIX}.newTermsRule` as const;

export const ASSET_INVENTORY_RULE_TYPE_IDS = [
EQL_RULE_TYPE_ID,
ESQL_RULE_TYPE_ID,
INDICATOR_RULE_TYPE_ID,
ML_RULE_TYPE_ID,
QUERY_RULE_TYPE_ID,
SAVED_QUERY_RULE_TYPE_ID,
THRESHOLD_RULE_TYPE_ID,
NEW_TERMS_RULE_TYPE_ID,
];
Original file line number Diff line number Diff line change
Expand Up @@ -399,13 +399,7 @@ const AllAssets = ({
/>
</h1>
</EuiTitle>
{dataView ? (
<Filters
dataView={dataView}
dataViewSpec={dataView.toSpec()}
onFiltersChange={() => {}}
/>
) : null}
<Filters onFiltersChange={() => {}} />
<CellActionsProvider getTriggerCompatibleActions={uiActions.getTriggerCompatibleActions}>
<div
data-test-subj={rest['data-test-subj']}
Expand Down

0 comments on commit 76d5f7c

Please sign in to comment.