fix: improve filter strategy
This commit is contained in:
parent
c5238f5643
commit
3e90bc9d7e
@ -23,7 +23,8 @@ export const AssociationFilterItem = (props) => {
|
|||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
const Designer = useDesigner();
|
const Designer = useDesigner();
|
||||||
const compile = useCompile();
|
const compile = useCompile();
|
||||||
const { service } = useBlockRequestContext();
|
const { service, props: blockProps } = useBlockRequestContext();
|
||||||
|
|
||||||
const [searchVisible, setSearchVisible] = useState(false);
|
const [searchVisible, setSearchVisible] = useState(false);
|
||||||
|
|
||||||
const collectionFieldName = collectionField.name;
|
const collectionFieldName = collectionField.name;
|
||||||
@ -76,7 +77,15 @@ export const AssociationFilterItem = (props) => {
|
|||||||
delete filters[`af.${collectionFieldName}`];
|
delete filters[`af.${collectionFieldName}`];
|
||||||
}
|
}
|
||||||
|
|
||||||
service.run({ ...service.params?.[0], pageSize: 200, page: 1, filter: mergeFilter(Object.values(filters)) }, { filters });
|
service.run(
|
||||||
|
{
|
||||||
|
...service.params?.[0],
|
||||||
|
pageSize: 200,
|
||||||
|
page: 1,
|
||||||
|
filter: mergeFilter([Object.values(filters), blockProps?.params?.filter]),
|
||||||
|
},
|
||||||
|
{ filters },
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSearchToggle = (e: MouseEvent) => {
|
const handleSearchToggle = (e: MouseEvent) => {
|
||||||
|
@ -107,9 +107,11 @@ export const useFilterFieldProps = ({ options, service, params }) => {
|
|||||||
const filter = removeNullCondition(values?.filter);
|
const filter = removeNullCondition(values?.filter);
|
||||||
|
|
||||||
const filters = service.params?.[1]?.filters || {};
|
const filters = service.params?.[1]?.filters || {};
|
||||||
filters[`default`] = mergeFilter([defaultFilter, filter]);
|
filters[`filterAction`] = filter;
|
||||||
|
service.run(
|
||||||
service.run({ ...service.params?.[0], page: 1, filter: mergeFilter(Object.values(filters)) }, { filters });
|
{ ...service.params?.[0], page: 1, filter: mergeFilter([...Object.values(filters), defaultFilter]) },
|
||||||
|
{ filters },
|
||||||
|
);
|
||||||
const items = filter?.$and || filter?.$or;
|
const items = filter?.$and || filter?.$or;
|
||||||
if (items?.length) {
|
if (items?.length) {
|
||||||
field.title = t('{{count}} filter items', { count: items?.length || 0 });
|
field.title = t('{{count}} filter items', { count: items?.length || 0 });
|
||||||
@ -119,7 +121,16 @@ export const useFilterFieldProps = ({ options, service, params }) => {
|
|||||||
},
|
},
|
||||||
onReset() {
|
onReset() {
|
||||||
const filter = params.filter;
|
const filter = params.filter;
|
||||||
service.run({ ...service.params?.[0], filter, page: 1 });
|
const filters = service.params?.[1]?.filters || {};
|
||||||
|
delete filters[`filterAction`];
|
||||||
|
service.run(
|
||||||
|
{
|
||||||
|
...service.params?.[0],
|
||||||
|
filter: mergeFilter([...Object.values(filters), filter]),
|
||||||
|
page: 1,
|
||||||
|
},
|
||||||
|
{ filters },
|
||||||
|
);
|
||||||
field.title = t('Filter');
|
field.title = t('Filter');
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { ArrayItems } from '@formily/antd';
|
import { ArrayItems } from '@formily/antd';
|
||||||
import { ISchema, observer, useField, useFieldSchema } from '@formily/react';
|
import { ISchema, useField, useFieldSchema } from '@formily/react';
|
||||||
import React, { useEffect } from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useTableBlockContext } from '../../../block-provider';
|
import { useTableBlockContext } from '../../../block-provider';
|
||||||
|
import { mergeFilter } from '../../../block-provider/SharedFilterProvider';
|
||||||
import { useCollection } from '../../../collection-manager';
|
import { useCollection } from '../../../collection-manager';
|
||||||
import { useCollectionFilterOptions, useSortFields } from '../../../collection-manager/action-hooks';
|
import { useCollectionFilterOptions, useSortFields } from '../../../collection-manager/action-hooks';
|
||||||
import { useRecord } from '../../../record-provider';
|
|
||||||
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
|
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
|
||||||
import { useSchemaTemplate } from '../../../schema-templates';
|
import { useSchemaTemplate } from '../../../schema-templates';
|
||||||
import { useDesignable } from '../../hooks';
|
import { useDesignable } from '../../hooks';
|
||||||
@ -81,7 +81,11 @@ export const TableBlockDesigner = () => {
|
|||||||
params.filter = filter;
|
params.filter = filter;
|
||||||
field.decoratorProps.params = params;
|
field.decoratorProps.params = params;
|
||||||
fieldSchema['x-decorator-props']['params'] = params;
|
fieldSchema['x-decorator-props']['params'] = params;
|
||||||
service.run({ ...service.params?.[0], filter, page: 1 });
|
const filters = service.params?.[1]?.filters || {};
|
||||||
|
service.run(
|
||||||
|
{ ...service.params?.[0], filter: mergeFilter([...Object.values(filters), filter]), page: 1 },
|
||||||
|
{ filters },
|
||||||
|
);
|
||||||
dn.emit('patch', {
|
dn.emit('patch', {
|
||||||
schema: {
|
schema: {
|
||||||
['x-uid']: fieldSchema['x-uid'],
|
['x-uid']: fieldSchema['x-uid'],
|
||||||
|
Loading…
Reference in New Issue
Block a user