实时数据模板定时刷新

编辑
  • 文档创建者:doreen0813
  • 浏览次数:3806次
  • 编辑次数:8次
  • 最近更新:doreen0813 于 2019-03-18
  • 1、描述

    使用FineBI实时数据直连数据库的用户经常会将BIdashboard用作大屏展示,因此常常会需要将模板进行定时刷新,那么在BI中如何实现模板自动的定时刷新呢?下面我们来介绍一下实现方案。

    2、实现步骤

    2.1 定时刷新的js

    模板的定时刷新通过定制的JS来实现,复制如下代码创建refresh.js文件。

    setTimeout(function () { var b =document.title; var a =BI.designConfigure.reportId;//获取模板id //对模板id进行判断,实现指定模板刷新 if (a=="4e152a061f894c20937d385efa47b8fa") { setInterval(function () { BI.SharingPool.put("controlFilters", BI.Utils.getControlCalculations()); //Data.SharingPool.put("controlFilters", BI.Utils.getControlCalculations()); BI.Utils.broadcastAllWidgets2Refresh(true); }, 3000);//3000为定时刷新的频率,单位ms } }, 2000);

    其中在对模板ID进行判断时,需要修改判断条件为自身需要刷新的模板ID;且3000为定时刷新的间隔时间,也可根据自身需要进行修改。

    模板ID可直接通过编辑仪表板时的链接地址获取,比如新建仪表板时的链接地址为http://120.27.40.246:37799/webroot/decision/v5/design/report/222958729ec644d1ab130a209521192c/edit,则该仪表板的ID为222958729ec644d1ab130a209521192c,如下图:


    将创建好的refresh.js文件放至FineBI安装目录%FineBI%/webapps/webroot中,如下图:


    2.2 调用JS

    %FineBI%/webapps/webroot/WEB_INF/lib下的fine-bi-adapter-5.0.jar(5.1版本为fine-bi-adapter-5.1.jar)中找到show.html,如下图:


    在该html文件中插入下面的代码调用之前新建的refresh.js文件,如下图:

    <!-- 增加刷新功能 --> <script type="text/javascript" src="/webroot/refresh.js"></script>


    修改完成后保存至该jar包中。

    2.3 效果查看

    配置完成后,在该模板预览页面中按F12查看网页源代码判断js是否加载成功。如下图,模板成功加载了定时刷新的js。


    注:若在js里面改频率的话,修改完文件保存之后,清除浏览器缓存就可以了,不需要重启FineBI。  

    3、多个模板定时刷新示例

    上面介绍了单个实时数据模板定时刷新的操作步骤,如果要设置很多个模板都定时刷新,应该怎么操作呢?下面我们来详细介绍一下多个模板的操作步骤。

    1. 与2.1章节一样,创建refresh.js文件,内容与上述一致,仅在判断模板ID的地方,填入需要设置的多个模板的ID判断。

    setTimeout(function () { var b =document.title; var a =BI.designConfigure.reportId;//获取模板id //对模板id进行判断,实现指定模板刷新 if (a=="d5405b13bfeb454081be9627a9cfc97f" || a=="e1dcb1a61d6947e1adedced59bde9533") { setInterval(function () { BI.SharingPool.put("controlFilters", BI.Utils.getControlCalculations()); //Data.SharingPool.put("controlFilters", BI.Utils.getControlCalculations()); BI.Utils.broadcastAllWidgets2Refresh(true); }, 3000);//3000为定时刷新的频率,单位ms } }, 2000);

    比如上述代码中,我们设置的即为“d5405b13bfeb454081be9627a9cfc97f”和"e1dcb1a61d6947e1adedced59bde9533"两个模板的ID判断,还想增加的话,在判断ID处继续加入|| a=="模板ID"的条件即可。

    2. 将refresh.js文件放入%FineBI%/webapps/webroot下;

    3. 与2.2一致,修改fine-bi-adapter-5.0.jar(或者fine-bi-adapter-5.1.jar)中的show.html,增加如下代码:

    <!-- 增加刷新功能 --> <script type="text/javascript" src="/webroot/refresh.js"></script>

    保存至该jar包;

    4. 此时,查看设置的多个模板,每个都会实现定时刷新。若查看模板的网页源代码,每个都会增加2.3章节的定时刷新js。

    4、单个组件定时刷新

    若想要在模板展示时,对某个组件的数据进行定时刷新,可参考如下操作步骤:

    1. 在仪表板编辑页面打开浏览器控制台,选择Console页面,输入BI.designModel.widgets获取所有的组件信息,此时可以根据组件ID下方的name获取找到需要设置定时刷新的组件,获取该组件的KEY值,如下图:

          

    2. 与2.1章节一样,创建refresh.js文件,文件内容如下所示:

    setTimeout(function () { var b =document.title; var a =BI.designConfigure.reportId;//获取模板id //对模板id进行判断,实现指定模板刷新 if (a=="fdcc1cb3b96445fcba18fdf27684740b") { setInterval(function () { BI.Broadcasts.send(BICst.BROADCAST.REFRESH_PREFIX + "b07e0e200514dfcb"); //刷新指定组件 }, 3000); //3000为定时刷新的频率,单位ms } }, 2000); 

    与模板定时刷新js相比,增加了指定组件的判断。对模板id进行判断和刷新指定组件中需要修改模板ID和组件ID为自身需要刷新的对应ID值。

    3. 将refresh.js文件放入%FineBI%/webapps/webroot下;

    4. 与2.2一致,修改fine-bi-adapter-5.0.jar(或者fine-bi-adapter-5.1.jar)中的show.html,增加如下代码:
    <!-- 增加刷新功能 --> <script type="text/javascript" src="/webroot/refresh.js"></script>

    保存修改至该jar包;

    5. 此时,查看设置的模板,单个组件会实现定时刷新。若查看模板的网页源代码,会增加上述的定时刷新js。



    附件列表


    主题: 专题总结
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]