const widgetname = this.options.widgetName;
//let widgetname = 'REPORT0';
if (!window.scrollConf) window.scrollConf = {};
if (!window.scrollConf[widgetname])
window.scrollConf[widgetname] = {
scrollSpeed: 15, //滚动速度, 每多少毫秒滚动1px, 可修改
refreshCycle: 3, //滚动几圈后进行刷新, 可修改
pauseOnNextRun: 3000, //下次滚动前的等待时间, 可修改
scrollCount: 1, //滚动圈数统计, 勿修改
mouseOverFlag: false, //鼠标悬浮标记, 勿修改
oldPos: -1, //<mark>跑</mark><mark>马</mark><mark>灯</mark>滚动初始位置, 勿修改
loadingFlag: 0, //刷新时正在加载的标记, 勿修改
};
//获取报表块滚动对象并隐藏滚动条
function getReportContentAndHideScrollBar(widgetname) {
let part;
if ($(".scrollDiv").length == 0) {
//判断是否安装了自定义滚动条插件
if (
$("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".frozen-center").length == 1
) {
//没安装,报表块有没有设置冻结
part = $("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".frozen-center"); //设置了冻结时
$("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".frozen-north").css("overflow", "hidden");
$("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".frozen-north").css("overflow-y", "hidden");
} else {
part = $("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".reportContent"); //没设置冻结时
}
} else {
part = $("div.fr-titlelayout[widgetname='" + widgetname + "']").find(".scrollDiv"); //如果安装了插件,所有元素都是.scrollDiv
}
part.css("overflow", "hidden"); //去除滚动条
part.css("overflow-x", "hidden");
part.css("overflow-y", "hidden"); //兼容IE的去除滚动条
return part;
}
//<mark>跑</mark><mark>马</mark><mark>灯</mark>滚动前预处理
function initScrollReport(widgetname) {
// console.log('start')
let part = getReportContentAndHideScrollBar(widgetname); //获取报表块
part.mouseover(function() { window.scrollConf[widgetname].mouseOverFlag = true; }); //添加鼠标悬浮事件
part.mouseleave(function() {window.scrollConf[widgetname].mouseOverFlag = false;}); //添加鼠标离开事件
window.scrollConf[widgetname].oldPos = -1; //将上次滚动位置预置为-1, 触发初次滚动
setTimeout(function() { scrollReport(widgetname, part); }); //触发滚动
}
//<mark>跑</mark><mark>马</mark><mark>灯</mark>滚动逻辑
function scrollReport(widgetname, part) {
// console.log(window.scrollConf.REPORT0);
let pause = 0;
if (!window.scrollConf[widgetname].mouseOverFlag) {
currentpos = part[0].scrollTop;
if (currentpos == window.scrollConf[widgetname].oldPos) {
pause = 1
part[0].scrollTop = 0; //回到第一行
if (!$("div.fr-titlelayout[widgetname='" + widgetname + "'] .loading-local-indicator")[0]) window.scrollConf[widgetname].scrollCount += 1; //如果正在加载中, 滚动计数不会累加
if ((window.scrollConf[widgetname].scrollCount + 1) % window.scrollConf[widgetname].refreshCycle == 0) {return refreshReport(widgetname, part);} //滚动计数是刷新数的倍数时, 触发刷新
} else {
window.scrollConf[widgetname].oldPos = currentpos;
part[0].scrollTop = currentpos + 1; //滚动1px
}
}
return setTimeout(function() {scrollReport(widgetname, part);}, window.scrollConf[widgetname].scrollSpeed + pause *window.scrollConf[widgetname].pauseOnNextRun); //触发下次滚动
}
//刷新报表块逻辑
function refreshReport(widgetname, part) {
_g().getWidgetByName(widgetname).gotoPage(1, "", true); //刷新报表块
//$("div.fr-titlelayout[widgetname='" + widgetname + "'] .loading-local-indicator").eq(0).remove();//移除刷新加载图片
// .remove();//移除正在加载文字
setTimeout(function() {
window.scrollConf[widgetname].loadingFlag = setInterval(function() {
if ($("div.fr-titlelayout[widgetname='" +widgetname +"'] .loading-local-indicator")[0]) return; //如果正在加载中, 则先不触发下次刷新
clearInterval(window.scrollConf[widgetname].loadingFlag); //清除正在加载监控
window.scrollConf[widgetname].loadingFlag = 0; //清除正在加载监控
initScrollReport(widgetname); //重新初始化报表<mark>跑</mark><mark>马</mark><mark>灯</mark>逻辑
}, window.scrollConf[widgetname].scrollSpeed); //监控报表是否正在刷新加载
});
}
setTimeout(function() {initScrollReport(widgetname)}); //触发首次初始化滚动