【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
图表插件是用于丰富帆软的图表类型,旨在帮助用户更好地做数据可视化展现。开发者需要通过帆软开放的接口,参考下面的demo和文档来制作插件。
我们建议您在上手开发插件之前,先体验一下插件使用的具体情形,搭建环境的具体步骤在其他文档中写的很具体,这里不去赘述。
plugins-calendarchart --src --com.fr.plugins.calendarchart --custompie --ChartConfigPane.java --DemoChartsPie.java --demoChartsPieUI.java --PieChart.java --images --pie256.png --web --echarts.bridge.js --echarts.loader.js --echarts.min.js --EChartsFileLoader.java --build.xml --plugin.xml --plugins-calendarchart.iml
此目录下存放第三方图表插件接口调用类,需要实现相应的方法。
此目录下存放插件的相关图片,供报表表单页面展示。
此目录下存放前台js,供图表预览时展示。
该文件用于插件包构建,请参考文档。
该文件包含插件的接入点描述信息,请参考文档。
IEDA项目的配置。
接口详细介绍,请参阅文档。
1) 开发过程:一共三个部分
数据抽取部分:设计器右侧的图表属性表-数据部分
前端展示样式:设计器右侧的图表属性表-样式部分
前端展示的js:图表预览展示的页面
2) 按照自己开发的类修改plugin.xml以及build.xml,请上面提到的文档。
1) 默认数据集和图表属性+ js,除了js,我们需要继承以下三个类,并实现里面具体的方法:
Charts类:图表类
AbstractIndependentChartsProvider类:插件图表接口
AbstractJavaScriptFileHandler类:插件图表界面接口
第一步,继承Charts类,实现以下几个方法:
toJSON():通过getChartData(),这里有你需要的数据,并转成json,前端会拿到这个json
getChartID():返回的应该和plugin.xml配置中的相同
writeXML和readXML可以考虑不自定义实现,如需自定义实现下面会有介绍
public class YourCharts extends Charts { @Override public JSONObject toJSON(Repository repo) throws JSONException { //通过getChartData()得到你需要的数据,把这些数据转成自定义的json格式,前端会收到这个json return null; } @Override public String getChartID() { //这里返回值与plugin.xml配置中的plotID一致。 return yourPlotID; } @Override public void writeXML(XMLPrintWriter xmlPrintWriter) { //图表属性配置信息会被存储在xml中,不考虑自定义图表样式,不用实现。 } @Override public void readXML(XMLableReader xmLableReader) { //和writeXML一样,这里是读配置信息 } }
第二步,继承AbstractIndependentChartsProvider类,实现以下几个方法:
getChartName():返回插件的名字,供报表页面新增图表使用
getChartTypes():返回上一步创建的存储图表数据的类
getRequiredJS():你的图表交互的js
getWrapperName():JS对象名,该对象一般是一个函数,执行后会在给定的dom中绘制图表
getChartImagePath():图表的图标,文件存在images下面
currentAPILevel():当前接口的API等级用于判断是否要升级插件
public class YourChartsProvider extends AbstractIndependentChartsProvider { @Override public String getChartName() { return "你的图表插件名字"; } @Override public Chart[] getChartTypes() { //返回上一步创建的存储图表数据的类,即YourCharts return new YourCharts[]{new YourCharts()}; } @Override public String[] getRequiredJS() { //你的图表交互的js,所依赖的其他js文件,比如echarts.js在另外地方配置,后边会提到 return new String[]{ "/com/fr/plugins/xxx/web/echarts.bridge.js" }; } @Override public String getWrapperName() { //JS对象名,该对象一般是一个函数,执行后会在给定的dom中绘制图表 return "EChartsFactory"; } @Override public String getChartImagePath() { //你的图表插件的图标 return "com/fr/plugins/xxx/images/xxx.png"; } @Override public int currentAPILevel() { //当前接口的API等级用于判断是否要升级插件 return CURRENT_API_LEVEL; } }