1. 概述
1.1 问题描述
对于监控系统,数据库中的数据是实时更新的,希望报表也能够实时更新数据,如实时监控股价走势。要如何设置才能实现报表的定时刷新呢?
1.2 实现思路
通过为报表模板添加「加载结束」事件实现。
FVS 可视化看板实现定时刷新可参见:FVS模板页面定时刷新 。
决策报表实现定时刷新请参考:JS实现决策报表定时刷新 。
2. 示例
2.1 打开模板
点击下载模板:模板.cpt ,在设计器中打开。
2.2 添加事件
打开一个需要实时刷新的模板,点击「模板>模板 Web 属性>分页预览设置」,选择「为该模板单独设置」,添加一个「加载结束」事件。如下图所示:
事件内容中 JS 使用 setInterval 方法,以指定周期调用一个定时刷新报表页面的函数。
JavaScript 代码如下:
setInterval("self.location.reload();",10000); //10000ms即每10s刷新一次页面
2.3 效果预览
保存模板预览,在 PC 和移动端中都会每 10s 刷新一次报表。
2.3.1 PC 端
2.3.2 移动端
HTML5 端效果如下,如下图所示:
注:不支持 App 端。
2.4 根据具体时间定时刷新
根据设置具体时间,在到达设置时间时刷新一次报表。
打开一个需要实时刷新的模板,点击「模板>模板 Web 属性>分页预览设置」,选择「为该模板单独设置」,添加一个「加载结束」事件。如下图所示:
事件内容中 JS 使用 setInterval 方法,以指定周期调用一个定时刷新报表页面的函数。
// 获取当前时间对象
var now = new Date();
// 计算明天早上8:30的时间戳
var nextDayTime = new Date();
nextDayTime.setMinutes(30);
nextDayTime.setHours(8);
nextDayTime.setDate(now.getDate()+1);
// 计算距下次执行的时间差(以毫秒为单位)
var timeUntilNextExecution = nextDayTime - now;
// 使用setInterval创建定时器,每天早上8:30执行一次
setInterval("self.location.reload();", timeUntilNextExecution);
3. 模板下载
点击下载模板:普通报表定时刷新JS模板.cpt