Skip to content

Commit

Permalink
[frontend] all available filters in Knowledge relationships views (Op…
Browse files Browse the repository at this point in the history
  • Loading branch information
Archidoit authored Jun 10, 2024
1 parent 06c6efe commit eb9a2c1
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,6 @@ const EntityStixCoreRelationshipsRelationshipsView: FunctionComponent<EntityStix
view,
} = viewStorage;

const availableFilterKeys = [
'objectMarking',
'confidence',
'objectLabel',
'createdBy',
'creator_id',
'created',
];

const { platformModuleHelpers } = useAuth();
const isObservables = isStixCyberObservables(stixCoreObjectTypes);
const isRuntimeSort = platformModuleHelpers.isRuntimeFieldEnable();
Expand Down Expand Up @@ -187,7 +178,6 @@ const EntityStixCoreRelationshipsRelationshipsView: FunctionComponent<EntityStix
selectAll={selectAll}
numberOfElements={numberOfElements}
filters={filters}
availableFilterKeys={availableFilterKeys}
availableEntityTypes={stixCoreObjectTypes}
availableRelationshipTypes={relationshipTypes}
handleToggleExports={storageHelpers.handleToggleExports}
Expand All @@ -201,6 +191,7 @@ const EntityStixCoreRelationshipsRelationshipsView: FunctionComponent<EntityStix
paginationOptions={paginationOptions}
enableEntitiesView={true}
currentView={finalView}
entityTypes={['stix-core-relationship']}
>
<QueryRenderer
query={
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ import useAttributes from '../../../../utils/hooks/useAttributes';
import { stixCyberObservablesLinesAttributesQuery } from '../../observations/stix_cyber_observables/StixCyberObservablesLines';
import Filters from '../../common/lists/Filters';
import {
useAvailableFilterKeysForEntityTypes,
cleanFilters,
emptyFilterGroup,
serializeFilterGroupForBackend,
useBuildFilterKeysMapFromEntityType,
useFetchFilterKeysSchema,
} from '../../../../utils/filters/filtersUtils';
import FilterIconButton from '../../../../components/FilterIconButton';
import { generateUniqueItemsArray, isNotEmptyField } from '../../../../utils/utils';
import { isNotEmptyField } from '../../../../utils/utils';
import { fieldSpacingContainerStyle } from '../../../../utils/field';
import Drawer, { DrawerVariant } from '../../common/drawer/Drawer';
import useFiltersState from '../../../../utils/filters/useFiltersState';
Expand Down Expand Up @@ -160,8 +160,7 @@ const FeedCreation: FunctionComponent<FeedCreationFormProps> = (props) => {
const [filters, helpers] = useFiltersState(emptyFilterGroup);

const completeFilterKeysMap: Map<string, Map<string, FilterDefinition>> = useFetchFilterKeysSchema();
const filterKeysMap = useBuildFilterKeysMapFromEntityType(selectedTypes);
const availableFilterKeys = generateUniqueItemsArray(filterKeysMap.keys() ?? []).filter((k) => k !== 'entity_type');
const availableFilterKeys = useAvailableFilterKeysForEntityTypes(selectedTypes).filter((k) => k !== 'entity_type');

// TODO: typing this state properly implies deep refactoring
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ import { stixCyberObservablesLinesAttributesQuery } from '../../observations/sti
import Filters from '../../common/lists/Filters';
import { feedCreationAllTypesQuery } from './FeedCreation';
import {
useAvailableFilterKeysForEntityTypes,
cleanFilters,
deserializeFilterGroupForFrontend,
serializeFilterGroupForBackend,
useBuildFilterKeysMapFromEntityType,
useFetchFilterKeysSchema,
} from '../../../../utils/filters/filtersUtils';
import FilterIconButton from '../../../../components/FilterIconButton';
import { generateUniqueItemsArray, isNotEmptyField } from '../../../../utils/utils';
import { isNotEmptyField } from '../../../../utils/utils';
import ObjectMembersField from '../../common/form/ObjectMembersField';
import { fieldSpacingContainerStyle } from '../../../../utils/field';
import { convertAuthorizedMembers } from '../../../../utils/edition';
Expand Down Expand Up @@ -157,8 +157,7 @@ const FeedEditionContainer = (props) => {
});

const completeFilterKeysMap = useFetchFilterKeysSchema();
const filterKeysMap = useBuildFilterKeysMapFromEntityType(selectedTypes);
const availableFilterKeys = generateUniqueItemsArray(filterKeysMap.keys() ?? []).filter((k) => k !== 'entity_type');
const availableFilterKeys = useAvailableFilterKeysForEntityTypes(selectedTypes).filter((k) => k !== 'entity_type');

const handleSelectTypes = (types) => {
setSelectedTypes(types);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ import { useFormatter } from '../../../../components/i18n';
import { commitMutation } from '../../../../relay/environment';
import TextField from '../../../../components/TextField';
import Filters from '../../common/lists/Filters';
import { emptyFilterGroup, isFilterGroupNotEmpty, serializeFilterGroupForBackend, useBuildFilterKeysMapFromEntityType } from '../../../../utils/filters/filtersUtils';
import { useAvailableFilterKeysForEntityTypes, emptyFilterGroup, isFilterGroupNotEmpty, serializeFilterGroupForBackend } from '../../../../utils/filters/filtersUtils';
import FilterIconButton from '../../../../components/FilterIconButton';
import { fieldSpacingContainerStyle } from '../../../../utils/field';
import Drawer, { DrawerVariant } from '../../common/drawer/Drawer';
import useFiltersState from '../../../../utils/filters/useFiltersState';
import { PaginationOptions } from '../../../../components/list_lines';
import { generateUniqueItemsArray } from '../../../../utils/utils';

interface TaxiiCollectionCreationProps {
paginationOptions: PaginationOptions
Expand Down Expand Up @@ -120,8 +119,7 @@ const TaxiiCollectionCreation: FunctionComponent<TaxiiCollectionCreationProps> =
setSubmitting,
});
};
const filterKeysMap = useBuildFilterKeysMapFromEntityType(['Stix-Core-Object', 'stix-core-relationship']);
const availableFilterKeys = generateUniqueItemsArray(filterKeysMap.keys() ?? []);
const availableFilterKeys = useAvailableFilterKeysForEntityTypes(['Stix-Core-Object', 'stix-core-relationship']);
return (
<Drawer
title={t_i18n('Create a TAXII collection')}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ import { useFormatter } from '../../../../components/i18n';
import { commitMutation } from '../../../../relay/environment';
import TextField from '../../../../components/TextField';
import Filters from '../../common/lists/Filters';
import { deserializeFilterGroupForFrontend, serializeFilterGroupForBackend, useBuildFilterKeysMapFromEntityType } from '../../../../utils/filters/filtersUtils';
import { useAvailableFilterKeysForEntityTypes, deserializeFilterGroupForFrontend, serializeFilterGroupForBackend } from '../../../../utils/filters/filtersUtils';
import FilterIconButton from '../../../../components/FilterIconButton';
import { fieldSpacingContainerStyle } from '../../../../utils/field';
import { convertAuthorizedMembers } from '../../../../utils/edition';
import useFiltersState from '../../../../utils/filters/useFiltersState';
import { generateUniqueItemsArray } from '../../../../utils/utils';

// Deprecated - https://mui.com/system/styles/basics/
// Do not use it for new code.
Expand Down Expand Up @@ -132,8 +131,7 @@ const TaxiiCollectionEditionContainer: FunctionComponent<{ taxiiCollection: Taxi
}, [filters]);
const onSubmit: FormikConfig<TaxiiCollectionCreationForm>['onSubmit'] = () => {};

const filterKeysMap = useBuildFilterKeysMapFromEntityType(['Stix-Core-Object', 'stix-core-relationship']);
const availableFilterKeys = generateUniqueItemsArray(filterKeysMap.keys() ?? []);
const availableFilterKeys = useAvailableFilterKeysForEntityTypes(['Stix-Core-Object', 'stix-core-relationship']);
return (
<Formik
onSubmit={onSubmit}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import Filters from '@components/common/lists/Filters';
import React, { FunctionComponent, useEffect } from 'react';
import { Box } from '@mui/material';
import { uniq } from 'ramda';
import useFiltersState from '../../../../utils/filters/useFiltersState';
import { isFilterGroupNotEmpty, useBuildFilterKeysMapFromEntityType } from '../../../../utils/filters/filtersUtils';
import { useAvailableFilterKeysForEntityTypes, isFilterGroupNotEmpty } from '../../../../utils/filters/filtersUtils';
import FilterIconButton from '../../../../components/FilterIconButton';
import { useFormatter } from '../../../../components/i18n';
import { FilterGroup } from '../../../../utils/filters/filtersHelpers-types';
Expand Down Expand Up @@ -54,15 +53,13 @@ const WidgetFilters: FunctionComponent<WidgetFiltersProps> = ({ perspective, typ
];
searchContext = { entityTypes: ['Stix-Core-Object'] };
}
const filterKeysMap = useBuildFilterKeysMapFromEntityType(searchContext.entityTypes);
let availableFilterKeys = uniq(Array.from(filterKeysMap.keys() ?? []));
let availableFilterKeys = useAvailableFilterKeysForEntityTypes(searchContext.entityTypes);
if (perspective !== 'relationships') {
availableFilterKeys = availableFilterKeys.concat('entity_type');
} else {
availableFilterKeys = availableFilterKeys.filter((key) => key !== 'entity_type'); // for relationships perspective widget, use the relationship_type filter
}
const entitiesFilterKeysMap = useBuildFilterKeysMapFromEntityType(['Stix-Core-Object']);
const entitiesFilters = uniq(Array.from(entitiesFilterKeysMap.keys() ?? []));
const entitiesFilters = useAvailableFilterKeysForEntityTypes(['Stix-Core-Object']);

return <><Box sx={{ display: 'flex', justifyContent: 'space-between', paddingTop: 2 }}>
<Box sx={{ display: 'flex', gap: 1 }}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as R from 'ramda';
import { v4 as uuid } from 'uuid';
import { OptionValue } from '@components/common/lists/FilterAutocomplete';
import { uniq } from 'ramda';
import React from 'react';
import { useFormatter } from '../../components/i18n';
import type { FilterGroup as GqlFilterGroup } from './__generated__/useSearchEntitiesStixCoreObjectsSearchQuery.graphql';
Expand Down Expand Up @@ -679,9 +678,13 @@ export const useBuildFilterKeysMapFromEntityType = (entityTypes = ['Stix-Core-Ob
return filterKeysMap;
};

export const useRemoveIdAndIncorrectKeysFromFilterGroupObject = (filters?: FilterGroup | null, entityTypes = ['Stix-Core-Object']): FilterGroup | undefined => {
export const useAvailableFilterKeysForEntityTypes = (entityTypes: string[]) => {
const filterKeysMap = useBuildFilterKeysMapFromEntityType(entityTypes);
const availableFilterKeys = uniq(Array.from(filterKeysMap.keys() ?? []).concat('entity_type'));
return generateUniqueItemsArray(filterKeysMap.keys() ?? []);
};

export const useRemoveIdAndIncorrectKeysFromFilterGroupObject = (filters?: FilterGroup | null, entityTypes = ['Stix-Core-Object']): FilterGroup | undefined => {
const availableFilterKeys = useAvailableFilterKeysForEntityTypes(entityTypes).concat('entity_type');
if (!filters) {
return undefined;
}
Expand Down

0 comments on commit eb9a2c1

Please sign in to comment.