Revert "fix: the edit drawer's audit logs block can only get records by this … (#1917)"
This reverts commit 42ad77da68
.
# Conflicts:
# packages/core/client/src/block-provider/TableBlockProvider.tsx
# packages/core/client/src/schema-component/antd/filter/useValues.ts
This commit is contained in:
parent
5e4682be72
commit
a1872fa75b
@ -1,7 +1,7 @@
|
|||||||
import { ArrayField, createForm } from '@formily/core';
|
import { ArrayField, createForm } from '@formily/core';
|
||||||
import { FormContext, useField, useFieldSchema } from '@formily/react';
|
import { FormContext, useField, useFieldSchema } from '@formily/react';
|
||||||
import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';
|
import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';
|
||||||
import { useCollection, useCollectionManager } from '../collection-manager';
|
import { useCollectionManager } from '../collection-manager';
|
||||||
import { useFilterBlock } from '../filter-provider/FilterProvider';
|
import { useFilterBlock } from '../filter-provider/FilterProvider';
|
||||||
import { useRecord } from '../record-provider';
|
import { useRecord } from '../record-provider';
|
||||||
import { FixedBlockWrapper, SchemaComponentOptions, removeNullCondition } from '../schema-component';
|
import { FixedBlockWrapper, SchemaComponentOptions, removeNullCondition } from '../schema-component';
|
||||||
@ -102,13 +102,8 @@ export const TableBlockProvider = (props) => {
|
|||||||
const record = useRecord();
|
const record = useRecord();
|
||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
const { getCollection, getCollectionField } = useCollectionManager();
|
const { getCollection, getCollectionField } = useCollectionManager();
|
||||||
const parent = useCollection();
|
|
||||||
const filter = generateFilterParams(record, parent.name, parent.filterTargetKey, {});
|
|
||||||
const collection = getCollection(props.collection);
|
const collection = getCollection(props.collection);
|
||||||
const { treeTable } = fieldSchema?.['x-decorator-props'] || {};
|
const { treeTable } = fieldSchema?.['x-decorator-props'] || {};
|
||||||
if (filter) {
|
|
||||||
params.filter = filter;
|
|
||||||
}
|
|
||||||
if (props.dragSort) {
|
if (props.dragSort) {
|
||||||
params['sort'] = ['sort'];
|
params['sort'] = ['sort'];
|
||||||
}
|
}
|
||||||
@ -255,28 +250,3 @@ export const useTableBlockProps = () => {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const generateFilterParams = (record, parentName, filterTargetKey, defaultFilter) => {
|
|
||||||
let filter = defaultFilter;
|
|
||||||
|
|
||||||
if (parentName) {
|
|
||||||
const filterByTk = `${record?.[filterTargetKey || 'id']}`;
|
|
||||||
if (filter) {
|
|
||||||
filter = {
|
|
||||||
$and: [
|
|
||||||
filter,
|
|
||||||
{
|
|
||||||
collectionName: parentName,
|
|
||||||
recordId: filterByTk,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
filter = {
|
|
||||||
collectionName: parentName,
|
|
||||||
recordId: filterByTk,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return filter;
|
|
||||||
};
|
|
||||||
|
@ -13,8 +13,6 @@ import { useCompile, useDesignable } from '../../hooks';
|
|||||||
import { removeNullCondition } from '../filter';
|
import { removeNullCondition } from '../filter';
|
||||||
import { FixedBlockDesignerItem } from '../page';
|
import { FixedBlockDesignerItem } from '../page';
|
||||||
import { FilterDynamicComponent } from './FilterDynamicComponent';
|
import { FilterDynamicComponent } from './FilterDynamicComponent';
|
||||||
import cloneDeep from 'lodash/cloneDeep';
|
|
||||||
import isEmpty from 'lodash/isEmpty';
|
|
||||||
|
|
||||||
export const TableBlockDesigner = () => {
|
export const TableBlockDesigner = () => {
|
||||||
const { name, title, sortable } = useCollection();
|
const { name, title, sortable } = useCollection();
|
||||||
@ -27,9 +25,7 @@ export const TableBlockDesigner = () => {
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { dn } = useDesignable();
|
const { dn } = useDesignable();
|
||||||
const compile = useCompile();
|
const compile = useCompile();
|
||||||
const defaultFilter = removeNullCondition(fieldSchema?.['x-decorator-props']?.params?.filter || {});
|
const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {};
|
||||||
// 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中
|
|
||||||
const crypticFilter = fieldSchema?.['x-decorator-props']?.params?.crypticFilter;
|
|
||||||
const defaultSort = fieldSchema?.['x-decorator-props']?.params?.sort || [];
|
const defaultSort = fieldSchema?.['x-decorator-props']?.params?.sort || [];
|
||||||
const defaultResource = fieldSchema?.['x-decorator-props']?.resource;
|
const defaultResource = fieldSchema?.['x-decorator-props']?.resource;
|
||||||
const supportTemplate = !fieldSchema?.['x-decorator-props']?.disableTemplate;
|
const supportTemplate = !fieldSchema?.['x-decorator-props']?.disableTemplate;
|
||||||
@ -71,16 +67,12 @@ export const TableBlockDesigner = () => {
|
|||||||
({ filter }) => {
|
({ filter }) => {
|
||||||
filter = removeNullCondition(filter);
|
filter = removeNullCondition(filter);
|
||||||
const params = field.decoratorProps.params || {};
|
const params = field.decoratorProps.params || {};
|
||||||
let tempFilter = !isEmpty(crypticFilter) ? crypticFilter : filter;
|
|
||||||
if (!isEmpty(filter)) {
|
|
||||||
tempFilter = !isEmpty(crypticFilter) ? mergeFilter([filter, tempFilter]) : cloneDeep(filter);
|
|
||||||
}
|
|
||||||
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;
|
||||||
const filters = service.params?.[1]?.filters || {};
|
const filters = service.params?.[1]?.filters || {};
|
||||||
service.run(
|
service.run(
|
||||||
{ ...service.params?.[0], filter: mergeFilter([...Object.values(filters), tempFilter]), page: 1 },
|
{ ...service.params?.[0], filter: mergeFilter([...Object.values(filters), filter]), page: 1 },
|
||||||
{ filters },
|
{ filters },
|
||||||
);
|
);
|
||||||
dn.emit('patch', {
|
dn.emit('patch', {
|
||||||
@ -90,7 +82,7 @@ export const TableBlockDesigner = () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[field, crypticFilter],
|
[field],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1323,8 +1323,6 @@ export const createTableBlockSchema = (options) => {
|
|||||||
TableBlockDesigner,
|
TableBlockDesigner,
|
||||||
blockType,
|
blockType,
|
||||||
pageSize = 20,
|
pageSize = 20,
|
||||||
// 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中
|
|
||||||
crypticFilter = {},
|
|
||||||
...others
|
...others
|
||||||
} = options;
|
} = options;
|
||||||
const schema: ISchema = {
|
const schema: ISchema = {
|
||||||
@ -1337,7 +1335,6 @@ export const createTableBlockSchema = (options) => {
|
|||||||
action: 'list',
|
action: 'list',
|
||||||
params: {
|
params: {
|
||||||
pageSize,
|
pageSize,
|
||||||
crypticFilter,
|
|
||||||
},
|
},
|
||||||
rowKey,
|
rowKey,
|
||||||
showIndex: true,
|
showIndex: true,
|
||||||
|
@ -1,30 +1,13 @@
|
|||||||
import { TableOutlined } from '@ant-design/icons';
|
import { TableOutlined } from '@ant-design/icons';
|
||||||
import { ISchema, useFieldSchema } from '@formily/react';
|
import { ISchema } from '@formily/react';
|
||||||
import {
|
import { createTableBlockSchema, SchemaInitializer } from '@nocobase/client';
|
||||||
createTableBlockSchema,
|
|
||||||
generateFilterParams,
|
|
||||||
SchemaInitializer,
|
|
||||||
useCollection,
|
|
||||||
useRecord,
|
|
||||||
} from '@nocobase/client';
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { getResourceOfBlockDesigner } from './utils';
|
|
||||||
|
|
||||||
export const AuditLogsBlockInitializer = (props) => {
|
export const AuditLogsBlockInitializer = (props) => {
|
||||||
const { filterTargetKey } = useCollection();
|
|
||||||
|
|
||||||
const { insert } = props;
|
const { insert } = props;
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const record = useRecord();
|
|
||||||
const fieldSchema = useFieldSchema();
|
|
||||||
|
|
||||||
const crypticFilterFromAuditLogs = generateFilterParams(
|
|
||||||
record,
|
|
||||||
getResourceOfBlockDesigner(fieldSchema),
|
|
||||||
filterTargetKey,
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
const schema = createTableBlockSchema({
|
const schema = createTableBlockSchema({
|
||||||
collection: 'auditLogs',
|
collection: 'auditLogs',
|
||||||
rowKey: 'id',
|
rowKey: 'id',
|
||||||
@ -33,8 +16,6 @@ export const AuditLogsBlockInitializer = (props) => {
|
|||||||
tableActionColumnInitializers: 'AuditLogsTableActionColumnInitializers',
|
tableActionColumnInitializers: 'AuditLogsTableActionColumnInitializers',
|
||||||
tableBlockProvider: 'AuditLogsBlockProvider',
|
tableBlockProvider: 'AuditLogsBlockProvider',
|
||||||
disableTemplate: true,
|
disableTemplate: true,
|
||||||
// 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中
|
|
||||||
crypticFilter: crypticFilterFromAuditLogs,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -4,7 +4,6 @@ import {
|
|||||||
CollectionManagerContext,
|
CollectionManagerContext,
|
||||||
CollectionManagerProvider,
|
CollectionManagerProvider,
|
||||||
FormProvider,
|
FormProvider,
|
||||||
generateFilterParams,
|
|
||||||
SchemaComponent,
|
SchemaComponent,
|
||||||
TableBlockProvider,
|
TableBlockProvider,
|
||||||
useCollection,
|
useCollection,
|
||||||
@ -459,35 +458,55 @@ export const AuditLogs: any = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
AuditLogs.Decorator = observer((props: any) => {
|
AuditLogs.Decorator = observer(
|
||||||
const parent = useCollection();
|
(props: any) => {
|
||||||
const record = useRecord();
|
const parent = useCollection();
|
||||||
const { interfaces } = useContext(CollectionManagerContext);
|
const record = useRecord();
|
||||||
const filter = generateFilterParams(record, parent.name, parent.filterTargetKey, props?.params?.filter) || {};
|
const { interfaces } = useContext(CollectionManagerContext);
|
||||||
const defaults = {
|
let filter = props?.params?.filter;
|
||||||
collection: 'auditLogs',
|
if (parent.name) {
|
||||||
resource: 'auditLogs',
|
const filterByTk = record?.[parent.filterTargetKey || 'id'];
|
||||||
action: 'list',
|
if (filter) {
|
||||||
params: {
|
filter = {
|
||||||
pageSize: 20,
|
$and: [
|
||||||
appends: ['collection', 'user'],
|
filter,
|
||||||
...props.params,
|
{
|
||||||
filter,
|
collectionName: parent.name,
|
||||||
sort: '-createdAt',
|
recordId: `${filterByTk}`,
|
||||||
},
|
},
|
||||||
rowKey: 'id',
|
],
|
||||||
showIndex: true,
|
};
|
||||||
dragSort: false,
|
} else {
|
||||||
};
|
filter = {
|
||||||
return (
|
collectionName: parent.name,
|
||||||
<IsAssociationBlock.Provider value={!!parent.name}>
|
recordId: `${filterByTk}`,
|
||||||
<CollectionManagerProvider collections={[collection]} interfaces={interfaces}>
|
};
|
||||||
<TableBlockProvider {...defaults}>{props.children}</TableBlockProvider>
|
}
|
||||||
</CollectionManagerProvider>
|
}
|
||||||
</IsAssociationBlock.Provider>
|
const defaults = {
|
||||||
);
|
collection: 'auditLogs',
|
||||||
}, {
|
resource: 'auditLogs',
|
||||||
displayName: 'AuditLogs.Decorator'
|
action: 'list',
|
||||||
});
|
params: {
|
||||||
|
pageSize: 20,
|
||||||
|
appends: ['collection', 'user'],
|
||||||
|
...props.params,
|
||||||
|
filter,
|
||||||
|
sort: '-createdAt',
|
||||||
|
},
|
||||||
|
rowKey: 'id',
|
||||||
|
showIndex: true,
|
||||||
|
dragSort: false,
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<IsAssociationBlock.Provider value={!!parent.name}>
|
||||||
|
<CollectionManagerProvider collections={[collection]} interfaces={interfaces}>
|
||||||
|
<TableBlockProvider {...defaults}>{props.children}</TableBlockProvider>
|
||||||
|
</CollectionManagerProvider>
|
||||||
|
</IsAssociationBlock.Provider>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
{ displayName: 'AuditLogs.Decorator' },
|
||||||
|
);
|
||||||
|
|
||||||
AuditLogs.Designer = AuditLogsDesigner;
|
AuditLogs.Designer = AuditLogsDesigner;
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { uid } from '@formily/shared';
|
import { uid } from '@formily/shared';
|
||||||
import { Schema } from '@formily/react';
|
|
||||||
import cloneDeep from 'lodash/cloneDeep';
|
|
||||||
|
|
||||||
export const createSchema = () => {
|
export const createSchema = () => {
|
||||||
const filterSchema = {
|
const filterSchema = {
|
||||||
@ -303,18 +301,3 @@ export const createSchema = () => {
|
|||||||
};
|
};
|
||||||
return schema;
|
return schema;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 TableBlockDesigner 或 DetailsDesigner 的 resource
|
|
||||||
*/
|
|
||||||
export function getResourceOfBlockDesigner(schema: Schema) {
|
|
||||||
let tempSchema = cloneDeep(schema);
|
|
||||||
while (
|
|
||||||
tempSchema &&
|
|
||||||
((tempSchema?.['x-designer'] !== 'TableBlockDesigner' && tempSchema?.['x-designer'] !== 'DetailsDesigner') ||
|
|
||||||
tempSchema?.['x-decorator-props']?.['resource'] === 'auditLogs')
|
|
||||||
) {
|
|
||||||
tempSchema = tempSchema.parent;
|
|
||||||
}
|
|
||||||
return tempSchema?.['x-decorator-props']?.['resource'];
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user