[ABI 5.1] 自动刷新

17503
7

lin786682931 初学数据Lv2

发表于2020-9-8 17:27

悬赏1

已解决

楼主
那请教下,我希望的是我的报表能根据一定时间自动刷新,然后可以滚动显示的话,如何设置,例如SQL里有1000条记录,我一页就100条,我希望每隔几秒自动切换成下一页,然后因为数据会一直增加比较频繁,能自动刷新我的数据。    然后我说的1000,是指数据分析那边的设计器里的刷新时间
最佳答案
本帖最后由 xxxl 于 2020-9-15 13:48 编辑

sql直接设置成不缓存,然后在报表中加自动刷新脚本。
在这位置添加客户端脚本
这里提供两个脚本一个是刷新一整个页面一个是刷新容器
  1. 刷新整个页面
  2. setTimeout(function(){
  3. _z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false');
  4. },500)//500为刷新时间间隔单位毫秒
  5. 刷新容器
  6. setInterval(function() {
  7. _zcalcn([['Widget1','HHH8','']]);
  8. }, 2000);//2000为刷新时间间隔单位毫秒
复制代码
对于滚动分析表的设置,需要把表格放在容器中,同上位置写脚本
代码如下
  1. /***
  2. **表格内容自动轮播脚本
  3. **@param tableDom内容滚动的表格,最好是表格的父DIV
  4. **@param visibleHeight 可视区的高度
  5. ***/
  6. function autoScrollTable(tableDom, visibleHeight) {
  7.     var marqueesHeight = visibleHeight;
  8.     var stopscroll = false;
  9.     var scrollElem = tableDom;
  10.         var freshScrollHeight = tableDom.firstElementChild.offsetHeight/4;
  11.     var preTop = 0;
  12.     var currentTop = 0;
  13.     var stoptime = 0;
  14.     with (scrollElem) {
  15.         style.height = parseFloat(marqueesHeight) + "px";
  16.         style.overflow = 'hidden';
  17.         noWrap = true;
  18.     }
  19.     var scrollUp = function () {
  20.         if (stopscroll) {
  21.             setTimeout(scrollUp, 50);
  22.             return;
  23.         }
  24.         currentTop += 1;
  25.         if (currentTop == (marqueesHeight + 1)) {
  26.             stoptime += 1;
  27.             currentTop -= 1;
  28.             if (stoptime == 1) {
  29.                 currentTop = 0;
  30.                 stoptime = 0;
  31.             }
  32.         } else {
  33.             preTop = scrollElem.scrollTop;
  34.             scrollElem.scrollTop += 1;
  35.             if (preTop == scrollElem.scrollTop) {
  36.                                 //console.log("preTop =" + preTop);
  37.                 scrollElem.scrollTop = freshScrollHeight + 2;
  38.                 scrollElem.scrollTop += 1;
  39.             }
  40.         }
  41.         setTimeout(scrollUp, 50);//50控制滚动频率,越小越快单位毫秒
  42.     };
  43.     var restartScroll = function () {
  44.         scrollElem.scrollTop = 0;
  45.         setTimeout(scrollUp, 50);
  46.     };
  47.     jQuery(tableDom).hover(function () {
  48.         stopscroll = true;
  49.     }, function () {
  50.         stopscroll = false;
  51.     });
  52.     //控制开始是否延迟
  53. setTimeout(restartScroll, 0);
  54. }
  55. /*
  56. *复制表格每行内容
  57. */
  58. function copyTableRows(tableDom) {
  59.     var tBody = tableDom.firstElementChild.children[1];
  60.         var rowList = tBody.children;
  61.     var rowLength = rowList.length;
  62.     for(var i=0 ; i<rowLength ; i++){
  63.         var trow = rowList[i];
  64.         var newTR = tBody.insertRow(rowLength+i);
  65.                 newTR.style.height = trow.style.height;
  66.                 copyRowCells(trow , newTR);
  67.     }
  68. }
  69. /*
  70. *复制每行的列内容
  71. */
  72. function copyRowCells(trow , newTR) {
  73.     var cellList = trow.children;
  74.     var cellLength = cellList.length;
  75.     var cellHtml = "";
  76.     for(var i=0 ; i<cellLength ; i++){
  77.     var cell = cellList[i];
  78.         cellHtml += cell.outerHTML;
  79.     }
  80.     newTR.innerHTML = cellHtml;
  81. }
  82. //复制表格行内容 GRID1表格代码  HHH2容器代码
  83. copyTableRows(document.getElementById('GRID1'));
  84. autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);
复制代码
如果设置了滚动表格也就没必要设置自动点击下一页,且暂时没有这样的脚本。
因为滚动表格需要放在容器中,所以实际上需求刷新可以使用容器刷新脚本。
7个回答

只看楼主

xxxl 数据领袖Lv6

发表于2020-9-8 17:27

只看该作者

取消 关注该作者的回复

沙发

本帖最后由 xxxl 于 2020-9-15 13:48 编辑

sql直接设置成不缓存,然后在报表中加自动刷新脚本。
在这位置添加客户端脚本


这里提供两个脚本一个是刷新一整个页面一个是刷新容器
  1. 刷新整个页面
  2. setTimeout(function(){
  3. _z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false');
  4. },500)//500为刷新时间间隔单位毫秒
  5. 刷新容器
  6. setInterval(function() {
  7. _zcalcn([['Widget1','HHH8','']]);
  8. }, 2000);//2000为刷新时间间隔单位毫秒
复制代码
对于滚动分析表的设置,需要把表格放在容器中,同上位置写脚本
代码如下
  1. /***
  2. **表格内容自动轮播脚本
  3. **@param tableDom内容滚动的表格,最好是表格的父DIV
  4. **@param visibleHeight 可视区的高度
  5. ***/
  6. function autoScrollTable(tableDom, visibleHeight) {
  7.     var marqueesHeight = visibleHeight;
  8.     var stopscroll = false;
  9.     var scrollElem = tableDom;
  10.         var freshScrollHeight = tableDom.firstElementChild.offsetHeight/4;
  11.     var preTop = 0;
  12.     var currentTop = 0;
  13.     var stoptime = 0;
  14.     with (scrollElem) {
  15.         style.height = parseFloat(marqueesHeight) + "px";
  16.         style.overflow = 'hidden';
  17.         noWrap = true;
  18.     }
  19.     var scrollUp = function () {
  20.         if (stopscroll) {
  21.             setTimeout(scrollUp, 50);
  22.             return;
  23.         }
  24.         currentTop += 1;
  25.         if (currentTop == (marqueesHeight + 1)) {
  26.             stoptime += 1;
  27.             currentTop -= 1;
  28.             if (stoptime == 1) {
  29.                 currentTop = 0;
  30.                 stoptime = 0;
  31.             }
  32.         } else {
  33.             preTop = scrollElem.scrollTop;
  34.             scrollElem.scrollTop += 1;
  35.             if (preTop == scrollElem.scrollTop) {
  36.                                 //console.log("preTop =" + preTop);
  37.                 scrollElem.scrollTop = freshScrollHeight + 2;
  38.                 scrollElem.scrollTop += 1;
  39.             }
  40.         }
  41.         setTimeout(scrollUp, 50);//50控制滚动频率,越小越快单位毫秒
  42.     };
  43.     var restartScroll = function () {
  44.         scrollElem.scrollTop = 0;
  45.         setTimeout(scrollUp, 50);
  46.     };
  47.     jQuery(tableDom).hover(function () {
  48.         stopscroll = true;
  49.     }, function () {
  50.         stopscroll = false;
  51.     });
  52.     //控制开始是否延迟
  53. setTimeout(restartScroll, 0);
  54. }
  55. /*
  56. *复制表格每行内容
  57. */
  58. function copyTableRows(tableDom) {
  59.     var tBody = tableDom.firstElementChild.children[1];
  60.         var rowList = tBody.children;
  61.     var rowLength = rowList.length;
  62.     for(var i=0 ; i<rowLength ; i++){
  63.         var trow = rowList[i];
  64.         var newTR = tBody.insertRow(rowLength+i);
  65.                 newTR.style.height = trow.style.height;
  66.                 copyRowCells(trow , newTR);
  67.     }
  68. }
  69. /*
  70. *复制每行的列内容
  71. */
  72. function copyRowCells(trow , newTR) {
  73.     var cellList = trow.children;
  74.     var cellLength = cellList.length;
  75.     var cellHtml = "";
  76.     for(var i=0 ; i<cellLength ; i++){
  77.     var cell = cellList[i];
  78.         cellHtml += cell.outerHTML;
  79.     }
  80.     newTR.innerHTML = cellHtml;
  81. }
  82. //复制表格行内容 GRID1表格代码  HHH2容器代码
  83. copyTableRows(document.getElementById('GRID1'));
  84. autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);
复制代码
如果设置了滚动表格也就没必要设置自动点击下一页,且暂时没有这样的脚本。
因为滚动表格需要放在容器中,所以实际上需求刷新可以使用容器刷新脚本。

lin786682931 初学数据Lv2

发表于2020-9-15 13:13

只看该作者

取消 关注该作者的回复

板凳

xxxl 发表于 2020-9-8 17:27
sql直接设置成不缓存,然后在报表中加自动刷新脚本。
在这位置添加客户端脚本
这里提供两个脚本一个是刷新 ...

这个自动刷新和滚动能一起放进去么?

xxxl 数据领袖Lv6

发表于2020-9-15 13:32

只看该作者

取消 关注该作者的回复

地板

lin786682931 发表于 2020-9-15 13:13
这个自动刷新和滚动能一起放进去么?

可以 但是不会很流畅,因为每次刷新都会重新滚动

lin786682931 初学数据Lv2

发表于2020-9-15 13:34

只看该作者

取消 关注该作者的回复

5#

xxxl 发表于 2020-9-15 13:32
可以 但是不会很流畅,因为每次刷新都会重新滚动

自动刷新的时间和滚动的时间,可否帮忙说下是哪个,因为要根据单据频率做刷新时间的安排

xxxl 数据领袖Lv6

发表于2020-9-15 13:48

只看该作者

取消 关注该作者的回复

6#

lin786682931 发表于 2020-9-15 13:34
自动刷新的时间和滚动的时间,可否帮忙说下是哪个,因为要根据单据频率做刷新时间的安排 ...

我重新编辑了代码,注释在上面了您再看一下

恩智浦凯文 初学数据Lv2

发表于2021-7-29 09:12

只看该作者

取消 关注该作者的回复

8#

sql直接设置成不缓存,在哪里设置?

恩智浦凯文 初学数据Lv2

发表于2022-5-9 14:57

只看该作者

取消 关注该作者的回复

9#

xxxl 发表于 2020-9-8 17:27
sql直接设置成不缓存,然后在报表中加自动刷新脚本。
在这位置添加客户端脚本
这里提供两个脚本一个是刷新 ...

老师好!
我做了ETL过程流的调度,每十五分钟刷新一次,数据分析页面也是设置了15分钟刷新了一次。但是ETL并没有及时刷新,手动运行ETL,数据分析页面再刷新会更新新的数据。求助是什么原因,怎么解决,谢谢!


ETL调度设置如下:

数据分析刷新设置如下:
setTimeout(function(){

_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false');

},900000)


另外,以上代码需要 sql直接设置成不缓存,这个在哪里设置?



我的数据分析页面还时而报警如下:请问是什么原因?




登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号