Browse Source

[Fix] [UI Next][V1.0.0-Alpha]: Fix the dag map display uncorrect after changing the pre tasks. (#8895)

3.0.0/version-upgrade
Amy0104 3 years ago committed by GitHub
parent
commit
8bcbe2a1f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/use-cell-update.ts
  2. 34
      dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/use-task-edit.ts

17
dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/use-cell-update.ts

@ -34,7 +34,7 @@ interface Options {
export function useCellUpdate(options: Options) { export function useCellUpdate(options: Options) {
const { graph } = options const { graph } = options
const { buildNode } = useCustomCellBuilder() const { buildNode, buildEdge } = useCustomCellBuilder()
/** /**
* Set node name by id * Set node name by id
@ -70,8 +70,23 @@ export function useCellUpdate(options: Options) {
graph.value?.addNode(node) graph.value?.addNode(node)
} }
const setNodeEdge = (id: string, preTaskCode: number[]) => {
const node = graph.value?.getCellById(id)
if (!node) return
const edges = graph.value?.getConnectedEdges(node)
if (edges?.length) {
edges.forEach((edge) => {
graph.value?.removeEdge(edge)
})
}
preTaskCode.forEach((task) => {
graph.value?.addEdge(buildEdge(String(task), id))
})
}
return { return {
setNodeName, setNodeName,
setNodeEdge,
addNode addNode
} }
} }

34
dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/use-task-edit.ts

@ -16,13 +16,13 @@
*/ */
import { ref, onMounted, watch } from 'vue' import { ref, onMounted, watch } from 'vue'
import type { Ref } from 'vue' import { remove } from 'lodash'
import type { Graph } from '@antv/x6'
import type { Coordinate, NodeData } from './types'
import { TaskType } from '@/views/projects/task/constants/task-type' import { TaskType } from '@/views/projects/task/constants/task-type'
import { formatParams } from '@/views/projects/task/components/node/format-data' import { formatParams } from '@/views/projects/task/components/node/format-data'
import { useCellUpdate } from './dag-hooks' import { useCellUpdate } from './dag-hooks'
import { WorkflowDefinition } from './types' import type { Ref } from 'vue'
import type { Graph } from '@antv/x6'
import type { Coordinate, NodeData, WorkflowDefinition } from './types'
interface Options { interface Options {
graph: Ref<Graph | undefined> graph: Ref<Graph | undefined>
@ -36,8 +36,7 @@ interface Options {
*/ */
export function useTaskEdit(options: Options) { export function useTaskEdit(options: Options) {
const { graph, definition } = options const { graph, definition } = options
const { addNode, setNodeName } = useCellUpdate({ graph }) const { addNode, setNodeName, setNodeEdge } = useCellUpdate({ graph })
const taskDefinitions = ref<NodeData[]>( const taskDefinitions = ref<NodeData[]>(
definition.value?.taskDefinitionList || [] definition.value?.taskDefinitionList || []
) )
@ -122,6 +121,7 @@ export function useTaskEdit(options: Options) {
taskDefinitions.value = taskDefinitions.value.map((task) => { taskDefinitions.value = taskDefinitions.value.map((task) => {
if (task.code === currTask.value?.code) { if (task.code === currTask.value?.code) {
setNodeName(task.code + '', taskDef.name) setNodeName(task.code + '', taskDef.name)
updatePreTasks(data.preTasks, task.code)
return { return {
...taskDef, ...taskDef,
version: task.version, version: task.version,
@ -141,6 +141,28 @@ export function useTaskEdit(options: Options) {
taskModalVisible.value = false taskModalVisible.value = false
} }
function updatePreTasks(preTasks: number[], code: number) {
if (!preTasks?.length) return
setNodeEdge(String(code), preTasks)
if (definition.value?.processTaskRelationList?.length) {
remove(
definition.value.processTaskRelationList,
(process) => process.postTaskCode === code
)
}
preTasks.forEach((task) => {
definition.value?.processTaskRelationList.push({
postTaskCode: code,
preTaskCode: task,
name: '',
preTaskVersion: 1,
postTaskVersion: 1,
conditionType: 'NONE',
conditionParams: {}
})
})
}
onMounted(() => { onMounted(() => {
if (graph.value) { if (graph.value) {
graph.value.on('cell:dblclick', ({ cell }) => { graph.value.on('cell:dblclick', ({ cell }) => {

Loading…
Cancel
Save