import React, { useEffect } from "react";
import { useParams } from "react-router-dom";
import { useSelector, useDispatch } from "react-redux";
import { Container, Row, Col, Card, ButtonGroup, Button } from "react-bootstrap";
import ForgeModel from "@COM/forges/ForgeModel";
import { fetchSelectedDeviceMenu, fetchSelectedDeviceList, fetchSelectedDevFlTags, changeMainSubSys } from "@STORE";
import defdev from "@ASSET/img/defdev.png";
function Monitor() {
const params = useParams().systemId; // main_sub
const [main_system_tag, sub_system_tag] = params.split("_");
const dispatch = useDispatch();
const {
device: { selectedDeviceMenu, selectedDeviceList, selectedDeviceFloorTags },
system: { mainSub },
forgeViewer: { viewer, model },
} = useSelector((state) => state);
useEffect(() => {
if (main_system_tag && sub_system_tag) {
dispatch(changeMainSubSys({ main_system_tag, sub_system_tag }))
dispatch(fetchSelectedDeviceMenu({ main_system_tag, sub_system_tag }));
dispatch(fetchSelectedDeviceList({ sub_system_tag }));
dispatch(fetchSelectedDevFlTags({ sub_system_tag }));
}
// 載入資料
}, [main_system_tag, sub_system_tag]);
// 只顯示指定的設備
// 取得所有 forge dbid
const getAllDbIds = (model) => {
const instanceTree = model.getInstanceTree();
const allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);
return allDbIdsStr.map(id => parseInt(id));
}
useEffect(() => {
if (model && selectedDeviceList.length !== 0) {
console.log(model)
const allDbIds = getAllDbIds(model)
viewer.hide(allDbIds)
const showDbIds = selectedDeviceList.map((d) => parseInt(d.forge_dbid))
let showNodeDbId = [];
selectedDeviceList.forEach(({ device_nodes }) => {
showNodeDbId = [...showNodeDbId, ...device_nodes.map(({ forge_dbid }) => forge_dbid)]
})
viewer.show([...showDbIds, ...showNodeDbId])
}
}, [model, selectedDeviceList])
return (
<>
{mainSub.length !== 0 &&
mainSub.find((s) => params.includes(s.sub_system_tag))?.full_name}
{selectedDeviceFloorTags.length !== 0 &&
selectedDeviceFloorTags.map(({ floor_tag, floor_guid }) => (
))}
{selectedDeviceMenu?.left_system_url &&
window.location.href.includes("http://220.132.206.5") ? (
) : (
selectedDeviceFloorTags.map(({ floor_tag, floor_guid }) => (
{selectedDeviceList.map(({ device_guid, full_name, forge_dbid, device_floor }) => (
device_floor === floor_tag ?
{full_name}
功率 kW
詳細內容
:
<>>
))}
))
)}
>
);
}
export default Monitor;