export function useTaskDefinition()

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
  }
}