in seatunnel-ui/src/views/task/synchronization-instance/detail/use-task-definition.ts [29:97]
export function useTaskDefinition(t: any) {
const route = useRoute()
const getJobConfig = async () => {
return await getDefinitionConfig(route.params.taskCode as string)
}
const getJobDag = async (graph: Graph) => {
const dagData = await querySyncTaskInstanceDag({
jobInstanceId: route.query.jobInstanceId
})
const pipelineData = await querySyncTaskInstanceDetail({
jobInstanceId: route.query.jobInstanceId
})
if (Object.keys(dagData).length < 1 || pipelineData.length < 1) {
return false
}
const obj: any = {
nodes: {},
edges: []
}
// 给每一个节点分配一个唯一id
for (const i in dagData.vertexInfoMap) {
dagData.vertexInfoMap[i]['id'] = uuid(String(new Date().getTime()))
}
// 通过pipeline中的inputVertexId和targetVertexId查询vertexInfoMap中的节点id
for (const i in dagData.pipelineEdges) {
dagData.pipelineEdges[i].forEach((l: any) => {
obj.edges.push({
id: uuid(String(new Date().getTime())),
source: dagData.vertexInfoMap[l.inputVertexId].id,
target: dagData.vertexInfoMap[l.targetVertexId].id
})
})
}
// 用pipelineData进行分组整合数据
pipelineData.forEach((p: any) => {
const nodes = dagData.pipelineEdges[p.pipelineId]
.map((p: any) => [p.inputVertexId, p.targetVertexId])
.flat(2)
obj.nodes['group-' + p.pipelineId] = {
...p,
child: nodes.map((n: any) => {
return {
id: dagData.vertexInfoMap[n].id,
label: dagData.vertexInfoMap[n].connectorType,
nodeType: dagData.vertexInfoMap[n].type,
vertexId: dagData.vertexInfoMap[n].vertexId
}
})
}
})
useDagAddShape(graph, obj.nodes, obj.edges, t)
useDagLayout(graph)
}
return {
getJobConfig,
getJobDag
}
}