diff --git a/backend/src/main/java/io/dataease/provider/QueryProvider.java b/backend/src/main/java/io/dataease/provider/QueryProvider.java index 5e02985b71..41ae0fc455 100644 --- a/backend/src/main/java/io/dataease/provider/QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/QueryProvider.java @@ -33,4 +33,8 @@ public abstract class QueryProvider { public abstract String getSQLAsTmp(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList); public abstract String searchTable(String table); + + public abstract String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList); + + public abstract String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList); } 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 b4385f66e9..eb2b7be871 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -87,6 +87,8 @@ public class DorisQueryProvider extends QueryProvider { stringBuilder.append("cast(").append(f.getDataeaseName()).append(" as decimal(20,0)) as ").append(f.getDataeaseName()); } else if (f.getDeType() == 3) { stringBuilder.append("cast(").append(f.getDataeaseName()).append(" as decimal(20,2)) as ").append(f.getDataeaseName()); + } else if (f.getDeType() == 1) { + stringBuilder.append("DATE_FORMAT(").append(f.getDataeaseName()).append(",'%Y-%m-%d %H:%i:%S') as _").append(f.getDataeaseName()); } else { stringBuilder.append(f.getDataeaseName()); } @@ -149,7 +151,11 @@ public class DorisQueryProvider extends QueryProvider { } else { if (x.getDeType() == 1) { 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()); + if (x.getDeExtractType() == 0) { + stringBuilder.append("DATE_FORMAT(").append(x.getDataeaseName()).append(",'").append(format).append("') as _").append(x.getDataeaseName()); + } else { + 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()).append(" as _").append(x.getDataeaseName()); } @@ -244,6 +250,81 @@ public class DorisQueryProvider extends QueryProvider { return "SELECT table_name FROM information_schema.TABLES WHERE table_name ='" + table + "'"; } + @Override + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + // 字段汇总 排序等 + String[] field = yAxis.stream().map(y -> { + StringBuilder f = new StringBuilder(); + if (StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*")) { + f.append(y.getSummary()).append("(").append(y.getDataeaseName()).append(")"); + } else { + if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { + f.append("CAST(") + .append(y.getSummary()).append("(") + .append("CAST(").append(y.getDataeaseName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") + .append(") AS DECIMAL(20,2)").append(")"); + } else { + f.append(y.getSummary()).append("(") + .append("CAST(").append(y.getDataeaseName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") + .append(")"); + } + } + f.append(" AS _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()); + return f.toString(); + }).toArray(String[]::new); + + String[] order = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) + .map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getDataeaseName(), "*") ? "" : f.getDataeaseName()) + " " + f.getSort()).toArray(String[]::new); + + String sql = MessageFormat.format("SELECT {0} FROM {1} WHERE 1=1 {2} ORDER BY null,{3}", + StringUtils.join(field, ","), + table, + transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter + StringUtils.join(order, ",")); + if (sql.endsWith(",")) { + sql = sql.substring(0, sql.length() - 1); + } + // 如果是对结果字段过滤,则再包裹一层sql + String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0) + .map(y -> { + String[] s = y.getFilter().stream().map(f -> { + StringBuilder filter = new StringBuilder(); + // 原始类型不是时间,在de中被转成时间的字段做处理 + if (y.getDeType() == 1 && y.getDeExtractType() != 1) { + filter.append(" AND FROM_UNIXTIME(cast(_") + .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()) + .append(" AS decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); + } else { + filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()); + } + filter.append(transMysqlFilterTerm(f.getTerm())); + if (StringUtils.containsIgnoreCase(f.getTerm(), "null")) { + } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { + filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')"); + } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { + filter.append("%").append(f.getValue()).append("%"); + } else { + filter.append("'").append(f.getValue()).append("'"); + } + return filter.toString(); + }).toArray(String[]::new); + return StringUtils.join(s, " "); + }).toArray(String[]::new); + if (resultFilter.length == 0) { + return sql; + } else { + String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1}", + "(" + sql + ") AS tmp", + StringUtils.join(resultFilter, " ")); + return filterSql; + } + } + + @Override + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { + return getSQLSummary(" (" + sql + ") AS tmp ", yAxis, customFilter, extFilterRequestList); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": 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 846e4c7468..44dd2655e4 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java @@ -87,6 +87,8 @@ public class MysqlQueryProvider extends QueryProvider { stringBuilder.append("cast(").append(f.getOriginName()).append(" as decimal(20,0)) as ").append(f.getOriginName()); } else if (f.getDeType() == 3) { stringBuilder.append("cast(").append(f.getOriginName()).append(" as decimal(20,2)) as ").append(f.getOriginName()); + } else if (f.getDeType() == 1) { + stringBuilder.append("DATE_FORMAT(").append(f.getOriginName()).append(",'%Y-%m-%d %H:%i:%S') as _").append(f.getOriginName()); } else { stringBuilder.append(f.getOriginName()); } @@ -155,7 +157,11 @@ public class MysqlQueryProvider extends QueryProvider { } else { if (x.getDeType() == 1) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); - stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getOriginName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as _").append(x.getOriginName()); + if (x.getDeExtractType() == 0) { + stringBuilder.append("DATE_FORMAT(").append(x.getOriginName()).append(",'").append(format).append("') as _").append(x.getOriginName()); + } else { + stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getOriginName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as _").append(x.getOriginName()); + } } else { stringBuilder.append(x.getOriginName()).append(" as _").append(x.getOriginName()); } @@ -251,6 +257,81 @@ public class MysqlQueryProvider extends QueryProvider { return "SELECT table_name FROM information_schema.TABLES WHERE table_name ='" + table + "'"; } + @Override + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + // 字段汇总 排序等 + String[] field = yAxis.stream().map(y -> { + StringBuilder f = new StringBuilder(); + if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) { + f.append(y.getSummary()).append("(").append(y.getOriginName()).append(")"); + } else { + if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { + f.append("CAST(") + .append(y.getSummary()).append("(") + .append("CAST(").append(y.getOriginName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") + .append(") AS DECIMAL(20,2)").append(")"); + } else { + f.append(y.getSummary()).append("(") + .append("CAST(").append(y.getOriginName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") + .append(")"); + } + } + f.append(" AS _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()); + return f.toString(); + }).toArray(String[]::new); + + String[] order = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) + .map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getOriginName(), "*") ? "" : f.getOriginName()) + " " + f.getSort()).toArray(String[]::new); + + String sql = MessageFormat.format("SELECT {0} FROM {1} WHERE 1=1 {2} ORDER BY null,{3}", + StringUtils.join(field, ","), + table, + transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter + StringUtils.join(order, ",")); + if (sql.endsWith(",")) { + sql = sql.substring(0, sql.length() - 1); + } + // 如果是对结果字段过滤,则再包裹一层sql + String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0) + .map(y -> { + String[] s = y.getFilter().stream().map(f -> { + StringBuilder filter = new StringBuilder(); + // 原始类型不是时间,在de中被转成时间的字段做处理 + if (y.getDeType() == 1 && y.getDeExtractType() != 1) { + filter.append(" AND FROM_UNIXTIME(cast(_") + .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()) + .append(" AS decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); + } else { + filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()); + } + filter.append(transMysqlFilterTerm(f.getTerm())); + if (StringUtils.containsIgnoreCase(f.getTerm(), "null")) { + } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { + filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')"); + } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { + filter.append("%").append(f.getValue()).append("%"); + } else { + filter.append("'").append(f.getValue()).append("'"); + } + return filter.toString(); + }).toArray(String[]::new); + return StringUtils.join(s, " "); + }).toArray(String[]::new); + if (resultFilter.length == 0) { + return sql; + } else { + String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1}", + "(" + sql + ") AS tmp", + StringUtils.join(resultFilter, " ")); + return filterSql; + } + } + + @Override + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { + return getSQLSummary(" (" + sqlFix(sql) + ") AS tmp ", yAxis, customFilter, extFilterRequestList); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java index dbfba64d43..f12e1e015c 100644 --- a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java @@ -240,6 +240,16 @@ public class SqlserverQueryProvider extends QueryProvider { return "SELECT table_name FROM information_schema.TABLES WHERE table_name ='" + table + "'"; } + @Override + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + return null; + } + + @Override + public String getSQLSummaryAsTmp(String table, List yAxis, List customFilter, List extFilterRequestList) { + return null; + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": 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 d80de80806..f05d8c6894 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -99,10 +99,18 @@ public class ChartViewService { }.getType()); customFilter.forEach(ele -> ele.setField(dataSetTableFieldsService.get(ele.getFieldId()))); - if (CollectionUtils.isEmpty(xAxis) || CollectionUtils.isEmpty(yAxis)) { - ChartViewDTO dto = new ChartViewDTO(); - BeanUtils.copyBean(dto, view); - return dto; + if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType())) { + if (CollectionUtils.isEmpty(xAxis) && CollectionUtils.isEmpty(yAxis)) { + ChartViewDTO dto = new ChartViewDTO(); + BeanUtils.copyBean(dto, view); + return dto; + } + } else { + if (CollectionUtils.isEmpty(xAxis) || CollectionUtils.isEmpty(yAxis)) { + ChartViewDTO dto = new ChartViewDTO(); + BeanUtils.copyBean(dto, view); + return dto; + } } // 过滤来自仪表板的条件 @@ -142,9 +150,17 @@ public class ChartViewService { QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); if (StringUtils.equalsIgnoreCase(table.getType(), "db")) { datasourceRequest.setTable(dataTableInfoDTO.getTable()); - datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList)); + if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType())) { + datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, customFilter, extFilterList)); + } else { + datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList)); + } } else if (StringUtils.equalsIgnoreCase(table.getType(), "sql")) { - datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList)); + if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType())) { + datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(dataTableInfoDTO.getSql(), yAxis, customFilter, extFilterList)); + } else { + datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList)); + } } data = datasourceProvider.getData(datasourceRequest); } else if (table.getMode() == 1) {// 抽取 @@ -156,7 +172,11 @@ public class ChartViewService { String tableName = "ds_" + table.getId().replaceAll("-", "_"); datasourceRequest.setTable(tableName); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, customFilter, extFilterList)); + if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType())) { + datasourceRequest.setQuery(qp.getSQLSummary(tableName, yAxis, customFilter, extFilterList)); + } else { + datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, customFilter, extFilterList)); + } data = datasourceProvider.getData(datasourceRequest); } @@ -192,7 +212,9 @@ public class ChartViewService { // table组件 List fields = new ArrayList<>(); List> tableRow = new ArrayList<>(); - fields.addAll(xAxis); + if (ObjectUtils.isNotEmpty(xAxis)) { + fields.addAll(xAxis); + } fields.addAll(yAxis); data.forEach(ele -> { Map d = new HashMap<>(); 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 a2507458bf..a802d81b00 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -192,9 +192,9 @@ public class ExtractDataService { createDorisTable(DorisTableUtils.dorisTmpName(DorisTableUtils.dorisName(datasetTableId)), dorisTablColumnSql); generateTransFile("all_scope", datasetTable, datasource, datasetTableFields, null); if(datasetTable.getType().equalsIgnoreCase("sql")){ - generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()))); - }else { generateJobFile("all_scope", datasetTable, fetchSqlField(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasource)); + }else { + generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()))); } extractData(datasetTable, "all_scope"); replaceTable(DorisTableUtils.dorisName(datasetTableId)); diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 8d8a71c80e..1c70f08f19 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -677,15 +677,15 @@ export default { end_angle: 'End Angle', style_priority: 'Style Priority', dashboard: 'Dashboard', - dimension_color: 'Dimension Color', - quota_color: 'Quota Color', - dimension_font_size: 'Dimension FontSize', - quota_font_size: 'Quota FontSize', - space_split: 'Dimension/Quota Space', + dimension_color: 'Name Color', + quota_color: 'Value Color', + dimension_font_size: 'Name FontSize', + quota_font_size: 'Value FontSize', + space_split: 'Name/Value Space', only_one_quota: 'Only support 1 quota', only_one_result: 'Only show first result', - dimension_show: 'Dimension Show', - quota_show: 'Quota Show', + dimension_show: 'Name Show', + quota_show: 'Value Show', title_limit: 'Title cannot be greater than 50 characters', filter_condition: 'Filter Condition', filter_field_can_null: 'Filter field must choose', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 0295f1db6d..989e5bc3bb 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -677,15 +677,15 @@ export default { end_angle: '結束角度', style_priority: '樣式優先級', dashboard: '儀表板', - dimension_color: '維度顏色', - quota_color: '指標顏色', - dimension_font_size: '維度字體大小', - quota_font_size: '指標字體大小', - space_split: '維度/指標間隔', + dimension_color: '名稱顏色', + quota_color: '值顏色', + dimension_font_size: '名稱字體大小', + quota_font_size: '值字體大小', + space_split: '名稱/值間隔', only_one_quota: '僅支持1個指標', only_one_result: '僅顯示第1個計算結果', - dimension_show: '維度顯示', - quota_show: '指標顯示', + dimension_show: '名稱顯示', + quota_show: '值顯示', title_limit: '標題不能大於50個字符', filter_condition: '過濾條件', filter_field_can_null: '過濾字段必填', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index b503bc73a1..609e5e3edd 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -677,15 +677,15 @@ export default { end_angle: '结束角度', style_priority: '样式优先级', dashboard: '仪表板', - dimension_color: '维度颜色', - quota_color: '指标颜色', - dimension_font_size: '维度字体大小', - quota_font_size: '指标字体大小', - space_split: '维度/指标间隔', + dimension_color: '名称颜色', + quota_color: '值颜色', + dimension_font_size: '名称字体大小', + quota_font_size: '值字体大小', + space_split: '名称/值间隔', only_one_quota: '仅支持1个指标', only_one_result: '仅显示第1个计算结果', - dimension_show: '维度显示', - quota_show: '指标显示', + dimension_show: '名称显示', + quota_show: '值显示', title_limit: '标题不能大于50个字符', filter_condition: '过滤条件', filter_field_can_null: '过滤字段必填', diff --git a/frontend/src/views/chart/chart/gauge/gauge.js b/frontend/src/views/chart/chart/gauge/gauge.js index 325288ec1e..616d0b8561 100644 --- a/frontend/src/views/chart/chart/gauge/gauge.js +++ b/frontend/src/views/chart/chart/gauge/gauge.js @@ -44,7 +44,8 @@ export function baseGaugeOption(chart_option, chart) { } // data只取第一个 const y = { - name: chart.data.x[0], + // name: chart.data.x[0], + name: chart.data.series[0].name, value: chart.data.series[0].data[0] } chart_option.series[0].data.push(y) diff --git a/frontend/src/views/chart/components/drag-item/QuotaItem.vue b/frontend/src/views/chart/components/drag-item/QuotaItem.vue index df81d00a2d..d748213e11 100644 --- a/frontend/src/views/chart/components/drag-item/QuotaItem.vue +++ b/frontend/src/views/chart/components/drag-item/QuotaItem.vue @@ -29,21 +29,22 @@ - - - - - - {{ $t('chart.quick_calc') }} - (无) - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/frontend/src/views/chart/components/normal/LabelNormal.vue b/frontend/src/views/chart/components/normal/LabelNormal.vue index d18390a8e2..e859786e02 100644 --- a/frontend/src/views/chart/components/normal/LabelNormal.vue +++ b/frontend/src/views/chart/components/normal/LabelNormal.vue @@ -7,7 +7,8 @@ :style="content_class" >

- {{ chart.data.x[0] }} + + {{ chart.data.series[0].name }}

diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index dc04eaf7fa..c920d9fd63 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -178,15 +178,15 @@ - + Tips: {{ $t('chart.only_one_quota') }} - - Tips: {{ $t('chart.only_one_result') }} - - - Tips: {{ $t('chart.only_one_quota') }},{{ $t('chart.only_one_result') }} - + + + + + + @@ -226,8 +226,8 @@ - - + + {{ $t('chart.dimension') }} 1) { view.yaxis.splice(1, view.yaxis.length) } } + if (view.type.startsWith('text') || view.type.startsWith('gauge')) { + view.xaxis = [] + } if (view.type === 'line' && trigger === 'chart') { view.customAttr.size.lineArea = false } diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue index a5c4664a67..2daea9bb59 100644 --- a/frontend/src/views/system/user/index.vue +++ b/frontend/src/views/system/user/index.vue @@ -46,7 +46,7 @@