Support loading available driver classes in Lite UI
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
index a0743c1..6d6be90 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
@@ -18,6 +18,7 @@
import API from '@/utils/api'
export default {
+ availableDriverClasses: (params = {}) => API.get(`/api/data-source/drivers`, params),
load: (params = {}) => API.get(`/api/data-source/load`, params),
delete: (params = {}) => API.delete(`/api/data-source`, params),
add: (params = {}) => API.post(`/api/data-source/add`, params),
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
index 668040b..32e943d 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
@@ -88,11 +88,20 @@
<el-input :placeholder="$t('dataSource.rules.name')" v-model="form.name" autocomplete="off" />
</el-form-item>
<el-form-item :label="$t('dataSource.addDialog.driver')" prop="driver">
- <el-input
- :placeholder="$t('dataSource.rules.driver')"
+ <el-select
+ style="width: 100%;"
v-model="form.driver"
- autocomplete="off"
- />
+ :placeholder="$t('dataSource.rules.driver')"
+ allow-create
+ default-first-option
+ filterable>
+ <el-option
+ v-for="each in availableDriverClasses"
+ :label="each"
+ :key="each"
+ :value="each">
+ </el-option>
+ </el-select>
</el-form-item>
<el-form-item :label="$t('dataSource.addDialog.url')" prop="url">
<el-input
@@ -140,6 +149,7 @@
data() {
return {
regustDialogVisible: false,
+ availableDriverClasses: [],
isGuest: window.localStorage.getItem('isGuest') === 'true',
column: [
{
@@ -215,10 +225,16 @@
}
},
created() {
+ this.loadAvailableDriverClasses()
this.load()
},
methods: {
...mapActions(['setRegCenterActivated']),
+ loadAvailableDriverClasses() {
+ API.availableDriverClasses().then(res => {
+ this.availableDriverClasses = res.model
+ })
+ },
handleCurrentChange(val) {
const data = clone(this.cloneTableData)
this.tableData = data.splice(val - 1, this.pageSize)