[Frontend][儀錶板] 即時功率佔比設置 | 即時功率訂閱串接 | 計時器移至 index.html | topbar上方即時告警閃爍程序建置
This commit is contained in:
parent
d5b35002d0
commit
7f3931d104
@ -85,7 +85,7 @@
|
|||||||
<div class="p-3 bg-info-200 rounded overflow-hidden position-relative text-white mb-g">
|
<div class="p-3 bg-info-200 rounded overflow-hidden position-relative text-white mb-g">
|
||||||
<div class="">
|
<div class="">
|
||||||
<h3 class="display-4 d-block l-h-n m-0 fw-500">
|
<h3 class="display-4 d-block l-h-n m-0 fw-500">
|
||||||
8,846
|
<span id="insPowerPer">--</span>
|
||||||
<small class="m-0 l-h-n">即時契約容量占比 kWH</small>
|
<small class="m-0 l-h-n">即時契約容量占比 kWH</small>
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
@ -252,6 +252,8 @@
|
|||||||
var eveWeekElecChart = null;
|
var eveWeekElecChart = null;
|
||||||
var errRecChart = null;
|
var errRecChart = null;
|
||||||
var errChkChart = null;
|
var errChkChart = null;
|
||||||
|
var loadedCnt = 0;
|
||||||
|
var chartDataCnt = { alarmCnt:0, recCnt:0, chkedErrCnt:0, unChkedErrCnt:0 };
|
||||||
|
|
||||||
var sysIconList = [
|
var sysIconList = [
|
||||||
{ mainSys: "EE", subSys: "E1", iconClass: "fal fa-grip-vertical" },
|
{ mainSys: "EE", subSys: "E1", iconClass: "fal fa-grip-vertical" },
|
||||||
@ -299,7 +301,6 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
$("#sysSubBtnList").html(strHtml);
|
$("#sysSubBtnList").html(strHtml);
|
||||||
getAlarmSub();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
@ -323,12 +324,31 @@
|
|||||||
tarElePath = devObj.device_number;
|
tarElePath = devObj.device_number;
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
startPageLoading();
|
||||||
|
getSubBaja();
|
||||||
getElectricBaja();
|
getElectricBaja();
|
||||||
}
|
}
|
||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSubBaja() {
|
||||||
|
let devPath = tarElePath.split("_").slice(0, 8).join("/");
|
||||||
|
let tempOrdPath = { devicePath: devPath }
|
||||||
|
let myBaja = new subscriptionElectricmeter();
|
||||||
|
|
||||||
|
myBaja.setSubscribeElectricmeterByBql(tempOrdPath);
|
||||||
|
myBaja.setSubscribeElectricmeterCallBack(function (data) {
|
||||||
|
if (data.point_name == "P") {
|
||||||
|
let value = parseFloat(data.value).roundDecimal(2);
|
||||||
|
$("#insPower").text(value);
|
||||||
|
$("#insPowerPer").text((value / 4).roundDecimal(2) + "%");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
myBaja.setSubscribeElectricmeterEndCallBack(function () {
|
||||||
|
chkBajaLoaded();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
//從 baja 取得電表用電量
|
//從 baja 取得電表用電量
|
||||||
function getElectricBaja() {
|
function getElectricBaja() {
|
||||||
let devNum = tarElePath.split("_").slice(0, 8).join("_");
|
let devNum = tarElePath.split("_").slice(0, 8).join("_");
|
||||||
@ -338,9 +358,9 @@
|
|||||||
let prevTwoWeek = displayDate(getTimeByType(null, -14), "date").replaceAll("/", "-") + "T00:00:00";
|
let prevTwoWeek = displayDate(getTimeByType(null, -14), "date").replaceAll("/", "-") + "T00:00:00";
|
||||||
let yesterday = displayDate(getTimeByType(null, -1), "date").replaceAll("/", "-") + "T00:00:00";
|
let yesterday = displayDate(getTimeByType(null, -1), "date").replaceAll("/", "-") + "T00:00:00";
|
||||||
let tomorrow = displayDate(getTimeByType(null, 1), "date").replaceAll("/", "-") + "T00:00:00";
|
let tomorrow = displayDate(getTimeByType(null, 1), "date").replaceAll("/", "-") + "T00:00:00";
|
||||||
let loadedCnt = 0;
|
|
||||||
/* let batch = new baja.comm.Batch();*/
|
|
||||||
startPageLoading();
|
|
||||||
// 今日用電量
|
// 今日用電量
|
||||||
getElectricMeterDayDataByBaja(devNum + "_KWH", "Mitsubishi_Sup", today, tomorrow, (data) => {
|
getElectricMeterDayDataByBaja(devNum + "_KWH", "Mitsubishi_Sup", today, tomorrow, (data) => {
|
||||||
let result = data?.data[0]?.sum;
|
let result = data?.data[0]?.sum;
|
||||||
@ -376,45 +396,37 @@
|
|||||||
chkBajaLoaded();
|
chkBajaLoaded();
|
||||||
})
|
})
|
||||||
|
|
||||||
// 電表即時功率
|
|
||||||
getElectricMeterNoweDataByBaja(devPath, (data) => {
|
|
||||||
data = data.data;
|
|
||||||
let result = data.filter(x => x.name == "P")[0]?.value;
|
|
||||||
result = result ? parseFloat(result).toFixed(2) : 0;
|
|
||||||
$("#insPower").text(result);
|
|
||||||
chkBajaLoaded();
|
|
||||||
})
|
|
||||||
|
|
||||||
let alarmCnt = 0,recCnt = 0;
|
|
||||||
let chkedErrCnt = 0, unChkedErrCnt = 0;
|
|
||||||
// 異常數量與賦歸數量
|
// 異常數量與賦歸數量
|
||||||
getAlarmCountByBaja((aData) => {
|
getAlarmCountByBaja((aData) => {
|
||||||
alarmCnt = aData.count;
|
chartDataCnt.alarmCnt = aData.count;
|
||||||
chkBajaLoaded();
|
chkBajaLoaded();
|
||||||
})
|
})
|
||||||
getRecoverCountByBaja((rData) => {
|
getRecoverCountByBaja((rData) => {
|
||||||
recCnt = rData.count;
|
chartDataCnt.recCnt = rData.count;
|
||||||
chkBajaLoaded();
|
chkBajaLoaded();
|
||||||
})
|
})
|
||||||
// 異常數量與賦歸數量
|
// 異常數量與賦歸數量
|
||||||
getCheckedAckedCountByBaja((data) => {
|
getCheckedAckedCountByBaja((data) => {
|
||||||
chkedErrCnt = data.count;
|
chartDataCnt.chkedErrCnt = data.count;
|
||||||
chkBajaLoaded();
|
|
||||||
})
|
|
||||||
getUnCheckedAckedCountByBaja((uData) => {
|
|
||||||
unChkedErrCnt = uData.count;
|
|
||||||
chkBajaLoaded();
|
chkBajaLoaded();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
getUnCheckedAckedCountByBaja((uData) => {
|
||||||
|
chartDataCnt.unChkedErrCnt = uData.count;
|
||||||
|
chkBajaLoaded();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function chkBajaLoaded() {
|
function chkBajaLoaded() {
|
||||||
loadedCnt++;
|
loadedCnt++;
|
||||||
|
|
||||||
if (loadedCnt == 9) {
|
if (loadedCnt == 9) {
|
||||||
chartErrRec(["異常數量", "賦歸數量"], [alarmCnt, recCnt]);
|
chartErrRec(["異常數量", "賦歸數量"], [chartDataCnt.alarmCnt, chartDataCnt.recCnt]);
|
||||||
chartErrChk(["已確認異常", "未確認異常"], [chkedErrCnt, unChkedErrCnt]);
|
chartErrChk(["已確認異常", "未確認異常"], [chartDataCnt.chkedErrCnt, chartDataCnt.unChkedErrCnt]);
|
||||||
|
|
||||||
endPageLoading();
|
endPageLoading();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 圖表 - 今天與昨天用電量 (長條圖)
|
// 圖表 - 今天與昨天用電量 (長條圖)
|
||||||
function chartEveDaysElec(todayData, yesData) {
|
function chartEveDaysElec(todayData, yesData) {
|
||||||
@ -690,15 +702,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 從 baja 訂閱 左下角各系統小類異常狀態
|
// 從 baja 訂閱 左下角各系統小類異常狀態
|
||||||
function getAlarmSub() {
|
function getAlarmSub(data) {
|
||||||
var tipEle = '';
|
|
||||||
//if (sysSubList.length != 0) {
|
|
||||||
// tipEle = YT.Alert.Tip("資料讀取中...","show");
|
|
||||||
//}
|
|
||||||
/*$(`.dev-group i.fa-lightbulb-on`)*/
|
|
||||||
|
|
||||||
getSystemAlarmByBaja((data) => {
|
|
||||||
console.log(data)
|
|
||||||
$.each(data.data, (idx, alaObj) => {
|
$.each(data.data, (idx, alaObj) => {
|
||||||
if (alaObj.alarmClass.indexOf("_") != -1) {
|
if (alaObj.alarmClass.indexOf("_") != -1) {
|
||||||
let mainSubSys = alaObj.alarmClass.split("_").slice(0, 2).join("/");
|
let mainSubSys = alaObj.alarmClass.split("_").slice(0, 2).join("/");
|
||||||
@ -713,8 +717,6 @@
|
|||||||
$(ele).removeClass("blink");
|
$(ele).removeClass("blink");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 取得電梯資料
|
// 取得電梯資料
|
||||||
@ -743,15 +745,15 @@
|
|||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
}
|
}
|
||||||
|
|
||||||
function timeOutGetData() {
|
//function timeOutGetData() {
|
||||||
let timeOut3s = setInterval(() => {
|
// let timeOut3s = setInterval(() => {
|
||||||
getAlarmSub();
|
// getAlarmSub();
|
||||||
}, 3000)
|
// }, 3000)
|
||||||
let timeOut5m = setInterval(() => {
|
// let timeOut5m = setInterval(() => {
|
||||||
getElectricBaja();
|
// getElectricBaja();
|
||||||
}, 5 * 60 * 1000)
|
// }, 5 * 60 * 1000)
|
||||||
timeOuters = timeOuters.concat([timeOut3s, timeOut5m]);
|
// timeOuters = timeOuters.concat([timeOut3s, timeOut5m]);
|
||||||
}
|
//}
|
||||||
|
|
||||||
function show3DModel() {
|
function show3DModel() {
|
||||||
launchViewerNoTools(pageAct.urn, (viewer, nodeIds) => {
|
launchViewerNoTools(pageAct.urn, (viewer, nodeIds) => {
|
||||||
@ -904,6 +906,12 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$(window).on("timeout:5m", function () {
|
||||||
|
console.log("五分鐘更新")
|
||||||
|
getElectricBaja();
|
||||||
|
})
|
||||||
|
|
||||||
onEvent("click", "button[id^=sysSubCardBtn]", function () {
|
onEvent("click", "button[id^=sysSubCardBtn]", function () {
|
||||||
let subSysTag = $(this).data("id");
|
let subSysTag = $(this).data("id");
|
||||||
$(`#subSysBtn${subSysTag}`).click();
|
$(`#subSysBtn${subSysTag}`).click();
|
||||||
|
@ -1044,7 +1044,6 @@
|
|||||||
//地震管制
|
//地震管制
|
||||||
actLightByPoi("EER", "#earQuaCon");
|
actLightByPoi("EER", "#earQuaCon");
|
||||||
if (data.point_name == "DNO" || data.point_name == "SP_RCS") {
|
if (data.point_name == "DNO" || data.point_name == "SP_RCS") {
|
||||||
debugger
|
|
||||||
//遠端休止
|
//遠端休止
|
||||||
actLightByPoiEx("SP_RCS", "#disRes", "DNO", "trueText");
|
actLightByPoiEx("SP_RCS", "#disRes", "DNO", "trueText");
|
||||||
}
|
}
|
||||||
|
@ -2319,6 +2319,16 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(window).on("timeout:3s", function () {
|
||||||
|
getSystemAlarmByBaja((data) => {
|
||||||
|
if (typeof getAlarmSub != "undefined" && getAlarmSub) {
|
||||||
|
getAlarmSub(data);
|
||||||
|
}
|
||||||
|
alarmIconBlink();
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登入驗證
|
// 登入驗證
|
||||||
@ -2593,6 +2603,32 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
$(loadEle).Loading("close");
|
$(loadEle).Loading("close");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function alarmIconBlink(data) {
|
||||||
|
if (data?.data.length != 0) {
|
||||||
|
$(".page-header [name=topFunBtn][data-page=alert] i").addClass("blink");
|
||||||
|
} else {
|
||||||
|
$(".page-header [name=topFunBtn][data-page=alert] i").removeClass("blink");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function timeOutGetData() {
|
||||||
|
let timeOut3s = null, timeOut5m = null;
|
||||||
|
let events = $._data($(window)[0], "events");
|
||||||
|
if (Object.keys(events).findIndex(x => x == "timeout:3s") != -1) {
|
||||||
|
timeOut3s = setInterval(() => {
|
||||||
|
$(window).trigger("timeout:3s");
|
||||||
|
}, 3000)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(events).findIndex(x => x == "timeout:5m") != -1) {
|
||||||
|
timeOut5m = setInterval(() => {
|
||||||
|
$(window).trigger("timeout:5m");
|
||||||
|
}, 5 * 60 * 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
timeOuters = timeOuters.concat([timeOut3s, timeOut5m]);
|
||||||
|
}
|
||||||
|
|
||||||
function showMainSys() {
|
function showMainSys() {
|
||||||
let url = baseApiUrl + "/Utility/isShowMaiSys";
|
let url = baseApiUrl + "/Utility/isShowMaiSys";
|
||||||
|
|
||||||
@ -2605,6 +2641,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function startPageLoading() {
|
function startPageLoading() {
|
||||||
if (!loadingTip) {
|
if (!loadingTip) {
|
||||||
loadingTip = YT.Alert.Tip("資料讀取中...", "show");
|
loadingTip = YT.Alert.Tip("資料讀取中...", "show");
|
||||||
|
Loading…
Reference in New Issue
Block a user