From 4cbe01ca16aad086eb998d4edb9511be93a35488 Mon Sep 17 00:00:00 2001 From: junjie Date: Tue, 1 Jun 2021 15:44:33 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=E4=B8=BA=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E7=BB=B4=E5=BA=A6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=98=BE=E7=A4=BA=E4=B8=8E=E6=A0=BC=E5=BC=8F=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/dto/chart/ChartViewFieldDTO.java | 4 ++ .../provider/doris/DorisQueryProvider.java | 32 ++++++++- .../provider/mysql/MysqlQueryProvider.java | 32 ++++++++- frontend/src/lang/en.js | 12 +++- frontend/src/lang/tw.js | 12 +++- frontend/src/lang/zh.js | 12 +++- .../components/drag-item/DimensionItem.vue | 70 +++++++++++++++++++ frontend/src/views/chart/view/ChartEdit.vue | 6 ++ 8 files changed, 175 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java index 6725720bdb..b21b9adc8c 100644 --- a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java +++ b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java @@ -38,4 +38,8 @@ public class ChartViewFieldDTO implements Serializable { private List filter; private Integer deExtractType; + + private String dateStyle; + + private String datePattern; } diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java index d840005eb0..00791c6618 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -132,12 +132,16 @@ public class DorisQueryProvider extends QueryProvider { if (x.getDeExtractType() == 1) { if (x.getDeType() == 2 || x.getDeType() == 3) { stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as ").append(x.getDataeaseName()); + } else if (x.getDeType() == 1) { + String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); + stringBuilder.append("DATE_FORMAT(").append(x.getDataeaseName()).append(",'").append(format).append("')"); } else { stringBuilder.append(x.getDataeaseName()); } } else { if (x.getDeType() == 1) { - stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); + String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); + stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as ").append(x.getDataeaseName()); } else { stringBuilder.append(x.getDataeaseName()); } @@ -330,4 +334,30 @@ public class DorisQueryProvider extends QueryProvider { } return filter.toString(); } + + private String transDateFormat(String dateStyle, String datePattern) { + String split = "-"; + if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) { + split = "-"; + } else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { + split = "/"; + } + + switch (dateStyle) { + case "y": + return "%Y"; + case "y_M": + return "%Y" + split + "%m"; + case "y_M_d": + return "%Y" + split + "%m" + split + "%d"; + case "H_m_s": + return "%H:%i:%S"; + case "y_M_d_H_m": + return "%Y" + split + "%m" + split + "%d" + " %H:%i"; + case "y_M_d_H_m_s": + return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S"; + default: + return "%Y-%m-%d %H:%i:%S"; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java index 9f1a8244ce..962bc07abf 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java @@ -138,12 +138,16 @@ public class MysqlQueryProvider extends QueryProvider { if (x.getDeExtractType() == 1) { if (x.getDeType() == 2 || x.getDeType() == 3) { stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as ").append(x.getDataeaseName()); + } else if (x.getDeType() == 1) { + String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); + stringBuilder.append("DATE_FORMAT(").append(x.getDataeaseName()).append(",'").append(format).append("')"); } else { stringBuilder.append(x.getDataeaseName()); } } else { if (x.getDeType() == 1) { - stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); + String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); + stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as ").append(x.getDataeaseName()); } else { stringBuilder.append(x.getDataeaseName()); } @@ -344,4 +348,30 @@ public class MysqlQueryProvider extends QueryProvider { } return sql; } + + private String transDateFormat(String dateStyle, String datePattern) { + String split = "-"; + if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) { + split = "-"; + } else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { + split = "/"; + } + + switch (dateStyle) { + case "y": + return "%Y"; + case "y_M": + return "%Y" + split + "%m"; + case "y_M_d": + return "%Y" + split + "%m" + split + "%d"; + case "H_m_s": + return "%H:%i:%S"; + case "y_M_d_H_m": + return "%Y" + split + "%m" + split + "%d" + " %H:%i"; + case "y_M_d_H_m_s": + return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S"; + default: + return "%Y-%m-%d %H:%i:%S"; + } + } } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 3aab9b858e..cab9e7f4d3 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -692,7 +692,17 @@ export default { chart_pie_rose: 'Rose Pie', chart_funnel: 'Funnel', chart_radar: 'Radar', - chart_gauge: 'Gauge' + chart_gauge: 'Gauge', + dateStyle: '日期顯示', + datePattern: '日期格式', + y: 'Year', + y_M: 'Year Month', + y_M_d: 'Year Month Day', + H_m_s: 'Hour Minute Second', + y_M_d_H_m: 'Year Month Day Hour Minute', + y_M_d_H_m_s: 'Year Month Day Hour Minute Second', + date_sub: 'yyyy-MM-dd', + date_split: 'yyyy/MM/dd' }, dataset: { sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 38de7d1eeb..1c404707c1 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -692,7 +692,17 @@ export default { chart_pie_rose: '南丁格爾玫瑰圖', chart_funnel: '漏鬥圖', chart_radar: '雷達圖', - chart_gauge: '儀表盤' + chart_gauge: '儀表盤', + dateStyle: '日期顯示', + datePattern: '日期格式', + y: '年', + y_M: '年月', + y_M_d: '年月日', + H_m_s: '時分秒', + y_M_d_H_m: '年月日時分', + y_M_d_H_m_s: '年月日時分秒', + date_sub: 'yyyy-MM-dd', + date_split: 'yyyy/MM/dd' }, dataset: { sheet_warn: '有多個sheet頁面,默認抽取第一個', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index f62c8a8e35..c30a864b76 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -692,7 +692,17 @@ export default { chart_pie_rose: '南丁格尔玫瑰图', chart_funnel: '漏斗图', chart_radar: '雷达图', - chart_gauge: '仪表盘' + chart_gauge: '仪表盘', + dateStyle: '日期显示', + datePattern: '日期格式', + y: '年', + y_M: '年月', + y_M_d: '年月日', + H_m_s: '时分秒', + y_M_d_H_m: '年月日时分', + y_M_d_H_m_s: '年月日时分秒', + date_sub: 'yyyy-MM-dd', + date_split: 'yyyy/MM/dd' }, dataset: { sheet_warn: '有多个Sheet页,默认抽取第一个', diff --git a/frontend/src/views/chart/components/drag-item/DimensionItem.vue b/frontend/src/views/chart/components/drag-item/DimensionItem.vue index 1c07723b81..6e9d770323 100644 --- a/frontend/src/views/chart/components/drag-item/DimensionItem.vue +++ b/frontend/src/views/chart/components/drag-item/DimensionItem.vue @@ -26,6 +26,44 @@ {{ $t('chart.filter') }}... + + + + + + + {{ $t('chart.dateStyle') }} + ({{ $t('chart.'+item.dateStyle) }}) + + + + + {{ $t('chart.y') }} + {{ $t('chart.y_M') }} + {{ $t('chart.y_M_d') }} + {{ $t('chart.H_m_s') }} + {{ $t('chart.y_M_d_H_m') }} + {{ $t('chart.y_M_d_H_m_s') }} + + + + + + + + + {{ $t('chart.datePattern') }} + ({{ $t('chart.'+item.datePattern) }}) + + + + + {{ $t('chart.date_sub') }}(1990-01-01) + {{ $t('chart.date_split') }}(1990/01/01) + + + + {{ $t('chart.show_name_set') }} @@ -91,6 +129,26 @@ export default { type: type } }, + dateStyle(param) { + // console.log(param) + this.item.dateStyle = param.type + this.$emit('onDimensionItemChange', this.item) + }, + beforeDateStyle(type) { + return { + type: type + } + }, + datePattern(param) { + // console.log(param) + this.item.datePattern = param.type + this.$emit('onDimensionItemChange', this.item) + }, + beforeDatePattern(type) { + return { + type: type + } + }, editFilter() { this.item.index = this.index this.$emit('editItemFilter', this.item) @@ -129,4 +187,16 @@ export default { span { font-size: 12px; } + + .summary-span{ + margin-left: 4px; + color: #878d9f;; + } + + .inner-dropdown-menu{ + display: flex; + justify-content: space-between; + align-items: center; + width: 100% + } diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index 200c90dae6..6b49d78479 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -469,6 +469,12 @@ export default { // if (!ele.summary || ele.summary === '') { // ele.summary = 'sum' // } + if (!ele.dateStyle || ele.dateStyle === '') { + ele.dateStyle = 'y_M_d' + } + if (!ele.datePattern || ele.datePattern === '') { + ele.datePattern = 'date_sub' + } if (!ele.sort || ele.sort === '') { ele.sort = 'none' } From 196c003445384dad8a54b44ded65269aa00a143a Mon Sep 17 00:00:00 2001 From: junjie Date: Tue, 1 Jun 2021 15:58:03 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E5=A2=9E=E5=8A=A0loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/dataset/common/DatasetGroupSelector.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/dataset/common/DatasetGroupSelector.vue b/frontend/src/views/dataset/common/DatasetGroupSelector.vue index 6027df0e8c..2f3e06d6bc 100644 --- a/frontend/src/views/dataset/common/DatasetGroupSelector.vue +++ b/frontend/src/views/dataset/common/DatasetGroupSelector.vue @@ -1,7 +1,7 @@