- 收敛 easyflow-ui-admin 的 lint、格式和类型问题 - 修正 demo 页面与管理端前端构建失败点 - 验证 pnpm lint 与 pnpm build 均已通过
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
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],
|
|
};
|
|
});
|
|
},
|
|
};
|
|
};
|