diff --git a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index 1c313a574c..d60b2b339e 100644 --- a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -781,11 +781,38 @@ public class DorisQueryProvider extends QueryProvider { List yFields = new ArrayList<>(); // 要把两个时间字段放进y里面 List yWheres = new ArrayList<>(); + List yOrders = new ArrayList<>(); if (CollectionUtils.isNotEmpty(xAxis)) { for (int i = 0; i < xAxis.size(); i++) { ChartViewFieldDTO x = xAxis.get(i); String originField; + + if (StringUtils.equalsIgnoreCase(x.getGroupType(), "q")) { + if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) { + // 解析origin name中有关联的字段生成sql表达式 + originField = calcFieldRegex(x.getOriginName(), tableObj); + } else if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 1) { + originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getDataeaseName()); + } else { + originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getDataeaseName()); + } + String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); + // 处理纵轴字段 + yFields.add(getYFields(x, originField, fieldAlias)); + // 处理纵轴过滤 + yWheres.add(getYWheres(x, originField, fieldAlias)); + // 处理纵轴排序 + if (StringUtils.isNotEmpty(x.getSort()) && Utils.joinSort(x.getSort())) { + yOrders.add(SQLObj.builder() + .orderField(originField) + .orderAlias(fieldAlias) + .orderDirection(x.getSort()) + .build()); + } + continue; + } + if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) { // 解析origin name中有关联的字段生成sql表达式 originField = calcFieldRegex(x.getOriginName(), tableObj); @@ -824,8 +851,6 @@ public class DorisQueryProvider extends QueryProvider { } } - List yOrders = new ArrayList<>(); - // 处理视图中字段过滤 String customWheres = transChartFilterTrees(tableObj, fieldCustomFilter); // 处理仪表板字段过滤 diff --git a/core/frontend/src/lang/en.js b/core/frontend/src/lang/en.js index aad6c1a058..e39f519e66 100644 --- a/core/frontend/src/lang/en.js +++ b/core/frontend/src/lang/en.js @@ -1386,9 +1386,9 @@ export default { filter_value_can_not_str: 'Value type can not input string', enum_value_can_not_null: 'Enum Value can not empty.', column: 'Column', + table_freeze: 'Table Freeze', table_config: 'Table Config', table_column_width_config: 'Column Width', - table_column_freeze: 'Column Freeze', table_column_adapt: 'Adapt', table_column_custom: 'Custom', chart_table_pivot: 'Pivot Table', diff --git a/core/frontend/src/lang/tw.js b/core/frontend/src/lang/tw.js index 9d8b378867..25111c4c8e 100644 --- a/core/frontend/src/lang/tw.js +++ b/core/frontend/src/lang/tw.js @@ -1386,7 +1386,7 @@ export default { column: '列', table_config: '表格配置', table_column_width_config: '列寬調整', - table_column_freeze: '列凍結', + table_freeze: '表格凍結', table_column_adapt: '自適應', table_column_custom: '自定義', chart_table_pivot: '透視表', @@ -1522,7 +1522,7 @@ export default { ignore_data: '隱藏空值', empty_data_field_ctrl: '字段設置', sub_dimension_tip: '該字段為必填項,且不應使用類別軸中的字段,若無需該字段,請選擇基礎圖表進行展示,否則展示效果不理想', - time_bar_tip: '該字段為必填項,且需要兩個指標或者時間類型緯度字段', + time_bar_tip: '該字段為必填項,且需要兩個指標或者時間類型維度字段', drill_dimension_tip: '鑽取字段僅支持數據集中的字段', table_scroll_tip: '明細表僅在分頁模式為"下拉"時生效。', table_threshold_tip: '提示:請勿重複選擇字段,若同一字段重複配置,則只有最後的字段配置生效。', diff --git a/core/frontend/src/lang/zh.js b/core/frontend/src/lang/zh.js index ec19a423dd..de6840c424 100644 --- a/core/frontend/src/lang/zh.js +++ b/core/frontend/src/lang/zh.js @@ -1384,9 +1384,9 @@ export default { filter_value_can_not_str: '数值类型字段过滤值不能包含文本', enum_value_can_not_null: '字段枚举值不能为空', column: '列', + table_freeze: '表格冻结', table_config: '表格配置', table_column_width_config: '列宽调整', - table_column_freeze: '列冻结', table_column_adapt: '自适应', table_column_custom: '自定义', chart_table_pivot: '透视表', @@ -1522,7 +1522,7 @@ export default { set_zero: '置为0', ignore_data: '隐藏空值', sub_dimension_tip: '该字段为必填项,且不应使用类别轴中的字段,若无需该字段,请选择基础图表进行展示,否则展示效果不理想。', - time_bar_tip: '该字段为必填项,且需要两个指标或者时间类型纬度字段', + time_bar_tip: '该字段为必填项,且需要两个指标或者时间类型维度字段', drill_dimension_tip: '钻取字段仅支持数据集中的字段', table_scroll_tip: '明细表仅在分页模式为"下拉"时生效。', table_threshold_tip: '提示:请勿重复选择字段,若同一字段重复配置,则只有最后的字段配置生效', diff --git a/core/frontend/src/views/chart/chart/chart.js b/core/frontend/src/views/chart/chart/chart.js index c24042c61c..9879226866 100644 --- a/core/frontend/src/views/chart/chart/chart.js +++ b/core/frontend/src/views/chart/chart/chart.js @@ -172,7 +172,8 @@ export const DEFAULT_SIZE = { quotaSuffixLetterSpace: '0', quotaSuffixFontShadow: false, tableColumnFreezeHead: 0, - tableColumnFreezeTail: 0 + tableColumnFreezeTail: 0, + tableRowFreezeHead: 0 } export const DEFAULT_SUSPENSION = { show: true diff --git a/core/frontend/src/views/chart/chart/table/table-info.js b/core/frontend/src/views/chart/chart/table/table-info.js index 61013bfbbd..960e8c9aff 100644 --- a/core/frontend/src/views/chart/chart/table/table-info.js +++ b/core/frontend/src/views/chart/chart/table/table-info.js @@ -92,7 +92,8 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo) showSeriesNumber: customAttr.size.showIndex, style: getSize(chart), conditions: getConditions(chart), - frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0 + frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0, + frozenRowCount: customAttr.size.tableRowFreezeHead ?? 0 } // 开启序号之后,第一列就是序号列,修改 label 即可 if (s2Options.showSeriesNumber) { @@ -285,16 +286,16 @@ export function baseTableNormal(s2, container, chart, action, tableData) { showSeriesNumber: customAttr.size.showIndex, style: getSize(chart), conditions: getConditions(chart), - frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0 + frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0, + frozenRowCount: customAttr.size.tableRowFreezeHead ?? 0 } // 开启序号之后,第一列就是序号列,修改 label 即可 if (s2Options.showSeriesNumber) { s2Options.colCell = (node) => { if (node.colIndex === 0) { - if (!customAttr.size.indexLabel) { + node.label = customAttr.size.indexLabel + if (!customAttr.size.indexLabel || customAttr.size.showTableHeader === false) { node.label = ' ' - } else { - node.label = customAttr.size.indexLabel } } } @@ -310,6 +311,11 @@ export function baseTableNormal(s2, container, chart, action, tableData) { colCellVertical: false } } + s2Options.colCell = (node) => { + if (node.colIndex === 0) { + node.label = ' ' + } + } } // 开始渲染 diff --git a/core/frontend/src/views/chart/chart/util.js b/core/frontend/src/views/chart/chart/util.js index 141fd9f8e0..7f3192abe8 100644 --- a/core/frontend/src/views/chart/chart/util.js +++ b/core/frontend/src/views/chart/chart/util.js @@ -63,7 +63,7 @@ export const TYPE_CONFIGS = [ 'tableTitleHeight', 'tableItemHeight', 'tableColumnMode', - 'tableColumnFreeze', + 'tableFreeze', 'showIndex', 'indexLabel', 'tableColTooltip', @@ -121,7 +121,7 @@ export const TYPE_CONFIGS = [ 'indexLabel', 'tableColTooltip', 'showTableHeader', - 'tableColumnFreeze' + 'tableFreeze' ], 'title-selector-ant-v': [ 'show', @@ -2083,7 +2083,7 @@ export const TYPE_CONFIGS = [ 'tableTitleHeight', 'tableItemHeight', 'tableColumnWidth', - 'tableColumnFreeze', + 'tableFreeze', 'showIndex', 'indexLabel', 'tableAutoBreakLine', @@ -2133,7 +2133,7 @@ export const TYPE_CONFIGS = [ 'tableColumnWidth', 'showIndex', 'indexLabel', - 'tableColumnFreeze', + 'tableFreeze', 'tableAutoBreakLine', 'showTableHeader' ], diff --git a/core/frontend/src/views/chart/components/componentStyle/XAxisSelectorAntV.vue b/core/frontend/src/views/chart/components/componentStyle/XAxisSelectorAntV.vue index 11c66de5ce..41d53a42d5 100644 --- a/core/frontend/src/views/chart/components/componentStyle/XAxisSelectorAntV.vue +++ b/core/frontend/src/views/chart/components/componentStyle/XAxisSelectorAntV.vue @@ -456,6 +456,9 @@ export default { if (!this.axisForm.axisLine) { this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.axisLine)) } + if (this.axisForm.splitLine.enableDash === undefined) { + this.axisForm.splitLine.enableDash = DEFAULT_XAXIS_STYLE.splitLine.enableDash + } if (!this.axisForm.splitLine.dashStyle) { this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine.dashStyle)) } diff --git a/core/frontend/src/views/chart/components/componentStyle/YAxisExtSelectorAntV.vue b/core/frontend/src/views/chart/components/componentStyle/YAxisExtSelectorAntV.vue index 0453818458..ac40b7cddb 100644 --- a/core/frontend/src/views/chart/components/componentStyle/YAxisExtSelectorAntV.vue +++ b/core/frontend/src/views/chart/components/componentStyle/YAxisExtSelectorAntV.vue @@ -447,6 +447,9 @@ export default { if (!this.axisForm.axisLine) { this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.axisLine)) } + if (this.axisForm.splitLine.enableDash === undefined) { + this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_EXT_STYLE.splitLine.enableDash + } if (!this.axisForm.splitLine.dashStyle) { this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.splitLine.dashStyle)) } diff --git a/core/frontend/src/views/chart/components/componentStyle/YAxisSelectorAntV.vue b/core/frontend/src/views/chart/components/componentStyle/YAxisSelectorAntV.vue index 4bbcbe7199..3d5729df00 100644 --- a/core/frontend/src/views/chart/components/componentStyle/YAxisSelectorAntV.vue +++ b/core/frontend/src/views/chart/components/componentStyle/YAxisSelectorAntV.vue @@ -451,6 +451,9 @@ export default { if (!this.axisForm.axisLine) { this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.axisLine)) } + if (this.axisForm.splitLine.enableDash === undefined) { + this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_STYLE.splitLine.enableDash + } if (!this.axisForm.splitLine.dashStyle) { this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine.dashStyle)) } diff --git a/core/frontend/src/views/chart/components/shapeAttr/SizeSelector.vue b/core/frontend/src/views/chart/components/shapeAttr/SizeSelector.vue index 7103c7e35b..d5e3742bda 100644 --- a/core/frontend/src/views/chart/components/shapeAttr/SizeSelector.vue +++ b/core/frontend/src/views/chart/components/shapeAttr/SizeSelector.vue @@ -330,8 +330,8 @@ /> {{ $t('dynamic_time.before') }} diff --git a/core/frontend/src/views/chart/components/shapeAttr/SizeSelectorAntV.vue b/core/frontend/src/views/chart/components/shapeAttr/SizeSelectorAntV.vue index 2d3a7bf20e..80a69c8ae9 100644 --- a/core/frontend/src/views/chart/components/shapeAttr/SizeSelectorAntV.vue +++ b/core/frontend/src/views/chart/components/shapeAttr/SizeSelectorAntV.vue @@ -296,8 +296,8 @@ /> {{ $t('dynamic_time.before') }} @@ -309,6 +309,16 @@ @change="changeBarSizeCase('tableColumnFreezeHead')" /> {{ $t('chart.column') }} +
+ {{ $t('dynamic_time.before') }} + + {{ $t('deDataset.row') }} { - for (let i = 0; i < table.length; i++) { - const s_table = table[i].getElementsByClassName('elx-table--footer') - let s = '' - for (const i in this.table_header_class) { - s += (i === 'fontSize' ? 'font-size' : i) + ':' + this.table_header_class[i] + ';' - } - for (let i = 0; i < s_table.length; i++) { - s_table[i].setAttribute('style', s) - } - } - }) }, getRowStyle({ row, rowIndex }) { if (rowIndex % 2 !== 0) { @@ -828,6 +816,12 @@ export default { text-overflow: var(--text-overflow, 'ellipsis'); white-space: var(--white-space, 'nowrap'); } + ::v-deep .elx-table--footer { + color: var(--footer-font-color); + background: var(--footer-bg-color); + font-size: var(--footer-font-size); + height: var(--footer-height); + } } diff --git a/extensions/dataease-extensions-view/view-3dpie/view-3dpie-frontend/src/views/highcharts/3dpie/data.vue b/extensions/dataease-extensions-view/view-3dpie/view-3dpie-frontend/src/views/highcharts/3dpie/data.vue index cbeeb01e47..bb5254c686 100644 --- a/extensions/dataease-extensions-view/view-3dpie/view-3dpie-frontend/src/views/highcharts/3dpie/data.vue +++ b/extensions/dataease-extensions-view/view-3dpie/view-3dpie-frontend/src/views/highcharts/3dpie/data.vue @@ -71,6 +71,7 @@ + test {{ $t('chart.result_filter') }}