【仅供内部供应商使用,不提供对外解答和培训】
...
在原有的图表接口基础之上,对接口进行了简化和修改,让用户可以快速的写出第三方图表插件并使用。
| Code Block | ||||
|---|---|---|---|---|
| ||||
package com.fr.chart.fun;
import com.fr.chart.chartattr.Chart;
import com.fr.stable.fun.Level;
/**
* Created by eason on 15/4/21.
* 图表接口
*/
public interface IndependentChartProvider extends Level {
String XML_TAG = "IndependentChartProvider";
int CURRENT_API_LEVEL = 3;
/**
* 图表的国际化的名字的key
*
* @return 图表国际化的名字的key
*/
String getChartName();
/**
* 该种图表所有的图表类型,比如柱形图就有堆积柱形图,百分比堆积柱形图等等
*
* @return 所有的图表类型
*/
Chart[] getChartTypes();
/**
* 图表在web端展现时需要的JS文件
*
* @return JS文件数组
*/
String[] getRequiredJS();
/**
* JS对象名,该对象一般是一个函数,执行后会在给定的dom中绘制图表
*
* @return JS对象名
*/
String getWrapperName();
/**
* 定义在设计器里展现的图的路径
*
* @return 图的路径
*/
String getChartImagePath();
} |
上述接口用户需要直接实现,里面具体需要实现的方法示例如下:
| Code Block | ||||
|---|---|---|---|---|
| ||||
package com.fr. |
plugins. |
democharts. |
pie; |
import com.fr.chart.chartattr. |
Chart; |
import com.fr. |
chart. |
fun.IndependentChartProvider; public class DemoChartsPie implements IndependentChartProvider { public static pieChart[] charts = new pieChart[] { new pieChart(), }; @Override public String getChartName() { return "用户自定义图表"; } @Override public String[] getRequiredJS() { return new String[]{ "/com/fr/plugins/democharts/common/web/echarts.bridge.js" }; } @Override public String getWrapperName() { return "EChartsFactory"; } @Override public Chart[] getChartTypes() { return charts; } @Override public String getChartImagePath() { return "com/fr/plugins/democharts/pie/images/pie256.png"; } @Override public int currentAPILevel() { return 3; } } |
| Code Block | ||||
|---|---|---|---|---|
| ||||
package |
com.fr.design. |
chart |
. |
fun |
; |
/** |
* Created by eason on 14/12/29. |
* |
* @since 8.0 |
* 自定义图表类型设设计界面接口 |
*/ |
public interface IndependentChartUIProvider extends Level { |
String XML_TAG = "IndependentChartUIProvider"; |
int CURRENT_API_LEVEL = 3; |
/** |
* 当前接口的API等级,用于判断是否需要升级插件 |
* |
* @return API等级 |
*/ |
int currentAPILevel(); |
/** |
* 图表配置面板 |
* |
* @return图表配置面板 |
*/ |
ChartEditPaneProvider getChartConfigPane(String plotID); |
......(其他方法不用实现) |
} |
此接口用户不必实现 ,只需要继承 AbstractIndependentChartUI4Custom 类,并实现如下方法即可
(1)ThirdChartEditPane用户的图表配置面板ChartConfigPane类需要继承此抽象类,并实现
void populateBean(Object ob);
void updateBean(Object ob);方法。
package com.fr.design.mainframe.chart; |
|---|
(2)ThirdChart
用户的图表配置面板ChartConfig类需要继承此抽象类,并实现
String getChartID()(此ID要和配置文件中对应图表的plotID一致)void writeXML(XMLPrintWriter xmlPrintWriter)void readXML(XMLableReader xmLableReader)JSONObject toJSONObject(Repository repository) throws JSONExceptionImage toImage(int i, int i1, int i2)Image toImage(int i, int i1, int i2, CallbackEvent callbackEvent, ChartDataParam chartDataParam)方法。
package com.fr.chart.chartattr; ......
|
|---|
<extra-chart> |
|---|