Browse Source

Improve the user experience in the task definition page (#1678)

define the architecture (include actions.js, dag.vue,formModel.vue,mutations.js, and state.js) and implement one of the tasks , such as http.vue.
pull/2/head
zhukai 5 years ago committed by khadgarmage
parent
commit
cfe174293f
  1. 10
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
  2. 60
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
  3. 19
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue
  4. 17
      dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js
  5. 2
      dolphinscheduler-ui/src/js/conf/home/store/dag/state.js

10
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue

@ -156,7 +156,7 @@
}, },
methods: { methods: {
...mapActions('dag', ['saveDAGchart', 'updateInstance', 'updateDefinition', 'getTaskState']), ...mapActions('dag', ['saveDAGchart', 'updateInstance', 'updateDefinition', 'getTaskState']),
...mapMutations('dag', ['addTasks', 'resetParams', 'setIsEditDag', 'setName']), ...mapMutations('dag', ['addTasks', 'cacheTasks', 'resetParams', 'setIsEditDag', 'setName']),
// DAG automatic layout // DAG automatic layout
dagAutomaticLayout() { dagAutomaticLayout() {
@ -495,6 +495,14 @@
removeNodesEvent(fromThis) removeNodesEvent(fromThis)
}, 100) }, 100)
}, },
/**
* Cache the item
* @param item
* @param fromThis
*/
cacheTaskInfo({item, fromThis}) {
self.cacheTasks(item)
},
close ({ flag, fromThis }) { close ({ flag, fromThis }) {
// Edit status does not allow deletion of nodes // Edit status does not allow deletion of nodes
if (flag) { if (flag) {

60
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue

@ -184,6 +184,7 @@
<m-http <m-http
v-if="taskType === 'HTTP'" v-if="taskType === 'HTTP'"
@on-params="_onParams" @on-params="_onParams"
@on-cache-params="_onCacheParams"
ref="HTTP" ref="HTTP"
:backfill-item="backfillItem"> :backfill-item="backfillItem">
</m-http> </m-http>
@ -333,6 +334,31 @@
_onParams (o) { _onParams (o) {
this.params = Object.assign(this.params, {}, o) this.params = Object.assign(this.params, {}, o)
}, },
_onCacheParams (o) {
this.params = Object.assign(this.params, {}, o)
this._cacheItem()
},
_cacheItem () {
this.$emit('cacheTaskInfo', {
item: {
type: this.taskType,
id: this.id,
name: this.name,
params: this.params,
description: this.description,
runFlag: this.runFlag,
dependence: this.dependence,
maxRetryTimes: this.maxRetryTimes,
retryInterval: this.retryInterval,
timeout: this.timeout,
taskInstancePriority: this.taskInstancePriority,
workerGroupId: this.workerGroupId
},
fromThis: this
})
},
/** /**
* verification name * verification name
*/ */
@ -431,14 +457,26 @@
} }
}, },
watch: { watch: {
/**
* Watch the item change, cache the value it changes
**/
_item (val) {
this._cacheItem()
}
}, },
created () { created () {
// Unbind copy and paste events // Unbind copy and paste events
JSP.removePaste() JSP.removePaste()
// Backfill data // Backfill data
let taskList = this.store.state.dag.tasks let taskList = this.store.state.dag.tasks
//fillback use cacheTasks
let cacheTasks = this.store.state.dag.cacheTasks
let o = {} let o = {}
if (cacheTasks[this.id]) {
o = cacheTasks[this.id]
this.backfillItem = cacheTasks[this.id]
} else {
if (taskList.length) { if (taskList.length) {
taskList.forEach(v => { taskList.forEach(v => {
if (v.id === this.id) { if (v.id === this.id) {
@ -446,6 +484,8 @@
this.backfillItem = v this.backfillItem = v
} }
}) })
}
}
// Non-null objects represent backfill // Non-null objects represent backfill
if (!_.isEmpty(o)) { if (!_.isEmpty(o)) {
this.name = o.name this.name = o.name
@ -472,7 +512,6 @@
} }
} }
}
this.isContentBox = true this.isContentBox = true
}, },
mounted () { mounted () {
@ -490,6 +529,23 @@
*/ */
_isGoSubProcess () { _isGoSubProcess () {
return this.taskType === 'SUB_PROCESS' && this.name return this.taskType === 'SUB_PROCESS' && this.name
},
//Define the item model
_item () {
return {
type: this.taskType,
id: this.id,
name: this.name,
description: this.description,
runFlag: this.runFlag,
dependence: this.dependence,
maxRetryTimes: this.maxRetryTimes,
retryInterval: this.retryInterval,
timeout: this.timeout,
taskInstancePriority: this.taskInstancePriority,
workerGroupId: this.workerGroupId
}
} }
}, },
components: { components: {

19
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue

@ -164,7 +164,26 @@
return true return true
} }
}, },
computed: {
cacheParams () {
return {
localParams: this.localParams,
httpParams: this.httpParams,
url: this.url,
httpMethod: this.httpMethod,
httpCheckCondition: this.httpCheckCondition,
condition: this.condition
}
}
},
watch: { watch: {
/**
* Watch the cacheParams
* @param val
*/
cacheParams (val) {
this.$emit('on-cache-params', val);
}
}, },
created () { created () {
let o = this.backfillItem let o = this.backfillItem

17
dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js

@ -125,6 +125,11 @@ export default {
} else { } else {
state.tasks.push(payload) state.tasks.push(payload)
} }
if (state.cacheTasks[payload.id]) {
state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload)
} else {
state.cacheTasks[payload.id] = payload;
}
let dom = $(`#${payload.id}`) let dom = $(`#${payload.id}`)
state.locations[payload.id] = _.assign(state.locations[payload.id], { state.locations[payload.id] = _.assign(state.locations[payload.id], {
name: dom.find('.name-p').text(), name: dom.find('.name-p').text(),
@ -132,5 +137,17 @@ export default {
x: parseInt(dom.css('left'), 10), x: parseInt(dom.css('left'), 10),
y: parseInt(dom.css('top'), 10) y: parseInt(dom.css('top'), 10)
}) })
},
/**
* Cache the input
* @param state
* @param payload
*/
cacheTasks (state, payload) {
if (state.cacheTasks[payload.id]) {
state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload)
} else {
state.cacheTasks[payload.id] = payload;
}
} }
} }

2
dolphinscheduler-ui/src/js/conf/home/store/dag/state.js

@ -29,6 +29,8 @@ export default {
globalParams: [], globalParams: [],
// Node information // Node information
tasks: [], tasks: [],
// Node cache information, cache the previous input
cacheTasks: {},
// Timeout alarm // Timeout alarm
timeout: 0, timeout: 0,
// tenant id // tenant id

Loading…
Cancel
Save