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;