Browse Source

Merge remote-tracking branch 'upstream/branch-1.0.2' into 102

pull/2/head
baoliang 6 years ago
parent
commit
31b809e8a7
  1. 2
      escheduler-ui/.env
  2. 20
      escheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue
  3. 42
      escheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
  4. 47
      escheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue
  5. 28
      escheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue
  6. 12
      escheduler-ui/src/js/conf/home/store/dag/actions.js
  7. 3
      install.sh

2
escheduler-ui/.env

@ -2,4 +2,4 @@
API_BASE = http://192.168.xx.xx:12345 API_BASE = http://192.168.xx.xx:12345
# 本地开发如需ip访问项目把"#"号去掉 # 本地开发如需ip访问项目把"#"号去掉
#DEV_HOST = 192.168.xx.xx #DEV_HOST = 192.168.xx.xx

20
escheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue

@ -84,6 +84,8 @@
desc: '', desc: '',
// Global custom parameters // Global custom parameters
udpList: [], udpList: [],
// Global custom parameters
udpListCache: [],
// Whether to update the process definition // Whether to update the process definition
syncDefine: true, syncDefine: true,
// Timeout alarm // Timeout alarm
@ -159,11 +161,7 @@
* Close the popup * Close the popup
*/ */
close () { close () {
// Storage global globalParams this.$emit('close')
this._accuStore()
setTimeout(() => {
this.$emit('close')
})
} }
}, },
watch: { watch: {
@ -175,11 +173,13 @@
} }
}, },
created () { created () {
this.udpList = this.store.state.dag.globalParams const dag = _.cloneDeep(this.store.state.dag)
this.name = this.store.state.dag.name this.udpList = dag.globalParams
this.desc = this.store.state.dag.desc this.udpListCache = dag.globalParams
this.syncDefine = this.store.state.dag.syncDefine this.name = dag.name
this.timeout = this.store.state.dag.timeout || 0 this.desc = dag.desc
this.syncDefine = dag.syncDefine
this.timeout = dag.timeout || 0
this.checkedTimeout = this.timeout !== 0 this.checkedTimeout = this.timeout !== 0
}, },
mounted () {}, mounted () {},

42
escheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue

@ -32,7 +32,7 @@
</th> </th>
</tr> </tr>
<tr v-for="(item, $index) in list" :key="item.id"> <tr v-for="(item, $index) in list" :key="item.id">
<td width="50"><x-checkbox v-model="item.isCheck" @on-change="_arrDelChange"></x-checkbox></td> <td width="50"><x-checkbox v-model="item.isCheck" :disabled="item.releaseState === 'ONLINE'" @on-change="_arrDelChange"></x-checkbox></td>
<td width="50"> <td width="50">
<span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span> <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
</td> </td>
@ -53,16 +53,16 @@
</td> </td>
<td><span class="ellipsis">{{item.desc}}</span></td> <td><span class="ellipsis">{{item.desc}}</span></td>
<td> <td>
<span v-if="item.scheduleReleaseState === 'OFFLINE'">{{$t('offline')}}</span> <span v-if="item.scheduleReleaseState === 'OFFLINE'">{{$t('online')}}</span>
<span v-if="item.scheduleReleaseState === 'ONLINE'">{{$t('online')}}</span> <span v-if="item.scheduleReleaseState === 'ONLINE'">{{$t('offline')}}</span>
<span v-if="!item.scheduleReleaseState">-</span> <span v-if="!item.scheduleReleaseState">-</span>
</td> </td>
<td> <td>
<x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Edit')" @click="_edit(item)" :disabled="item.releaseState === 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-bianji"><!--{{$t('编辑')}}--></x-button> <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Edit')" @click="_edit(item)" :disabled="item.releaseState === 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-bianji"><!--{{$t('编辑')}}--></x-button>
<x-button type="success" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Start')" @click="_start(item)" :disabled="item.releaseState !== 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-qidong"><!--{{$t('启动')}}--></x-button> <x-button type="success" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Start')" @click="_start(item)" :disabled="item.releaseState !== 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-qidong"><!--{{$t('启动')}}--></x-button>
<x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Timing')" @click="_timing(item)" :disabled="item.releaseState !== 'ONLINE' || item.scheduleReleaseState !== null" v-ps="['GENERAL_USER']" icon="iconfont icon-timer"><!--{{$t('定时')}}--></x-button> <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Timing')" @click="_timing(item)" :disabled="item.releaseState !== 'ONLINE' || item.scheduleReleaseState !== null" v-ps="['GENERAL_USER']" icon="iconfont icon-timer"><!--{{$t('定时')}}--></x-button>
<x-button type="error" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('offline')" @click="_downline(item)" v-if="item.releaseState === 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-erji-xiaxianjilu"><!--{{$t('下线')}}--></x-button> <x-button type="warning" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('online')" @click="_poponline(item)" v-if="item.releaseState === 'OFFLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-erji-xiaxianjilu-copy"><!--{{$t('下线')}}--></x-button>
<x-button type="warning" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('online')" @click="_poponline(item)" v-if="item.releaseState === 'OFFLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-erji-xiaxianjilu-copy"><!--{{$t('上线')}}--></x-button> <x-button type="error" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('offline')" @click="_downline(item)" v-if="item.releaseState === 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-erji-xiaxianjilu"><!--{{$t('上线')}}--></x-button>
<x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Cron Manage')" @click="_timingManage(item)" :disabled="item.releaseState !== 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-paibanguanli"><!--{{$t('定时管理')}}--></x-button> <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Cron Manage')" @click="_timingManage(item)" :disabled="item.releaseState !== 'ONLINE'" v-ps="['GENERAL_USER']" icon="iconfont icon-paibanguanli"><!--{{$t('定时管理')}}--></x-button>
<x-poptip <x-poptip
:ref="'poptip-delete-' + $index" :ref="'poptip-delete-' + $index"
@ -79,6 +79,7 @@
type="error" type="error"
shape="circle" shape="circle"
size="xsmall" size="xsmall"
:disabled="item.releaseState === 'ONLINE'"
data-toggle="tooltip" data-toggle="tooltip"
:title="$t('delete')" :title="$t('delete')"
v-ps="['GENERAL_USER']"> v-ps="['GENERAL_USER']">
@ -90,7 +91,21 @@
</tr> </tr>
</table> </table>
</div> </div>
<x-button size="xsmall" style="position: absolute; bottom: -48px; left: 22px;" v-if="strDelete !== ''" @click="_batchDelete">删除</x-button> <x-poptip
v-show="strDelete !== ''"
ref="poptipDeleteAll"
placement="bottom-start"
width="90">
<p>{{$t('Delete?')}}</p>
<div style="text-align: right; margin: 0;padding-top: 4px;">
<x-button type="text" size="xsmall" shape="circle" @click="_closeDelete(-1)">{{$t('Cancel')}}</x-button>
<x-button type="primary" size="xsmall" shape="circle" @click="_delete({},-1)">{{$t('Confirm')}}</x-button>
</div>
<template slot="reference">
<x-button size="xsmall" style="position: absolute; bottom: -48px; left: 22px;" >删除</x-button>
</template>
</x-poptip>
</div> </div>
</template> </template>
<script> <script>
@ -211,12 +226,22 @@
* Close the delete layer * Close the delete layer
*/ */
_closeDelete (i) { _closeDelete (i) {
this.$refs[`poptip-delete-${i}`][0].doClose() if (i > 0) {
this.$refs[`poptip-delete-${i}`][0].doClose()
}else{
this.$refs['poptipDeleteAll'].doClose()
}
}, },
/** /**
* delete * delete
*/ */
_delete (item, i) { _delete (item, i) {
// remove tow++
if (i < 0) {
this._batchDelete()
return
}
// remove one
this.deleteDefinition({ this.deleteDefinition({
processDefinitionId: item.id processDefinitionId: item.id
}).then(res => { }).then(res => {
@ -272,7 +297,7 @@
*/ */
_topCheckBoxClick (v) { _topCheckBoxClick (v) {
this.list.forEach((item, i) => { this.list.forEach((item, i) => {
this.$set(this.list[i], 'isCheck', v) this.$set(this.list[i], 'isCheck', item.releaseState !== 'OFFLINE' ? v : false)
}) })
this._arrDelChange() this._arrDelChange()
}, },
@ -295,6 +320,7 @@
* batch delete * batch delete
*/ */
_batchDelete () { _batchDelete () {
this.$refs['poptipDeleteAll'].doClose()
this.batchDeleteDefinition({ this.batchDeleteDefinition({
processDefinitionIds: this.strDelete processDefinitionIds: this.strDelete
}).then(res => { }).then(res => {

47
escheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue

@ -35,7 +35,7 @@
<th> <th>
<span>{{$t('Update Time')}}</span> <span>{{$t('Update Time')}}</span>
</th> </th>
<th width="80"> <th width="120">
<span>{{$t('Operation')}}</span> <span>{{$t('Operation')}}</span>
</th> </th>
</tr> </tr>
@ -98,6 +98,28 @@
@click="_offline(item)" @click="_offline(item)"
v-if="item.releaseState === 'ONLINE'"> v-if="item.releaseState === 'ONLINE'">
</x-button> </x-button>
<x-poptip
:ref="'poptip-delete-' + $index"
placement="bottom-end"
width="90">
<p>{{$t('Delete?')}}</p>
<div style="text-align: right; margin: 0;padding-top: 4px;">
<x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
<x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
</div>
<template slot="reference">
<x-button
icon="iconfont icon-shanchu"
type="error"
shape="circle"
size="xsmall"
:disabled="item.releaseState === 'ONLINE'"
data-toggle="tooltip"
:title="$t('delete')"
v-ps="['GENERAL_USER']">
</x-button>
</template>
</x-poptip>
</td> </td>
</tr> </tr>
</table> </table>
@ -135,7 +157,28 @@
props: { props: {
}, },
methods: { methods: {
...mapActions('dag', ['getScheduleList', 'scheduleOffline', 'scheduleOnline', 'getReceiver']), ...mapActions('dag', ['getScheduleList', 'scheduleOffline', 'scheduleOnline', 'getReceiver','deleteTiming']),
/**
* delete
*/
_delete (item, i) {
this.deleteTiming({
scheduleId: item.id
}).then(res => {
this.$refs[`poptip-delete-${i}`][0].doClose()
this.$message.success(res.msg)
this.$router.push({ name: 'projects-definition-list' })
}).catch(e => {
this.$refs[`poptip-delete-${i}`][0].doClose()
this.$message.error(e.msg || '')
})
},
/**
* Close the delete layer
*/
_closeDelete (i) {
this.$refs[`poptip-delete-${i}`][0].doClose()
},
/** /**
* return state * return state
*/ */

28
escheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue

@ -249,7 +249,20 @@
</tr> </tr>
</table> </table>
</div> </div>
<x-button size="xsmall" style="position: absolute; bottom: -48px; left: 22px;" v-if="strDelete !== ''" @click="_batchDelete">删除</x-button> <x-poptip
v-show="strDelete !== ''"
ref="poptipDeleteAll"
placement="bottom-start"
width="90">
<p>{{$t('Delete?')}}</p>
<div style="text-align: right; margin: 0;padding-top: 4px;">
<x-button type="text" size="xsmall" shape="circle" @click="_closeDelete(-1)">{{$t('Cancel')}}</x-button>
<x-button type="primary" size="xsmall" shape="circle" @click="_delete({},-1)">{{$t('Confirm')}}</x-button>
</div>
<template slot="reference">
<x-button size="xsmall" style="position: absolute; bottom: -48px; left: 22px;" >删除</x-button>
</template>
</x-poptip>
</div> </div>
</template> </template>
<script> <script>
@ -293,12 +306,22 @@
* Close the delete layer * Close the delete layer
*/ */
_closeDelete (i) { _closeDelete (i) {
this.$refs[`poptip-delete-${i}`][0].doClose() if (i > 0) {
this.$refs[`poptip-delete-${i}`][0].doClose()
}else{
this.$refs['poptipDeleteAll'].doClose()
}
}, },
/** /**
* delete * delete
*/ */
_delete (item, i) { _delete (item, i) {
// remove tow++
if (i < 0) {
this._batchDelete()
return
}
// remove one
this.deleteInstance({ this.deleteInstance({
processInstanceId: item.id processInstanceId: item.id
}).then(res => { }).then(res => {
@ -467,6 +490,7 @@
} }
}, },
_batchDelete () { _batchDelete () {
this.$refs['poptipDeleteAll'].doClose()
this.batchDeleteInstance({ this.batchDeleteInstance({
processInstanceIds: this.strDelete processInstanceIds: this.strDelete
}).then(res => { }).then(res => {

12
escheduler-ui/src/js/conf/home/store/dag/actions.js

@ -589,5 +589,17 @@ export default {
reject(e) reject(e)
}) })
}) })
},
/**
* remove timing
*/
deleteTiming({ state }, payload){
return new Promise((resolve, reject) => {
io.get(`projects/${state.projectName}/schedule/delete`, payload, res => {
resolve(res)
}).catch(e => {
reject(e)
})
})
} }
} }

3
install.sh

@ -408,8 +408,7 @@ if [ "true" = $monitorServerState ];then
echo "monitor server running as process ${TARGET_PID}.Stopped success" echo "monitor server running as process ${TARGET_PID}.Stopped success"
rm -f $monitor_pid rm -f $monitor_pid
fi fi
nohup python -u ${workDir}/script/monitor_server.py $installPath $zkQuorum $zkMasters $zkWorkers > ${workDir}/monitor_server nohup python -u ${workDir}/script/monitor_server.py $installPath $zkQuorum $zkMasters $zkWorkers > ${workDir}/monitor_server.log 2>&1 &
.log 2>&1 &
echo $! > $monitor_pid echo $! > $monitor_pid
echo "start monitor server success as process `cat $monitor_pid`" echo "start monitor server success as process `cat $monitor_pid`"

Loading…
Cancel
Save