[Frontend] baja 函式: 訂閱各個系統的狀態,異常與否
This commit is contained in:
parent
a986a0abbe
commit
c90e3c320d
@ -2,6 +2,9 @@
|
|||||||
let baja_subscribe_end_device_callback_func; //設定BQL訂閱結束之後要回傳的Function
|
let baja_subscribe_end_device_callback_func; //設定BQL訂閱結束之後要回傳的Function
|
||||||
let baja_my_user_account_func; //取得帳號資料要回傳的Function
|
let baja_my_user_account_func; //取得帳號資料要回傳的Function
|
||||||
var ordPath; //當前點選選單的tag,用來抓出設備路徑,例如:旅館棟->H,消防偵煙器->F3
|
var ordPath; //當前點選選單的tag,用來抓出設備路徑,例如:旅館棟->H,消防偵煙器->F3
|
||||||
|
let baja_subscribe_alarm_callback_func; //設定 alarm BQL訂閱之後要回傳的Function
|
||||||
|
let baja_subscribe_end_alarm_callback_func; //設定 alarm BQL訂閱結束之後要回傳的Function
|
||||||
|
var ordPathForAlarm; //當前點選選單的tag,用來抓出alarm路徑
|
||||||
window.tolSubList = [];
|
window.tolSubList = [];
|
||||||
|
|
||||||
var user_name = "";
|
var user_name = "";
|
||||||
@ -26,6 +29,27 @@ function subscriptionDevices() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function subscriptionAlarms() {
|
||||||
|
// 用BQL的方式去訂閱
|
||||||
|
this.setSubscribeAlarmsByBql = function (tempOrdPath) {
|
||||||
|
ordPathForAlarm = tempOrdPath;
|
||||||
|
BajaSubscribeAlarmsByBql();
|
||||||
|
};
|
||||||
|
// BQL去訂閱回傳的Function
|
||||||
|
this.setSubscribeAlarmsCallBack = function (callBackFunc) {
|
||||||
|
if (callBackFunc != undefined && callBackFunc != null) {
|
||||||
|
baja_subscribe_alarm_callback_func = callBackFunc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// BQL訂閱結束回傳的Function
|
||||||
|
this.setSubscribeAlarmEndCallBack = function (callBackFunc) {
|
||||||
|
if (callBackFunc != undefined && callBackFunc != null) {
|
||||||
|
baja_subscribe_end_alarm_callback_func = callBackFunc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function MyBaja() {
|
function MyBaja() {
|
||||||
// 取得使用者帳號
|
// 取得使用者帳號
|
||||||
this.setMyUserAccount = function (callBackFunc = null) {
|
this.setMyUserAccount = function (callBackFunc = null) {
|
||||||
@ -222,3 +246,87 @@ function BajaSubscribeDevicesByBql() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用者透過BQL指定路徑去訂閱Alarm
|
||||||
|
*/
|
||||||
|
function BajaSubscribeAlarmsByBql() {
|
||||||
|
require(['baja!'], function (baja) {
|
||||||
|
console.log("進入Function 準備執行BQL訂閱");
|
||||||
|
var init_start = new Date(Date.now());
|
||||||
|
var sub = new baja.Subscriber();
|
||||||
|
|
||||||
|
sub.attach('changed', function (prop) {
|
||||||
|
if (prop.getName() === 'out') {
|
||||||
|
var sourceState = (this.$map.$map.in10.$val.$map.$map.value.$display) == 'true' ? "Offnormal" : "Normal";
|
||||||
|
var modify_target_device = {
|
||||||
|
"system": "TPE_" + ordPathForAlarm.building_tag + "_" + ordPathForAlarm.system_tag + "_" + ordPathForAlarm.name_tag,
|
||||||
|
"sourceState": sourceState ? sourceState : null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (baja_subscribe_alarm_callback_func != undefined && baja_subscribe_alarm_callback_func != null) {
|
||||||
|
baja_subscribe_alarm_callback_func(modify_target_device);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//使用bql語法
|
||||||
|
console.log(`local:|foxs:|alarm:|bql:select top 1 timestamp, sourceState, alarmData, alarmData.sourceName, normalTime where alarmData.sourceName like '%TPE_${ordPathForAlarm.building_tag}_${ordPathForAlarm.system_tag}_${ordPathForAlarm.name_tag}_%' order by timestamp desc`);
|
||||||
|
baja.Ord.make(`local:|foxs:|alarm:|bql:select top 1 timestamp, sourceState, alarmData, alarmData.sourceName, normalTime where alarmData.sourceName like '%TPE_${ordPathForAlarm.building_tag}_${ordPathForAlarm.system_tag}_${ordPathForAlarm.name_tag}_%' order by timestamp desc`)
|
||||||
|
.get(
|
||||||
|
function (table) {
|
||||||
|
var tableStart, tableFinish;
|
||||||
|
var subStart, subFinish;
|
||||||
|
var component_index = 0;
|
||||||
|
var total_component_index = 0;
|
||||||
|
var readBqlFinish = new Date(Date.now());
|
||||||
|
console.log("讀取路徑完成-花費時間", (readBqlFinish.getTime() - init_start.getTime()) / 1000 + "sec");
|
||||||
|
|
||||||
|
table.cursor({
|
||||||
|
before: function () {
|
||||||
|
tableStart = new Date(Date.now());
|
||||||
|
render_start = new Date(Date.now());
|
||||||
|
},
|
||||||
|
each: function (item, index) {
|
||||||
|
if (index < 1) {
|
||||||
|
subStart = new Date(Date.now());
|
||||||
|
}
|
||||||
|
total_component_index = index;
|
||||||
|
|
||||||
|
var sourceState = this.getDisplay("sourceState");
|
||||||
|
var sourceNameArray = (item.$map.$map.alarmData$2esourceName.$display).split('_');
|
||||||
|
var slotPath = sourceNameArray[0] + "/" + sourceNameArray[1] + "/" + sourceNameArray[2] + "/" + sourceNameArray[3] + "/" + sourceNameArray[4] + "/" + sourceNameArray[5] + "/" + sourceNameArray[6] + "/" + sourceNameArray[7] + "/" + sourceNameArray[8];
|
||||||
|
var normalTime = this.getDisplay("normalTime");
|
||||||
|
|
||||||
|
var modify_target_device = {
|
||||||
|
"system": "TPE_" + ordPathForAlarm.building_tag + "_" + ordPathForAlarm.system_tag + "_" + ordPathForAlarm.name_tag,
|
||||||
|
"sourceState": sourceState ? sourceState : null
|
||||||
|
}
|
||||||
|
|
||||||
|
//取得component當下就更新設備點位
|
||||||
|
if (baja_subscribe_alarm_callback_func != undefined && baja_subscribe_alarm_callback_func != null) {
|
||||||
|
baja_subscribe_alarm_callback_func(modify_target_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
baja.Ord.make("local:|foxs:|station:|slot:/" + slotPath)
|
||||||
|
.get()
|
||||||
|
.then(function (component) {
|
||||||
|
component_index++;
|
||||||
|
|
||||||
|
sub.subscribe({
|
||||||
|
comps: component,
|
||||||
|
});
|
||||||
|
|
||||||
|
subFinish = new Date(Date.now());
|
||||||
|
console.log("訂閱完成時間", (subFinish.getTime() - subStart.getTime()) / 1000 + "sec");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
after: function () {
|
||||||
|
tableFinish = new Date(Date.now());
|
||||||
|
console.log("表格完成時間", (tableFinish.getTime() - tableStart.getTime()) / 1000 + "sec");
|
||||||
|
},
|
||||||
|
limit: -1,
|
||||||
|
offset: 0
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user