From ea43644f07462bb4ac18fdfedb0bb3bef786165c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 17 Apr 2022 15:05:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pom.xml | 68 +++++----- .../dataease/commons/utils/DeFileUtils.java | 46 +++++++ .../io/dataease/commons/utils/ZipUtils.java | 50 ++++---- .../java/io/dataease/dto/DatasourceDTO.java | 2 + .../java/io/dataease/dto/MyPluginDTO.java | 9 ++ .../io/dataease/provider/ProviderFactory.java | 117 +++++++++--------- .../provider/datasource/JdbcProvider.java | 2 +- .../provider/datasource/MaxCompute.java | 83 ------------- .../provider/datasource/MaxcomputeConfig.java | 14 --- .../service/datasource/DatasourceService.java | 20 ++- .../dataease/service/sys/PluginService.java | 25 +++- frontend/src/api/dataset/dataset.js | 1 - .../src/components/AsyncComponent/index.vue | 2 +- frontend/src/lang/en.js | 4 +- frontend/src/lang/tw.js | 2 +- frontend/src/views/dataset/add/AddDB.vue | 7 +- frontend/src/views/dataset/add/AddSQL.vue | 4 +- .../system/datasource/DsConfiguration.vue | 5 +- frontend/src/views/system/datasource/form.vue | 30 +++-- .../src/views/system/plugin/PluginCom.vue | 2 +- 20 files changed, 240 insertions(+), 253 deletions(-) create mode 100644 backend/src/main/java/io/dataease/dto/MyPluginDTO.java delete mode 100644 backend/src/main/java/io/dataease/provider/datasource/MaxCompute.java delete mode 100644 backend/src/main/java/io/dataease/provider/datasource/MaxcomputeConfig.java diff --git a/backend/pom.xml b/backend/pom.xml index 88e180d603..cfa77005cb 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -486,45 +486,45 @@ - - - - - - - - - - - - - - - - - - - - + + org.apache.maven.plugins + maven-antrun-plugin + + + + main-class-placement + generate-resources + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - + + + + run + + + + diff --git a/backend/src/main/java/io/dataease/commons/utils/DeFileUtils.java b/backend/src/main/java/io/dataease/commons/utils/DeFileUtils.java index 4f89d7e4a2..6adc42e9be 100644 --- a/backend/src/main/java/io/dataease/commons/utils/DeFileUtils.java +++ b/backend/src/main/java/io/dataease/commons/utils/DeFileUtils.java @@ -65,6 +65,52 @@ public class DeFileUtils { } return null; } + public static void copyFolder(String sourcePath,String targetPath) throws Exception{ + //源文件夹路径 + File sourceFile = new File(sourcePath); + //目标文件夹路径 + File targetFile = new File(targetPath); + + if(!sourceFile.exists()){ + throw new Exception("文件夹不存在"); + } + if(!sourceFile.isDirectory()){ + throw new Exception("源文件夹不是目录"); + } + if(!targetFile.exists()){ + targetFile.mkdirs(); + } + if(!targetFile.isDirectory()){ + throw new Exception("目标文件夹不是目录"); + } + + File[] files = sourceFile.listFiles(); + if(files == null || files.length == 0){ + return; + } + + for(File file : files){ + //文件要移动的路径 + String movePath = targetFile+File.separator+file.getName(); + if(file.isDirectory()){ + //如果是目录则递归调用 + copyFolder(file.getAbsolutePath(),movePath); + }else { + //如果是文件则复制文件 + BufferedInputStream in = new BufferedInputStream(new FileInputStream(file)); + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(movePath)); + + byte[] b = new byte[1024]; + int temp = 0; + while((temp = in.read(b)) != -1){ + out.write(b,0,temp); + } + out.close(); + in.close(); + } + } + } + public static String copy(File source, String targetDir) throws IOException{ String name = source.getName(); diff --git a/backend/src/main/java/io/dataease/commons/utils/ZipUtils.java b/backend/src/main/java/io/dataease/commons/utils/ZipUtils.java index edcec34e1b..40bb4b6c40 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ZipUtils.java +++ b/backend/src/main/java/io/dataease/commons/utils/ZipUtils.java @@ -56,38 +56,34 @@ public class ZipUtils { } public static void unzip(File source, String out) throws IOException { - try (ZipInputStream zis = new ZipInputStream(new FileInputStream(source))) { + ZipInputStream zis = new ZipInputStream(new FileInputStream(source)); + ZipEntry entry = zis.getNextEntry(); + while (entry != null) { + File file = protectZipSlip(entry.getName(), out); - ZipEntry entry = zis.getNextEntry(); + if (entry.isDirectory()) { + if (!file.mkdirs()) { + } + } else { + File parent = file.getParentFile(); - while (entry != null) { - - File file = protectZipSlip(entry.getName(), out); - - if (entry.isDirectory()) { - if (!file.mkdirs()) { - } - } else { - File parent = file.getParentFile(); - - if (!parent.exists()) { - if (!parent.mkdirs()) { - } - } - - try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) { - - byte[] buffer = new byte[Math.toIntExact(entry.getSize())]; - - int location; - - while ((location = zis.read(buffer)) != -1) { - bos.write(buffer, 0, location); - } + if (!parent.exists()) { + if (!parent.mkdirs()) { + } + } + + try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) { + + byte[] buffer = new byte[Math.toIntExact(entry.getSize())]; + + int location; + + while ((location = zis.read(buffer)) != -1) { + bos.write(buffer, 0, location); } } - entry = zis.getNextEntry(); } + entry = zis.getNextEntry(); } } diff --git a/backend/src/main/java/io/dataease/dto/DatasourceDTO.java b/backend/src/main/java/io/dataease/dto/DatasourceDTO.java index 18b60ca6ca..2eccf6ef0d 100644 --- a/backend/src/main/java/io/dataease/dto/DatasourceDTO.java +++ b/backend/src/main/java/io/dataease/dto/DatasourceDTO.java @@ -2,6 +2,7 @@ package io.dataease.dto; import com.alibaba.fastjson.JSONArray; import io.dataease.plugins.common.base.domain.Datasource; +import io.dataease.plugins.common.constants.DatasourceCalculationMode; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,4 +18,5 @@ public class DatasourceDTO extends Datasource { private String privileges; private JSONArray apiConfiguration; private String typeDesc; + private DatasourceCalculationMode calculationMode; } diff --git a/backend/src/main/java/io/dataease/dto/MyPluginDTO.java b/backend/src/main/java/io/dataease/dto/MyPluginDTO.java new file mode 100644 index 0000000000..a2dcdd0d1f --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/MyPluginDTO.java @@ -0,0 +1,9 @@ +package io.dataease.dto; + +import io.dataease.plugins.common.base.domain.MyPlugin; +import lombok.Data; + +@Data +public class MyPluginDTO extends MyPlugin { + private String require = "1.9.0"; +} diff --git a/backend/src/main/java/io/dataease/provider/ProviderFactory.java b/backend/src/main/java/io/dataease/provider/ProviderFactory.java index 04732c99f9..63df829941 100644 --- a/backend/src/main/java/io/dataease/provider/ProviderFactory.java +++ b/backend/src/main/java/io/dataease/provider/ProviderFactory.java @@ -24,80 +24,75 @@ public class ProviderFactory implements ApplicationContextAware { this.context = ctx; for(final DatasourceTypes d: DatasourceTypes.values()) { final ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) context).getBeanFactory(); - DataSourceType dataSourceType = new DataSourceType(); - dataSourceType.setType(d.getType()); - dataSourceType.setName(d.getName()); - dataSourceType.setAliasPrefix(d.getAliasPrefix()); - dataSourceType.setAliasSuffix(d.getAliasSuffix()); - dataSourceType.setKeywordPrefix(d.getKeywordPrefix()); - dataSourceType.setKeywordSuffix(d.getKeywordSuffix()); - dataSourceType.setPlugin(false); - dataSourceType.setExtraParams(d.getExtraParams()); - System.out.println(new Gson().toJson(dataSourceType)); - beanFactory.registerSingleton(d.getType(), dataSourceType); + if(d.isDatasource()){ + DataSourceType dataSourceType = new DataSourceType(d.getType(), d.getName(), false, d.getExtraParams(), d.getCalculationMode()); + beanFactory.registerSingleton(d.getType(), dataSourceType); + } } } public static Provider getProvider(String type) { Map dataSourceTypeMap = SpringContextUtil.getApplicationContext().getBeansOfType((DataSourceType.class)); - if(dataSourceTypeMap.get(type).isPlugin()){ - return context.getBean(type, Provider.class); + if(dataSourceTypeMap.keySet().contains(type)){ + DatasourceTypes datasourceType = DatasourceTypes.valueOf(type); + switch (datasourceType) { + case es: + return context.getBean("es", Provider.class); + case api: + return context.getBean("api", Provider.class); + default: + return context.getBean("jdbc", Provider.class); + } } - DatasourceTypes datasourceType = DatasourceTypes.valueOf(type); - switch (datasourceType) { - case es: - return context.getBean("es", Provider.class); - case api: - return context.getBean("api", Provider.class); - default: - return context.getBean("jdbc", Provider.class); - } + return SpringContextUtil.getApplicationContext().getBean(type + "DsProvider", Provider.class); + } public static QueryProvider getQueryProvider(String type) { Map dataSourceTypeMap = SpringContextUtil.getApplicationContext().getBeansOfType((DataSourceType.class)); - if(dataSourceTypeMap.get(type).isPlugin()){ - return context.getBean(type, QueryProvider.class); - } - DatasourceTypes datasourceType = DatasourceTypes.valueOf(type); - switch (datasourceType) { - case mysql: - case mariadb: - case ds_doris: - case TiDB: - case StarRocks: - return context.getBean("mysqlQuery", QueryProvider.class); - case sqlServer: - return context.getBean("sqlserverQuery", QueryProvider.class); - case pg: - return context.getBean("pgQuery", QueryProvider.class); - case oracle: - return context.getBean("oracleQuery", QueryProvider.class); - case es: - return context.getBean("esQuery", QueryProvider.class); - case ck: - return context.getBean("ckQuery", QueryProvider.class); - case mongo: - return context.getBean("mongoQuery", QueryProvider.class); - case redshift: - return context.getBean("redshiftQuery", QueryProvider.class); - case hive: - return context.getBean("hiveQuery", QueryProvider.class); - case impala: - return context.getBean("impalaQuery", QueryProvider.class); - case db2: - return context.getBean("db2Query", QueryProvider.class); - case api: - return context.getBean("apiQuery", QueryProvider.class); - case engine_doris: - return context.getBean("dorisEngineQuery", QueryProvider.class); - case engine_mysql: - return context.getBean("mysqlEngineQuery", QueryProvider.class); - default: - return context.getBean("mysqlQuery", QueryProvider.class); + if(dataSourceTypeMap.keySet().contains(type)){ + DatasourceTypes datasourceType = DatasourceTypes.valueOf(type); + switch (datasourceType) { + case mysql: + case mariadb: + case ds_doris: + case TiDB: + case StarRocks: + return context.getBean("mysqlQuery", QueryProvider.class); + case sqlServer: + return context.getBean("sqlserverQuery", QueryProvider.class); + case pg: + return context.getBean("pgQuery", QueryProvider.class); + case oracle: + return context.getBean("oracleQuery", QueryProvider.class); + case es: + return context.getBean("esQuery", QueryProvider.class); + case ck: + return context.getBean("ckQuery", QueryProvider.class); + case mongo: + return context.getBean("mongoQuery", QueryProvider.class); + case redshift: + return context.getBean("redshiftQuery", QueryProvider.class); + case hive: + return context.getBean("hiveQuery", QueryProvider.class); + case impala: + return context.getBean("impalaQuery", QueryProvider.class); + case db2: + return context.getBean("db2Query", QueryProvider.class); + case api: + return context.getBean("apiQuery", QueryProvider.class); + case engine_doris: + return context.getBean("dorisEngineQuery", QueryProvider.class); + case engine_mysql: + return context.getBean("mysqlEngineQuery", QueryProvider.class); + default: + return context.getBean("mysqlQuery", QueryProvider.class); + } } + + return SpringContextUtil.getApplicationContext().getBean(type + "QueryProvider", QueryProvider.class); } public static DDLProvider getDDLProvider(String type) { diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index 7a299c172c..2bd88760f8 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -34,7 +34,7 @@ public class JdbcProvider extends DefaultJdbcProvider { return false; } @Override - public String getName(){ + public String getType(){ return "built-in"; } /** diff --git a/backend/src/main/java/io/dataease/provider/datasource/MaxCompute.java b/backend/src/main/java/io/dataease/provider/datasource/MaxCompute.java deleted file mode 100644 index 7272e37d12..0000000000 --- a/backend/src/main/java/io/dataease/provider/datasource/MaxCompute.java +++ /dev/null @@ -1,83 +0,0 @@ -package io.dataease.provider.datasource; - -import com.alibaba.druid.pool.DruidDataSource; -import com.google.gson.Gson; -import io.dataease.plugins.common.constants.DatasourceTypes; -import io.dataease.plugins.common.dto.datasource.TableDesc; -import io.dataease.plugins.common.dto.datasource.TableField; -import io.dataease.plugins.common.exception.DataEaseException; -import io.dataease.plugins.common.request.datasource.DatasourceRequest; -import io.dataease.plugins.datasource.entity.JdbcConfiguration; -import io.dataease.plugins.datasource.provider.DefaultJdbcProvider; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.sql.*; -import java.util.*; - - -@Component("maxcompute") -public class MaxCompute extends DefaultJdbcProvider { - - @Override - public String getName(){ - return "maxcompute"; - } - - @Override - public boolean isUseDatasourcePool(){ - return false; - } - - @Override - public Connection getConnection(DatasourceRequest datasourceRequest) throws Exception { - Properties props = new Properties(); - MaxcomputeConfig maxcomputeConfig = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), MaxcomputeConfig.class); - String username = maxcomputeConfig.getUsername(); - String password = maxcomputeConfig.getPassword(); - String driver = maxcomputeConfig.getDriver(); - String url = maxcomputeConfig.getUrl(); - Driver driverClass = (Driver) extendedJdbcClassLoader.loadClass(driver).newInstance(); - - if (StringUtils.isNotBlank(username)) { - props.setProperty("user", username); - if (StringUtils.isNotBlank(password)) { - props.setProperty("password", password); - } - } - Connection conn = driverClass.connect(url, props); - return conn; - } - - @Override - public List getTables(DatasourceRequest datasourceRequest) throws Exception { - List tables = new ArrayList<>(); - String queryStr = getTablesSql(datasourceRequest); - try (Connection con = getConnectionFromPool(datasourceRequest); Statement statement = con.createStatement(); ResultSet resultSet = statement.executeQuery(queryStr)) { - while (resultSet.next()) { - tables.add(getTableDesc(datasourceRequest, resultSet)); - } - } catch (Exception e) { - DataEaseException.throwException(e); - } - - return tables; - } - - private TableDesc getTableDesc(DatasourceRequest datasourceRequest, ResultSet resultSet) throws SQLException { - TableDesc tableDesc = new TableDesc(); - tableDesc.setName(resultSet.getString(1)); - return tableDesc; - } - - @Override - public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - datasourceRequest.setQuery("select * from " + datasourceRequest.getTable() + " limit 0"); - return fetchResultField(datasourceRequest); - } - -} diff --git a/backend/src/main/java/io/dataease/provider/datasource/MaxcomputeConfig.java b/backend/src/main/java/io/dataease/provider/datasource/MaxcomputeConfig.java deleted file mode 100644 index fcf1416bb6..0000000000 --- a/backend/src/main/java/io/dataease/provider/datasource/MaxcomputeConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.dataease.provider.datasource; - -import io.dataease.plugins.datasource.entity.JdbcConfiguration; -import lombok.Getter; -import lombok.Setter; -import org.apache.commons.lang3.StringUtils; - -@Getter -@Setter -public class MaxcomputeConfig extends JdbcConfiguration { - - private String driver = "com.aliyun.odps.jdbc.OdpsDriver"; - private String url; -} diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index eed3f091c8..af17094992 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -45,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) @@ -62,15 +63,19 @@ public class DatasourceService { private CommonThreadPool commonThreadPool; @Resource private SysAuthService sysAuthService; -// private static List dsTypes = Arrays.asList("TiDB", "StarRocks", "excel", "mysql", "hive", "impala", "mariadb", "ds_doris", "pg", "sqlServer", "oracle", "mongo", "ck", "db2", "es", "redshift", "api"); public Collectiontypes(){ - return SpringContextUtil.getApplicationContext().getBeansOfType((DataSourceType.class)).values(); + Collection types = new ArrayList<>(); + types.addAll(SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()); + SpringContextUtil.getApplicationContext().getBeansOfType(io.dataease.plugins.datasource.service.DatasourceService.class).values().forEach(datasourceService -> { + types.add(datasourceService.getDataSourceType()); + }); + return types; } @DeCleaner(DePermissionType.DATASOURCE) public Datasource addDatasource(Datasource datasource) throws Exception{ - if(!SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).keySet().contains(datasource.getType())){ + if(!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())){ throw new Exception("Datasource type not supported."); } checkName(datasource.getName(),datasource.getType(), datasource.getId()); @@ -104,7 +109,12 @@ public class DatasourceService { request.setSort("update_time desc"); List datasourceDTOS = extDataSourceMapper.queryUnion(request); datasourceDTOS.forEach(datasourceDTO -> { - datasourceDTO.setTypeDesc(SpringContextUtil.getApplicationContext().getBean(datasourceDTO.getType(), DataSourceType.class).getName()); + types().forEach(dataSourceType -> { + if(dataSourceType.getType().equalsIgnoreCase(datasourceDTO.getType())){ + datasourceDTO.setTypeDesc(dataSourceType.getName()); + datasourceDTO.setCalculationMode(dataSourceType.getCalculationMode()); + } + }); if(datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.api.toString())){ JSONArray apiDefinitionList = JSONObject.parseArray(datasourceDTO.getConfiguration()); JSONArray apiDefinitionListWithStatus = new JSONArray(); @@ -165,7 +175,7 @@ public class DatasourceService { } public void updateDatasource(UpdataDsRequest updataDsRequest)throws Exception{ - if(!SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).keySet().contains(updataDsRequest.getType())){ + if(!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(updataDsRequest.getType())){ throw new Exception("Datasource type not supported."); } checkName(updataDsRequest.getName(),updataDsRequest.getType(),updataDsRequest.getId()); diff --git a/backend/src/main/java/io/dataease/service/sys/PluginService.java b/backend/src/main/java/io/dataease/service/sys/PluginService.java index f6282e2a4d..0627830715 100644 --- a/backend/src/main/java/io/dataease/service/sys/PluginService.java +++ b/backend/src/main/java/io/dataease/service/sys/PluginService.java @@ -2,6 +2,7 @@ package io.dataease.service.sys; import cn.hutool.core.io.FileUtil; import com.google.gson.Gson; +import io.dataease.dto.MyPluginDTO; import io.dataease.ext.ExtSysPluginMapper; import io.dataease.ext.query.GridExample; import io.dataease.commons.constants.AuthConstants; @@ -65,13 +66,13 @@ public class PluginService { * @param file * @return */ - public Map localInstall(MultipartFile file) { + public Map localInstall(MultipartFile file) throws Exception{ //1.上传文件到服务器pluginDir目录下 File dest = DeFileUtils.upload(file, pluginDir + "temp/"); //2.解压目标文件dest 得到plugin.json和jar String folder = pluginDir + "folder/"; try { - ZipUtils.upZipFile(dest, folder); + ZipUtils.unzip(dest, folder); } catch (IOException e) { DeFileUtils.deleteFile(pluginDir + "temp/"); DeFileUtils.deleteFile(folder); @@ -90,7 +91,7 @@ public class PluginService { LogUtil.error(msg); DEException.throwException(new RuntimeException(msg)); } - MyPlugin myPlugin = formatJsonFile(jsonFiles[0]); + MyPluginDTO myPlugin = formatJsonFile(jsonFiles[0]); if (!versionMatch(myPlugin.getRequire())) { String msg = "当前插件要求系统版本最低为:" + myPlugin.getRequire(); @@ -118,6 +119,9 @@ public class PluginService { targetDir = makeTargetDir(myPlugin); String jarPath; jarPath = DeFileUtils.copy(jarFile, targetDir); + if(myPlugin.getCategory().equalsIgnoreCase("datasource")){ + DeFileUtils.copyFolder(folder + "/" + myPlugin.getDsType() + "Driver", targetDir + myPlugin.getDsType() + "Driver"); + } loadJar(jarPath, myPlugin); myPluginMapper.insert(myPlugin); @@ -192,6 +196,11 @@ public class PluginService { String path = pluginDir + plugin.getStore() + "/" + fileName; File jarFile = new File(path); FileUtil.del(jarFile); + + if(plugin.getCategory().equalsIgnoreCase("datasource")){ + File driverFile = new File(pluginDir + plugin.getStore() + "/" + plugin.getDsType() + "Driver"); + FileUtil.del(driverFile); + } } /** @@ -224,13 +233,13 @@ public class PluginService { * * @return */ - private MyPlugin formatJsonFile(File file) { + private MyPluginDTO formatJsonFile(File file) { String str = DeFileUtils.readJson(file); Gson gson = new Gson(); Map myPlugin = gson.fromJson(str, Map.class); myPlugin.put("free", (Double) myPlugin.get("free") > 0.0); - myPlugin.put("loadMybatis", (Double) myPlugin.get("loadMybatis") > 0.0); - MyPlugin result = new MyPlugin(); + myPlugin.put("loadMybatis", myPlugin.get("loadMybatis") == null ? false : (Double) myPlugin.get("loadMybatis") > 0.0); + MyPluginDTO result = new MyPluginDTO(); try { org.apache.commons.beanutils.BeanUtils.populate(result, myPlugin); result.setInstallTime(System.currentTimeMillis()); @@ -240,6 +249,10 @@ public class PluginService { e.printStackTrace(); } //BeanUtils.copyBean(result, myPlugin); + if(result.getCategory().equalsIgnoreCase("datasource")){ + result.setStore("thirdpart"); + } + return result; } diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index 920baa29fe..2f620748da 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -213,5 +213,4 @@ export function checkCustomDs() { loading: true }) } -export const disabledSyncDs= ['es', 'ck', 'mongo', 'redshift', 'hive', 'impala'] export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree, checkCustomDs } diff --git a/frontend/src/components/AsyncComponent/index.vue b/frontend/src/components/AsyncComponent/index.vue index 7c0b613372..b1d4964692 100644 --- a/frontend/src/components/AsyncComponent/index.vue +++ b/frontend/src/components/AsyncComponent/index.vue @@ -70,7 +70,7 @@ export default { }, */ callPluginInner(param) { const { methodName, methodParam } = param - this.$refs[this.refId] && this.$refs[this.refId][methodName] && this.$refs[this.refId][methodName](methodParam) + return this.$refs[this.refId] && this.$refs[this.refId][methodName] && this.$refs[this.refId][methodName](methodParam) } } } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 1a98d948fa..0f012d01ac 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2,7 +2,7 @@ export default { fu: { search_bar: { search: 'Search', - adv_search: 'Advanced search', + adv_search: 'Advarequirednced search', ok: 'Confirm', cancel: 'Cancel', please_select: 'Please select', @@ -278,7 +278,7 @@ export default { id: 'ID', millisecond: 'Millisecond', cannot_be_null: 'Cannot be null', - required: '{0} is required', + required: 'Required', already_exists: 'Already Exists', modifier: 'Modifier', validate: 'Validate', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 57da2c32a8..3375fb1d96 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -278,7 +278,7 @@ export default { id: 'ID', millisecond: '毫秒', cannot_be_null: '不能爲空', - required: '{0}是必填的', + required: '必填', already_exists: '名稱不能重複', modifier: '修改人', validate: '校驗', diff --git a/frontend/src/views/dataset/add/AddDB.vue b/frontend/src/views/dataset/add/AddDB.vue index 2df9aba58a..03d3ed3e71 100644 --- a/frontend/src/views/dataset/add/AddDB.vue +++ b/frontend/src/views/dataset/add/AddDB.vue @@ -69,7 +69,7 @@