Browse Source

Merge branch 'dev' into dev

pull/2/head
xingchun-chen 5 years ago committed by GitHub
parent
commit
7a483736f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .github/workflows/ci_frontend.yml
  2. 1
      .github/workflows/ci_ut.yml
  3. 6
      dolphinscheduler-ui/.eslintrc
  4. 34
      dolphinscheduler-ui/.eslintrc.yml
  5. 8
      dolphinscheduler-ui/package.json
  6. 10
      dolphinscheduler-ui/src/js/conf/home/index.js
  7. 62
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js
  8. 303
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
  9. 14
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js
  10. 4
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js
  11. 22
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/downChart.js
  12. 3
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/dragZoom.js
  13. 154
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js
  14. 32
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js
  15. 26
      dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/gaugeOption.js
  16. 2
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/instanceConditions/common.js
  17. 4
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
  18. 8
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/util.js
  19. 23
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/_source/tree.js
  20. 6
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/_source/util.js
  21. 9
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/_source/chartConfig.js
  22. 33
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/_source/gantt.js
  23. 2
      dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/_source/common.js
  24. 1
      dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/details/_source/utils.js
  25. 16
      dolphinscheduler-ui/src/js/conf/home/router/index.js
  26. 72
      dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
  27. 36
      dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js
  28. 4
      dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
  29. 18
      dolphinscheduler-ui/src/js/conf/home/store/datasource/actions.js
  30. 8
      dolphinscheduler-ui/src/js/conf/home/store/monitor/actions.js
  31. 18
      dolphinscheduler-ui/src/js/conf/home/store/projects/actions.js
  32. 30
      dolphinscheduler-ui/src/js/conf/home/store/resource/actions.js
  33. 76
      dolphinscheduler-ui/src/js/conf/home/store/security/actions.js
  34. 2
      dolphinscheduler-ui/src/js/conf/home/store/security/state.js
  35. 14
      dolphinscheduler-ui/src/js/conf/home/store/user/actions.js
  36. 4
      dolphinscheduler-ui/src/js/conf/login/index.js
  37. 4
      dolphinscheduler-ui/src/js/module/ana-charts/common.js
  38. 2
      dolphinscheduler-ui/src/js/module/ana-charts/index.js
  39. 6
      dolphinscheduler-ui/src/js/module/ana-charts/packages/bar/index.js
  40. 4
      dolphinscheduler-ui/src/js/module/ana-charts/packages/funnel/index.js
  41. 4
      dolphinscheduler-ui/src/js/module/ana-charts/packages/line/index.js
  42. 10
      dolphinscheduler-ui/src/js/module/ana-charts/packages/pie/index.js
  43. 2
      dolphinscheduler-ui/src/js/module/ana-charts/packages/radar/index.js
  44. 2
      dolphinscheduler-ui/src/js/module/ana-charts/packages/scatter/index.js
  45. 64
      dolphinscheduler-ui/src/js/module/axios/querystring.js
  46. 1
      dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/index.js
  47. 86
      dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/locale/en_US.js
  48. 86
      dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/locale/zh_CN.js
  49. 26
      dolphinscheduler-ui/src/js/module/components/crontab/source/util/index.js
  50. 4
      dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js
  51. 8
      dolphinscheduler-ui/src/js/module/download/index.js
  52. 349
      dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
  53. 349
      dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
  54. 11
      dolphinscheduler-ui/src/js/module/io/index.js
  55. 3
      dolphinscheduler-ui/src/js/module/mixin/disabledState.js
  56. 6
      dolphinscheduler-ui/src/js/module/mixin/listUrlParamHandle.js
  57. 4
      dolphinscheduler-ui/src/js/module/permissions/index.js
  58. 4
      dolphinscheduler-ui/src/js/module/util/index.js
  59. 3
      dolphinscheduler-ui/src/js/module/util/routerUtil.js
  60. 9
      dolphinscheduler-ui/src/js/module/util/util.js
  61. 2
      dolphinscheduler-ui/src/lib/external/config.js
  62. 2
      dolphinscheduler-ui/src/lib/external/email.js

1
.github/workflows/ci_frontend.yml

@ -50,6 +50,7 @@ jobs:
cd dolphinscheduler-ui cd dolphinscheduler-ui
npm install node-sass --unsafe-perm npm install node-sass --unsafe-perm
npm install npm install
npm run lint
npm run build npm run build
License-check: License-check:

1
.github/workflows/ci_ut.yml

@ -75,6 +75,7 @@ jobs:
-Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.core.codeCoveragePlugin=jacoco
-Dsonar.projectKey=apache-dolphinscheduler -Dsonar.projectKey=apache-dolphinscheduler
-Dsonar.login=e4058004bc6be89decf558ac819aa1ecbee57682 -Dsonar.login=e4058004bc6be89decf558ac819aa1ecbee57682
-Dsonar.exclusions=dolphinscheduler-ui/src/**/i18n/locale/*.js
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

6
dolphinscheduler-ui/.eslintrc

@ -1,6 +0,0 @@
globals:
$: true
expect: true
rules:
"no-new": "off"
"no-labels": [2, {"allowLoop": true}]

34
dolphinscheduler-ui/.eslintrc.yml

@ -0,0 +1,34 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
env:
browser: true
es6: true
jquery: true
extends:
- 'plugin:vue/essential'
- standard
globals:
Atomics: readonly
SharedArrayBuffer: readonly
PUBLIC_PATH: readonly
parserOptions:
ecmaVersion: 2018
sourceType: module
plugins:
- vue
rules: {}

8
dolphinscheduler-ui/package.json

@ -8,6 +8,7 @@
"dev": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.config.dev.js", "dev": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.config.dev.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"start": "npm run dev", "start": "npm run dev",
"lint": "eslint ./src --fix",
"build:release": "npm run clean && cross-env NODE_ENV=production PUBLIC_PATH=/dolphinscheduler/ui webpack --config ./build/webpack.config.release.js" "build:release": "npm run clean && cross-env NODE_ENV=production PUBLIC_PATH=/dolphinscheduler/ui webpack --config ./build/webpack.config.release.js"
}, },
"dependencies": { "dependencies": {
@ -50,6 +51,13 @@
"css-loader": "^0.28.8", "css-loader": "^0.28.8",
"cssnano": "4.1.10", "cssnano": "4.1.10",
"env-parse": "^1.0.5", "env-parse": "^1.0.5",
"eslint": "^6.8.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"eslint-plugin-vue": "^6.2.2",
"file-loader": "^5.0.2", "file-loader": "^5.0.2",
"globby": "^8.0.1", "globby": "^8.0.1",
"html-loader": "^0.5.5", "html-loader": "^0.5.5",

10
dolphinscheduler-ui/src/js/conf/home/index.js

@ -31,15 +31,15 @@ import Permissions from '@/module/permissions'
import 'ans-ui/lib/ans-ui.min.css' import 'ans-ui/lib/ans-ui.min.css'
import ans from 'ans-ui/lib/ans-ui.min' import ans from 'ans-ui/lib/ans-ui.min'
import en_US from 'ans-ui/lib/locale/en' // eslint-disable-line import en_US from 'ans-ui/lib/locale/en' // eslint-disable-line
import'normalize.css/normalize.css' import 'normalize.css/normalize.css'
import 'sass/conf/home/index.scss' import 'sass/conf/home/index.scss'
import'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap/dist/css/bootstrap.min.css'
import'bootstrap/dist/js/bootstrap.min.js' import 'bootstrap/dist/js/bootstrap.min.js'
import 'canvg/dist/browser/canvg.min.js' import 'canvg/dist/browser/canvg.min.js'
// Component internationalization // Component internationalization
let useOpt = i18n.globalScope.LOCALE === 'en_US' ? { locale: en_US } : {} const useOpt = i18n.globalScope.LOCALE === 'en_US' ? { locale: en_US } : {}
// Vue.use(ans) // Vue.use(ans)
Vue.use(ans, useOpt) Vue.use(ans, useOpt)
@ -74,7 +74,7 @@ Permissions.request().then(res => {
methods: { methods: {
initApp () { initApp () {
$('.global-loading').hide() $('.global-loading').hide()
let bootstrapTooltip = $.fn.tooltip.noConflict() const bootstrapTooltip = $.fn.tooltip.noConflict()
$.fn.tooltip = bootstrapTooltip $.fn.tooltip = bootstrapTooltip
$('body').tooltip({ $('body').tooltip({
selector: '[data-toggle="tooltip"]', selector: '[data-toggle="tooltip"]',

62
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js

@ -16,7 +16,6 @@
*/ */
import i18n from '@/module/i18n' import i18n from '@/module/i18n'
import Permissions from '@/module/permissions'
/** /**
* Operation bar config * Operation bar config
@ -26,7 +25,7 @@ import Permissions from '@/module/permissions'
* @desc tooltip * @desc tooltip
*/ */
const toolOper = (dagThis) => { const toolOper = (dagThis) => {
let disabled =!!dagThis.$store.state.dag.isDetails// Permissions.getAuth() === false ? false : !dagThis.$store.state.dag.isDetails const disabled = !!dagThis.$store.state.dag.isDetails// Permissions.getAuth() === false ? false : !dagThis.$store.state.dag.isDetails
return [ return [
{ {
code: 'pointer', code: 'pointer',
@ -67,7 +66,7 @@ const toolOper = (dagThis) => {
* @desc tooltip * @desc tooltip
* @code Backend definition identifier * @code Backend definition identifier
*/ */
let publishStatus = [ const publishStatus = [
{ {
id: 0, id: 0,
desc: `${i18n.$t('Unpublished')}`, desc: `${i18n.$t('Unpublished')}`,
@ -90,7 +89,7 @@ let publishStatus = [
* @desc tooltip * @desc tooltip
* @code identifier * @code identifier
*/ */
let runningType = [ const runningType = [
{ {
desc: `${i18n.$t('Start Process')}`, desc: `${i18n.$t('Start Process')}`,
code: 'START_PROCESS' code: 'START_PROCESS'
@ -146,85 +145,85 @@ let runningType = [
* @icoUnicode iconfont * @icoUnicode iconfont
* @isSpin is loading (Need to execute the code block to write if judgment) * @isSpin is loading (Need to execute the code block to write if judgment)
*/ */
let tasksState = { const tasksState = {
'SUBMITTED_SUCCESS': { SUBMITTED_SUCCESS: {
id: 0, id: 0,
desc: `${i18n.$t('Submitted successfully')}`, desc: `${i18n.$t('Submitted successfully')}`,
color: '#A9A9A9', color: '#A9A9A9',
icoUnicode: 'ans-icon-dot-circle', icoUnicode: 'ans-icon-dot-circle',
isSpin: false isSpin: false
}, },
'RUNNING_EXEUTION': { RUNNING_EXEUTION: {
id: 1, id: 1,
desc: `${i18n.$t('Executing')}`, desc: `${i18n.$t('Executing')}`,
color: '#0097e0', color: '#0097e0',
icoUnicode: 'ans-icon-gear', icoUnicode: 'ans-icon-gear',
isSpin: true isSpin: true
}, },
'READY_PAUSE': { READY_PAUSE: {
id: 2, id: 2,
desc: `${i18n.$t('Ready to pause')}`, desc: `${i18n.$t('Ready to pause')}`,
color: '#07b1a3', color: '#07b1a3',
icoUnicode: 'ans-icon-pause-solid', icoUnicode: 'ans-icon-pause-solid',
isSpin: false isSpin: false
}, },
'PAUSE': { PAUSE: {
id: 3, id: 3,
desc: `${i18n.$t('Pause')}`, desc: `${i18n.$t('Pause')}`,
color: '#057c72', color: '#057c72',
icoUnicode: 'ans-icon-pause', icoUnicode: 'ans-icon-pause',
isSpin: false isSpin: false
}, },
'READY_STOP': { READY_STOP: {
id: 4, id: 4,
desc: `${i18n.$t('Ready to stop')}`, desc: `${i18n.$t('Ready to stop')}`,
color: '#FE0402', color: '#FE0402',
icoUnicode: 'ans-icon-coin', icoUnicode: 'ans-icon-coin',
isSpin: false isSpin: false
}, },
'STOP': { STOP: {
id: 5, id: 5,
desc: `${i18n.$t('Stop')}`, desc: `${i18n.$t('Stop')}`,
color: '#e90101', color: '#e90101',
icoUnicode: 'ans-icon-stop', icoUnicode: 'ans-icon-stop',
isSpin: false isSpin: false
}, },
'FAILURE': { FAILURE: {
id: 6, id: 6,
desc: `${i18n.$t('failed')}`, desc: `${i18n.$t('failed')}`,
color: '#000000', color: '#000000',
icoUnicode: 'ans-icon-fail-empty', icoUnicode: 'ans-icon-fail-empty',
isSpin: false isSpin: false
}, },
'SUCCESS': { SUCCESS: {
id: 7, id: 7,
desc: `${i18n.$t('success')}`, desc: `${i18n.$t('success')}`,
color: '#33cc00', color: '#33cc00',
icoUnicode: 'ans-icon-success-empty', icoUnicode: 'ans-icon-success-empty',
isSpin: false isSpin: false
}, },
'NEED_FAULT_TOLERANCE': { NEED_FAULT_TOLERANCE: {
id: 8, id: 8,
desc: `${i18n.$t('Need fault tolerance')}`, desc: `${i18n.$t('Need fault tolerance')}`,
color: '#FF8C00', color: '#FF8C00',
icoUnicode: 'ans-icon-pen', icoUnicode: 'ans-icon-pen',
isSpin: false isSpin: false
}, },
'KILL': { KILL: {
id: 9, id: 9,
desc: `${i18n.$t('kill')}`, desc: `${i18n.$t('kill')}`,
color: '#a70202', color: '#a70202',
icoUnicode: 'ans-icon-minus-circle-empty', icoUnicode: 'ans-icon-minus-circle-empty',
isSpin: false isSpin: false
}, },
'WAITTING_THREAD': { WAITTING_THREAD: {
id: 10, id: 10,
desc: `${i18n.$t('Waiting for thread')}`, desc: `${i18n.$t('Waiting for thread')}`,
color: '#912eed', color: '#912eed',
icoUnicode: 'ans-icon-sand-clock', icoUnicode: 'ans-icon-sand-clock',
isSpin: false isSpin: false
}, },
'WAITTING_DEPEND': { WAITTING_DEPEND: {
id: 11, id: 11,
desc: `${i18n.$t('Waiting for dependence')}`, desc: `${i18n.$t('Waiting for dependence')}`,
color: '#5101be', color: '#5101be',
@ -239,62 +238,61 @@ let tasksState = {
* @desc tooltip * @desc tooltip
* @color color (tree and gantt) * @color color (tree and gantt)
*/ */
let tasksType = { const tasksType = {
'SHELL': { SHELL: {
desc: 'SHELL', desc: 'SHELL',
color: '#646464' color: '#646464'
}, },
'SUB_PROCESS': { SUB_PROCESS: {
desc: 'SUB_PROCESS', desc: 'SUB_PROCESS',
color: '#0097e0' color: '#0097e0'
}, },
'PROCEDURE': { PROCEDURE: {
desc: 'PROCEDURE', desc: 'PROCEDURE',
color: '#525CCD' color: '#525CCD'
}, },
'SQL': { SQL: {
desc: 'SQL', desc: 'SQL',
color: '#7A98A1' color: '#7A98A1'
}, },
'SPARK': { SPARK: {
desc: 'SPARK', desc: 'SPARK',
color: '#E46F13' color: '#E46F13'
}, },
'FLINK': { FLINK: {
desc: 'FLINK', desc: 'FLINK',
color: '#E46F13' color: '#E46F13'
}, },
'MR': { MR: {
desc: 'MapReduce', desc: 'MapReduce',
color: '#A0A5CC' color: '#A0A5CC'
}, },
'PYTHON': { PYTHON: {
desc: 'PYTHON', desc: 'PYTHON',
color: '#FED52D' color: '#FED52D'
}, },
'DEPENDENT': { DEPENDENT: {
desc: 'DEPENDENT', desc: 'DEPENDENT',
color: '#2FBFD8' color: '#2FBFD8'
}, },
'HTTP': { HTTP: {
desc: 'HTTP', desc: 'HTTP',
color: '#E46F13' color: '#E46F13'
}, },
'DATAX': { DATAX: {
desc: 'DataX', desc: 'DataX',
color: '#1fc747' color: '#1fc747'
}, },
'SQOOP': { SQOOP: {
desc: 'SQOOP', desc: 'SQOOP',
color: '#E46F13' color: '#E46F13'
}, },
'CONDITIONS': { CONDITIONS: {
desc: 'CONDITIONS', desc: 'CONDITIONS',
color: '#E46F13' color: '#E46F13'
} }
} }
export { export {
toolOper, toolOper,
publishStatus, publishStatus,

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

@ -24,7 +24,7 @@ import store from '@/conf/home/store'
/** /**
* Prototype method * Prototype method
*/ */
let Dag = function () { const Dag = function () {
this.dag = {} this.dag = {}
this.instance = {} this.instance = {}
} }
@ -49,7 +49,7 @@ Dag.prototype.setConfig = function (o) {
* create dag * create dag
*/ */
Dag.prototype.create = function () { Dag.prototype.create = function () {
let self = this const self = this
jsPlumb.ready(() => { jsPlumb.ready(() => {
JSP.init({ JSP.init({
dag: this.dag, dag: this.dag,
@ -98,36 +98,35 @@ Dag.prototype.toolbarEvent = function ({ item, code, is }) {
* Echo data display * Echo data display
*/ */
Dag.prototype.backfill = function (arg) { Dag.prototype.backfill = function (arg) {
if(arg) { if (arg) {
let locationsValue = store.state.dag.locations let locationsValue = store.state.dag.locations
let locationsValue1 = store.state.dag.locations const locationsValue1 = store.state.dag.locations
let locationsValue2 = store.state.dag.locations const locationsValue2 = store.state.dag.locations
let arr = [] const arr = []
for (let i in locationsValue1) { for (const i in locationsValue1) {
let objs = new Object(); const objs = {}
objs.id = i objs.id = i
arr.push(Object.assign(objs,locationsValue1[i])); //Attributes arr.push(Object.assign(objs, locationsValue1[i])) // Attributes
} }
let tmp = [] const tmp = []
for(let i in locationsValue2) { for (const i in locationsValue2) {
if(locationsValue2[i].targetarr !='' && locationsValue2[i].targetarr.split(',').length>1) { if (locationsValue2[i].targetarr !== '' && locationsValue2[i].targetarr.split(',').length > 1) {
tmp.push(locationsValue2[i]) tmp.push(locationsValue2[i])
} }
} }
function copy (array) { const copy = function (array) {
let newArray = [] const newArray = []
for(let item of array) { for (const item of array) {
newArray.push(item); newArray.push(item)
} }
return newArray; return newArray
} }
const newArr = copy(arr)
let newArr = copy(arr) const getNewArr = function () {
function getNewArr() { for (let i = 0; i < newArr.length; i++) {
for(let i= 0; i<newArr.length; i++) { if (newArr[i].targetarr !== '' && newArr[i].targetarr.split(',').length > 1) {
if(newArr[i].targetarr !='' && newArr[i].targetarr.split(',').length>1) {
newArr[i].targetarr = newArr[i].targetarr.split(',').shift() newArr[i].targetarr = newArr[i].targetarr.split(',').shift()
} }
} }
@ -141,154 +140,154 @@ Dag.prototype.backfill = function (arg) {
* @param {String} idStr id key name * @param {String} idStr id key name
* @param {String} childrenStr children key name * @param {String} childrenStr children key name
*/ */
function fommat({arrayList, pidStr = 'targetarr', idStr = 'id', childrenStr = 'children'}) { const fommat = function ({ arrayList, pidStr = 'targetarr', idStr = 'id', childrenStr = 'children' }) {
let listOjb = {}; // Used to store objects of the form {key: obj} const listOjb = {} // Used to store objects of the form {key: obj}
let treeList = []; // An array to store the final tree structure data const treeList = [] // An array to store the final tree structure data
// Transform the data into {key: obj} format, which is convenient for the following data processing // Transform the data into {key: obj} format, which is convenient for the following data processing
for (let i = 0; i < arrayList.length; i++) { for (let i = 0; i < arrayList.length; i++) {
listOjb[arrayList[i][idStr]] = arrayList[i] listOjb[arrayList[i][idStr]] = arrayList[i]
}
// Format data based on pid
for (let j = 0; j < arrayList.length; j++) {
// Determine if the parent exists
// let haveParent = arrayList[j].targetarr.split(',').length>1?listOjb[arrayList[j].targetarr.split(',')[0]]:listOjb[arrayList[j][pidStr]]
let haveParent = listOjb[arrayList[j][pidStr]]
if (haveParent) {
// If there is no parent children field, create a children field
!haveParent[childrenStr] && (haveParent[childrenStr] = [])
// Insert child in parent
haveParent[childrenStr].push(arrayList[j])
} else {
// If there is no parent, insert directly into the outermost layer
treeList.push(arrayList[j])
}
}
return treeList
} }
let datas = fommat({arrayList: newArr,pidStr: 'targetarr'}) // Format data based on pid
// Count the number of leaf nodes for (let j = 0; j < arrayList.length; j++) {
function getLeafCountTree(json) { // Determine if the parent exists
if(!json.children) { // let haveParent = arrayList[j].targetarr.split(',').length>1?listOjb[arrayList[j].targetarr.split(',')[0]]:listOjb[arrayList[j][pidStr]]
json.colspan = 1; const haveParent = listOjb[arrayList[j][pidStr]]
return 1; if (haveParent) {
// If there is no parent children field, create a children field
!haveParent[childrenStr] && (haveParent[childrenStr] = [])
// Insert child in parent
haveParent[childrenStr].push(arrayList[j])
} else { } else {
let leafCount = 0; // If there is no parent, insert directly into the outermost layer
for(let i = 0 ; i < json.children.length ; i++){ treeList.push(arrayList[j])
leafCount = leafCount + getLeafCountTree(json.children[i]);
}
json.colspan = leafCount;
return leafCount;
} }
} }
// Number of tree node levels return treeList
let countTree = getLeafCountTree(datas[0]) }
function getMaxFloor(treeData) { const datas = fommat({ arrayList: newArr, pidStr: 'targetarr' })
let max = 0 // Count the number of leaf nodes
function each (data, floor) { const getLeafCountTree = function (json) {
data.forEach(e => { if (!json.children) {
e.floor = floor json.colspan = 1
e.x=floor*170 return 1
if (floor > max) { } else {
max = floor let leafCount = 0
} for (let i = 0; i < json.children.length; i++) {
if (e.children) { leafCount = leafCount + getLeafCountTree(json.children[i])
each(e.children, floor + 1)
}
})
}
each(treeData,1)
return max
} }
getMaxFloor(datas) json.colspan = leafCount
// The last child of each node return leafCount
let lastchildren = []; }
forxh(datas); }
function forxh(list) { // Number of tree node levels
for (let i = 0; i < list.length; i++) { const countTree = getLeafCountTree(datas[0])
let chlist = list[i]; const getMaxFloor = function (treeData) {
if (chlist.children) { let max = 0
forxh(chlist.children); function each (data, floor) {
} else { data.forEach(e => {
lastchildren.push(chlist); e.floor = floor
} e.x = floor * 170
if (floor > max) {
max = floor
} }
} if (e.children) {
// Get all parent nodes above the leaf node each(e.children, floor + 1)
function treeFindPath (tree, func, path,n) {
if (!tree) return []
for (const data of tree) {
path.push(data.name)
if (func(data)) return path
if (data.children) {
const findChildren = treeFindPath(data.children, func, path,n)
if (findChildren.length) return findChildren
}
path.pop()
} }
return [] })
} }
function toLine(data){ each(treeData, 1)
return data.reduce((arrData, {id, name, targetarr, x, y, children = []}) => return max
arrData.concat([{id, name, targetarr, x, y}], toLine(children)), []) }
getMaxFloor(datas)
// The last child of each node
let lastchildren = []
const forxh = function (list) {
for (let i = 0; i < list.length; i++) {
const chlist = list[i]
if (chlist.children) {
forxh(chlist.children)
} else {
lastchildren.push(chlist)
} }
let listarr = toLine(datas); }
let listarrs = toLine(datas) }
let dataObject = {} forxh(datas)
for(let i = 0; i<listarrs.length; i++) { // Get all parent nodes above the leaf node
delete(listarrs[i].id) const treeFindPath = function (tree, func, path, n) {
if (!tree) return []
for (const data of tree) {
path.push(data.name)
if (func(data)) return path
if (data.children) {
const findChildren = treeFindPath(data.children, func, path, n)
if (findChildren.length) return findChildren
} }
path.pop()
}
return []
}
const toLine = function (data) {
return data.reduce((arrData, { id, name, targetarr, x, y, children = [] }) =>
arrData.concat([{ id, name, targetarr, x, y }], toLine(children)), [])
}
const listarr = toLine(datas)
const listarrs = toLine(datas)
const dataObject = {}
for (let i = 0; i < listarrs.length; i++) {
delete (listarrs[i].id)
}
for(let a = 0; a<listarr.length; a++) { for (let a = 0; a < listarr.length; a++) {
dataObject[listarr[a].id] = listarrs[a] dataObject[listarr[a].id] = listarrs[a]
} }
// Comparison function // Comparison function
function createComparisonFunction(propertyName) { const createComparisonFunction = function (propertyName) {
return function (object1,object2) { return function (object1, object2) {
let value1 = object1[propertyName]; const value1 = object1[propertyName]
let value2 = object2[propertyName]; const value2 = object2[propertyName]
if (value1 < value2) { if (value1 < value2) {
return -1; return -1
} else if (value1 > value2) { } else if (value1 > value2) {
return 1; return 1
} else { } else {
return 0; return 0
}
};
} }
}
}
lastchildren = lastchildren.sort(createComparisonFunction('x')) lastchildren = lastchildren.sort(createComparisonFunction('x'))
// Coordinate value of each leaf node // Coordinate value of each leaf node
for(let a = 0; a<lastchildren.length; a++) { for (let a = 0; a < lastchildren.length; a++) {
dataObject[lastchildren[a].id].y = (a+1)*120 dataObject[lastchildren[a].id].y = (a + 1) * 120
} }
for(let i =0 ; i<lastchildren.length; i++) { for (let i = 0; i < lastchildren.length; i++) {
let node = treeFindPath(datas, data=> data.targetarr===lastchildren[i].targetarr,[],i+1) const node = treeFindPath(datas, data => data.targetarr === lastchildren[i].targetarr, [], i + 1)
for(let j = 0; j<node.length; j++) { for (let j = 0; j < node.length; j++) {
for(let k= 0; k<listarrs.length; k++) { for (let k = 0; k < listarrs.length; k++) {
if(node[j] == listarrs[k].name) { if (node[j] === listarrs[k].name) {
listarrs[k].y = (i+1)*120 listarrs[k].y = (i + 1) * 120
}
}
}
}
for(let i = 0; i<tmp.length; i++) {
for(let objs in dataObject) {
if(tmp[i].name == dataObject[objs].name) {
dataObject[objs].targetarr = tmp[i].targetarr
}
} }
} }
for(let a = 0; a<lastchildren.length; a++) { }
dataObject[lastchildren[a].id].y = (a+1)*120 }
} for (let i = 0; i < tmp.length; i++) {
if(countTree>1) { for (const objs in dataObject) {
dataObject[Object.keys(locationsValue1)[0]].y = (countTree/2)*120+50 if (tmp[i].name === dataObject[objs].name) {
dataObject[objs].targetarr = tmp[i].targetarr
} }
}
}
for (let a = 0; a < lastchildren.length; a++) {
dataObject[lastchildren[a].id].y = (a + 1) * 120
}
if (countTree > 1) {
dataObject[Object.keys(locationsValue1)[0]].y = (countTree / 2) * 120 + 50
}
locationsValue = dataObject locationsValue = dataObject
let self = this const self = this
jsPlumb.ready(() => { jsPlumb.ready(() => {
JSP.init({ JSP.init({
dag: this.dag, dag: this.dag,
@ -310,7 +309,7 @@ Dag.prototype.backfill = function (arg) {
}) })
}) })
} else { } else {
let self = this const self = this
jsPlumb.ready(() => { jsPlumb.ready(() => {
JSP.init({ JSP.init({
dag: this.dag, dag: this.dag,

14
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js

@ -43,7 +43,7 @@ const cycleList = [
* cycle value * cycle value
*/ */
const dateValueList = { const dateValueList = {
'hour': [ hour: [
{ {
value: 'last1Hour', value: 'last1Hour',
label: `${i18n.$t('Last1Hour')}` label: `${i18n.$t('Last1Hour')}`
@ -57,7 +57,7 @@ const dateValueList = {
label: `${i18n.$t('Last3Hours')}` label: `${i18n.$t('Last3Hours')}`
} }
], ],
'day': [ day: [
{ {
value: 'today', value: 'today',
label: `${i18n.$t('today')}` label: `${i18n.$t('today')}`
@ -79,7 +79,7 @@ const dateValueList = {
label: `${i18n.$t('Last7Days')}` label: `${i18n.$t('Last7Days')}`
} }
], ],
'week': [ week: [
{ {
value: 'thisWeek', value: 'thisWeek',
label: `${i18n.$t('ThisWeek')}` label: `${i18n.$t('ThisWeek')}`
@ -117,7 +117,7 @@ const dateValueList = {
label: `${i18n.$t('LastSunday')}` label: `${i18n.$t('LastSunday')}`
} }
], ],
'month': [ month: [
{ {
value: 'thisMonth', value: 'thisMonth',
label: `${i18n.$t('ThisMonth')}` label: `${i18n.$t('ThisMonth')}`
@ -221,15 +221,15 @@ const sqlTypeList = [
const positionList = [ const positionList = [
{ {
id: 'PARAMETER', id: 'PARAMETER',
code: "Parameter" code: 'Parameter'
}, },
{ {
id: 'BODY', id: 'BODY',
code: "Body" code: 'Body'
}, },
{ {
id: 'HEADERS', id: 'HEADERS',
code: "Headers" code: 'Headers'
} }
] ]
const nodeStatusList = [ const nodeStatusList = [

4
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js

@ -21,7 +21,7 @@ import store from '@/conf/home/store'
import router from '@/conf/home/router' import router from '@/conf/home/router'
import { uuid, findComponentDownward } from '@/module/util/' import { uuid, findComponentDownward } from '@/module/util/'
let Affirm = {} const Affirm = {}
let $root = {} let $root = {}
let $routerType = '' let $routerType = ''
let $isPop = true let $isPop = true
@ -59,7 +59,7 @@ Affirm.paramVerification = (name) => {
if (!$isPop) { if (!$isPop) {
return true return true
} }
let dagStore = store.state.dag const dagStore = store.state.dag
let flag = false let flag = false
if ($routerType === 'definition-create') { if ($routerType === 'definition-create') {
// No nodes jump out directly // No nodes jump out directly

22
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/downChart.js vendored

@ -21,7 +21,7 @@ import { tasksAll } from './util'
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import { findComponentDownward } from '@/module/util/' import { findComponentDownward } from '@/module/util/'
let DownChart = function () { const DownChart = function () {
this.dag = {} this.dag = {}
} }
@ -31,10 +31,10 @@ let DownChart = function () {
DownChart.prototype.maxVal = function () { DownChart.prototype.maxVal = function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// All nodes // All nodes
let tasksAllList = tasksAll() const tasksAllList = tasksAll()
let dom = $('.dag-container') const dom = $('.dag-container')
let y = parseInt(_.maxBy(tasksAllList, 'y').y + 60) const y = parseInt(_.maxBy(tasksAllList, 'y').y + 60)
let x = parseInt(_.maxBy(tasksAllList, 'x').x + 100) const x = parseInt(_.maxBy(tasksAllList, 'x').x + 100)
resolve({ resolve({
width: (x > 600 ? x : dom.width()) + 100, width: (x > 600 ? x : dom.width()) + 100,
@ -60,9 +60,9 @@ DownChart.prototype.download = function ({ dagThis }) {
// svg handle // svg handle
const nodesToRecover = [] const nodesToRecover = []
const nodesToRemove = [] const nodesToRemove = []
let parentNode = node.parentNode const parentNode = node.parentNode
let svg = node.outerHTML.trim() const svg = node.outerHTML.trim()
let canvas = document.createElement('canvas') const canvas = document.createElement('canvas')
canvg(canvas, svg) canvg(canvas, svg)
if (node.style.position) { if (node.style.position) {
canvas.style.position += node.style.position canvas.style.position += node.style.position
@ -102,10 +102,10 @@ DownChart.prototype.download = function ({ dagThis }) {
heigth: height, heigth: height,
useCORS: true // Enable cross-domain configuration useCORS: true // Enable cross-domain configuration
}).then((canvas) => { }).then((canvas) => {
let name = `${this.dag.name}.png` const name = `${this.dag.name}.png`
let url = canvas.toDataURL('image/png', 1) const url = canvas.toDataURL('image/png', 1)
setTimeout(() => { setTimeout(() => {
let triggerDownload = $('<a>').attr('href', url).attr('download', name).appendTo('body') const triggerDownload = $('<a>').attr('href', url).attr('download', name).appendTo('body')
triggerDownload[0].click() triggerDownload[0].click()
triggerDownload.remove() triggerDownload.remove()
}, 100) }, 100)

3
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/dragZoom.js

@ -23,7 +23,7 @@ const DragZoom = function () {
} }
DragZoom.prototype.init = function () { DragZoom.prototype.init = function () {
let $canvas = $('#canvas') const $canvas = $('#canvas')
this.element = d3.select('#canvas') this.element = d3.select('#canvas')
this.zoom = d3.behavior.zoom() this.zoom = d3.behavior.zoom()
.scaleExtent([0.5, 2]) .scaleExtent([0.5, 2])
@ -35,5 +35,4 @@ DragZoom.prototype.init = function () {
this.element.call(this.zoom).on('dblclick.zoom', null) this.element.call(this.zoom).on('dblclick.zoom', null)
} }
export default new DragZoom() export default new DragZoom()

154
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js

@ -24,7 +24,6 @@ import { jsPlumb } from 'jsplumb'
import DragZoom from './dragZoom' import DragZoom from './dragZoom'
import store from '@/conf/home/store' import store from '@/conf/home/store'
import router from '@/conf/home/router' import router from '@/conf/home/router'
import Permissions from '@/module/permissions'
import { uuid, findComponentDownward } from '@/module/util/' import { uuid, findComponentDownward } from '@/module/util/'
import { import {
@ -32,10 +31,11 @@ import {
rtTasksTpl, rtTasksTpl,
setSvgColor, setSvgColor,
saveTargetarr, saveTargetarr,
rtTargetarrArr } from './util' rtTargetarrArr
} from './util'
import mStart from '@/conf/home/pages/projects/pages/definition/pages/list/_source/start' import mStart from '@/conf/home/pages/projects/pages/definition/pages/list/_source/start'
let JSP = function () { const JSP = function () {
this.dag = {} this.dag = {}
this.selectedElement = {} this.selectedElement = {}
@ -75,7 +75,7 @@ JSP.prototype.init = function ({ dag, instance, options }) {
this.setConfig({ this.setConfig({
isDrag: !store.state.dag.isDetails, isDrag: !store.state.dag.isDetails,
isAttachment: false, isAttachment: false,
isNewNodes: !store.state.dag.isDetails,//Permissions.getAuth() === false ? false : !store.state.dag.isDetails, isNewNodes: !store.state.dag.isDetails, // Permissions.getAuth() === false ? false : !store.state.dag.isDetails,
isDblclick: true, isDblclick: true,
isContextmenu: true, isContextmenu: true,
isClick: false isClick: false
@ -105,7 +105,7 @@ JSP.prototype.setConfig = function (o) {
* Node binding event * Node binding event
*/ */
JSP.prototype.tasksEvent = function (selfId) { JSP.prototype.tasksEvent = function (selfId) {
let tasks = $(`#${selfId}`) const tasks = $(`#${selfId}`)
// Bind right event // Bind right event
tasks.on('contextmenu', e => { tasks.on('contextmenu', e => {
this.tasksContextmenu(e) this.tasksContextmenu(e)
@ -129,7 +129,7 @@ JSP.prototype.tasksEvent = function (selfId) {
JSP.prototype.draggable = function () { JSP.prototype.draggable = function () {
if (this.config.isNewNodes) { if (this.config.isNewNodes) {
let selfId let selfId
let self = this const self = this
$('.toolbar-btn .roundedRect').draggable({ $('.toolbar-btn .roundedRect').draggable({
scope: 'plant', scope: 'plant',
helper: 'clone', helper: 'clone',
@ -146,7 +146,7 @@ JSP.prototype.draggable = function () {
drop: function (ev, ui) { drop: function (ev, ui) {
let id = 'tasks-' + Math.ceil(Math.random() * 100000) // eslint-disable-line let id = 'tasks-' + Math.ceil(Math.random() * 100000) // eslint-disable-line
// Get mouse coordinates // Get mouse coordinates
let left = parseInt(ui.offset.left - $(this).offset().left) const left = parseInt(ui.offset.left - $(this).offset().left)
let top = parseInt(ui.offset.top - $(this).offset().top) - 10 let top = parseInt(ui.offset.top - $(this).offset().top) - 10
if (top < 25) { if (top < 25) {
top = 25 top = 25
@ -162,7 +162,7 @@ JSP.prototype.draggable = function () {
})) }))
// Get the generated node // Get the generated node
let thisDom = jsPlumb.getSelector('.statemachine-demo .w') const thisDom = jsPlumb.getSelector('.statemachine-demo .w')
// Generating a connection node // Generating a connection node
self.JspInstance.batch(() => { self.JspInstance.batch(() => {
@ -193,13 +193,13 @@ JSP.prototype.jsonHandle = function ({ largeJson, locations }) {
$('#canvas').append(rtTasksTpl({ $('#canvas').append(rtTasksTpl({
id: v.id, id: v.id,
name: v.name, name: v.name,
x: locations[v.id]['x'], x: locations[v.id].x,
y: locations[v.id]['y'], y: locations[v.id].y,
targetarr: locations[v.id]['targetarr'], targetarr: locations[v.id].targetarr,
isAttachment: this.config.isAttachment, isAttachment: this.config.isAttachment,
taskType: v.type, taskType: v.type,
runFlag: v.runFlag, runFlag: v.runFlag,
nodenumber: locations[v.id]['nodenumber'], nodenumber: locations[v.id].nodenumber
})) }))
// contextmenu event // contextmenu event
@ -263,29 +263,29 @@ JSP.prototype.initNode = function (el) {
*/ */
JSP.prototype.tasksContextmenu = function (event) { JSP.prototype.tasksContextmenu = function (event) {
if (this.config.isContextmenu) { if (this.config.isContextmenu) {
let routerName = router.history.current.name const routerName = router.history.current.name
// state // state
let isOne = routerName === 'projects-definition-details' && this.dag.releaseState !== 'NOT_RELEASE' const isOne = routerName === 'projects-definition-details' && this.dag.releaseState !== 'NOT_RELEASE'
// hide // hide
let isTwo = store.state.dag.isDetails const isTwo = store.state.dag.isDetails
let html = [ const html = [
`<a href="javascript:" id="startRunning" class="${isOne ? '' : 'disbled'}"><em class="ans-icon-play"></em><span>${i18n.$t('Start')}</span></a>`, `<a href="javascript:" id="startRunning" class="${isOne ? '' : 'disbled'}"><em class="ans-icon-play"></em><span>${i18n.$t('Start')}</span></a>`,
`<a href="javascript:" id="editNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-edit"></em><span>${i18n.$t('Edit')}</span></a>`, `<a href="javascript:" id="editNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-edit"></em><span>${i18n.$t('Edit')}</span></a>`,
`<a href="javascript:" id="copyNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-copy"></em><span>${i18n.$t('Copy')}</span></a>`, `<a href="javascript:" id="copyNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-copy"></em><span>${i18n.$t('Copy')}</span></a>`,
`<a href="javascript:" id="removeNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-trash"></em><span>${i18n.$t('Delete')}</span></a>` `<a href="javascript:" id="removeNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-trash"></em><span>${i18n.$t('Delete')}</span></a>`
] ]
let operationHtml = () => { const operationHtml = () => {
return html.splice(',') return html.splice(',')
} }
let e = event const e = event
let $id = e.currentTarget.id const $id = e.currentTarget.id
let $contextmenu = $('#contextmenu') const $contextmenu = $('#contextmenu')
let $name = $(`#${$id}`).find('.name-p').text() const $name = $(`#${$id}`).find('.name-p').text()
let $left = e.pageX + document.body.scrollLeft - 5 const $left = e.pageX + document.body.scrollLeft - 5
let $top = e.pageY + document.body.scrollTop - 5 const $top = e.pageY + document.body.scrollTop - 5
$contextmenu.css({ $contextmenu.css({
left: $left, left: $left,
top: $top, top: $top,
@ -297,10 +297,10 @@ JSP.prototype.tasksContextmenu = function (event) {
if (isOne) { if (isOne) {
// start run // start run
$('#startRunning').on('click', () => { $('#startRunning').on('click', () => {
let name = store.state.dag.name const name = store.state.dag.name
let id = router.history.current.params.id const id = router.history.current.params.id
store.dispatch('dag/getStartCheck', { processDefinitionId: id }).then(res => { store.dispatch('dag/getStartCheck', { processDefinitionId: id }).then(res => {
let modal = Vue.$modal.dialog({ const modal = Vue.$modal.dialog({
closable: false, closable: false,
showMask: true, showMask: true,
escClose: true, escClose: true,
@ -334,7 +334,7 @@ JSP.prototype.tasksContextmenu = function (event) {
} }
if (!isTwo) { if (!isTwo) {
// edit node // edit node
$(`#editNodes`).click(ev => { $('#editNodes').click(ev => {
findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({ findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({
id: $id, id: $id,
type: $(`#${$id}`).attr('data-tasks-type') type: $(`#${$id}`).attr('data-tasks-type')
@ -359,7 +359,7 @@ JSP.prototype.tasksContextmenu = function (event) {
JSP.prototype.tasksDblclick = function (e) { JSP.prototype.tasksDblclick = function (e) {
// Untie event // Untie event
if (this.config.isDblclick) { if (this.config.isDblclick) {
let id = $(e.currentTarget.offsetParent).attr('id') const id = $(e.currentTarget.offsetParent).attr('id')
findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({ findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({
id: id, id: id,
@ -373,10 +373,10 @@ JSP.prototype.tasksDblclick = function (e) {
*/ */
JSP.prototype.tasksClick = function (e) { JSP.prototype.tasksClick = function (e) {
let $id let $id
let self = this const self = this
let $body = $(`body`) const $body = $('body')
if (this.config.isClick) { if (this.config.isClick) {
let $connect = this.selectedElement.connect const $connect = this.selectedElement.connect
$('.w').removeClass('jtk-tasks-active') $('.w').removeClass('jtk-tasks-active')
$(e.currentTarget).addClass('jtk-tasks-active') $(e.currentTarget).addClass('jtk-tasks-active')
if ($connect) { if ($connect) {
@ -406,7 +406,7 @@ JSP.prototype.tasksClick = function (e) {
* paste * paste
*/ */
JSP.prototype.removePaste = function () { JSP.prototype.removePaste = function () {
let $body = $(`body`) const $body = $('body')
// Unbind copy and paste events // Unbind copy and paste events
$body.unbind('copy').unbind('paste') $body.unbind('copy').unbind('paste')
// Remove selected node parameters // Remove selected node parameters
@ -421,7 +421,7 @@ JSP.prototype.removePaste = function () {
JSP.prototype.connectClick = function (e) { JSP.prototype.connectClick = function (e) {
// Set svg color // Set svg color
setSvgColor(e, '#0097e0') setSvgColor(e, '#0097e0')
let $id = this.selectedElement.id const $id = this.selectedElement.id
if ($id) { if ($id) {
$(`#${$id}`).removeClass('jtk-tasks-active') $(`#${$id}`).removeClass('jtk-tasks-active')
this.selectedElement.id = null this.selectedElement.id = null
@ -434,24 +434,10 @@ JSP.prototype.connectClick = function (e) {
* @param {Pointer} * @param {Pointer}
*/ */
JSP.prototype.handleEventPointer = function (is) { JSP.prototype.handleEventPointer = function (is) {
let wDom = $('.w')
this.setConfig({ this.setConfig({
isClick: is, isClick: is,
isAttachment: false isAttachment: false
}) })
// wDom.removeClass('jtk-ep')
// if (!is) {
// wDom.removeClass('jtk-tasks-active')
// this.selectedElement = {}
// _.map($('#canvas svg'), v => {
// if ($(v).attr('class')) {
// _.map($(v).find('path'), v1 => {
// $(v1).attr('fill', '#555')
// $(v1).attr('stroke', '#555')
// })
// }
// })
// }
} }
/** /**
@ -459,7 +445,7 @@ JSP.prototype.handleEventPointer = function (is) {
* @param {Line} * @param {Line}
*/ */
JSP.prototype.handleEventLine = function (is) { JSP.prototype.handleEventLine = function (is) {
let wDom = $('.w') const wDom = $('.w')
this.setConfig({ this.setConfig({
isAttachment: is isAttachment: is
}) })
@ -471,8 +457,8 @@ JSP.prototype.handleEventLine = function (is) {
* @param {Remove} * @param {Remove}
*/ */
JSP.prototype.handleEventRemove = function () { JSP.prototype.handleEventRemove = function () {
let $id = this.selectedElement.id || null const $id = this.selectedElement.id || null
let $connect = this.selectedElement.connect || null const $connect = this.selectedElement.connect || null
if ($id) { if ($id) {
this.removeNodes(this.selectedElement.id) this.removeNodes(this.selectedElement.id)
} else { } else {
@ -489,9 +475,9 @@ JSP.prototype.handleEventRemove = function () {
JSP.prototype.removeNodes = function ($id) { JSP.prototype.removeNodes = function ($id) {
// Delete node processing(data-targetarr) // Delete node processing(data-targetarr)
_.map(tasksAll(), v => { _.map(tasksAll(), v => {
let targetarr = v.targetarr.split(',') const targetarr = v.targetarr.split(',')
if (targetarr.length) { if (targetarr.length) {
let newArr = _.filter(targetarr, v1 => v1 !== $id) const newArr = _.filter(targetarr, v1 => v1 !== $id)
$(`#${v.id}`).attr('data-targetarr', newArr.toString()) $(`#${v.id}`).attr('data-targetarr', newArr.toString())
} }
}) })
@ -502,7 +488,7 @@ JSP.prototype.removeNodes = function ($id) {
$(`#${$id}`).remove() $(`#${$id}`).remove()
// callback onRemoveNodes event // callback onRemoveNodes event
this.options&&this.options.onRemoveNodes&&this.options.onRemoveNodes($id) this.options && this.options.onRemoveNodes && this.options.onRemoveNodes($id)
} }
/** /**
@ -513,15 +499,15 @@ JSP.prototype.removeConnect = function ($connect) {
return return
} }
// Remove connections and remove node and node dependencies // Remove connections and remove node and node dependencies
let targetId = $connect.targetId const targetId = $connect.targetId
let sourceId = $connect.sourceId const sourceId = $connect.sourceId
let targetarr = rtTargetarrArr(targetId) let targetarr = rtTargetarrArr(targetId)
if (targetarr.length) { if (targetarr.length) {
targetarr = _.filter(targetarr, v => v !== sourceId) targetarr = _.filter(targetarr, v => v !== sourceId)
$(`#${targetId}`).attr('data-targetarr', targetarr.toString()) $(`#${targetId}`).attr('data-targetarr', targetarr.toString())
} }
if ($(`#${sourceId}`).attr('data-tasks-type')=='CONDITIONS') { if ($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS') {
$(`#${sourceId}`).attr('data-nodenumber',Number($(`#${sourceId}`).attr('data-nodenumber'))-1) $(`#${sourceId}`).attr('data-nodenumber', Number($(`#${sourceId}`).attr('data-nodenumber')) - 1)
} }
this.JspInstance.deleteConnection($connect) this.JspInstance.deleteConnection($connect)
@ -533,24 +519,24 @@ JSP.prototype.removeConnect = function ($connect) {
*/ */
JSP.prototype.copyNodes = function ($id) { JSP.prototype.copyNodes = function ($id) {
let newNodeInfo = _.cloneDeep(_.find(store.state.dag.tasks, v => v.id === $id)) let newNodeInfo = _.cloneDeep(_.find(store.state.dag.tasks, v => v.id === $id))
let newNodePors = store.state.dag.locations[$id] const newNodePors = store.state.dag.locations[$id]
// Unstored nodes do not allow replication // Unstored nodes do not allow replication
if (!newNodePors) { if (!newNodePors) {
return return
} }
// Generate random id // Generate random id
let newUuId = `${uuid() + uuid()}` const newUuId = `${uuid() + uuid()}`
let id = newNodeInfo.id.length > 8 ? newNodeInfo.id.substr(0, 7) : newNodeInfo.id const id = newNodeInfo.id.length > 8 ? newNodeInfo.id.substr(0, 7) : newNodeInfo.id
let name = newNodeInfo.name.length > 8 ? newNodeInfo.name.substr(0, 7) : newNodeInfo.name const name = newNodeInfo.name.length > 8 ? newNodeInfo.name.substr(0, 7) : newNodeInfo.name
// new id // new id
let newId = `${id || ''}-${newUuId}` const newId = `${id || ''}-${newUuId}`
// new name // new name
let newName = `${name || ''}-${newUuId}` const newName = `${name || ''}-${newUuId}`
// coordinate x // coordinate x
let newX = newNodePors.x + 100 const newX = newNodePors.x + 100
// coordinate y // coordinate y
let newY = newNodePors.y + 40 const newY = newNodePors.y + 40
// Generate template node // Generate template node
$('#canvas').append(rtTasksTpl({ $('#canvas').append(rtTasksTpl({
@ -563,7 +549,7 @@ JSP.prototype.copyNodes = function ($id) {
})) }))
// Get the generated node // Get the generated node
let thisDom = jsPlumb.getSelector('.statemachine-demo .w') const thisDom = jsPlumb.getSelector('.statemachine-demo .w')
// Copy node information // Copy node information
newNodeInfo = Object.assign(newNodeInfo, { newNodeInfo = Object.assign(newNodeInfo, {
@ -604,7 +590,7 @@ JSP.prototype.handleEventScreen = function ({ item, is }) {
item.icon = 'ans-icon-max' item.icon = 'ans-icon-max'
screenOpen = false screenOpen = false
} }
let $mainLayoutModel = $('.main-layout-model') const $mainLayoutModel = $('.main-layout-model')
if (screenOpen) { if (screenOpen) {
$mainLayoutModel.addClass('dag-screen') $mainLayoutModel.addClass('dag-screen')
} else { } else {
@ -619,21 +605,21 @@ JSP.prototype.handleEventScreen = function ({ item, is }) {
*/ */
JSP.prototype.saveStore = function () { JSP.prototype.saveStore = function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let connects = [] const connects = []
let locations = {} const locations = {}
let tasks = [] const tasks = []
let is = (id) => { const is = (id) => {
return !!_.filter(tasksAll(), v => v.id === id).length return !!_.filter(tasksAll(), v => v.id === id).length
} }
// task // task
_.map(_.cloneDeep(store.state.dag.tasks), v => { _.map(_.cloneDeep(store.state.dag.tasks), v => {
if (is(v.id)) { if (is(v.id)) {
let preTasks = [] const preTasks = []
let id = $(`#${v.id}`) const id = $(`#${v.id}`)
let tar = id.attr('data-targetarr') const tar = id.attr('data-targetarr')
let idDep = tar ? id.attr('data-targetarr').split(',') : [] const idDep = tar ? id.attr('data-targetarr').split(',') : []
if (idDep.length) { if (idDep.length) {
_.map(idDep, v1 => { _.map(idDep, v1 => {
preTasks.push($(`#${v1}`).find('.name-p').text()) preTasks.push($(`#${v1}`).find('.name-p').text())
@ -655,12 +641,11 @@ JSP.prototype.saveStore = function () {
_.map(this.JspInstance.getConnections(), v => { _.map(this.JspInstance.getConnections(), v => {
connects.push({ connects.push({
'endPointSourceId': v.sourceId, endPointSourceId: v.sourceId,
'endPointTargetId': v.targetId endPointTargetId: v.targetId
}) })
}) })
_.map(tasksAll(), v => { _.map(tasksAll(), v => {
locations[v.id] = { locations[v.id] = {
name: v.name, name: v.name,
@ -671,7 +656,6 @@ JSP.prototype.saveStore = function () {
} }
}) })
// Storage node // Storage node
store.commit('dag/setTasks', tasks) store.commit('dag/setTasks', tasks)
// Store coordinate information // Store coordinate information
@ -692,14 +676,14 @@ JSP.prototype.saveStore = function () {
JSP.prototype.handleEvent = function () { JSP.prototype.handleEvent = function () {
this.JspInstance.bind('beforeDrop', function (info) { this.JspInstance.bind('beforeDrop', function (info) {
let sourceId = info['sourceId']// 出 const sourceId = info.sourceId// 出
let targetId = info['targetId']// 入 const targetId = info.targetId// 入
/** /**
* Recursive search for nodes * Recursive search for nodes
*/ */
let recursiveVal let recursiveVal
const recursiveTargetarr = (arr, targetId) => { const recursiveTargetarr = (arr, targetId) => {
for (let i in arr) { for (const i in arr) {
if (arr[i] === targetId) { if (arr[i] === targetId) {
recursiveVal = targetId recursiveVal = targetId
} else { } else {
@ -719,10 +703,10 @@ JSP.prototype.handleEvent = function () {
return false return false
} }
if ($(`#${sourceId}`).attr('data-tasks-type')=='CONDITIONS' && $(`#${sourceId}`).attr('data-nodenumber')==2) { if ($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS' && $(`#${sourceId}`).attr('data-nodenumber') === 2) {
return false return false
} else { } else {
$(`#${sourceId}`).attr('data-nodenumber',Number($(`#${sourceId}`).attr('data-nodenumber'))+1) $(`#${sourceId}`).attr('data-nodenumber', Number($(`#${sourceId}`).attr('data-nodenumber')) + 1)
} }
// Storage node dependency information // Storage node dependency information
@ -744,7 +728,7 @@ JSP.prototype.jspBackfill = function ({ connects, locations, largeJson }) {
locations: locations locations: locations
}) })
let wNodes = jsPlumb.getSelector('.statemachine-demo .w') const wNodes = jsPlumb.getSelector('.statemachine-demo .w')
// Backfill line // Backfill line
this.JspInstance.batch(() => { this.JspInstance.batch(() => {

32
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js

@ -23,7 +23,7 @@ import store from '@/conf/home/store'
* Node, to array * Node, to array
*/ */
const rtTargetarrArr = (id) => { const rtTargetarrArr = (id) => {
let ids = $(`#${id}`).attr('data-targetarr') const ids = $(`#${id}`).attr('data-targetarr')
return ids ? ids.split(',') : [] return ids ? ids.split(',') : []
} }
@ -31,8 +31,8 @@ const rtTargetarrArr = (id) => {
* Store node id to targetarr * Store node id to targetarr
*/ */
const saveTargetarr = (valId, domId) => { const saveTargetarr = (valId, domId) => {
let $target = $(`#${domId}`) const $target = $(`#${domId}`)
let targetStr = $target.attr('data-targetarr') ? $target.attr('data-targetarr') + `,${valId}` : `${valId}` const targetStr = $target.attr('data-targetarr') ? $target.attr('data-targetarr') + `,${valId}` : `${valId}`
$target.attr('data-targetarr', targetStr) $target.attr('data-targetarr', targetStr)
} }
@ -44,20 +44,20 @@ const rtBantpl = () => {
* return node html * return node html
*/ */
const rtTasksTpl = ({ id, name, x, y, targetarr, isAttachment, taskType, runFlag, nodenumber }) => { const rtTasksTpl = ({ id, name, x, y, targetarr, isAttachment, taskType, runFlag, nodenumber }) => {
let tpl = `` let tpl = ''
tpl += `<div class="w jtk-draggable jtk-droppable jtk-endpoint-anchor jtk-connected ${isAttachment ? 'jtk-ep' : ''}" data-targetarr="${targetarr || ''}" data-nodenumber="${nodenumber || 0}" data-tasks-type="${taskType}" id="${id}" style="left: ${x}px; top: ${y}px;">` tpl += `<div class="w jtk-draggable jtk-droppable jtk-endpoint-anchor jtk-connected ${isAttachment ? 'jtk-ep' : ''}" data-targetarr="${targetarr || ''}" data-nodenumber="${nodenumber || 0}" data-tasks-type="${taskType}" id="${id}" style="left: ${x}px; top: ${y}px;">`
tpl += `<div>` tpl += '<div>'
tpl += `<div class="state-p"></div>` tpl += '<div class="state-p"></div>'
tpl += `<div class="icos icos-${taskType}"></div>` tpl += `<div class="icos icos-${taskType}"></div>`
tpl += `<span class="name-p">${name}</span>` tpl += `<span class="name-p">${name}</span>`
tpl += `</div>` tpl += '</div>'
tpl += `<div class="ep"></div>` tpl += '<div class="ep"></div>'
tpl += `<div class="ban-p">` tpl += '<div class="ban-p">'
if (runFlag === 'FORBIDDEN') { if (runFlag === 'FORBIDDEN') {
tpl += rtBantpl() tpl += rtBantpl()
} }
tpl += `</div>` tpl += '</div>'
tpl += `</div>` tpl += '</div>'
return tpl return tpl
} }
@ -66,9 +66,9 @@ const rtTasksTpl = ({ id, name, x, y, targetarr, isAttachment, taskType, runFlag
* Get all tasks nodes * Get all tasks nodes
*/ */
const tasksAll = () => { const tasksAll = () => {
let a = [] const a = []
$('#canvas .w').each(function (idx, elem) { $('#canvas .w').each(function (idx, elem) {
let e = $(elem) const e = $(elem)
a.push({ a.push({
id: e.attr('id'), id: e.attr('id'),
name: e.find('.name-p').text(), name: e.find('.name-p').text(),
@ -117,10 +117,10 @@ const setSvgColor = (e, color) => {
* Get all node ids * Get all node ids
*/ */
const allNodesId = () => { const allNodesId = () => {
let idArr = [] const idArr = []
$('.w').each((i, o) => { $('.w').each((i, o) => {
let $obj = $(o) const $obj = $(o)
let $span = $obj.find('.name-p').text() const $span = $obj.find('.name-p').text()
if ($span) { if ($span) {
idArr.push({ idArr.push({
id: $obj.attr('id'), id: $obj.attr('id'),

26
dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/gaugeOption.js

@ -30,21 +30,21 @@ export default function (value) {
color: [ color: [
[ 0.5, new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ // eslint-disable-line [ 0.5, new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ // eslint-disable-line
offset: 1, offset: 1,
color: '#1CAD52'// 50% Color in place color: '#1CAD52'// 50% Color in place
}, { }, {
offset: 0.8, offset: 0.8,
color: '#1CAD52'// 40% Color in place color: '#1CAD52'// 40% Color in place
}], false) ], // 100% Color in place }], false)], // 100% Color in place
[ 0.7, new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ // eslint-disable-line [ 0.7, new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ // eslint-disable-line
offset: 1, offset: 1,
color: '#FFC539'// 70% Color in place color: '#FFC539'// 70% Color in place
}, { }, {
offset: 0.8, offset: 0.8,
color: '#FEEC49'// 66% Color in place color: '#FEEC49'// 66% Color in place
}, { }, {
offset: 0, offset: 0,
color: '#C7DD6B'// 50% Color in place color: '#C7DD6B'// 50% Color in place
}], false) ], }], false)],
[ 0.9, new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ // eslint-disable-line [ 0.9, new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ // eslint-disable-line
offset: 1, offset: 1,
color: '#E75F25' // 90% Color in place color: '#E75F25' // 90% Color in place
@ -54,14 +54,14 @@ export default function (value) {
}, { }, {
offset: 0, offset: 0,
color: '#FFC539' // 70% Color in place color: '#FFC539' // 70% Color in place
}], false) ], }], false)],
[1, new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { // eslint-disable-line [1, new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { // eslint-disable-line
offset: 0.2, offset: 0.2,
color: '#E75F25' // 92% Color in place color: '#E75F25' // 92% Color in place
}, { }, {
offset: 0, offset: 0,
color: '#D9452C' // 90% Color in place color: '#D9452C' // 90% Color in place
}], false) ] }], false)]
], ],
width: 10 width: 10
} }
@ -92,10 +92,10 @@ export default function (value) {
show: true, show: true,
lineStyle: { // Property linestyle controls line style lineStyle: { // Property linestyle controls line style
color: [ // Dial Color color: [ // Dial Color
[ 0.5, '#20AE51' ], // 0-50%Color in place [0.5, '#20AE51'], // 0-50%Color in place
[ 0.7, '#FFED44' ], // 51%-70%Color in place [0.7, '#FFED44'], // 51%-70%Color in place
[ 0.9, '#FF9618' ], // 70%-90%Color in place [0.9, '#FF9618'], // 70%-90%Color in place
[ 1, '#DA462C']// 90%-100%Color in place [1, '#DA462C']// 90%-100%Color in place
], ],
width: 30// Dial width width: 30// Dial width
} }

2
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/instanceConditions/common.js

@ -20,7 +20,7 @@ import i18n from '@/module/i18n'
/** /**
* State code table * State code table
*/ */
let stateType = [ const stateType = [
{ {
code: '', code: '',
label: `${i18n.$t('none')}` label: `${i18n.$t('none')}`

4
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue

@ -92,7 +92,7 @@
<x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Timing')" @click="_timing(item)" :disabled="item.releaseState !== 'ONLINE' || item.scheduleReleaseState !== null" icon="ans-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" icon="ans-icon-timer"><!--{{$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'" icon="ans-icon-upward"><!--{{$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'" icon="ans-icon-upward"><!--{{$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'" icon="ans-icon-downward"><!--{{$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'" icon="ans-icon-downward"><!--{{$t('上线')}}--></x-button>
<x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Copy')" @click="_copyProcess(item)" :disabled="item.releaseState === 'ONLINE'" icon="ans-icon-copy"><!--{{$t('复制')}}--></x-button> <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Copy Workflow')" @click="_copyProcess(item)" :disabled="item.releaseState === 'ONLINE'" icon="ans-icon-copy"><!--{{$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'" icon="ans-icon-datetime"><!--{{$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'" icon="ans-icon-datetime"><!--{{$t('定时管理')}}--></x-button>
<x-poptip <x-poptip
:ref="'poptip-delete-' + $index" :ref="'poptip-delete-' + $index"
@ -166,6 +166,7 @@
}, },
methods: { methods: {
...mapActions('dag', ['editProcessState', 'getStartCheck', 'getReceiver', 'deleteDefinition', 'batchDeleteDefinition','exportDefinition','copyProcess']), ...mapActions('dag', ['editProcessState', 'getStartCheck', 'getReceiver', 'deleteDefinition', 'batchDeleteDefinition','exportDefinition','copyProcess']),
...mapActions('security', ['getWorkerGroupsAll']),
_rtPublishStatus (code) { _rtPublishStatus (code) {
return _.filter(publishStatus, v => v.code === code)[0].desc return _.filter(publishStatus, v => v.code === code)[0].desc
}, },
@ -176,6 +177,7 @@
* Start * Start
*/ */
_start (item) { _start (item) {
this.getWorkerGroupsAll()
this.getStartCheck({ processDefinitionId: item.id }).then(res => { this.getStartCheck({ processDefinitionId: item.id }).then(res => {
let self = this let self = this
let modal = this.$modal.dialog({ let modal = this.$modal.dialog({

8
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/util.js

@ -17,7 +17,7 @@
import i18n from '@/module/i18n' import i18n from '@/module/i18n'
let warningTypeList = [ const warningTypeList = [
{ {
id: 'NONE', id: 'NONE',
code: `${i18n.$t('none_1')}` code: `${i18n.$t('none_1')}`
@ -42,9 +42,9 @@ const isEmial = (val) => {
} }
const fuzzyQuery = (list, keyWord) => { const fuzzyQuery = (list, keyWord) => {
let len = list.length const len = list.length
let arr = [] const arr = []
let reg = new RegExp(keyWord) const reg = new RegExp(keyWord)
for (let i = 0; i < len; i++) { for (let i = 0; i < len; i++) {
if (list[i].match(reg)) { if (list[i].match(reg)) {
arr.push(list[i]) arr.push(list[i])

23
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/_source/tree.js

@ -21,7 +21,7 @@ import { tasksType, tasksState } from '@/conf/home/pages/dag/_source/config'
let self = this let self = this
let Tree = function () { const Tree = function () {
self = this self = this
this.selfTree = {} this.selfTree = {}
this.tree = function () {} this.tree = function () {}
@ -57,7 +57,7 @@ Tree.prototype.init = function ({ data, limit, selfTree }) {
this.duration = 400 this.duration = 400
this.i = 0 this.i = 0
this.tree = d3.layout.tree().nodeSize([0, 46]) this.tree = d3.layout.tree().nodeSize([0, 46])
let tasks = this.tree.nodes(data) const tasks = this.tree.nodes(data)
this.diagonal = d3.svg this.diagonal = d3.svg
.diagonal() .diagonal()
@ -142,9 +142,9 @@ Tree.prototype.treeToggles = function (clicked_d) { // eslint-disable-line
*/ */
Tree.prototype.treeUpdate = function (source) { Tree.prototype.treeUpdate = function (source) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let tasks = this.tree.nodes(this.root) const tasks = this.tree.nodes(this.root)
let height = Math.max(500, tasks.length * this.config.barHeight + this.config.margin.top + this.config.margin.bottom) const height = Math.max(500, tasks.length * this.config.barHeight + this.config.margin.top + this.config.margin.bottom)
let width = (this.config.nodesMax * 70) + (this.squareNum * (this.config.squareSize + this.config.squarePading)) + this.config.margin.left + this.config.margin.right + 50 const width = (this.config.nodesMax * 70) + (this.squareNum * (this.config.squareSize + this.config.squarePading)) + this.config.margin.left + this.config.margin.right + 50
d3.select('svg') d3.select('svg')
.transition() .transition()
@ -156,12 +156,12 @@ Tree.prototype.treeUpdate = function (source) {
n.x = i * this.config.barHeight n.x = i * this.config.barHeight
}) })
let task = this.svg.selectAll('g.node') const task = this.svg.selectAll('g.node')
.data(tasks, (d) => { .data(tasks, (d) => {
return d.id || (d.id = ++this.i) return d.id || (d.id = ++this.i)
}) })
let nodeEnter = task.enter() const nodeEnter = task.enter()
.append('g') .append('g')
.attr('class', this.nodesClass) .attr('class', this.nodesClass)
.attr('transform', () => 'translate(' + source.y0 + ',' + source.x0 + ')') .attr('transform', () => 'translate(' + source.y0 + ',' + source.x0 + ')')
@ -201,7 +201,7 @@ Tree.prototype.treeUpdate = function (source) {
} }
}) })
.attr('class', 'state') .attr('class', 'state')
.style('fill', d => d.state && tasksState[d.state].color || '#ffffff') .style('fill', d => (d.state && tasksState[d.state].color) || '#ffffff')
.attr('data-toggle', 'tooltip') .attr('data-toggle', 'tooltip')
.attr('rx', d => d.type ? 0 : 12) .attr('rx', d => d.type ? 0 : 12)
.attr('ry', d => d.type ? 0 : 12) .attr('ry', d => d.type ? 0 : 12)
@ -231,7 +231,6 @@ Tree.prototype.treeUpdate = function (source) {
.attr('transform', d => 'translate(' + d.y + ',' + d.x + ')') .attr('transform', d => 'translate(' + d.y + ',' + d.x + ')')
.style('opacity', 1) .style('opacity', 1)
// Convert the exit node to the new location of the parent node。 // Convert the exit node to the new location of the parent node。
task.exit().transition() task.exit().transition()
.duration(this.duration) .duration(this.duration)
@ -240,14 +239,14 @@ Tree.prototype.treeUpdate = function (source) {
.remove() .remove()
// Update link // Update link
let link = this.svg.selectAll('path.link') const link = this.svg.selectAll('path.link')
.data(this.tree.links(tasks), d => d.target.id) .data(this.tree.links(tasks), d => d.target.id)
// Enter any new links in the previous location of the parent node。 // Enter any new links in the previous location of the parent node。
link.enter().insert('path', 'g') link.enter().insert('path', 'g')
.attr('class', 'link') .attr('class', 'link')
.attr('d', (d) => { .attr('d', (d) => {
let o = { x: source.x0, y: source.y0 } const o = { x: source.x0, y: source.y0 }
return this.diagonal({ source: o, target: o }) return this.diagonal({ source: o, target: o })
}) })
.transition() .transition()
@ -263,7 +262,7 @@ Tree.prototype.treeUpdate = function (source) {
link.exit().transition() link.exit().transition()
.duration(this.duration) .duration(this.duration)
.attr('d', (d) => { .attr('d', (d) => {
let o = { x: source.x, y: source.y } const o = { x: source.x, y: source.y }
return this.diagonal({ source: o, target: o }) return this.diagonal({ source: o, target: o })
}) })
.remove() .remove()

6
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/_source/util.js

@ -22,7 +22,7 @@ import { tasksState } from '@/conf/home/pages/dag/_source/config'
* Node prompt dom * Node prompt dom
*/ */
const rtInstancesTooltip = (data) => { const rtInstancesTooltip = (data) => {
let str = `<div style="text-align: left;word-break:break-all">` let str = '<div style="text-align: left;word-break:break-all">'
str += `id : ${data.id}</br>` str += `id : ${data.id}</br>`
str += `host : ${data.host}</br>` str += `host : ${data.host}</br>`
str += `name : ${data.name}</br>` str += `name : ${data.name}</br>`
@ -33,7 +33,7 @@ const rtInstancesTooltip = (data) => {
str += `startTime : ${data.startTime ? formatDate(data.startTime) : '-'}</br>` str += `startTime : ${data.startTime ? formatDate(data.startTime) : '-'}</br>`
str += `endTime : ${data.endTime ? formatDate(data.endTime) : '-'}</br>` str += `endTime : ${data.endTime ? formatDate(data.endTime) : '-'}</br>`
str += `duration : ${data.duration}</br>` str += `duration : ${data.duration}</br>`
str += `</div>` str += '</div>'
return str return str
} }
@ -42,7 +42,7 @@ const rtInstancesTooltip = (data) => {
* Easy to calculate the width dynamically * Easy to calculate the width dynamically
*/ */
const rtCountMethod = list => { const rtCountMethod = list => {
let arr = [] const arr = []
function count (list, t) { function count (list, t) {
let toggle = false let toggle = false
list.forEach(v => { list.forEach(v => {

9
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/_source/chartConfig.js

@ -18,7 +18,7 @@
import _ from 'lodash' import _ from 'lodash'
import { tasksState } from '@/conf/home/pages/dag/_source/config' import { tasksState } from '@/conf/home/pages/dag/_source/config'
let pie = { const pie = {
series: [ series: [
{ {
type: 'pie', type: 'pie',
@ -37,7 +37,7 @@ let pie = {
] ]
} }
let bar = { const bar = {
title: { title: {
text: '' text: ''
}, },
@ -56,7 +56,7 @@ let bar = {
}, },
tooltip: { tooltip: {
formatter (v) { formatter (v) {
let val = v[0].name.split(',') const val = v[0].name.split(',')
return `${val[0]} (${v[0].value})` return `${val[0]} (${v[0].value})`
} }
}, },
@ -66,7 +66,7 @@ let bar = {
}] }]
} }
let simple = { const simple = {
xAxis: { xAxis: {
splitLine: { splitLine: {
show: false show: false
@ -93,7 +93,6 @@ let simple = {
}, },
color: ['#D5050B', '#0398E1'] color: ['#D5050B', '#0398E1']
} }
export { pie, bar, simple } export { pie, bar, simple }

33
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/_source/gantt.js

@ -19,13 +19,13 @@ import * as d3 from 'd3'
import { formatDate } from '@/module/filter/filter' import { formatDate } from '@/module/filter/filter'
import { tasksState } from '@/conf/home/pages/dag/_source/config' import { tasksState } from '@/conf/home/pages/dag/_source/config'
let Gantt = function () { const Gantt = function () {
this.el = '' this.el = ''
this.tasks = [] this.tasks = []
this.width = null this.width = null
this.height = null this.height = null
this.taskNames = [] this.taskNames = []
this.tickFormat = `%H:%M:%S` this.tickFormat = '%H:%M:%S'
this.margin = { this.margin = {
top: 10, top: 10,
right: 40, right: 40,
@ -41,20 +41,20 @@ Gantt.prototype.init = function ({ el, tasks }) {
this.tasks = tasks this.tasks = tasks
this.taskNames = _.map(_.cloneDeep(tasks), v => v.taskName) this.taskNames = _.map(_.cloneDeep(tasks), v => v.taskName)
this.taskNames = this.taskNames.reduce(function (prev, cur) { this.taskNames = this.taskNames.reduce(function (prev, cur) {
prev.indexOf(cur) === -1 && prev.push(cur); prev.indexOf(cur) === -1 && prev.push(cur)
return prev; return prev
},[]) }, [])
this.height = parseInt(this.taskNames.length * 30) this.height = parseInt(this.taskNames.length * 30)
this.width = $(this.el).width() - this.margin.right - this.margin.left - 5 this.width = $(this.el).width() - this.margin.right - this.margin.left - 5
this.x = d3.time.scale() this.x = d3.time.scale()
.domain([ this.startTimeXAxis, this.endTimeXAxis ]) .domain([this.startTimeXAxis, this.endTimeXAxis])
.range([ 0, this.width ]) .range([0, this.width])
.clamp(true) .clamp(true)
this.y = d3.scale.ordinal() this.y = d3.scale.ordinal()
.domain(this.taskNames) .domain(this.taskNames)
.rangeRoundBands([ 0, this.height - this.margin.top - this.margin.bottom ], 0.1) .rangeRoundBands([0, this.height - this.margin.top - this.margin.bottom], 0.1)
this.xAxis = d3.svg.axis() this.xAxis = d3.svg.axis()
.scale(this.x) .scale(this.x)
@ -97,13 +97,13 @@ Gantt.prototype.compXAxisTimes = function () {
*/ */
Gantt.prototype.initializeXAxis = function () { Gantt.prototype.initializeXAxis = function () {
this.x = d3.time.scale() this.x = d3.time.scale()
.domain([ this.startTimeXAxis, this.endTimeXAxis ]) .domain([this.startTimeXAxis, this.endTimeXAxis])
.range([ 0, this.width ]) .range([0, this.width])
.clamp(true) .clamp(true)
this.y = d3.scale.ordinal() this.y = d3.scale.ordinal()
.domain(this.taskNames) .domain(this.taskNames)
.rangeRoundBands([ 0, this.height - this.margin.top - this.margin.bottom ], 0.1) .rangeRoundBands([0, this.height - this.margin.top - this.margin.bottom], 0.1)
this.xAxis = d3.svg.axis() this.xAxis = d3.svg.axis()
.scale(this.x) .scale(this.x)
@ -151,9 +151,9 @@ Gantt.prototype.drawChart = function () {
.attr('transform', 'translate(0, ' + (this.height - this.margin.top - this.margin.bottom) + ')') .attr('transform', 'translate(0, ' + (this.height - this.margin.top - this.margin.bottom) + ')')
.transition() .transition()
.call(this.xAxis) .call(this.xAxis)
.selectAll("text") .selectAll('text')
.attr("transform", `rotate(-${this.width / ($('.tick').length - 1) > 50 ? 0 : Math.acos(this.width / ($('.tick').length - 1) / 50) * 57 })`) .attr('transform', `rotate(-${this.width / ($('.tick').length - 1) > 50 ? 0 : Math.acos(this.width / ($('.tick').length - 1) / 50) * 57})`)
.style("text-anchor", `${this.width / ($('.tick').length - 1) > 50 ? 'middle' : 'end'}`) .style('text-anchor', `${this.width / ($('.tick').length - 1) > 50 ? 'middle' : 'end'}`)
svg.append('g') svg.append('g')
.attr('class', 'y axis') .attr('class', 'y axis')
@ -169,15 +169,14 @@ Gantt.prototype.drawChart = function () {
* Tip prompt * Tip prompt
*/ */
Gantt.prototype.tip = function (d) { Gantt.prototype.tip = function (d) {
let str = `<div style="text-align: left;word-break:break-all">` let str = '<div style="text-align: left;word-break:break-all">'
str += `taskName : ${d.taskName}</br>` str += `taskName : ${d.taskName}</br>`
str += `status : ${tasksState[d.status].desc} (${d.status})</br>` str += `status : ${tasksState[d.status].desc} (${d.status})</br>`
str += `startTime : ${formatDate(d.isoStart)}</br>` str += `startTime : ${formatDate(d.isoStart)}</br>`
str += `endTime : ${formatDate(d.isoEnd)}</br>` str += `endTime : ${formatDate(d.isoEnd)}</br>`
str += `duration : ${d.duration}</br>` str += `duration : ${d.duration}</br>`
str += `</div>` str += '</div>'
return str return str
} }
export default new Gantt() export default new Gantt()

2
dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/_source/common.js

@ -18,6 +18,6 @@
/** /**
* Create file type * Create file type
*/ */
let filtTypeArr = ['txt', 'log', 'sh', 'conf', 'cfg', 'py', 'java', 'sql', 'xml', 'hql', 'properties'] const filtTypeArr = ['txt', 'log', 'sh', 'conf', 'cfg', 'py', 'java', 'sql', 'xml', 'hql', 'properties']
export { filtTypeArr } export { filtTypeArr }

1
dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/details/_source/utils.js

@ -32,7 +32,6 @@ const handlerSuffix = {
'.properties': 'textile' '.properties': 'textile'
} }
export { export {
handlerSuffix handlerSuffix
} }

16
dolphinscheduler-ui/src/js/conf/home/router/index.js

@ -426,7 +426,7 @@ const router = new Router({
name: 'monitor', name: 'monitor',
component: resolve => require(['../pages/monitor/index'], resolve), component: resolve => require(['../pages/monitor/index'], resolve),
meta: { meta: {
title: `monitor` title: 'monitor'
}, },
redirect: { redirect: {
name: 'servers-master' name: 'servers-master'
@ -453,7 +453,7 @@ const router = new Router({
name: 'servers-alert', name: 'servers-alert',
component: resolve => require(['../pages/monitor/pages/servers/alert'], resolve), component: resolve => require(['../pages/monitor/pages/servers/alert'], resolve),
meta: { meta: {
title: `Alert` title: 'Alert'
} }
}, },
{ {
@ -461,7 +461,7 @@ const router = new Router({
name: 'servers-rpcserver', name: 'servers-rpcserver',
component: resolve => require(['../pages/monitor/pages/servers/rpcserver'], resolve), component: resolve => require(['../pages/monitor/pages/servers/rpcserver'], resolve),
meta: { meta: {
title: `Rpcserver` title: 'Rpcserver'
} }
}, },
{ {
@ -469,7 +469,7 @@ const router = new Router({
name: 'servers-zookeeper', name: 'servers-zookeeper',
component: resolve => require(['../pages/monitor/pages/servers/zookeeper'], resolve), component: resolve => require(['../pages/monitor/pages/servers/zookeeper'], resolve),
meta: { meta: {
title: `Zookeeper` title: 'Zookeeper'
} }
}, },
{ {
@ -477,7 +477,7 @@ const router = new Router({
name: 'servers-apiserver', name: 'servers-apiserver',
component: resolve => require(['../pages/monitor/pages/servers/apiserver'], resolve), component: resolve => require(['../pages/monitor/pages/servers/apiserver'], resolve),
meta: { meta: {
title: `Apiserver` title: 'Apiserver'
} }
}, },
{ {
@ -485,7 +485,7 @@ const router = new Router({
name: 'servers-db', name: 'servers-db',
component: resolve => require(['../pages/monitor/pages/servers/db'], resolve), component: resolve => require(['../pages/monitor/pages/servers/db'], resolve),
meta: { meta: {
title: `DB` title: 'DB'
} }
}, },
{ {
@ -493,7 +493,7 @@ const router = new Router({
name: 'statistics', name: 'statistics',
component: resolve => require(['../pages/monitor/pages/servers/statistics'], resolve), component: resolve => require(['../pages/monitor/pages/servers/statistics'], resolve),
meta: { meta: {
title: `statistics` title: 'statistics'
} }
} }
] ]
@ -502,7 +502,7 @@ const router = new Router({
}) })
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
let $body = $('body') const $body = $('body')
$body.find('.tooltip.fade.top.in').remove() $body.find('.tooltip.fade.top.in').remove()
if (to.meta.title) { if (to.meta.title) {
document.title = `${to.meta.title} - DolphinScheduler` document.title = `${to.meta.title} - DolphinScheduler`

72
dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js

@ -28,7 +28,7 @@ export default {
io.get(`projects/${state.projectName}/instance/task-list-by-process-id`, { io.get(`projects/${state.projectName}/instance/task-list-by-process-id`, {
processInstanceId: payload processInstanceId: payload
}, res => { }, res => {
let arr = _.map(res.data.taskList, v => { const arr = _.map(res.data.taskList, v => {
return _.cloneDeep(_.assign(tasksState[v.state], { return _.cloneDeep(_.assign(tasksState[v.state], {
name: v.name, name: v.name,
stateId: v.id, stateId: v.id,
@ -108,7 +108,7 @@ export default {
// locations // locations
state.locations = JSON.parse(res.data.locations) state.locations = JSON.parse(res.data.locations)
// Process definition // Process definition
let processDefinitionJson = JSON.parse(res.data.processDefinitionJson) const processDefinitionJson = JSON.parse(res.data.processDefinitionJson)
// tasks info // tasks info
state.tasks = processDefinitionJson.tasks state.tasks = processDefinitionJson.tasks
// tasks cache // tasks cache
@ -129,7 +129,7 @@ export default {
}) })
}, },
/** /**
* Get process definition DAG diagram details * Get process definition DAG diagram details
*/ */
copyProcess ({ state }, payload) { copyProcess ({ state }, payload) {
@ -161,7 +161,7 @@ export default {
// locations // locations
state.locations = JSON.parse(res.data.locations) state.locations = JSON.parse(res.data.locations)
// process instance // process instance
let processInstanceJson = JSON.parse(res.data.processInstanceJson) const processInstanceJson = JSON.parse(res.data.processInstanceJson)
// tasks info // tasks info
state.tasks = processInstanceJson.tasks state.tasks = processInstanceJson.tasks
// tasks cache // tasks cache
@ -176,7 +176,7 @@ export default {
state.tenantId = processInstanceJson.tenantId state.tenantId = processInstanceJson.tenantId
//startup parameters // startup parameters
state.startup = _.assign(state.startup, _.pick(res.data, ['commandType', 'failureStrategy', 'processInstancePriority', 'workerGroup', 'warningType', 'warningGroupId', 'receivers', 'receiversCc'])) state.startup = _.assign(state.startup, _.pick(res.data, ['commandType', 'failureStrategy', 'processInstancePriority', 'workerGroup', 'warningType', 'warningGroupId', 'receivers', 'receiversCc']))
state.startup.commandParam = JSON.parse(res.data.commandParam) state.startup.commandParam = JSON.parse(res.data.commandParam)
@ -191,7 +191,7 @@ export default {
*/ */
saveDAGchart ({ state }, payload) { saveDAGchart ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let data = { const data = {
globalParams: state.globalParams, globalParams: state.globalParams,
tasks: state.tasks, tasks: state.tasks,
tenantId: state.tenantId, tenantId: state.tenantId,
@ -215,7 +215,7 @@ export default {
*/ */
updateDefinition ({ state }, payload) { updateDefinition ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let data = { const data = {
globalParams: state.globalParams, globalParams: state.globalParams,
tasks: state.tasks, tasks: state.tasks,
tenantId: state.tenantId, tenantId: state.tenantId,
@ -240,7 +240,7 @@ export default {
*/ */
updateInstance ({ state }, payload) { updateInstance ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let data = { const data = {
globalParams: state.globalParams, globalParams: state.globalParams,
tasks: state.tasks, tasks: state.tasks,
tenantId: state.tenantId, tenantId: state.tenantId,
@ -294,16 +294,16 @@ export default {
getProjectList ({ state }, payload) { getProjectList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (state.projectListS.length) { if (state.projectListS.length) {
resolve() resolve()
return return
} }
io.get(`projects/query-project-list`, payload, res => { io.get('projects/query-project-list', payload, res => {
state.projectListS = res.data state.projectListS = res.data
resolve(res.data) resolve(res.data)
}).catch(res => { }).catch(res => {
reject(res) reject(res)
})
}) })
})
}, },
/** /**
* Get a list of process definitions by project id * Get a list of process definitions by project id
@ -312,17 +312,17 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/${state.projectName}/process/queryProcessDefinitionAllByProjectId`, payload, res => { io.get(`projects/${state.projectName}/process/queryProcessDefinitionAllByProjectId`, payload, res => {
resolve(res.data) resolve(res.data)
}).catch(res => { }).catch(res => {
reject(res) reject(res)
})
}) })
})
}, },
/** /**
* get datasource * get datasource
*/ */
getDatasourceList ({ state }, payload) { getDatasourceList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/list`, { io.get('datasources/list', {
type: payload type: payload
}, res => { }, res => {
resolve(res) resolve(res)
@ -340,7 +340,7 @@ export default {
resolve() resolve()
return return
} }
io.get(`resources/list`, { io.get('resources/list', {
type: 'FILE' type: 'FILE'
}, res => { }, res => {
state.resourcesListS = res.data state.resourcesListS = res.data
@ -359,7 +359,7 @@ export default {
resolve() resolve()
return return
} }
io.get(`resources/list/jar`, { io.get('resources/list/jar', {
type: 'FILE' type: 'FILE'
}, res => { }, res => {
state.resourcesListJar = res.data state.resourcesListJar = res.data
@ -387,7 +387,7 @@ export default {
*/ */
getNotifyGroupList ({ state }, payload) { getNotifyGroupList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`alert-group/list`, res => { io.get('alert-group/list', res => {
state.notifyGroupListS = _.map(res.data, v => { state.notifyGroupListS = _.map(res.data, v => {
return { return {
id: v.id, id: v.id,
@ -469,7 +469,7 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`projects/${state.projectName}/schedule/preview`, payload, res => { io.post(`projects/${state.projectName}/schedule/preview`, payload, res => {
resolve(res.data) resolve(res.data)
//alert(res.data) // alert(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
}) })
@ -579,11 +579,11 @@ export default {
if (!data) { if (!data) {
return return
} }
let blob = new Blob([data]) const blob = new Blob([data])
let fileName = `${fileNameS}.json` const fileName = `${fileNameS}.json`
if ('download' in document.createElement('a')) { // 不是IE浏览器 if ('download' in document.createElement('a')) { // 不是IE浏览器
let url = window.URL.createObjectURL(blob) const url = window.URL.createObjectURL(blob)
let link = document.createElement('a') const link = document.createElement('a')
link.style.display = 'none' link.style.display = 'none'
link.href = url link.href = url
link.setAttribute('download', fileName) link.setAttribute('download', fileName)
@ -596,7 +596,7 @@ export default {
} }
} }
io.get(`projects/${state.projectName}/process/export`,{processDefinitionIds: payload.processDefinitionIds}, res => { io.get(`projects/${state.projectName}/process/export`, {processDefinitionIds: payload.processDefinitionIds}, res => {
downloadBlob(res, payload.fileName) downloadBlob(res, payload.fileName)
}, e => { }, e => {
@ -622,7 +622,7 @@ export default {
*/ */
getUdfList ({ state }, payload) { getUdfList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/udf-func/list`, payload, res => { io.get('resources/udf-func/list', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -646,7 +646,7 @@ export default {
*/ */
getTaskRecordList ({ state }, payload) { getTaskRecordList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/task-record/list-paging`, payload, res => { io.get('projects/task-record/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -658,7 +658,7 @@ export default {
*/ */
getHistoryTaskRecordList ({ state }, payload) { getHistoryTaskRecordList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/task-record/history-list-paging`, payload, res => { io.get('projects/task-record/history-list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -725,7 +725,7 @@ export default {
/** /**
* remove timing * remove timing
*/ */
deleteTiming({ state }, payload){ deleteTiming ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/${state.projectName}/schedule/delete`, payload, res => { io.get(`projects/${state.projectName}/schedule/delete`, payload, res => {
resolve(res) resolve(res)
@ -736,11 +736,11 @@ export default {
}, },
getResourceId ({ state }, payload) { getResourceId ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/queryResource`, payload, res => { io.get('resources/queryResource', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
}) })
}) })
}, }
} }

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

@ -100,27 +100,27 @@ export default {
*/ */
resetParams (state, payload) { resetParams (state, payload) {
$('#canvas').html('') $('#canvas').html('')
state.globalParams = payload && payload.globalParams || [] state.globalParams = (payload && payload.globalParams) || []
state.tasks = payload && payload.tasks || [] state.tasks = (payload && payload.tasks) || []
state.name = payload && payload.name || '' state.name = (payload && payload.name) || ''
state.description = payload && payload.description || '' state.description = (payload && payload.description) || ''
state.timeout = payload && payload.timeout || 0 state.timeout = (payload && payload.timeout) || 0
state.tenantId = payload && payload.tenantId || -1 state.tenantId = (payload && payload.tenantId) || -1
state.processListS = payload && payload.processListS || [] state.processListS = (payload && payload.processListS) || []
state.resourcesListS = payload && payload.resourcesListS || [] state.resourcesListS = (payload && payload.resourcesListS) || []
state.resourcesListJar = payload && payload.resourcesListJar || [] state.resourcesListJar = (payload && payload.resourcesListJar) || []
state.projectListS = payload && payload.projectListS || [] state.projectListS = (payload && payload.projectListS) || []
state.isDetails = payload && payload.isDetails || false state.isDetails = (payload && payload.isDetails) || false
state.runFlag = payload && payload.runFlag || '' state.runFlag = (payload && payload.runFlag) || ''
state.locations = payload && payload.locations || {} state.locations = (payload && payload.locations) || {}
state.connects = payload && payload.connects || [] state.connects = (payload && payload.connects) || []
}, },
/** /**
* add task * add task
* object {} * object {}
*/ */
addTasks (state, payload) { addTasks (state, payload) {
let i = _.findIndex(state.tasks, v => v.id === payload.id) const i = _.findIndex(state.tasks, v => v.id === payload.id)
if (i !== -1) { if (i !== -1) {
state.tasks[i] = Object.assign(state.tasks[i], {}, payload) state.tasks[i] = Object.assign(state.tasks[i], {}, payload)
} else { } else {
@ -129,9 +129,9 @@ export default {
if (state.cacheTasks[payload.id]) { if (state.cacheTasks[payload.id]) {
state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload) state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload)
} else { } else {
state.cacheTasks[payload.id] = payload; state.cacheTasks[payload.id] = payload
} }
let dom = $(`#${payload.id}`) const 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(),
targetarr: dom.attr('data-targetarr'), targetarr: dom.attr('data-targetarr'),
@ -149,7 +149,7 @@ export default {
if (state.cacheTasks[payload.id]) { if (state.cacheTasks[payload.id]) {
state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload) state.cacheTasks[payload.id] = Object.assign(state.cacheTasks[payload.id], {}, payload)
} else { } else {
state.cacheTasks[payload.id] = payload; state.cacheTasks[payload.id] = payload
} }
} }
} }

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

@ -18,7 +18,7 @@
import localStore from '@/module/util/localStorage' import localStore from '@/module/util/localStorage'
// Get the name of the item currently clicked // Get the name of the item currently clicked
let projectName = localStore.getItem('projectName') const projectName = localStore.getItem('projectName')
export default { export default {
// name // name
@ -34,7 +34,7 @@ export default {
// Timeout alarm // Timeout alarm
timeout: 0, timeout: 0,
// tenant id // tenant id
tenantId:-1, tenantId: -1,
// Node location information // Node location information
locations: {}, locations: {},
// Node-to-node connection // Node-to-node connection

18
dolphinscheduler-ui/src/js/conf/home/store/datasource/actions.js

@ -27,7 +27,7 @@ export default {
*/ */
createDatasources ({ state }, payload) { createDatasources ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`datasources/create`, payload, res => { io.post('datasources/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -40,7 +40,7 @@ export default {
*/ */
connectDatasources ({ state }, payload) { connectDatasources ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`datasources/connect`, payload, res => { io.post('datasources/connect', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -53,7 +53,7 @@ export default {
*/ */
getDatasourcesList ({ state }, payload) { getDatasourcesList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/list`, payload, res => { io.get('datasources/list', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -68,7 +68,7 @@ export default {
*/ */
getDatasourcesListP ({ state }, payload) { getDatasourcesListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/list-paging`, payload, res => { io.get('datasources/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -80,7 +80,7 @@ export default {
*/ */
deleteDatasource ({ state }, payload) { deleteDatasource ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/delete`, payload, res => { io.get('datasources/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -92,7 +92,7 @@ export default {
*/ */
updateDatasource ({ state }, payload) { updateDatasource ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`datasources/update`, payload, res => { io.post('datasources/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -101,7 +101,7 @@ export default {
}, },
getEditDatasource ({ state }, payload) { getEditDatasource ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`datasources/update-ui`, payload, res => { io.post('datasources/update-ui', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -110,7 +110,7 @@ export default {
}, },
verifyName ({ state }, payload) { verifyName ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/verify-name`, payload, res => { io.get('datasources/verify-name', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -119,7 +119,7 @@ export default {
}, },
getKerberosStartupState ({ state }, payload) { getKerberosStartupState ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`datasources/kerberos-startup-state`, payload, res => { io.get('datasources/kerberos-startup-state', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

8
dolphinscheduler-ui/src/js/conf/home/store/monitor/actions.js

@ -20,7 +20,7 @@ import io from '@/module/io'
export default { export default {
getMasterData ({ state }, payload) { getMasterData ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`monitor/master/list`, payload, res => { io.get('monitor/master/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -29,7 +29,7 @@ export default {
}, },
getWorkerData ({ state }, payload) { getWorkerData ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`monitor/worker/list`, payload, res => { io.get('monitor/worker/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -38,7 +38,7 @@ export default {
}, },
getDatabaseData ({ state }, payload) { getDatabaseData ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`monitor/database`, payload, res => { io.get('monitor/database', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -47,7 +47,7 @@ export default {
}, },
getZookeeperData ({ state }, payload) { getZookeeperData ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`monitor/zookeeper/list`, payload, res => { io.get('monitor/zookeeper/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

18
dolphinscheduler-ui/src/js/conf/home/store/projects/actions.js

@ -23,7 +23,7 @@ export default {
*/ */
getProjectsList ({ state }, payload) { getProjectsList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/list-paging`, payload, res => { io.get('projects/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -35,7 +35,7 @@ export default {
*/ */
createProjects ({ state }, payload) { createProjects ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`projects/create`, payload, res => { io.post('projects/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -47,7 +47,7 @@ export default {
*/ */
deleteProjects ({ state }, payload) { deleteProjects ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/delete`, payload, res => { io.get('projects/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -59,7 +59,7 @@ export default {
*/ */
updateProjects ({ state }, payload) { updateProjects ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`projects/update`, payload, res => { io.post('projects/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -71,7 +71,7 @@ export default {
*/ */
getTaskCtatusCount ({ state }, payload) { getTaskCtatusCount ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/analysis/task-state-count`, payload, res => { io.get('projects/analysis/task-state-count', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -83,7 +83,7 @@ export default {
*/ */
getCommandStateCount ({ state }, payload) { getCommandStateCount ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/analysis/command-state-count`, payload, res => { io.get('projects/analysis/command-state-count', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -95,7 +95,7 @@ export default {
*/ */
getQueueCount ({ state }, payload) { getQueueCount ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/analysis/queue-count`, payload, res => { io.get('projects/analysis/queue-count', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -107,7 +107,7 @@ export default {
*/ */
getProcessStateCount ({ state }, payload) { getProcessStateCount ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/analysis/process-state-count`, payload, res => { io.get('projects/analysis/process-state-count', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -119,7 +119,7 @@ export default {
*/ */
getDefineUserCount ({ state }, payload) { getDefineUserCount ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`projects/analysis/define-user-count`, payload, res => { io.get('projects/analysis/define-user-count', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

30
dolphinscheduler-ui/src/js/conf/home/store/resource/actions.js

@ -23,7 +23,7 @@ export default {
*/ */
getResourcesListP ({ state }, payload) { getResourcesListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/list-paging`, payload, res => { io.get('resources/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -32,7 +32,7 @@ export default {
}, },
getResourceId ({ state }, payload) { getResourceId ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/queryResource`, payload, res => { io.get('resources/queryResource', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -41,7 +41,7 @@ export default {
}, },
getResourcesList ({ state }, payload) { getResourcesList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/list`, payload, res => { io.get('resources/list', payload, res => {
resolve(res) resolve(res)
}).catch(res => { }).catch(res => {
reject(res) reject(res)
@ -53,7 +53,7 @@ export default {
*/ */
deleteResource ({ state }, payload) { deleteResource ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/delete`, payload, res => { io.get('resources/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -65,7 +65,7 @@ export default {
*/ */
resourceVerifyName ({ state }, payload) { resourceVerifyName ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/verify-name`, payload, res => { io.get('resources/verify-name', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -77,7 +77,7 @@ export default {
*/ */
getViewResources ({ state }, payload) { getViewResources ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/view`, payload, res => { io.get('resources/view', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -89,7 +89,7 @@ export default {
*/ */
createUdfFunc ({ state }, payload) { createUdfFunc ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/udf-func/create`, payload, res => { io.post('resources/udf-func/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -101,7 +101,7 @@ export default {
*/ */
updateUdfFunc ({ state }, payload) { updateUdfFunc ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/udf-func/update`, payload, res => { io.post('resources/udf-func/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -113,7 +113,7 @@ export default {
*/ */
verifyUdfFuncName ({ state }, payload) { verifyUdfFuncName ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/udf-func/verify-name`, payload, res => { io.get('resources/udf-func/verify-name', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -126,7 +126,7 @@ export default {
*/ */
deleteUdf ({ state }, payload) { deleteUdf ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/udf-func/delete`, payload, res => { io.get('resources/udf-func/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -138,7 +138,7 @@ export default {
*/ */
getUdfFuncListP ({ state }, payload) { getUdfFuncListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`resources/udf-func/list-paging`, payload, res => { io.get('resources/udf-func/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -150,7 +150,7 @@ export default {
*/ */
updateContent ({ state }, payload) { updateContent ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/update-content`, payload, res => { io.post('resources/update-content', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -162,7 +162,7 @@ export default {
*/ */
createResourceFile ({ state }, payload) { createResourceFile ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/online-create`, payload, res => { io.post('resources/online-create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -174,7 +174,7 @@ export default {
*/ */
createResourceFolder ({ state }, payload) { createResourceFolder ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/directory/create`, payload, res => { io.post('resources/directory/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -186,7 +186,7 @@ export default {
*/ */
resourceRename ({ state }, payload) { resourceRename ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`resources/update`, payload, res => { io.post('resources/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

76
dolphinscheduler-ui/src/js/conf/home/store/security/actions.js

@ -25,7 +25,7 @@ export default {
* @param tenant/verifyTenantCode * @param tenant/verifyTenantCode
*/ */
verifyName ({ state }, payload) { verifyName ({ state }, payload) {
let o = { const o = {
user: { user: {
param: { param: {
userName: payload.userName userName: payload.userName
@ -47,7 +47,7 @@ export default {
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(o[payload.type]['api'], o[payload.type]['param'], res => { io.get(o[payload.type].api, o[payload.type].param, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -64,7 +64,7 @@ export default {
*/ */
createUser ({ state }, payload) { createUser ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`users/create`, payload, res => { io.post('users/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -77,7 +77,7 @@ export default {
*/ */
verifyUserName ({ state }, payload) { verifyUserName ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`users/verify-user-name`, payload, res => { io.post('users/verify-user-name', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -92,7 +92,7 @@ export default {
*/ */
getUsersListP ({ state }, payload) { getUsersListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`users/list-paging`, payload, res => { io.get('users/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -104,7 +104,7 @@ export default {
*/ */
getUsersList ({ state }, payload) { getUsersList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`users/list`, payload, res => { io.get('users/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -116,7 +116,7 @@ export default {
*/ */
getUsersAll ({ state }, payload) { getUsersAll ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`users/list-all`, payload, res => { io.get('users/list-all', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -134,7 +134,7 @@ export default {
*/ */
updateUser ({ state }, payload) { updateUser ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`users/update`, payload, res => { io.post('users/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -147,7 +147,7 @@ export default {
*/ */
deleteUser ({ state }, payload) { deleteUser ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`users/delete`, payload, res => { io.post('users/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -158,12 +158,12 @@ export default {
* Obtain authorized and unauthorized items * Obtain authorized and unauthorized items
*/ */
getAuthList ({ state }, payload) { getAuthList ({ state }, payload) {
let o = { const o = {
type: payload.type, type: payload.type,
category: payload.category category: payload.category
} }
let param = {} const param = {}
// Manage user // Manage user
if (o.type === 'user') { if (o.type === 'user') {
param.alertgroupId = payload.id param.alertgroupId = payload.id
@ -197,12 +197,12 @@ export default {
}, },
getResourceList ({ state }, payload) { getResourceList ({ state }, payload) {
let o = { const o = {
type: payload.type, type: payload.type,
category: payload.category category: payload.category
} }
let param = {} const param = {}
// Manage user // Manage user
if (o.type === 'user') { if (o.type === 'user') {
param.alertgroupId = payload.id param.alertgroupId = payload.id
@ -254,7 +254,7 @@ export default {
*/ */
getUsersDetails ({ state }, payload) { getUsersDetails ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`users/select-by-id`, payload, res => { io.post('users/select-by-id', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -266,7 +266,7 @@ export default {
*/ */
getTenantListP ({ state }, payload) { getTenantListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`tenant/list-paging`, payload, res => { io.get('tenant/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -278,8 +278,8 @@ export default {
*/ */
getTenantList ({ state }, payload) { getTenantList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`tenant/list`, payload, res => { io.get('tenant/list', payload, res => {
let list=res.data const list = res.data
list.unshift({ list.unshift({
id: -1, id: -1,
tenantName: 'Default' tenantName: 'Default'
@ -296,7 +296,7 @@ export default {
*/ */
getQueueList ({ state }, payload) { getQueueList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`queue/list`, payload, res => { io.get('queue/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -308,7 +308,7 @@ export default {
*/ */
createQueue ({ state }, payload) { createQueue ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`tenant/create`, payload, res => { io.post('tenant/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -320,7 +320,7 @@ export default {
*/ */
updateQueue ({ state }, payload) { updateQueue ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`tenant/update`, payload, res => { io.post('tenant/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -332,7 +332,7 @@ export default {
*/ */
deleteQueue ({ state }, payload) { deleteQueue ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`tenant/delete`, payload, res => { io.post('tenant/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -344,7 +344,7 @@ export default {
*/ */
getAlertgroupP ({ state }, payload) { getAlertgroupP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`alert-group/list-paging`, payload, res => { io.get('alert-group/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -356,7 +356,7 @@ export default {
*/ */
getAlertgroup ({ state }, payload) { getAlertgroup ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`alert-group/list`, payload, res => { io.get('alert-group/list', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -368,7 +368,7 @@ export default {
*/ */
createAlertgrou ({ state }, payload) { createAlertgrou ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`alert-group/create`, payload, res => { io.post('alert-group/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -380,7 +380,7 @@ export default {
*/ */
updateAlertgrou ({ state }, payload) { updateAlertgrou ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`alert-group/update`, payload, res => { io.post('alert-group/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -392,7 +392,7 @@ export default {
*/ */
deleteAlertgrou ({ state }, payload) { deleteAlertgrou ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`alert-group/delete`, payload, res => { io.post('alert-group/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -404,7 +404,7 @@ export default {
*/ */
getProcessMasterList ({ state }, payload) { getProcessMasterList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`process/master/list`, payload, res => { io.get('process/master/list', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -416,7 +416,7 @@ export default {
*/ */
getProcessWorkerList ({ state }, payload) { getProcessWorkerList ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`process/worker/list`, payload, res => { io.get('process/worker/list', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -428,7 +428,7 @@ export default {
*/ */
getQueueListP ({ state }, payload) { getQueueListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`queue/list-paging`, payload, res => { io.get('queue/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -440,7 +440,7 @@ export default {
*/ */
createQueueQ ({ state }, payload) { createQueueQ ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`queue/create`, payload, res => { io.post('queue/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -452,7 +452,7 @@ export default {
*/ */
updateQueueQ ({ state }, payload) { updateQueueQ ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`queue/update`, payload, res => { io.post('queue/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -464,7 +464,7 @@ export default {
*/ */
verifyQueueQ ({ state }, payload) { verifyQueueQ ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`queue/verify-queue`, payload, res => { io.post('queue/verify-queue', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -476,7 +476,7 @@ export default {
*/ */
getWorkerGroups ({ state }, payload) { getWorkerGroups ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`worker-group/list-paging`, payload, res => { io.get('worker-group/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -488,10 +488,10 @@ export default {
*/ */
getWorkerGroupsAll ({ state }, payload) { getWorkerGroupsAll ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`worker-group/all-groups`, payload, res => { io.get('worker-group/all-groups', payload, res => {
let list = res.data let list = res.data
if(list.length>0) { if (list.length > 0) {
list = list.map(item=>{ list = list.map(item => {
return { return {
id: item, id: item,
name: item name: item
@ -512,7 +512,7 @@ export default {
}, },
saveWorkerGroups ({ state }, payload) { saveWorkerGroups ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`worker-group/save`, payload, res => { io.post('worker-group/save', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -521,7 +521,7 @@ export default {
}, },
deleteWorkerGroups ({ state }, payload) { deleteWorkerGroups ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`worker-group/delete-by-id`, payload, res => { io.get('worker-group/delete-by-id', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

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

@ -16,5 +16,5 @@
*/ */
export default { export default {
workerGroupsListAll: [], workerGroupsListAll: [],
tenantAllList : [] tenantAllList: []
} }

14
dolphinscheduler-ui/src/js/conf/home/store/user/actions.js

@ -23,7 +23,7 @@ export default {
*/ */
getUserInfo ({ state }, payload) { getUserInfo ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`users/get-user-info`, payload, res => { io.get('users/get-user-info', payload, res => {
state.userInfo = res.data state.userInfo = res.data
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
@ -35,7 +35,7 @@ export default {
* sign out * sign out
*/ */
signOut () { signOut () {
io.post(`signOut`, res => { io.post('signOut', res => {
setTimeout(() => { setTimeout(() => {
window.location.href = `${PUBLIC_PATH}/view/login/index.html` window.location.href = `${PUBLIC_PATH}/view/login/index.html`
}, 100) }, 100)
@ -52,7 +52,7 @@ export default {
*/ */
getTokenListP ({ state }, payload) { getTokenListP ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.get(`access-token/list-paging`, payload, res => { io.get('access-token/list-paging', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -68,7 +68,7 @@ export default {
*/ */
createToken ({ state }, payload) { createToken ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`access-token/create`, payload, res => { io.post('access-token/create', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -84,7 +84,7 @@ export default {
*/ */
updateToken ({ state }, payload) { updateToken ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`access-token/update`, payload, res => { io.post('access-token/update', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -99,7 +99,7 @@ export default {
*/ */
generateToken ({ state }, payload) { generateToken ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`access-token/generate`, payload, res => { io.post('access-token/generate', payload, res => {
resolve(res.data) resolve(res.data)
}).catch(e => { }).catch(e => {
reject(e) reject(e)
@ -113,7 +113,7 @@ export default {
*/ */
deleteToken ({ state }, payload) { deleteToken ({ state }, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
io.post(`access-token/delete`, payload, res => { io.post('access-token/delete', payload, res => {
resolve(res) resolve(res)
}).catch(e => { }).catch(e => {
reject(e) reject(e)

4
dolphinscheduler-ui/src/js/conf/login/index.js

@ -25,7 +25,7 @@ import 'ans-ui/lib/ans-ui.min.css'
import ans from 'ans-ui/lib/ans-ui.min' import ans from 'ans-ui/lib/ans-ui.min'
import 'sass/conf/login/index.scss' import 'sass/conf/login/index.scss'
import'bootstrap/dist/js/bootstrap.min.js' import 'bootstrap/dist/js/bootstrap.min.js'
Vue.use(ans) Vue.use(ans)
@ -41,7 +41,7 @@ new Vue({
}, },
methods: { methods: {
initApp () { initApp () {
let bootstrapTooltip = $.fn.tooltip.noConflict() const bootstrapTooltip = $.fn.tooltip.noConflict()
$.fn.tooltip = bootstrapTooltip $.fn.tooltip = bootstrapTooltip
$('body').tooltip({ $('body').tooltip({
selector: '[data-toggle="tooltip"]', selector: '[data-toggle="tooltip"]',

4
dolphinscheduler-ui/src/js/module/ana-charts/common.js

@ -52,7 +52,7 @@ function getChartContainers (el) {
throw new Error('No corresponding DOM object found!') throw new Error('No corresponding DOM object found!')
} }
let list let list
if (HTMLElement.prototype.isPrototypeOf(el)) { if (Object.prototype.isPrototypeOf.call(HTMLElement.prototype, el)) {
list = new Array(el) list = new Array(el)
} else { } else {
list = Array.from(el) list = Array.from(el)
@ -70,7 +70,7 @@ function getChartContainers (el) {
*/ */
export const checkKeyInModel = (model, ...params) => { export const checkKeyInModel = (model, ...params) => {
for (const key of params) { for (const key of params) {
if (!model.hasOwnProperty(key)) { if (!Object.prototype.hasOwnProperty.call(model, key)) {
throw new Error('Data format error! The specified property was not found:' + key) throw new Error('Data format error! The specified property was not found:' + key)
} }
} }

2
dolphinscheduler-ui/src/js/module/ana-charts/index.js

@ -55,7 +55,7 @@ const Chart = {
// Corresponding methods for injection of different components // Corresponding methods for injection of different components
for (const key in components) { for (const key in components) {
if (components.hasOwnProperty(key)) { if (Object.prototype.hasOwnProperty.call(components, key)) {
Chart[key.toLowerCase()] = (el, data, options) => { Chart[key.toLowerCase()] = (el, data, options) => {
return init(components[key], el, data, options) return init(components[key], el, data, options)
} }

6
dolphinscheduler-ui/src/js/module/ana-charts/packages/bar/index.js

@ -242,7 +242,7 @@ export default class Bar extends Base {
} = this.settings } = this.settings
const valueAxis = { type: 'value' } const valueAxis = { type: 'value' }
let yAxisModel = reverseAxis ? xAxis : valueAxis let yAxisModel = reverseAxis ? xAxis : valueAxis
let xAxisModel = reverseAxis ? valueAxis : xAxis const xAxisModel = reverseAxis ? valueAxis : xAxis
// Use custom Y-axis overlay // Use custom Y-axis overlay
if (yAxis) { if (yAxis) {
yAxisModel = yAxis yAxisModel = yAxis
@ -267,7 +267,7 @@ export default class Bar extends Base {
// time axis // time axis
if (timelineOptions) { if (timelineOptions) {
let opts = { const opts = {
baseOption: { baseOption: {
timeline: timelineOptions.timeline, timeline: timelineOptions.timeline,
tooltip: { tooltip: {
@ -296,7 +296,7 @@ export default class Bar extends Base {
// When the simple chart title is empty, the chart is vertically centered // When the simple chart title is empty, the chart is vertically centered
const top = !title && this.simple ? '3%' : 60 const top = !title && this.simple ? '3%' : 60
let opts = { const opts = {
title: { title: {
text: title text: title
}, },

4
dolphinscheduler-ui/src/js/module/ana-charts/packages/funnel/index.js

@ -118,10 +118,10 @@ export default class Funnel extends Base {
* Drawing charts * Drawing charts
*/ */
apply () { apply () {
let { title, series, legendData } = this.options const { title, series, legendData } = this.options
// Injection configuration to series // Injection configuration to series
let { insertSeries } = this.settings const { insertSeries } = this.settings
let _series = series let _series = series
if (insertSeries && insertSeries.length && series.length) { if (insertSeries && insertSeries.length && series.length) {
_series = this.injectDataIntoSeries(insertSeries, _series) _series = this.injectDataIntoSeries(insertSeries, _series)

4
dolphinscheduler-ui/src/js/module/ana-charts/packages/line/index.js

@ -162,7 +162,7 @@ export default class Line extends Base {
} = this.settings } = this.settings
const valueAxis = { type: 'value' } const valueAxis = { type: 'value' }
let yAxisModel = reverseAxis ? xAxis : valueAxis let yAxisModel = reverseAxis ? xAxis : valueAxis
let xAxisModel = reverseAxis ? valueAxis : xAxis const xAxisModel = reverseAxis ? valueAxis : xAxis
// Use custom Y-axis overlay // Use custom Y-axis overlay
if (yAxis) { if (yAxis) {
yAxisModel = yAxis yAxisModel = yAxis
@ -175,7 +175,7 @@ export default class Line extends Base {
_series = this.injectDataIntoSeries(insertSeries, _series) _series = this.injectDataIntoSeries(insertSeries, _series)
} }
let opts = { const opts = {
title: { title: {
text: title text: title
}, },

10
dolphinscheduler-ui/src/js/module/ana-charts/packages/pie/index.js

@ -60,8 +60,8 @@ export default class Pie extends Base {
checkKeyInModel(data[0], textKey, dataKey) checkKeyInModel(data[0], textKey, dataKey)
const legendData = [] const legendData = []
let radius = ring ? ['50%', '70%'] : '60%' const radius = ring ? ['50%', '70%'] : '60%'
let center = title ? ['50%', '60%'] : ['50%', '50%'] const center = title ? ['50%', '60%'] : ['50%', '50%']
const series = [{ const series = [{
radius: radius, radius: radius,
center: center, center: center,
@ -88,16 +88,16 @@ export default class Pie extends Base {
* Drawing charts * Drawing charts
*/ */
apply () { apply () {
let { title, series, legendData } = this.options const { title, series, legendData } = this.options
// Injection configuration to series // Injection configuration to series
let { insertSeries } = this.settings const { insertSeries } = this.settings
let _series = series let _series = series
if (insertSeries && insertSeries.length && series.length) { if (insertSeries && insertSeries.length && series.length) {
_series = this.injectDataIntoSeries(insertSeries, _series) _series = this.injectDataIntoSeries(insertSeries, _series)
} }
let opts = { const opts = {
title: { title: {
text: title, text: title,
x: 'center' x: 'center'

2
dolphinscheduler-ui/src/js/module/ana-charts/packages/radar/index.js

@ -87,7 +87,7 @@ export default class Radar extends Base {
targetSeries._raw.push(data[i]) targetSeries._raw.push(data[i])
// index // index
let targetIndicator = indicator.find(i => i.name === textItem) const targetIndicator = indicator.find(i => i.name === textItem)
if (!targetIndicator) { if (!targetIndicator) {
indicator.push({ name: textItem }) indicator.push({ name: textItem })
} }

2
dolphinscheduler-ui/src/js/module/ana-charts/packages/scatter/index.js

@ -120,7 +120,7 @@ export default class Scatter extends Base {
apply () { apply () {
const { title, series, legendData = [] } = this.options const { title, series, legendData = [] } = this.options
let { const {
// Custom X axis // Custom X axis
xAxis, xAxis,
// Custom Y axis // Custom Y axis

64
dolphinscheduler-ui/src/js/module/axios/querystring.js

@ -16,45 +16,45 @@
*/ */
/* istanbul ignore next */ /* istanbul ignore next */
var param = function (a) { var param = function (a) {
var s = [], var s = []
rbracket = /\[\]$/, var rbracket = /\[\]$/
isArray = function (obj) { var isArray = function (obj) {
return Object.prototype.toString.call(obj) === '[object Array]' return Object.prototype.toString.call(obj) === '[object Array]'
}, }
add = function (k, v) { var add = function (k, v) {
v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v
s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v) s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v)
}, }
buildParams = function (prefix, obj) { var buildParams = function (prefix, obj) {
var i, len, key var i, len, key
if (prefix) { if (prefix) {
if (isArray(obj)) { if (isArray(obj)) {
for (i = 0, len = obj.length; i < len; i++) {
if (rbracket.test(prefix)) {
add(prefix, obj[i])
} else {
buildParams(prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']', obj[i])
}
}
} else if (obj && String(obj) === '[object Object]') {
for (key in obj) {
buildParams(prefix + '[' + key + ']', obj[key])
}
} else {
add(prefix, obj)
}
} else if (isArray(obj)) {
for (i = 0, len = obj.length; i < len; i++) { for (i = 0, len = obj.length; i < len; i++) {
add(obj[i].name, obj[i].value) if (rbracket.test(prefix)) {
add(prefix, obj[i])
} else {
buildParams(prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']', obj[i])
}
} }
} else { } else if (obj && String(obj) === '[object Object]') {
for (key in obj) { for (key in obj) {
buildParams(key, obj[key]) buildParams(prefix + '[' + key + ']', obj[key])
} }
} else {
add(prefix, obj)
}
} else if (isArray(obj)) {
for (i = 0, len = obj.length; i < len; i++) {
add(obj[i].name, obj[i].value)
}
} else {
for (key in obj) {
buildParams(key, obj[key])
} }
return s
} }
return s
}
return buildParams('', a).join('&').replace(/%20/g, '+') return buildParams('', a).join('&').replace(/%20/g, '+')
} }

1
dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/index.js

@ -25,4 +25,3 @@ export default {
} }
} }
} }

86
dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/locale/en_US.js

@ -15,62 +15,62 @@
* limitations under the License. * limitations under the License.
*/ */
export default { export default {
'秒': 'second', : 'second',
'分': 'minute', : 'minute',
'时': 'hour', : 'hour',
'天': 'day', : 'day',
'月': 'month', : 'month',
'年': 'year', : 'year',
'星期一': 'Monday', 星期一: 'Monday',
'星期二': 'Tuesday', 星期二: 'Tuesday',
'星期三': 'Wednesday', 星期三: 'Wednesday',
'星期四': 'Thursday', 星期四: 'Thursday',
'星期五': 'Friday', 星期五: 'Friday',
'星期六': 'Saturday', 星期六: 'Saturday',
'星期天': 'Sunday', 星期天: 'Sunday',
'每一秒钟': 'Every second', 每一秒钟: 'Every second',
'每隔': 'Every', 每隔: 'Every',
'秒执行 ': 'second carried out', '秒执行 ': 'second carried out',
'秒开始': 'Start', 秒开始: 'Start',
'具体秒数(可多选)': 'Specific second(multiple)', '具体秒数(可多选)': 'Specific second(multiple)',
'请选择具体秒数': 'Please enter a specific second', 请选择具体秒数: 'Please enter a specific second',
'周期从': 'Cycle from', 周期从: 'Cycle from',
'到': 'to', : 'to',
'每一分钟': 'Every minute', 每一分钟: 'Every minute',
'分执行 ': 'minute carried out', '分执行 ': 'minute carried out',
'分开始': 'Start', 分开始: 'Start',
'具体分钟数(可多选)': 'Specific minute(multiple)', '具体分钟数(可多选)': 'Specific minute(multiple)',
'请选择具体分钟数': 'Please enter a specific minute', 请选择具体分钟数: 'Please enter a specific minute',
'每一小时': 'Every hour', 每一小时: 'Every hour',
'小时执行 ': 'hour carried out', '小时执行 ': 'hour carried out',
'小时开始': 'Start', 小时开始: 'Start',
'具体小时数(可多选)': 'Specific hour(multiple)', '具体小时数(可多选)': 'Specific hour(multiple)',
'请选择具体小时数': 'Please enter a hour', 请选择具体小时数: 'Please enter a hour',
'每一天': 'Every day', 每一天: 'Every day',
'周执行 ': 'week carried out', '周执行 ': 'week carried out',
'开始': 'Start', 开始: 'Start',
'天执行 ': 'day carried out', '天执行 ': 'day carried out',
'天开始': 'Start', 天开始: 'Start',
'具体星期几(可多选)': 'Specific day of the week(multiple)', '具体星期几(可多选)': 'Specific day of the week(multiple)',
'请选择具体周几': 'Please enter a week', 请选择具体周几: 'Please enter a week',
'具体天数(可多选)': 'Specific days(multiple)', '具体天数(可多选)': 'Specific days(multiple)',
'请选择具体天数': 'Please enter a days', 请选择具体天数: 'Please enter a days',
'在这个月的最后一天': 'On the last day of the month', 在这个月的最后一天: 'On the last day of the month',
'在这个月的最后一个工作日': 'On the last working day of the month', 在这个月的最后一个工作日: 'On the last working day of the month',
'在这个月的最后一个': 'At the last of this month', 在这个月的最后一个: 'At the last of this month',
'在本月底前': 'Before the end of this month', 在本月底前: 'Before the end of this month',
'最近的工作日周一至周五至本月': 'The most recent business day (Monday to Friday) to this month', '最近的工作日周一至周五至本月': 'The most recent business day (Monday to Friday) to this month',
'在这个月的第': 'In this months', 在这个月的第: 'In this months',
'每一月': 'Every month', 每一月: 'Every month',
'月执行 ': 'month carried out', '月执行 ': 'month carried out',
'月开始': 'Start', 月开始: 'Start',
'具体月数(可多选)': 'Specific months(multiple)', '具体月数(可多选)': 'Specific months(multiple)',
'请选择具体月数': 'Please enter a months', 请选择具体月数: 'Please enter a months',
'每一年': 'Every year', 每一年: 'Every year',
'年执行 ': 'year carried out', '年执行 ': 'year carried out',
'年开始': 'Start', 年开始: 'Start',
'具体年数(可多选)': 'Specific year(multiple)', '具体年数(可多选)': 'Specific year(multiple)',
'请选择具体年数': 'Please enter a year', 请选择具体年数: 'Please enter a year',
'小时': 'hour', 小时: 'hour',
'日': 'day' : 'day'
} }

86
dolphinscheduler-ui/src/js/module/components/crontab/source/_source/i18n/locale/zh_CN.js

@ -15,62 +15,62 @@
* limitations under the License. * limitations under the License.
*/ */
export default { export default {
'秒': '秒', : '秒',
'分': '分', : '分',
'时': '时', : '时',
'天': '天', : '天',
'月': '月', : '月',
'年': '年', : '年',
'星期一': '星期一', 星期一: '星期一',
'星期二': '星期二', 星期二: '星期二',
'星期三': '星期三', 星期三: '星期三',
'星期四': '星期四', 星期四: '星期四',
'星期五': '星期五', 星期五: '星期五',
'星期六': '星期六', 星期六: '星期六',
'星期天': '星期天', 星期天: '星期天',
'每一秒钟': '每一秒钟', 每一秒钟: '每一秒钟',
'每隔': '每隔', 每隔: '每隔',
'秒执行 ': '秒执行 ', '秒执行 ': '秒执行 ',
'秒开始': '秒开始', 秒开始: '秒开始',
'具体秒数(可多选)': '具体秒数(可多选)', '具体秒数(可多选)': '具体秒数(可多选)',
'请选择具体秒数': '请选择具体秒数', 请选择具体秒数: '请选择具体秒数',
'周期从': '周期从', 周期从: '周期从',
'到': '到', : '到',
'每一分钟': '每一分钟', 每一分钟: '每一分钟',
'分执行 ': '分执行 ', '分执行 ': '分执行 ',
'分开始': '分开始', 分开始: '分开始',
'具体分钟数(可多选)': '具体分钟数(可多选)', '具体分钟数(可多选)': '具体分钟数(可多选)',
'请选择具体分钟数': '请选择具体分钟数', 请选择具体分钟数: '请选择具体分钟数',
'每一小时': '每一小时', 每一小时: '每一小时',
'小时执行 ': '小时执行 ', '小时执行 ': '小时执行 ',
'小时开始': '小时开始', 小时开始: '小时开始',
'具体小时数(可多选)': '具体小时数(可多选)', '具体小时数(可多选)': '具体小时数(可多选)',
'请选择具体小时数': '请选择具体小时数', 请选择具体小时数: '请选择具体小时数',
'每一天': '每一天', 每一天: '每一天',
'周执行 ': '周执行 ', '周执行 ': '周执行 ',
'开始': '开始', 开始: '开始',
'天执行 ': '天执行 ', '天执行 ': '天执行 ',
'天开始': '天开始', 天开始: '天开始',
'具体星期几(可多选)': '具体星期几(可多选)', '具体星期几(可多选)': '具体星期几(可多选)',
'请选择具体周几': '请选择具体周几', 请选择具体周几: '请选择具体周几',
'具体天数(可多选)': '具体天数(可多选)', '具体天数(可多选)': '具体天数(可多选)',
'请选择具体天数': '请选择具体天数', 请选择具体天数: '请选择具体天数',
'在这个月的最后一天': '在这个月的最后一天', 在这个月的最后一天: '在这个月的最后一天',
'在这个月的最后一个工作日': '在这个月的最后一个工作日', 在这个月的最后一个工作日: '在这个月的最后一个工作日',
'在这个月的最后一个': '在这个月的最后一个', 在这个月的最后一个: '在这个月的最后一个',
'在本月底前': '在本月底前', 在本月底前: '在本月底前',
'最近的工作日周一至周五至本月': '最近的工作日周一至周五至本月', '最近的工作日周一至周五至本月': '最近的工作日周一至周五至本月',
'在这个月的第': '在这个月的第', 在这个月的第: '在这个月的第',
'每一月': '每一月', 每一月: '每一月',
'月执行 ': '月执行 ', '月执行 ': '月执行 ',
'月开始': '月开始', 月开始: '月开始',
'具体月数(可多选)': '具体月数(可多选)', '具体月数(可多选)': '具体月数(可多选)',
'请选择具体月数': '请选择具体月数', 请选择具体月数: '请选择具体月数',
'每一年': '每一年', 每一年: '每一年',
'年执行 ': '年执行 ', '年执行 ': '年执行 ',
'年开始': '年开始', 年开始: '年开始',
'具体年数(可多选)': '具体年数(可多选)', '具体年数(可多选)': '具体年数(可多选)',
'请选择具体年数': '请选择具体年数', 请选择具体年数: '请选择具体年数',
'小时': '小时', 小时: '小时',
'日': '日' : '日'
} }

26
dolphinscheduler-ui/src/js/module/components/crontab/source/util/index.js

@ -23,37 +23,37 @@ import _ from 'lodash'
* @param end End value * @param end End value
*/ */
const range = (start, end) => { const range = (start, end) => {
let length = end - start + 1 const length = end - start + 1
let step = start - 1 let step = start - 1
return Array.apply(null, { length: length }).map(function (v, i) { step++; return step }) return Array.apply(null, { length: length }).map(function (v, i) { step++; return step })
} }
let selectList = { const selectList = {
'60': _.map(range(0, 59), v => { 60: _.map(range(0, 59), v => {
return { return {
value: v + '', value: v + '',
label: v + '' label: v + ''
} }
}), }),
'24': _.map(range(0, 23), v => { 24: _.map(range(0, 23), v => {
return { return {
value: v + '', value: v + '',
label: v + '' label: v + ''
} }
}), }),
'12': _.map(range(0, 12), v => { 12: _.map(range(0, 12), v => {
return { return {
value: v + '', value: v + '',
label: v + '' label: v + ''
} }
}), }),
'year': _.map(range(2018, 2030), v => { year: _.map(range(2018, 2030), v => {
return { return {
value: v + '', value: v + '',
label: v + '' label: v + ''
} }
}), }),
'week': [ week: [
{ {
value: 1, value: 1,
label: '星期天' label: '星期天'
@ -83,7 +83,7 @@ let selectList = {
label: '星期六' label: '星期六'
} }
], ],
'specificWeek': [ specificWeek: [
{ {
value: 'SUN', value: 'SUN',
label: 'SUN' label: 'SUN'
@ -113,13 +113,13 @@ let selectList = {
label: 'SAT' label: 'SAT'
} }
], ],
'day': _.map(range(1, 31), v => { day: _.map(range(1, 31), v => {
return { return {
value: v + '', value: v + '',
label: v + '' label: v + ''
} }
}), }),
'lastWeeks': [ lastWeeks: [
{ {
value: '1L', value: '1L',
label: '星期天' label: '星期天'
@ -161,8 +161,8 @@ const isStr = (str, v) => {
const isWeek = (str) => { const isWeek = (str) => {
let flag = false let flag = false
let data = str.split(',') const data = str.split(',')
let isSpecificWeek = (key) => { const isSpecificWeek = (key) => {
return _.findIndex(selectList.specificWeek, v => v.value === key) !== -1 return _.findIndex(selectList.specificWeek, v => v.value === key) !== -1
} }
_.map(data, v => { _.map(data, v => {
@ -173,7 +173,6 @@ const isWeek = (str) => {
return flag return flag
} }
/** /**
* template * template
* *
@ -206,7 +205,6 @@ const template = (string, ...args) => {
}) })
} }
export { export {
selectList, selectList,
isStr, isStr,

4
dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js

@ -19,7 +19,7 @@ import i18n from '@/module/i18n'
import config from '~/external/config' import config from '~/external/config'
import Permissions from '@/module/permissions' import Permissions from '@/module/permissions'
let menu = { const menu = {
projects: [ projects: [
{ {
name: `${i18n.$t('Project Home')}`, name: `${i18n.$t('Project Home')}`,
@ -225,7 +225,7 @@ let menu = {
icon: 'ans-icon-menu', icon: 'ans-icon-menu',
children: [ children: [
{ {
name: "Statistics", name: 'Statistics',
path: 'statistics', path: 'statistics',
id: 0, id: 0,
disabled: true disabled: true

8
dolphinscheduler-ui/src/js/module/download/index.js

@ -19,8 +19,8 @@ import i18n from '@/module/i18n'
/** /**
* download file * download file
*/ */
let downloadFile = ($url, $obj) => { const downloadFile = ($url, $obj) => {
let param = { const param = {
url: $url, url: $url,
obj: $obj obj: $obj
} }
@ -30,9 +30,9 @@ let downloadFile = ($url, $obj) => {
return return
} }
let generatorInput = function (obj) { const generatorInput = function (obj) {
let result = '' let result = ''
let keyArr = Object.keys(obj) const keyArr = Object.keys(obj)
keyArr.forEach(function (key) { keyArr.forEach(function (key) {
result += "<input type='hidden' name = '" + key + "' value='" + obj[key] + "'>" result += "<input type='hidden' name = '" + key + "' value='" + obj[key] + "'>"
}) })

349
dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js

@ -18,11 +18,11 @@
export default { export default {
'User Name': 'User Name', 'User Name': 'User Name',
'Please enter user name': 'Please enter user name', 'Please enter user name': 'Please enter user name',
'Password': 'Password', Password: 'Password',
'Please enter your password': 'Please enter your password', 'Please enter your password': 'Please enter your password',
'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22': 'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22', 'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22': 'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22',
'Login': 'Login', Login: 'Login',
'Home': 'Home', Home: 'Home',
'Failed to create node to save': 'Failed to create node to save', 'Failed to create node to save': 'Failed to create node to save',
'Global parameters': 'Global parameters', 'Global parameters': 'Global parameters',
'Local parameters': 'Local parameters', 'Local parameters': 'Local parameters',
@ -36,14 +36,14 @@ export default {
'Node name': 'Node name', 'Node name': 'Node name',
'Please enter name(required)': 'Please enter name(required)', 'Please enter name(required)': 'Please enter name(required)',
'Run flag': 'Run flag', 'Run flag': 'Run flag',
'Normal': 'Normal', Normal: 'Normal',
'Prohibition execution': 'Prohibition execution', 'Prohibition execution': 'Prohibition execution',
'Please enter description': 'Please enter description', 'Please enter description': 'Please enter description',
'Number of failed retries': 'Number of failed retries', 'Number of failed retries': 'Number of failed retries',
'Times': 'Times', Times: 'Times',
'Failed retry interval': 'Failed retry interval', 'Failed retry interval': 'Failed retry interval',
'Minute': 'Minute', Minute: 'Minute',
'Cancel': 'Cancel', Cancel: 'Cancel',
'Confirm add': 'Confirm add', 'Confirm add': 'Confirm add',
'The newly created sub-Process has not yet been executed and cannot enter the sub-Process': 'The newly created sub-Process has not yet been executed and cannot enter the sub-Process', 'The newly created sub-Process has not yet been executed and cannot enter the sub-Process': 'The newly created sub-Process has not yet been executed and cannot enter the sub-Process',
'The task has not been executed and cannot enter the sub-Process': 'The task has not been executed and cannot enter the sub-Process', 'The task has not been executed and cannot enter the sub-Process': 'The task has not been executed and cannot enter the sub-Process',
@ -53,7 +53,7 @@ export default {
'Refresh Log': 'Refresh Log', 'Refresh Log': 'Refresh Log',
'Enter full screen': 'Enter full screen', 'Enter full screen': 'Enter full screen',
'Cancel full screen': 'Cancel full screen', 'Cancel full screen': 'Cancel full screen',
'Close': 'Close', Close: 'Close',
'Update log success': 'Update log success', 'Update log success': 'Update log success',
'No more logs': 'No more logs', 'No more logs': 'No more logs',
'No log': 'No log', 'No log': 'No log',
@ -62,22 +62,23 @@ export default {
'Please enter description(optional)': 'Please enter description(optional)', 'Please enter description(optional)': 'Please enter description(optional)',
'Set global': 'Set global', 'Set global': 'Set global',
'Whether to update the process definition': 'Whether to update the process definition', 'Whether to update the process definition': 'Whether to update the process definition',
'Add': 'Add', Add: 'Add',
'DAG graph name cannot be empty': 'DAG graph name cannot be empty', 'DAG graph name cannot be empty': 'DAG graph name cannot be empty',
'Create Datasource': 'Create Datasource', 'Create Datasource': 'Create Datasource',
'Project Home': 'Project Home', 'Project Home': 'Project Home',
'Project Manage': 'Project', 'Project Manage': 'Project',
'Create Project': 'Create Project', 'Create Project': 'Create Project',
'Cron Manage': 'Cron Manage', 'Cron Manage': 'Cron Manage',
'Copy Workflow': 'Copy Workflow',
'Tenant Manage': 'Tenant Manage', 'Tenant Manage': 'Tenant Manage',
'Create Tenant': 'Create Tenant', 'Create Tenant': 'Create Tenant',
'User Manage': 'User Manage', 'User Manage': 'User Manage',
'Create User': 'Create User', 'Create User': 'Create User',
'User Information': 'User Information', 'User Information': 'User Information',
'Edit Password': 'Edit Password', 'Edit Password': 'Edit Password',
'success': 'success', success: 'success',
'failed': 'failed', failed: 'failed',
'delete': 'delete', delete: 'delete',
'Please choose': 'Please choose', 'Please choose': 'Please choose',
'Please enter a positive integer': 'Please enter a positive integer', 'Please enter a positive integer': 'Please enter a positive integer',
'Program Type': 'Program Type', 'Program Type': 'Program Type',
@ -88,13 +89,13 @@ export default {
'Please enter Command-line parameters': 'Please enter Command-line parameters', 'Please enter Command-line parameters': 'Please enter Command-line parameters',
'Other parameters': 'Other parameters', 'Other parameters': 'Other parameters',
'Please enter other parameters': 'Please enter other parameters', 'Please enter other parameters': 'Please enter other parameters',
'Resources': 'Resources', Resources: 'Resources',
'Custom Parameters': 'Custom Parameters', 'Custom Parameters': 'Custom Parameters',
'Custom template': 'Custom template', 'Custom template': 'Custom template',
'Datasource': 'Datasource', Datasource: 'Datasource',
'methods': 'methods', methods: 'methods',
'Please enter method(optional)': 'Please enter method(optional)', 'Please enter method(optional)': 'Please enter method(optional)',
'Script': 'Script', Script: 'Script',
'Please enter script(required)': 'Please enter script(required)', 'Please enter script(required)': 'Please enter script(required)',
'Deploy Mode': 'Deploy Mode', 'Deploy Mode': 'Deploy Mode',
'Driver core number': 'Driver core number', 'Driver core number': 'Driver core number',
@ -112,11 +113,11 @@ export default {
'Please enter ExecutorPlease enter Executor core number': 'Please enter ExecutorPlease enter Executor core number', 'Please enter ExecutorPlease enter Executor core number': 'Please enter ExecutorPlease enter Executor core number',
'Core number should be positive integer': 'Core number should be positive integer', 'Core number should be positive integer': 'Core number should be positive integer',
'SQL Type': 'SQL Type', 'SQL Type': 'SQL Type',
'Title': 'Title', Title: 'Title',
'Please enter the title of email': 'Please enter the title of email', 'Please enter the title of email': 'Please enter the title of email',
'Table': 'Table', Table: 'Table',
'TableMode': 'Table', TableMode: 'Table',
'Attachment': 'Attachment', Attachment: 'Attachment',
'SQL Parameter': 'SQL Parameter', 'SQL Parameter': 'SQL Parameter',
'SQL Statement': 'SQL Statement', 'SQL Statement': 'SQL Statement',
'UDF Function': 'UDF Function', 'UDF Function': 'UDF Function',
@ -127,12 +128,12 @@ export default {
'Mail subject required': 'Mail subject required', 'Mail subject required': 'Mail subject required',
'Child Node': 'Child Node', 'Child Node': 'Child Node',
'Please select a sub-Process': 'Please select a sub-Process', 'Please select a sub-Process': 'Please select a sub-Process',
'Edit': 'Edit', Edit: 'Edit',
'Datasource Name': 'Datasource Name', 'Datasource Name': 'Datasource Name',
'Please enter datasource name': 'Please enter datasource name', 'Please enter datasource name': 'Please enter datasource name',
'IP': 'IP', IP: 'IP',
'Please enter IP': 'Please enter IP', 'Please enter IP': 'Please enter IP',
'Port': 'Port', Port: 'Port',
'Please enter port': 'Please enter port', 'Please enter port': 'Please enter port',
'Database Name': 'Database Name', 'Database Name': 'Database Name',
'Please enter database name': 'Please enter database name', 'Please enter database name': 'Please enter database name',
@ -151,13 +152,13 @@ export default {
'Datasource Parameter': 'Datasource Parameter', 'Datasource Parameter': 'Datasource Parameter',
'Create Time': 'Create Time', 'Create Time': 'Create Time',
'Update Time': 'Update Time', 'Update Time': 'Update Time',
'Operation': 'Operation', Operation: 'Operation',
'Click to view': 'Click to view', 'Click to view': 'Click to view',
'Delete?': 'Delete?', 'Delete?': 'Delete?',
'Confirm': 'Confirm', Confirm: 'Confirm',
'Task status statistics': 'Task Status Statistics', 'Task status statistics': 'Task Status Statistics',
'Number': 'Number', Number: 'Number',
'State': 'State', State: 'State',
'Process Status Statistics': 'Process Status Statistics', 'Process Status Statistics': 'Process Status Statistics',
'Process Definition Statistics': 'Process Definition Statistics', 'Process Definition Statistics': 'Process Definition Statistics',
'Project Name': 'Project Name', 'Project Name': 'Project Name',
@ -165,42 +166,42 @@ export default {
'Owned Users': 'Owned Users', 'Owned Users': 'Owned Users',
'Process Pid': 'Process Pid', 'Process Pid': 'Process Pid',
'Zk registration directory': 'Zk registration directory', 'Zk registration directory': 'Zk registration directory',
'cpuUsage': 'cpuUsage', cpuUsage: 'cpuUsage',
'memoryUsage': 'memoryUsage', memoryUsage: 'memoryUsage',
'Last heartbeat time': 'Last heartbeat time', 'Last heartbeat time': 'Last heartbeat time',
'Edit Tenant': 'Edit Tenant', 'Edit Tenant': 'Edit Tenant',
'Tenant Code': 'Tenant Code', 'Tenant Code': 'Tenant Code',
'Tenant Name': 'Tenant Name', 'Tenant Name': 'Tenant Name',
'Queue': 'Queue', Queue: 'Queue',
'Please select a queue': 'Please select a queue', 'Please select a queue': 'Please select a queue',
'Please enter the tenant code in English': 'Please enter the tenant code in English', 'Please enter the tenant code in English': 'Please enter the tenant code in English',
'Please enter tenant code in English': 'Please enter tenant code in English', 'Please enter tenant code in English': 'Please enter tenant code in English',
'Edit User': 'Edit User', 'Edit User': 'Edit User',
'Tenant': 'Tenant', Tenant: 'Tenant',
'Email': 'Email', Email: 'Email',
'Phone': 'Phone', Phone: 'Phone',
'Please enter phone number': 'Please enter phone number', 'Please enter phone number': 'Please enter phone number',
'Please enter main class': 'Please enter main class', 'Please enter main class': 'Please enter main class',
'Please enter email': 'Please enter email', 'Please enter email': 'Please enter email',
'Please enter the correct email format': 'Please enter the correct email format', 'Please enter the correct email format': 'Please enter the correct email format',
'Please enter the correct mobile phone format': 'Please enter the correct mobile phone format', 'Please enter the correct mobile phone format': 'Please enter the correct mobile phone format',
'Project': 'Project', Project: 'Project',
'Authorize': 'Authorize', Authorize: 'Authorize',
'File resources': 'File resources', 'File resources': 'File resources',
'UDF resources': 'UDF resources', 'UDF resources': 'UDF resources',
'Please select UDF resources directory': 'Please select UDF resources directory', 'Please select UDF resources directory': 'Please select UDF resources directory',
'UDF resources directory' : 'UDF resources directory', 'UDF resources directory': 'UDF resources directory',
'Upload File Size': 'Upload File size cannot exceed 1g', 'Upload File Size': 'Upload File size cannot exceed 1g',
'Edit alarm group': 'Edit alarm group', 'Edit alarm group': 'Edit alarm group',
'Create alarm group': 'Create alarm group', 'Create alarm group': 'Create alarm group',
'Group Name': 'Group Name', 'Group Name': 'Group Name',
'Please enter group name': 'Please enter group name', 'Please enter group name': 'Please enter group name',
'Group Type': 'Group Type', 'Group Type': 'Group Type',
'Remarks': 'Remarks', Remarks: 'Remarks',
'SMS': 'SMS', SMS: 'SMS',
'Managing Users': 'Managing Users', 'Managing Users': 'Managing Users',
'Permission': 'Permission', Permission: 'Permission',
'Administrator': 'Administrator', Administrator: 'Administrator',
'Confirm Password': 'Confirm Password', 'Confirm Password': 'Confirm Password',
'Please enter confirm password': 'Please enter confirm password', 'Please enter confirm password': 'Please enter confirm password',
'Password cannot be in Chinese': 'Password cannot be in Chinese', 'Password cannot be in Chinese': 'Password cannot be in Chinese',
@ -210,7 +211,7 @@ export default {
'The password is inconsistent with the confirmation password': 'The password is inconsistent with the confirmation password', 'The password is inconsistent with the confirmation password': 'The password is inconsistent with the confirmation password',
'Please select the datasource': 'Please select the datasource', 'Please select the datasource': 'Please select the datasource',
'Please select resources': 'Please select resources', 'Please select resources': 'Please select resources',
'Query': 'Query', Query: 'Query',
'Non Query': 'Non Query', 'Non Query': 'Non Query',
'prop(required)': 'prop(required)', 'prop(required)': 'prop(required)',
'value(optional)': 'value(optional)', 'value(optional)': 'value(optional)',
@ -220,18 +221,18 @@ export default {
'prop is repeat': 'prop is repeat', 'prop is repeat': 'prop is repeat',
'Start Time': 'Start Time', 'Start Time': 'Start Time',
'End Time': 'End Time', 'End Time': 'End Time',
'crontab': 'crontab', crontab: 'crontab',
'Failure Strategy': 'Failure Strategy', 'Failure Strategy': 'Failure Strategy',
'online': 'online', online: 'online',
'offline': 'offline', offline: 'offline',
'Task Status': 'Task Status', 'Task Status': 'Task Status',
'Process Instance': 'Process Instance', 'Process Instance': 'Process Instance',
'Task Instance': 'Task Instance', 'Task Instance': 'Task Instance',
'Select date range': 'Select date range', 'Select date range': 'Select date range',
'Date': 'Date', Date: 'Date',
'waiting': 'waiting', waiting: 'waiting',
'execution': 'execution', execution: 'execution',
'finish': 'finish', finish: 'finish',
'Create File': 'Create File', 'Create File': 'Create File',
'Create folder': 'Create folder', 'Create folder': 'Create folder',
'File Name': 'File Name', 'File Name': 'File Name',
@ -239,13 +240,13 @@ export default {
'File Format': 'File Format', 'File Format': 'File Format',
'Folder Format': 'Folder Format', 'Folder Format': 'Folder Format',
'File Content': 'File Content', 'File Content': 'File Content',
'Create': 'Create', Create: 'Create',
'Please enter the resource content': 'Please enter the resource content', 'Please enter the resource content': 'Please enter the resource content',
'Resource content cannot exceed 3000 lines': 'Resource content cannot exceed 3000 lines', 'Resource content cannot exceed 3000 lines': 'Resource content cannot exceed 3000 lines',
'File Details': 'File Details', 'File Details': 'File Details',
'Download Details': 'Download Details', 'Download Details': 'Download Details',
'Return': 'Return', Return: 'Return',
'Save': 'Save', Save: 'Save',
'File Manage': 'File Manage', 'File Manage': 'File Manage',
'Upload Files': 'Upload Files', 'Upload Files': 'Upload Files',
'Create UDF Function': 'Create UDF Function', 'Create UDF Function': 'Create UDF Function',
@ -253,22 +254,22 @@ export default {
'Service-Master': 'Service-Master', 'Service-Master': 'Service-Master',
'Service-Worker': 'Service-Worker', 'Service-Worker': 'Service-Worker',
'Process Name': 'Process Name', 'Process Name': 'Process Name',
'Executor': 'Executor', Executor: 'Executor',
'Run Type': 'Run Type', 'Run Type': 'Run Type',
'Scheduling Time': 'Scheduling Time', 'Scheduling Time': 'Scheduling Time',
'Run Times': 'Run Times', 'Run Times': 'Run Times',
'host': 'host', host: 'host',
'fault-tolerant sign': 'fault-tolerant sign', 'fault-tolerant sign': 'fault-tolerant sign',
'Rerun': 'Rerun', Rerun: 'Rerun',
'Recovery Failed': 'Recovery Failed', 'Recovery Failed': 'Recovery Failed',
'Stop': 'Stop', Stop: 'Stop',
'Pause': 'Pause', Pause: 'Pause',
'Recovery Suspend': 'Recovery Suspend', 'Recovery Suspend': 'Recovery Suspend',
'Gantt': 'Gantt', Gantt: 'Gantt',
'Name': 'Name', Name: 'Name',
'Node Type': 'Node Type', 'Node Type': 'Node Type',
'Submit Time': 'Submit Time', 'Submit Time': 'Submit Time',
'Duration': 'Duration', Duration: 'Duration',
'Retry Count': 'Retry Count', 'Retry Count': 'Retry Count',
'Task Name': 'Task Name', 'Task Name': 'Task Name',
'Task Date': 'Task Date', 'Task Date': 'Task Date',
@ -276,25 +277,25 @@ export default {
'Record Number': 'Record Number', 'Record Number': 'Record Number',
'Target Table': 'Target Table', 'Target Table': 'Target Table',
'Online viewing type is not supported': 'Online viewing type is not supported', 'Online viewing type is not supported': 'Online viewing type is not supported',
'Size': 'Size', Size: 'Size',
'Rename': 'Rename', Rename: 'Rename',
'Download': 'Download', Download: 'Download',
'Export': 'Export', Export: 'Export',
'Submit': 'Submit', Submit: 'Submit',
'Edit UDF Function': 'Edit UDF Function', 'Edit UDF Function': 'Edit UDF Function',
'type': 'type', type: 'type',
'UDF Function Name': 'UDF Function Name', 'UDF Function Name': 'UDF Function Name',
'FILE': 'FILE', FILE: 'FILE',
'UDF': 'UDF', UDF: 'UDF',
'File Subdirectory': 'File Subdirectory', 'File Subdirectory': 'File Subdirectory',
'Please enter a function name': 'Please enter a function name', 'Please enter a function name': 'Please enter a function name',
'Package Name': 'Package Name', 'Package Name': 'Package Name',
'Please enter a Package name': 'Please enter a Package name', 'Please enter a Package name': 'Please enter a Package name',
'Parameter': 'Parameter', Parameter: 'Parameter',
'Please enter a parameter': 'Please enter a parameter', 'Please enter a parameter': 'Please enter a parameter',
'UDF Resources': 'UDF Resources', 'UDF Resources': 'UDF Resources',
'Upload Resources': 'Upload Resources', 'Upload Resources': 'Upload Resources',
'Instructions': 'Instructions', Instructions: 'Instructions',
'Please enter a instructions': 'Please enter a instructions', 'Please enter a instructions': 'Please enter a instructions',
'Please enter a UDF function name': 'Please enter a UDF function name', 'Please enter a UDF function name': 'Please enter a UDF function name',
'Select UDF Resources': 'Select UDF Resources', 'Select UDF Resources': 'Select UDF Resources',
@ -303,52 +304,52 @@ export default {
'Library Name': 'Library Name', 'Library Name': 'Library Name',
'UDF Resource Name': 'UDF Resource Name', 'UDF Resource Name': 'UDF Resource Name',
'File Size': 'File Size', 'File Size': 'File Size',
'Description': 'Description', Description: 'Description',
'Drag Nodes and Selected Items': 'Drag Nodes and Selected Items', 'Drag Nodes and Selected Items': 'Drag Nodes and Selected Items',
'Select Line Connection': 'Select Line Connection', 'Select Line Connection': 'Select Line Connection',
'Delete selected lines or nodes': 'Delete selected lines or nodes', 'Delete selected lines or nodes': 'Delete selected lines or nodes',
'Full Screen': 'Full Screen', 'Full Screen': 'Full Screen',
'Unpublished': 'Unpublished', Unpublished: 'Unpublished',
'Start Process': 'Start Process', 'Start Process': 'Start Process',
'Execute from the current node': 'Execute from the current node', 'Execute from the current node': 'Execute from the current node',
'Recover tolerance fault process': 'Recover tolerance fault process', 'Recover tolerance fault process': 'Recover tolerance fault process',
'Resume the suspension process': 'Resume the suspension process', 'Resume the suspension process': 'Resume the suspension process',
'Execute from the failed nodes': 'Execute from the failed nodes', 'Execute from the failed nodes': 'Execute from the failed nodes',
'Complement Data': 'Complement Data', 'Complement Data': 'Complement Data',
'slot':'slot', slot: 'slot',
'taskManager':'taskManager', taskManager: 'taskManager',
'jobManagerMemory':'jobManagerMemory', jobManagerMemory: 'jobManagerMemory',
'taskManagerMemory':'taskManagerMemory', taskManagerMemory: 'taskManagerMemory',
'Scheduling execution': 'Scheduling execution', 'Scheduling execution': 'Scheduling execution',
'Recovery waiting thread': 'Recovery waiting thread', 'Recovery waiting thread': 'Recovery waiting thread',
'Submitted successfully': 'Submitted successfully', 'Submitted successfully': 'Submitted successfully',
'Executing': 'Executing', Executing: 'Executing',
'Ready to pause': 'Ready to pause', 'Ready to pause': 'Ready to pause',
'Ready to stop': 'Ready to stop', 'Ready to stop': 'Ready to stop',
'Need fault tolerance': 'Need fault tolerance', 'Need fault tolerance': 'Need fault tolerance',
'kill': 'kill', kill: 'kill',
'Waiting for thread': 'Waiting for thread', 'Waiting for thread': 'Waiting for thread',
'Waiting for dependence': 'Waiting for dependence', 'Waiting for dependence': 'Waiting for dependence',
'Start': 'Start', Start: 'Start',
'Copy': 'Copy', Copy: 'Copy',
'Copy name': 'Copy name', 'Copy name': 'Copy name',
'Delete': 'Delete', Delete: 'Delete',
'Please enter keyword': 'Please enter keyword', 'Please enter keyword': 'Please enter keyword',
'File Upload': 'File Upload', 'File Upload': 'File Upload',
'Drag the file into the current upload window': 'Drag the file into the current upload window', 'Drag the file into the current upload window': 'Drag the file into the current upload window',
'Drag area upload': 'Drag area upload', 'Drag area upload': 'Drag area upload',
'Upload': 'Upload', Upload: 'Upload',
'Please enter file name': 'Please enter file name', 'Please enter file name': 'Please enter file name',
'Please select the file to upload': 'Please select the file to upload', 'Please select the file to upload': 'Please select the file to upload',
'Resources manage': 'Resources', 'Resources manage': 'Resources',
'Security': 'Security', Security: 'Security',
'Logout': 'Logout', Logout: 'Logout',
'No data': 'No data', 'No data': 'No data',
'Uploading...': 'Uploading...', 'Uploading...': 'Uploading...',
'Loading...': 'Loading...', 'Loading...': 'Loading...',
'List': 'List', List: 'List',
'Unable to download without proper url': 'Unable to download without proper url', 'Unable to download without proper url': 'Unable to download without proper url',
'Process': 'Process', Process: 'Process',
'Process definition': 'Process definition', 'Process definition': 'Process definition',
'Task record': 'Task record', 'Task record': 'Task record',
'Warning group manage': 'Warning group manage', 'Warning group manage': 'Warning group manage',
@ -361,13 +362,13 @@ export default {
'Create process': 'Create process', 'Create process': 'Create process',
'Import process': 'Import process', 'Import process': 'Import process',
'Timing state': 'Timing state', 'Timing state': 'Timing state',
'Timing': 'Timing', Timing: 'Timing',
'TreeView': 'TreeView', TreeView: 'TreeView',
'Mailbox already exists! Recipients and copyers cannot repeat': 'Mailbox already exists! Recipients and copyers cannot repeat', 'Mailbox already exists! Recipients and copyers cannot repeat': 'Mailbox already exists! Recipients and copyers cannot repeat',
'Mailbox input is illegal': 'Mailbox input is illegal', 'Mailbox input is illegal': 'Mailbox input is illegal',
'Please set the parameters before starting': 'Please set the parameters before starting', 'Please set the parameters before starting': 'Please set the parameters before starting',
'Continue': 'Continue', Continue: 'Continue',
'End': 'End', End: 'End',
'Node execution': 'Node execution', 'Node execution': 'Node execution',
'Backward execution': 'Backward execution', 'Backward execution': 'Backward execution',
'Forward execution': 'Forward execution', 'Forward execution': 'Forward execution',
@ -375,8 +376,8 @@ export default {
'Notification strategy': 'Notification strategy', 'Notification strategy': 'Notification strategy',
'Notification group': 'Notification group', 'Notification group': 'Notification group',
'Please select a notification group': 'Please select a notification group', 'Please select a notification group': 'Please select a notification group',
'Recipient': 'Recipient', Recipient: 'Recipient',
'Cc': 'Cc', Cc: 'Cc',
'Whether it is a complement process?': 'Whether it is a complement process?', 'Whether it is a complement process?': 'Whether it is a complement process?',
'Schedule date': 'Schedule date', 'Schedule date': 'Schedule date',
'Mode of execution': 'Mode of execution', 'Mode of execution': 'Mode of execution',
@ -386,15 +387,15 @@ export default {
'Start and stop time': 'Start and stop time', 'Start and stop time': 'Start and stop time',
'Please select time': 'Please select time', 'Please select time': 'Please select time',
'Please enter crontab': 'Please enter crontab', 'Please enter crontab': 'Please enter crontab',
'none_1': 'none', none_1: 'none',
'success_1': 'success', success_1: 'success',
'failure_1': 'failure', failure_1: 'failure',
'All_1': 'All', All_1: 'All',
'Toolbar': 'Toolbar', Toolbar: 'Toolbar',
'View variables': 'View variables', 'View variables': 'View variables',
'Format DAG': 'Format DAG', 'Format DAG': 'Format DAG',
'Refresh DAG status': 'Refresh DAG status', 'Refresh DAG status': 'Refresh DAG status',
'Return_1': 'Return', Return_1: 'Return',
'Please enter format': 'Please enter format', 'Please enter format': 'Please enter format',
'connection parameter': 'connection parameter', 'connection parameter': 'connection parameter',
'Process definition details': 'Process definition details', 'Process definition details': 'Process definition details',
@ -404,8 +405,8 @@ export default {
'Create Resource': 'Create Resource', 'Create Resource': 'Create Resource',
'User Center': 'User Center', 'User Center': 'User Center',
'Please enter method': 'Please enter method', 'Please enter method': 'Please enter method',
'none': 'none', none: 'none',
'name': 'name', name: 'name',
'Process priority': 'Process priority', 'Process priority': 'Process priority',
'Task priority': 'Task priority', 'Task priority': 'Task priority',
'Task timeout alarm': 'Task timeout alarm', 'Task timeout alarm': 'Task timeout alarm',
@ -416,36 +417,36 @@ export default {
'Timeout strategy must be selected': 'Timeout strategy must be selected', 'Timeout strategy must be selected': 'Timeout strategy must be selected',
'Timeout must be a positive integer': 'Timeout must be a positive integer', 'Timeout must be a positive integer': 'Timeout must be a positive integer',
'Add dependency': 'Add dependency', 'Add dependency': 'Add dependency',
'and': 'and', and: 'and',
'or': 'or', or: 'or',
'month': 'month', month: 'month',
'week': 'week', week: 'week',
'day': 'day', day: 'day',
'hour': 'hour', hour: 'hour',
'Running': 'Running', Running: 'Running',
'Waiting for dependency to complete': 'Waiting for dependency to complete', 'Waiting for dependency to complete': 'Waiting for dependency to complete',
'Selected': 'Selected', Selected: 'Selected',
'Last1Hour': 'Last1Hour', Last1Hour: 'Last1Hour',
'Last2Hours': 'Last2Hours', Last2Hours: 'Last2Hours',
'Last3Hours': 'Last3Hours', Last3Hours: 'Last3Hours',
'today': 'today', today: 'today',
'Last1Days': 'Last1Days', Last1Days: 'Last1Days',
'Last2Days': 'Last2Days', Last2Days: 'Last2Days',
'Last3Days': 'Last3Days', Last3Days: 'Last3Days',
'Last7Days': 'Last7Days', Last7Days: 'Last7Days',
'ThisWeek': 'ThisWeek', ThisWeek: 'ThisWeek',
'LastWeek': 'LastWeek', LastWeek: 'LastWeek',
'LastMonday': 'LastMonday', LastMonday: 'LastMonday',
'LastTuesday': 'LastTuesday', LastTuesday: 'LastTuesday',
'LastWednesday': 'LastWednesday', LastWednesday: 'LastWednesday',
'LastThursday': 'LastThursday', LastThursday: 'LastThursday',
'LastFriday': 'LastFriday', LastFriday: 'LastFriday',
'LastSaturday': 'LastSaturday', LastSaturday: 'LastSaturday',
'LastSunday': 'LastSunday', LastSunday: 'LastSunday',
'ThisMonth': 'ThisMonth', ThisMonth: 'ThisMonth',
'LastMonth': 'LastMonth', LastMonth: 'LastMonth',
'LastMonthBegin': 'LastMonthBegin', LastMonthBegin: 'LastMonthBegin',
'LastMonthEnd': 'LastMonthEnd', LastMonthEnd: 'LastMonthEnd',
'Refresh status succeeded': 'Refresh status succeeded', 'Refresh status succeeded': 'Refresh status succeeded',
'Queue manage': 'Queue manage', 'Queue manage': 'Queue manage',
'Create queue': 'Create queue', 'Create queue': 'Create queue',
@ -464,21 +465,21 @@ export default {
'Please enter the IP address separated by commas': 'Please enter the IP address separated by commas', 'Please enter the IP address separated by commas': 'Please enter the IP address separated by commas',
'Note: Multiple IP addresses have been comma separated': 'Note: Multiple IP addresses have been comma separated', 'Note: Multiple IP addresses have been comma separated': 'Note: Multiple IP addresses have been comma separated',
'Failure time': 'Failure time', 'Failure time': 'Failure time',
'User': 'User', User: 'User',
'Please enter token': 'Please enter token', 'Please enter token': 'Please enter token',
'Generate token': 'Generate token', 'Generate token': 'Generate token',
'Monitor': 'Monitor', Monitor: 'Monitor',
'Group': 'Group', Group: 'Group',
'Queue statistics': 'Queue statistics', 'Queue statistics': 'Queue statistics',
'Command status statistics': 'Command status statistics', 'Command status statistics': 'Command status statistics',
'Task kill': 'Task Kill', 'Task kill': 'Task Kill',
'Task queue': 'Task queue', 'Task queue': 'Task queue',
'Error command count': 'Error command count', 'Error command count': 'Error command count',
'Normal command count': 'Normal command count', 'Normal command count': 'Normal command count',
'Manage': ' Manage', Manage: ' Manage',
'Number of connections': 'Number of connections', 'Number of connections': 'Number of connections',
'Sent': 'Sent', Sent: 'Sent',
'Received': 'Received', Received: 'Received',
'Min latency': 'Min latency', 'Min latency': 'Min latency',
'Avg latency': 'Avg latency', 'Avg latency': 'Avg latency',
'Max latency': 'Max latency', 'Max latency': 'Max latency',
@ -502,9 +503,9 @@ export default {
'tasks number of waiting running': 'tasks number of waiting running', 'tasks number of waiting running': 'tasks number of waiting running',
'task number of ready to kill': 'task number of ready to kill', 'task number of ready to kill': 'task number of ready to kill',
'Statistics manage': 'Statistics Manage', 'Statistics manage': 'Statistics Manage',
'statistics': 'Statistics', statistics: 'Statistics',
'select tenant':'select tenant', 'select tenant': 'select tenant',
'Please enter Principal':'Please enter Principal', 'Please enter Principal': 'Please enter Principal',
'The start time must not be the same as the end': 'The start time must not be the same as the end', 'The start time must not be the same as the end': 'The start time must not be the same as the end',
'Startup parameter': 'Startup parameter', 'Startup parameter': 'Startup parameter',
'Startup type': 'Startup type', 'Startup type': 'Startup type',
@ -512,14 +513,14 @@ export default {
'Next five execution times': 'Next five execution times', 'Next five execution times': 'Next five execution times',
'Execute time': 'Execute time', 'Execute time': 'Execute time',
'Complement range': 'Complement range', 'Complement range': 'Complement range',
'Http Url':'Http Url', 'Http Url': 'Http Url',
'Http Method':'Http Method', 'Http Method': 'Http Method',
'Http Parameters':'Http Parameters', 'Http Parameters': 'Http Parameters',
'Http Parameters Key':'Http Parameters Key', 'Http Parameters Key': 'Http Parameters Key',
'Http Parameters Position':'Http Parameters Position', 'Http Parameters Position': 'Http Parameters Position',
'Http Parameters Value':'Http Parameters Value', 'Http Parameters Value': 'Http Parameters Value',
'Http Check Condition':'Http Check Condition', 'Http Check Condition': 'Http Check Condition',
'Http Condition':'Http Condition', 'Http Condition': 'Http Condition',
'Please Enter Http Url': 'Please Enter Http Url(required)', 'Please Enter Http Url': 'Please Enter Http Url(required)',
'Please Enter Http Condition': 'Please Enter Http Condition', 'Please Enter Http Condition': 'Please Enter Http Condition',
'There is no data for this period of time': 'There is no data for this period of time', 'There is no data for this period of time': 'There is no data for this period of time',
@ -527,18 +528,18 @@ export default {
'Please enter the correct IP': 'Please enter the correct IP', 'Please enter the correct IP': 'Please enter the correct IP',
'Please generate token': 'Please generate token', 'Please generate token': 'Please generate token',
'Spark Version': 'Spark Version', 'Spark Version': 'Spark Version',
'TargetDataBase': 'target database', TargetDataBase: 'target database',
'TargetTable': 'target table', TargetTable: 'target table',
'Please enter the table of target': 'Please enter the table of target', 'Please enter the table of target': 'Please enter the table of target',
'Please enter a Target Table(required)': 'Please enter a Target Table(required)', 'Please enter a Target Table(required)': 'Please enter a Target Table(required)',
'SpeedByte': 'speed(byte count)', SpeedByte: 'speed(byte count)',
'SpeedRecord': 'speed(record count)', SpeedRecord: 'speed(record count)',
'0 means unlimited by byte': '0 means unlimited', '0 means unlimited by byte': '0 means unlimited',
'0 means unlimited by count': '0 means unlimited', '0 means unlimited by count': '0 means unlimited',
'Modify User': 'Modify User', 'Modify User': 'Modify User',
'Whether directory': 'Whether directory', 'Whether directory': 'Whether directory',
'Yes': 'Yes', Yes: 'Yes',
'No': 'No', No: 'No',
'Please enter Mysql Database(required)': 'Please enter Mysql Database(required)', 'Please enter Mysql Database(required)': 'Please enter Mysql Database(required)',
'Please enter Mysql Table(required)': 'Please enter Mysql Table(required)', 'Please enter Mysql Table(required)': 'Please enter Mysql Table(required)',
'Please enter Columns (Comma separated)': 'Please enter Columns (Comma separated)', 'Please enter Columns (Comma separated)': 'Please enter Columns (Comma separated)',
@ -553,34 +554,34 @@ export default {
'Please enter Lines Terminated': 'Please enter Lines Terminated', 'Please enter Lines Terminated': 'Please enter Lines Terminated',
'Please enter Concurrency': 'Please enter Concurrency', 'Please enter Concurrency': 'Please enter Concurrency',
'Please enter Update Key': 'Please enter Update Key', 'Please enter Update Key': 'Please enter Update Key',
'Direct': 'Direct', Direct: 'Direct',
'Type': 'Type', Type: 'Type',
'ModelType': 'ModelType', ModelType: 'ModelType',
'ColumnType': 'ColumnType', ColumnType: 'ColumnType',
'Database': 'Database', Database: 'Database',
'Column': 'Column', Column: 'Column',
'Map Column Hive': 'Map Column Hive', 'Map Column Hive': 'Map Column Hive',
'Map Column Java': 'Map Column Java', 'Map Column Java': 'Map Column Java',
'Export Dir': 'Export Dir', 'Export Dir': 'Export Dir',
'Hive partition Keys': 'Hive partition Keys', 'Hive partition Keys': 'Hive partition Keys',
'Hive partition Values': 'Hive partition Values', 'Hive partition Values': 'Hive partition Values',
'FieldsTerminated': 'FieldsTerminated', FieldsTerminated: 'FieldsTerminated',
'LinesTerminated': 'LinesTerminated', LinesTerminated: 'LinesTerminated',
'IsUpdate': 'IsUpdate', IsUpdate: 'IsUpdate',
'UpdateKey': 'UpdateKey', UpdateKey: 'UpdateKey',
'UpdateMode': 'UpdateMode', UpdateMode: 'UpdateMode',
'Target Dir': 'Target Dir', 'Target Dir': 'Target Dir',
'DeleteTargetDir': 'DeleteTargetDir', DeleteTargetDir: 'DeleteTargetDir',
'FileType': 'FileType', FileType: 'FileType',
'CompressionCodec': 'CompressionCodec', CompressionCodec: 'CompressionCodec',
'CreateHiveTable': 'CreateHiveTable', CreateHiveTable: 'CreateHiveTable',
'DropDelimiter': 'DropDelimiter', DropDelimiter: 'DropDelimiter',
'OverWriteSrc': 'OverWriteSrc', OverWriteSrc: 'OverWriteSrc',
'ReplaceDelimiter': 'ReplaceDelimiter', ReplaceDelimiter: 'ReplaceDelimiter',
'Concurrency': 'Concurrency', Concurrency: 'Concurrency',
'Form': 'Form', Form: 'Form',
'OnlyUpdate': 'OnlyUpdate', OnlyUpdate: 'OnlyUpdate',
'AllowInsert': 'AllowInsert', AllowInsert: 'AllowInsert',
'Data Source': 'Data Source', 'Data Source': 'Data Source',
'Data Target': 'Data Target', 'Data Target': 'Data Target',
'All Columns': 'All Columns', 'All Columns': 'All Columns',
@ -589,5 +590,5 @@ export default {
'Cannot select the same node for successful branch flow and failed branch flow': 'Cannot select the same node for successful branch flow and failed branch flow', 'Cannot select the same node for successful branch flow and failed branch flow': 'Cannot select the same node for successful branch flow and failed branch flow',
'Successful branch flow and failed branch flow are required': 'Successful branch flow and failed branch flow are required', 'Successful branch flow and failed branch flow are required': 'Successful branch flow and failed branch flow are required',
'Unauthorized or deleted resources': 'Unauthorized or deleted resources', 'Unauthorized or deleted resources': 'Unauthorized or deleted resources',
'Please delete all non-existent resources': 'Please delete all non-existent resources', 'Please delete all non-existent resources': 'Please delete all non-existent resources'
} }

349
dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js

@ -18,11 +18,11 @@
export default { export default {
'User Name': '用户名', 'User Name': '用户名',
'Please enter user name': '请输入用户名', 'Please enter user name': '请输入用户名',
'Password': '密码', Password: '密码',
'Please enter your password': '请输入密码', 'Please enter your password': '请输入密码',
'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22': '密码至少包含数字字母和字符的两种组合长度在6-22之间', 'Password consists of at least two combinations of numbers, letters, and characters, and the length is between 6-22': '密码至少包含数字字母和字符的两种组合长度在6-22之间',
'Login': '登录', Login: '登录',
'Home': '首页', Home: '首页',
'Failed to create node to save': '未创建节点保存失败', 'Failed to create node to save': '未创建节点保存失败',
'Global parameters': '全局参数', 'Global parameters': '全局参数',
'Local parameters': '局部参数', 'Local parameters': '局部参数',
@ -36,14 +36,14 @@ export default {
'Node name': '节点名称', 'Node name': '节点名称',
'Please enter name(required)': '请输入名称(必填)', 'Please enter name(required)': '请输入名称(必填)',
'Run flag': '运行标志', 'Run flag': '运行标志',
'Normal': '正常', Normal: '正常',
'Prohibition execution': '禁止执行', 'Prohibition execution': '禁止执行',
'Please enter description': '请输入描述', 'Please enter description': '请输入描述',
'Number of failed retries': '失败重试次数', 'Number of failed retries': '失败重试次数',
'Times': '次', Times: '次',
'Failed retry interval': '失败重试间隔', 'Failed retry interval': '失败重试间隔',
'Minute': '分', Minute: '分',
'Cancel': '取消', Cancel: '取消',
'Confirm add': '确认添加', 'Confirm add': '确认添加',
'The newly created sub-Process has not yet been executed and cannot enter the sub-Process': '新创建子工作流还未执行不能进入子工作流', 'The newly created sub-Process has not yet been executed and cannot enter the sub-Process': '新创建子工作流还未执行不能进入子工作流',
'The task has not been executed and cannot enter the sub-Process': '该任务还未执行不能进入子工作流', 'The task has not been executed and cannot enter the sub-Process': '该任务还未执行不能进入子工作流',
@ -53,7 +53,7 @@ export default {
'Refresh Log': '刷新日志', 'Refresh Log': '刷新日志',
'Enter full screen': '进入全屏', 'Enter full screen': '进入全屏',
'Cancel full screen': '取消全屏', 'Cancel full screen': '取消全屏',
'Close': '关闭', Close: '关闭',
'Update log success': '更新日志成功', 'Update log success': '更新日志成功',
'No more logs': '暂无更多日志', 'No more logs': '暂无更多日志',
'No log': '暂无日志', 'No log': '暂无日志',
@ -62,22 +62,23 @@ export default {
'Please enter description(optional)': '请输入描述(选填)', 'Please enter description(optional)': '请输入描述(选填)',
'Set global': '设置全局', 'Set global': '设置全局',
'Whether to update the process definition': '是否更新流程定义', 'Whether to update the process definition': '是否更新流程定义',
'Add': '添加', Add: '添加',
'DAG graph name cannot be empty': 'DAG图名称不能为空', 'DAG graph name cannot be empty': 'DAG图名称不能为空',
'Create Datasource': '创建数据源', 'Create Datasource': '创建数据源',
'Project Home': '项目首页', 'Project Home': '项目首页',
'Project Manage': '项目管理', 'Project Manage': '项目管理',
'Create Project': '创建项目', 'Create Project': '创建项目',
'Cron Manage': '定时管理', 'Cron Manage': '定时管理',
'Copy Workflow': '复制工作流',
'Tenant Manage': '租户管理', 'Tenant Manage': '租户管理',
'Create Tenant': '创建租户', 'Create Tenant': '创建租户',
'User Manage': '用户管理', 'User Manage': '用户管理',
'Create User': '创建用户', 'Create User': '创建用户',
'User Information': '用户信息', 'User Information': '用户信息',
'Edit Password': '密码修改', 'Edit Password': '密码修改',
'success': '成功', success: '成功',
'failed': '失败', failed: '失败',
'delete': '删除', delete: '删除',
'Please choose': '请选择', 'Please choose': '请选择',
'Please enter a positive integer': '请输入正整数', 'Please enter a positive integer': '请输入正整数',
'Program Type': '程序类型', 'Program Type': '程序类型',
@ -88,14 +89,14 @@ export default {
'Please enter Command-line parameters': '请输入命令行参数', 'Please enter Command-line parameters': '请输入命令行参数',
'Other parameters': '其他参数', 'Other parameters': '其他参数',
'Please enter other parameters': '请输入其他参数', 'Please enter other parameters': '请输入其他参数',
'Resources': '资源', Resources: '资源',
'Custom Parameters': '自定义参数', 'Custom Parameters': '自定义参数',
'Custom template': '自定义模版', 'Custom template': '自定义模版',
'Please enter main class': '请填写主函数的class', 'Please enter main class': '请填写主函数的class',
'Datasource': '数据源', Datasource: '数据源',
'methods': '方法', methods: '方法',
'Please enter method(optional)': '请输入方法(选填)', 'Please enter method(optional)': '请输入方法(选填)',
'Script': '脚本', Script: '脚本',
'Please enter script(required)': '请输入脚本(必填)', 'Please enter script(required)': '请输入脚本(必填)',
'Deploy Mode': '部署方式', 'Deploy Mode': '部署方式',
'Driver core number': 'Driver内核数', 'Driver core number': 'Driver内核数',
@ -113,16 +114,16 @@ export default {
'Please enter ExecutorPlease enter Executor core number': '请填写Executor内核数', 'Please enter ExecutorPlease enter Executor core number': '请填写Executor内核数',
'Core number should be positive integer': '内核数为正整数', 'Core number should be positive integer': '内核数为正整数',
'SQL Type': 'sql类型', 'SQL Type': 'sql类型',
'Title': '主题', Title: '主题',
'Please enter the title of email': '请输入邮件主题', 'Please enter the title of email': '请输入邮件主题',
'Table': '表名', Table: '表名',
'TableMode': '表格', TableMode: '表格',
'Attachment': '附件', Attachment: '附件',
'SQL Parameter': 'sql参数', 'SQL Parameter': 'sql参数',
'SQL Statement': 'sql语句', 'SQL Statement': 'sql语句',
'UDF Function': 'UDF函数', 'UDF Function': 'UDF函数',
'FILE': '文件', FILE: '文件',
'UDF': 'UDF', UDF: 'UDF',
'File Subdirectory': '文件子目录', 'File Subdirectory': '文件子目录',
'Please enter a SQL Statement(required)': '请输入sql语句(必填)', 'Please enter a SQL Statement(required)': '请输入sql语句(必填)',
'Please enter a JSON Statement(required)': '请输入json语句(必填)', 'Please enter a JSON Statement(required)': '请输入json语句(必填)',
@ -131,12 +132,12 @@ export default {
'Mail subject required': '邮件主题必填', 'Mail subject required': '邮件主题必填',
'Child Node': '子节点', 'Child Node': '子节点',
'Please select a sub-Process': '请选择子工作流', 'Please select a sub-Process': '请选择子工作流',
'Edit': '编辑', Edit: '编辑',
'Datasource Name': '数据源名称', 'Datasource Name': '数据源名称',
'Please enter datasource name': '请输入数据源名称', 'Please enter datasource name': '请输入数据源名称',
'IP': 'IP主机名', IP: 'IP主机名',
'Please enter IP': '请输入IP主机名', 'Please enter IP': '请输入IP主机名',
'Port': '端口', Port: '端口',
'Please enter port': '请输入端口', 'Please enter port': '请输入端口',
'Database Name': '数据库名', 'Database Name': '数据库名',
'Please enter database name': '请输入数据库名', 'Please enter database name': '请输入数据库名',
@ -155,13 +156,13 @@ export default {
'Datasource Parameter': '数据源参数', 'Datasource Parameter': '数据源参数',
'Create Time': '创建时间', 'Create Time': '创建时间',
'Update Time': '更新时间', 'Update Time': '更新时间',
'Operation': '操作', Operation: '操作',
'Click to view': '点击查看', 'Click to view': '点击查看',
'Delete?': '确定删除吗?', 'Delete?': '确定删除吗?',
'Confirm': '确定', Confirm: '确定',
'Task status statistics': '任务状态统计', 'Task status statistics': '任务状态统计',
'Number': '数量', Number: '数量',
'State': '状态', State: '状态',
'Process Status Statistics': '流程状态统计', 'Process Status Statistics': '流程状态统计',
'Process Definition Statistics': '流程定义统计', 'Process Definition Statistics': '流程定义统计',
'Project Name': '项目名称', 'Project Name': '项目名称',
@ -169,25 +170,25 @@ export default {
'Owned Users': '所属用户', 'Owned Users': '所属用户',
'Process Pid': '进程pid', 'Process Pid': '进程pid',
'Zk registration directory': 'zk注册目录', 'Zk registration directory': 'zk注册目录',
'cpuUsage': 'cpuUsage', cpuUsage: 'cpuUsage',
'memoryUsage': 'memoryUsage', memoryUsage: 'memoryUsage',
'Last heartbeat time': '最后心跳时间', 'Last heartbeat time': '最后心跳时间',
'Edit Tenant': '编辑租户', 'Edit Tenant': '编辑租户',
'Tenant Code': '租户编码', 'Tenant Code': '租户编码',
'Tenant Name': '租户名称', 'Tenant Name': '租户名称',
'Queue': '队列', Queue: '队列',
'Please enter the tenant code in English': '请输入租户编码只允许英文', 'Please enter the tenant code in English': '请输入租户编码只允许英文',
'Please enter tenant code in English': '请输入英文租户编码', 'Please enter tenant code in English': '请输入英文租户编码',
'Edit User': '编辑用户', 'Edit User': '编辑用户',
'Tenant': '租户', Tenant: '租户',
'Email': '邮件', Email: '邮件',
'Phone': '手机', Phone: '手机',
'Please enter phone number': '请输入手机', 'Please enter phone number': '请输入手机',
'Please enter email': '请输入邮箱', 'Please enter email': '请输入邮箱',
'Please enter the correct email format': '请输入正确的邮箱格式', 'Please enter the correct email format': '请输入正确的邮箱格式',
'Please enter the correct mobile phone format': '请输入正确的手机格式', 'Please enter the correct mobile phone format': '请输入正确的手机格式',
'Project': '项目', Project: '项目',
'Authorize': '授权', Authorize: '授权',
'File resources': '文件资源', 'File resources': '文件资源',
'UDF resources': 'UDF资源', 'UDF resources': 'UDF资源',
'UDF resources directory': 'UDF资源目录', 'UDF resources directory': 'UDF资源目录',
@ -197,11 +198,11 @@ export default {
'Group Name': '组名称', 'Group Name': '组名称',
'Please enter group name': '请输入组名称', 'Please enter group name': '请输入组名称',
'Group Type': '组类型', 'Group Type': '组类型',
'Remarks': '备注', Remarks: '备注',
'SMS': '短信', SMS: '短信',
'Managing Users': '管理用户', 'Managing Users': '管理用户',
'Permission': '权限', Permission: '权限',
'Administrator': '管理员', Administrator: '管理员',
'Confirm Password': '确认密码', 'Confirm Password': '确认密码',
'Please enter confirm password': '请输入确认密码', 'Please enter confirm password': '请输入确认密码',
'Password cannot be in Chinese': '密码不能为中文', 'Password cannot be in Chinese': '密码不能为中文',
@ -211,7 +212,7 @@ export default {
'The password is inconsistent with the confirmation password': '密码与确认密码不一致,请重新确认', 'The password is inconsistent with the confirmation password': '密码与确认密码不一致,请重新确认',
'Please select the datasource': '请选择数据源', 'Please select the datasource': '请选择数据源',
'Please select resources': '请选择资源', 'Please select resources': '请选择资源',
'Query': '查询', Query: '查询',
'Non Query': '非查询', 'Non Query': '非查询',
'prop(required)': 'prop(必填)', 'prop(required)': 'prop(必填)',
'value(optional)': 'value(选填)', 'value(optional)': 'value(选填)',
@ -221,18 +222,18 @@ export default {
'prop is repeat': 'prop中有重复', 'prop is repeat': 'prop中有重复',
'Start Time': '开始时间', 'Start Time': '开始时间',
'End Time': '结束时间', 'End Time': '结束时间',
'crontab': 'crontab', crontab: 'crontab',
'Failure Strategy': '失败策略', 'Failure Strategy': '失败策略',
'online': '上线', online: '上线',
'offline': '下线', offline: '下线',
'Task Status': '任务状态', 'Task Status': '任务状态',
'Process Instance': '工作流实例', 'Process Instance': '工作流实例',
'Task Instance': '任务实例', 'Task Instance': '任务实例',
'Select date range': '选择日期区间', 'Select date range': '选择日期区间',
'Date': '日期', Date: '日期',
'waiting': '等待', waiting: '等待',
'execution': '执行中', execution: '执行中',
'finish': '完成', finish: '完成',
'Create File': '创建文件', 'Create File': '创建文件',
'Create folder': '创建文件夹', 'Create folder': '创建文件夹',
'File Name': '文件名称', 'File Name': '文件名称',
@ -241,13 +242,13 @@ export default {
'Folder Format': '文件夹格式', 'Folder Format': '文件夹格式',
'File Content': '文件内容', 'File Content': '文件内容',
'Upload File Size': '文件大小不能超过1G', 'Upload File Size': '文件大小不能超过1G',
'Create': '创建', Create: '创建',
'Please enter the resource content': '请输入资源内容', 'Please enter the resource content': '请输入资源内容',
'Resource content cannot exceed 3000 lines': '资源内容不能超过3000行', 'Resource content cannot exceed 3000 lines': '资源内容不能超过3000行',
'File Details': '文件详情', 'File Details': '文件详情',
'Download Details': '下载详情', 'Download Details': '下载详情',
'Return': '返回', Return: '返回',
'Save': '保存', Save: '保存',
'File Manage': '文件管理', 'File Manage': '文件管理',
'Upload Files': '上传文件', 'Upload Files': '上传文件',
'Create UDF Function': '创建UDF函数', 'Create UDF Function': '创建UDF函数',
@ -255,22 +256,22 @@ export default {
'Service-Master': '服务管理-Master', 'Service-Master': '服务管理-Master',
'Service-Worker': '服务管理-Worker', 'Service-Worker': '服务管理-Worker',
'Process Name': '工作流名称', 'Process Name': '工作流名称',
'Executor': '执行用户', Executor: '执行用户',
'Run Type': '运行类型', 'Run Type': '运行类型',
'Scheduling Time': '调度时间', 'Scheduling Time': '调度时间',
'Run Times': '运行次数', 'Run Times': '运行次数',
'host': 'host', host: 'host',
'fault-tolerant sign': '容错标识', 'fault-tolerant sign': '容错标识',
'Rerun': '重跑', Rerun: '重跑',
'Recovery Failed': '恢复失败', 'Recovery Failed': '恢复失败',
'Stop': '停止', Stop: '停止',
'Pause': '暂停', Pause: '暂停',
'Recovery Suspend': '恢复运行', 'Recovery Suspend': '恢复运行',
'Gantt': '甘特图', Gantt: '甘特图',
'Name': '名称', Name: '名称',
'Node Type': '节点类型', 'Node Type': '节点类型',
'Submit Time': '提交时间', 'Submit Time': '提交时间',
'Duration': '运行时长', Duration: '运行时长',
'Retry Count': '重试次数', 'Retry Count': '重试次数',
'Task Name': '任务名称', 'Task Name': '任务名称',
'Task Date': '任务日期', 'Task Date': '任务日期',
@ -278,22 +279,22 @@ export default {
'Record Number': '记录数', 'Record Number': '记录数',
'Target Table': '目标表', 'Target Table': '目标表',
'Online viewing type is not supported': '不支持在线查看类型', 'Online viewing type is not supported': '不支持在线查看类型',
'Size': '大小', Size: '大小',
'Rename': '重命名', Rename: '重命名',
'Download': '下载', Download: '下载',
'Export': '导出', Export: '导出',
'Submit': '提交', Submit: '提交',
'Edit UDF Function': '编辑UDF函数', 'Edit UDF Function': '编辑UDF函数',
'type': '类型', type: '类型',
'UDF Function Name': 'UDF函数名称', 'UDF Function Name': 'UDF函数名称',
'Please enter a function name': '请输入函数名', 'Please enter a function name': '请输入函数名',
'Package Name': '包名类名', 'Package Name': '包名类名',
'Please enter a Package name': '请输入包名类名', 'Please enter a Package name': '请输入包名类名',
'Parameter': '参数', Parameter: '参数',
'Please enter a parameter': '请输入参数', 'Please enter a parameter': '请输入参数',
'UDF Resources': 'UDF资源', 'UDF Resources': 'UDF资源',
'Upload Resources': '上传资源', 'Upload Resources': '上传资源',
'Instructions': '使用说明', Instructions: '使用说明',
'Please enter a instructions': '请输入使用说明', 'Please enter a instructions': '请输入使用说明',
'Please enter a UDF function name': '请输入UDF函数名称', 'Please enter a UDF function name': '请输入UDF函数名称',
'Select UDF Resources': '请选择UDF资源', 'Select UDF Resources': '请选择UDF资源',
@ -302,12 +303,12 @@ export default {
'Library Name': '库名', 'Library Name': '库名',
'UDF Resource Name': 'UDF资源名称', 'UDF Resource Name': 'UDF资源名称',
'File Size': '文件大小', 'File Size': '文件大小',
'Description': '描述', Description: '描述',
'Drag Nodes and Selected Items': '拖动节点和选中项', 'Drag Nodes and Selected Items': '拖动节点和选中项',
'Select Line Connection': '选择线条连接', 'Select Line Connection': '选择线条连接',
'Delete selected lines or nodes': '删除选中的线或节点', 'Delete selected lines or nodes': '删除选中的线或节点',
'Full Screen': '全屏', 'Full Screen': '全屏',
'Unpublished': '未发布', Unpublished: '未发布',
'Start Process': '启动工作流', 'Start Process': '启动工作流',
'Execute from the current node': '从当前节点开始执行', 'Execute from the current node': '从当前节点开始执行',
'Recover tolerance fault process': '恢复被容错的工作流', 'Recover tolerance fault process': '恢复被容错的工作流',
@ -317,33 +318,33 @@ export default {
'Scheduling execution': '调度执行', 'Scheduling execution': '调度执行',
'Recovery waiting thread': '恢复等待线程', 'Recovery waiting thread': '恢复等待线程',
'Submitted successfully': '提交成功', 'Submitted successfully': '提交成功',
'Executing': '正在执行', Executing: '正在执行',
'Ready to pause': '准备暂停', 'Ready to pause': '准备暂停',
'Ready to stop': '准备停止', 'Ready to stop': '准备停止',
'Need fault tolerance': '需要容错', 'Need fault tolerance': '需要容错',
'kill': 'kill', kill: 'kill',
'Waiting for thread': '等待线程', 'Waiting for thread': '等待线程',
'Waiting for dependence': '等待依赖', 'Waiting for dependence': '等待依赖',
'Start': '运行', Start: '运行',
'Copy': '复制节点', Copy: '复制节点',
'Copy name': '复制名称', 'Copy name': '复制名称',
'Delete': '删除', Delete: '删除',
'Please enter keyword': '请输入关键词', 'Please enter keyword': '请输入关键词',
'File Upload': '文件上传', 'File Upload': '文件上传',
'Drag the file into the current upload window': '请将文件拖拽到当前上传窗口内', 'Drag the file into the current upload window': '请将文件拖拽到当前上传窗口内',
'Drag area upload': '拖动区域上传', 'Drag area upload': '拖动区域上传',
'Upload': '上传', Upload: '上传',
'Please enter file name': '请输入文件名', 'Please enter file name': '请输入文件名',
'Please select the file to upload': '请选择要上传的文件', 'Please select the file to upload': '请选择要上传的文件',
'Resources manage': '资源中心', 'Resources manage': '资源中心',
'Security': '安全中心', Security: '安全中心',
'Logout': '退出', Logout: '退出',
'No data': '查询无数据', 'No data': '查询无数据',
'Uploading...': '文件上传中', 'Uploading...': '文件上传中',
'Loading...': '正在努力加载中...', 'Loading...': '正在努力加载中...',
'List': '列表', List: '列表',
'Unable to download without proper url': '无下载url无法下载', 'Unable to download without proper url': '无下载url无法下载',
'Process': '工作流', Process: '工作流',
'Process definition': '工作流定义', 'Process definition': '工作流定义',
'Task record': '任务记录', 'Task record': '任务记录',
'Warning group manage': '告警组管理', 'Warning group manage': '告警组管理',
@ -356,13 +357,13 @@ export default {
'Create process': '创建工作流', 'Create process': '创建工作流',
'Import process': '导入工作流', 'Import process': '导入工作流',
'Timing state': '定时状态', 'Timing state': '定时状态',
'Timing': '定时', Timing: '定时',
'TreeView': '树形图', TreeView: '树形图',
'Mailbox already exists! Recipients and copyers cannot repeat': '邮箱已存在收件人和抄送人不能重复', 'Mailbox already exists! Recipients and copyers cannot repeat': '邮箱已存在收件人和抄送人不能重复',
'Mailbox input is illegal': '邮箱输入不合法', 'Mailbox input is illegal': '邮箱输入不合法',
'Please set the parameters before starting': '启动前请先设置参数', 'Please set the parameters before starting': '启动前请先设置参数',
'Continue': '继续', Continue: '继续',
'End': '结束', End: '结束',
'Node execution': '节点执行', 'Node execution': '节点执行',
'Backward execution': '向后执行', 'Backward execution': '向后执行',
'Forward execution': '向前执行', 'Forward execution': '向前执行',
@ -370,8 +371,8 @@ export default {
'Notification strategy': '通知策略', 'Notification strategy': '通知策略',
'Notification group': '通知组', 'Notification group': '通知组',
'Please select a notification group': '请选择通知组', 'Please select a notification group': '请选择通知组',
'Recipient': '收件人', Recipient: '收件人',
'Cc': '抄送人', Cc: '抄送人',
'Whether it is a complement process?': '是否补数', 'Whether it is a complement process?': '是否补数',
'Schedule date': '调度日期', 'Schedule date': '调度日期',
'Mode of execution': '执行方式', 'Mode of execution': '执行方式',
@ -381,15 +382,15 @@ export default {
'Start and stop time': '起止时间', 'Start and stop time': '起止时间',
'Please select time': '请选择时间', 'Please select time': '请选择时间',
'Please enter crontab': '请输入crontab', 'Please enter crontab': '请输入crontab',
'none_1': '都不发', none_1: '都不发',
'success_1': '成功发', success_1: '成功发',
'failure_1': '失败发', failure_1: '失败发',
'All_1': '成功或失败都发', All_1: '成功或失败都发',
'Toolbar': '工具栏', Toolbar: '工具栏',
'View variables': '查看变量', 'View variables': '查看变量',
'Format DAG': '格式化DAG', 'Format DAG': '格式化DAG',
'Refresh DAG status': '刷新DAG状态', 'Refresh DAG status': '刷新DAG状态',
'Return_1': '返回上一节点', Return_1: '返回上一节点',
'Please enter format': '请输入格式为', 'Please enter format': '请输入格式为',
'connection parameter': '连接参数', 'connection parameter': '连接参数',
'Process definition details': '流程定义详情', 'Process definition details': '流程定义详情',
@ -399,8 +400,8 @@ export default {
'Create Resource': '创建资源', 'Create Resource': '创建资源',
'User Center': '用户中心', 'User Center': '用户中心',
'Please enter method': '请输入方法', 'Please enter method': '请输入方法',
'none': '无', none: '无',
'name': '名称', name: '名称',
'Process priority': '流程优先级', 'Process priority': '流程优先级',
'Task priority': '任务优先级', 'Task priority': '任务优先级',
'Task timeout alarm': '任务超时告警', 'Task timeout alarm': '任务超时告警',
@ -411,36 +412,36 @@ export default {
'Timeout strategy must be selected': '超时策略必须选一个', 'Timeout strategy must be selected': '超时策略必须选一个',
'Timeout must be a positive integer': '超时时长必须为正整数', 'Timeout must be a positive integer': '超时时长必须为正整数',
'Add dependency': '添加依赖', 'Add dependency': '添加依赖',
'and': '且', and: '且',
'or': '或', or: '或',
'month': '月', month: '月',
'week': '周', week: '周',
'day': '日', day: '日',
'hour': '时', hour: '时',
'Running': '正在运行', Running: '正在运行',
'Waiting for dependency to complete': '等待依赖完成', 'Waiting for dependency to complete': '等待依赖完成',
'Selected': '已选', Selected: '已选',
'Last1Hour': '前1小时', Last1Hour: '前1小时',
'Last2Hours': '前2小时', Last2Hours: '前2小时',
'Last3Hours': '前3小时', Last3Hours: '前3小时',
'today': '今天', today: '今天',
'Last1Days': '昨天', Last1Days: '昨天',
'Last2Days': '前两天', Last2Days: '前两天',
'Last3Days': '前三天', Last3Days: '前三天',
'Last7Days': '前七天', Last7Days: '前七天',
'ThisWeek': '本周', ThisWeek: '本周',
'LastWeek': '上周', LastWeek: '上周',
'LastMonday': '上周一', LastMonday: '上周一',
'LastTuesday': '上周二', LastTuesday: '上周二',
'LastWednesday': '上周三', LastWednesday: '上周三',
'LastThursday': '上周四', LastThursday: '上周四',
'LastFriday': '上周五', LastFriday: '上周五',
'LastSaturday': '上周六', LastSaturday: '上周六',
'LastSunday': '上周日', LastSunday: '上周日',
'ThisMonth': '本月', ThisMonth: '本月',
'LastMonth': '上月', LastMonth: '上月',
'LastMonthBegin': '上月初', LastMonthBegin: '上月初',
'LastMonthEnd': '上月末', LastMonthEnd: '上月末',
'Refresh status succeeded': '刷新状态成功', 'Refresh status succeeded': '刷新状态成功',
'Queue manage': '队列管理', 'Queue manage': '队列管理',
'Create queue': '创建队列', 'Create queue': '创建队列',
@ -459,21 +460,21 @@ export default {
'Please enter the IP address separated by commas': '请输入IP地址多个用英文逗号隔开', 'Please enter the IP address separated by commas': '请输入IP地址多个用英文逗号隔开',
'Note: Multiple IP addresses have been comma separated': '注意多个IP地址以英文逗号分割', 'Note: Multiple IP addresses have been comma separated': '注意多个IP地址以英文逗号分割',
'Failure time': '失效时间', 'Failure time': '失效时间',
'User': '用户', User: '用户',
'Please enter token': '请输入令牌', 'Please enter token': '请输入令牌',
'Generate token': '生成令牌', 'Generate token': '生成令牌',
'Monitor': '监控中心', Monitor: '监控中心',
'Group': '分组', Group: '分组',
'Queue statistics': '队列统计', 'Queue statistics': '队列统计',
'Command status statistics': '命令状态统计', 'Command status statistics': '命令状态统计',
'Task kill': '等待kill任务', 'Task kill': '等待kill任务',
'Task queue': '等待执行任务', 'Task queue': '等待执行任务',
'Error command count': '错误指令数', 'Error command count': '错误指令数',
'Normal command count': '正确指令数', 'Normal command count': '正确指令数',
'Manage': '管理', Manage: '管理',
'Number of connections': '连接数', 'Number of connections': '连接数',
'Sent': '发送量', Sent: '发送量',
'Received': '接收量', Received: '接收量',
'Min latency': '最低延时', 'Min latency': '最低延时',
'Avg latency': '平均延时', 'Avg latency': '平均延时',
'Max latency': '最大延时', 'Max latency': '最大延时',
@ -498,9 +499,9 @@ export default {
'tasks number of waiting running': '待运行任务数', 'tasks number of waiting running': '待运行任务数',
'task number of ready to kill': '待杀死任务数', 'task number of ready to kill': '待杀死任务数',
'Statistics manage': '统计管理', 'Statistics manage': '统计管理',
'statistics': '统计', statistics: '统计',
'select tenant':'选择租户', 'select tenant': '选择租户',
'Please enter Principal':'请输入Principal', 'Please enter Principal': '请输入Principal',
'The start time must not be the same as the end': '开始时间和结束时间不能相同', 'The start time must not be the same as the end': '开始时间和结束时间不能相同',
'Startup parameter': '启动参数', 'Startup parameter': '启动参数',
'Startup type': '启动类型', 'Startup type': '启动类型',
@ -508,18 +509,18 @@ export default {
'Next five execution times': '接下来五次执行时间', 'Next five execution times': '接下来五次执行时间',
'Execute time': '执行时间', 'Execute time': '执行时间',
'Complement range': '补数范围', 'Complement range': '补数范围',
'slot':'slot数量', slot: 'slot数量',
'taskManager':'taskManage数量', taskManager: 'taskManage数量',
'jobManagerMemory':'jobManager内存数', jobManagerMemory: 'jobManager内存数',
'taskManagerMemory':'taskManager内存数', taskManagerMemory: 'taskManager内存数',
'Http Url':'请求地址', 'Http Url': '请求地址',
'Http Method':'请求类型', 'Http Method': '请求类型',
'Http Parameters':'请求参数', 'Http Parameters': '请求参数',
'Http Parameters Key':'参数名', 'Http Parameters Key': '参数名',
'Http Parameters Position':'参数位置', 'Http Parameters Position': '参数位置',
'Http Parameters Value':'参数值', 'Http Parameters Value': '参数值',
'Http Check Condition':'校验条件', 'Http Check Condition': '校验条件',
'Http Condition':'校验内容', 'Http Condition': '校验内容',
'Please Enter Http Url': '请填写请求地址(必填)', 'Please Enter Http Url': '请填写请求地址(必填)',
'Please Enter Http Condition': '请填写校验内容', 'Please Enter Http Condition': '请填写校验内容',
'There is no data for this period of time': '该时间段无数据', 'There is no data for this period of time': '该时间段无数据',
@ -527,18 +528,18 @@ export default {
'Please enter the correct IP': '请输入正确的IP', 'Please enter the correct IP': '请输入正确的IP',
'Please generate token': '请生成Token', 'Please generate token': '请生成Token',
'Spark Version': 'Spark版本', 'Spark Version': 'Spark版本',
'TargetDataBase': '目标库', TargetDataBase: '目标库',
'TargetTable': '目标表', TargetTable: '目标表',
'Please enter the table of target': '请输入目标表名', 'Please enter the table of target': '请输入目标表名',
'Please enter a Target Table(required)': '请输入目标表(必填)', 'Please enter a Target Table(required)': '请输入目标表(必填)',
'SpeedByte': '限流(字节数)', SpeedByte: '限流(字节数)',
'SpeedRecord': '限流(记录数)', SpeedRecord: '限流(记录数)',
'0 means unlimited by byte': 'KB0代表不限制', '0 means unlimited by byte': 'KB0代表不限制',
'0 means unlimited by count': '0代表不限制', '0 means unlimited by count': '0代表不限制',
'Modify User': '修改用户', 'Modify User': '修改用户',
'Whether directory' : '是否文件夹', 'Whether directory': '是否文件夹',
'Yes': '是', Yes: '是',
'No': '否', No: '否',
'Please enter Mysql Database(required)': '请输入Mysql数据库(必填)', 'Please enter Mysql Database(required)': '请输入Mysql数据库(必填)',
'Please enter Mysql Table(required)': '请输入Mysql表名(必填)', 'Please enter Mysql Table(required)': '请输入Mysql表名(必填)',
'Please enter Columns (Comma separated)': '请输入列名 , 隔开', 'Please enter Columns (Comma separated)': '请输入列名 , 隔开',
@ -553,34 +554,34 @@ export default {
'Please enter Lines Terminated': '请输入行分隔符', 'Please enter Lines Terminated': '请输入行分隔符',
'Please enter Concurrency': '请输入并发度', 'Please enter Concurrency': '请输入并发度',
'Please enter Update Key': '请输入更新列', 'Please enter Update Key': '请输入更新列',
'Direct': '流向', Direct: '流向',
'Type': '类型', Type: '类型',
'ModelType': '模式', ModelType: '模式',
'ColumnType': '列类型', ColumnType: '列类型',
'Database': '数据库', Database: '数据库',
'Column': '列', Column: '列',
'Map Column Hive': 'Hive类型映射', 'Map Column Hive': 'Hive类型映射',
'Map Column Java': 'Java类型映射', 'Map Column Java': 'Java类型映射',
'Export Dir': '数据源路径', 'Export Dir': '数据源路径',
'Hive partition Keys': 'Hive 分区键', 'Hive partition Keys': 'Hive 分区键',
'Hive partition Values': 'Hive 分区值', 'Hive partition Values': 'Hive 分区值',
'FieldsTerminated': '列分隔符', FieldsTerminated: '列分隔符',
'LinesTerminated': '行分隔符', LinesTerminated: '行分隔符',
'IsUpdate': '是否更新', IsUpdate: '是否更新',
'UpdateKey': '更新列', UpdateKey: '更新列',
'UpdateMode': '更新类型', UpdateMode: '更新类型',
'Target Dir': '目标路径', 'Target Dir': '目标路径',
'DeleteTargetDir': '是否删除目录', DeleteTargetDir: '是否删除目录',
'FileType': '保存格式', FileType: '保存格式',
'CompressionCodec': '压缩类型', CompressionCodec: '压缩类型',
'CreateHiveTable': '是否创建新表', CreateHiveTable: '是否创建新表',
'DropDelimiter': '是否删除分隔符', DropDelimiter: '是否删除分隔符',
'OverWriteSrc': '是否覆盖数据源', OverWriteSrc: '是否覆盖数据源',
'ReplaceDelimiter': '替换分隔符', ReplaceDelimiter: '替换分隔符',
'Concurrency': '并发度', Concurrency: '并发度',
'Form': '表单', Form: '表单',
'OnlyUpdate': '只更新', OnlyUpdate: '只更新',
'AllowInsert': '无更新便插入', AllowInsert: '无更新便插入',
'Data Source': '数据来源', 'Data Source': '数据来源',
'Data Target': '数据目的', 'Data Target': '数据目的',
'All Columns': '全表导入', 'All Columns': '全表导入',
@ -589,5 +590,5 @@ export default {
'Cannot select the same node for successful branch flow and failed branch flow': '成功分支流转和失败分支流转不能选择同一个节点', 'Cannot select the same node for successful branch flow and failed branch flow': '成功分支流转和失败分支流转不能选择同一个节点',
'Successful branch flow and failed branch flow are required': '成功分支流转和失败分支流转必填', 'Successful branch flow and failed branch flow are required': '成功分支流转和失败分支流转必填',
'Unauthorized or deleted resources': '未授权或已删除资源', 'Unauthorized or deleted resources': '未授权或已删除资源',
'Please delete all non-existent resources': '请删除所有未授权或已删除资源', 'Please delete all non-existent resources': '请删除所有未授权或已删除资源'
} }

11
dolphinscheduler-ui/src/js/module/io/index.js

@ -18,7 +18,6 @@
import io from '@/module/axios/index' import io from '@/module/axios/index'
import cookies from 'js-cookie' import cookies from 'js-cookie'
const apiPrefix = '/dolphinscheduler' const apiPrefix = '/dolphinscheduler'
const reSlashPrefix = /^\/+/ const reSlashPrefix = /^\/+/
@ -73,13 +72,13 @@ io.interceptors.response.use(
// Global request interceptor registion // Global request interceptor registion
io.interceptors.request.use( io.interceptors.request.use(
config => { config => {
let sIdCookie = cookies.get('sessionId') const sIdCookie = cookies.get('sessionId')
let sessionId = sessionStorage.getItem("sessionId") const sessionId = sessionStorage.getItem('sessionId')
let requstUrl = config.url.substring(config.url.lastIndexOf("/")+1) const requstUrl = config.url.substring(config.url.lastIndexOf('/') + 1)
if(sIdCookie !== null && requstUrl!=='login' && sIdCookie!=sessionId) { if (sIdCookie !== null && requstUrl !== 'login' && sIdCookie !== sessionId) {
window.location.href = `${PUBLIC_PATH}/view/login/index.html` window.location.href = `${PUBLIC_PATH}/view/login/index.html`
} else { } else {
let { method } = config const { method } = config
if (method === 'get') { if (method === 'get') {
config.params = Object.assign({}, config.params, { config.params = Object.assign({}, config.params, {
_t: Math.random() _t: Math.random()

3
dolphinscheduler-ui/src/js/module/mixin/disabledState.js

@ -17,7 +17,6 @@
import store from '@/conf/home/store' import store from '@/conf/home/store'
import router from '@/conf/home/router' import router from '@/conf/home/router'
import Permissions from '@/module/permissions'
export default { export default {
data () { data () {
@ -28,7 +27,7 @@ export default {
} }
}, },
created () { created () {
this.isDetails =this.store.state.dag.isDetails// Permissions.getAuth() ? this.store.state.dag.isDetails : true this.isDetails = this.store.state.dag.isDetails// Permissions.getAuth() ? this.store.state.dag.isDetails : true
}, },
computed: { computed: {
_isDetails () { _isDetails () {

6
dolphinscheduler-ui/src/js/module/mixin/listUrlParamHandle.js

@ -23,7 +23,7 @@ import { setUrlParams } from '@/module/util/routerUtil'
export default { export default {
watch: { watch: {
// watch pageNo // watch pageNo
'searchParams': { searchParams: {
deep: true, deep: true,
handler () { handler () {
setUrlParams(this.searchParams) setUrlParams(this.searchParams)
@ -48,8 +48,8 @@ export default {
_debounceGET: _.debounce(function (flag) { _debounceGET: _.debounce(function (flag) {
this._getList(flag) this._getList(flag)
}, 100, { }, 100, {
'leading': false, leading: false,
'trailing': true trailing: true
}) })
} }
} }

4
dolphinscheduler-ui/src/js/module/permissions/index.js

@ -19,7 +19,7 @@ import _ from 'lodash'
import Vue from 'vue' import Vue from 'vue'
import store from '@/conf/home/store' import store from '@/conf/home/store'
let Permissions = function () { const Permissions = function () {
this.isAuth = true this.isAuth = true
} }
@ -44,7 +44,7 @@ Permissions.prototype = {
if ($(el).prop('tagName') === 'BUTTON') { if ($(el).prop('tagName') === 'BUTTON') {
$(el).attr('disabled', true) $(el).attr('disabled', true)
} else { } else {
setTimeout(function(){el.parentNode.removeChild(el)},100) setTimeout(function () { el.parentNode.removeChild(el) }, 100)
} }
} }
} }

4
dolphinscheduler-ui/src/js/module/util/index.js

@ -51,7 +51,7 @@ export function findComponentDownward (context, componentName) {
* uuid('v-ani-%{s}-translate') // -> v-ani-xxx * uuid('v-ani-%{s}-translate') // -> v-ani-xxx
*/ */
export function uuid (prefix) { export function uuid (prefix) {
let id = Math.floor(Math.random() * 10000).toString(36) const id = Math.floor(Math.random() * 10000).toString(36)
return prefix ? ( return prefix ? (
~prefix.indexOf('%{s}') ? ( ~prefix.indexOf('%{s}') ? (
prefix.replace(/%\{s\}/g, id) prefix.replace(/%\{s\}/g, id)
@ -59,7 +59,6 @@ export function uuid (prefix) {
) : id ) : id
} }
/** /**
* template * template
* *
@ -92,4 +91,3 @@ export function template (string, ...args) {
} }
}) })
} }

3
dolphinscheduler-ui/src/js/module/util/routerUtil.js

@ -15,9 +15,6 @@
* limitations under the License. * limitations under the License.
*/ */
import merge from 'webpack-merge'
import router from '@/conf/home/router'
export function setUrlParams (o) { export function setUrlParams (o) {
// router.push({ // router.push({
// query: merge(router.history.current.query, o) // query: merge(router.history.current.query, o)

9
dolphinscheduler-ui/src/js/module/util/util.js

@ -20,9 +20,9 @@
*/ */
const bytesToSize = (bytes) => { const bytesToSize = (bytes) => {
if (bytes === 0) return '0 B' if (bytes === 0) return '0 B'
let k = 1024, // or 1024 const k = 1024 // or 1024
sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
i = Math.floor(Math.log(bytes) / Math.log(k)) const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseInt((bytes / Math.pow(k, i)).toPrecision(3)) + ' ' + sizes[i] return parseInt((bytes / Math.pow(k, i)).toPrecision(3)) + ' ' + sizes[i]
} }
@ -33,7 +33,7 @@ const bytesToSize = (bytes) => {
const isJson = (str) => { const isJson = (str) => {
if (typeof str === 'string') { if (typeof str === 'string') {
try { try {
let obj = JSON.parse(str) const obj = JSON.parse(str)
if (typeof obj === 'object' && obj) { if (typeof obj === 'object' && obj) {
return true return true
} else { } else {
@ -69,7 +69,6 @@ const syntaxHighlight = (json) => {
}) })
} }
export { export {
bytesToSize, bytesToSize,
isJson, isJson,

2
dolphinscheduler-ui/src/lib/external/config.js vendored

@ -19,5 +19,5 @@
*/ */
export default { export default {
// task record switch // task record switch
recordSwitch:false recordSwitch: false
} }

2
dolphinscheduler-ui/src/lib/external/email.js vendored

@ -14,4 +14,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
export default ["test@analysys.com.cn"] export default ['test@analysys.com.cn']

Loading…
Cancel
Save