Yuan.Wang
4 years ago
14 changed files with 316 additions and 52 deletions
@ -0,0 +1,88 @@
|
||||
package com.fr.van.chart.designer.type; |
||||
|
||||
import com.fr.chart.chartglyph.ConditionCollection; |
||||
import com.fr.log.FineLoggerFactory; |
||||
import com.fr.plugin.chart.PiePlot4VanChart; |
||||
import com.fr.plugin.chart.area.VanChartAreaPlot; |
||||
import com.fr.plugin.chart.attr.axis.VanChartAxis; |
||||
import com.fr.plugin.chart.attr.plot.VanChartPlot; |
||||
import com.fr.plugin.chart.attr.plot.VanChartRectanglePlot; |
||||
import com.fr.plugin.chart.bubble.VanChartBubblePlot; |
||||
import com.fr.plugin.chart.column.VanChartColumnPlot; |
||||
import com.fr.plugin.chart.line.VanChartLinePlot; |
||||
import com.fr.plugin.chart.scatter.VanChartScatterPlot; |
||||
import com.fr.plugin.chart.type.VanChartPlotType; |
||||
import com.fr.plugin.chart.vanchart.VanChart; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.HashSet; |
||||
import java.util.List; |
||||
import java.util.Set; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-08-24 |
||||
*/ |
||||
public abstract class AbstractRectanglePlotPane extends AbstractVanChartTypePane { |
||||
|
||||
private static Set<String> extendPlotIds = new HashSet<>(); |
||||
|
||||
static { |
||||
extendPlotIds.add(VanChartColumnPlot.VAN_CHART_COLUMN_PLOT_ID); |
||||
extendPlotIds.add(VanChartColumnPlot.VAN_CHART_BAR_PLOT_ID); |
||||
extendPlotIds.add(VanChartLinePlot.VAN_CHART_LINE_PLOT); |
||||
extendPlotIds.add(VanChartAreaPlot.VAN_CHART_AREA_PLOT_ID); |
||||
extendPlotIds.add(VanChartScatterPlot.VAN_CHART_SCATTER_PLOT_ID); |
||||
extendPlotIds.add(PiePlot4VanChart.VAN_CHART_PIE_PLOT); |
||||
} |
||||
|
||||
@Override |
||||
protected VanChartPlot cloneOldPlot2New(VanChartPlot oldPlot, VanChartPlot newPlot) { |
||||
try { |
||||
VanChartRectanglePlot vanChartRectanglePlot = (VanChartRectanglePlot) newPlot; |
||||
VanChartRectanglePlot clonePlot = (VanChartRectanglePlot) oldPlot.clone(); |
||||
clonePlot.setVanChartPlotType(vanChartRectanglePlot.getVanChartPlotType()); |
||||
//自定义类型的图形要增加一个y2轴,并且增加系列中的堆积条件,反之则要去掉y2轴和条件
|
||||
if (clonePlot.isCustomChart()) { |
||||
List<VanChartAxis> valueAxisList = clonePlot.getValueAxisList(); |
||||
valueAxisList.add(vanChartRectanglePlot.getValueAxisList().get(1)); |
||||
clonePlot.setStackAndAxisCondition(vanChartRectanglePlot.getStackAndAxisCondition()); |
||||
} else { |
||||
List<VanChartAxis> xAxisList = clonePlot.getXAxisList(); |
||||
List<VanChartAxis> yAxisList = clonePlot.getYAxisList(); |
||||
List<VanChartAxis> newXAxisList = new ArrayList<>(); |
||||
List<VanChartAxis> newYAxisList = new ArrayList<>(); |
||||
newXAxisList.add(xAxisList.get(0)); |
||||
newYAxisList.add(yAxisList.get(0)); |
||||
clonePlot.setXAxisList(newXAxisList); |
||||
clonePlot.setYAxisList(newYAxisList); |
||||
clonePlot.setStackAndAxisCondition(new ConditionCollection()); |
||||
} |
||||
|
||||
//百分比堆积图值轴的格式不保留
|
||||
if (clonePlot.getVanChartPlotType() == VanChartPlotType.STACK_BY_PERCENT || |
||||
((VanChartRectanglePlot) oldPlot).getVanChartPlotType() == VanChartPlotType.STACK_BY_PERCENT) { |
||||
VanChartAxis cloneAxis = clonePlot.getValueAxisList().get(0); |
||||
VanChartAxis vanChartAxis = vanChartRectanglePlot.getValueAxisList().get(0); |
||||
cloneAxis.setFormat(vanChartAxis.getFormat()); |
||||
cloneAxis.setPercentage(vanChartAxis.isPercentage()); |
||||
} |
||||
return clonePlot; |
||||
} catch (CloneNotSupportedException ex) { |
||||
FineLoggerFactory.getLogger().error("Error in change plot"); |
||||
return newPlot; |
||||
} |
||||
} |
||||
|
||||
//是否支持属性的继承
|
||||
@Override |
||||
protected boolean supportExtendAttr(VanChart chart) { |
||||
if (StringUtils.equals(VanChartBubblePlot.VAN_CHART_BUBBLE_PLOT_ID, chart.getID())) { |
||||
VanChartBubblePlot vanChartBubblePlot = chart.getPlot(); |
||||
return !vanChartBubblePlot.isForceBubble(); |
||||
} |
||||
return extendPlotIds.contains(chart.getID()); |
||||
} |
||||
} |
Loading…
Reference in new issue