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