mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-04 13:17:50 +08:00
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.
This commit is contained in:
parent
0a3954107e
commit
cfe174293f
@ -156,8 +156,8 @@
|
|||||||
},
|
},
|
||||||
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() {
|
||||||
$('#canvas').html('')
|
$('#canvas').html('')
|
||||||
@ -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) {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
<template>
|
<template>
|
||||||
<div class="form-model-model" v-clickoutside="_handleClose">
|
<div class="form-model-model" v-clickoutside="_handleClose">
|
||||||
<div class="title-box">
|
<div class="title-box">
|
||||||
<span class="name">{{$t('Current node settings')}}</span>
|
<span class="name">{{$t('Current node settings')}}</span>
|
||||||
<span class="go-subtask">
|
<span class="go-subtask">
|
||||||
<!-- Component can't pop up box to do component processing -->
|
<!-- Component can't pop up box to do component processing -->
|
||||||
@ -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,29 +457,43 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
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 (taskList.length) {
|
if (cacheTasks[this.id]) {
|
||||||
taskList.forEach(v => {
|
o = cacheTasks[this.id]
|
||||||
if (v.id === this.id) {
|
this.backfillItem = cacheTasks[this.id]
|
||||||
o = v
|
} else {
|
||||||
this.backfillItem = v
|
if (taskList.length) {
|
||||||
|
taskList.forEach(v => {
|
||||||
|
if (v.id === this.id) {
|
||||||
|
o = 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
|
||||||
this.taskInstancePriority = o.taskInstancePriority
|
this.taskInstancePriority = o.taskInstancePriority
|
||||||
this.runFlag = o.runFlag || 'NORMAL'
|
this.runFlag = o.runFlag || 'NORMAL'
|
||||||
this.description = o.description
|
this.description = o.description
|
||||||
this.maxRetryTimes = o.maxRetryTimes
|
this.maxRetryTimes = o.maxRetryTimes
|
||||||
this.retryInterval = o.retryInterval
|
this.retryInterval = o.retryInterval
|
||||||
|
|
||||||
// If the workergroup has been deleted, set the default workergroup
|
// If the workergroup has been deleted, set the default workergroup
|
||||||
var hasMatch = false;
|
var hasMatch = false;
|
||||||
@ -471,7 +511,6 @@
|
|||||||
this.workerGroupId = o.workerGroupId
|
this.workerGroupId = o.workerGroupId
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
this.isContentBox = true
|
this.isContentBox = true
|
||||||
},
|
},
|
||||||
@ -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: {
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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…
Reference in New Issue
Block a user