當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

JS實現決策報表中滾屏/跑馬燈效果

1. 概述

1.1 問題描述

普通報表可以參考 JS實現自動滾屏/跑馬燈效果 實現跑馬燈效果,決策報表中報表塊如何實現下圖所示的跑馬燈效果呢?

222

1.2 實現思路

通過給報表塊添加「初始化後」 JS 事件實現隐藏滾動條的跑馬燈的效果。

2. 示例

2.1 數據準備

新建決策報表,新建數據集 ds1 ,SQL 語句爲:SELECT * FROM 銷量

1589965979355334.png

2.2 報表設計

1)将報表塊report0拖入到 body 組件中,如下圖設計報表塊的表格。

image.png

2)選中報表塊report0,點擊編輯,凍結第 1 行,如下圖所示:

2020-11-19_14-29-39.png

2.3 添加事件

選中報表塊report0,添加初始化事件,如下圖所示:

2020-11-19_14-32-18.png

JavaScript 代碼如下:

setTimeout(function({
       //隐藏報表塊report0的滾動條(此報表塊名爲report0,根據具體情況修改)
    $("div[widgetname=REPORT0]").find(".frozen-north").css({
        'overflow-x':'hidden',
        'overflow-y':'hidden'
    });
    $("div[widgetname=REPORT0]").find(".frozen-center").css({
        'overflow-x':'hidden',
        'overflow-y':'hidden'
    });
 
},1000);
 
window.flag1 = true;
var self1 = this;
//鼠标懸停,滾動停止
setTimeout(function({
    $("div[widgetname=REPORT0]").find(".frozen-center").mouseover(function({
        window.flag1 = false;
    });
 
    //鼠标離開,繼續滾動
    $("div[widgetname=REPORT0]").find(".frozen-center").mouseleave(function({
        window.flag1 = true;
    });
 
    var old = -1;
    var interval = setInterval(function({
        if (!self1.isVisible()) {
            return;
        }
        if (window.flag1) {
            currentpos1 = $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop;
            if (currentpos1 == old && 0!=currentpos1) {
                $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop = 0;
            } else {
                old = currentpos1;
                //以25ms的速度每次滾動1.5PX
                $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop = currentpos1 + 1.5;
            }
        }
    },
    25);
},
1000);
顯示代碼

實際應用時,用戶需要自行修改以下幾處:

修改點注釋
$("div[widgetname=REPORT0]")

用戶需要根據報表塊的名稱修改 REPORT0,報表塊的名稱需要大寫

find(".frozen-center")

根據實際情況修改滾動塊元素名稱 :

.frozen-center:報表塊中存在凍結

.reportContent:報表塊中無凍結且未安裝自定義滾動條插件

.scrollDiv:報表塊中無凍結且安裝了自定義滾動條插件

var flag = window.flag0

模板中存在多個跑馬燈報表塊時,依次設置爲 flag0,flag1,flag2 等

需保證全局變量各不相同,否則無法實現單個暫停

25);滾動速度,用戶可以根據實際情況修改

注:如果報表塊加載比較慢沒有實現效果,可以适當調整延時函數 setTimeout( )的延時時間。

2.4 效果預覽

保存報表,點擊PC端預覽,跑馬燈效果如下圖所示:

1F70774B-64F0-4766-BB58-4C1B74B14564.GIF

注1:不支持移動端。

注2:不支持報表塊定時刷新場景。

注3:如果不安裝 自定義滾動條 插件,鼠标移入後不跟随鼠标滾輪移動。

3. 擴展應用

新增一種報表塊跑馬燈應用場景和設置方法:報表前端展示時,報表塊處於隐藏不顯示的狀态,點擊按鈕後,報表塊可以顯示并自動加載跑馬燈效果。如下圖所示:

1A6F468C-EFAF-4542-A440-44EFBC997F59.GIF

3.1 數據準備

新建決策報表,新建數據集 ds1 ,SQL 語句爲:SELECT * FROM 銷量

1589965979355334.png

3.2 報表設計

1)将報表塊report0和按鈕控件button0_c拖入到 body 組件中,如下圖設計報表塊的表格,不勾選控件可見,隐藏報表塊。

Snag_5502dcf.png

2)選中報表塊組件,點擊編輯,凍結第 1 行,如下圖所示:

Snag_1de4ce2.png

3.3 添加事件

1)選中報表塊組件,給報表塊添加一個初始化事件,實現跑馬燈效果,如下圖所示:

Snag_55193c8.png

JavaScript 如下:

setTimeout(function({
       //隐藏報表塊report0的滾動條(此報表塊名爲report0,根據具體情況修改)
    $("div[widgetname=REPORT0]").find(".frozen-north").css({
        'overflow-x':'hidden',
        'overflow-y':'hidden'
    });
    $("div[widgetname=REPORT0]").find(".frozen-center").css({
        'overflow-x':'hidden',
        'overflow-y':'hidden'
    });
 
},1000);
 
window.flag1 = true;
var self1 = this;
//鼠标懸停,滾動停止
setTimeout(function({
    $("div[widgetname=REPORT0]").find(".frozen-center").mouseover(function({
        window.flag1 = false;
    });
 
    //鼠标離開,繼續滾動
    $("div[widgetname=REPORT0]").find(".frozen-center").mouseleave(function({
        window.flag1 = true;
    });
 
    var old = -1;
    var interval = setInterval(function({
        if (!self1.isVisible()) {
            return;
        }
        if (window.flag1) {
            currentpos1 = $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop;
            if (currentpos1 == old && 0!=currentpos1) {
                $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop = 0;
            } else {
                old = currentpos1;
                //以25ms的速度每次滾動1.5PX
                $("div[widgetname=REPORT0]").find(".frozen-center")[0].scrollTop = currentpos1 + 1.5;
            }
        }
    },
    25);
},
1000);
顯示代碼

2)選中按鈕組件,給按鈕添加一個點擊事件,點擊之後可以顯示被隐藏的報表塊,如下圖所示:

Snag_557049a.png

JavaScript 代碼如下:

this.options.form.getWidgetByName('REPORT0').setVisible(true)

3.4 效果預覽

保存報表,點擊PC端預覽,效果如下圖所示:

1A6F468C-EFAF-4542-A440-44EFBC997F59.GIF

4. 已完成模板

已完成的模板請參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實例\03-報表塊實現跑馬燈效果.frm

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實例\報表塊跑馬燈擴展應用.frm

點擊下載模板:

03-報表塊實現跑馬燈效果.frm

報表塊跑馬燈擴展應用.frm

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

反饋已提交

網絡繁忙