[前台] forge 突擊平面圖原點配合點位顏色
This commit is contained in:
parent
7a6b2068bd
commit
7169c33dc3
@ -114,15 +114,16 @@
|
|||||||
let lightOnHotColorArr = [];
|
let lightOnHotColorArr = [];
|
||||||
let lightOffHotColorArr = [];
|
let lightOffHotColorArr = [];
|
||||||
// 燈光圈用
|
// 燈光圈用
|
||||||
let lightOnGuidArr = [];
|
let deviceNormalArr = [];
|
||||||
let lightOffGuidArr = [];
|
let deviceCloseArr = [];
|
||||||
|
|
||||||
myBaja.setSubscribeDevicesCallBack(function (data) {
|
myBaja.setSubscribeDevicesCallBack(function (data) {
|
||||||
// console.log(data)
|
console.log("subDevice 開始");
|
||||||
let matchDevice = allDevList.filter(
|
let matchDevice = allDevList.filter(
|
||||||
(x) => x.device_number == data.device_number_full
|
(x) => x.device_number == data.device_number_full
|
||||||
)[0];
|
)[0];
|
||||||
if (!matchDevice) {
|
if (!matchDevice) {
|
||||||
|
$(loadEle).Loading("close");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,43 +147,39 @@
|
|||||||
subData[data.point_name] = data.value;
|
subData[data.point_name] = data.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setForgeHotSpotColor(matchDevice);
|
||||||
|
|
||||||
let norDevPoiName = matchDevice.device_normal_point_name;
|
let norDevPoiName = matchDevice.device_normal_point_name;
|
||||||
let cloDevPoiName = matchDevice.device_close_point_name;
|
let cloDevPoiName = matchDevice.device_close_point_name;
|
||||||
let errDevPoiName = matchDevice.device_error_point_name;
|
let errDevPoiName = matchDevice.device_error_point_name;
|
||||||
|
|
||||||
if (data.point_name == "SSC" && pageAct.sysSubTag === "L1") {
|
if (data.point_name == "SSC" && pageAct.sysSubTag === "L1") {
|
||||||
const lightOn = data.value.includes("true");
|
const lightOn = data.value.includes("true");
|
||||||
|
setLightOpenOrClose(lightOn, matchDevice);
|
||||||
setLightOpenOrClose(lightOn, matchDevice.device_guid);
|
if (lightOn && matchDevice.spriteDbid) {
|
||||||
if (lightOn) {
|
|
||||||
setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
|
|
||||||
// changeColorForHotspot(matchDevice.spriteDbid, null, true)
|
|
||||||
if (
|
if (
|
||||||
!lightOnHotColorArr.some(
|
!lightOnHotColorArr.some(
|
||||||
({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
setLightValues(matchDevice.device_node_guid, 200, 0xe1cf18);
|
||||||
lightOnHotColorArr.push(matchDevice);
|
lightOnHotColorArr.push(matchDevice);
|
||||||
}
|
}
|
||||||
lightOffHotColorArr = lightOffHotColorArr.filter(
|
lightOffHotColorArr = lightOffHotColorArr.filter(
|
||||||
(light) => light.spriteDbid !== matchDevice.spriteDbid
|
(light) => light.spriteDbid !== matchDevice.spriteDbid
|
||||||
);
|
);
|
||||||
heatMap?.changeTemp(matchDevice.device_number, 40);
|
} else if (matchDevice.spriteDbid) {
|
||||||
} else {
|
|
||||||
setLightValues(matchDevice.device_guid, 0, 0xffffff);
|
|
||||||
// changeColorForHotspot(matchDevice.spriteDbid)
|
|
||||||
if (
|
if (
|
||||||
!lightOffHotColorArr.some(
|
!lightOffHotColorArr.some(
|
||||||
({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
setLightValues(matchDevice.device_node_guid, 0, 0xffffff);
|
||||||
lightOffHotColorArr.push(matchDevice);
|
lightOffHotColorArr.push(matchDevice);
|
||||||
}
|
}
|
||||||
lightOnHotColorArr = lightOnHotColorArr.filter(
|
lightOnHotColorArr = lightOnHotColorArr.filter(
|
||||||
(light) => light.spriteDbid !== matchDevice.spriteDbid
|
(light) => light.spriteDbid !== matchDevice.spriteDbid
|
||||||
);
|
);
|
||||||
|
|
||||||
heatMap?.changeTemp(matchDevice.device_number, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,49 +195,100 @@
|
|||||||
? parseInt(data.value)
|
? parseInt(data.value)
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
data.point_name == norDevPoiName &&
|
data.point_name == norDevPoiName &&
|
||||||
data.value == matchDevice.device_normal_point_value
|
data.value == matchDevice.device_normal_point_value &&
|
||||||
|
!deviceNormalArr.some(
|
||||||
|
({ device_number }) => device_number === matchDevice.device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
//顯示正常燈號
|
//顯示正常燈號
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${matchDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "normal")
|
.attr("data-light-type", "normal")
|
||||||
.data("light-type", "normal");
|
.data("light-type", "normal");
|
||||||
|
|
||||||
|
deviceNormalArr.push(matchDevice);
|
||||||
|
deviceCloseArr = deviceCloseArr.filter(
|
||||||
|
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
||||||
|
);
|
||||||
} else if (
|
} else if (
|
||||||
data.point_name == cloDevPoiName &&
|
data.point_name == cloDevPoiName &&
|
||||||
data.value == matchDevice.device_close_point_value
|
data.value == matchDevice.device_close_point_value &&
|
||||||
|
!deviceCloseArr.some(
|
||||||
|
({ device_number }) => device_number === matchDevice.device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${matchDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "close")
|
.attr("data-light-type", "close")
|
||||||
.data("light-type", "close");
|
.data("light-type", "close");
|
||||||
|
|
||||||
|
deviceCloseArr.push(matchDevice);
|
||||||
|
deviceNormalArr = deviceNormalArr.filter(
|
||||||
|
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
data.point_name == errDevPoiName &&
|
||||||
|
data.value == matchDevice.device_error_point_value &&
|
||||||
|
!alarmDbIdList.some(
|
||||||
|
(device) => device.device_number === matchDevice.device_number
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$(`#${matchDevice.device_number}_status`)
|
||||||
|
.attr("data-light-error-type", "error")
|
||||||
|
.data("light-error-type", "error");
|
||||||
|
|
||||||
|
alarmDbIdList.push(matchDevice);
|
||||||
} else if (
|
} else if (
|
||||||
data.point_name == errDevPoiName &&
|
data.point_name == errDevPoiName &&
|
||||||
data.value == matchDevice.device_error_point_value
|
data.value !== matchDevice.device_error_point_value
|
||||||
|
) {
|
||||||
|
$(`#${matchDevice.device_number}_status`)
|
||||||
|
.attr("data-light-error-type", "")
|
||||||
|
.data("light-error-type", "");
|
||||||
|
alarmDbIdList = alarmDbIdList.filter(
|
||||||
|
(device) => device.device_number !== matchDevice.device_number
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
deviceCloseArr.length === 0 &&
|
||||||
|
alarmDbIdList.some(
|
||||||
|
(device) => device.device_number === matchDevice.device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${matchDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "error")
|
.attr("data-light-type", "error")
|
||||||
.data("light-type", "error");
|
.data("light-type", "error");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
(!pageAct.floTag &&
|
||||||
allDevList.length ===
|
allDevList.length ===
|
||||||
lightOnHotColorArr.length + lightOffHotColorArr.length
|
deviceNormalArr.length + deviceCloseArr.length) ||
|
||||||
|
allDevList.length === deviceNormalArr.length + alarmDbIdList.length
|
||||||
) {
|
) {
|
||||||
changeColorForHotspot(
|
changeColorForHotspot(
|
||||||
lightOnHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
deviceNormalArr.map(({ spriteDbid }) => spriteDbid),
|
||||||
null,
|
null,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
changeColorForHotspot(
|
changeColorForHotspot(
|
||||||
lightOffHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
deviceCloseArr.map(({ spriteDbid }) => spriteDbid),
|
||||||
null,
|
null,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
changeColorForHotspot(
|
||||||
|
alarmDbIdList.map(({ spriteDbid }) => spriteDbid),
|
||||||
|
"error",
|
||||||
|
false
|
||||||
|
);
|
||||||
$(loadEle).Loading("close");
|
$(loadEle).Loading("close");
|
||||||
|
|
||||||
setLightColor();
|
setLightColor();
|
||||||
setForgeHotSpotColor(matchDevice);
|
|
||||||
lightDevForgeSpotLig(matchDevice);
|
lightDevForgeSpotLig(matchDevice);
|
||||||
// 從設備訂閱更新每個設備卡片即時點位
|
// 從設備訂閱更新每個設備卡片即時點位
|
||||||
setDevItemPoiValBySub(data);
|
setDevItemPoiValBySub(data);
|
||||||
@ -248,166 +296,15 @@
|
|||||||
|
|
||||||
myBaja.setSubscribeDeviceEndCallBack(function (data) {
|
myBaja.setSubscribeDeviceEndCallBack(function (data) {
|
||||||
endPageLoading();
|
endPageLoading();
|
||||||
if (data.findIndex((x) => x.point_name == "Temp") != -1) {
|
if (data.findIndex((x) => x.point_name == "CO2") != -1) {
|
||||||
|
// 顯示溫度條
|
||||||
|
showHeatCO2("[name=forgeHeatBar]");
|
||||||
|
} else if (data.findIndex((x) => x.point_name == "Temp" || x.point_name == "TEMP") != -1) {
|
||||||
// 顯示溫度條
|
// 顯示溫度條
|
||||||
showHeat("[name=forgeHeatBar]");
|
showHeat("[name=forgeHeatBar]");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// function subDevice() {
|
|
||||||
// let myBaja = new subscriptionDevices();
|
|
||||||
// var ordPath = {
|
|
||||||
// area_tag: pageAct.AreaTag,
|
|
||||||
// building_tag: pageAct.buiTag,
|
|
||||||
// system_tag: pageAct.sysMainTag,
|
|
||||||
// name_tag: pageAct.sysSubTag,
|
|
||||||
// };
|
|
||||||
// myBaja.setSubscribeDevicesByBql(ordPath);
|
|
||||||
|
|
||||||
// // 燈熱點用
|
|
||||||
// let lightOnHotColorArr = [];
|
|
||||||
// let lightOffHotColorArr = [];
|
|
||||||
// // 燈光圈用
|
|
||||||
// let lightOnGuidArr = [];
|
|
||||||
// let lightOffGuidArr = [];
|
|
||||||
|
|
||||||
// myBaja.setSubscribeDevicesCallBack(function (data) {
|
|
||||||
// // console.log(data)
|
|
||||||
// let matchDevice = allDevList.filter(
|
|
||||||
// (x) => x.device_number == data.device_number_full
|
|
||||||
// )[0];
|
|
||||||
// if (!matchDevice) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //將訂閱值塞入 subDeviceData
|
|
||||||
// if (
|
|
||||||
// subDeviceData.findIndex(
|
|
||||||
// (x) => x.device_number == matchDevice.device_number
|
|
||||||
// ) == -1
|
|
||||||
// ) {
|
|
||||||
// let obj = {};
|
|
||||||
// obj.device_number = matchDevice.device_number;
|
|
||||||
// obj.dbid = matchDevice.forge_dbid;
|
|
||||||
// subDeviceData.push(obj);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// let subData = subDeviceData.filter(
|
|
||||||
// (x) => x.device_number == matchDevice.device_number
|
|
||||||
// )[0];
|
|
||||||
|
|
||||||
// if (subData) {
|
|
||||||
// subData[data.point_name] = data.value;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// let norDevPoiName = matchDevice.device_normal_point_name;
|
|
||||||
// let cloDevPoiName = matchDevice.device_close_point_name;
|
|
||||||
// let errDevPoiName = matchDevice.device_error_point_name;
|
|
||||||
|
|
||||||
// if (data.point_name == "ONOFF" && pageAct.sysSubTag === "L1") {
|
|
||||||
// const lightOn = data.value.includes("true");
|
|
||||||
|
|
||||||
// setLightOpenOrClose(lightOn, matchDevice.device_guid);
|
|
||||||
// if (lightOn) {
|
|
||||||
// setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
|
|
||||||
// // changeColorForHotspot(matchDevice.spriteDbid, null, true)
|
|
||||||
// if (
|
|
||||||
// !lightOnHotColorArr.some(
|
|
||||||
// ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
|
||||||
// )
|
|
||||||
// ) {
|
|
||||||
// lightOnHotColorArr.push(matchDevice);
|
|
||||||
// }
|
|
||||||
// lightOffHotColorArr = lightOffHotColorArr.filter(
|
|
||||||
// (light) => light.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
// );
|
|
||||||
// heatMap?.changeTemp(matchDevice.device_number, 40);
|
|
||||||
// } else {
|
|
||||||
// setLightValues(matchDevice.device_guid, 0, 0xffffff);
|
|
||||||
// // changeColorForHotspot(matchDevice.spriteDbid)
|
|
||||||
// if (
|
|
||||||
// !lightOffHotColorArr.some(
|
|
||||||
// ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
|
|
||||||
// )
|
|
||||||
// ) {
|
|
||||||
// lightOffHotColorArr.push(matchDevice);
|
|
||||||
// }
|
|
||||||
// lightOnHotColorArr = lightOnHotColorArr.filter(
|
|
||||||
// (light) => light.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
// );
|
|
||||||
|
|
||||||
// heatMap?.changeTemp(matchDevice.device_number, 0);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (data.point_name == "Temp") {
|
|
||||||
// heatMap?.changeTemp(
|
|
||||||
// data.device_number_full,
|
|
||||||
// !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0
|
|
||||||
// );
|
|
||||||
// let devIdx = allDevList.findIndex(
|
|
||||||
// (x) => x.device_number == data.device_number_full
|
|
||||||
// );
|
|
||||||
// allDevList[devIdx]._temp = !isNaN(parseInt(data.value))
|
|
||||||
// ? parseInt(data.value)
|
|
||||||
// : 0;
|
|
||||||
// }
|
|
||||||
// if (
|
|
||||||
// data.point_name == norDevPoiName &&
|
|
||||||
// data.value == matchDevice.device_normal_point_value
|
|
||||||
// ) {
|
|
||||||
// //顯示正常燈號
|
|
||||||
// $(`#${matchDevice.device_number}_status`)
|
|
||||||
// .attr("data-light-type", "normal")
|
|
||||||
// .data("light-type", "normal");
|
|
||||||
// } else if (
|
|
||||||
// data.point_name == cloDevPoiName &&
|
|
||||||
// data.value == matchDevice.device_close_point_value
|
|
||||||
// ) {
|
|
||||||
// $(`#${matchDevice.device_number}_status`)
|
|
||||||
// .attr("data-light-type", "close")
|
|
||||||
// .data("light-type", "close");
|
|
||||||
// } else if (
|
|
||||||
// data.point_name == errDevPoiName &&
|
|
||||||
// data.value == matchDevice.device_error_point_value
|
|
||||||
// ) {
|
|
||||||
// $(`#${matchDevice.device_number}_status`)
|
|
||||||
// .attr("data-light-type", "error")
|
|
||||||
// .data("light-type", "error");
|
|
||||||
// }
|
|
||||||
// if (
|
|
||||||
// allDevList.length ===
|
|
||||||
// lightOnHotColorArr.length + lightOffHotColorArr.length
|
|
||||||
// ) {
|
|
||||||
// changeColorForHotspot(
|
|
||||||
// lightOnHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
|
||||||
// null,
|
|
||||||
// true
|
|
||||||
// );
|
|
||||||
// changeColorForHotspot(
|
|
||||||
// lightOffHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
|
||||||
// null,
|
|
||||||
// false
|
|
||||||
// );
|
|
||||||
|
|
||||||
// }
|
|
||||||
// $(loadEle).Loading("close");
|
|
||||||
|
|
||||||
// setLightColor();
|
|
||||||
// setForgeHotSpotColor(matchDevice);
|
|
||||||
// lightDevForgeSpotLig(matchDevice);
|
|
||||||
// // 從設備訂閱更新每個設備卡片即時點位
|
|
||||||
// setDevItemPoiValBySub(data);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// myBaja.setSubscribeDeviceEndCallBack(function (data) {
|
|
||||||
// endPageLoading();
|
|
||||||
// if (data.findIndex((x) => x.point_name == "Temp") != -1) {
|
|
||||||
// // 顯示溫度條
|
|
||||||
// showHeat("[name=forgeHeatBar]");
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
function lightDevForgeSpotLig(devObj) { }
|
function lightDevForgeSpotLig(devObj) { }
|
||||||
|
|
||||||
@ -561,9 +458,9 @@
|
|||||||
endPageLoading();
|
endPageLoading();
|
||||||
} else {
|
} else {
|
||||||
// 訂閱 baja 設備
|
// 訂閱 baja 設備
|
||||||
if (pageAct.sysSubTag !== "L1" && pageAct.sysSubTag !== "M12") {
|
// if (pageAct.sysSubTag !== "L1" && pageAct.sysSubTag !== "M12") {
|
||||||
subDevice();
|
// subDevice();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 繪製 html
|
// 繪製 html
|
||||||
@ -821,14 +718,14 @@
|
|||||||
.map((y) => x)
|
.map((y) => x)
|
||||||
);
|
);
|
||||||
|
|
||||||
for (let sub of stSubArr) {
|
// for (let sub of stSubArr) {
|
||||||
let matchDevice = allDevList.filter(
|
// let matchDevice = allDevList.filter(
|
||||||
(x) => x.device_number == sub[0]?.device_number
|
// (x) => x.device_number == sub[0]?.device_number
|
||||||
)[0];
|
// )[0];
|
||||||
if (matchDevice) {
|
// if (matchDevice) {
|
||||||
setForgeHotSpotColor(matchDevice);
|
// setForgeHotSpotColor(matchDevice);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
if (pageAct.sysSubTag == "W2") {
|
if (pageAct.sysSubTag == "W2") {
|
||||||
// console.log("@@",pageAct, pageAct.sub_system_tag)
|
// console.log("@@",pageAct, pageAct.sub_system_tag)
|
||||||
@ -992,11 +889,14 @@
|
|||||||
allDevList.forEach((dev, idx) => {
|
allDevList.forEach((dev, idx) => {
|
||||||
if (dev.device_number == devNum) {
|
if (dev.device_number == devNum) {
|
||||||
dev.spriteDbid = dbid;
|
dev.spriteDbid = dbid;
|
||||||
setForgeHotSpotColor(dev);
|
// setForgeHotSpotColor(dev);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$(ele).data("dbId", dbid);
|
$(ele).data("dbId", dbid);
|
||||||
});
|
});
|
||||||
|
if (pageAct.sysSubTag !== "L1" && pageAct.sysSubTag !== "M12") {
|
||||||
|
subDevice();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
onEvent("yt:tooltip:show", "[name=devItem]", function (e, obj) {
|
onEvent("yt:tooltip:show", "[name=devItem]", function (e, obj) {
|
||||||
|
@ -16,10 +16,8 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<div class="col-6 my-3">
|
<div class="col-6 my-3">
|
||||||
<div
|
<div id="floChart"
|
||||||
id="floChart"
|
style="height: 100%; width: 100%; background-color: #fff"></div>
|
||||||
style="height: 100%; width: 100%; background-color: #fff"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 my-3">
|
<div class="col-6 my-3">
|
||||||
<!-- <div id="forgeViewer" class="position-relative" style="height:100%">
|
<!-- <div id="forgeViewer" class="position-relative" style="height:100%">
|
||||||
@ -27,11 +25,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div id="forgeViewer" class="position-relative" style="height: 80vh">
|
<div id="forgeViewer" class="position-relative" style="height: 80vh">
|
||||||
<div
|
<div id="forgeHeatBarDiv"
|
||||||
id="forgeHeatBarDiv"
|
|
||||||
class="d-flex mb-4 position-absolute"
|
class="d-flex mb-4 position-absolute"
|
||||||
style="gap: 15px"
|
style="gap: 15px"></div>
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -47,6 +43,7 @@
|
|||||||
var zoomToggle = 1.3;
|
var zoomToggle = 1.3;
|
||||||
$(function () {
|
$(function () {
|
||||||
$(loadEle).Loading("start");
|
$(loadEle).Loading("start");
|
||||||
|
alarmDbIdList = [];
|
||||||
$("#topLight").html(setTopLight());
|
$("#topLight").html(setTopLight());
|
||||||
setLightColor();
|
setLightColor();
|
||||||
initChart();
|
initChart();
|
||||||
@ -446,7 +443,7 @@
|
|||||||
});
|
});
|
||||||
cData._dbId = dbid;
|
cData._dbId = dbid;
|
||||||
cData.spriteDbid = dbid;
|
cData.spriteDbid = dbid;
|
||||||
setForgeHotSpotColor(cData);
|
// setForgeHotSpotColor(cData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
floChart.setOption(option);
|
floChart.setOption(option);
|
||||||
@ -540,6 +537,7 @@
|
|||||||
(x) => x.device_number == data.device_number_full
|
(x) => x.device_number == data.device_number_full
|
||||||
)[0];
|
)[0];
|
||||||
if (!matchDevice) {
|
if (!matchDevice) {
|
||||||
|
$(loadEle).Loading("close");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//將訂閱值塞入 subDeviceData
|
//將訂閱值塞入 subDeviceData
|
||||||
@ -600,9 +598,36 @@
|
|||||||
heatMap?.changeTemp(matchDevice.device_number, 0);
|
heatMap?.changeTemp(matchDevice.device_number, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
data.point_name == errDevPoiName &&
|
||||||
|
data.value !== matchDevice.device_error_point_value &&
|
||||||
|
alarmDbIdList.some(
|
||||||
|
({ device_number }) => matchDevice.device_number === device_number
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
alarmDbIdList = alarmDbIdList.filter(
|
||||||
|
({ device_number }) => matchDevice.device_number === device_number
|
||||||
|
);
|
||||||
|
} else if (
|
||||||
|
data.point_name == errDevPoiName &&
|
||||||
|
data.value == matchDevice.device_error_point_value &&
|
||||||
|
!alarmDbIdList.some(
|
||||||
|
({ device_number }) => matchDevice.device_number === device_number
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$(`#${matchDevice.device_number}_status`)
|
||||||
|
.attr("data-light-type", "error")
|
||||||
|
.data("light-type", "error");
|
||||||
|
alarmDbIdList.push(matchDevice);
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
data.point_name == norDevPoiName &&
|
data.point_name == norDevPoiName &&
|
||||||
data.value == matchDevice.device_normal_point_value
|
data.value == matchDevice.device_normal_point_value &&
|
||||||
|
!deviceScatterNormalArr.some(
|
||||||
|
({ device_number }) => data.device_number_full === device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
//顯示正常燈號
|
//顯示正常燈號
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${matchDevice.device_number}_status`)
|
||||||
@ -612,83 +637,56 @@
|
|||||||
deviceScatterCloseArr = deviceScatterCloseArr.filter(
|
deviceScatterCloseArr = deviceScatterCloseArr.filter(
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
||||||
);
|
);
|
||||||
deviceScatterErrorArr = deviceScatterErrorArr.filter(
|
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
);
|
|
||||||
} else if (
|
} else if (
|
||||||
data.point_name == cloDevPoiName &&
|
data.point_name == cloDevPoiName &&
|
||||||
data.value == matchDevice.device_close_point_value
|
data.value == matchDevice.device_close_point_value &&
|
||||||
|
!deviceScatterCloseArr.some(
|
||||||
|
({ device_number }) => data.device_number_full === device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${matchDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "close")
|
.attr("data-light-type", "close")
|
||||||
.data("light-type", "close");
|
.data("light-type", "close");
|
||||||
deviceScatterCloseArr.push(matchDevice);
|
deviceScatterCloseArr.push(matchDevice);
|
||||||
|
|
||||||
deviceScatterNormalArr = deviceScatterNormalArr.filter(
|
deviceScatterNormalArr = deviceScatterNormalArr.filter(
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
||||||
);
|
);
|
||||||
deviceScatterErrorArr = deviceScatterErrorArr.filter(
|
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
);
|
|
||||||
} else if (
|
|
||||||
data.point_name == errDevPoiName &&
|
|
||||||
data.value == matchDevice.device_error_point_value
|
|
||||||
) {
|
|
||||||
$(`#${matchDevice.device_number}_status`)
|
|
||||||
.attr("data-light-type", "error")
|
|
||||||
.data("light-type", "error");
|
|
||||||
deviceScatterErrorArr.push(matchDevice);
|
|
||||||
deviceScatterNormalArr = deviceScatterNormalArr.filter(
|
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
);
|
|
||||||
deviceScatterCloseArr = deviceScatterCloseArr.filter(
|
|
||||||
(device) => device.spriteDbid !== matchDevice.spriteDbid
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pageAct.sysSubTag === "L1" && lightControl === "node") {
|
||||||
|
alarmDbIdList = alarmDbIdList.filter(
|
||||||
|
({ device_node_guid }) =>
|
||||||
|
device_node_guid !== undefined && device_node_guid !== null
|
||||||
|
);
|
||||||
|
|
||||||
|
deviceScatterNormalArr = deviceScatterNormalArr.filter(
|
||||||
|
({ device_node_guid }) =>
|
||||||
|
device_node_guid !== undefined && device_node_guid !== null
|
||||||
|
);
|
||||||
|
deviceScatterCloseArr = deviceScatterCloseArr.filter(
|
||||||
|
({ device_node_guid }) =>
|
||||||
|
device_node_guid !== undefined && device_node_guid !== null
|
||||||
|
);
|
||||||
|
|
||||||
|
lightOnHotColorArr = lightOnHotColorArr.filter(
|
||||||
|
({ device_node_guid }) =>
|
||||||
|
device_node_guid !== undefined && device_node_guid !== null
|
||||||
|
);
|
||||||
|
lightOffHotColorArr = lightOffHotColorArr.filter(
|
||||||
|
({ device_node_guid }) =>
|
||||||
|
device_node_guid !== undefined && device_node_guid !== null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
option.series[0].data.length ===
|
deviceScatterCloseArr.length + deviceScatterNormalArr.length ===
|
||||||
lightOnHotColorArr.length + lightOffHotColorArr.length
|
option.series[0].data.length ||
|
||||||
) {
|
|
||||||
lightOnHotColorArr.forEach((light) => {
|
|
||||||
const cur = option.series[0].data.find(
|
|
||||||
({ device_number }) => device_number === light.device_number
|
|
||||||
);
|
|
||||||
|
|
||||||
const onColor = currentData.find(
|
|
||||||
({ device_number }) => device_number === light.device_number
|
|
||||||
).device_normal_color;
|
|
||||||
cur.itemStyle = { color: onColor };
|
|
||||||
});
|
|
||||||
|
|
||||||
lightOffHotColorArr.forEach((light) => {
|
|
||||||
const cur = option.series[0].data.find(
|
|
||||||
({ device_number }) => device_number === light.device_number
|
|
||||||
);
|
|
||||||
const offColor = currentData.find(
|
|
||||||
({ device_number }) => device_number === light.device_number
|
|
||||||
).device_close_color;
|
|
||||||
cur.itemStyle = { color: offColor };
|
|
||||||
});
|
|
||||||
|
|
||||||
floChart.setOption(option);
|
|
||||||
|
|
||||||
changeColorForHotspot(
|
|
||||||
lightOnHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
|
||||||
null,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
changeColorForHotspot(
|
|
||||||
lightOffHotColorArr.map(({ spriteDbid }) => spriteDbid),
|
|
||||||
null,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
$(loadEle).Loading("close");
|
|
||||||
} else if (
|
|
||||||
deviceScatterCloseArr.length +
|
deviceScatterCloseArr.length +
|
||||||
deviceScatterNormalArr.length +
|
deviceScatterNormalArr.length +
|
||||||
deviceScatterErrorArr.length ===
|
alarmDbIdList.length ===
|
||||||
option.series[0].data.length
|
option.series[0].data.length
|
||||||
) {
|
) {
|
||||||
|
deviceScatterNormalArr.length &&
|
||||||
deviceScatterNormalArr.forEach((device) => {
|
deviceScatterNormalArr.forEach((device) => {
|
||||||
const cur = option.series[0].data.find(
|
const cur = option.series[0].data.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
@ -697,9 +695,18 @@
|
|||||||
const normalColor = currentData.find(
|
const normalColor = currentData.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
).device_normal_color;
|
).device_normal_color;
|
||||||
|
if (cur) {
|
||||||
cur.itemStyle = { color: normalColor };
|
cur.itemStyle = { color: normalColor };
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
changeColorForHotspot(
|
||||||
|
deviceScatterNormalArr.map(({ spriteDbid }) => spriteDbid),
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
deviceScatterCloseArr.length &&
|
||||||
deviceScatterCloseArr.forEach((device) => {
|
deviceScatterCloseArr.forEach((device) => {
|
||||||
const cur = option.series[0].data.find(
|
const cur = option.series[0].data.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
@ -707,22 +714,37 @@
|
|||||||
const closeColor = currentData.find(
|
const closeColor = currentData.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
).device_close_color;
|
).device_close_color;
|
||||||
|
if (cur) {
|
||||||
cur.itemStyle = { color: closeColor };
|
cur.itemStyle = { color: closeColor };
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
deviceScatterErrorArr.forEach((device) => {
|
changeColorForHotspot(
|
||||||
|
deviceScatterCloseArr.map(({ spriteDbid }) => spriteDbid),
|
||||||
|
null,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
alarmDbIdList.length &&
|
||||||
|
alarmDbIdList.forEach((device) => {
|
||||||
const cur = option.series[0].data.find(
|
const cur = option.series[0].data.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
);
|
);
|
||||||
|
|
||||||
const errColor = currentData.find(
|
const errColor = currentData.find(
|
||||||
({ device_number }) => device_number === device.device_number
|
({ device_number }) => device_number === device.device_number
|
||||||
).device_error_color;
|
)?.device_error_color;
|
||||||
|
|
||||||
|
if (cur) {
|
||||||
cur.itemStyle = { color: errColor };
|
cur.itemStyle = { color: errColor };
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
changeColorForHotspot(
|
||||||
|
alarmDbIdList.map(({ spriteDbid }) => spriteDbid),
|
||||||
|
"error",
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
floChart.setOption(option);
|
floChart.setOption(option);
|
||||||
setForgeHotSpotColor(matchDevice);
|
|
||||||
$(loadEle).Loading("close");
|
$(loadEle).Loading("close");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -763,7 +785,7 @@
|
|||||||
viewer: viewer,
|
viewer: viewer,
|
||||||
nodeId: node,
|
nodeId: node,
|
||||||
floorHeight: elev3DOption.floorHeight ?? [],
|
floorHeight: elev3DOption.floorHeight ?? [],
|
||||||
inited: function () {},
|
inited: function () { },
|
||||||
};
|
};
|
||||||
let elevator3DObj = new elevator3D(options);
|
let elevator3DObj = new elevator3D(options);
|
||||||
let devNum = Object.keys(elev3DBind).filter(
|
let devNum = Object.keys(elev3DBind).filter(
|
||||||
@ -1595,7 +1617,6 @@
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pageAct.sysSubTag === "M12" && !elevatorShow) {
|
if (pageAct.sysSubTag === "M12" && !elevatorShow) {
|
||||||
let sensorObjs = [];
|
let sensorObjs = [];
|
||||||
addHotPoint(viewer);
|
addHotPoint(viewer);
|
||||||
|
@ -1559,12 +1559,6 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
}
|
}
|
||||||
|
|
||||||
function controlFocusHotspot(dbId, open = true) {
|
function controlFocusHotspot(dbId, open = true) {
|
||||||
pageAct.sysSubTag !== "L1" &&
|
|
||||||
pageAct.sysSubTag !== "M12" &&
|
|
||||||
console.log("dbId", dbId);
|
|
||||||
pageAct.sysSubTag !== "L1" &&
|
|
||||||
pageAct.sysSubTag !== "M12" &&
|
|
||||||
changeColorForHotspot(dbId, open ? "focus" : null);
|
|
||||||
changeScaleForHotspot(dbId, open);
|
changeScaleForHotspot(dbId, open);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1630,11 +1624,11 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
"<'scrolledTable'tpi>"
|
"<'scrolledTable'tpi>"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//根據 data-type 設置顏色 (判斷後台是否有設定,若無則帶預設)
|
//根據 data-type 設置顏色 (判斷後台是否有設定,若無則帶預設)
|
||||||
function setLightColor() {
|
function setLightColor() {
|
||||||
$("[data-light-type]").each((index, ele) => {
|
$("[data-light-type]").each((index, ele) => {
|
||||||
let type = $(ele).data("light-type");
|
let type = $(ele).data("light-type");
|
||||||
|
let errType = $(ele).data("light-error-type");
|
||||||
let isFlashing = false;
|
let isFlashing = false;
|
||||||
let color = "#000";
|
let color = "#000";
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -1651,11 +1645,19 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
isFlashing = pageAct.sysSubObj.device_close_flashing == "1";
|
isFlashing = pageAct.sysSubObj.device_close_flashing == "1";
|
||||||
break;
|
break;
|
||||||
case "error":
|
case "error":
|
||||||
|
|
||||||
|
color =
|
||||||
|
pageAct.sysSubObj.device_error_color ?? "var(--theme-danger)";
|
||||||
|
// isFlashing = pageAct.sysSubObj.device_error_flashing == "1";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errType === "error") {
|
||||||
color =
|
color =
|
||||||
pageAct.sysSubObj.device_error_color ?? "var(--theme-danger)";
|
pageAct.sysSubObj.device_error_color ?? "var(--theme-danger)";
|
||||||
isFlashing = pageAct.sysSubObj.device_error_flashing == "1";
|
isFlashing = pageAct.sysSubObj.device_error_flashing == "1";
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$(ele).css("background-color", color);
|
$(ele).css("background-color", color);
|
||||||
//是否閃爍
|
//是否閃爍
|
||||||
if (isFlashing) {
|
if (isFlashing) {
|
||||||
@ -1738,6 +1740,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
|
|||||||
pageAct.sysSubTag = $(obj).data("subSysObj").sub_system_tag;
|
pageAct.sysSubTag = $(obj).data("subSysObj").sub_system_tag;
|
||||||
pageAct.sysSubName = $(obj).data("subSysObj").full_name;
|
pageAct.sysSubName = $(obj).data("subSysObj").full_name;
|
||||||
pageAct.sysSubObj = $(obj).data("subSysObj");
|
pageAct.sysSubObj = $(obj).data("subSysObj");
|
||||||
|
console.log(" pageAct.sysSubObj", pageAct.sysSubObj)
|
||||||
getDevItem();
|
getDevItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -922,9 +922,9 @@ async function addHotPoint(data) {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
spriteColor = new THREE.Color(0xffffff);
|
spriteColor = new THREE.Color(0xffffff);
|
||||||
spriteIcon = "/file/img/forge/hotspot.svg";
|
spriteIcon = "/file/img/forge/sensor_circle.svg";
|
||||||
if (location.href.indexOf("localhost:5966") != -1) {
|
if (location.href.indexOf("localhost:5966") != -1) {
|
||||||
spriteIcon = "/img/forge/hotspot.svg";
|
spriteIcon = "/img/forge/sensor_circle.svg";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -973,7 +973,7 @@ async function addHotPoint(data) {
|
|||||||
// console.log(`Sprite clicked: ${event.dbId}`);
|
// console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
|
|
||||||
for (let i = dbIdStart; i <= myDataList.length + 10; i++) {
|
for (let i = dbIdStart; i <= myDataList.length + 10; i++) {
|
||||||
!alarmDbIdList.some((dbId) => dbId == i) &&
|
!alarmDbIdList.some(({ spriteDbid }) => spriteDbid == i) &&
|
||||||
pageAct.sysSubTag !== "L1" &&
|
pageAct.sysSubTag !== "L1" &&
|
||||||
changeColorForHotspot(i);
|
changeColorForHotspot(i);
|
||||||
changeScaleForHotspot(i, true);
|
changeScaleForHotspot(i, true);
|
||||||
@ -990,7 +990,7 @@ async function addHotPoint(data) {
|
|||||||
}
|
}
|
||||||
$(selector).trigger("autodesk:click:sprite", { event, myData });
|
$(selector).trigger("autodesk:click:sprite", { event, myData });
|
||||||
} else {
|
} else {
|
||||||
!alarmDbIdList.some((dbId) => dbId == i) &&
|
!alarmDbIdList.some(({ spriteDbid }) => spriteDbid == event.dbId) &&
|
||||||
pageAct.sysSubTag !== "L1" &&
|
pageAct.sysSubTag !== "L1" &&
|
||||||
changeColorForHotspot(event.dbId, null);
|
changeColorForHotspot(event.dbId, null);
|
||||||
changeScaleForHotspot(event.dbId, false);
|
changeScaleForHotspot(event.dbId, false);
|
||||||
@ -1038,25 +1038,47 @@ async function addHotPoint(data) {
|
|||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//hex -> rgbsensor_circle
|
||||||
|
function hexToRgb(hex) {
|
||||||
|
return (
|
||||||
|
"rgb(" +
|
||||||
|
parseInt("0x" + hex.slice(1, 3)) +
|
||||||
|
"," +
|
||||||
|
parseInt("0x" + hex.slice(3, 5)) +
|
||||||
|
"," +
|
||||||
|
parseInt("0x" + hex.slice(5, 7)) +
|
||||||
|
")"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// 熱點 更換顏色
|
// 熱點 更換顏色
|
||||||
async function changeColorForHotspot(dbId, type = null, lightOn = false) {
|
async function changeColorForHotspot(dbId, type = null, OnOff = false) {
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
||||||
let spriteColorFocus = new THREE.Color(0xffffff);
|
let spriteColorFocus = new THREE.Color(0xffffff);
|
||||||
if (pageAct.sysSubTag == "L1") {
|
|
||||||
spriteColorFocus = lightOn
|
spriteColorFocus = OnOff
|
||||||
? new THREE.Color(0xffd524)
|
? pageAct.sysSubObj.device_normal_color
|
||||||
: new THREE.Color(0x40525e);
|
? new THREE.Color(hexToRgb(pageAct.sysSubObj.device_normal_color))
|
||||||
if (lightOn) {
|
: new THREE.Color(0xffffff)
|
||||||
console.log(dbId);
|
: pageAct.sysSubObj.device_close_color
|
||||||
}
|
? new THREE.Color(hexToRgb(pageAct.sysSubObj.device_close_color))
|
||||||
} else if (type == "focus" && pageAct.sysSubTag !== "M12") {
|
: new THREE.Color(0xffffff);
|
||||||
|
|
||||||
|
if (type == "focus") {
|
||||||
spriteColorFocus = new THREE.Color(0x00ffe1);
|
spriteColorFocus = new THREE.Color(0x00ffe1);
|
||||||
} else if (type == "error") {
|
} else if (type == "error") {
|
||||||
spriteColorFocus = new THREE.Color(0xff0000);
|
spriteColorFocus = new THREE.Color(
|
||||||
|
hexToRgb(pageAct.sysSubObj.device_error_color)
|
||||||
|
);
|
||||||
|
spriteErrIcon = baseForgeApiUrl + "/file/img/forge/sensor_circle.svg";
|
||||||
|
if (location.href.indexOf("localhost:5966") != -1) {
|
||||||
|
spriteErrIcon = baseForgeApiUrl + "/img/forge/sensor_circle.svg";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const viewablesToUpdate = dbId;
|
const viewablesToUpdate = dbId;
|
||||||
dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
||||||
return {
|
return {
|
||||||
|
url: "/file/img/forge/sensor_circle.svg",
|
||||||
color: spriteColorFocus,
|
color: spriteColorFocus,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -954,26 +954,24 @@ class Forge3DSensor {
|
|||||||
this.DataVizCore = null;
|
this.DataVizCore = null;
|
||||||
this.tempVal = 20;
|
this.tempVal = 20;
|
||||||
this.curDevice = option.curDevice ?? null;
|
this.curDevice = option.curDevice ?? null;
|
||||||
this.deviceList = option.deviceList ?? null;
|
|
||||||
this.selector = option.selector ?? "#forgeViewer";
|
this.selector = option.selector ?? "#forgeViewer";
|
||||||
this.elevCb = option.elevCb ?? null;
|
this.elevCb = option.elevCb ?? null;
|
||||||
|
this.deviceList = option.deviceList ?? null;
|
||||||
this.#init();
|
this.#init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static sensorTimes = 0;
|
|
||||||
|
|
||||||
#init = async function () {
|
#init = async function () {
|
||||||
// 系統大類、小類固定
|
// 系統大類、小類固定
|
||||||
this.ordPath.system_tag = this.sysMainTag;
|
this.ordPath.system_tag = this.sysMainTag;
|
||||||
this.ordPath.name_tag = this.sysSubTag;
|
this.ordPath.name_tag = this.sysSubTag;
|
||||||
// this.dataVizExtn = await this.viewer.loadExtension(
|
this.dataVizExtn = await this.viewer.loadExtension(
|
||||||
// "Autodesk.DataVisualization"
|
"Autodesk.DataVisualization"
|
||||||
// );
|
);
|
||||||
// this.DataVizCore = Autodesk.DataVisualization.Core;
|
this.DataVizCore = Autodesk.DataVisualization.Core;
|
||||||
await this.registerHotPoint();
|
await this.registerHotPoint();
|
||||||
this.addSensorHotspotList(this.curDevice.forge_dbid, 35);
|
this.changeColorForSensorHotspot(this.curDevice.forge_dbid, 35);
|
||||||
this.subSensorDevice();
|
|
||||||
this.elevCb && this.elevCb();
|
this.elevCb && this.elevCb();
|
||||||
|
this.subSensorDevice();
|
||||||
};
|
};
|
||||||
|
|
||||||
// // 建立熱點
|
// // 建立熱點
|
||||||
@ -986,30 +984,29 @@ class Forge3DSensor {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
async registerHotPoint(color = "") {
|
async registerHotPoint(color = "") {
|
||||||
if (Forge3DSensor.sensorTimes === 1) {
|
|
||||||
var viewer = this.viewer;
|
var viewer = this.viewer;
|
||||||
const dataVizExtn = await viewer.loadExtension(
|
const viewableType = this.DataVizCore.ViewableType.SPRITE; //DataVizCore.ViewableType.SPRITE;
|
||||||
"Autodesk.DataVisualization"
|
|
||||||
);
|
|
||||||
const DataVizCore = Autodesk.DataVisualization.Core;
|
|
||||||
const viewableType = DataVizCore.ViewableType.SPRITE; //DataVizCore.ViewableType.SPRITE;
|
|
||||||
const spriteColor = new THREE.Color(0xff8c00);
|
const spriteColor = new THREE.Color(0xff8c00);
|
||||||
// const highlightedColor = new THREE.Color(0xe0e0ff);
|
// const highlightedColor = new THREE.Color(0xe0e0ff);
|
||||||
let spriteIcon = "/file/img/forge/sensor_circle.svg";
|
let spriteIcon = "/file/img/forge/sensor_circle.svg";
|
||||||
if (location.href.indexOf("localhost:5966") != -1) {
|
if (location.href.indexOf("localhost:5966") != -1) {
|
||||||
spriteIcon = "/img/forge/sensor_circle.svg";
|
spriteIcon = "/img/forge/sensor_circle.svg";
|
||||||
}
|
}
|
||||||
const style = new DataVizCore.ViewableStyle(
|
const style = new this.DataVizCore.ViewableStyle(
|
||||||
viewableType,
|
viewableType,
|
||||||
spriteColor,
|
spriteColor,
|
||||||
spriteIcon
|
spriteIcon
|
||||||
);
|
);
|
||||||
const viewableData = new DataVizCore.ViewableData();
|
|
||||||
|
const viewableData = new this.DataVizCore.ViewableData();
|
||||||
viewableData.spriteSize = 30; // Sprites as points of size 24 x 24 pixels
|
viewableData.spriteSize = 30; // Sprites as points of size 24 x 24 pixels
|
||||||
this.deviceList.forEach((myData, index) => {
|
// console.log(this.curDevice, [this.curDevice])
|
||||||
|
|
||||||
|
[this.curDevice].forEach((myData, index) => {
|
||||||
|
// console.log(myData)
|
||||||
const dbId = myData.forge_dbid;
|
const dbId = myData.forge_dbid;
|
||||||
const myPosition = myData.position;
|
const myPosition = myData.position;
|
||||||
const viewable = new DataVizCore.SpriteViewable(
|
const viewable = new this.DataVizCore.SpriteViewable(
|
||||||
myPosition,
|
myPosition,
|
||||||
style,
|
style,
|
||||||
dbId
|
dbId
|
||||||
@ -1017,26 +1014,28 @@ class Forge3DSensor {
|
|||||||
myData._dbId = dbId;
|
myData._dbId = dbId;
|
||||||
viewableData.addViewable(viewable);
|
viewableData.addViewable(viewable);
|
||||||
});
|
});
|
||||||
|
// console.log(viewableData)
|
||||||
await viewableData.finish();
|
await viewableData.finish();
|
||||||
dataVizExtn.addViewables(viewableData);
|
this.dataVizExtn.addViewables(viewableData);
|
||||||
|
// console.log("1",this.dataVizExtn)
|
||||||
viewer.addEventListener(
|
viewer.addEventListener(
|
||||||
DataVizCore.MOUSE_CLICK,
|
this.DataVizCore.MOUSE_CLICK,
|
||||||
this.onSpriteClicked.bind(this)
|
this.onSpriteClicked.bind(this)
|
||||||
); // SPRITE_SELECTED
|
); // SPRITE_SELECTED
|
||||||
// viewer.addEventListener(this.DataVizCore.MOUSE_CLICK_OUT, onSpriteClickedOut.bind(this));
|
// viewer.addEventListener(this.DataVizCore.MOUSE_CLICK_OUT, onSpriteClickedOut.bind(this));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// ---------------- 熱點點擊事件 --------------------
|
// ---------------- 熱點點擊事件 --------------------
|
||||||
onSpriteClicked(event) {
|
onSpriteClicked(event) {
|
||||||
|
console.log(event);
|
||||||
event.hasStopped = true;
|
event.hasStopped = true;
|
||||||
const dbIdStart = 10;
|
const dbIdStart = 10;
|
||||||
if (event != undefined && event != null) {
|
if (event != undefined && event != null) {
|
||||||
if (event.dbId >= dbIdStart) {
|
if (event.dbId >= dbIdStart) {
|
||||||
let myData = this.deviceList.find((x) => x.forge_dbid == event.dbId);
|
let myData = [this.curDevice].filter(
|
||||||
console.log("site", myData);
|
(x) => x.forge_dbid == event.dbId
|
||||||
// this.changeColorForSensorHotspot(event.dbId, this.tempVal);
|
)[0];
|
||||||
myData && moveViewToDevice(myData.forge_dbid); //移動視角至該設備
|
this.changeColorForSensorHotspot(event.dbId, this.tempVal);
|
||||||
myData &&
|
moveViewToDevice(myData.forge_dbid); //移動視角至該設備
|
||||||
$(this.selector).trigger("autodesk:click:sprite", { event, myData });
|
$(this.selector).trigger("autodesk:click:sprite", { event, myData });
|
||||||
} else {
|
} else {
|
||||||
$(this.selector).trigger("autodesk:clickOut:sprite", { event });
|
$(this.selector).trigger("autodesk:clickOut:sprite", { event });
|
||||||
@ -1046,10 +1045,8 @@ class Forge3DSensor {
|
|||||||
|
|
||||||
// 改變熱點位置
|
// 改變熱點位置
|
||||||
async changePos(dbId, positionZ) {
|
async changePos(dbId, positionZ) {
|
||||||
const dataVizExtn = await viewer.loadExtension(
|
// const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization") || this.dataVizExtn;
|
||||||
"Autodesk.DataVisualization"
|
this.dataVizExtn?.invalidateViewables(dbId, (viewable) => {
|
||||||
);
|
|
||||||
dataVizExtn?.invalidateViewables(dbId, (viewable) => {
|
|
||||||
// console.log(viewable._position)
|
// console.log(viewable._position)
|
||||||
const z = viewable._position.z + positionZ;
|
const z = viewable._position.z + positionZ;
|
||||||
const newPos = { ...viewable._position, z };
|
const newPos = { ...viewable._position, z };
|
||||||
@ -1060,99 +1057,68 @@ class Forge3DSensor {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 溫度感測器 sprite 隨溫度變化
|
// 熱點 更換顏色---環境感知器
|
||||||
static lowerTempForSensor = [];
|
async changeColorForSensorHotspot(dbId, temp, type = "") {
|
||||||
static normalTempForSensor = [];
|
// const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
||||||
static highTempForSensor = [];
|
|
||||||
static highestTempForSensor = [];
|
|
||||||
|
|
||||||
async addSensorHotspotList(dbid, temp) {
|
|
||||||
let index = Math.floor(temp / 10) - 1 || 0;
|
|
||||||
|
|
||||||
// 清空資料
|
|
||||||
Forge3DSensor.lowerTempForSensor = Forge3DSensor.lowerTempForSensor.filter(
|
|
||||||
(point) => point !== dbid
|
|
||||||
);
|
|
||||||
Forge3DSensor.normalTempForSensor =
|
|
||||||
Forge3DSensor.normalTempForSensor.filter((point) => point !== dbid);
|
|
||||||
Forge3DSensor.highTempForSensor = Forge3DSensor.highTempForSensor.filter(
|
|
||||||
(point) => point !== dbid
|
|
||||||
);
|
|
||||||
Forge3DSensor.highestTempForSensor =
|
|
||||||
Forge3DSensor.highestTempForSensor.filter((point) => point !== dbid);
|
|
||||||
|
|
||||||
const temps = [
|
const temps = [
|
||||||
new THREE.Color(0x00009c),
|
new THREE.Color(0x00009c),
|
||||||
new THREE.Color(0xffff31),
|
new THREE.Color(0xffff31),
|
||||||
new THREE.Color(0xff8c00),
|
new THREE.Color(0xff8c00),
|
||||||
new THREE.Color(0xff0000),
|
new THREE.Color(0xff0000),
|
||||||
];
|
];
|
||||||
|
let index = Math.floor(temp / 10) - 1 || 0;
|
||||||
switch (index) {
|
if (index > 3) {
|
||||||
case -1:
|
index = 3;
|
||||||
Forge3DSensor.lowerTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
Forge3DSensor.lowerTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Forge3DSensor.normalTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
Forge3DSensor.highTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
Forge3DSensor.highestTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Forge3DSensor.highTempForSensor.push(dbid);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (
|
const viewablesToUpdate = dbId;
|
||||||
(Forge3DSensor.lowerTempForSensor.length,
|
let color = temps[index];
|
||||||
Forge3DSensor.normalTempForSensor.length,
|
// debugger
|
||||||
Forge3DSensor.highTempForSensor.length,
|
// this.registerHotPoint(color)
|
||||||
Forge3DSensor.highestTempForSensor.length,
|
// const _this=this
|
||||||
allDevList.length)
|
// setInterval(() => {
|
||||||
) {
|
// _this.dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
||||||
await this.changeColorForSensorHotspot(
|
// return { color: color };
|
||||||
Forge3DSensor.lowerTempForSensor,
|
// });
|
||||||
temps[0]
|
// // sceneUpdated(true)
|
||||||
);
|
// }, 1000);
|
||||||
await this.changeColorForSensorHotspot(
|
if (type == "error") {
|
||||||
Forge3DSensor.normalTempForSensor,
|
color = new THREE.Color(0xff0000);
|
||||||
temps[1]
|
|
||||||
);
|
|
||||||
await this.changeColorForSensorHotspot(
|
|
||||||
Forge3DSensor.highTempForSensor,
|
|
||||||
temps[2]
|
|
||||||
);
|
|
||||||
await this.changeColorForSensorHotspot(
|
|
||||||
Forge3DSensor.highestTempForSensor,
|
|
||||||
temps[3]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
this.dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
||||||
|
|
||||||
async changeColorForSensorHotspot(viewablesToUpdate, color) {
|
|
||||||
const dataVizExtn = await viewer.loadExtension(
|
|
||||||
"Autodesk.DataVisualization"
|
|
||||||
);
|
|
||||||
dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
|
||||||
return {
|
return {
|
||||||
color: color,
|
color: color,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
// debugger
|
||||||
|
// console.log("3", this.dataVizExtn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static deviceScatterNormalArr = [];
|
||||||
|
static deviceScatterCloseArr = [];
|
||||||
|
static deviceScatterErrorArr = [];
|
||||||
|
|
||||||
|
static deviceNormalArr = [];
|
||||||
|
static deviceCloseArr = [];
|
||||||
|
|
||||||
// 訂閱sensor設備
|
// 訂閱sensor設備
|
||||||
subSensorDevice() {
|
subSensorDevice() {
|
||||||
|
// console.log("sensor 訂閱")
|
||||||
|
// require(["baja!"], (baja)=>{
|
||||||
|
// const sub = new baja.subscriber();
|
||||||
|
// sub.attach("changed",function(){
|
||||||
|
// console.log(this)
|
||||||
|
// })
|
||||||
|
// baja.Ord.make("local:|foxs:|station:|slot:/TPE/B1/ME/M12/U1F/NA/TH/N1/TEMP").get({subscribe: sub})
|
||||||
|
// })
|
||||||
|
|
||||||
let myBaja = new subscriptionDevices();
|
let myBaja = new subscriptionDevices();
|
||||||
myBaja.setSubscribeDevicesByBql(this.ordPath);
|
myBaja.setSubscribeDevicesByBql(this.ordPath);
|
||||||
|
|
||||||
myBaja.setSubscribeDevicesCallBack((data) => {
|
myBaja.setSubscribeDevicesCallBack((data) => {
|
||||||
|
// console.log(data)
|
||||||
this.bajaChaCallback ? this.bajaChaCallback(data) : "";
|
this.bajaChaCallback ? this.bajaChaCallback(data) : "";
|
||||||
if (this.curDevice == null) {
|
if (this.curDevice == null) {
|
||||||
|
$(loadEle).Loading("close");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1170,64 +1136,147 @@ class Forge3DSensor {
|
|||||||
this.subDeviceData.push(obj);
|
this.subDeviceData.push(obj);
|
||||||
}
|
}
|
||||||
let subData = this.subDeviceData.find(
|
let subData = this.subDeviceData.find(
|
||||||
(x) => x.device_number == this.curDevice.id
|
(x) =>
|
||||||
|
x.device_number == this.curDevice.id ||
|
||||||
|
x.device_number == "TPE_B1_ME_M12_R2F_NA_TH_N1"
|
||||||
);
|
);
|
||||||
|
|
||||||
if (subData) {
|
if (subData) {
|
||||||
subData = { ...subData, [data.point_name]: data.value };
|
subData[data.point_name] = data.value;
|
||||||
}
|
}
|
||||||
|
let norDevPoiName = this.curDevice.device_normal_point_name;
|
||||||
|
let cloDevPoiName = this.curDevice.device_close_point_name || "";
|
||||||
|
let errDevPoiName = this.curDevice.device_error_point_name;
|
||||||
|
|
||||||
if (data.point_name == "Temp" || data.point_name == "TEMP") {
|
if (data.point_name == "Temp" || data.point_name == "TEMP") {
|
||||||
this.tempVal = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
|
this.tempVal = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
|
||||||
this.curDevice = {
|
// this.heatMap?.changeTemp(
|
||||||
...this.curDevice,
|
// this.curDevice.id,
|
||||||
temp: !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0,
|
// !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0,
|
||||||
};
|
// );
|
||||||
|
this.curDevice.temp = this.tempVal;
|
||||||
if (data.device_number_full === this.curDevice.id) {
|
if (
|
||||||
this.addSensorHotspotList(
|
subData &&
|
||||||
|
subData[this.curDevice.device_error_point_name] ==
|
||||||
|
this.curDevice.device_error_point_value
|
||||||
|
) {
|
||||||
|
this.changeColorForSensorHotspot(
|
||||||
this.curDevice.forge_dbid,
|
this.curDevice.forge_dbid,
|
||||||
this.curDevice.temp
|
this.curDevice.temp,
|
||||||
|
"error"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.changeColorForSensorHotspot(
|
||||||
|
this.curDevice.forge_dbid,
|
||||||
|
parseInt(data.value)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// changeColorForSensorHotspot(this.curDevice.forge_dbid, parseInt(data.value))
|
||||||
}
|
}
|
||||||
|
|
||||||
let matchDevice = allDevList.find(
|
|
||||||
(x) => x.device_number == data.device_number_full
|
|
||||||
);
|
|
||||||
|
|
||||||
let norDevPoiName = matchDevice.device_normal_point_name;
|
|
||||||
let cloDevPoiName = matchDevice.device_close_point_name;
|
|
||||||
let errDevPoiName = matchDevice.device_error_point_name;
|
|
||||||
if (
|
if (
|
||||||
data.point_name == norDevPoiName &&
|
data.point_name == norDevPoiName &&
|
||||||
data.value == matchDevice.device_normal_point_value
|
data.value == this.curDevice.device_normal_point_value &&
|
||||||
|
!Forge3DSensor.deviceNormalArr.some(
|
||||||
|
({ device_number }) => device_number === this.curDevice.device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
|
|
||||||
//顯示正常燈號
|
//顯示正常燈號
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${this.curDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "normal")
|
.attr("data-light-type", "normal")
|
||||||
.data("light-type", "normal");
|
.data("light-type", "normal");
|
||||||
|
|
||||||
|
Forge3DSensor.deviceNormalArr.push(this.curDevice);
|
||||||
|
Forge3DSensor.deviceCloseArr = Forge3DSensor.deviceCloseArr.filter(
|
||||||
|
(device) => device.spriteDbid !== this.curDevice.spriteDbid
|
||||||
|
);
|
||||||
} else if (
|
} else if (
|
||||||
data.point_name == cloDevPoiName &&
|
data.point_name == cloDevPoiName &&
|
||||||
data.value == matchDevice.device_close_point_value
|
data.value == this.curDevice.device_close_point_value &&
|
||||||
|
!Forge3DSensor.deviceCloseArr.some(
|
||||||
|
({ device_number }) => device_number === this.curDevice.device_number
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
|
$(`#${this.curDevice.device_number}_status`)
|
||||||
$(`#${matchDevice.device_number}_status`)
|
|
||||||
.attr("data-light-type", "close")
|
.attr("data-light-type", "close")
|
||||||
.data("light-type", "close");
|
.data("light-type", "close");
|
||||||
|
|
||||||
|
Forge3DSensor.deviceCloseArr.push(this.curDevice);
|
||||||
|
Forge3DSensor.deviceNormalArr = Forge3DSensor.deviceNormalArr.filter(
|
||||||
|
(device) => device.spriteDbid !== this.curDevice.spriteDbid
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
data.point_name == errDevPoiName &&
|
||||||
|
data.value == this.curDevice.device_error_point_value &&
|
||||||
|
!alarmDbIdList.some(
|
||||||
|
(device) => device.device_number === this.curDevice.device_number
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$(`#${this.curDevice.device_number}_status`)
|
||||||
|
.attr("data-light-error-type", "error")
|
||||||
|
.data("light-error-type", "error");
|
||||||
|
|
||||||
|
alarmDbIdList.push(this.curDevice);
|
||||||
} else if (
|
} else if (
|
||||||
data.point_name == errDevPoiName &&
|
data.point_name == errDevPoiName &&
|
||||||
data.value == matchDevice.device_error_point_value
|
data.value !== this.curDevice.device_error_point_value
|
||||||
) {
|
) {
|
||||||
$(`#${matchDevice.device_number}_status`)
|
$(`#${this.curDevice.device_number}_status`)
|
||||||
|
.attr("data-light-error-type", "")
|
||||||
|
.data("light-error-type", "");
|
||||||
|
alarmDbIdList = alarmDbIdList.filter(
|
||||||
|
(device) => device.device_number !== this.curDevice.device_number
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
Forge3DSensor.deviceCloseArr.length === 0 &&
|
||||||
|
alarmDbIdList.some(
|
||||||
|
(device) => device.device_number === this.curDevice.device_number
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$(`#${this.curDevice.device_number}_status`)
|
||||||
.attr("data-light-type", "error")
|
.attr("data-light-type", "error")
|
||||||
.data("light-type", "error");
|
.data("light-type", "error");
|
||||||
}
|
}
|
||||||
|
|
||||||
setLightColor();
|
setLightColor();
|
||||||
setDevItemPoiValBySub(data);
|
|
||||||
|
if (pageAct.floTag) {
|
||||||
|
const option = floChart.getOption();
|
||||||
|
|
||||||
|
if (!alarmDbIdList.some(a => a.device_number === this.curDevice.device_number)) {
|
||||||
|
this.deviceList.forEach((device) => {
|
||||||
|
const cur = option.series[0].data.find(
|
||||||
|
({ device_number }) => device_number === device.device_number
|
||||||
|
);
|
||||||
|
|
||||||
|
const normalColor = currentData.find(
|
||||||
|
({ device_number }) => device_number === device.device_number
|
||||||
|
).device_normal_color;
|
||||||
|
if (cur) {
|
||||||
|
cur.itemStyle = { color: normalColor };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alarmDbIdList.forEach((device) => {
|
||||||
|
const cur = option.series[0].data.find(
|
||||||
|
({ device_number }) => device_number === device.device_number
|
||||||
|
);
|
||||||
|
const errColor = currentData.find(
|
||||||
|
({ device_number }) => device_number === device.device_number
|
||||||
|
)?.device_error_color;
|
||||||
|
|
||||||
|
if (cur) {
|
||||||
|
cur.itemStyle = { color: errColor };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
floChart.setOption(option);
|
||||||
|
}
|
||||||
$(loadEle).Loading("close");
|
$(loadEle).Loading("close");
|
||||||
|
setDevItemPoiValBySub(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
myBaja.setSubscribeDeviceEndCallBack((data) => {
|
myBaja.setSubscribeDeviceEndCallBack((data) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user