Skip to content

Commit 2f40b3c

Browse files
committed
Merge branch '3.5.x'
2 parents 6dd99bb + 025e58a commit 2f40b3c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+481
-514
lines changed

framework/elsa/fit-elsa-react/src/App.jsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,32 @@ function App({i18n}) {
241241
<Button onClick={() => window.agent.createNodeByPosition('textExtractionNodeState', {x:100, y:100}, {uniqueName : ''})}>创建文本提取节点</Button>
242242
<Button onClick={() => window.agent.createNodeByPosition('queryOptimizationNodeState', {x:100, y:100}, {uniqueName : ''})}>创建问题优化节点</Button>
243243
<Button onClick={() => window.agent.createNodeByPosition('codeNodeState', {x:100, y:100}, {uniqueName : ''})}>创建code节点</Button>
244+
<Button onClick={() => {
245+
const nodeTypes = ['endNodeEnd',
246+
'retrievalNodeState',
247+
'llmNodeState',
248+
'manualCheckNodeState',
249+
'conditionNodeCondition',
250+
'codeNodeState',
251+
'knowledgeRetrievalNodeState',
252+
'queryOptimizationNodeState',
253+
'textExtractionNodeState',
254+
'questionClassificationNodeCondition',
255+
'variableAggregationNodeState',
256+
'httpNodeState',
257+
'fileExtractionNodeState',
258+
'textToImageNodeState',
259+
'noteNode',
260+
'loopNodeState',
261+
'intelligentFormNodeState'];
262+
nodeTypes.forEach((type, index) => {
263+
window.agent.createNodeByPosition(
264+
type,
265+
{x: 100 + index * 200, y: 100},
266+
{uniqueName: ''},
267+
);
268+
});
269+
}}>创建每一种节点</Button>
244270
</div>
245271
<div id='stage' style={{position: 'relative', width: 1600, height: 800}}></div>
246272
<CodeDrawer container={document.getElementById('stage')}

framework/elsa/fit-elsa-react/src/components/DefaultRoot.jsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const DataContext = createContext(null);
1818
const ShapeContext = createContext(null);
1919
const DispatchContext = createContext(null);
2020
const FormContext = createContext(null);
21+
const ConfigContext = createContext(null);
2122

2223
/**
2324
* 默认根节点,作为其他所有组件的容器.
@@ -133,12 +134,14 @@ export const DefaultRoot = forwardRef(function (
133134
<FormContext.Provider value={form}>
134135
<ShapeContext.Provider value={shape}>
135136
<DataContext.Provider value={data}>
136-
<div
137-
className="react-node-content"
138-
style={{borderRadius: `${shape.borderRadius}px`}}
139-
>
140-
{component.getReactComponents(shapeStatus, data, false)}
141-
</div>
137+
<ConfigContext.Provider value={false}>
138+
<div
139+
className="react-node-content"
140+
style={{borderRadius: `${shape.borderRadius}px`}}
141+
>
142+
{component.getReactComponents(shapeStatus, data)}
143+
</div>
144+
</ConfigContext.Provider>
142145
</DataContext.Provider>
143146
</ShapeContext.Provider>
144147
</FormContext.Provider>
@@ -168,9 +171,11 @@ export const DefaultRoot = forwardRef(function (
168171
<FormContext.Provider value={form}>
169172
<ShapeContext.Provider value={shape}>
170173
<DataContext.Provider value={data}>
171-
<div className="react-node-content">
172-
{component.getReactComponents(shapeStatus, data, true)}
173-
</div>
174+
<ConfigContext.Provider value={true}>
175+
<div className="react-node-content">
176+
{component.getReactComponents(shapeStatus, data)}
177+
</div>
178+
</ConfigContext.Provider>
174179
</DataContext.Provider>
175180
</ShapeContext.Provider>
176181
</FormContext.Provider>
@@ -205,3 +210,7 @@ export function useDispatch() {
205210
export function useFormContext() {
206211
return useContext(FormContext);
207212
}
213+
214+
export function useConfigContext() {
215+
return useContext(ConfigContext);
216+
}

framework/elsa/fit-elsa-react/src/components/code/CodePanel.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ function _CodePanel({disabled, input, dispatch}) {
100100
};
101101

102102
return (<>
103-
<Collapse bordered={false} className="jade-custom-collapse" defaultActiveKey={["codeOutputPanel"]}>
103+
<JadeCollapse defaultActiveKey={["codeOutputPanel"]}>
104104
{<Panel key={"codeOutputPanel"}
105105
header={<Header handleEditClick={handleEditClick} disabled={disabled}/>}
106106
className="jade-panel"
@@ -129,7 +129,7 @@ function _CodePanel({disabled, input, dispatch}) {
129129
onConfirm={(v) => editCode(v)}
130130
executeFunc={executeFunc}/>
131131
</Panel>}
132-
</Collapse>
132+
</JadeCollapse>
133133
</>);
134134
}
135135

framework/elsa/fit-elsa-react/src/components/common/AiPromptPanel.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {PromptDrawer} from '../common/prompt/PromptDrawer.jsx';
1717
import AiPromptIcon from '../asserts/icon-ai-prompt.svg?react';
1818
import FullScreenIcon from '../asserts/icon-full-screen.svg?react';
1919
import {DEFAULT_AP_PROMPT_MODEL_CONFIG} from '@/common/Consts.js';
20+
import {JadeCollapse} from '@/components/common/JadeCollapse.jsx';
2021

2122
const {Panel} = Collapse;
2223

@@ -76,8 +77,7 @@ const _AiPromptPanel = ({disabled, prompt, name, popoverContent = null, header,
7677
};
7778

7879
return (<>
79-
<Collapse bordered={false} className='jade-custom-collapse'
80-
defaultActiveKey={[`AiPromptPanel-${shapeId}`]}>
80+
<JadeCollapse defaultActiveKey={[`AiPromptPanel-${shapeId}`]}>
8181
{<Panel
8282
key={`AiPromptPanel-${shapeId}`}
8383
header={<AiPromptPanelHeader
@@ -116,7 +116,7 @@ const _AiPromptPanel = ({disabled, prompt, name, popoverContent = null, header,
116116
onAIGenerate={triggerAIGenerateEvent}/>
117117
</div>
118118
</Panel>}
119-
</Collapse>
119+
</JadeCollapse>
120120
</>);
121121
};
122122

framework/elsa/fit-elsa-react/src/components/common/InvokeOutput.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import PropTypes from 'prop-types';
1212
import ArrayUtil from '@/components/util/ArrayUtil.js';
1313
import {useTranslation} from 'react-i18next';
1414
import {JadeTree} from '@/components/common/JadeTree.jsx';
15+
import {JadeCollapse} from '@/components/common/JadeCollapse.jsx';
1516

1617
const {Panel} = Collapse;
1718

@@ -60,8 +61,7 @@ function _InvokeOutput({outputData, getDescription = getContent, isObservableTre
6061
const content = getDescription(outputData, t);
6162

6263
return (<>
63-
<Collapse bordered={false} className='jade-custom-collapse'
64-
defaultActiveKey={['InvokeOutput']}>
64+
<JadeCollapse defaultActiveKey={['InvokeOutput']}>
6565
<Panel
6666
className='jade-panel'
6767
header={<div style={{display: 'flex', alignItems: 'center'}}>
@@ -81,7 +81,7 @@ function _InvokeOutput({outputData, getDescription = getContent, isObservableTre
8181
{isObservableTree ? <JadeObservableTree data={outputData}/> : <JadeTree data={outputData}/>}
8282
</div>
8383
</Panel>
84-
</Collapse>
84+
</JadeCollapse>
8585
</>);
8686
}
8787

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) 2025 Huawei Technologies Co., Ltd. All rights reserved.
3+
* This file is a part of the ModelEngine Project.
4+
* Licensed under the MIT License. See License.txt in the project root for license information.
5+
*--------------------------------------------------------------------------------------------*/
6+
7+
import {Collapse} from 'antd';
8+
import React from 'react';
9+
import {useConfigContext} from '@/components/DefaultRoot.jsx';
10+
import PropTypes from 'prop-types';
11+
12+
/**
13+
* JadeCollapse组件,该组件会根据Config的值来判断是否需要默认展开。
14+
*
15+
* @param defaultActiveKey 默认展开的Collapse名称。
16+
* @param bordered 是否显示边框。
17+
* @param className 类名。
18+
* @param props 参数。
19+
* @return {JSX.Element} Jade折叠组件。
20+
* @constructor
21+
*/
22+
export const JadeCollapse = ({ defaultActiveKey = [], bordered = false, className = '', ...props }) => {
23+
const isConfig = useConfigContext();
24+
const activeKey = isConfig ? defaultActiveKey : [];
25+
26+
return (
27+
<Collapse
28+
bordered={bordered}
29+
className={`jade-custom-collapse ${className}`}
30+
defaultActiveKey={activeKey}
31+
{...props}
32+
/>
33+
);
34+
};
35+
36+
JadeCollapse.propTypes = {
37+
defaultActiveKey: PropTypes.array,
38+
bordered: PropTypes.bool,
39+
className: PropTypes.string,
40+
};

0 commit comments

Comments
 (0)