workflow底层UI库整合至项目,优化构建逻辑
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import {genShortId} from './IdGen';
|
||||
import {useSvelteFlow} from '@xyflow/svelte';
|
||||
import type {Parameter} from '#types';
|
||||
|
||||
export const fillParameterId = (parameters?: Parameter[]) => {
|
||||
if (!parameters || parameters.length == 0) {
|
||||
return parameters;
|
||||
}
|
||||
parameters.forEach((parameter) => {
|
||||
if (!parameter.id) {
|
||||
parameter.id = genShortId();
|
||||
}
|
||||
fillParameterId(parameter.children);
|
||||
});
|
||||
|
||||
return parameters;
|
||||
};
|
||||
|
||||
export const useAddParameter = () => {
|
||||
const { updateNodeData } = useSvelteFlow();
|
||||
return {
|
||||
addParameter: (
|
||||
nodeId: string,
|
||||
dataKey: string = 'parameters',
|
||||
parameter?: Parameter | Parameter[]
|
||||
) => {
|
||||
if (Array.isArray(parameter)) {
|
||||
parameter.forEach((p) => fillParameterId(p?.children));
|
||||
} else {
|
||||
fillParameterId(parameter?.children);
|
||||
}
|
||||
|
||||
function createNewParameter(parameter: Parameter) {
|
||||
return {
|
||||
name: '',
|
||||
dataType: 'String',
|
||||
refType: 'ref',
|
||||
...parameter,
|
||||
id: genShortId()
|
||||
};
|
||||
}
|
||||
|
||||
const newParameters: Parameter[] = [];
|
||||
if (Array.isArray(parameter)) {
|
||||
newParameters.push(...parameter.map(createNewParameter));
|
||||
} else {
|
||||
newParameters.push(createNewParameter(parameter as Parameter));
|
||||
}
|
||||
|
||||
updateNodeData(nodeId, (node) => {
|
||||
let parameters = node.data[dataKey] as Array<any>;
|
||||
if (parameters) {
|
||||
parameters.push(...newParameters);
|
||||
} else {
|
||||
parameters = [...newParameters];
|
||||
}
|
||||
return {
|
||||
[dataKey]: [...parameters]
|
||||
};
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user