【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

请注意,阅读此文档需要您拥有基础的JAVA和JS知识,您有必要亲自尝试使用FineReport的图表功能,如果您在阅读中出现疑问,可以比对零基础文档

 

图表插件介绍

图表插件是用于丰富帆软的图表类型,旨在帮助用户更好地做数据可视化展现。开发者需要通过帆软开放的接口,参考下面的demo和文档来制作插件。

安装FineReport和搭建插件开发环境

我们建议您在上手开发插件之前,先体验一下插件使用的具体情形,搭建环境的具体步骤在其他文档中写的很具体,这里不去赘述。

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

1.custompie

此目录下存放第三方图表插件接口调用类,需要实现相应的方法。

2.images

此目录下存放插件的相关图片,供报表表单页面展示。

3.web

此目录下存放前台js,供图表预览时展示。

4.build.xml

该文件用于插件包构建,请参考文档

5.plugin.xml

该文件包含插件的接入点描述信息,请参考文档

6.plugins-calendarchart.iml

IEDA项目的配置。

接口介绍

接口详细介绍,请参阅文档

我的demo

1.demo开发概述

1) 开发过程:一共三个部分

数据抽取部分:设计器右侧的图表属性表-数据部分

前端展示样式:设计器右侧的图表属性表-样式部分

前端展示的js:图表预览展示的页面

2) 按照自己开发的类修改plugin.xml以及build.xml,请上面提到的文档。

2.下面详细讲一下开发过程吧

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;


    }


}


  • No labels