环境:idea
语言:java
框架:springboot
思路:后台封装百度的echarts,便于生产曲线,前端只需要调用对象
创建文件夹:EChartsOptions,用于存放各种echarts属性对象
创建子文件夹01:EChartsParts
创建对象ECAxisLabel
创建对象ECAxisLine
创建对象ECLineStyle
创建对象ECxAxisAxisLabel
@Data
public class ECAxisLabel {
private String formatter;
}
@Data
public class ECAxisLine {
private ECLineStyle lineStyle;
}
@Data
public class ECLineStyle {
private String color;
}
@Data
public class ECxAxisAxisLabel {
private String interval; //坐标轴刻度标签的显示间隔
private String rotate; //刻度标签旋转的角度
}
创建子文件夹02:EChartsPie
创建对象EChartsPieISEmphasis
创建对象EChartsPieItemStyle
创建对象EChartsPieOneSerie
创建对象EChartsPieOneSerieData
创建对象EChartsPieOptions
@Data
public class EChartsPieISEmphasis {
private String shadowBlur = "10";
private String shadowOffsetX = "0";
private String shadowColor="rgba(0, 0, 0, 0.5)";
}
@Data
public class EChartsPieItemStyle {
private EChartsPieISEmphasis emphasis;
public EChartsPieItemStyle(){
this.setEmphasis(new EChartsPieISEmphasis());
}
}
@Data
public class EChartsPieOneSerie {
private String name;
private String type="pie";
private List<String> radius;
private List<String> center;
private String selectedMode="single";
private List<EChartsPieOneSerieData> data;
private EChartsPieItemStyle itemStyle;
public EChartsPieOneSerie(){
List<String> mRadius = new ArrayList<>();
mRadius.add("0%");
mRadius.add("65%");
this.setRadius(mRadius);
List<String> mCenter = new ArrayList<>();
mCenter.add("50%");
mCenter.add("50%");
this.setCenter(mCenter);
this.setItemStyle(new EChartsPieItemStyle());
}
}
@Data
public class EChartsPieOneSerieData {
private String value;
private String name;
}
@Data
public class EChartsPieOptions {
private EChartsTitle title;
private EChartsTooltip tooltip;
private EChartsLegend legend;
private List<EChartsPieOneSerie> series;
private String[] color;
public EChartsPieOptions() {
this.setColor(EChartsUtil.Color());
EChartsTooltip eChartsTooltip = new EChartsTooltip();
eChartsTooltip.setTrigger("item");
eChartsTooltip.setFormatter("{a} <br/>{b}: {c} ({d}%)");
this.setTooltip(eChartsTooltip);
}
}
创建子文件夹03:EChartsTBF
创建对象EctbfBase
创建对象EctbfDataView
创建对象EctbfDataZoom
创建对象EctbfMagicType
创建对象EctbfMark
创建对象EctbfRestore
创建对象EctbfSaveAsImage
@Data
public class EctbfBase {
private Boolean show = true;
}
@Data
public class EctbfDataView extends EctbfBase {
private Boolean readOnly = false;
}
public class EctbfDataZoom extends EctbfBase {
public EctbfDataZoom(){
this.setShow(false);
}
}
public class EctbfMagicType extends EctbfBase {
private String[] type;
public void setType(String[] type) {
this.type = type;
}
public String[] getType() {
String[] myType = new String[2];
myType[0] = "line";
myType[1] = "bar";
return myType;
}
}
public class EctbfMark extends EctbfBase{
}
public class EctbfRestore extends EctbfBase {
public EctbfRestore(){
this.setShow(true);
}
}
public class EctbfSaveAsImage extends EctbfBase {
}
创建子文件夹04:EChartTtip
创建对象EcttipAxisPointer
@Data
public class EcttipAxisPointer {
String type;
}
创建子文件夹05:parameter
创建对象ParameterBase
创建对象ParameterData
@Data
public class ParameterBase {
private String name;
private String type = "line";
private int yAxisIndex = 0;
private String connectNulls = "true";
private String symbol = "circle";//拐点样式
private int symbolSize = 8;//拐点大小
private Boolean showAllSymbol = true; //是否显示拐点
private EcsMarkPoint markPoint;
private EcsMarkLine markLine;
}
@Data
public class ParameterData extends ParameterBase {
private List<String> data;
public String findMaxValue() {
return DataConvertor.findMaxValue(data);
}
public String findMinValue() {
return DataConvertor.findMinValue(data);
}
}
在EChartsOptions文件夹下面创建对象:EChartsLegend
在EChartsOptions文件夹下面创建对象:EChartsTitle
在EChartsOptions文件夹下面创建对象:EChartsToolBox
在EChartsOptions文件夹下面创建对象:EChartsToolBoxFeature
在EChartsOptions文件夹下面创建对象:EChartsTooltip
在EChartsOptions文件夹下面创建对象:EChartsUtil
在EChartsOptions文件夹下面创建对象:EChartsXAxis
在EChartsOptions文件夹下面创建对象:EChartsYAxis
在EChartsOptions文件夹下面创建对象:EcsMarkLine
在EChartsOptions文件夹下面创建对象:EcsMarkPoint
在EChartsOptions文件夹下面创建对象:EcsmplData
在EChartsOptions文件夹下面创建对象:EcSplitLine
在EChartsOptions文件夹下面创建对象:WebEChartsOptions
@Data
public class EChartsLegend {
private List<String> data;
private String bottom = "auto";
private String left = "auto";
private String show = "true";
}
@Data
public class EChartsTitle {
private String text = "历史曲线";
private String subtext = "";
private String left = "auto";
}
@Data
public class EChartsToolBox {
private Boolean show = true;
private EChartsToolBoxFeature feature;
public EChartsToolBox()
{
setFeature(new EChartsToolBoxFeature());
}
}
@Data
public class EChartsToolBoxFeature {
private EctbfMark mark;
private EctbfDataView dataView;
private EctbfMagicType magicType;
private EctbfRestore restore;
private EctbfDataZoom dataZoom;
private EctbfSaveAsImage saveAsImage;
public EChartsToolBoxFeature()
{
setMark(new EctbfMark());
setDataView(new EctbfDataView());
setMagicType(new EctbfMagicType());
setRestore(new EctbfRestore());
setDataZoom(new EctbfDataZoom());
setSaveAsImage(new EctbfSaveAsImage());
}
}
@Data
public class EChartsTooltip {
private String trigger = "axis";
private String formatter;
private EcttipAxisPointer axisPointer;
}
public class EChartsUtil {
public static String[] Color(){
String[] myColor = new String[7];
myColor[0] = "#c23531";
myColor[1] = "#2f4554";
myColor[2] = "#80FFA5";
myColor[3] = "#00DDFF";
myColor[4] = "#37A2FF";
myColor[5] = "#FF0087";
myColor[6] = "#FFBF00";
return myColor;
}
}
@Data
public class EChartsXAxis {
private List<String> data;
private EcSplitLine splitLine;
private ECxAxisAxisLabel axisLabel;
}
@Data
public class EChartsYAxis {
private String name;
private String position;
private String offset;
private ECAxisLine axisLine;
private ECAxisLabel axisLabel;
private String splitNumber;
private String interval;
private String minInterval;
private String min;
private String max;
private String type;
private EcSplitLine splitLine;
}
@Data
public class EcsMarkLine {
private boolean silent = true;
private List<EcsmplData> data;
public EcsMarkLine() {
data = new ArrayList<>();
EcsmplData ecsmplData = new EcsmplData();
ecsmplData.setType("average");
ecsmplData.setName("平均值");
data.add(ecsmplData);
}
}
@Data
public class EcsMarkPoint {
private List<EcsmplData> data;
public EcsMarkPoint() {
data = new ArrayList<>();
EcsmplData ecsmplDataMax = new EcsmplData();
ecsmplDataMax.setType("max");
ecsmplDataMax.setName("最大值");
data.add(ecsmplDataMax);
EcsmplData ecsmplDataMin = new EcsmplData();
ecsmplDataMin.setType("min");
ecsmplDataMin.setName("最小值");
data.add(ecsmplDataMin);
}
}
@Data
public class EcsmplData {
private String type;
private String name;
private String yAxis;
}
@Data
public class EcSplitLine {
private boolean show = true;
}
@Data
public class WebEChartsOptions {
private EChartsTitle title;
private EChartsTooltip tooltip;
private EChartsToolBox toolbox;
private EChartsLegend legend;
@JsonProperty("xAxis")
private EChartsXAxis xAxis;
@JsonProperty("yAxis")
private List<EChartsYAxis> yAxis;
private List<ParameterData> series;
private String[] color;
public WebEChartsOptions() {
this.setTooltip(new EChartsTooltip());
this.setToolbox(new EChartsToolBox());
String[] myColor = new String[2];
myColor[0] = "#c23531";
myColor[1] = "#2f4554";
this.color = myColor;
}
public void showPoint(boolean showAvgPoint, boolean showMaxMinPoint) {
if (showMaxMinPoint) {
for (ParameterData parameterData : series
) {
parameterData.setMarkPoint(new EcsMarkPoint());
}
}
if (showAvgPoint) {
for (ParameterData parameterData : series
) {
parameterData.setMarkLine(new EcsMarkLine());
}
}
}
}