mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 13:39:24 +08:00
fix: use association names
This commit is contained in:
parent
2f1cc6c938
commit
b7954a6f05
@ -1,5 +1,6 @@
|
||||
import { createForm } from '@formily/core';
|
||||
import { RecursionField, Schema, useField, useFieldSchema } from '@formily/react';
|
||||
import { Spin } from 'antd';
|
||||
import { isEmpty } from 'lodash';
|
||||
import React, { createContext, useContext, useEffect, useMemo, useRef } from 'react';
|
||||
import { useCollection } from '../collection-manager';
|
||||
@ -72,7 +73,10 @@ export const FormBlockProvider = (props) => {
|
||||
const currentCollection = useCollection();
|
||||
const { designable } = useDesignable();
|
||||
const isEmptyRecord = useIsEmptyRecord();
|
||||
const { appends, updateAssociationValues } = useAssociationNames();
|
||||
const { loading, appends, updateAssociationValues } = useAssociationNames();
|
||||
if (loading) {
|
||||
return <Spin />;
|
||||
}
|
||||
if (!Object.keys(params).includes('appends')) {
|
||||
params['appends'] = appends;
|
||||
}
|
||||
|
@ -16,12 +16,12 @@ import { transformToFilter } from '../../filter-provider/utils';
|
||||
import { useRecord } from '../../record-provider';
|
||||
import { removeNullCondition, useActionContext, useCompile } from '../../schema-component';
|
||||
import { BulkEditFormItemValueType } from '../../schema-initializer/components';
|
||||
import { useSchemaTemplateManager } from '../../schema-templates';
|
||||
import { useCurrentUserContext } from '../../user';
|
||||
import { useBlockRequestContext, useFilterByTk } from '../BlockProvider';
|
||||
import { useDetailsBlockContext } from '../DetailsBlockProvider';
|
||||
import { mergeFilter } from '../SharedFilterProvider';
|
||||
import { TableFieldResource } from '../TableFieldProvider';
|
||||
import { useSchemaTemplateManager } from '../../schema-templates';
|
||||
|
||||
export const usePickActionProps = () => {
|
||||
const form = useForm();
|
||||
@ -1073,21 +1073,21 @@ export const useAssociationFilterBlockProps = () => {
|
||||
};
|
||||
};
|
||||
|
||||
const getTemplateSchema = ({ uid }) => {
|
||||
const getTemplateSchema = async (api, { uid }) => {
|
||||
const conf = {
|
||||
url: `/uiSchemas:getJsonSchema/${uid}`,
|
||||
};
|
||||
const { data, loading } = useRequest(conf);
|
||||
if (loading) {
|
||||
// return;
|
||||
}
|
||||
const { data } = await api.request(conf);
|
||||
console.log('data?.data', data?.data);
|
||||
return new Schema(data?.data || {});
|
||||
};
|
||||
|
||||
export const useAssociationNames = () => {
|
||||
const api = useAPIClient();
|
||||
const { getCollectionJoinField } = useCollectionManager();
|
||||
const { getTemplateById } = useSchemaTemplateManager();
|
||||
const fieldSchema = useFieldSchema();
|
||||
const { loading, data } = useRequest(async () => {
|
||||
const associationValues = [];
|
||||
const formSchema = fieldSchema.reduceProperties((buf, schema) => {
|
||||
if (['FormV2', 'Details', 'List', 'GridCard'].includes(schema['x-component'])) {
|
||||
@ -1163,7 +1163,7 @@ export const useAssociationNames = () => {
|
||||
};
|
||||
if (templateSchema) {
|
||||
const template = getTemplateById(templateSchema['x-component-props']?.templateId);
|
||||
const schema = getTemplateSchema(template);
|
||||
const schema = await getTemplateSchema(api, template);
|
||||
if (schema) {
|
||||
const associations = getAssociationAppends(schema);
|
||||
const appends = flattenNestedList(associations);
|
||||
@ -1174,4 +1174,7 @@ export const useAssociationNames = () => {
|
||||
const appends = flattenNestedList(associations);
|
||||
return { appends, updateAssociationValues: appends.filter((v) => associationValues.includes(v)) };
|
||||
}
|
||||
});
|
||||
|
||||
return { appends: [], updateAssociationValues: [], loading, ...data };
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user