OneNET View 2.0 支援用戶自訂篩檢程式,用戶可以自行寫入javascript
代碼,借助篩檢程式實現數據結構轉換、篩選和一些簡單的計算。
當前暫不支持es6及更高版本的ECMAScript語法
當出現以下情況,你可能需要使用數據篩檢程式:
數據來源的值與組件中格式不相同;
一個組件需要同時使用多個數據來源;
點擊數據篩檢程式,勾選核取方塊,啟用數據篩檢程式功能。在代碼編輯區填寫你的代碼。篩檢程式在使用之前會先進行代碼安全監測,無法通過安全監測的篩檢程式將不能使用。
OneNET View 2.0 包含兩種類型的篩檢程式:
私有过滤器
:每個組件各自擁有一個不影響其他組件的篩檢程式,且這個篩檢程式只能這個組件自己使用。
全局过滤器
:可以設計一些每個組件都可選擇是否使用的篩檢程式。這些篩檢程式一旦被修改,將影響到所有使用到它的組件。
每個 OneNET View 2.0 篩檢程式都是一個javascript
函數,我們預先定義了這個篩檢程式函數的三個參數data
、rootData
、variables
:
data
:當前組件選中的數據來源數據
rootData
:包含所有數據來源數據的根物件
variables
:回檔變數
rootData
是OneNET View 2.0
的數據來源列表,它是一個以数据源Id
-数据值列表
為鍵值對的物件,包含了該專案中所有的
數據來源,其中OneNET
、OneNET1
、staticDemo
是数据源 Id
,緊隨其後的是該數據來源的當前數據。
{
"OneNET": [
{
"update_at": "2019-02-28 14:10:47",
"id": "line2",
"create_time": "2017-12-08 15:08:40",
"current_value": 65,
"at": "2019-02-28 14:10:47",
"value": 65
}
],
"OneNET1": [
{
"create_time": "11/22/2017 2:21:15 PM",
"id": "map"
}
],
"staticDemo": [
{
"x": "2010/01/01 00:00:00",
"y": 375,
"s": "1"
},
{
"x": "2010/01/01 00:00:00",
"y": 180,
"s": "2"
},
...
]
}
以這個OneNET View 2.0数据源列表
為例。假設通過數據來源選擇下拉清單選中的是OneNET
,則參數data
的值是
[
{
update_at: '2019-02-28 14:10:47',
id: 'line2',
create_time: '12/8/2017 3:08:40 PM',
current_value: 65,
at: '2/28/2019 2:10:47 PM',
value: 65,
},
];
仍以上文提到的數據來源為例,假設一個組件需要數據來源OneNET
和數據來源staticDemo
的數據,則我們將數據來源選擇下拉清單選中OneNET
,然後在篩檢程式中這麼寫:
// 代碼中 data 取到的是我們數據來源下拉清單選中的OneNET數據來源
var staticDemo = rootData.staticDemo; // 同理其他數據來源如OneNET1 可以通過 rootData.OneNET1 取到
function last(arr) {
var len = arr ? arr.length : 0;
if (len) return arr[len - 1];
}
return [{
"value": last(staticDemo).x + ' ' + last(data).value
}]