Browse Source

Improve workflow lineage interaction (#6230)

2.0.7-release
Wangyizhi1 3 years ago committed by GitHub
parent
commit
14feda996d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue
  2. 73
      dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js

8
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue

@ -73,7 +73,7 @@
}, },
props: {}, props: {},
methods: { methods: {
...mapActions('kinship', ['getWorkFlowList', 'getWorkFlowDAG']), ...mapActions('kinship', ['getWorkFlowList', 'getWorkFlowDAG', 'getWorkFlowDAGAll']),
/** /**
* init * init
*/ */
@ -83,7 +83,7 @@
Promise.all([ Promise.all([
// get process definition // get process definition
this.getWorkFlowList(), this.getWorkFlowList(),
this.getWorkFlowDAG() this.getWorkFlowDAGAll()
]).then((data) => { ]).then((data) => {
this.isLoading = false this.isLoading = false
}).catch(() => { }).catch(() => {
@ -103,7 +103,11 @@
this.isLoading = true this.isLoading = true
this.currentItemName = item this.currentItemName = item
try { try {
if (item) {
await this.getWorkFlowDAG(item) await this.getWorkFlowDAG(item)
} else {
await this.getWorkFlowDAGAll()
}
} catch (error) { } catch (error) {
this.$message.error(error.msg || '') this.$message.error(error.msg || '')
} }

73
dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js

@ -19,6 +19,31 @@ import _ from 'lodash'
import io from '@/module/io' import io from '@/module/io'
import localStore from '@/module/util/localStorage' import localStore from '@/module/util/localStorage'
/**
* build locations by workFlowList
*/
const buildLocations = (workFlowList) => {
return _.uniqBy(workFlowList, 'workFlowCode').map((item) => ({
code: `${item.workFlowCode}`,
name: item.workFlowName,
workFlowPublishStatus: item.workFlowPublishStatus,
scheduleStartTime: item.scheduleStartTime,
scheduleEndTime: item.scheduleEndTime,
crontab: item.crontab,
schedulePublishStatus: item.schedulePublishStatus
}))
}
/**
* build connects by workFlowRelationList
*/
const buildConnects = (workFlowRelationList) => {
return _.map(workFlowRelationList, (item) => ({
source: `${item.sourceWorkFlowCode}`, // should be string, or connects will not show by echarts
target: `${item.targetWorkFlowCode}` // should be string, or connects will not show by echarts
}))
}
export default { export default {
/** /**
* Get workFlow DAG * Get workFlow DAG
@ -49,31 +74,20 @@ export default {
/** /**
* Get workFlow DAG * Get workFlow DAG
*/ */
getWorkFlowDAG ({ state }, payload) { getWorkFlowDAG ({ state }, code) {
const projectCode = localStore.getItem('projectCode') const projectCode = localStore.getItem('projectCode')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const url = `projects/${projectCode}/lineages/list` const url = `projects/${projectCode}/lineages/${code}`
io.get(url, { code: payload }, res => { io.get(url, res => {
let locations = [] let locations = []
let connects = [] let connects = []
if (res.data.workFlowList) { if (res.data.workFlowList) {
locations = _.uniqBy(res.data.workFlowList, 'workFlowCode').map((item) => ({ locations = buildLocations(res.data.workFlowList)
code: `${item.workFlowCode}`,
name: item.workFlowName,
workFlowPublishStatus: item.workFlowPublishStatus,
scheduleStartTime: item.scheduleStartTime,
scheduleEndTime: item.scheduleEndTime,
crontab: item.crontab,
schedulePublishStatus: item.schedulePublishStatus
}))
} }
if (res.data.workFlowRelationList) { if (res.data.workFlowRelationList) {
connects = _.map(res.data.workFlowRelationList, (item) => ({ connects = buildConnects(res.data.workFlowRelationList)
source: `${item.sourceWorkFlowCode}`, // should be string, or connects will not show by echarts
target: `${item.targetWorkFlowCode}` // should be string, or connects will not show by echarts
}))
} }
state.sourceWorkFlowCode = payload || '' state.sourceWorkFlowCode = code || ''
// locations // locations
state.locations = locations /* JSON.parse(locations) */ state.locations = locations /* JSON.parse(locations) */
// connects // connects
@ -83,5 +97,30 @@ export default {
reject(res) reject(res)
}) })
}) })
},
/**
* Get all workFlow DAG
*/
getWorkFlowDAGAll ({ state }, payload) {
const projectCode = localStore.getItem('projectCode')
return new Promise((resolve, reject) => {
const url = `projects/${projectCode}/lineages/list`
io.get(url, res => {
let locations = []
let connects = []
if (res.data.workFlowList) {
locations = buildLocations(res.data.workFlowList)
}
if (res.data.workFlowRelationList) {
connects = buildConnects(res.data.workFlowRelationList)
}
state.sourceWorkFlowCode = ''
state.locations = locations
state.connects = connects
resolve(res.data)
}).catch(res => {
reject(res)
})
})
} }
} }

Loading…
Cancel
Save