tachybase_todo/packages/plugins/@tachybase/plugin-workflow/src/client/utils.ts
2024-04-29 21:41:13 +08:00

54 lines
1.2 KiB
TypeScript

export function linkNodes(nodes): void {
const nodesMap = new Map();
nodes.forEach((item) => nodesMap.set(item.id, item));
for (const node of nodesMap.values()) {
if (node.upstreamId) {
node.upstream = nodesMap.get(node.upstreamId);
}
if (node.downstreamId) {
node.downstream = nodesMap.get(node.downstreamId);
}
}
}
export function isValidFilter(condition) {
const group = condition.$and || condition.$or;
if (!group) {
return false;
}
return group.some((item) => {
if (item.$and || item.$or) {
return isValidFilter(item);
}
const [name] = Object.keys(item);
if (!name || !item[name]) {
return false;
}
const [op] = Object.keys(item[name]);
if (!op || typeof item[name][op] === 'undefined') {
return false;
}
return true;
});
}
export function traverseSchema(schema, fn) {
fn(schema);
if (schema.properties) {
Object.keys(schema.properties).forEach((key) => {
traverseSchema(schema.properties[key], fn);
});
}
}
export function getWorkflowDetailPath(id: string | number) {
return `/admin/workflow/workflows/${id}`;
}
export function getWorkflowExecutionsPath(id: string | number) {
return `/admin/workflow/executions/${id}`;
}