數據篩檢程式

OneNET View 2.0 支援用戶自訂篩檢程式,用戶可以自行寫入javascript代碼,借助篩檢程式實現數據結構轉換、篩選和一些簡單的計算。

當前暫不支持es6及更高版本的ECMAScript語法

當出現以下情況,你可能需要使用數據篩檢程式:

  1. 數據來源的值與組件中格式不相同;

  2. 一個組件需要同時使用多個數據來源;

點擊數據篩檢程式,勾選核取方塊,啟用數據篩檢程式功能。在代碼編輯區填寫你的代碼。篩檢程式在使用之前會先進行代碼安全監測,無法通過安全監測的篩檢程式將不能使用。

數據篩檢程式類型

OneNET View 2.0 包含兩種類型的篩檢程式:

私有过滤器:每個組件各自擁有一個不影響其他組件的篩檢程式,且這個篩檢程式只能這個組件自己使用。

全局过滤器:可以設計一些每個組件都可選擇是否使用的篩檢程式。這些篩檢程式一旦被修改,將影響到所有使用到它的組件。

篩檢程式傳參

每個 OneNET View 2.0 篩檢程式都是一個javascript函數,我們預先定義了這個篩檢程式函數的三個參數datarootDatavariables:

data:當前組件選中的數據來源數據

rootData:包含所有數據來源數據的根物件

variables:回檔變數

rootDataOneNET View 2.0的數據來源列表,它是一個以数据源Id-数据值列表為鍵值對的物件,包含了該專案中所有的數據來源,其中OneNETOneNET1staticDemo数据源 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
}]

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “