Skip to content

Commit 3defb6d

Browse files
authored
Merge pull request #54 from codingapi/dev
Dev
2 parents 83bd9e7 + a674b22 commit 3defb6d

34 files changed

Lines changed: 355 additions & 192 deletions
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { useContext } from 'react';
2+
3+
import { NodeRenderContext } from '../context';
4+
5+
export function useNodeRenderContext() {
6+
return useContext(NodeRenderContext);
7+
}

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/action/table.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import React, {useContext} from "react";
1+
import React from "react";
22
import {Space, Switch} from "antd";
33
import {Table} from "@flow-engine/flow-pc-ui";
4-
import {NodeRenderContext} from "@/components/design-editor/context";
54
import {ActionManager} from "@/components/design-editor/node-components/action/index";
5+
import {useNodeRenderContext} from "@/components/design-editor/hooks/use-node-render-context";
66

77
interface ActionTableProps {
88
value: any[];
99
onChange: (data: any[]) => void;
1010
}
1111

1212
export const ActionTable: React.FC<ActionTableProps> = (props) => {
13-
const {node} = useContext(NodeRenderContext);
13+
const {node} = useNodeRenderContext();
1414
const actions = node.getNodeRegistry()?.meta.actions || [];
1515
const actionManager = new ActionManager(props.value,props.onChange);
1616
const datasource = actionManager.getDatasource(actions);

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/current-operator/index.tsx

Lines changed: 0 additions & 13 deletions
This file was deleted.

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/header/index.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
import React, {useCallback, useContext, useMemo, useState} from "react";
1+
import React, {useCallback, useMemo, useState} from "react";
22
import {useIsSidebar} from "@/components/design-editor/hooks";
33
import {Button, Flex, Input, Space, theme} from "antd";
44
import {nodeFormPanelFactory} from "@/components/design-editor/components/sidebar";
55
import {usePanelManager} from "@flowgram.ai/panel-manager-plugin";
6-
import {NodeRenderContext} from "@/components/design-editor/context";
76
import {Field, FieldRenderProps} from "@flowgram.ai/fixed-layout-editor";
87
import {CloseOutlined, EditOutlined} from "@ant-design/icons";
98
import {NodeIcon} from "@/components/design-editor/components/node-icon";
109
import {NodeType} from "@/components/design-editor/typings/node-type";
1110
import {FlowNodeRegistry} from "@/components/design-editor/typings";
11+
import {useNodeRenderContext} from "@/components/design-editor/hooks/use-node-render-context";
1212

1313
interface HeaderTitleProps {
1414
title: string;
1515
onChange: (value: string) => void;
1616
readonly?: boolean;
1717
}
1818

19-
const HeaderTitle: React.FC<HeaderTitleProps> = ({ title, onChange, readonly }) => {
20-
const { token } = theme.useToken();
19+
const HeaderTitle: React.FC<HeaderTitleProps> = ({title, onChange, readonly}) => {
20+
const {token} = theme.useToken();
2121
const [editTitle, setEditTitle] = useState(false);
2222
const isSidebar = useIsSidebar();
23-
const { node } = useContext(NodeRenderContext);
23+
const {node} = useNodeRenderContext();
2424

2525
const registry = node.getNodeRegistry<FlowNodeRegistry>();
2626
const editTitleDisabled = useMemo(() => {
27-
const { meta } = registry;
27+
const {meta} = registry;
2828
return meta?.editTitleDisable ?? false;
2929
}, [registry, node]);
3030

@@ -44,9 +44,9 @@ const HeaderTitle: React.FC<HeaderTitleProps> = ({ title, onChange, readonly })
4444
<Input
4545
autoFocus
4646
size="small"
47-
style={{ width: 200 }}
47+
style={{width: 200}}
4848
defaultValue={title}
49-
onChange={(e)=>{
49+
onChange={(e) => {
5050
handleChange(e.target.value);
5151
}}
5252
onBlur={() => setEditTitle(false)}
@@ -62,23 +62,23 @@ const HeaderTitle: React.FC<HeaderTitleProps> = ({ title, onChange, readonly })
6262
<Space>
6363
<span>{title}</span>
6464
<EditOutlined
65-
style={{ color: token.colorPrimary, cursor: "pointer" }}
65+
style={{color: token.colorPrimary, cursor: "pointer"}}
6666
onClick={() => setEditTitle(true)}
6767
/>
6868
</Space>
6969
);
7070
};
7171

72-
interface NodeHeaderProps{
72+
interface NodeHeaderProps {
7373
style?: React.CSSProperties;
7474
iconEnable?: boolean;
7575
}
7676

7777
export const NodeHeader: React.FC<NodeHeaderProps> = (props) => {
78-
const { node } = useContext(NodeRenderContext);
78+
const {node} = useNodeRenderContext();
7979
const isSidebar = useIsSidebar();
8080
const panelManager = usePanelManager();
81-
const { token } = theme.useToken();
81+
const {token} = theme.useToken();
8282
const iconEnable = props.iconEnable ?? true;
8383

8484
const nodeType = node.getNodeRegistry<FlowNodeRegistry>().type as NodeType;
@@ -103,9 +103,9 @@ export const NodeHeader: React.FC<NodeHeaderProps> = (props) => {
103103
align="center"
104104
>
105105
<Space>
106-
{iconEnable && <NodeIcon type={nodeType} />}
106+
{iconEnable && <NodeIcon type={nodeType}/>}
107107
<Field name="title">
108-
{({ field: { value, onChange } }: FieldRenderProps<string>) => (
108+
{({field: {value, onChange}}: FieldRenderProps<string>) => (
109109
<HeaderTitle
110110
title={value}
111111
onChange={onChange}
@@ -117,7 +117,7 @@ export const NodeHeader: React.FC<NodeHeaderProps> = (props) => {
117117
{isSidebar && (
118118
<Button
119119
type="text"
120-
icon={<CloseOutlined style={{ color: token.colorPrimary }} />}
120+
icon={<CloseOutlined style={{color: token.colorPrimary}}/>}
121121
onClick={handleClose}
122122
/>
123123
)}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import React from "react";
2+
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
3+
import {Field, FieldRenderProps} from "@flowgram.ai/fixed-layout-editor";
4+
5+
interface NodeHintProps{
6+
fieldName:string;
7+
}
8+
9+
export const NodeHint:React.FC<NodeHintProps> = (props) => {
10+
return (
11+
<span>
12+
<Field
13+
name={props.fieldName}
14+
render={({ field: { value, onChange } }: FieldRenderProps<any>) => (
15+
<>
16+
{GroovyScriptConvertorUtil.getScriptTitle(value)}
17+
</>
18+
)}
19+
/>
20+
</span>
21+
)
22+
}

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/panel/index.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React, {useCallback, useContext, useMemo, useState} from "react";
1+
import React, {useCallback, useMemo, useState} from "react";
22
import {Flex, theme} from "antd";
33
import {CloseCircleOutlined} from "@ant-design/icons";
4-
import {NodeFormContext, NodeRenderContext} from "@/components/design-editor/context";
4+
import {NodeFormContext} from "@/components/design-editor/context";
55
import {FlowNodeJSON, FlowNodeRegistry} from "@/components/design-editor/typings";
66
import {FormRenderProps, useClientContext} from "@flowgram.ai/fixed-layout-editor";
77
import {useIsSidebar} from "@/components/design-editor/hooks";
8+
import {useNodeRenderContext} from "@/components/design-editor/hooks/use-node-render-context";
89

910
interface NodePanelProps {
1011
children?: React.ReactNode;
@@ -24,7 +25,7 @@ export const NodePanel: React.FC<NodePanelProps> = (props) => {
2425

2526
export const $NodePanel: React.FC<NodePanelProps> = (props) => {
2627
const [isHovered, setIsHovered] = useState(false);
27-
const {node, deleteNode} = useContext(NodeRenderContext);
28+
const {node, deleteNode} = useNodeRenderContext();
2829
const clientContext = useClientContext();
2930
const registry = node.getNodeRegistry<FlowNodeRegistry>();
3031
const isSidebar = useIsSidebar();

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/nodes/approval/form-meta.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {TimeoutStrategy} from "@/components/design-editor/node-components/strate
1818
import {RecordMergeStrategy} from "@/components/design-editor/node-components/strategy/record-merge";
1919
import {RevokeStrategy} from "@/components/design-editor/node-components/strategy/revoke";
2020
import {View} from "@/components/design-editor/node-components/view";
21-
import {CurrentNodeOperator} from "@/components/design-editor/node-components/current-operator";
21+
import {NodeHint} from "@/components/design-editor/node-components/node-hint";
2222

2323

2424
export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
@@ -46,7 +46,7 @@ export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
4646
return (
4747
<NodePanel data={data}>
4848
<NodeHeader/>
49-
<CurrentNodeOperator/>
49+
<NodeHint fieldName={"OperatorLoadStrategy.script"}/>
5050
</NodePanel>
5151
);
5252
};

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/nodes/condition-branch/form-meta.tsx

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,35 @@ import {useIsSidebar} from '../../hooks';
66
import {NodeHeader} from "@/components/design-editor/node-components/header";
77
import {NodePanel} from "@/components/design-editor/node-components/panel";
88
import {ConditionScript} from "@/components/design-editor/node-components/condition";
9-
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
9+
import React from "react";
10+
import {NodeHint} from "@/components/design-editor/node-components/node-hint";
1011

1112
export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
12-
const isSidebar = useIsSidebar();
13-
const script = data.form.getValueIn('script');
14-
if (isSidebar) {
13+
const isSidebar = useIsSidebar();
14+
if (isSidebar) {
15+
return (
16+
<NodePanel data={data}>
17+
<NodeHeader/>
18+
<ConditionScript/>
19+
</NodePanel>
20+
);
21+
}
1522
return (
16-
<NodePanel data={data}>
17-
<NodeHeader/>
18-
<ConditionScript/>
19-
</NodePanel>
23+
<NodePanel data={data}>
24+
<NodeHeader/>
25+
<NodeHint fieldName={"script"}/>
26+
</NodePanel>
2027
);
21-
}
22-
return (
23-
<NodePanel data={data}>
24-
<NodeHeader/>
25-
{GroovyScriptConvertorUtil.getScriptTitle(script)}
26-
</NodePanel>
27-
);
2828
};
2929

3030
export const formMeta: FormMeta<FlowNodeJSON['data']> = {
31-
render: renderForm,
32-
validateTrigger: ValidateTrigger.onChange,
33-
validate: {
34-
title: ({ value }: { value: string }) => (value ? undefined : 'Title is required'),
35-
},
36-
effect: {
37-
title: syncVariableTitle,
38-
outputs: provideJsonSchemaOutputs,
39-
},
31+
render: renderForm,
32+
validateTrigger: ValidateTrigger.onChange,
33+
validate: {
34+
title: ({value}: { value: string }) => (value ? undefined : 'Title is required'),
35+
},
36+
effect: {
37+
title: syncVariableTitle,
38+
outputs: provideJsonSchemaOutputs,
39+
},
4040
};

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/nodes/handle/form-meta.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import {RecordMergeStrategy} from "@/components/design-editor/node-components/st
1616
import {ResubmitStrategy} from "@/components/design-editor/node-components/strategy/resubmit";
1717
import {AdviceStrategy} from "@/components/design-editor/node-components/strategy/advice";
1818
import {View} from "@/components/design-editor/node-components/view";
19-
import {CurrentNodeOperator} from "@/components/design-editor/node-components/current-operator";
2019
import React from "react";
20+
import {NodeHint} from "@/components/design-editor/node-components/node-hint";
2121

2222
export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
2323
const isSidebar = useIsSidebar();
@@ -43,7 +43,7 @@ export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
4343
return (
4444
<NodePanel data={data}>
4545
<NodeHeader/>
46-
<CurrentNodeOperator/>
46+
<NodeHint fieldName={"OperatorLoadStrategy.script"}/>
4747
</NodePanel>
4848
);
4949
};

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/nodes/inclusive-branch/form-meta.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import {useIsSidebar} from '../../hooks';
66
import {NodeHeader} from "@/components/design-editor/node-components/header";
77
import {NodePanel} from "@/components/design-editor/node-components/panel";
88
import {ConditionScript} from "@/components/design-editor/node-components/condition";
9-
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
9+
import React from "react";
10+
import {NodeHint} from "@/components/design-editor/node-components/node-hint";
1011

1112
export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
1213
const isSidebar = useIsSidebar();
13-
const script = data.form.getValueIn('script');
1414
if (isSidebar) {
1515
return (
1616
<NodePanel data={data}>
@@ -22,7 +22,7 @@ export const renderForm = (data: FormRenderProps<FlowNodeJSON['data']>) => {
2222
return (
2323
<NodePanel data={data}>
2424
<NodeHeader/>
25-
{GroovyScriptConvertorUtil.getScriptTitle(script)}
25+
<NodeHint fieldName={"script"}/>
2626
</NodePanel>
2727
);
2828
};

0 commit comments

Comments
 (0)