diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue index 68d06e61c921a1185f70aa35a06fc6b822d4f97e..c2404dc1ad7240c1ebf8858f23b562f324af07d9 100644 --- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue +++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue @@ -73,7 +73,7 @@ }, props: {}, methods: { - ...mapActions('kinship', ['getWorkFlowList', 'getWorkFlowDAG']), + ...mapActions('kinship', ['getWorkFlowList', 'getWorkFlowDAG', 'getWorkFlowDAGAll']), /** * init */ @@ -83,7 +83,7 @@ Promise.all([ // get process definition this.getWorkFlowList(), - this.getWorkFlowDAG() + this.getWorkFlowDAGAll() ]).then((data) => { this.isLoading = false }).catch(() => { @@ -103,7 +103,11 @@ this.isLoading = true this.currentItemName = item try { - await this.getWorkFlowDAG(item) + if (item) { + await this.getWorkFlowDAG(item) + } else { + await this.getWorkFlowDAGAll() + } } catch (error) { this.$message.error(error.msg || '') } diff --git a/dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js b/dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js index 019dc8557551abfd7bf04abad4fb673c1e8fcb0d..a36316213b7669d42de8b2510d365f197ab29972 100644 --- a/dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js +++ b/dolphinscheduler-ui/src/js/conf/home/store/kinship/actions.js @@ -19,6 +19,31 @@ import _ from 'lodash' import io from '@/module/io' 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 { /** * Get workFlow DAG @@ -49,31 +74,20 @@ export default { /** * Get workFlow DAG */ - getWorkFlowDAG ({ state }, payload) { + getWorkFlowDAG ({ state }, code) { const projectCode = localStore.getItem('projectCode') return new Promise((resolve, reject) => { - const url = `projects/${projectCode}/lineages/list` - io.get(url, { code: payload }, res => { + const url = `projects/${projectCode}/lineages/${code}` + io.get(url, res => { let locations = [] let connects = [] if (res.data.workFlowList) { - locations = _.uniqBy(res.data.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 - })) + locations = buildLocations(res.data.workFlowList) } if (res.data.workFlowRelationList) { - connects = _.map(res.data.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 - })) + connects = buildConnects(res.data.workFlowRelationList) } - state.sourceWorkFlowCode = payload || '' + state.sourceWorkFlowCode = code || '' // locations state.locations = locations /* JSON.parse(locations) */ // connects @@ -83,5 +97,30 @@ export default { 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) + }) + }) } }