refactor(plugin-workflow): change node config api render to component (#2014)

* refactor(plugin-workflow): change node config api render to component

* fix(plugin-workflow): fix trigger drawer error and remove unused api

* fix(plugin-workflow): fix return value of request node run phase

* fix(client): fix classname order in action button
This commit is contained in:
Junyi 2023-06-09 11:09:22 +07:00 committed by GitHub
parent b7cb9a45c2
commit 9a376e4116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 11 additions and 12 deletions

View File

@ -140,7 +140,7 @@ export const Action: ComposedAction = observer(
} }
}} }}
component={tarComponent || Button} component={tarComponent || Button}
className={classnames(className, actionDesignerCss)} className={classnames(actionDesignerCss, className)}
> >
{title || compile(fieldSchema.title)} {title || compile(fieldSchema.title)}
<Designer {...designerProps} /> <Designer {...designerProps} />

View File

@ -413,7 +413,7 @@ export default {
value: { rejectOnFalse: false }, value: { rejectOnFalse: false },
}, },
], ],
render: function Renderer(data) { component: function Component({ data }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { nodes } = useFlowContext(); const { nodes } = useFlowContext();
const { const {

View File

@ -51,7 +51,7 @@ export interface Instruction {
view?: ISchema; view?: ISchema;
scope?: { [key: string]: any }; scope?: { [key: string]: any };
components?: { [key: string]: any }; components?: { [key: string]: any };
render?(props): JSX.Element; component?(props): JSX.Element;
endding?: boolean; endding?: boolean;
useVariables?(node, options?): VariableOptions; useVariables?(node, options?): VariableOptions;
useScopeVariables?(node, options?): VariableOptions; useScopeVariables?(node, options?): VariableOptions;
@ -137,13 +137,13 @@ export function useUpstreamScopes(node) {
} }
export function Node({ data }) { export function Node({ data }) {
const instruction = instructions.get(data.type); const { component: Component = NodeDefaultView, endding } = instructions.get(data.type);
return ( return (
<NodeContext.Provider value={data}> <NodeContext.Provider value={data}>
<div className={cx(nodeBlockClass)}> <div className={cx(nodeBlockClass)}>
{instruction.render ? instruction.render(data) : <NodeDefaultView data={data} />} <Component data={data} />
{!instruction.endding ? ( {!endding ? (
<AddButton upstream={data} /> <AddButton upstream={data} />
) : ( ) : (
<div <div

View File

@ -47,7 +47,7 @@ export default {
}, },
}, },
view: {}, view: {},
render: function Renderer(data) { component: function Component({ data }) {
const { nodes } = useFlowContext(); const { nodes } = useFlowContext();
const entry = nodes.find((node) => node.upstreamId === data.id && node.branchIndex != null); const entry = nodes.find((node) => node.upstreamId === data.id && node.branchIndex != null);

View File

@ -44,7 +44,7 @@ export default {
}, },
}, },
view: {}, view: {},
render(data) { component: function Component({ data }) {
const { const {
id, id,
config: { mode }, config: { mode },

View File

@ -58,7 +58,6 @@ export interface Trigger {
view?: ISchema; view?: ISchema;
scope?: { [key: string]: any }; scope?: { [key: string]: any };
components?: { [key: string]: any }; components?: { [key: string]: any };
render?(props): React.ReactNode;
useInitializers?(config): SchemaInitializerItemOptions | null; useInitializers?(config): SchemaInitializerItemOptions | null;
initializers?: any; initializers?: any;
} }
@ -86,7 +85,7 @@ function TriggerExecution() {
'x-component-props': { 'x-component-props': {
title: <InfoOutlined />, title: <InfoOutlined />,
shape: 'circle', shape: 'circle',
className: cx(nodeJobButtonClass, 'workflow-node-job-button'), className: nodeJobButtonClass,
type: 'primary', type: 'primary',
}, },
properties: { properties: {
@ -178,7 +177,7 @@ export const TriggerConfig = () => {
} }
const whiteSet = new Set(['workflow-node-meta', 'workflow-node-config-button', 'ant-input-disabled']); const whiteSet = new Set(['workflow-node-meta', 'workflow-node-config-button', 'ant-input-disabled']);
for (let el = ev.target; el && el !== ev.currentTarget; el = el.parentNode) { for (let el = ev.target; el && el !== ev.currentTarget; el = el.parentNode) {
if ((Array.from(el.classList) as string[]).some((name: string) => whiteSet.has(name))) { if ((Array.from(el.classList ?? []) as string[]).some((name: string) => whiteSet.has(name))) {
setEditingConfig(true); setEditingConfig(true);
ev.stopPropagation(); ev.stopPropagation();
return; return;

View File

@ -73,7 +73,7 @@ export default class implements Instruction {
this.plugin.app.logger.info(`[Workflow] request (#${node.id}) sent to "${config.url}", waiting for response...`); this.plugin.app.logger.info(`[Workflow] request (#${node.id}) sent to "${config.url}", waiting for response...`);
return job; return null;
} }
async resume(node: FlowNodeModel, job, processor: Processor) { async resume(node: FlowNodeModel, job, processor: Processor) {