From c00c2b49c9014e28ffaa7b41edd466c2a79e394b Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 20 Dec 2023 14:10:46 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE-=E8=A1=A8=E6=A0=BC):?= =?UTF-8?q?=20=E9=9A=90=E8=97=8F=E8=A1=A8=E5=A4=B4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/views/chart/chart/table/table-info.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 6eb79e7502..61013bfbbd 100644 --- a/core/frontend/src/views/chart/chart/table/table-info.js +++ b/core/frontend/src/views/chart/chart/table/table-info.js @@ -98,10 +98,9 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo) 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 } } } @@ -120,6 +119,11 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo) colCellVertical: false } } + s2Options.colCell = (node) => { + if (node.colIndex === 0) { + node.label = ' ' + } + } } // 开始渲染 From a910263ee803126d79c29fc324e38c2e6dd9103d Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 20 Dec 2023 14:11:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE-=E5=88=86=E7=BB=84?= =?UTF-8?q?=E5=A0=86=E5=8F=A0=E6=9F=B1=E7=8A=B6=E5=9B=BE):=20=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=98=BE=E7=A4=BA=E5=88=86=E7=BB=84=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/frontend/src/views/chart/chart/common/common_antv.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/frontend/src/views/chart/chart/common/common_antv.js b/core/frontend/src/views/chart/chart/common/common_antv.js index 44bf308322..b112f96a25 100644 --- a/core/frontend/src/views/chart/chart/common/common_antv.js +++ b/core/frontend/src/views/chart/chart/common/common_antv.js @@ -344,6 +344,9 @@ export function getTooltip(chart) { // tooltip value formatter if (chart.type && chart.type !== 'waterfall') { + if (chart.type === 'bar-group-stack') { + tooltip.fields = [] + } tooltip.formatter = function(param) { let res = param.value @@ -455,7 +458,7 @@ export function getTooltip(chart) { } else { let name = '' if (param.group) { - name = param.name + '-' + name = param.group + '-' } if (param.category) { name += param.category From f2d6b4528474af1f76fa144d76491dcde67147b1 Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 20 Dec 2023 14:16:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=20=E5=AD=90?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E3=80=82#5977?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/ChartViewService.java | 65 ++++++++++----- .../components/dragItem/ChartDragItem.vue | 7 +- .../components/dragItem/DimensionExtItem.vue | 25 +++++- .../components/dragItem/DimensionItem.vue | 14 +++- .../src/views/chart/view/ChartEdit.vue | 80 +++---------------- 5 files changed, 99 insertions(+), 92 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 2e9d20e30c..e7cc7cd09d 100644 --- a/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -58,6 +58,7 @@ import io.dataease.service.datasource.DatasourceService; import io.dataease.service.engine.EngineService; import io.dataease.service.panel.PanelGroupExtendDataService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.pentaho.di.core.util.UUIDUtil; @@ -343,7 +344,9 @@ public class ChartViewService { } List xAxis = gson.fromJson(view.getXAxis(), new TypeToken>() { }.getType()); - if (StringUtils.equalsIgnoreCase(view.getType(), "table-pivot")) { + if (StringUtils.equalsIgnoreCase(view.getType(), "table-pivot") + || StringUtils.containsIgnoreCase(view.getType(), "group") + || ("antv".equalsIgnoreCase(view.getRender()) && "line".equalsIgnoreCase(view.getType()))) { List xAxisExt = gson.fromJson(view.getXAxisExt(), new TypeToken>() { }.getType()); xAxis.addAll(xAxisExt); @@ -384,10 +387,10 @@ public class ChartViewService { //将没有权限的列删掉 List dataeaseNames = columnPermissionFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()); dataeaseNames.add("*"); - fieldCustomFilter = fieldCustomFilter.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - extStack = extStack.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - extBubble = extBubble.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - drill = drill.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + fieldCustomFilter = fieldCustomFilter.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + extStack = extStack.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + extBubble = extBubble.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + drill = drill.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); //行权限 @@ -403,7 +406,7 @@ public class ChartViewService { switch (view.getType()) { case "label": - xAxis = xAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + xAxis = xAxis.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); yAxis = new ArrayList<>(); if (CollectionUtils.isEmpty(xAxis)) { return new ArrayList(); @@ -413,7 +416,7 @@ public class ChartViewService { case "gauge": case "liquid": xAxis = new ArrayList<>(); - yAxis = yAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + yAxis = yAxis.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); if (CollectionUtils.isEmpty(yAxis)) { return new ArrayList(); } @@ -430,8 +433,8 @@ public class ChartViewService { yAxis = yAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); break; default: - xAxis = xAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - yAxis = yAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + xAxis = xAxis.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); + yAxis = yAxis.stream().filter(item -> !desensitizationList.containsKey(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); } List extFilterList = new ArrayList<>(); @@ -1870,17 +1873,29 @@ public class ChartViewService { ChartViewDTO view = getOne(id, requestList.getQueryFrom()); List sqlData = sqlData(view, requestList, cache, fieldId); List fieldList = new ArrayList<>(); - if (StringUtils.equalsIgnoreCase(fieldType, "xAxis")) { - fieldList = gson.fromJson(view.getXAxis(), new TypeToken>() { - }.getType()); - } else if (StringUtils.equalsIgnoreCase(fieldType, "extStack")) { - fieldList = gson.fromJson(view.getExtStack(), new TypeToken>() { - }.getType()); + switch (fieldType) { + case "xaxis": { + fieldList = gson.fromJson(view.getXAxis(), new TypeToken>() { + }.getType()); + break; + } + case "extStack": { + fieldList = gson.fromJson(view.getExtStack(), new TypeToken>() { + }.getType()); + break; + } + case "xaxisExt": { + fieldList = gson.fromJson(view.getXAxisExt(), new TypeToken>() { + }.getType()); + break; + } + default: + return Collections.emptyList(); } DatasetTableField field = dataSetTableFieldsService.get(fieldId); List res = new ArrayList<>(); - if (ObjectUtils.isNotEmpty(field) && fieldList.size() > 0) { + if (ObjectUtils.isNotEmpty(field) && !fieldList.isEmpty()) { // 找到对应维度 ChartViewFieldDTO chartViewFieldDTO = null; int index = 0; @@ -1904,10 +1919,22 @@ public class ChartViewService { } } if (StringUtils.equalsIgnoreCase(fieldType, "extStack") && !skipAddIndex) { - List stack = gson.fromJson(view.getXAxis(), new TypeToken>() { + List xaxis = gson.fromJson(view.getXAxis(), new TypeToken>() { }.getType()); - index += stack.size(); - getIndex += stack.size(); + index += xaxis.size(); + getIndex += xaxis.size(); + if (StringUtils.containsIgnoreCase(view.getType(), "group")) { + List ext = gson.fromJson(view.getXAxisExt(), new TypeToken>() { + }.getType()); + index += ext.size(); + getIndex += ext.size(); + } + } + if (StringUtils.equalsIgnoreCase(fieldType, "xaxisExt") && !skipAddIndex) { + List xaxis = gson.fromJson(view.getXAxis(), new TypeToken>() { + }.getType()); + index += xaxis.size(); + getIndex += xaxis.size(); } List sortResult = resultCustomSort(fieldList, sqlData); if (ObjectUtils.isNotEmpty(chartViewFieldDTO) && (getIndex >= index)) { diff --git a/core/frontend/src/views/chart/components/dragItem/ChartDragItem.vue b/core/frontend/src/views/chart/components/dragItem/ChartDragItem.vue index 24a877469b..ca207cd62a 100644 --- a/core/frontend/src/views/chart/components/dragItem/ChartDragItem.vue +++ b/core/frontend/src/views/chart/components/dragItem/ChartDragItem.vue @@ -195,7 +195,7 @@ {{ $t('chart.asc') }} {{ $t('chart.desc') }} {{ $t('chart.custom_sort') }}... @@ -228,6 +228,7 @@ import { getItemType, getOriginFieldName } from '@/views/chart/components/dragItem/utils' import FieldErrorTips from '@/views/chart/components/dragItem/components/FieldErrorTips' import bus from '@/utils/bus' +import { equalsAny } from '@/utils/StringUtils' export default { name: 'ChartDragItem', @@ -273,6 +274,10 @@ export default { this.chart.datasourceType === 'ds_doris' || this.chart.datasourceType === 'StarRocks' || this.chart.datasetMode === 1 + }, + showCustomSort() { + return !equalsAny(this.chart.type, 'scatter') && + !this.item.chartId } }, watch: { diff --git a/core/frontend/src/views/chart/components/dragItem/DimensionExtItem.vue b/core/frontend/src/views/chart/components/dragItem/DimensionExtItem.vue index 5cd9903258..2f79ebbd9b 100644 --- a/core/frontend/src/views/chart/components/dragItem/DimensionExtItem.vue +++ b/core/frontend/src/views/chart/components/dragItem/DimensionExtItem.vue @@ -84,6 +84,12 @@ {{ $t('chart.none') }} {{ $t('chart.asc') }} {{ $t('chart.desc') }} + + {{ $t('chart.custom_sort') }}... + @@ -181,6 +187,7 @@ import { getItemType, getOriginFieldName } from '@/views/chart/components/dragItem/utils' import FieldErrorTips from '@/views/chart/components/dragItem/components/FieldErrorTips' import bus from '@/utils/bus' +import { equalsAny } from '@/utils/StringUtils' export default { name: 'DimensionExtItem', @@ -220,6 +227,10 @@ export default { computed: { hideSpecial() { return this.chart.type === 'bar-time-range' + }, + showCustomSort() { + return !equalsAny(this.chart.type, 'bar-time-range', 'scatter') && + !this.item.chartId } }, watch: { @@ -265,8 +276,18 @@ export default { } }, sort(param) { - this.item.sort = param.type - this.$emit('onDimensionItemChange', this.item) + if (param.type === 'custom_sort') { + const item = { + index: this.index, + sort: param.type + } + this.$emit('onItemCustomSort', item) + } else { + this.item.index = this.index + this.item.sort = param.type + this.item.customSort = [] + this.$emit('onDimensionItemChange', this.item) + } }, beforeSort(type) { return { diff --git a/core/frontend/src/views/chart/components/dragItem/DimensionItem.vue b/core/frontend/src/views/chart/components/dragItem/DimensionItem.vue index b0fbd2aebd..85219b95fe 100644 --- a/core/frontend/src/views/chart/components/dragItem/DimensionItem.vue +++ b/core/frontend/src/views/chart/components/dragItem/DimensionItem.vue @@ -90,9 +90,11 @@ {{ $t('chart.asc') }} {{ $t('chart.desc') }} {{ $t('chart.custom_sort') }}... + > + {{ $t('chart.custom_sort') }}... + @@ -191,6 +193,7 @@ import { getItemType, getOriginFieldName } from '@/views/chart/components/dragIt import FieldErrorTips from '@/views/chart/components/dragItem/components/FieldErrorTips' import bus from '@/utils/bus' import { formatterItem } from '@/views/chart/chart/formatter' +import { equalsAny } from '@/utils/StringUtils' export default { name: 'DimensionItem', @@ -228,6 +231,13 @@ export default { showDateExt: false } }, + computed: { + showCustomSort() { + return !equalsAny(this.chart.type, 'scatter') && + !this.item.chartId && + (this.item.deType === 0 || this.item.deType === 5) + } + }, watch: { dimensionData: function() { this.getItemTagType() diff --git a/core/frontend/src/views/chart/view/ChartEdit.vue b/core/frontend/src/views/chart/view/ChartEdit.vue index 8e219fff94..010f8bdb81 100644 --- a/core/frontend/src/views/chart/view/ChartEdit.vue +++ b/core/frontend/src/views/chart/view/ChartEdit.vue @@ -568,6 +568,7 @@ :chart="chart" @onDimensionItemChange="dimensionItemChange" @onDimensionItemRemove="dimensionItemRemove" + @onItemCustomSort="item => onCustomSort(item, 'xaxisExt')" @editItemFilter="showDimensionEditFilter" @onNameEdit="showRename" /> @@ -670,7 +671,7 @@ @editItemFilter="showDimensionEditFilter" @onNameEdit="showRename" @valueFormatter="valueFormatter" - @onCustomSort="onCustomSort" + @onCustomSort="item => onCustomSort(item, 'xaxis')" /> @@ -748,6 +749,7 @@ :chart="chart" @onDimensionItemChange="dimensionExtItemChange" @onDimensionItemRemove="dimensionItemRemove" + @onItemCustomSort="item => onCustomSort(item, 'xaxisExt')" @editItemFilter="showDimensionEditFilter" @onNameEdit="showRename" /> @@ -947,7 +949,7 @@ :quota-data="quota" @onItemChange="stackItemChange" @onItemRemove="stackItemRemove" - @onItemCustomSort="stackItemCustomSort" + @onItemCustomSort="item => onCustomSort(item, 'extStack')" @onNameEdit="showRename" /> @@ -1760,7 +1762,7 @@ > @@ -1782,40 +1784,6 @@ - - - - - - { + this.view[this.customSortFieldType].forEach(ele => { if (ele.id === this.customSortField.id) { ele.sort = 'custom_sort' ele.customSort = this.customSortList @@ -3699,24 +3661,6 @@ export default { this.closeCustomSort() this.calcData(true) }, - - stackCustomSort() { - this.showStackCustomSort = true - }, - closeStackCustomSort() { - this.showStackCustomSort = false - }, - saveStackCustomSort() { - this.view.extStack.forEach(ele => { - if (ele.id === this.customSortField.id) { - ele.sort = 'custom_sort' - ele.customSort = this.customSortList - } - }) - this.closeStackCustomSort() - this.calcData(true) - }, - fieldEdit(param) { switch (param.type) { case 'ds':