Files
EasyFlow/easyflow-ui-admin/packages/tinyflow-ui/src/components/utils/useAddParameter.svelte.ts
陈子默 7e7c236c2a fix: 修复管理端前端 lint 与构建问题
- 收敛 easyflow-ui-admin 的 lint、格式和类型问题

- 修正 demo 页面与管理端前端构建失败点

- 验证 pnpm lint 与 pnpm build 均已通过
2026-04-05 21:39:13 +08:00

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],
};
});
},
};
};