forked from fanruan/demo-show-charts
zheng
7 years ago
18 changed files with 137882 additions and 15 deletions
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> |
||||
<id>com.fr.plugin.demoChart</id> |
||||
<name><![CDATA[DEMO图表]]></name> |
||||
<active>yes</active> |
||||
<version>1.0.0</version> |
||||
<env-version>10.0</env-version> |
||||
<jartime>2018-3-31</jartime> |
||||
<vendor>finereport.shine</vendor> |
||||
<description><![CDATA[给开发者参考的图表插件demo]]></description> |
||||
<change-notes><![CDATA[]]></change-notes> |
||||
|
||||
<function-recorder class="com.fr.plugin.demo.DemoChart"/> |
||||
|
||||
<extra-chart> |
||||
<IndependentChartProvider class="com.fr.plugin.demo.Demo" plotID="DEMO_CHART"/> |
||||
</extra-chart> |
||||
|
||||
<extra-chart-designer> |
||||
<IndependentChartUIProvider class="com.fr.plugin.demo.DemoUI" plotID="DEMO_CHART"/> |
||||
</extra-chart-designer> |
||||
|
||||
</plugin> |
@ -0,0 +1,14 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.extended.chart.AbstractChart; |
||||
import com.fr.extended.chart.AbstractExtentChartProvider; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class Demo extends AbstractExtentChartProvider { |
||||
@Override |
||||
protected AbstractChart createChart() { |
||||
return new DemoChart(); |
||||
} |
||||
} |
@ -0,0 +1,30 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
|
||||
import javax.swing.JPanel; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/25. |
||||
*/ |
||||
public class DemoBackgroundPane extends ExtendedScrollPane<DemoChart>{ |
||||
@Override |
||||
public void populateBean(DemoChart ob) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(DemoChart ob) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new JPanel(); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "背景"; |
||||
} |
||||
} |
@ -0,0 +1,181 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.base.BaseFormula; |
||||
import com.fr.extended.chart.AbstractChart; |
||||
import com.fr.extended.chart.ExtendedHelper; |
||||
import com.fr.extended.chart.HyperLinkPara; |
||||
import com.fr.extended.chart.export.ExportProcessor; |
||||
import com.fr.extended.chart.export.JSExportProcessor; |
||||
import com.fr.general.GeneralUtils; |
||||
import com.fr.json.JSON; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONException; |
||||
import com.fr.json.JSONFactory; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.transform.ExecuteFunctionRecord; |
||||
import com.fr.plugin.transform.FunctionRecorder; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
@FunctionRecorder |
||||
public class DemoChart extends AbstractChart<DemoDataConfig>{ |
||||
|
||||
private static final String ID = "DEMO_CHART"; |
||||
private static final String NAME = "DEMO图表"; |
||||
|
||||
private BaseFormula titleFormula; |
||||
|
||||
public BaseFormula getTitleFormula() { |
||||
return titleFormula; |
||||
} |
||||
|
||||
public void setTitleFormula(BaseFormula titleFormula) { |
||||
this.titleFormula = titleFormula; |
||||
} |
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader reader) { |
||||
super.readAttr(reader); |
||||
this.setTitleFormula(ExtendedHelper.readFormula(reader, "title")); |
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter writer) { |
||||
super.writeAttr(writer); |
||||
ExtendedHelper.writeFormula(this.getTitleFormula(), writer, "title"); |
||||
} |
||||
|
||||
@Override |
||||
protected String getChartID() { |
||||
return ID; |
||||
} |
||||
|
||||
@Override |
||||
public String getChartName() { |
||||
return NAME; |
||||
} |
||||
|
||||
@Override |
||||
protected String demoImagePath() { |
||||
return "com/fr/plugin/demo/demo.png"; |
||||
} |
||||
|
||||
@ExecuteFunctionRecord |
||||
@Override |
||||
protected void addJSON(DemoDataConfig dataConfig, JSONObject jsonObject, Repository repo) throws JSONException { |
||||
|
||||
jsonObject.put("title", JSONFactory.createJSON(JSON.OBJECT).put("text", ExtendedHelper.getFormulaResult(titleFormula))); |
||||
|
||||
JSONArray array = JSONFactory.createJSON(JSON.ARRAY); |
||||
|
||||
List<Object> xValues = dataConfig.getX().getValues(); |
||||
List<Object> yValues = dataConfig.getY().getValues(); |
||||
List<Object> zValues = dataConfig.getZ().getValues(); |
||||
|
||||
double maxValue = Double.MIN_VALUE; |
||||
for (int i = 0, len = xValues.size(); i < len; i++) { |
||||
maxValue = Math.max(GeneralUtils.objectToNumber(zValues.get(i)).doubleValue(), maxValue); |
||||
|
||||
array.put(JSONFactory.createJSON(JSON.ARRAY).put(xValues.get(i)).put(yValues.get(i)).put(zValues.get(i))); |
||||
} |
||||
|
||||
jsonObject.put("series", JSONFactory.createJSON(JSON.OBJECT).put("type", "bar3D").put("data", array) |
||||
.put("bevelSize", 0.2).put("bevelSmoothness", 2).put("shading", "color")); |
||||
|
||||
jsonObject.put("xAxis3D", JSONFactory.createJSON(JSON.OBJECT).put("type", "category")) |
||||
.put("yAxis3D", JSONFactory.createJSON(JSON.OBJECT).put("type", "category")) |
||||
.put("zAxis3D", JSONFactory.createJSON(JSON.OBJECT).put("type", "value")); |
||||
|
||||
jsonObject.put("grid3D", JSONFactory.createJSON(JSON.OBJECT).put("boxWidth", 200).put("boxDepth", 80)); |
||||
|
||||
jsonObject.put("visualMap", JSONFactory.createJSON(JSON.OBJECT) |
||||
.put("max", maxValue) |
||||
.put("color", JSONFactory.createJSON(JSON.ARRAY).put("#d94e5d").put("#eac736").put("#50a3ba"))); |
||||
} |
||||
|
||||
@Override |
||||
protected String[] requiredJS() { |
||||
return new String[]{ |
||||
"com/fr/plugin/demo/demoWrapper.js", |
||||
"com/fr/plugin/demo/echarts.js", |
||||
"com/fr/plugin/demo/echarts-gl.js" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String wrapperName() { |
||||
return "demoWrapper"; |
||||
} |
||||
|
||||
private static final HyperLinkPara X = new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "X轴"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "X"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "0"}; |
||||
} |
||||
}; |
||||
|
||||
private static final HyperLinkPara Y = new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "Y轴"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "Y"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "1"}; |
||||
} |
||||
}; |
||||
|
||||
private static final HyperLinkPara[] PARAS = new HyperLinkPara[]{ |
||||
X, |
||||
Y |
||||
}; |
||||
|
||||
@Override |
||||
protected HyperLinkPara[] hyperLinkParas() { |
||||
return PARAS; |
||||
} |
||||
|
||||
@Override |
||||
protected List<BaseFormula> formulas() { |
||||
List<BaseFormula> list = new ArrayList<BaseFormula>(); |
||||
list.add(this.getTitleFormula()); |
||||
return list; |
||||
} |
||||
|
||||
@Override |
||||
protected ExportProcessor createExportProcessor() { |
||||
return new JSExportProcessor(); |
||||
} |
||||
|
||||
// @Override
|
||||
// protected DemoDataConfig designerDataConfig() {
|
||||
// DemoDataConfig demoDataConfig = new DemoDataConfig();
|
||||
// demoDataConfig.setX(new ExtendedField("days", new String[]{"Monday","Tuesday"}));
|
||||
// demoDataConfig.setY(new ExtendedField("name", new String[]{"Lily", "Marks"}));
|
||||
// demoDataConfig.setZ(new ExtendedField("money", new String[]{"100", "200"}));
|
||||
// return super.designerDataConfig();
|
||||
// }
|
||||
} |
@ -0,0 +1,63 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.extended.chart.AbstractDataConfig; |
||||
import com.fr.extended.chart.ExtendedField; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class DemoDataConfig extends AbstractDataConfig { |
||||
|
||||
private ExtendedField x = new ExtendedField(); |
||||
private ExtendedField y = new ExtendedField(); |
||||
private ExtendedField z = new ExtendedField(); |
||||
|
||||
public ExtendedField getX() { |
||||
return x; |
||||
} |
||||
|
||||
public void setX(ExtendedField x) { |
||||
this.x = x; |
||||
} |
||||
|
||||
public ExtendedField getY() { |
||||
return y; |
||||
} |
||||
|
||||
public void setY(ExtendedField y) { |
||||
this.y = y; |
||||
} |
||||
|
||||
public ExtendedField getZ() { |
||||
return z; |
||||
} |
||||
|
||||
public void setZ(ExtendedField z) { |
||||
this.z = z; |
||||
} |
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader reader) { |
||||
readExtendedField(x, "x", reader); |
||||
readExtendedField(y, "y", reader); |
||||
readExtendedField(z, "z", reader); |
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter writer) { |
||||
writeExtendedField(x, "x", writer); |
||||
writeExtendedField(y, "y", writer); |
||||
writeExtendedField(z, "z", writer); |
||||
} |
||||
|
||||
@Override |
||||
public ExtendedField[] dataSetFields() { |
||||
return new ExtendedField[]{ |
||||
x, |
||||
y, |
||||
z |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,55 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartReportDataPane; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class DemoReportDataPane extends AbstractExtendedChartReportDataPane<DemoDataConfig> { |
||||
|
||||
private TinyFormulaPane xPane; |
||||
private TinyFormulaPane yPane; |
||||
private TinyFormulaPane zPane; |
||||
|
||||
@Override |
||||
protected String[] fieldLabel() { |
||||
return new String[]{ |
||||
"X轴", |
||||
"Y轴", |
||||
"Z轴" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected TinyFormulaPane[] formulaPanes() { |
||||
if (xPane == null) { |
||||
xPane = new TinyFormulaPane(); |
||||
yPane = new TinyFormulaPane(); |
||||
zPane = new TinyFormulaPane(); |
||||
} |
||||
return new TinyFormulaPane[]{ |
||||
xPane, |
||||
yPane, |
||||
zPane |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(DemoDataConfig dataConf) { |
||||
populateField(xPane, dataConf.getX()); |
||||
populateField(yPane, dataConf.getY()); |
||||
populateField(zPane, dataConf.getZ()); |
||||
} |
||||
|
||||
@Override |
||||
protected DemoDataConfig update() { |
||||
DemoDataConfig dataConfig = new DemoDataConfig(); |
||||
|
||||
updateField(xPane, dataConfig.getX()); |
||||
updateField(yPane, dataConfig.getY()); |
||||
updateField(zPane, dataConfig.getZ()); |
||||
|
||||
return dataConfig; |
||||
} |
||||
} |
@ -0,0 +1,20 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.extended.chart.AbstractExtendedStylePane; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/25. |
||||
*/ |
||||
public class DemoStylePane extends AbstractExtendedStylePane<DemoChart>{ |
||||
@Override |
||||
protected List<ExtendedScrollPane<DemoChart>> initPaneList() { |
||||
List<ExtendedScrollPane<DemoChart>> list = new ArrayList<ExtendedScrollPane<DemoChart>>(); |
||||
list.add(new DemoTitlePane()); |
||||
list.add(new DemoBackgroundPane()); |
||||
return list; |
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class DemoTableDataPane extends AbstractExtendedChartTableDataPane<DemoDataConfig>{ |
||||
private UIComboBox xComboBox; |
||||
private UIComboBox yComboBox; |
||||
private UIComboBox zComboBox; |
||||
|
||||
@Override |
||||
protected String[] fieldLabel() { |
||||
return new String[]{ |
||||
"X轴", |
||||
"Y轴", |
||||
"Z轴" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected UIComboBox[] filedComboBoxes() { |
||||
if (xComboBox == null) { |
||||
xComboBox = new UIComboBox(); |
||||
yComboBox = new UIComboBox(); |
||||
zComboBox = new UIComboBox(); |
||||
} |
||||
return new UIComboBox[]{ |
||||
xComboBox, |
||||
yComboBox, |
||||
zComboBox |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(DemoDataConfig dataConf) { |
||||
populateField(xComboBox, dataConf.getX()); |
||||
populateField(yComboBox, dataConf.getY()); |
||||
populateField(zComboBox, dataConf.getZ()); |
||||
} |
||||
|
||||
@Override |
||||
protected DemoDataConfig update() { |
||||
DemoDataConfig dataConfig = new DemoDataConfig(); |
||||
|
||||
updateField(xComboBox, dataConfig.getX()); |
||||
updateField(yComboBox, dataConfig.getY()); |
||||
updateField(zComboBox, dataConfig.getZ()); |
||||
|
||||
return dataConfig; |
||||
} |
||||
} |
@ -0,0 +1,37 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.extended.chart.ExtendedHelper; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
|
||||
import javax.swing.JPanel; |
||||
import java.awt.BorderLayout; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/25. |
||||
*/ |
||||
public class DemoTitlePane extends ExtendedScrollPane<DemoChart>{ |
||||
private TinyFormulaPane title; |
||||
@Override |
||||
public void populateBean(DemoChart ob) { |
||||
title.populateBean(ExtendedHelper.formulaToString(ob.getTitleFormula())); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(DemoChart ob) { |
||||
ob.setTitleFormula(ExtendedHelper.stringToFormula(title.updateBean())); |
||||
} |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
JPanel panel = new JPanel(new BorderLayout()); |
||||
title = new TinyFormulaPane(); |
||||
panel.add(title, BorderLayout.CENTER); |
||||
return panel; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "标题"; |
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
package com.fr.plugin.demo; |
||||
|
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.design.mainframe.chart.AbstractChartAttrPane; |
||||
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartUIProvider; |
||||
import com.fr.extended.chart.ExtendedOtherPane; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class DemoUI extends AbstractExtendedChartUIProvider { |
||||
@Override |
||||
protected AbstractExtendedChartTableDataPane getTableDataSourcePane() { |
||||
return new DemoTableDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
protected AbstractReportDataContentPane getReportDataSourcePane() { |
||||
return new DemoReportDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
public String getIconPath() { |
||||
return "com/fr/plugin/demo/icon.png"; |
||||
} |
||||
|
||||
@Override |
||||
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener) { |
||||
return new AbstractChartAttrPane[]{ |
||||
new DemoStylePane(), |
||||
new ExtendedOtherPane() |
||||
}; |
||||
} |
||||
} |
After Width: | Height: | Size: 87 KiB |
@ -0,0 +1,13 @@
|
||||
demoWrapper = ExtendedChart.extend({ |
||||
|
||||
_init: function (dom, option) { |
||||
var chart = echarts.init(dom); |
||||
chart.setOption(option); |
||||
return chart; |
||||
}, |
||||
|
||||
_refresh: function (chart, option) { |
||||
chart.setOption(option); |
||||
}, |
||||
|
||||
}); |
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 5.1 KiB |
@ -1,7 +0,0 @@
|
||||
package com.fr.plugin.extended.chart.demo; |
||||
|
||||
/** |
||||
* Created by shine on 2018/3/24. |
||||
*/ |
||||
public class DemoBar2DChart { |
||||
} |
Loading…
Reference in new issue