FVS實現元件根據條件顯示

1. 概述

適用場景:安裝了「FineVis資料視覺化」插件的使用者,可參考本文了解 FVS 範本的相關功能。

1.1 版本

報表伺服器版本插件版本
11.0.6
V1.5.0

1.2 應用場景

在使用參數元件時,有時我們希望部分參數元件在不滿足條件時不顯示,滿足條件後再顯示。

例如報表類型選擇年報時,只顯示年份元件;選擇月報時,再顯示出月份元件;選擇日報時,則只顯示日期時間元件。

如下圖所示:

1.3 實現思路

透過 JS 來控制元件組件的可見與不可見:

setVisible(boolean):設定是否可見,true 為可見,false 為不可見

該API對 FVS 所有組件有效,詳細API可參見:元件通用 。

var value = duchamp.getWidgetByName("元件名稱").getValue();//獲取元件值
duchamp.getWidgetByName("元件名稱").setVisible(true);//設定該元件可見
duchamp.getWidgetByName("元件名稱").setVisible(false);//設定該元件不可見

2. 範例

2.1 建立範本

1)在 FineReport 設計器左上角點選「檔案>建立視覺化看板」。

2)在「建立空白看板」Tab 中,可自訂範本名稱和尺寸,選擇 範本樣式 為「內建樣式>淺色主題一」。

3)點選「建立看板」。

2.2 準備資料

建立資料庫查詢 ds1 ,輸入 SQL 查詢語句:

SELECT * FROM 訂單 where 1=1 ${if(type=="日報"," and date(訂購日期)='"+ date +"'", 

if(type=="月報"," and strftime('%m',訂單.訂購日期)='"+ month+"'"+" and strftime('%Y',訂單.

訂購日期)='"+ year+"'"," and strftime('%Y',訂單.訂購日期)='"+ year+"'"))}

這段 SQL 表示根據變數 type 的不同值("日報"、"月報"或其他)生成不同的條件來篩選訂單資料,條件包括日期、月份和年份。

2.3 設計表格組件

1)點選組件區「文字>表格組件」,新增到畫布中,並將其拉動到合適的大小和位置。

2)選中表格組件,點選右側配置區「內容>編輯組件」,進入表格編輯介面。

3)表格主體設計如下圖所示,將 ds1 資料集中的「訂購日期、發貨日期、運貨商、貨主名稱、貨主地址、貨主城市、貨主省份」欄位拖入儲存格。

4)選中 A3 儲存格「訂購日期」欄位,點選「儲存格元素>基本」,將資料設定修改為「列表」。

5)設定完成後點選左上角「傳回視覺化看板」傳回畫布。

2.4 設計元件組件

2.4.1 新增組件

1)點選組件區「文字>標題」向畫布中新增四個標題組件,調整到適當的位置。

2)標題內容分別設定為 報表類型年份月份日期 ,對應需要的參數類型。

3)點選組件區「元件」,向畫布中新增三個下拉框元件、一個日期時間控,調整到適當的位置。

2.4.2 設定下拉框元件

1)從左到右選中第一個下拉框元件,元件名稱為「type」。

資料字典類型設定為「自訂」,實際值和顯示值相同,為年報,月報,日報。

資料字典設定完成後,設定預設值為「年報」。

2)從左到右選中第二個下拉框元件,元件名稱為「year」。

資料字典類型設定為「自訂」,實際值和顯示值相同,為 2010、2011。

資料字典設定完成後,設定預設值為「2010」。

3)從左到右選中第三個下拉框元件,元件名稱為「month」。

資料字典類型設定為「自訂」,顯示值和實際值相同,為 01 ~ 12 。

資料字典設定完成後,設定預設值為「01」。

2.4.3 設定日期時間元件

選中日期時間元件,元件名稱為「date」。

預設值為自訂日期時間 2010-01-01,日期範圍為自訂,開始日期為 2010-01-01,結束日期為 2011-12-31。

2.4.4 設定組件隱藏

1)點選畫布左下角「組件圖層」按鈕,可展開收縮組件圖層列表。

2)雙擊組件名稱,可重新命名,將四個標題組件重新命名為 報表類型年份月份日期 。

3)滑鼠懸浮組件名稱時,點選組件左側的小眼睛 icon,可切換組件顯示/隱藏狀態。設定日期和月份對應的組件隱藏。

2.5 新增編輯結束事件

1)選中 type 下拉框元件,在「互動>新增事件」中為其新增「編輯結束事件」。

2)事件名稱自訂為「元件聯動」,輸入 JavaScript 執行腳本。

JavaScript 執行腳本如下所示:

var value = duchamp.getWidgetByName("type").getValue();//獲取當前元件即type參數的值
//判斷type的值,根據判斷結果顯示或隱藏其他組件
if (value == "日報")
{
duchamp.getWidgetByName("date").setVisible(true);//在此可修改成要控制的組件名稱
duchamp.getWidgetByName("month").setVisible(false);
duchamp.getWidgetByName("year").setVisible(false);
duchamp.getWidgetByName("日期").setVisible(true);
duchamp.getWidgetByName("月份").setVisible(false);
duchamp.getWidgetByName("年份").setVisible(false);
}
else if (value == "月報") {
duchamp.getWidgetByName("date").setVisible(false);
duchamp.getWidgetByName("month").setVisible(true);
duchamp.getWidgetByName("year").setVisible(true);
duchamp.getWidgetByName("日期").setVisible(false);
duchamp.getWidgetByName("月份").setVisible(true);
duchamp.getWidgetByName("年份").setVisible(true);
}
 
else if (value == "年報") {
duchamp.getWidgetByName("date").setVisible(false);
duchamp.getWidgetByName("month").setVisible(false);
duchamp.getWidgetByName("year").setVisible(true);
duchamp.getWidgetByName("日期").setVisible(false);
duchamp.getWidgetByName("月份").setVisible(false);
duchamp.getWidgetByName("年份").setVisible(true);
}
else {
duchamp.getWidgetByName("date").setVisible(false);
duchamp.getWidgetByName("month").setVisible(false);
duchamp.getWidgetByName("year").setVisible(false);
duchamp.getWidgetByName("日期").setVisible(false);
duchamp.getWidgetByName("月份").setVisible(false);
duchamp.getWidgetByName("年份").setVisible(false);
}
显示代码

2.6 效果預覽

2.6.1 PC 端

點選「預覽」,效果如 1.2 節所示。

2.6.2 行動端

請先設定 行動端重佈局 ,預覽方式請參考 FVS行動端預覽 。效果如下圖所示:

3. 範本下載

附件列表


主題: FineVis數據視覺化
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

9s后關閉

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

反馈已提交

网络繁忙

反饋已提交

網絡繁忙