From 054cf38976cc0c67b078e77073a565434fd59005 Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 24 May 2021 10:44:10 +0800 Subject: [PATCH 1/9] feat(frontend):code format --- frontend/src/views/dataset/data/UpdateInfo.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/dataset/data/UpdateInfo.vue b/frontend/src/views/dataset/data/UpdateInfo.vue index e9bc4cf96f..47510c1bef 100644 --- a/frontend/src/views/dataset/data/UpdateInfo.vue +++ b/frontend/src/views/dataset/data/UpdateInfo.vue @@ -135,8 +135,8 @@ - - + + From dcafd50b2b35a4f33d71f264f1736d17f5ed22a0 Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 24 May 2021 11:03:57 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat(i18n):=E5=90=8E=E7=AB=AF=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=EF=BC=9Bcron=20=E7=BB=84=E4=BB=B6=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/ChartGroupService.java | 3 ++- .../service/chart/ChartViewService.java | 3 ++- .../service/dataset/DataSetGroupService.java | 3 ++- .../service/dataset/DataSetTableService.java | 19 ++++++++++--------- .../dataset/DataSetTableTaskService.java | 3 ++- .../resources/i18n/messages_en_US.properties | 4 ++++ .../resources/i18n/messages_zh_CN.properties | 4 ++++ .../resources/i18n/messages_zh_TW.properties | 4 ++++ .../src/views/dataset/data/UpdateInfo.vue | 5 +++-- 9 files changed, 33 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java b/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java index 8977454993..46d9045038 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java @@ -8,6 +8,7 @@ import io.dataease.commons.utils.BeanUtils; import io.dataease.controller.request.chart.ChartGroupRequest; import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.dto.chart.ChartGroupDTO; +import io.dataease.i18n.Translator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -122,7 +123,7 @@ public class ChartGroupService { } List list = chartGroupMapper.selectByExample(chartGroupExample); if (list.size() > 0) { - throw new RuntimeException("Name can't repeat in same group."); + throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group")); } } } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 963df03cbd..e054ddbaa3 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -20,6 +20,7 @@ import io.dataease.dto.chart.ChartViewDTO; import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.chart.Series; import io.dataease.dto.dataset.DataTableInfoDTO; +import io.dataease.i18n.Translator; import io.dataease.provider.QueryProvider; import io.dataease.service.dataset.DataSetTableFieldsService; import io.dataease.service.dataset.DataSetTableService; @@ -226,7 +227,7 @@ public class ChartViewService { } List list = chartViewMapper.selectByExampleWithBLOBs(chartViewExample); if (list.size() > 0) { - throw new RuntimeException("Name can't repeat in same group."); + throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group")); } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java index 48cbe0d7c2..153f68efba 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java @@ -11,6 +11,7 @@ import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.dto.dataset.DataSetGroupDTO; import io.dataease.dto.dataset.DataSetTableDTO; +import io.dataease.i18n.Translator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -133,7 +134,7 @@ public class DataSetGroupService { } List list = datasetGroupMapper.selectByExample(datasetGroupExample); if (list.size() > 0) { - throw new RuntimeException("Name can't repeat in same group."); + throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group")); } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 0b6c1c5ac0..2aafeb24a1 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -19,6 +19,7 @@ import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataTableInfoCustomUnion; import io.dataease.dto.dataset.DataTableInfoDTO; +import io.dataease.i18n.Translator; import io.dataease.provider.DDLProvider; import io.dataease.provider.QueryProvider; import org.apache.commons.collections4.CollectionUtils; @@ -177,7 +178,7 @@ public class DataSetTableService { .id("count") .tableId(dataSetTableRequest.getId()) .originName("*") - .name("记录数*") + .name(Translator.get("i18n_chart_count")) .dataeaseName("*") .type("INT") .checked(true) @@ -500,7 +501,7 @@ public class DataSetTableService { return; } QueryProvider qp = null; - if(!ObjectUtils.isEmpty(ds)) { + if (!ObjectUtils.isEmpty(ds)) { qp = ProviderFactory.getQueryProvider(ds.getType()); } if (CollectionUtils.isNotEmpty(fields)) { @@ -611,7 +612,7 @@ public class DataSetTableService { } List list = datasetTableMapper.selectByExample(datasetTableExample); if (list.size() > 0) { - throw new RuntimeException("Name can't repeat in same group."); + throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group")); } } @@ -647,11 +648,11 @@ public class DataSetTableService { if (StringUtils.equalsIgnoreCase(suffix, "xls")) { HSSFWorkbook workbook = new HSSFWorkbook(inputStream); HSSFSheet sheet0 = workbook.getSheetAt(0); - for (int i=0;i 0) { - throw new RuntimeException("Sheet have merged regions."); + throw new RuntimeException(Translator.get("i18n_excel_have_merge_region")); } int rows; if (isPreview) { @@ -668,7 +669,7 @@ public class DataSetTableService { tableFiled.setFieldType("TEXT"); tableFiled.setFieldSize(1024); String columnName = readCell(row.getCell(j)); - if(StringUtils.isEmpty(columnName)){ + if (StringUtils.isEmpty(columnName)) { columnName = "NONE_" + String.valueOf(j); } tableFiled.setFieldName(columnName); @@ -686,11 +687,11 @@ public class DataSetTableService { } else if (StringUtils.equalsIgnoreCase(suffix, "xlsx")) { XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream); XSSFSheet sheet0 = xssfWorkbook.getSheetAt(0); - for (int i=0;i 0) { - throw new RuntimeException("Sheet have merged regions."); + throw new RuntimeException(Translator.get("i18n_excel_have_merge_region")); } int rows; if (isPreview) { @@ -707,7 +708,7 @@ public class DataSetTableService { tableFiled.setFieldType("TEXT"); tableFiled.setFieldSize(1024); String columnName = readCell(row.getCell(j)); - if(StringUtils.isEmpty(columnName)){ + if (StringUtils.isEmpty(columnName)) { columnName = "NONE_" + String.valueOf(j); } tableFiled.setFieldName(columnName); diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java index 514d05df64..c6b646cd58 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java @@ -3,6 +3,7 @@ package io.dataease.service.dataset; import io.dataease.base.domain.DatasetTableTask; import io.dataease.base.domain.DatasetTableTaskExample; import io.dataease.base.mapper.DatasetTableTaskMapper; +import io.dataease.i18n.Translator; import io.dataease.service.ScheduleService; import org.apache.commons.lang3.StringUtils; import org.quartz.CronExpression; @@ -31,7 +32,7 @@ public class DataSetTableTaskService { // check if (StringUtils.isNotEmpty(datasetTableTask.getCron())) { if (!CronExpression.isValidExpression(datasetTableTask.getCron())) { - throw new RuntimeException("cron expression error."); + throw new RuntimeException(Translator.get("i18n_cron_expression_error")); } } if (StringUtils.isEmpty(datasetTableTask.getId())) { diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 9a8a5d4257..607fc32bdb 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -228,3 +228,7 @@ i18n_auth_export=Export i18n_auth_manage=Manage i18n_template_system=System Template i18n_template_self=Self Template +i18n_name_cant_repeat_same_group=Name is already exists in the same group +i18n_chart_count=Count* +i18n_excel_have_merge_region=Excel has merged region +i18n_cron_expression_error=Cron expression error diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index cb7b0cb00f..1b4009ca68 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -229,3 +229,7 @@ i18n_auth_export=导出 i18n_auth_manage=管理 i18n_template_system=系统模板 i18n_template_self=用户模板 +i18n_name_cant_repeat_same_group=同一分组下名称不能重复 +i18n_chart_count=记录数* +i18n_excel_have_merge_region=Excel存在合并单元格 +i18n_cron_expression_error=Cron表达式校验错误 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 56d9f07e56..4aae1e49a6 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -229,3 +229,7 @@ i18n_auth_export=導出 i18n_auth_manage=管理 i18n_template_system=系統模板 i18n_template_self=用戶模板 +i18n_name_cant_repeat_same_group=同一分組下名稱不能重復 +i18n_chart_count=記錄數* +i18n_excel_have_merge_region=Excel存在合並單元格 +i18n_cron_expression_error=Cron表達式校驗錯誤 diff --git a/frontend/src/views/dataset/data/UpdateInfo.vue b/frontend/src/views/dataset/data/UpdateInfo.vue index 47510c1bef..af0b653c86 100644 --- a/frontend/src/views/dataset/data/UpdateInfo.vue +++ b/frontend/src/views/dataset/data/UpdateInfo.vue @@ -135,7 +135,7 @@ - + @@ -354,7 +354,8 @@ export default { incrementalUpdateType: 'incrementalAdd', sql: '', incrementalConfig: {}, - cronEdit: false + cronEdit: false, + lang: this.$store.getters.language === 'en_US' ? 'en' : 'cn' } }, computed: { From d205e75730595b9ba4d909b8af4090b0dc5fc45a Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 24 May 2021 12:42:37 +0800 Subject: [PATCH 3/9] feat(frontend):UI fix --- frontend/src/components/DragItem/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/DragItem/index.vue b/frontend/src/components/DragItem/index.vue index 752948929a..f0629e54d4 100644 --- a/frontend/src/components/DragItem/index.vue +++ b/frontend/src/components/DragItem/index.vue @@ -6,7 +6,7 @@ {{ item.name }} - + {{ $t('chart.delete') }} From 8c6b60ff1799bb73ddda3fbdcc3f47c22fa5656e Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 24 May 2021 13:46:00 +0800 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=E5=AD=97=E6=AE=B5=E5=A4=84?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=BB=99=E5=87=BA=E6=8F=90=E7=A4=BA=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E2=80=9C=E8=AF=B7=E5=B0=86=E5=B7=A6=E4=BE=A7=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=8B=96=E8=87=B3=E6=AD=A4=E5=A4=84=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/components/Editor/PreviewEject.vue | 2 -- .../src/directive/DataPermission/index.js | 2 -- frontend/src/lang/en.js | 1 + frontend/src/lang/tw.js | 1 + frontend/src/lang/zh.js | 1 + frontend/src/views/panel/edit/index.vue | 4 +--- .../src/views/panel/filter/filterDialog.vue | 23 +++++++++++++++---- .../system/authority/components/LazyTree.vue | 1 - 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/canvas/components/Editor/PreviewEject.vue b/frontend/src/components/canvas/components/Editor/PreviewEject.vue index 62787bce27..7fff238442 100644 --- a/frontend/src/components/canvas/components/Editor/PreviewEject.vue +++ b/frontend/src/components/canvas/components/Editor/PreviewEject.vue @@ -79,8 +79,6 @@ export default { }, mounted() { const _this = this - - debugger // 加载数据 _this.restore() const erd = elementResizeDetectorMaker() diff --git a/frontend/src/directive/DataPermission/index.js b/frontend/src/directive/DataPermission/index.js index ff75526c88..d217a40428 100644 --- a/frontend/src/directive/DataPermission/index.js +++ b/frontend/src/directive/DataPermission/index.js @@ -1,8 +1,6 @@ function checkDataPermission(el, binding, vnode) { const dataPermission = vnode.privileges - debugger const { value } = binding - console.log('permission:' + value) // // 数据授权采用并集的方式 部门 角色 用户 有一个有权限即可 // if (value && value instanceof Array) { // const needPermissions = value diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index c26d30d397..118d1fa692 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -815,6 +815,7 @@ export default { input_limit_0_50: '0-50 chars' }, panel: { + drag_here: 'Please drag the left field here', copy_link_passwd: 'Copy link and password', copy_link: 'Copy link', passwd_protect: 'Password Protect', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 227b5ee337..bf73985ab4 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -814,6 +814,7 @@ export default { input_limit_0_50: '0-50字符' }, panel: { + drag_here: '請將左側字段拖至此處', copy_link_passwd: '複製鏈接及密碼', copy_link: '複製鏈接', passwd_protect: '密碼保護', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index b207001c86..a12f580cee 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -816,6 +816,7 @@ export default { input_limit_0_50: '0-50字符' }, panel: { + drag_here: '请将左侧字段拖至此处', copy_link_passwd: '复制链接及密码', copy_link: '复制链接', passwd_protect: '密码保护', diff --git a/frontend/src/views/panel/edit/index.vue b/frontend/src/views/panel/edit/index.vue index 7199c8b327..69bef7f6e5 100644 --- a/frontend/src/views/panel/edit/index.vue +++ b/frontend/src/views/panel/edit/index.vue @@ -255,7 +255,7 @@ export default { this.$router.replace('/panel/index') }, showPanel(type) { - debugger + if (this.showIndex === -1 || this.showIndex === type) { this.$nextTick(() => (this.show = !this.show)) } @@ -270,7 +270,6 @@ export default { // 点击样式按钮 排除 const stick = evt.target.closest('.el-icon-magic-stick') if (!parent && !self && !stick) { - debugger this.show = false window.removeEventListener('click', this.closeSidebar) this.showIndex = -1 @@ -388,7 +387,6 @@ export default { this.openFilterDiolog() }, closeLeftPanel() { - debugger this.show = false // this.beforeDestroy() }, diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index 1204ffe6c1..e2bcb80fab 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -120,8 +120,7 @@
- -
字段
+
{{ $t('panel.field') }}
@@ -133,8 +132,8 @@ :move="onMove" style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;background-color: white;" @end="end2" - > - + > + @@ -309,7 +308,9 @@ export default { }, methods: { - + attr(){ + return 'aaa' + }, loadViews() { const viewIds = this.componentData .filter(item => item.type === 'view' && item.propValue && item.propValue.viewId) @@ -646,4 +647,16 @@ export default { } } + .list-group:empty, + .list-group > div:empty { + display: inline-block; + width: 100%; + height: calc(100% - 13px); + } + + .list-group:empty:before, + .list-group > div:empty:before { + content: attr(data-value); + } + diff --git a/frontend/src/views/system/authority/components/LazyTree.vue b/frontend/src/views/system/authority/components/LazyTree.vue index d89b4dd1fb..4256803a0c 100644 --- a/frontend/src/views/system/authority/components/LazyTree.vue +++ b/frontend/src/views/system/authority/components/LazyTree.vue @@ -127,7 +127,6 @@ export default { // 初始化授权模板 if (this.showExtent) { authDetailsModel(this.dataInfo.authType).then(res => { - debugger this.defaultAuthDetails = res.data }) this.loadAuth() From 6c3a5953390b2e20bfbf62408b302533c7088650 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 24 May 2021 14:07:21 +0800 Subject: [PATCH 5/9] =?UTF-8?q?feat:=20=E4=BF=9D=E5=AD=98=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=BD=9C=E4=B8=BA=E2=80=9C=E6=96=87=E5=AD=97=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E2=80=9D=E6=94=BE=E5=9C=A8=E5=85=B3=E9=97=AD=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=9A=84=E5=B7=A6=E8=BE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package.json | 4 ++-- frontend/src/components/canvas/components/Toolbar.vue | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 8cf908add8..2aa81c3720 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -51,7 +51,7 @@ "@babel/register": "7.0.0", "@vue/cli-plugin-babel": "3.6.0", "@vue/cli-plugin-eslint": "^3.9.1", - "@vue/cli-service": "3.6.0", + "@vue/cli-service": "^3.3.1", "babel-eslint": "10.0.1", "chalk": "2.4.2", "connect": "3.6.6", @@ -61,7 +61,7 @@ "less": "^4.1.1", "less-loader": "^8.0.0", "mockjs": "1.0.1-beta3", - "runjs": "^4.3.2", + "runjs": "^4.1.3", "sass": "^1.32.5", "sass-loader": "^10.1.1", "script-ext-html-webpack-plugin": "2.1.3", diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue index ee27aee033..48aa7af8e0 100644 --- a/frontend/src/components/canvas/components/Toolbar.vue +++ b/frontend/src/components/canvas/components/Toolbar.vue @@ -29,14 +29,14 @@ - - - + + {{ $t('commons.save') }} + {{ $t('commons.close') }} @@ -209,7 +209,7 @@ export default { panelData: JSON.stringify(this.componentData) } post('panel/group/save', requestInfo, () => {}) - this.$message.success('保存成功') + this.$message.success(this.$t('commons.save_success')) }, clearCanvas() { this.$store.commit('setComponentData', []) From aa89ae30608e4f7befabdaa9abcf3f6dbbb4a181 Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 24 May 2021 14:59:41 +0800 Subject: [PATCH 6/9] feat(frontend):UI fix --- frontend/src/views/chart/view/ChartEdit.vue | 30 +++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index a78eff2284..45512556c6 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -125,20 +125,20 @@
+ + + + Tips: {{ $t('chart.only_one_quota') }} + + + Tips: {{ $t('chart.only_one_result') }} + + + Tips: {{ $t('chart.only_one_quota') }},{{ $t('chart.only_one_result') }} + + +
- - - - Tips: {{ $t('chart.only_one_quota') }} - - - Tips: {{ $t('chart.only_one_result') }} - - - Tips: {{ $t('chart.only_one_quota') }},{{ $t('chart.only_one_result') }} - - -
{{ $t('chart.style_priority') }} @@ -902,6 +902,8 @@ export default { /*background-color: rgba(35,46,64,.05);*/ background-color: white; display: block; + word-break: break-all; + white-space: normal; } .item-on-move { @@ -977,7 +979,7 @@ export default { } .attr-style{ - height: calc(100vh - 56px - 25vh - 40px - 62px - 10px - 60px); + height: calc(100vh - 56px - 25vh - 40px - 62px - 60px); } .attr-selector{ From f64122b7af6383f249133c8faee437e84cbc73a9 Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 24 May 2021 15:46:55 +0800 Subject: [PATCH 7/9] feat(frontend):UI fix --- frontend/src/views/dataset/data/TabDataPreview.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/dataset/data/TabDataPreview.vue b/frontend/src/views/dataset/data/TabDataPreview.vue index 95c04e21bb..6348fe1244 100644 --- a/frontend/src/views/dataset/data/TabDataPreview.vue +++ b/frontend/src/views/dataset/data/TabDataPreview.vue @@ -2,7 +2,7 @@ - + From f9bb4b31421e45c01b37bd688128115b8c13f3df Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 24 May 2021 17:06:35 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fix:=20=E6=8A=BD=E5=8F=96excel=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/service/DatasourceService.java | 27 ++++++++++- .../listener/AppStartReadHBaseListener.java | 47 ------------------- .../listener/DataSourceInitStartListener.java | 25 ++++++++++ .../service/dataset/DataSetGroupService.java | 2 + .../service/dataset/DataSetTableService.java | 2 + .../service/dataset/ExtractDataService.java | 33 +++++++++---- .../components/canvas/components/Toolbar.vue | 2 +- frontend/src/lang/en.js | 1 + frontend/src/lang/tw.js | 1 + frontend/src/lang/zh.js | 1 + 10 files changed, 84 insertions(+), 57 deletions(-) delete mode 100644 backend/src/main/java/io/dataease/listener/AppStartReadHBaseListener.java create mode 100644 backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java diff --git a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java index 6966b6611c..82c6722302 100644 --- a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java +++ b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java @@ -7,6 +7,8 @@ import io.dataease.base.mapper.ext.ExtDataSourceMapper; import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.commons.exception.DEException; import io.dataease.commons.utils.AuthUtils; +import io.dataease.commons.utils.CommonThreadPool; +import io.dataease.commons.utils.LogUtil; import io.dataease.controller.request.DatasourceUnionRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.controller.sys.base.ConditionEntity; @@ -40,6 +42,8 @@ public class DatasourceService { private DatasetTableMapper datasetTableMapper; @Resource private DataSetGroupService dataSetGroupService; + @Resource + private CommonThreadPool commonThreadPool; public Datasource addDatasource(Datasource datasource) { DatasourceExample example = new DatasourceExample(); @@ -114,7 +118,6 @@ public class DatasourceService { DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); if (StringUtils.equals(name, dataTableInfoDTO.getTable())) { dbTableDTO.setEnableCheck(false); - List parents = dataSetGroupService.getParents(datasetTable.getSceneId()); StringBuilder stringBuilder = new StringBuilder(); parents.forEach(ele -> stringBuilder.append(ele.getName()).append("/")); @@ -131,4 +134,26 @@ public class DatasourceService { public Datasource get(String id) { return datasourceMapper.selectByPrimaryKey(id); } + + public void initAllDataSourceConnectionPool(){ + List datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample()); + datasources.forEach(datasource -> { + try { + commonThreadPool.addTask(() ->{ + try { + System.out.println(new Gson().toJson(datasource)); + DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); + DatasourceRequest datasourceRequest = new DatasourceRequest(); + datasourceRequest.setDatasource(datasource); + datasourceProvider.initDataSource(datasourceRequest); + LogUtil.error("Succsss to init datasource connection pool: " + datasource.getName()); + }catch (Exception e){ + LogUtil.error("Failed to init datasource connection pool: " + datasource.getName(), e); + } + }); + }catch (Exception e){ + e.printStackTrace(); + } + }); + } } diff --git a/backend/src/main/java/io/dataease/listener/AppStartReadHBaseListener.java b/backend/src/main/java/io/dataease/listener/AppStartReadHBaseListener.java deleted file mode 100644 index 00383b7090..0000000000 --- a/backend/src/main/java/io/dataease/listener/AppStartReadHBaseListener.java +++ /dev/null @@ -1,47 +0,0 @@ -//package io.dataease.listener; -// -//import io.dataease.base.mapper.DatasetTableMapper; -//import io.dataease.commons.utils.CommonThreadPool; -//import io.dataease.service.dataset.DataSetTableFieldsService; -//import org.springframework.boot.context.event.ApplicationReadyEvent; -//import org.springframework.context.ApplicationListener; -//import org.springframework.core.annotation.Order; -//import org.springframework.core.env.Environment; -//import org.springframework.stereotype.Component; -// -//import javax.annotation.Resource; -// -//@Component -//@Order(value = 2) -//public class AppStartReadHBaseListener implements ApplicationListener { -// @Resource -// private CommonThreadPool commonThreadPool; -//// @Resource -//// private SparkCalc sparkCalc; -// @Resource -// private Environment env; // 保存了配置文件的信息 -// -// @Resource -// private DatasetTableMapper datasetTableMapper; -// @Resource -// private DataSetTableFieldsService dataSetTableFieldsService; -// -// @Override -// public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { -//// System.out.println("================= Read HBase start ================="); -//// // 项目启动,从数据集中找到定时抽取的表,从HBase中读取放入缓存 -//// DatasetTableExample datasetTableExample = new DatasetTableExample(); -//// datasetTableExample.createCriteria().andModeEqualTo(1); -//// List datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample); -//// for (DatasetTable table : datasetTables) { -////// commonThreadPool.addTask(() -> { -//// try { -//// List fields = dataSetTableFieldsService.getFieldsByTableId(table.getId()); -//// sparkCalc.getHBaseDataAndCache(table.getId(), fields); -//// } catch (Exception e) { -//// e.printStackTrace(); -//// } -////// }); -//// } -// } -//} diff --git a/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java new file mode 100644 index 0000000000..3ceeb18071 --- /dev/null +++ b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java @@ -0,0 +1,25 @@ +package io.dataease.listener; + +import io.dataease.base.domain.DatasetTableTask; +import io.dataease.datasource.service.DatasourceService; +import io.dataease.service.ScheduleService; +import io.dataease.service.dataset.DataSetTableTaskService; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +@Component +@Order(value = 1) +public class DataSourceInitStartListener implements ApplicationListener { + @Resource + private DatasourceService datasourceService; + + @Override + public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { + datasourceService.initAllDataSourceConnectionPool(); + } +} diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java index 153f68efba..92a88605dd 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java @@ -14,6 +14,7 @@ import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.i18n.Translator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -32,6 +33,7 @@ public class DataSetGroupService { @Resource private DatasetGroupMapper datasetGroupMapper; @Resource + @Lazy private DataSetTableService dataSetTableService; @Resource private ExtDataSetGroupMapper extDataSetGroupMapper; diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 2aafeb24a1..efe1615205 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -35,6 +35,7 @@ import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -50,6 +51,7 @@ import java.util.stream.Collectors; * @Date 2021/2/23 2:54 下午 */ @Service +@Transactional(rollbackFor = Exception.class) public class DataSetTableService { @Resource private DatasetTableMapper datasetTableMapper; diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 36d1c6220e..fde4cf6ff5 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -63,6 +63,7 @@ import org.pentaho.di.trans.steps.userdefinedjavaclass.UserDefinedJavaClassDef; import org.pentaho.di.trans.steps.userdefinedjavaclass.UserDefinedJavaClassMeta; import org.pentaho.di.www.SlaveServerJobStatus; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -82,6 +83,7 @@ import java.util.stream.Collectors; public class ExtractDataService { @Resource + @Lazy private DataSetTableService dataSetTableService; @Resource private DataSetTableFieldsService dataSetTableFieldsService; @@ -91,7 +93,6 @@ public class ExtractDataService { private DataSetTableTaskService dataSetTableTaskService; @Resource private DatasourceMapper datasourceMapper; - private static ExecutorService pool = Executors.newScheduledThreadPool(50); //设置连接池 private static String lastUpdateTime = "${__last_update_time__}"; private static String currentUpdateTime = "${__current_update_time__}"; @@ -113,7 +114,6 @@ public class ExtractDataService { "UNIQUE KEY(dataease_uuid)\n" + "DISTRIBUTED BY HASH(dataease_uuid) BUCKETS 10\n" + "PROPERTIES(\"replication_num\" = \"1\");"; - private static String shellScript = "curl --location-trusted -u %s:%s -H \"label:%s\" -H \"column_separator:%s\" -H \"columns:%s\" -H \"merge_type: %s\" -T %s -XPUT http://%s:%s/api/%s/%s/_stream_load\n" + "rm -rf %s\n"; @@ -448,6 +448,7 @@ public class ExtractDataService { selectSQL = qp.createQuerySQL(tableName, datasetTableFields); } inputStep = inputStep(transMeta, selectSQL); + udjcStep = udjc(datasetTableFields, false); break; case sqlServer: SqlServerConfigration sqlServerConfigration = new Gson().fromJson(datasource.getConfiguration(), SqlServerConfigration.class); @@ -459,10 +460,12 @@ public class ExtractDataService { selectSQL = qp.createQuerySQL(tableName, datasetTableFields); } inputStep = inputStep(transMeta, selectSQL); + udjcStep = udjc(datasetTableFields, false); break; case excel: String filePath = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getData(); inputStep = excelInputStep(filePath, datasetTableFields); + udjcStep = udjc(datasetTableFields, true); default: break; } @@ -487,7 +490,7 @@ public class ExtractDataService { break; } - udjcStep = udjc(datasetTableFields); + outputStep = outputStep(dorisOutputTable); hi1 = new TransHopMeta(inputStep, udjcStep); hi2 = new TransHopMeta(udjcStep, outputStep); @@ -569,11 +572,11 @@ public class ExtractDataService { return outputStep; } - private StepMeta udjc(List datasetTableFields) { - String needToChangeolumnType = ""; + private StepMeta udjc(List datasetTableFields, boolean isExcel) { + String needToChangeColumnType = ""; for (DatasetTableField datasetTableField : datasetTableFields) { if (datasetTableField.getDeExtractType() != null && datasetTableField.getDeExtractType() == 4) { - needToChangeolumnType = needToChangeolumnType + alterColumnTypeCode.replace("FILED", datasetTableField.getOriginName()); + needToChangeColumnType = needToChangeColumnType + alterColumnTypeCode.replace("FILED", datasetTableField.getOriginName()); } } @@ -583,8 +586,13 @@ public class ExtractDataService { fields.add(fieldInfo); userDefinedJavaClassMeta.setFieldInfo(fields); List definitions = new ArrayList(); - UserDefinedJavaClassDef userDefinedJavaClassDef = new UserDefinedJavaClassDef(UserDefinedJavaClassDef.ClassType.TRANSFORM_CLASS, "Processor", - code.replace("alterColumnTypeCode", needToChangeolumnType).replace("Column_Fields", String.join(",", datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList())))); + String tmp_code = code.replace("alterColumnTypeCode", needToChangeColumnType).replace("Column_Fields", String.join(",", datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList()))); + if(isExcel){ + tmp_code = tmp_code.replace("handleExcelIntColumn", handleExcelIntColumn); + }else { + tmp_code = tmp_code.replace("handleExcelIntColumn", ""); + } + UserDefinedJavaClassDef userDefinedJavaClassDef = new UserDefinedJavaClassDef(UserDefinedJavaClassDef.ClassType.TRANSFORM_CLASS, "Processor", tmp_code); userDefinedJavaClassDef.setActive(true); definitions.add(userDefinedJavaClassDef); @@ -629,6 +637,14 @@ public class ExtractDataService { " }\n" + " }\n"; + private static String handleExcelIntColumn = " \t\tif(tmp != null && tmp.endsWith(\".0\")){\n" + + " try {\n" + + " Integer.valueOf(tmp.substring(0, tmp.length()-2));\n" + + " get(Fields.Out, filed).setValue(r, tmp.substring(0, tmp.length()-2));\n" + + " get(Fields.Out, filed).getValueMeta().setType(2);\n" + + " }catch (Exception e){}\n" + + " }"; + private static String code = "import org.pentaho.di.core.row.ValueMetaInterface;\n" + "import java.util.List;\n" + "import java.io.File;\n" + @@ -659,6 +675,7 @@ public class ExtractDataService { " for (String filed : fileds) {\n" + " String tmp = get(Fields.In, filed).getString(r);\n" + "alterColumnTypeCode \n" + + "handleExcelIntColumn \n" + " str = str + tmp;\n" + " }\n" + "\n" + diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue index 48aa7af8e0..397f850eb6 100644 --- a/frontend/src/components/canvas/components/Toolbar.vue +++ b/frontend/src/components/canvas/components/Toolbar.vue @@ -160,7 +160,7 @@ export default { handleFileChange(e) { const file = e.target.files[0] if (!file.type.includes('image')) { - toast('只能插入图片') + toast(this.$t('panel.picture_limit')) return } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 118d1fa692..74e26d4d85 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -815,6 +815,7 @@ export default { input_limit_0_50: '0-50 chars' }, panel: { + picture_limit: 'Only pictures can be inserted', drag_here: 'Please drag the left field here', copy_link_passwd: 'Copy link and password', copy_link: 'Copy link', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index bf73985ab4..8abe13ebda 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -814,6 +814,7 @@ export default { input_limit_0_50: '0-50字符' }, panel: { + picture_limit: '只能插入圖片', drag_here: '請將左側字段拖至此處', copy_link_passwd: '複製鏈接及密碼', copy_link: '複製鏈接', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index a12f580cee..f1d074c1da 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -816,6 +816,7 @@ export default { input_limit_0_50: '0-50字符' }, panel: { + picture_limit: '只能插入图片', drag_here: '请将左侧字段拖至此处', copy_link_passwd: '复制链接及密码', copy_link: '复制链接', From 44dcb71cf1146fb86c4d56ffa1f44c45015ccc5d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 24 May 2021 17:15:32 +0800 Subject: [PATCH 9/9] =?UTF-8?q?fix:=20=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/datasource/service/DatasourceService.java | 1 - frontend/src/views/panel/filter/filterDialog.vue | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java index 82c6722302..721f1a6ff4 100644 --- a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java +++ b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java @@ -141,7 +141,6 @@ public class DatasourceService { try { commonThreadPool.addTask(() ->{ try { - System.out.println(new Gson().toJson(datasource)); DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(datasource); diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index e2bcb80fab..3929e6e57b 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -133,7 +133,7 @@ style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;background-color: white;" @end="end2" > - +