Browse Source

Merge remote-tracking branch 'upstream/dev' into spilit

pull/3/MERGE
lenboo 4 years ago
parent
commit
5073510119
  1. 2
      dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
  2. 2
      dolphinscheduler-common/src/main/resources/common.properties
  3. 4
      dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java
  4. 6
      dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java
  5. 38
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
  6. 16
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
  7. 78
      dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
  8. 2
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
  9. 2
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue
  10. 2
      dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
  11. 2
      dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/_source/common.js
  12. 11
      dolphinscheduler-ui/src/js/module/components/transfer/resource.vue
  13. 34
      dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
  14. 44
      dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
  15. 2
      dolphinscheduler-ui/src/js/module/io/index.js

2
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java

@ -146,7 +146,7 @@ public final class Constants {
*/ */
public static final String RESOURCE_VIEW_SUFFIXS = "resource.view.suffixs"; public static final String RESOURCE_VIEW_SUFFIXS = "resource.view.suffixs";
public static final String RESOURCE_VIEW_SUFFIXS_DEFAULT_VALUE = "txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties"; public static final String RESOURCE_VIEW_SUFFIXS_DEFAULT_VALUE = "txt,log,sh,bat,conf,cfg,py,java,sql,xml,hql,properties,json,yml,yaml,ini,js";
/** /**
* development.state * development.state

2
dolphinscheduler-common/src/main/resources/common.properties

@ -37,7 +37,7 @@ login.user.keytab.username=hdfs-mycluster@ESZ.COM
login.user.keytab.path=/opt/hdfs.headless.keytab login.user.keytab.path=/opt/hdfs.headless.keytab
#resource.view.suffixs #resource.view.suffixs
#resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties #resource.view.suffixs=txt,log,sh,bat,conf,cfg,py,java,sql,xml,hql,properties,json,yml,yaml,ini,js
# if resource.storage.type=HDFS, the user need to have permission to create directories under the HDFS root path # if resource.storage.type=HDFS, the user need to have permission to create directories under the HDFS root path
hdfs.root.user=hdfs hdfs.root.user=hdfs

4
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java

@ -52,7 +52,9 @@ public class MasterTaskExecThread extends MasterBaseTaskExecThread {
*/ */
private TaskInstanceCacheManager taskInstanceCacheManager; private TaskInstanceCacheManager taskInstanceCacheManager;
/**
* netty executor manager
*/
private NettyExecutorManager nettyExecutorManager; private NettyExecutorManager nettyExecutorManager;

6
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java

@ -73,13 +73,11 @@ public class UDFUtils {
String resourceFullName; String resourceFullName;
Set<Map.Entry<UdfFunc,String>> entries = udfFuncTenantCodeMap.entrySet(); Set<Map.Entry<UdfFunc,String>> entries = udfFuncTenantCodeMap.entrySet();
for (Map.Entry<UdfFunc,String> entry:entries){ for (Map.Entry<UdfFunc,String> entry:entries){
String prefixPath = defaultFS.startsWith("file://") ? "file://" : defaultFS;
String uploadPath = HadoopUtils.getHdfsUdfDir(entry.getValue()); String uploadPath = HadoopUtils.getHdfsUdfDir(entry.getValue());
if (!uploadPath.startsWith("hdfs:")) {
uploadPath = defaultFS + uploadPath;
}
resourceFullName = entry.getKey().getResourceName(); resourceFullName = entry.getKey().getResourceName();
resourceFullName = resourceFullName.startsWith("/") ? resourceFullName : String.format("/%s",resourceFullName); resourceFullName = resourceFullName.startsWith("/") ? resourceFullName : String.format("/%s",resourceFullName);
sqls.add(String.format("add jar %s%s", uploadPath, resourceFullName)); sqls.add(String.format("add jar %s%s%s", prefixPath, uploadPath, resourceFullName));
} }
} }

38
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue

@ -35,7 +35,7 @@
</m-list-box> </m-list-box>
<m-list-box v-if="programType !== 'PYTHON'"> <m-list-box v-if="programType !== 'PYTHON'">
<div slot="text">{{$t('Main class')}}</div> <div slot="text">{{$t('Main Class')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -47,7 +47,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Main jar package')}}</div> <div slot="text">{{$t('Main Jar Package')}}</div>
<div slot="content"> <div slot="content">
<treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :disabled="isDetails" :placeholder="$t('Please enter main jar package')"> <treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :disabled="isDetails" :placeholder="$t('Please enter main jar package')">
<div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div> <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
@ -137,7 +137,7 @@
</div> </div>
</m-list-4-box> </m-list-4-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Command-line parameters')}}</div> <div slot="text">{{$t('Main Arguments')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:autosize="{minRows:2}" :autosize="{minRows:2}"
@ -145,12 +145,12 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="mainArgs" v-model="mainArgs"
:placeholder="$t('Please enter Command-line parameters')"> :placeholder="$t('Please enter main arguments')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Other parameters')}}</div> <div slot="text">{{$t('Option Parameters')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -158,7 +158,7 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="others" v-model="others"
:placeholder="$t('Please enter other parameters')"> :placeholder="$t('Please enter option parameters')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
@ -213,19 +213,19 @@
cacheResourceList: [], cacheResourceList: [],
// Custom function // Custom function
localParams: [], localParams: [],
// Driver Number of cores // Slot number
slot: 1, slot: 1,
// Driver Number of memory // TaskManager mumber
taskManager: '2', taskManager: '2',
// jobManager Memory // JobManager memory
jobManagerMemory: '1G', jobManagerMemory: '1G',
// taskManager Memory // TaskManager memory
taskManagerMemory: '2G', taskManagerMemory: '2G',
// Flink Job Name // Flink app name
appName: '', appName: '',
// Command line argument // Main arguments
mainArgs: '', mainArgs: '',
// Other parameters // Option parameters
others: '', others: '',
// Program type // Program type
programType: 'SCALA', programType: 'SCALA',
@ -310,11 +310,21 @@
return false return false
} }
if (!_.isNumber(parseInt(this.taskManagerMemory))) { if (!Number.isInteger(parseInt(this.taskManagerMemory))) {
this.$message.warning(`${i18n.$t('Memory should be a positive integer')}`) this.$message.warning(`${i18n.$t('Memory should be a positive integer')}`)
return false return false
} }
if (!Number.isInteger(parseInt(this.slot))) {
this.$message.warning(`${i18n.$t('Please enter Slot number')}`)
return false
}
if (this.flinkVersion === '<1.10' && !Number.isInteger(parseInt(this.taskManager))) {
this.$message.warning(`${i18n.$t('Please enter TaskManager number')}`)
return false
}
// noRes // noRes
if (this.noRes.length > 0) { if (this.noRes.length > 0) {
this.$message.warning(`${i18n.$t('Please delete all non-existent resources')}`) this.$message.warning(`${i18n.$t('Please delete all non-existent resources')}`)

16
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue

@ -30,7 +30,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box v-if="programType !== 'PYTHON'"> <m-list-box v-if="programType !== 'PYTHON'">
<div slot="text">{{$t('Main class')}}</div> <div slot="text">{{$t('Main Class')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -42,7 +42,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Main jar package')}}</div> <div slot="text">{{$t('Main Jar Package')}}</div>
<div slot="content"> <div slot="content">
<treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :disabled="isDetails" :placeholder="$t('Please enter main jar package')"> <treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :disabled="isDetails" :placeholder="$t('Please enter main jar package')">
<div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div> <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
@ -50,7 +50,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Command-line parameters')}}</div> <div slot="text">{{$t('Main Arguments')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:autosize="{minRows:2}" :autosize="{minRows:2}"
@ -58,12 +58,12 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="mainArgs" v-model="mainArgs"
:placeholder="$t('Please enter Command-line parameters')"> :placeholder="$t('Please enter main arguments')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Other parameters')}}</div> <div slot="text">{{$t('Option Parameters')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -71,7 +71,7 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="others" v-model="others"
:placeholder="$t('Please enter other parameters')"> :placeholder="$t('Please enter option parameters')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
@ -122,9 +122,9 @@
cacheResourceList: [], cacheResourceList: [],
// Custom parameter // Custom parameter
localParams: [], localParams: [],
// Command line argument // Main arguments
mainArgs: '', mainArgs: '',
// Other parameters // Option parameters
others: '', others: '',
// Program type // Program type
programType: 'JAVA', programType: 'JAVA',

78
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue

@ -51,7 +51,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box v-if="programType !== 'PYTHON'"> <m-list-box v-if="programType !== 'PYTHON'">
<div slot="text">{{$t('Main class')}}</div> <div slot="text">{{$t('Main Class')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -63,7 +63,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Main jar package')}}</div> <div slot="text">{{$t('Main Jar Package')}}</div>
<div slot="content"> <div slot="content">
<treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :disabled="isDetails" :placeholder="$t('Please enter main jar package')"> <treeselect v-model="mainJar" maxHeight="200" :options="mainJarLists" :disable-branch-nodes="true" :normalizer="normalizer" :disabled="isDetails" :placeholder="$t('Please enter main jar package')">
<div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div> <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
@ -81,7 +81,7 @@
</div> </div>
</m-list-box> </m-list-box>
<m-list-4-box> <m-list-4-box>
<div slot="text">{{$t('Driver cores')}}</div> <div slot="text">{{$t('Driver Cores')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -91,7 +91,7 @@
:placeholder="$t('Please enter Driver cores')"> :placeholder="$t('Please enter Driver cores')">
</el-input> </el-input>
</div> </div>
<div slot="text-2">{{$t('Driver memory')}}</div> <div slot="text-2">{{$t('Driver Memory')}}</div>
<div slot="content-2"> <div slot="content-2">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -113,7 +113,7 @@
:placeholder="$t('Please enter Executor number')"> :placeholder="$t('Please enter Executor number')">
</el-input> </el-input>
</div> </div>
<div slot="text-2">{{$t('Executor memory')}}</div> <div slot="text-2">{{$t('Executor Memory')}}</div>
<div slot="content-2"> <div slot="content-2">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -125,7 +125,7 @@
</div> </div>
</m-list-4-box> </m-list-4-box>
<m-list-4-box> <m-list-4-box>
<div slot="text">{{$t('Executor cores')}}</div> <div slot="text">{{$t('Executor Cores')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -137,7 +137,7 @@
</div> </div>
</m-list-4-box> </m-list-4-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Command-line parameters')}}</div> <div slot="text">{{$t('Main Arguments')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:autosize="{minRows:2}" :autosize="{minRows:2}"
@ -145,12 +145,12 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="mainArgs" v-model="mainArgs"
:placeholder="$t('Please enter Command-line parameters')"> :placeholder="$t('Please enter main arguments')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
<m-list-box> <m-list-box>
<div slot="text">{{$t('Other parameters')}}</div> <div slot="text">{{$t('Option Parameters')}}</div>
<div slot="content"> <div slot="content">
<el-input <el-input
:disabled="isDetails" :disabled="isDetails"
@ -158,7 +158,7 @@
type="textarea" type="textarea"
size="small" size="small"
v-model="others" v-model="others"
:placeholder="$t('Please enter other parameters')"> :placeholder="$t('Please enter option parameters')">
</el-input> </el-input>
</div> </div>
</m-list-box> </m-list-box>
@ -213,19 +213,19 @@
cacheResourceList: [], cacheResourceList: [],
// Custom function // Custom function
localParams: [], localParams: [],
// Driver Number of cores // Driver cores
driverCores: 1, driverCores: 1,
// Driver Number of memory // Driver memory
driverMemory: '512M', driverMemory: '512M',
// Executor Number // Executor number
numExecutors: 2, numExecutors: 2,
// Executor Number of memory // Executor memory
executorMemory: '2G', executorMemory: '2G',
// Executor Number of cores // Executor cores
executorCores: 2, executorCores: 2,
// Command line argument // Main arguments
mainArgs: '', mainArgs: '',
// Other parameters // Option parameters
others: '', others: '',
// Program type // Program type
programType: 'SCALA', programType: 'SCALA',
@ -367,24 +367,33 @@
return false return false
} }
if (!this.numExecutors) { if (!this.driverCores) {
this.$message.warning(`${i18n.$t('Please enter Executor number')}`) this.$message.warning(`${i18n.$t('Please enter Driver cores')}`)
return false return false
} }
// noRes if (!Number.isInteger(parseInt(this.driverCores))) {
if (this.noRes.length > 0) { this.$message.warning(`${i18n.$t('Core number should be positive integer')}`)
this.$message.warning(`${i18n.$t('Please delete all non-existent resources')}`)
return false return false
} }
if (!Number.isInteger(parseInt(this.numExecutors))) { if (!this.driverMemory) {
this.$message.warning(`${i18n.$t('The Executor Number should be a positive integer')}`) this.$message.warning(`${i18n.$t('Please enter Driver memory')}`)
return false return false
} }
if (!this.executorMemory) { if (!Number.isInteger(parseInt(this.driverMemory))) {
this.$message.warning(`${i18n.$t('Please enter Executor memory')}`) this.$message.warning(`${i18n.$t('Memory should be a positive integer')}`)
return false
}
if (!this.executorCores) {
this.$message.warning(`${i18n.$t('Please enter Executor cores')}`)
return false
}
if (!Number.isInteger(parseInt(this.executorCores))) {
this.$message.warning(`${i18n.$t('Core number should be positive integer')}`)
return false return false
} }
@ -393,20 +402,27 @@
return false return false
} }
if (!_.isNumber(parseInt(this.executorMemory))) { if (!Number.isInteger(parseInt(this.executorMemory))) {
this.$message.warning(`${i18n.$t('Memory should be a positive integer')}`) this.$message.warning(`${i18n.$t('Memory should be a positive integer')}`)
return false return false
} }
if (!this.executorCores) { if (!this.numExecutors) {
this.$message.warning(`${i18n.$t('Please enter Executor cores')}`) this.$message.warning(`${i18n.$t('Please enter Executor number')}`)
return false return false
} }
if (!Number.isInteger(parseInt(this.executorCores))) { if (!Number.isInteger(parseInt(this.numExecutors))) {
this.$message.warning(`${i18n.$t('Core number should be positive integer')}`) this.$message.warning(`${i18n.$t('The Executor number should be a positive integer')}`)
return false
}
// noRes
if (this.noRes.length > 0) {
this.$message.warning(`${i18n.$t('Please delete all non-existent resources')}`)
return false return false
} }
// localParams Subcomponent verification // localParams Subcomponent verification
if (!this.$refs.refLocalParams._verifProp()) { if (!this.$refs.refLocalParams._verifProp()) {
return false return false

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

@ -19,7 +19,7 @@
<div class="table-box"> <div class="table-box">
<el-table :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange"> <el-table :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange">
<el-table-column type="selection" width="50" :selectable="selectable"></el-table-column> <el-table-column type="selection" width="50" :selectable="selectable"></el-table-column>
<el-table-column type="index" :label="$t('#')" width="50"></el-table-column> <el-table-column prop="id" :label="$t('#')" width="50"></el-table-column>
<el-table-column :label="$t('Process Name')" min-width="200"> <el-table-column :label="$t('Process Name')" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover trigger="hover" placement="top"> <el-popover trigger="hover" placement="top">

2
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue

@ -19,7 +19,7 @@
<div class="table-box"> <div class="table-box">
<el-table class="fixed" :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange"> <el-table class="fixed" :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange">
<el-table-column type="selection" width="50"></el-table-column> <el-table-column type="selection" width="50"></el-table-column>
<el-table-column type="index" :label="$t('#')" width="50"></el-table-column> <el-table-column prop="id" :label="$t('#')" width="50"></el-table-column>
<el-table-column :label="$t('Process Name')" min-width="200"> <el-table-column :label="$t('Process Name')" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover trigger="hover" placement="top"> <el-popover trigger="hover" placement="top">

2
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue

@ -18,7 +18,7 @@
<div class="list-model"> <div class="list-model">
<div class="table-box"> <div class="table-box">
<el-table :data="list" size="mini" style="width: 100%"> <el-table :data="list" size="mini" style="width: 100%">
<el-table-column type="index" :label="$t('#')" width="50"></el-table-column> <el-table-column prop="id" :label="$t('#')" width="50"></el-table-column>
<el-table-column prop="name" :label="$t('Name')"></el-table-column> <el-table-column prop="name" :label="$t('Name')"></el-table-column>
<el-table-column :label="$t('Process Instance')" min-width="200"> <el-table-column :label="$t('Process Instance')" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">

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
*/ */
const filtTypeArr = ['txt', 'log', 'sh', 'bat', 'conf', 'cfg', 'py', 'java', 'sql', 'xml', 'hql', 'properties', 'json', 'yml', 'yaml', 'ini', 'js', 'css', 'html'] const filtTypeArr = ['txt', 'log', 'sh', 'bat', 'conf', 'cfg', 'py', 'java', 'sql', 'xml', 'hql', 'properties', 'json', 'yml', 'yaml', 'ini', 'js']
export { filtTypeArr } export { filtTypeArr }

11
dolphinscheduler-ui/src/js/module/components/transfer/resource.vue

@ -24,10 +24,10 @@
<el-button size="mini" value="udfResource" @click="_ckUDf">{{$t('UDF resources')}}</el-button> <el-button size="mini" value="udfResource" @click="_ckUDf">{{$t('UDF resources')}}</el-button>
</el-button-group> </el-button-group>
</div> </div>
<treeselect v-show="checkedValue=='fileResource'" v-model="selectFileSource" :multiple="true" maxHeight="200" :options="fileList" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :placeholder="$t('Please select resources')"> <treeselect v-show="checkedValue=='fileResource'" v-model="selectFileSource" :multiple="true" maxHeight="260" :options="fileList" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :placeholder="$t('Please select resources')">
<div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div> <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
</treeselect> </treeselect>
<treeselect v-show="checkedValue=='udfResource'" v-model="selectUdfSource" :multiple="true" maxHeight="200" :options="udfList" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :placeholder="$t('Please select resources')"> <treeselect v-show="checkedValue=='udfResource'" v-model="selectUdfSource" :multiple="true" maxHeight="260" :options="udfList" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :placeholder="$t('Please select resources')">
<div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div> <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
</treeselect> </treeselect>
</div> </div>
@ -302,4 +302,11 @@
float: left; float: left;
} }
} }
.vue-treeselect__menu {
max-height: 200px!important;
}
.vue-treeselect__multi-value {
max-height: 260px!important;
overflow-y: auto!important;
}
</style> </style>

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

@ -86,14 +86,14 @@ export default {
'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',
'Main class': 'Main class', 'Main Class': 'Main Class',
'Main jar package': 'Main jar package', 'Main Jar Package': 'Main Jar Package',
'Please enter main jar package': 'Please enter main jar package', 'Please enter main jar package': 'Please enter main jar package',
'Please enter main class': 'Please enter main class', 'Please enter main class': 'Please enter main class',
'Command-line parameters': 'Command-line parameters', 'Main Arguments': 'Main Arguments',
'Please enter Command-line parameters': 'Please enter Command-line parameters', 'Please enter main arguments': 'Please enter main arguments',
'Other parameters': 'Other parameters', 'Option Parameters': 'Option Parameters',
'Please enter other parameters': 'Please enter other parameters', 'Please enter option parameters': 'Please enter option parameters',
Resources: 'Resources', Resources: 'Resources',
'Custom Parameters': 'Custom Parameters', 'Custom Parameters': 'Custom Parameters',
'Custom template': 'Custom template', 'Custom template': 'Custom template',
@ -103,23 +103,29 @@ export default {
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 cores': 'Driver cores', 'Driver Cores': 'Driver Cores',
'Please enter Driver cores': 'Please enter Driver cores', 'Please enter Driver cores': 'Please enter Driver cores',
'Driver memory': 'Driver memory', 'Driver Memory': 'Driver Memory',
'Please enter Driver memory': 'Please enter Driver memory', 'Please enter Driver memory': 'Please enter Driver memory',
'Executor Number': 'Executor Number', 'Executor Number': 'Executor Number',
'Please enter Executor number': 'Please enter Executor number', 'Please enter Executor number': 'Please enter Executor number',
'Executor memory': 'Executor memory', 'The Executor number should be a positive integer': 'The Executor number should be a positive integer',
'Executor Memory': 'Executor Memory',
'Please enter Executor memory': 'Please enter Executor memory', 'Please enter Executor memory': 'Please enter Executor memory',
'Executor cores': 'Executor cores', 'Executor Cores': 'Executor Cores',
'Please enter Executor cores': 'Please enter Executor cores', 'Please enter Executor cores': 'Please enter Executor cores',
'The Executor Number should be a positive integer': 'The Executor Number should be a positive integer',
'Memory should be a positive integer': 'Memory should be a positive integer', 'Memory should be a positive integer': 'Memory should be a positive integer',
'Core number should be positive integer': 'Core number should be positive integer', 'Core number should be positive integer': 'Core number should be positive integer',
'Flink Version': 'Flink Version',
'JobManager Memory': 'JobManager Memory',
'Please enter JobManager memory': 'Please enter JobManager memory', 'Please enter JobManager memory': 'Please enter JobManager memory',
'TaskManager Memory': 'TaskManager Memory',
'Please enter TaskManager memory': 'Please enter TaskManager memory', 'Please enter TaskManager memory': 'Please enter TaskManager memory',
'Slot Number': 'Slot Number',
'Please enter Slot number': 'Please enter Slot number', 'Please enter Slot number': 'Please enter Slot number',
'TaskManager Number': 'TaskManager Number',
'Please enter TaskManager number': 'Please enter TaskManager number', 'Please enter TaskManager number': 'Please enter TaskManager number',
'App Name': 'App Name',
'Please enter app name(optional)': 'Please enter app name(optional)', 'Please enter app name(optional)': 'Please enter app name(optional)',
'SQL Type': 'SQL Type', 'SQL Type': 'SQL Type',
Title: 'Title', Title: 'Title',
@ -543,12 +549,6 @@ 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',
'Flink Version': 'Flink Version',
'Slot Number': 'Slot Number',
'TaskManager Number': 'TaskManager Number',
'JobManager Memory': 'JobManager Memory',
'TaskManager Memory': 'TaskManager Memory',
'App Name': 'App Name',
'Http Url': 'Http Url', 'Http Url': 'Http Url',
'Http Method': 'Http Method', 'Http Method': 'Http Method',
'Http Parameters': 'Http Parameters', 'Http Parameters': 'Http Parameters',

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

@ -86,14 +86,14 @@ export default {
'Please choose': '请选择', 'Please choose': '请选择',
'Please enter a positive integer': '请输入正整数', 'Please enter a positive integer': '请输入正整数',
'Program Type': '程序类型', 'Program Type': '程序类型',
'Main class': '主函数的class', 'Main Class': '主函数的Class',
'Main jar package': 'jar包', 'Main Jar Package': 'Jar包',
'Please enter main jar package': '请选择主jar包', 'Please enter main jar package': '请选择主Jar包',
'Please enter main class': '请填写主函数的class', 'Please enter main class': '请填写主函数的Class',
'Command-line parameters': '命令行参数', 'Main Arguments': '主程序参数',
'Please enter Command-line parameters': '请输入命令行参数', 'Please enter main arguments': '请输入主程序参数',
'Other parameters': '其他参数', 'Option Parameters': '选项参数',
'Please enter other parameters': '请输入其他参数', 'Please enter option parameters': '请输入选项参数',
Resources: '资源', Resources: '资源',
'Custom Parameters': '自定义参数', 'Custom Parameters': '自定义参数',
'Custom template': '自定义模版', 'Custom template': '自定义模版',
@ -103,23 +103,29 @@ export default {
Script: '脚本', Script: '脚本',
'Please enter script(required)': '请输入脚本(必填)', 'Please enter script(required)': '请输入脚本(必填)',
'Deploy Mode': '部署方式', 'Deploy Mode': '部署方式',
'Driver cores': 'Driver核数', 'Driver Cores': 'Driver核',
'Please enter Driver cores': '请输入Driver核数', 'Please enter Driver cores': '请输入Driver核',
'Driver memory': 'Driver内存数', 'Driver Memory': 'Driver内存数',
'Please enter Driver memory': '请输入Driver内存数', 'Please enter Driver memory': '请输入Driver内存数',
'Executor Number': 'Executor数量', 'Executor Number': 'Executor数量',
'Please enter Executor number': '请输入Executor数量', 'Please enter Executor number': '请输入Executor数量',
'Executor memory': 'Executor内存数', 'The Executor number should be a positive integer': 'Executor数量为正整数',
'Executor Memory': 'Executor内存数',
'Please enter Executor memory': '请输入Executor内存数', 'Please enter Executor memory': '请输入Executor内存数',
'Executor cores': 'Executor内核数', 'Executor Cores': 'Executor核心数',
'Please enter Executor cores': '请输入Executor内核数', 'Please enter Executor cores': '请输入Executor核心数',
'The Executor Number should be a positive integer': 'Executor数量为正整数',
'Memory should be a positive integer': '内存数为数字', 'Memory should be a positive integer': '内存数为数字',
'Core number should be positive integer': '内核数为正整数', 'Core number should be positive integer': '核心数为正整数',
'Flink Version': 'Flink版本',
'JobManager Memory': 'JobManager内存数',
'Please enter JobManager memory': '请输入JobManager内存数', 'Please enter JobManager memory': '请输入JobManager内存数',
'TaskManager Memory': 'TaskManager内存数',
'Please enter TaskManager memory': '请输入TaskManager内存数', 'Please enter TaskManager memory': '请输入TaskManager内存数',
'Slot Number': 'Slot数量',
'Please enter Slot number': '请输入Slot数量', 'Please enter Slot number': '请输入Slot数量',
'TaskManager Number': 'TaskManager数量',
'Please enter TaskManager number': '请输入TaskManager数量', 'Please enter TaskManager number': '请输入TaskManager数量',
'App Name': '任务名称',
'Please enter app name(optional)': '请输入任务名称(选填)', 'Please enter app name(optional)': '请输入任务名称(选填)',
'SQL Type': 'sql类型', 'SQL Type': 'sql类型',
Title: '主题', Title: '主题',
@ -543,12 +549,6 @@ export default {
'Next five execution times': '接下来五次执行时间', 'Next five execution times': '接下来五次执行时间',
'Execute time': '执行时间', 'Execute time': '执行时间',
'Complement range': '补数范围', 'Complement range': '补数范围',
'Flink Version': 'Flink版本',
'Slot Number': 'Slot数量',
'TaskManager Number': 'TaskManager数量',
'JobManager Memory': 'JobManager内存数',
'TaskManager Memory': 'TaskManager内存数',
'App Name': '任务名称',
'Http Url': '请求地址', 'Http Url': '请求地址',
'Http Method': '请求类型', 'Http Method': '请求类型',
'Http Parameters': '请求参数', 'Http Parameters': '请求参数',

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

@ -22,7 +22,7 @@ const apiPrefix = '/dolphinscheduler'
const reSlashPrefix = /^\/+/ const reSlashPrefix = /^\/+/
const resolveURL = (url) => { const resolveURL = (url) => {
if (url.indexOf('http') !== -1) { if (url.indexOf('http') === 0) {
return url return url
} }
if (url.charAt(0) !== '/') { if (url.charAt(0) !== '/') {

Loading…
Cancel
Save