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

Page tree

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

Skip to end of metadata
Go to start of metadata

学习一门新技术,最快的方式就是模仿,参考帆软工程师精心设计的demo,会帮助您尽快熟悉开发所用的相关接口,并且您可以直接加以修改来实现自己的创意。

第一个demo是使用eChart制作的日历图插件,eChart是我国百度公司设计并开源的图表框架,作为BAT中技术氛围最为浓厚的企业,eChart库是国内最全面使用最为简单的图表框架。

您可以访问eChart的官网来获取详细资料。

 

我们需要用到之前所提的git工具从开源库中下载demo的源代码。地址为https://git.oschina.net/fanruan/plugins-calendarchart.git

 

在C:/developer下右键鼠标选择git gui here,按照图示粘贴克隆地址和目标目录填写demo1

 

 

稍事等待,很快就可以完成。接下来需要在IDEA编辑器中操作。

 

1.打开finereport源码工程,点击编辑器右上角工程结构图标。

 

 

2.在弹出的面板中选择左侧的模块,再点击加号选择导入模块。

 

 

3.在文件对话框中选中C:\developer\demo1下面的plugins-calendarchart.iml文件,然后如图所示删除红色提示的错误依赖。

 

 

 

4.接着删除designer依赖项。

 

 

5.然后在designer模块下增加对plugins-calendarchart模块的依赖。

 

 

6.将C:\developer\demo1下面的plugin.xml文件拷贝到您平常使用FineReportV8的工作目录下,通常为C:\FineReport_8.0\WebReport\WEB-INF\plugins这样一个目录,在其下新建一个plugin-demo1的文件夹,拷贝至此。

 

7.在编辑器中启动程序,在打开的帆软编辑器中插入图表。(工具栏中点击图表的图标)

 

 

观察到图表类型中多了“日历活动图表”这一项,是不是很棒。

 

8.为了体验日历图的效果,我们需要专门的由日期和数值组成的示例数据,以及帆软连接数据库所必须的jar包。

访问百度网盘链接:http://pan.baidu.com/s/1kU6ltJL  密码:qh7j 下载包含这两个文件的压缩包。

 

9.解压缩后拷贝jar包到C:\developer\lib\report下面。拷贝db数据文件到您平常使用FineReportV8的工作目录下,通常为C:\FineReport_8.0\WebReport\这样一个目录。

 

 

10.在编辑器中启动程序(如果之前的设计器没关闭请先关闭),启动后正常新建数据连接。

 

 

拷贝原先的FRDemo

 

 

将此处选中的文件名称更改为demo数据文件的名称,即“图表插件demo1示例数据”

 

 

最后点击确定保存。

 

11.新建一个模板数据集查询,如图所示进行配置。

 

 

12.插入“日历活动图表”类型的图表,拖拽单元格使其保持合适的大小

 

 

13.选中图表,在右侧的图表属性表中按图示配置。

 

 

14.保存文件后点击预览,即可在弹出的浏览器中看到最终效果,是不是很酷炫呢。

 

  • No labels

23 Comments

  1. 1.demo插件里面的代码有问题,麻烦更新下~

    2. project里面的代码调用了一个plugin.versionCompareTo函数在lib的包里面不存在,是不是要更新?

    1. 什么样的问题可以在开发者交流群里讨论

  2. Anonymous

    报错:

    Error:(20, 8) java: com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane不是抽象的, 并且未覆盖com.fr.design.mainframe.chart.ChartsConfigPane中的抽象方法acceptType()

    解决:

    ChartConfigPane类中的accptType()方法有误,需要改成acceptType()

     

     

     

     

    1. Anonymous

       

      楼上正解

       

  3. Anonymous

    楼上正解

  4. 出现了

    Error:(20, 54) java: 类型com.fr.design.mainframe.chart.ChartsConfigPane不带有参数

    Error:(25, 9) java: 找不到符号
    符号: 方法 setLayout(java.awt.BorderLayout)
    位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane

    Error:(28, 9) java: 找不到符号
    符号: 方法 add(javax.swing.JPanel,java.lang.String)
    位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane

    Error:(35, 17) java: 无法将类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane中的方法 update应用到给定类型;
    需要: com.fr.chart.chartattr.ChartCollection,com.fr.plugins.calendarchart.custompie.PieChartWithCustomPane
    找到: com.fr.chart.chartattr.ChartCollection
    原因: 实际参数列表和形式参数列表长度不同

    Error:(38, 9) java: 找不到符号
    符号: 方法 setSize(int,int)
    位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane

    Error:(39, 9) java: 找不到符号
    符号: 方法 setVisible(boolean)
    位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane

    Error:(42, 5) java: 方法不会覆盖或实现超类型的方法

    有谁遇到过这些个错误了?请教一下

  5. Anonymous

    当配置好了之后才发现FineReport没有Ubuntu的

  6. 第11步中,Windows电脑不能修改文件名

  7. 严重: 报表计算中[Name : WorkBook3.cpt] [Parameter : {__LOCALE__ : zh_CN[java.util.Locale], __STREAMCLOSED__ : [java.lang.String], REPORTLET : WorkBook3.cpt[java.lang.String], REPORTNAME : WorkBook3.cpt[java.lang.String]}][Type : page] :
    null
    java.lang.NullPointerException
    at com.fr.chart.chartdata.NormalChartData.dealHugeData(Unknown Source)
    at com.fr.chart.chartdata.TopDefinition.createTopChartData(Unknown Source)
    at com.fr.chart.chartdata.TableDataDefinition.calcu4ChartData(Unknown Source)
    at com.fr.report.core.A.J.dealWithChart(Unknown Source)
    at com.fr.report.core.A.J$_D.B(Unknown Source)
    at com.fr.report.core.A.J$_D.o(Unknown Source)
    at com.fr.report.core.A.J$_D.A(Unknown Source)
    at com.fr.report.core.A.J$_D.A(Unknown Source)
    at com.fr.report.core.A.J.execute4ECReport(Unknown Source)
    at com.fr.report.core.A.J.execute(Unknown Source)
    at com.fr.report.worksheet.WorkSheet.execute(Unknown Source)
    at com.fr.report.core.sheet.AbstractWorkBookExecutor._execute(Unknown Source)
    at com.fr.report.core.sheet.AbstractWorkBookExecutor.execute(Unknown Source)
    at com.fr.main.impl.WorkBook.execute(Unknown Source)
    at com.fr.log.LogUtils.executeAndLogRecord(Unknown Source)
    at com.fr.log.LogUtils.executeAndLogRecord(Unknown Source)
    at com.fr.web.cache.ReportCache.getResultWorkBook(Unknown Source)
    at com.fr.stable.PageActor.getResultBookFromCacheIfNeed(Unknown Source)
    at com.fr.main.impl.WorkBookTemplateDelegate.execute(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.calResultWorkBook(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.initBook2Show(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.getWorkBook2Show(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.getResultWorkBook(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.createPageSetChain(Unknown Source)
    at com.fr.web.core.ReportSessionIDInfor.getReportPage(Unknown Source)
    at com.fr.web.core.A.EC.A(Unknown Source)
    at com.fr.web.core.A.EC.A(Unknown Source)
    at com.fr.web.core.A.sB.A(Unknown Source)
    at com.fr.web.core.A.GB.actionCMD(Unknown Source)
    at com.fr.web.core.WebActionsDispatcher.dealForActionCMD(Unknown Source)
    at com.fr.web.core.WebActionsDispatcher.dealForActionDefaultCmd(Unknown Source)
    at com.fr.web.core.A.pB.process(Unknown Source)
    at com.fr.web.core.ReportDispatcher.dealWithOp(Unknown Source)
    at com.fr.web.core.ReportDispatcher.dealWeblet(Unknown Source)
    at com.fr.web.core.ReportDispatcher.dealWithRequest(Unknown Source)
    at com.fr.web.BaseServlet.doGet(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
    at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
    at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
    at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
    at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
    at org.mortbay.http.HttpServer.service(HttpServer.java:909)
    at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
    at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
    at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
    at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
    at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
    at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

    1. 请问解决了吗

  8. Anonymous

    WARNING: null
    java.lang.NullPointerException
    at com.fr.design.parameter.ParameterDefinitePane.getPreferredSize(ParameterDefinitePane.java:176)
    at com.fr.design.gui.icontainer.UIModeControlContainer.<init>(UIModeControlContainer.java:52)
    at com.fr.design.mainframe.JWorkBook$1.<init>(JWorkBook.java:108)
    at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:108)
    at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:80)
    at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:102)
    at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:87)
    at com.fr.design.mainframe.JWorkBook.<init>(JWorkBook.java:91)
    at com.fr.start.Designer.createNewTemplate(Designer.java:326)
    at com.fr.design.mainframe.DesignerFrame.addAndActivateJTemplate(DesignerFrame.java:716)
    at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:242)
    at com.fr.start.BaseDesigner.<init>(BaseDesigner.java:100)
    at com.fr.start.Designer.<init>(Designer.java:75)
    at com.fr.start.Designer.main(Designer.java:71)

    七月 28, 2017 12:22:05 下午
    WARNING: null
    java.lang.NullPointerException
    at com.fr.design.parameter.ParameterDefinitePane.getPreferredSize(ParameterDefinitePane.java:176)
    at com.fr.design.gui.icontainer.UIModeControlContainer.<init>(UIModeControlContainer.java:52)
    at com.fr.design.mainframe.JWorkBook$1.<init>(JWorkBook.java:108)
    at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:108)
    at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:80)
    at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:102)
    at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:87)
    at com.fr.design.mainframe.JWorkBook.<init>(JWorkBook.java:91)
    at com.fr.start.Designer.createNewTemplate(Designer.java:326)
    at com.fr.design.mainframe.DesignerFrame.addAndActivateJTemplate(DesignerFrame.java:716)
    at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:242)
    at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:257)
    at com.fr.start.BaseDesigner.<init>(BaseDesigner.java:100)
    at com.fr.start.Designer.<init>(Designer.java:75)
    at com.fr.start.Designer.main(Designer.java:71)

    怎么解决??

    1. 请问你的问题解决了吗?我和你遇到一样的问题,我把安装的帆软客户端关闭再重新打开,然后执行那个工程不报错了,再把客户端关掉,重新执行工程,可以成功了

  9. 第6步需要增加一项,将demo1文件夹下的fr-plugin-echarts-1.0.jar粘贴到对应的 FineReport_8.0\lib 目录下,在插件应用里-->我的插件中选择要使用的插件然后启用。使用时启动软件后插件初始状态经常是禁用状态不知道为什么。

  10. 第7步未能出现预期效果

    感觉上是因为第6步,plugin.xml拷贝的目的文件夹不对。

    按照教程上的做法,应该只有在本地安装的FireReport才能在图表类型中看到“日历活动图表”

    编辑器生成的FireReport只能在插件管理中看到安装了日历活动图表,无法在插入图表类型中出现

  11. 第6步在mac环境下该放到哪个目录?   项目在/Users/xxx/fanruan/project, Demo1目录在/Users/xxx/fanruan/demo1

    1. 找到了, 在/Applications/FineReport目录

  12. 第7步未能出现预期效果 不能在图表类型中看到“日历活动图表” 求解

    1. Anonymous

      将FineReport关闭,然后在IJ里重新run designer

  13. Anonymous

    第10步中‘拷贝原先的FRDemo’,我运行起来的FineReport这里没有这个文件,这里是怎么弄的?

    1. 点击那个图标

  14. Anonymous

    使用demo1按步骤操作,打开编辑器查看图表并未出现"日历活动图表"这一项

  15. Anonymous

    你好,输入select  * from 步数;但是他提示找不到 no such table

  16. 刚刚根据提示一步一步的走下来,成功的在设计器上用了这个插件