JS實現普通報表快取上一次瀏覽器查詢參數

1. 概述

1.1 版本

報表伺服器版本
11.0

1.2 問題描述

普通報表在開啟時希望參數面板中的參數元件的值可以預設是上一次頁面關閉前最後一次查詢所選擇的值。

1723614370250620.gif

1.3 解決方案

1)每次在頁面關閉時將參數值儲存到瀏覽器快取中(適用於非FS平台),或每次點選查詢後將參數值儲存到瀏覽器快取中(適用FS決策平台)。

2)報表開啟時從瀏覽器快取中將參數值讀取出來並指派給對應的元件。

注1:不支援決策報表和行動端報表。 

注2:該方案僅支援同一台電腦下讀取快取,不同電腦快取的結果也不一致。

2. 範例一:讀取全部參數

  1. 開啟需要配置的範本,點選右上角「組件設定」中「para」組件。

  2. 點選「新增事件」新增一個「初始化後」事件。

  3. 在事件編輯框中新增參數,並寫入對應的JavaScript腳本。

1723606325226617.png

其中,參數名為fr_name,參數值為公式reportName

JavaScript 程式碼如下:

// 監測到瀏覽器頁面關閉時將參數欄所有元件當前所選的值儲存到localStorage中,將fr_name參數encodeURL後轉為Base64編碼作為快取的key值
window.onbeforeunload = function({
localStorage.setItem(btoa(encodeURI(fr_name)), _g().getParameterContainer().getSelectValue());
};

// 頁面初始化後,根據key值讀取快取值,若存在則將對應的值指派給對應的元件
setTimeout(function() {
var storage = localStorage.getItem(btoa(encodeURI(fr_name)));
if (storage) {
var storageJson = JSON.parse(storage);
for (var key in storageJson) {
_g().getParameterContainer().getWidgetByName(key).setValue(storageJson[key]);
}
};
}, 10);
显示代码

3. 範例二:讀取指定參數

  1. 開啟需要配置的範本,點選右上角「組件設定」中「para」組件。

  2. 點選「新增事件」新增一個「初始化後」事件。

  3. 在事件編輯框中新增參數,並寫入對應的JavaScript腳本。

注:若僅指定部分參數讀取快取值或元件之間存在聯動關係,推薦使用第二種方案

1723613994410618.png

其中,參數名為fr_name,參數值為公式reportName

JavaScript 程式碼如下:

// 監測到瀏覽器頁面關閉時將參數欄所有元件當前所選的值儲存到localStorage中,將fr_name參數encodeURL後轉為Base64編碼作為快取的key值
window.onbeforeunload = function({
localStorage.setItem(btoa(encodeURI(fr_name)), _g().getParameterContainer().getSelectValue());
};

// 頁面初始化後,根據key值讀取快取值,再根據指定的元件順序進行指派
setTimeout(function({
var storage = localStorage.getItem(btoa(encodeURI(fr_name)));
if (storage) {
var storageJson = JSON.parse(storage);
var widgetsKeys = ["AREA","PROVINCE","CITY"]; // 指定需要預設指派的參數及參數順序
widgetsKeys.forEach(key=>{_g().getParameterContainer().getWidgetByName(key).setValue(storageJson[key]);})
};
}, 10);
显示代码

4. 範例三:數據決策系統讀取參數

目前開放的API中並未包含決策平台頁籤關閉事件,所以無法監測到報表在決策平台中關閉的事件。因此,如果希望實現同樣的效果,則需要在每次點選查詢按鈕時就將當前的元件參數值全部快取到瀏覽器中。

具體操作除範例一與範例二中的內容外,需補充以下步驟:

  1. 選中「查詢」按鈕。

  2. 點選「新增事件」,並新增一個「點選」事件。

  3. 在事件編輯框中新增參數,並寫入對應的JavaScript腳本。

1723614802390601.png

其中,參數名為fr_name,參數值為公式reportName。

JavaScript 程式碼如下:

// 將fr_name參數encodeURL後轉為Base64編碼作為快取的key值,參數欄所有元件當前所選的值作為value值
localStorage.setItem(btoa(encodeURI(fr_name)),_g().getParameterContainer().getSelectValue());

5. 範本下載

附件列表


主題: 參數應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙