forked from github/dataease
Merge pull request #11748 from ulleo/dev-v2
fix(图表): 修复堆叠柱线组合图下钻后,横轴发生错位问题
This commit is contained in:
commit
7f70e2895e
@ -57,8 +57,11 @@ public class StackMixHandler extends MixHandler {
|
|||||||
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
||||||
if (CollectionUtils.isNotEmpty(extStack)) {
|
if (CollectionUtils.isNotEmpty(extStack)) {
|
||||||
// 堆叠左轴
|
// 堆叠左轴
|
||||||
var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
|
||||||
return ChartDataBuild.transMixChartStackDataAntV(xAxisBase, xAxisBase, extStack, yAxis, view, data, isDrill);
|
var drillAxis = xAxis.stream().filter(axis -> FieldSource.DRILL == axis.getSource()).toList();
|
||||||
|
var xAxisBase = xAxis.subList(0, xAxis.size() - extStack.size() - drillAxis.size());
|
||||||
|
//var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
||||||
|
return ChartDataBuild.transMixChartStackDataAntV(xAxisBase, xAxis, extStack, yAxis, view, data, isDrill);
|
||||||
} else {
|
} else {
|
||||||
//无堆叠左轴和右轴还是走原逻辑
|
//无堆叠左轴和右轴还是走原逻辑
|
||||||
var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
||||||
|
@ -609,28 +609,22 @@ public class ChartDataBuild {
|
|||||||
for (int i1 = 0; i1 < data.size(); i1++) {
|
for (int i1 = 0; i1 < data.size(); i1++) {
|
||||||
String[] row = data.get(i1);
|
String[] row = data.get(i1);
|
||||||
|
|
||||||
|
AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO();
|
||||||
StringBuilder a = new StringBuilder();
|
StringBuilder a = new StringBuilder();
|
||||||
if (isDrill) {
|
if (isDrill) {
|
||||||
a.append(row[xAxis.size() - 1]);
|
a.append(row[xAxis.size() - 1]);
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < xAxis.size(); i++) {
|
for (int i = 0; i < xAxisBase.size(); i++) {
|
||||||
if (i == xAxis.size() - 1) {
|
if (i == xAxisBase.size() - 1) {
|
||||||
a.append(row[i]);
|
a.append(row[i]);
|
||||||
} else {
|
} else {
|
||||||
a.append(row[i]).append("\n");
|
a.append(row[i]).append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// yAxis最后的数据对应extLabel和extTooltip,将他们从yAxis中去掉,同时转换成动态值
|
|
||||||
int size = xAxis.size() + extStack.size() + yAxis.size();
|
|
||||||
int extSize = view.getExtLabel().size() + view.getExtTooltip().size();
|
|
||||||
|
|
||||||
int i = xAxis.size();
|
|
||||||
AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO();
|
|
||||||
axisChartDataDTO.setField(a.toString());
|
axisChartDataDTO.setField(a.toString());
|
||||||
axisChartDataDTO.setName(a.toString());
|
axisChartDataDTO.setName(a.toString());
|
||||||
String category = row[xAxis.size()];
|
String category = row[xAxisBase.size()];
|
||||||
axisChartDataDTO.setCategory(category);
|
axisChartDataDTO.setCategory(category);
|
||||||
if (category != null) {
|
if (category != null) {
|
||||||
categories.add(category);
|
categories.add(category);
|
||||||
@ -645,17 +639,12 @@ public class ChartDataBuild {
|
|||||||
chartDimensionDTO.setValue(row[k]);
|
chartDimensionDTO.setValue(row[k]);
|
||||||
dimensionList.add(chartDimensionDTO);
|
dimensionList.add(chartDimensionDTO);
|
||||||
}
|
}
|
||||||
ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO();
|
|
||||||
chartDimensionDTO.setId(extStack.get(0).getId());
|
|
||||||
chartDimensionDTO.setValue(row[xAxis.size()]);
|
|
||||||
dimensionList.add(chartDimensionDTO);
|
|
||||||
axisChartDataDTO.setDimensionList(dimensionList);
|
axisChartDataDTO.setDimensionList(dimensionList);
|
||||||
|
|
||||||
int j = i - xAxis.size();
|
|
||||||
int valueIndex = xAxis.size() + extStack.size();
|
|
||||||
if (ObjectUtils.isNotEmpty(yAxis)) {
|
if (ObjectUtils.isNotEmpty(yAxis)) {
|
||||||
|
int valueIndex = xAxis.size();
|
||||||
ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO();
|
ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO();
|
||||||
chartQuotaDTO.setId(yAxis.get(j).getId());
|
chartQuotaDTO.setId(yAxis.get(0).getId());
|
||||||
quotaList.add(chartQuotaDTO);
|
quotaList.add(chartQuotaDTO);
|
||||||
axisChartDataDTO.setQuotaList(quotaList);
|
axisChartDataDTO.setQuotaList(quotaList);
|
||||||
try {
|
try {
|
||||||
@ -663,14 +652,13 @@ public class ChartDataBuild {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
axisChartDataDTO.setValue(new BigDecimal(0));
|
axisChartDataDTO.setValue(new BigDecimal(0));
|
||||||
}
|
}
|
||||||
buildDynamicValue(view, axisChartDataDTO, row, size, extSize);
|
|
||||||
} else {
|
} else {
|
||||||
axisChartDataDTO.setQuotaList(quotaList);
|
axisChartDataDTO.setQuotaList(quotaList);
|
||||||
axisChartDataDTO.setValue(new BigDecimal(0));
|
axisChartDataDTO.setValue(new BigDecimal(0));
|
||||||
}
|
}
|
||||||
|
series.get(0).getData().add(axisChartDataDTO);
|
||||||
series.get(j).getData().add(axisChartDataDTO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(series)) {
|
if (CollectionUtils.isNotEmpty(series)) {
|
||||||
series.get(0).setCategories(categories);
|
series.get(0).setCategories(categories);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user