fix(plugin-workflow): fix variable api caller in loop (#1877)

This commit is contained in:
Junyi 2023-05-17 16:29:18 +07:00 committed by GitHub
parent 7b3e16ce63
commit c988c3705a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 13 deletions

View File

@ -28,7 +28,7 @@ function AssociatedConfig({ value, onChange, ...props }): JSX.Element {
const { getCollection } = useCollectionManager(); const { getCollection } = useCollectionManager();
const current = useNodeContext(); const current = useNodeContext();
const options = [nodesOptions, triggerOptions].map((item) => { const options = [nodesOptions, triggerOptions].map((item) => {
const children = item.useOptions(current, { types: [matchToManyField] })?.filter(Boolean); const children = item.useOptions({ types: [matchToManyField] })?.filter(Boolean);
return { return {
label: compile(item.label), label: compile(item.label),
value: item.value, value: item.value,

View File

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

View File

@ -49,7 +49,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): React.ReactNode; render?(props): JSX.Element;
endding?: boolean; endding?: boolean;
useVariables?(node, options?): VariableOptions; useVariables?(node, options?): VariableOptions;
useScopeVariables?(node, options?): VariableOptions; useScopeVariables?(node, options?): VariableOptions;

View File

@ -116,7 +116,7 @@ export default {
useWorkflowVariableOptions, useWorkflowVariableOptions,
}, },
components: {}, components: {},
useScopeVariables(node, types) { useScopeVariables(node, options) {
const compile = useCompile(); const compile = useCompile();
const { target } = node.config; const { target } = node.config;
if (!target) { if (!target) {
@ -137,8 +137,8 @@ export default {
.split('.') .split('.')
.map((path) => path.trim()); .map((path) => path.trim());
const options = [nodesOptions, triggerOptions].map((item: any) => { const targetOptions = [nodesOptions, triggerOptions].map((item: any) => {
const opts = typeof item.useOptions === 'function' ? item.useOptions(node, { types }).filter(Boolean) : null; const opts = typeof item.useOptions === 'function' ? item.useOptions(options).filter(Boolean) : null;
return { return {
label: compile(item.title), label: compile(item.title),
value: item.value, value: item.value,
@ -148,7 +148,7 @@ export default {
}; };
}); });
targetOption.children = findOption(options, paths); targetOption.children = findOption(targetOptions, paths);
} }
return [ return [

View File

@ -16,7 +16,8 @@ export type VariableOptions = VariableOption[] | null;
export const nodesOptions = { export const nodesOptions = {
label: `{{t("Node result", { ns: "${NAMESPACE}" })}}`, label: `{{t("Node result", { ns: "${NAMESPACE}" })}}`,
value: '$jobsMapByNodeId', value: '$jobsMapByNodeId',
useOptions(current, options) { useOptions(options) {
const current = useNodeContext();
const upstreams = useAvailableUpstreams(current); const upstreams = useAvailableUpstreams(current);
const result: VariableOption[] = []; const result: VariableOption[] = [];
upstreams.forEach((node) => { upstreams.forEach((node) => {
@ -38,7 +39,7 @@ export const nodesOptions = {
export const triggerOptions = { export const triggerOptions = {
label: `{{t("Trigger variables", { ns: "${NAMESPACE}" })}}`, label: `{{t("Trigger variables", { ns: "${NAMESPACE}" })}}`,
value: '$context', value: '$context',
useOptions(current, options) { useOptions(options) {
const { workflow } = useFlowContext(); const { workflow } = useFlowContext();
const trigger = triggers.get(workflow.type); const trigger = triggers.get(workflow.type);
return trigger?.useVariables?.(workflow.config, options) ?? null; return trigger?.useVariables?.(workflow.config, options) ?? null;
@ -48,7 +49,8 @@ export const triggerOptions = {
export const scopeOptions = { export const scopeOptions = {
label: `{{t("Scope variables", { ns: "${NAMESPACE}" })}}`, label: `{{t("Scope variables", { ns: "${NAMESPACE}" })}}`,
value: '$scopes', value: '$scopes',
useOptions(current, options) { useOptions(options) {
const current = useNodeContext();
const scopes = useUpstreamScopes(current); const scopes = useUpstreamScopes(current);
const result: VariableOption[] = []; const result: VariableOption[] = [];
scopes.forEach((node) => { scopes.forEach((node) => {
@ -70,7 +72,7 @@ export const scopeOptions = {
export const systemOptions = { export const systemOptions = {
label: `{{t("System variables", { ns: "${NAMESPACE}" })}}`, label: `{{t("System variables", { ns: "${NAMESPACE}" })}}`,
value: '$system', value: '$system',
useOptions(current, { types }) { useOptions({ types }) {
return [ return [
...(!types || types.includes('date') ...(!types || types.includes('date')
? [ ? [
@ -158,9 +160,8 @@ export function filterTypedFields(fields, types, depth = 1) {
export function useWorkflowVariableOptions(options = {}) { export function useWorkflowVariableOptions(options = {}) {
const compile = useCompile(); const compile = useCompile();
const current = useNodeContext();
const result = [scopeOptions, nodesOptions, triggerOptions, systemOptions].map((item: any) => { const result = [scopeOptions, nodesOptions, triggerOptions, systemOptions].map((item: any) => {
const opts = typeof item.useOptions === 'function' ? item.useOptions(current, options).filter(Boolean) : null; const opts = typeof item.useOptions === 'function' ? item.useOptions(options).filter(Boolean) : null;
return { return {
label: compile(item.label), label: compile(item.label),
value: item.value, value: item.value,