fix(workflow/request-var): fix request node var editor (#1223)

This commit is contained in:
lyf-coder 2022-12-09 22:01:19 +08:00 committed by GitHub
parent 0ddd73cf3b
commit f4ee872a16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 23 deletions

View File

@ -386,7 +386,7 @@ export function Operand({
`}> `}>
<Cascader <Cascader
allowClear={false} allowClear={false}
value={[type, ...(appendTypeValue ? appendTypeValue(operand) : [])]} value={[Types[type] ? type : '', ...(appendTypeValue ? appendTypeValue(operand) : [])]}
options={Object.values(Types).map((item: any) => { options={Object.values(Types).map((item: any) => {
const options = typeof item.options === 'function' ? item.options() : item.options; const options = typeof item.options === 'function' ? item.options() : item.options;
return { return {

View File

@ -3,51 +3,58 @@ import { Row, Col } from 'antd';
import { CopyOutlined, ToolOutlined } from '@ant-design/icons'; import { CopyOutlined, ToolOutlined } from '@ant-design/icons';
import { CopyToClipboard } from 'react-copy-to-clipboard'; import { CopyToClipboard } from 'react-copy-to-clipboard';
import { Operand, VariableTypes, VariableTypesContext } from '../calculators'; import {Operand, VariableTypes, VariableTypesContext} from '../calculators';
import { Button, Input, message, Tooltip } from 'antd'; import { Button, Input, message, Tooltip } from 'antd';
import { useFlowContext } from '../FlowContext'; import { useFlowContext } from '../FlowContext';
import { useCollectionManager, useCompile } from '@nocobase/client'; import { useCollectionManager, useCompile } from '@nocobase/client';
import { useWorkflowTranslation } from '../locale'; import {useWorkflowTranslation} from '../locale';
function getVal(operand) { function getVal(operand) {
const { options } = operand;
const { t } = useWorkflowTranslation(); const { t } = useWorkflowTranslation();
const compile = useCompile(); const compile = useCompile();
const { getCollectionFields } = useCollectionManager(); const { getCollectionFields } = useCollectionManager();
const { nodes } = useFlowContext(); const { nodes } = useFlowContext();
switch (operand.type) { if (typeof operand === 'string') {
case '$context': let pathArr = operand.replace('{{', '').replace('}}', '').split('.');
if (options?.path) { if (pathArr.length > 0) {
return `<%=ctx.${options.path}%>`; const type = pathArr[0];
if (type == '$context') {
return `<%=${pathArr.map((value, index) => {
if (index === 0) {
return 'ctx';
}
return value;
}).join('.')}%>`;
} }
break; if (pathArr.length>1 && type == '$jobsMapByNodeId') {
case '$jobsMapByNodeId': const nodeId = pathArr[1]
if (options?.nodeId) { const node = nodes.find((n) => n.id == nodeId);
const node = nodes.find((n) => n.id == options.nodeId);
if (node) { if (node) {
if (node.type === 'calculation') { if (node.type === 'calculation') {
return `<%= node.${options.nodeId} // ${t('Calculation result')} %>`; return `<%= node[${nodeId}] // ${t('Calculation result')} %>`;
} }
if (options.path && node?.config?.collection) { if (pathArr.length>2 && node?.config?.collection) {
const fieldName = pathArr[2]
const fields = getCollectionFields(node?.config?.collection); const fields = getCollectionFields(node?.config?.collection);
const field = fields.find((f) => f.name == options.path); const field = fields.find((f) => f.name == fieldName);
if (field) { if (field) {
return `<%= node[${options.nodeId}].${options.path} // ${compile( return `<%= node[${nodeId}].${fieldName} // ${compile(
field.uiSchema?.title || field.name, field.uiSchema?.title || field.name,
)} %>`; )} %>`;
} }
return `<%= node[${options.nodeId}].${options.path}%>`; return `<%= node[${nodeId}].${fieldName}%>`;
} }
} }
} }
}
} }
return ''; return '';
} }
const AvailableVariableTool = (props) => { const AvailableVariableTool = (props) => {
const { t } = useWorkflowTranslation(); const { t } = useWorkflowTranslation();
const [operand, setOperand] = useState({ type: '$context', value: '' }); const [operand, setOperand] = useState('');
return ( return (
<Row style={{ width: '100%' }}> <Row style={{ width: '100%' }}>
<Col span={10}> <Col span={10}>
@ -105,13 +112,10 @@ export default function (props) {
<Row> <Row>
<Col span={24}> <Col span={24}>
<div className="ant-formily-item-extra"> <div className="ant-formily-item-extra">
{props.description} {props.description} {t('Syntax see')}{' '}
{' '}
{t('Syntax see')}{' '}
<a target={'_blank'} href={'https://ejs.co'}> <a target={'_blank'} href={'https://ejs.co'}>
ejs ejs
</a> </a>{' '}
{' '}
</div> </div>
</Col> </Col>
</Row> </Row>