package com.fr.plugin.pielinecomb; import com.bulenkov.iconloader.util.Base64Converter; import com.fr.base.Base64; import com.fr.base.BaseFormula; import com.fr.data.core.FormatField; import com.fr.extended.chart.*; import com.fr.general.ComparatorUtils; import com.fr.general.xml.GeneralXMLTools; import com.fr.js.NameJavaScriptGroup; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.plugin.pielinecomb.comp.AbstractCustomChart; import com.fr.plugin.pielinecomb.comp.WebPageRender; import com.fr.plugin.pielinecomb.data.DataUtils; import com.fr.plugin.pielinecomb.data.LineDataConfig; import com.fr.plugin.pielinecomb.data.PieDataConfig; import com.fr.plugin.pielinecomb.vo.HyperLinkObject; import com.fr.plugin.transform.ExecuteFunctionRecord; import com.fr.plugin.transform.FunctionRecorder; import com.fr.script.Calculator; import com.fr.stable.AssistUtils; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.web.Repository; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; import java.awt.image.BufferedImage; import java.io.UnsupportedEncodingException; import java.math.RoundingMode; import java.text.Format; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author duan.jingliang * @date 2022/8/19 */ @FunctionRecorder public class PieLineCombChart extends AbstractCustomChart { private static final String ID = "PieLineCombChart"; private static final String NAME = "柱形折线组合图_定制_EK"; private static String BASE64_CHART_IMG = ""; /** * 图表类型 * */ private int chartType; /** * 数据集类型 * */ private String dataType; public static String PIE_DATA = "PieData"; public static String LINE_DATA = "LineData"; private JSONObject titleConf; private JSONObject legendConf; private JSONObject labelConf; private JSONObject seriesConf; private JSONObject axisConf; private JSONObject tipsConf; private JSONObject bgConf; private JSONObject styleCond; private HyperLinkObject linkConf; private StringFormula titleName; @Override protected String getChartID() { return ID; } @Override public String getChartName() { return NAME; } @ExecuteFunctionRecord @Override protected void addJSON(AbstractDataConfig dataConfig, JSONObject jsonObject, Repository repository, JSONPara jsonPara) throws JSONException { //Format format = getDataFormat(getAxisConf().getInt("xformattype"), getAxisConf().getString("xformatstr")); //String k = format.format(35666.666666D); JSONObject title = getTitleConf(); title.put("titlename", this.titleName.getResult()); jsonObject.put("titleConf", title); jsonObject.put("legendConf", getLegendConf()); jsonObject.put("labelConf", getLabelConf()); jsonObject.put("seriesConf", getSeriesConf()); jsonObject.put("axisConf", getAxisConf()); jsonObject.put("tipsConf", getTipsConf()); jsonObject.put("bgConf", getBgConf()); jsonObject.put("styleCond", getStyleCond()); addAutoLinkJSON(jsonObject, jsonPara); jsonObject.put("data", makeChartData()); } private JSONObject makeChartData() { PieDataConfig pieData = DataUtils.getDataConfig(PieLineCombChart.PIE_DATA, this); LineDataConfig lineData = DataUtils.getDataConfig(PieLineCombChart.LINE_DATA, this); JSONObject jsonObject = JSONObject.create(); if (chartType == 0) { JSONObject pieDataConf = makeSingleData(pieData, "pie"); JSONArray pieAxisXData = pieDataConf.getJSONArray("xAxisData"); JSONArray pieAxisXLabelData = JSONArray.create(); for (int i = 0; i < pieAxisXData.size(); i++) { Format format = getDataFormat(getAxisConf().getInt("xformattype"), getAxisConf().getString("xformatstr")); try { String label = format.format(pieAxisXData.get(i)); pieAxisXLabelData.put(label); } catch (Exception e) { e.printStackTrace(); pieAxisXLabelData.put(pieAxisXData.get(i)); } } pieDataConf.put("xAxisLabelData", pieAxisXLabelData); jsonObject.put("pie", pieDataConf); } else if (chartType == 1) { JSONObject pieDataConf = makeSingleData(lineData, "line"); JSONArray pieAxisXData = pieDataConf.getJSONArray("xAxisData"); JSONArray pieAxisXLabelData = JSONArray.create(); for (int i = 0; i < pieAxisXData.size(); i++) { Format format = getDataFormat(getAxisConf().getInt("xformattype"), getAxisConf().getString("xformatstr")); try { String label = format.format(pieAxisXData.get(i)); pieAxisXLabelData.put(label); } catch (Exception e) { e.printStackTrace(); pieAxisXLabelData.put(pieAxisXData.get(i)); } } pieDataConf.put("xAxisLabelData", pieAxisXLabelData); jsonObject.put("line", pieDataConf); } else { JSONObject pieDataConf = makeSingleData(pieData, "pie"); JSONArray pieAxisXData = pieDataConf.getJSONArray("xAxisData"); JSONArray pieAxisXLabelData = JSONArray.create(); for (int i = 0; i < pieAxisXData.size(); i++) { Format format = getDataFormat(getAxisConf().getInt("xformattype"), getAxisConf().getString("xformatstr")); try { String label = format.format(pieAxisXData.get(i)); pieAxisXLabelData.put(label); } catch (Exception e) { FineLoggerFactory.getLogger().warn("Data Format error!"); pieAxisXLabelData.put(pieAxisXData.get(i)); } } pieDataConf.put("xAxisLabelData", pieAxisXLabelData); jsonObject.put("pie", pieDataConf); pieDataConf = makeSingleData(lineData, "line"); pieAxisXData = pieDataConf.getJSONArray("xAxisData"); pieAxisXLabelData = JSONArray.create(); for (int i = 0; i < pieAxisXData.size(); i++) { Format format = getDataFormat(getAxisConf().getJSONObject("axisX").getInt("xformattype"), getAxisConf().getJSONObject("axisX").getString("xformatstr")); try { String label = format.format(pieAxisXData.get(i)); pieAxisXLabelData.put(label); } catch (Exception e) { e.printStackTrace(); pieAxisXLabelData.put(pieAxisXData.get(i)); } } pieDataConf.put("xAxisLabelData", pieAxisXLabelData); jsonObject.put("line", pieDataConf); } return jsonObject; } private JSONObject makeSingleData(AbstractDataConfig dataConfig, String dataName) { JSONObject jsonObject = JSONObject.create(); boolean isCustomName = false; ExtendedField categoryField = null; ExtendedField gridLineField = null; ExtendedField regionColorField = null; List customList = null; ExtendedField customName = null; ExtendedField customValue = null; if ("pie".equals(dataName)) { PieDataConfig pieData = (PieDataConfig)dataConfig; isCustomName = pieData.isCustomName(); categoryField = pieData.getCategory(); gridLineField = pieData.getGridline(); regionColorField = pieData.getRegioncolor(); customList = pieData.getCustomFields(); customName = pieData.getCustomNameField(); customValue = pieData.getCustomValueField(); } else if ("line".equals(dataName)) { LineDataConfig lineData = (LineDataConfig)dataConfig; isCustomName = lineData.isCustomName(); categoryField = lineData.getCategory(); gridLineField = lineData.getGridline(); regionColorField = lineData.getRegioncolor(); customList = lineData.getCustomFields(); customName = lineData.getCustomNameField(); customValue = lineData.getCustomValueField(); } if (isCustomName) { if (null != customList && customList.size() > 0) { JSONObject seriesObj = JSONObject.create(); JSONObject seriesObjIdx = JSONObject.create(); JSONArray gridLineData = JSONArray.create(); JSONObject regionColorData = JSONObject.create(); for (int i = 0; i < customList.size(); i++) { ExtendedField customField = customList.get(i); List categorys = categoryField.getValues(); List values = customField.getValues(); List gridLines = null == gridLineField ? null : gridLineField.getValues(); List regionColors = null == regionColorField ? null : regionColorField.getValues(); JSONArray seriesData = JSONArray.create(); int subEndIdx = customList.get(0).getValues().size(); for (int k = 0; k < subEndIdx; k++) { JSONArray seriesItem = JSONArray.create(); seriesItem.put(categorys.get(k)); seriesItem.put(values.get(k)); seriesData.put(seriesItem); if (i == 0 && null != gridLines && null != gridLines.get(k) && StringUtils.isNotEmpty(gridLines.get(k).toString())) { gridLineData.put(categorys.get(k)); } if (i == 0 && null != regionColors && null != regionColors.get(k) && StringUtils.isNotEmpty(regionColors.get(k).toString())) { regionColorData.put(categorys.get(k).toString(), regionColors.get(k)); } } seriesObj.put(customField.getCustomName(), seriesData); seriesObjIdx.put(customField.getCustomName(), i); } int subEndIdx = customList.get(0).getValues().size(); jsonObject.put("xAxisData", JSONArray.create(categoryField.getValues().subList(0, subEndIdx))); jsonObject.put("gridLine", gridLineData); jsonObject.put("regionColor", regionColorData); jsonObject.put("seriesData", seriesObj); jsonObject.put("seriesIndex", seriesObjIdx); } } else { List category = categoryField.getValues(); List gridLine = null == gridLineField ? null : gridLineField.getValues(); List regionColor = null == regionColorField ? null : regionColorField.getValues(); List name = customName.getValues(); List value = customValue.getValues(); if (null != category && category.size() > 0) { JSONObject seriesObj = JSONObject.create(); JSONObject seriesObjIdx = JSONObject.create(); if (null != name && name.size() > 0) { // 用字段值 List categoryNoDup = category.stream().distinct().collect(Collectors.toList()); List nameNoDup = name.stream().distinct().collect(Collectors.toList()); if (nameNoDup.size() > 1) { // 多系列 JSONArray gridLineData = JSONArray.create(); JSONObject regionColorData = JSONObject.create(); for (int i = 0; i < nameNoDup.size(); i++) { JSONArray tmpSeries = JSONArray.create(); for (int j = 0; j 0 && value.size() == category.size()) { JSONArray seriesData = JSONArray.create(); JSONArray gridLineData = JSONArray.create(); JSONObject regionColorData = JSONObject.create(); for (int k = 0; k < category.size(); k++) { JSONArray seriesItem = JSONArray.create(); seriesItem.put(category.get(k)); seriesItem.put(value.get(k)); seriesData.put(seriesItem); if (null != gridLine && null != gridLine.get(k) && StringUtils.isNotEmpty(gridLine.get(k).toString())) { gridLineData.put(category.get(k)); } if (null != regionColor && null != regionColor.get(k) && StringUtils.isNotEmpty(regionColor.get(k).toString())) { regionColorData.put(category.get(k).toString(), regionColor.get(k)); } } seriesObj.put("default", seriesData); seriesObjIdx.put("default", 0); jsonObject.put("xAxisData", JSONArray.create(category)); jsonObject.put("gridLine", gridLineData); jsonObject.put("regionColor", regionColorData); jsonObject.put("seriesData", seriesObj); jsonObject.put("seriesIndex", seriesObjIdx); } else { FineLoggerFactory.getLogger().error("PieLineCombChart data config error!"); } } } return jsonObject; } @Override protected BufferedImage getChartImage(Calculator cal, int width, int height) { BufferedImage image = null; try { synchronized (this) { JSONObject jsonObject = JSONObject.create(); jsonObject.put("data", makeChartData()); jsonObject.put("titleConf", getTitleConf()); jsonObject.put("legendConf", getLegendConf()); jsonObject.put("labelConf", getLabelConf()); jsonObject.put("seriesConf", getSeriesConf()); jsonObject.put("axisConf", getAxisConf()); jsonObject.put("tipsConf", getTipsConf()); jsonObject.put("bgConf", getBgConf()); jsonObject.put("styleCond", getStyleCond()); if (StringUtils.isNotEmpty(BASE64_CHART_IMG) && !WebPageRender.getInstance().isDataChanged(jsonObject)) { image = (BufferedImage) GeneralXMLTools.imageDecode(Base64Converter.decode(BASE64_CHART_IMG.getBytes())); } else { String imgStr = WebPageRender.getInstance().makeChartImage(jsonObject, width, height); if (StringUtils.isNotEmpty(imgStr)) { BASE64_CHART_IMG = imgStr; image = (BufferedImage) GeneralXMLTools.imageDecode(Base64Converter.decode(imgStr.getBytes())); } else { image = super.getDemoImage(); } } } } catch (Exception e) { e.printStackTrace(); image = super.getDemoImage(); } return image; } @Override protected String[] requiredJS() { return new String[]{ "com/fr/plugin/pielinecomb/web/PieLineCombChartWrapper.js" }; } @Override protected String wrapperName() { return "PieLineCombChartWrapper"; } private void addAutoLinkJSON(JSONObject paramJSONObject, JSONPara paramAbstractChart) throws JSONException { if (null != this.getLinkConf()) { NameJavaScriptGroup pieNameGroup = this.getLinkConf().getNameJavaScriptGroup(HyperLinkObject.CHART_TYPE_PIE); if (null != pieNameGroup) { ToHyperlinkJSONHelper.addECNameToLinkGroup(paramAbstractChart.ecName, paramAbstractChart.sheetIndex, pieNameGroup); paramJSONObject.put(HyperLinkObject.CHART_TYPE_PIE, ToHyperlinkJSONHelper.addAutoLinkJSON(pieNameGroup, hyperLinkParas())); } NameJavaScriptGroup lineNameGroup = this.getLinkConf().getNameJavaScriptGroup(HyperLinkObject.CHART_TYPE_LINE); if (null != lineNameGroup) { ToHyperlinkJSONHelper.addECNameToLinkGroup(paramAbstractChart.ecName, paramAbstractChart.sheetIndex, lineNameGroup); paramJSONObject.put(HyperLinkObject.CHART_TYPE_LINE, ToHyperlinkJSONHelper.addAutoLinkJSON(lineNameGroup, hyperLinkParas())); } } } @Override public NameJavaScriptGroup getHotHyperlink(String s) { return this.getLinkConf().getNameJavaScriptGroup(s); } @Override protected HyperLinkPara[] hyperLinkParas() { return new HyperLinkPara[]{ new HyperLinkPara() { @Override public String getName() { return "分类名"; } @Override public String getFormulaContent() { return "CATEGORY"; } @Override public String[] getProps() { return new String[]{"category"}; } }, new HyperLinkPara() { @Override public String getName() { return "系列名"; } @Override public String getFormulaContent() { return "SERIES"; } @Override public String[] getProps() { return new String[]{"series"}; } }, new HyperLinkPara() { @Override public String getName() { return "数值"; } @Override public String getFormulaContent() { return "VALUE"; } @Override public String[] getProps() { return new String[]{"value"}; } } }; } @Override protected void readAttr(XMLableReader xmLableReader) { super.readAttr(xmLableReader); this.chartType = xmLableReader.getAttrAsInt("chartType", 0); String jsonStr = xmLableReader.getAttrAsString("dataType", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setDataType(jsonStr); } jsonStr = xmLableReader.getAttrAsString("titleConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setTitleConf(new JSONObject(jsonStr)); } jsonStr = xmLableReader.getAttrAsString("legendConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setLegendConf(new JSONObject(jsonStr)); } jsonStr = xmLableReader.getAttrAsString("labelConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setLabelConf(new JSONObject(jsonStr)); } jsonStr = xmLableReader.getAttrAsString("seriesConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setSeriesConf(new JSONObject(jsonStr)); } try { jsonStr = xmLableReader.getAttrAsString("axisConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setAxisConf(new JSONObject(new String(Base64.decode(jsonStr), "UTF-8"))); } } catch (Exception e) { FineLoggerFactory.getLogger().warn(e.getMessage(), e); } jsonStr = xmLableReader.getAttrAsString("tipsConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setTipsConf(new JSONObject(jsonStr)); } jsonStr = xmLableReader.getAttrAsString("bgConf", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setBgConf(new JSONObject(jsonStr)); } try { jsonStr = xmLableReader.getAttrAsString("styleCond", ""); if (StringUtils.isNotEmpty(jsonStr)) { this.setStyleCond(new JSONObject(new String(Base64.decode(jsonStr), "UTF-8"))); } } catch (Exception e) { FineLoggerFactory.getLogger().warn(e.getMessage(), e); } if (null == linkConf) { linkConf = (HyperLinkObject) xmLableReader.readXMLObject(new HyperLinkObject()); } this.titleName = new StringFormula(this.getTitleConf().getString("titlename")); } @Override protected void writeAttr(XMLPrintWriter xmlPrintWriter) { super.writeAttr(xmlPrintWriter); xmlPrintWriter.attr("chartType", chartType); if (null != dataType) { xmlPrintWriter.attr("dataType", dataType); } if (null != titleConf) { xmlPrintWriter.attr("titleConf", titleConf.toString()); } if (null != legendConf) { xmlPrintWriter.attr("legendConf", legendConf.toString()); } if (null != labelConf) { xmlPrintWriter.attr("labelConf", labelConf.toString()); } if (null != seriesConf) { xmlPrintWriter.attr("seriesConf", seriesConf.toString()); } if (null != axisConf) { try { xmlPrintWriter.attr("axisConf", Base64.encode(axisConf.toString().getBytes("UTF-8"))); } catch (Exception e) { FineLoggerFactory.getLogger().warn(e.getMessage(), e); } } if (null != tipsConf) { xmlPrintWriter.attr("tipsConf", tipsConf.toString()); } if (null != bgConf) { xmlPrintWriter.attr("bgConf", bgConf.toString()); } if (null != styleCond) { try { xmlPrintWriter.attr("styleCond", Base64.encode(styleCond.toString().getBytes("UTF-8"))); } catch (Exception e) { FineLoggerFactory.getLogger().warn(e.getMessage(), e); } } if (null != linkConf) { linkConf.writeXML(xmlPrintWriter); } } @Override public boolean equals(Object o) { boolean isEq = super.equals(o) && o instanceof PieLineCombChart && ComparatorUtils.equals(((PieLineCombChart) o).getDataType(), this.dataType) && ComparatorUtils.equals(((PieLineCombChart) o).getChartType(), this.chartType) && ComparatorUtils.equals(((PieLineCombChart) o).getTitleConf(), this.titleConf) && ComparatorUtils.equals(((PieLineCombChart) o).getLegendConf(), this.legendConf) && ComparatorUtils.equals(((PieLineCombChart) o).getLabelConf(), this.labelConf) && ComparatorUtils.equals(((PieLineCombChart) o).getSeriesConf(), this.seriesConf) && ComparatorUtils.equals(((PieLineCombChart) o).getAxisConf(), this.axisConf) && ComparatorUtils.equals(((PieLineCombChart) o).getTipsConf(), this.tipsConf) && ComparatorUtils.equals(((PieLineCombChart) o).getBgConf(), this.bgConf) && ComparatorUtils.equals(((PieLineCombChart) o).getStyleCond(), this.styleCond) && ComparatorUtils.equals(((PieLineCombChart) o).getLinkConf(), this.linkConf) ; return isEq; } @Override public int hashCode() { return super.hashCode() + AssistUtils.hashCode(new Object[]{this.dataType, this.chartType, this.titleConf, this.legendConf, this.labelConf, this.seriesConf, this.axisConf, this.tipsConf, this.bgConf, this.styleCond, this.linkConf}); } @Override public PieLineCombChart clone() throws CloneNotSupportedException { PieLineCombChart chart = (PieLineCombChart)super.clone(); if (this.linkConf != null) { chart.setLinkConf((HyperLinkObject) this.getLinkConf().clone()); } return chart; } @Override protected List formulas() { List formulaList = new ArrayList(); formulaList.add(this.titleName); return formulaList; } @Override protected String demoImagePath() { return "com/fr/plugin/pielinecomb/images/demo.png"; } public Format getDataFormat(Integer type, String formatStr) { if (type == 7) { return FormatField.getInstance().getFormat(type, formatStr); } else if (StringUtils.isNotEmpty(formatStr)) { return FormatField.getInstance().getFormat(type, formatStr, RoundingMode.HALF_EVEN); } else { return null; } } public int getChartType() { return chartType; } public void setChartType(int chartType) { this.chartType = chartType; } public String getDataType() { return dataType; } public void setDataType(String dataType) { this.dataType = dataType; } public JSONObject getTitleConf() { if (null == titleConf) { titleConf = new JSONObject(); titleConf.put("titlevisiable", true); titleConf.put("titlename", "组合图"); titleConf.put("titleposition", 0); titleConf.put("titlesize", 16); titleConf.put("titlestyle", 1); titleConf.put("titlefamily", "微软雅黑"); titleConf.put("titlecolor", "#333300"); titleConf.put("titlebgcolor", "transparent"); titleConf.put("titleBgOpacity", 100); } return titleConf; } public void setTitleConf(JSONObject titleConf) { this.titleConf = titleConf; } public JSONObject getLegendConf() { if (null == legendConf) { legendConf = new JSONObject(); legendConf.put("legendalignment", 4); legendConf.put("legendcolor", "#000000"); legendConf.put("legendfamily", "微软雅黑"); legendConf.put("legendmargin", 20); legendConf.put("legendposition", 1); legendConf.put("legendsize", 12); legendConf.put("legendstyle", 0); legendConf.put("showlegend", true); } return legendConf; } public void setLegendConf(JSONObject legendConf) { this.legendConf = legendConf; } public JSONObject getLabelConf() { if (null == labelConf) { labelConf = new JSONObject(); labelConf.put("chartType", 1); labelConf.put("lineJsPane", ""); labelConf.put("linePosition", "top"); labelConf.put("lineValueType", 1); labelConf.put("linelabelcolor", "#000000"); labelConf.put("linelabelfamily", "微软雅黑"); labelConf.put("linelabelsize", 12); labelConf.put("linelabelstyle", 0); labelConf.put("pieDirection", 0); labelConf.put("pieJsPane", "return this.data[1]"); labelConf.put("piePosition", "insideTop"); labelConf.put("pieValueType", 1); labelConf.put("pielabelcolor", "#000000"); labelConf.put("pielabelfamily", "微软雅黑"); labelConf.put("pielabelsize", 12); labelConf.put("pielabelstyle", 0); labelConf.put("showLineCategory", false); labelConf.put("showLineLabel", true); labelConf.put("showLineSeries", false); labelConf.put("showLineValue", true); labelConf.put("showPieCategory", false); labelConf.put("showPieLabel", true); labelConf.put("showPieSeries", false); labelConf.put("showPieValue", true); } return labelConf; } public void setLabelConf(JSONObject labelConf) { this.labelConf = labelConf; } public JSONObject getSeriesConf() { if (null == seriesConf) { seriesConf = new JSONObject(); seriesConf.put("chartType", 2); seriesConf.put("lineCornerColor", "#ffff00"); seriesConf.put("lineCornerColorType", "系列色"); seriesConf.put("lineCornerRadius", 10); seriesConf.put("lineCornerShape", "默认"); seriesConf.put("lineCornerType", 0); seriesConf.put("lineType", "solid"); seriesConf.put("lineWidth", 1); seriesConf.put("pieFixWidth", 10); seriesConf.put("pieSeriesGapWidth", 30); seriesConf.put("pieWidthType", 1); seriesConf.put("seriesColorCustom", true); seriesConf.put("seriesColorList", "#63b2ee|#76da91|#f8cb7f|#f89588|#7cd6cf|#9192ab|#7898e1|#efa666|#eddd86|#9987ce"); seriesConf.put("seriesColorName", ""); } return seriesConf; } public void setSeriesConf(JSONObject seriesConf) { this.seriesConf = seriesConf; } public JSONObject getAxisConf() { if (null == axisConf) { axisConf = new JSONObject(); JSONObject axisX = JSONObject.create(); axisX.put("axisName", "X轴"); axisX.put("isLabelVisiable", true); axisX.put("isTitleVisiable", true); axisX.put("labelFormatType", 1); axisX.put("labelJsPane", ""); axisX.put("labelRotation", 0); axisX.put("labelcolor", "#000000"); axisX.put("labelfamily", "微软雅黑"); axisX.put("labelsize", 12); axisX.put("labelstyle", 0); axisX.put("titleAlignment", 4); axisX.put("titleName", "分类"); axisX.put("titleRotation", 0); axisX.put("titlecolor", "#000000"); axisX.put("titlefamily", "微软雅黑"); axisX.put("titlesize", 12); axisX.put("titlestyle", 0); axisX.put("xformatstr", ""); axisX.put("xformattype", 7); axisConf.put("axisX", axisX); JSONArray axisYList = JSONArray.create(); JSONObject axisY = JSONObject.create(); axisY.put("axisName", "Y轴"); axisY.put("intervalValue", ""); axisY.put("isLabelVisiable", true); axisY.put("isTitleVisiable", true); axisY.put("labelFormatType", 1); axisY.put("labelJsPane", "return this.value;"); axisY.put("labelRotation", 0); axisY.put("labelcolor", "#000000"); axisY.put("labelfamily", "微软雅黑"); axisY.put("labelsize", 12); axisY.put("labelstyle", 0); axisY.put("maxValue", ""); axisY.put("minValue", ""); axisY.put("position", "left"); axisY.put("showInterval", false); axisY.put("showMaxValue", false); axisY.put("showMinValue", false); axisY.put("titleAlignment", 2); axisY.put("titleName", "数量"); axisY.put("titleRotation", 0); axisY.put("titlecolor", "#000000"); axisY.put("titlefamily", "微软雅黑"); axisY.put("titlesize", 12); axisY.put("titlestyle", 0); axisY.put("yformatstr", "#0"); axisY.put("yformattype", 1); axisYList.put(axisY); axisConf.put("axisY", axisYList); } return axisConf; } public void setAxisConf(JSONObject axisConf) { this.axisConf = axisConf; } public JSONObject getTipsConf() { if (null == tipsConf) { tipsConf = JSONObject.create(); tipsConf.put("chartType", 1); JSONObject pie = JSONObject.create(); pie.put("bgColor", "#000000"); pie.put("bgOpacity", 35); pie.put("jsPane", ""); pie.put("showCategory", true); pie.put("showSeries", true); pie.put("showTip", true); pie.put("showValue", true); pie.put("tipcolor", "#ffffff"); pie.put("tipfamily", "微软雅黑"); pie.put("tipsize", 12); pie.put("tipstyle", 0); pie.put("valueType", 1); tipsConf.put("pie", pie); JSONObject line = JSONObject.create(); line.put("bgColor", "#000000"); line.put("bgOpacity", 30); line.put("jsPane", "0"); line.put("showCategory", false); line.put("showSeries", true); line.put("showTip", true); line.put("showValue", true); line.put("tipcolor", "#ffff00"); line.put("tipfamily", "微软雅黑"); line.put("tipsize", 12); line.put("tipstyle", 0); line.put("valueType", 1); tipsConf.put("line", line); } return tipsConf; } public void setTipsConf(JSONObject tipsConf) { this.tipsConf = tipsConf; } public JSONObject getBgConf() { if (bgConf == null) { bgConf = JSONObject.create(); bgConf.put("bgColor", "#ffffff"); bgConf.put("bgOpacity", 100); bgConf.put("chartType", 1); bgConf.put("fixHeight", 0); bgConf.put("gridXColor", "#c0c0c0"); bgConf.put("gridXColorCustom", false); bgConf.put("gridXColorList", "#2474a9|#97d1f7|#ef6c6c|#f9cd76|#6691e9|#7adbc8|#8861c3|#ffaec8|#936c61|#e4d354|#1d9992|#9ccc66"); bgConf.put("gridXColorName", "热情"); bgConf.put("gridYColor", "#c0c0c0"); } return bgConf; } public void setBgConf(JSONObject bgConf) { this.bgConf = bgConf; } public JSONObject getStyleCond() { if (null == styleCond) { styleCond = JSONObject.create(); } return styleCond; } public void setStyleCond(JSONObject styleCond) { this.styleCond = styleCond; } public HyperLinkObject getLinkConf() { return linkConf; } public void setLinkConf(HyperLinkObject linkConf) { this.linkConf = linkConf; } }