refactor(plugin-workflow): allow system values to be assigned in create and update node (#2345)

This commit is contained in:
Junyi 2023-07-28 22:48:12 +07:00 committed by GitHub
parent 493965f848
commit 1125ff76a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 16 deletions

View File

@ -32,14 +32,6 @@ function AssociationInput(props) {
return <Input {...props} value={value} onChange={onChange} />; return <Input {...props} value={value} onChange={onChange} />;
} }
export function useCollectionUIFields(collection) {
const { getCollectionFields } = useCollectionManager();
return getCollectionFields(collection).filter(
(field) => !field.hidden && (field.uiSchema ? !field.uiSchema['x-read-pretty'] : false),
);
}
// NOTE: observer for watching useProps // NOTE: observer for watching useProps
const CollectionFieldSet = observer( const CollectionFieldSet = observer(
({ value, disabled, onChange, filter }: any) => { ({ value, disabled, onChange, filter }: any) => {
@ -47,11 +39,11 @@ const CollectionFieldSet = observer(
const { t } = useTranslation(); const { t } = useTranslation();
const compile = useCompile(); const compile = useCompile();
const form = useForm(); const form = useForm();
const { getCollection } = useCollectionManager(); const { getCollection, getCollectionFields } = useCollectionManager();
const scope = useWorkflowVariableOptions(); const scope = useWorkflowVariableOptions();
const { values: config } = form; const { values: config } = form;
const collectionName = config?.collection; const collectionName = config?.collection;
const collectionFields = useCollectionUIFields(collectionName); const collectionFields = getCollectionFields(collectionName);
const fields = filter ? collectionFields.filter(filter.bind(config)) : collectionFields; const fields = filter ? collectionFields.filter(filter.bind(config)) : collectionFields;
const unassignedFields = useMemo(() => fields.filter((field) => !value || !(field.name in value)), [fields, value]); const unassignedFields = useMemo(() => fields.filter((field) => !value || !(field.name in value)), [fields, value]);

View File

@ -1,20 +1,21 @@
import { useField, useForm } from '@formily/react';
import React from 'react'; import React from 'react';
import { useForm, useField } from '@formily/react';
import { useCollectionDataSource } from '@nocobase/client'; import { useCollectionDataSource, useCollectionManager } from '@nocobase/client';
import CollectionFieldset from '../components/CollectionFieldset';
import { FilterDynamicComponent } from '../components/FilterDynamicComponent'; import { FilterDynamicComponent } from '../components/FilterDynamicComponent';
import CollectionFieldset, { useCollectionUIFields } from '../components/CollectionFieldset';
import { isValidFilter } from '../utils'; import { RadioWithTooltip } from '../components/RadioWithTooltip';
import { NAMESPACE, lang } from '../locale'; import { NAMESPACE, lang } from '../locale';
import { collection, filter, values } from '../schemas/collection'; import { collection, filter, values } from '../schemas/collection';
import { RadioWithTooltip } from '../components/RadioWithTooltip'; import { isValidFilter } from '../utils';
function IndividualHooksRadioWithTooltip({ onChange, ...props }) { function IndividualHooksRadioWithTooltip({ onChange, ...props }) {
const { getCollectionFields } = useCollectionManager();
const form = useForm(); const form = useForm();
const { collection } = form.values; const { collection } = form.values;
const fields = useCollectionUIFields(collection); const fields = getCollectionFields(collection);
const field = useField<any>(); const field = useField<any>();
function onValueChange({ target }) { function onValueChange({ target }) {