Browse Source

Merge pull request #88 from millionfor/dev-20190415

Dev 20190415
pull/2/head
millionfor 5 years ago committed by GitHub
parent
commit
c9022540a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 73
      escheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
  2. 12
      escheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js
  3. 4
      escheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js
  4. 12
      escheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue
  5. 42
      escheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue
  6. 40
      escheduler-ui/src/js/conf/home/pages/monitor/index.vue
  7. 0
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/list.vue
  8. 49
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/alert.vue
  9. 40
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue
  10. 2
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue
  11. 40
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/mysql.vue
  12. 40
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/rpcserver.vue
  13. 2
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue
  14. 40
      escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/zookeeper.vue
  15. 8
      escheduler-ui/src/js/conf/home/pages/security/pages/servers/index.vue
  16. 2
      escheduler-ui/src/js/conf/home/pages/user/pages/token/_source/list.vue
  17. 98
      escheduler-ui/src/js/conf/home/router/index.js
  18. 102
      escheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js
  19. 1
      escheduler-ui/src/js/module/i18n/locale/zh_CN.js

73
escheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue

@ -11,32 +11,34 @@
:placeholder="$t('prop(required)')"
maxlength="64"
@on-blur="_verifProp()"
style="width: 164px;">
:style="inputStyle">
</x-input>
<x-select
style="width: 80px;"
@change="_handleDirectChanged"
v-model="localParamsList[$index].direct"
:disabled="isDetails || !hide">
<x-option
v-for="city in directList"
:key="city.code"
:value="city.code"
:label="city.code">
</x-option>
</x-select>
<x-select
style="width: 118px;"
@change="_handleTypeChanged"
v-model="localParamsList[$index].type"
:disabled="isDetails || !hide">
<x-option
v-for="city in typeList"
:key="city.code"
:value="city.code"
:label="city.code">
</x-option>
</x-select>
<template v-if="hide">
<x-select
style="width: 80px;"
@change="_handleDirectChanged"
v-model="localParamsList[$index].direct"
:disabled="isDetails">
<x-option
v-for="city in directList"
:key="city.code"
:value="city.code"
:label="city.code">
</x-option>
</x-select>
<x-select
style="width: 118px;"
@change="_handleTypeChanged"
v-model="localParamsList[$index].type"
:disabled="isDetails">
<x-option
v-for="city in typeList"
:key="city.code"
:value="city.code"
:label="city.code">
</x-option>
</x-select>
</template>
<x-input
:disabled="isDetails"
type="text"
@ -44,7 +46,7 @@
:placeholder="$t('value(optional)')"
maxlength="64"
@on-blur="_handleValue()"
style="width: 150px;position: relative;margin-bottom: -2px;">
:style="inputStyle">
</x-input>
<span class="lt-add">
<a href="javascript:" style="color:red;" @click="!isDetails && _removeUdp($index)" >
@ -57,7 +59,7 @@
</a>
</span>
</div>
<span class="add" v-if="!localParamsList.length">
<span class="add-dp" v-if="!localParamsList.length">
<a href="javascript:" @click="!isDetails && _addUdp()" >
<i class="iconfont" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')">&#xe636;</i>
</a>
@ -173,6 +175,11 @@
created () {
this.localParamsList = this.udpList
},
computed: {
inputStyle () {
return `width:${this.hide ? 160 : 262}px`
}
},
mounted () {
},
components: { }
@ -197,6 +204,7 @@
}
.add {
a {
color: #000;
.iconfont {
font-size: 18px;
vertical-align: middle;
@ -205,5 +213,16 @@
}
}
}
.add-dp{
a {
color: #0097e0;
.iconfont {
font-size: 18px;
vertical-align: middle;
display: inline-block;
margin-top: 2px;
}
}
}
}
</style>

12
escheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js

@ -668,26 +668,21 @@ JSP.prototype.saveStore = function () {
/**
* Event processing
*/
JSP.prototype.handleEvent = function () {
this.JspInstance.bind('beforeDrop', function (info) {
let sourceId = info['sourceId']// 出
let targetId = info['targetId']// 入
/**
* Recursive search for nodes
*/
let recursiveVal
const recursiveTargetarr = (arr, targetId) => {
for (var i in arr) {
for (let i in arr) {
if (arr[i] === targetId) {
recursiveVal = targetId
} else {
let recTargetarrArr = rtTargetarrArr(arr[i])
if (recTargetarrArr.length) {
recursiveTargetarr(recTargetarrArr, targetId)
} else {
return recursiveTargetarr(targetId)
}
recursiveTargetarr(rtTargetarrArr(arr[i]), targetId)
}
}
return recursiveVal
@ -700,7 +695,6 @@ JSP.prototype.handleEvent = function () {
// Recursive form to find if the target Targetarr has a sourceId
if (recursiveTargetarr(rtTargetarrArr(sourceId), targetId)) {
// setRecursiveVal(null)
return false
}

4
escheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js

@ -24,8 +24,8 @@ import store from '@/conf/home/store'
* Node, to array
*/
const rtTargetarrArr = (id) => {
let a = $(`#${id}`).attr('data-targetarr')
return a ? a.split(',') : []
let ids = $(`#${id}`).attr('data-targetarr')
return ids ? ids.split(',') : []
}
/**

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

@ -138,8 +138,8 @@
<style lang="scss" rel="stylesheet/scss">
.udp-model {
width: 616px;
min-height: 326px;
width: 624px;
min-height: 420px;
background: #fff;
border-radius: 3px;
padding:20px 0 ;
@ -182,6 +182,14 @@
}
.content {
padding-bottom: 50px;
.user-def-params-model {
.add {
a {
color: #0097e0;
}
}
}
}
}
</style>

42
escheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue

@ -1,9 +1,19 @@
<template>
<div class="variable-model">
<template v-if="list">
<div class="list">
<div class="name"><i class="fa fa-code"></i><b style="padding-top: 3px;display: inline-block">{{$t('Global parameters')}}</b></div>
<div class="var-cont">
<x-button size="xsmall" type="ghost" v-for="(item,$index) in list.globalParams" @click="_copy('gbudp-' + $index)" :data-clipboard-text="item.prop + ' = ' +item.value" :class="'gbudp-' + $index"><b style="color: #2A455B;">{{item.prop}}</b> = {{item.value}}</x-button>
<template v-for="(item,$index) in list.globalParams">
<x-button
size="xsmall"
type="ghost"
@click="_copy('gbudp-' + $index)"
:data-clipboard-text="item.prop + ' = ' +item.value"
:class="'gbudp-' + $index">
<b style="color: #2A455B;">{{item.prop}}</b> = {{item.value}}
</x-button>
</template>
</div>
</div>
<div class="list" style="height: 30px;">
@ -14,15 +24,25 @@
</div>
<div class="list list-t" v-for="(item,key,$index) in list.localParams">
<div class="task-name">Task({{$index}}){{key}}</div>
<div class="var-cont" v-if="item.length">
<template v-for="(el,index) in item">
<x-button size="xsmall" type="ghost" @click="_copy('copy-part-' + index)" :data-clipboard-text="_rtClipboard(el)" :class="'copy-part-' + index">
<span v-for="(e,k,i) in el"><b style="color: #2A455B;">{{k}}</b> = {{e}} </span>
<div class="var-cont" v-if="item.localParamsList.length">
<template v-for="(el,index) in item.localParamsList">
<x-button size="xsmall" type="ghost" @click="_copy('copy-part-' + index)" :data-clipboard-text="_rtClipboard(el,item.taskType)" :class="'copy-part-' + index">
<span v-for="(e,k,i) in el">
<template v-if="item.taskType === 'SQL' || item.taskType === 'PROCEDURE'">
<template v-if="(k !== 'direct' && k !== 'type')">
<b style="color: #2A455B;">{{k}}</b> = {{e}}
</template>
</template>
<template v-else>
<b style="color: #2A455B;">{{k}}</b> = {{e}}
</template>
</span>
</x-button>
</template>
</div>
</div>
</div>
</template>
</div>
</template>
<script>
import i18n from '@/module/i18n'
@ -71,10 +91,16 @@
/**
* Copyed text processing
*/
_rtClipboard (el) {
_rtClipboard (el, taskType) {
let arr = []
Object.keys(el).forEach((key) => {
arr.push(`${key}=${el[key]}`)
if (taskType === 'SQL' || taskType === 'PROCEDURE') {
if (key !== 'direct' && key !== 'type') {
arr.push(`${key}=${el[key]}`)
}
} else {
arr.push(`${key}=${el[key]}`)
}
})
return arr.join(' ')
}

40
escheduler-ui/src/js/conf/home/pages/monitor/index.vue

@ -1,40 +1,14 @@
<template>
<div class="index-model">
index
<div class="main-layout-box">
<m-secondary-menu :type="'monitor'"></m-secondary-menu>
<router-view></router-view>
</div>
</template>
<script>
import mSecondaryMenu from '@/module/components/secondaryMenu/secondaryMenu'
export default {
name: 'monitor-index',
data () {
return {}
},
props: {},
methods: {},
watch: {},
beforeCreate () {
},
created () {
},
beforeMount () {
},
mounted () {
},
beforeUpdate () {
},
updated () {
},
beforeDestroy () {
},
destroyed () {
},
computed: {},
components: {}
}
</script>
<style lang="scss" rel="stylesheet/scss">
.index-model {
components: { mSecondaryMenu }
}
</style>
</script>

0
escheduler-ui/src/js/conf/home/pages/security/pages/servers/_source/list.vue → escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/list.vue

49
escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/alert.vue

@ -0,0 +1,49 @@
<template>
<m-list-construction title="Alert服务">
<template slot="content">
<template v-if="masterList.length">
<m-list :list="masterList"></m-list>
</template>
<template v-if="!masterList.length">
<m-no-data></m-no-data>
</template>
<m-spin :is-spin="isLoading" ></m-spin>
</template>
</m-list-construction>
</template>
<script>
import { mapActions } from 'vuex'
import mList from './_source/list'
import mSpin from '@/module/components/spin/spin'
import mNoData from '@/module/components/noData/noData'
import mListConstruction from '@/module/components/listConstruction/listConstruction'
export default {
name: 'servers-alert',
data () {
return {
pageSize: 10,
pageNo: 1,
totalPage: null,
searchVal: '',
isLoading: false,
masterList: []
}
},
props: {},
methods: {
...mapActions('security', ['getProcessMasterList'])
},
watch: {},
created () {
this.isLoading = true
this.getProcessMasterList().then(res => {
this.masterList = res.data
this.isLoading = false
})
},
mounted () {
},
components: { mList, mListConstruction, mSpin, mNoData }
}
</script>

40
escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue

@ -0,0 +1,40 @@
<template>
<div class="apiserver-model">
apiserver
</div>
</template>
<script>
export default {
name: 'apiserver',
data () {
return {}
},
props: {},
methods: {},
watch: {},
beforeCreate () {
},
created () {
},
beforeMount () {
},
mounted () {
},
beforeUpdate () {
},
updated () {
},
beforeDestroy () {
},
destroyed () {
},
computed: {},
components: {}
}
</script>
<style lang="scss" rel="stylesheet/scss">
.apiserver-model {
}
</style>

2
escheduler-ui/src/js/conf/home/pages/security/pages/servers/pages/master/index.vue → escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue

@ -13,7 +13,7 @@
</template>
<script>
import { mapActions } from 'vuex'
import mList from '../../_source/list'
import mList from './_source/list'
import mSpin from '@/module/components/spin/spin'
import mNoData from '@/module/components/noData/noData'
import mListConstruction from '@/module/components/listConstruction/listConstruction'

40
escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/mysql.vue

@ -0,0 +1,40 @@
<template>
<div class="mysql-model">
mysql
</div>
</template>
<script>
export default {
name: 'mysql',
data () {
return {}
},
props: {},
methods: {},
watch: {},
beforeCreate () {
},
created () {
},
beforeMount () {
},
mounted () {
},
beforeUpdate () {
},
updated () {
},
beforeDestroy () {
},
destroyed () {
},
computed: {},
components: {}
}
</script>
<style lang="scss" rel="stylesheet/scss">
.mysql-model {
}
</style>

40
escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/rpcserver.vue

@ -0,0 +1,40 @@
<template>
<div class="rpcserver-model">
rpcserver
</div>
</template>
<script>
export default {
name: 'rpcserver',
data () {
return {}
},
props: {},
methods: {},
watch: {},
beforeCreate () {
},
created () {
},
beforeMount () {
},
mounted () {
},
beforeUpdate () {
},
updated () {
},
beforeDestroy () {
},
destroyed () {
},
computed: {},
components: {}
}
</script>
<style lang="scss" rel="stylesheet/scss">
.rpcserver-model {
}
</style>

2
escheduler-ui/src/js/conf/home/pages/security/pages/servers/pages/worker/index.vue → escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue

@ -13,7 +13,7 @@
</template>
<script>
import { mapActions } from 'vuex'
import mList from '../../_source/list'
import mList from './_source/list'
import mSpin from '@/module/components/spin/spin'
import mNoData from '@/module/components/noData/noData'
import mListConstruction from '@/module/components/listConstruction/listConstruction'

40
escheduler-ui/src/js/conf/home/pages/monitor/pages/servers/zookeeper.vue

@ -0,0 +1,40 @@
<template>
<div class="zookeeper-model">
zookeeper
</div>
</template>
<script>
export default {
name: 'zookeeper',
data () {
return {}
},
props: {},
methods: {},
watch: {},
beforeCreate () {
},
created () {
},
beforeMount () {
},
mounted () {
},
beforeUpdate () {
},
updated () {
},
beforeDestroy () {
},
destroyed () {
},
computed: {},
components: {}
}
</script>
<style lang="scss" rel="stylesheet/scss">
.zookeeper-model {
}
</style>

8
escheduler-ui/src/js/conf/home/pages/security/pages/servers/index.vue

@ -1,8 +0,0 @@
<template>
<router-view></router-view>
</template>
<script>
export default {
name: 'servers-index'
}
</script>

2
escheduler-ui/src/js/conf/home/pages/user/pages/token/_source/list.vue

@ -24,7 +24,7 @@
<th>
<span>更新时间</span>
</th>
<th width="120">
<th width="70">
<span>{{$t('Operation')}}</span>
</th>
</tr>

98
escheduler-ui/src/js/conf/home/router/index.js

@ -317,35 +317,6 @@ const router = new Router({
meta: {
title: `${i18n.$t('Queue manage')}`
}
},
{
path: '/security/servers',
name: 'servers-manage',
component: resolve => require(['../pages/security/pages/servers/index'], resolve),
meta: {
title: `${i18n.$t('Servers manage')}`
},
redirect: {
name: 'servers-master'
},
children: [
{
path: '/security/servers/master',
name: 'servers-master',
component: resolve => require(['../pages/security/pages/servers/pages/master/index'], resolve),
meta: {
title: `${i18n.$t('Service-Master')}`
}
},
{
path: '/security/servers/worker',
name: 'servers-worker',
component: resolve => require(['../pages/security/pages/servers/pages/worker/index'], resolve),
meta: {
title: `${i18n.$t('Service-Worker')}`
}
}
]
}
]
},
@ -385,6 +356,75 @@ const router = new Router({
}
}
]
},
{
path: '/monitor',
name: 'monitor',
component: resolve => require(['../pages/monitor/index'], resolve),
meta: {
title: `monitor`
},
redirect: {
name: 'servers-master'
},
children: [
{
path: '/monitor/servers/master',
name: 'servers-master',
component: resolve => require(['../pages/monitor/pages/servers/master'], resolve),
meta: {
title: `${i18n.$t('Service-Master')}`
}
},
{
path: '/monitor/servers/worker',
name: 'servers-worker',
component: resolve => require(['../pages/monitor/pages/servers/worker'], resolve),
meta: {
title: `${i18n.$t('Service-Worker')}`
}
},
{
path: '/monitor/servers/alert',
name: 'servers-alert',
component: resolve => require(['../pages/monitor/pages/servers/alert'], resolve),
meta: {
title: `alert`
}
},
{
path: '/monitor/servers/rpcserver',
name: 'servers-rpcserver',
component: resolve => require(['../pages/monitor/pages/servers/rpcserver'], resolve),
meta: {
title: `rpcserver`
}
},
{
path: '/monitor/servers/zookeeper',
name: 'servers-zookeeper',
component: resolve => require(['../pages/monitor/pages/servers/zookeeper'], resolve),
meta: {
title: `zookeeper`
}
},
{
path: '/monitor/servers/apiserver',
name: 'servers-apiserver',
component: resolve => require(['../pages/monitor/pages/servers/apiserver'], resolve),
meta: {
title: `apiserver`
}
},
{
path: '/monitor/servers/mysql',
name: 'servers-mysql',
component: resolve => require(['../pages/monitor/pages/servers/mysql'], resolve),
meta: {
title: `mysql`
}
}
]
}
]
})

102
escheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js

@ -23,7 +23,7 @@ let menu = {
projects: [
{
name: `${i18n.$t('Project Home')}`,
id: 1,
id: 0,
path: 'projects-index',
isOpen: true,
disabled: true,
@ -32,7 +32,7 @@ let menu = {
},
{
name: `${i18n.$t('Process')}`,
id: 2,
id: 1,
path: '',
isOpen: true,
disabled: true,
@ -41,31 +41,31 @@ let menu = {
{
name: `${i18n.$t('Process definition')}`,
path: 'definition',
id: 1,
id: 0,
disabled: true
},
{
name: `${i18n.$t('Process Instance')}`,
path: 'instance',
id: 2,
id: 1,
disabled: true
},
{
name: `${i18n.$t('Task Instance')}`,
path: 'task-instance',
id: 3,
id: 2,
disabled: true
},
{
name: `${i18n.$t('Task record')}`,
path: 'task-record',
id: 4,
id: 3,
disabled: config.recordSwitch
},
{
name: `${i18n.$t('History task record')}`,
path: 'history-task-record',
id: 5,
id: 4,
disabled: config.recordSwitch
}
]
@ -75,7 +75,7 @@ let menu = {
security: [
{
name: `${i18n.$t('Tenant Manage')}`,
id: 1,
id: 0,
path: 'tenement-manage',
isOpen: true,
disabled: true,
@ -93,7 +93,7 @@ let menu = {
},
{
name: `${i18n.$t('Warning group manage')}`,
id: 1,
id: 2,
path: 'warning-groups-manage',
isOpen: true,
disabled: true,
@ -102,40 +102,18 @@ let menu = {
},
{
name: `${i18n.$t('Queue manage')}`,
id: 1,
id: 3,
path: 'queue-manage',
isOpen: true,
disabled: true,
icon: 'fa-recycle',
children: []
},
{
name: `${i18n.$t('Servers manage')}`,
id: 1,
path: '',
isOpen: true,
disabled: true,
icon: 'fa-server',
children: [
{
name: 'master',
path: 'servers-master',
id: 1,
disabled: true
},
{
name: 'worker',
path: 'servers-worker',
id: 2,
disabled: true
}
]
}
],
resource: [
{
name: `${i18n.$t('File Manage')}`,
id: 1,
id: 0,
path: 'file',
isOpen: true,
icon: 'fa-files-o',
@ -153,13 +131,13 @@ let menu = {
{
name: `${i18n.$t('Resource manage')}`,
path: 'resource-udf-resource',
id: 1,
id: 0,
disabled: true
},
{
name: `${i18n.$t('Function manage')}`,
path: 'resource-udf-function',
id: 2,
id: 1,
disabled: true
}
]
@ -193,6 +171,60 @@ let menu = {
children: [],
disabled: !Permissions.getAuth()
}
],
monitor: [
{
name: `${i18n.$t('Servers manage')}`,
id: 0,
path: '',
isOpen: true,
disabled: true,
icon: 'fa-server',
children: [
{
name: 'Master',
path: 'servers-master',
id: 0,
disabled: true
},
{
name: 'Worker',
path: 'servers-worker',
id: 1,
disabled: true
},
{
name: 'Alert',
path: 'servers-alert',
id: 2,
disabled: true
},
{
name: 'RpcServer',
path: 'servers-rpcserver',
id: 3,
disabled: true
},
{
name: 'Zookeeper',
path: 'servers-zookeeper',
id: 4,
disabled: true
},
{
name: 'ApiServer',
path: 'servers-apiserver',
id: 5,
disabled: true
},
{
name: 'Mysql',
path: 'servers-mysql',
id: 6,
disabled: true
}
]
}
]
}

1
escheduler-ui/src/js/module/i18n/locale/zh_CN.js

@ -295,6 +295,7 @@ export default {
'Waiting for dependence': '等待依赖',
'Start': '运行',
'Copy': '复制节点',
'Delete': '删除',
'Please enter keyword': '请输入关键词',
'File Upload': '文件上传',
'Drag the file into the current upload window': '请将文件拖拽到当前上传窗口内',

Loading…
Cancel
Save