Co-authored-by: sealday <sealday@gmail.com> Reviewed-on: daoyoucloud/tachybase#887
54 lines
1.2 KiB
TypeScript
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}`;
|
|
}
|