From 9f78483b8160ddb80215ad0e7fe7960786078218 Mon Sep 17 00:00:00 2001 From: wanli Date: Thu, 24 Nov 2022 00:20:37 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[Frontend]=20forge=20=E9=9B=BB=E6=A2=AF?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=A8=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frontend/forgeTest.html | 30 +++++- Frontend/js/forge/forgemodel.js | 159 ++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+), 1 deletion(-) diff --git a/Frontend/forgeTest.html b/Frontend/forgeTest.html index 5f78e4d..fd91475 100644 --- a/Frontend/forgeTest.html +++ b/Frontend/forgeTest.html @@ -13,6 +13,16 @@ +
+

Robot Controls

+

Selected_ID:

+

All_ID:

+ + + + +
+
@@ -44,8 +54,26 @@ diff --git a/Frontend/js/forge/forgemodel.js b/Frontend/js/forge/forgemodel.js index 5f538e8..b104a06 100644 --- a/Frontend/js/forge/forgemodel.js +++ b/Frontend/js/forge/forgemodel.js @@ -42,6 +42,9 @@ var sensorStyleDefinitions = { // Initialize sensor values let sensorVals = []; +let fragProxy; +var targetFloorZ; +var elevatorSpeed; for (let i = 0; i < devices.length; i++) { sensorVals[i] = Math.random(); } @@ -87,12 +90,168 @@ function launchViewer(urn) { }); } +function getAllLeafComponents(viewer, callback) { + var cbCount = 0; + var tree; + var jsData = [] + + function getLeafComponentsRec(current, parent) { + cbCount++; + if (tree.getChildCount(current) != 0) { + tree.enumNodeChildren(current, function (children) { + getLeafComponentsRec(children, current); + }, false); + } + var nodeName = viewer.model.getInstanceTree().getNodeName(current) + jsData.push({ id: current, parent: parent, text: nodeName }) + + if (--cbCount == 0) callback(jsData); + } + viewer.getObjectTree(function (objectTree) { + tree = objectTree; + var rootId = tree.getRootId() + var nodeName = viewer.model.getInstanceTree().getNodeName(rootId) + jsData.push({ id: rootId, parent: '#', text: nodeName }) + var allLeafComponents = getLeafComponentsRec(rootId, '#'); + + }); +} + function onDocumentLoadSuccess(doc) { var viewables = doc.getRoot().getDefaultGeometry(); viewer.loadDocumentNode(doc, viewables).then(i => { // documented loaded, any action? }); + viewer.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, (args) => { + var currSelection = viewer.getSelection(); + var domElem = document.getElementById('id_printer'); + domElem.innerText = currSelection[0]; + }); + viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () { + var instanceTree = viewer.model.getData().instanceTree; + var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex); + var domElem = document.getElementById('all_id'); + domElem.innerText = allDbIdsStr; + //allDbIdsStr.map(function (id) { return parseInt(id) }); + //getAllLeafComponents(viewer, function (jsonData) { + // console.log("data: " + jsonData); + //}); + //var a = getAllDbIds(viewer); + //console.log("a: " + a);//10952 + + let tree = viewer.model.getData().instanceTree; + let nodeId = 10952; + + tree.enumNodeFragments(nodeId, function (frag) { + fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag); + fragProxy.getAnimTransform(); + //fragProxy.quaternion = new THREE.Quaternion().setFromAxisAngle( + // new THREE.Vector3(0, 0.3, 0), + // -Math.PI / 2); + //fragProxy.quaternion = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0)); + //fragProxy.quaternion = new THREE.Quaternion().setPosition(new THREE.Vector3(10, 5, 0), 5); + //fragProxy.updateAnimTransform(); + //do some work with fragment proxy + + + //var fragPosition = new THREE.Vector3( + // 10 - fragProxy.offset.x, + // 10 - fragProxy.offset.y, + // 10 - fragProxy.offset.z) + + + let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26 + + fragProxy.position = fragPosition + + fragProxy.updateAnimTransform() + + }); + viewer.impl.sceneUpdated(true); + + }); + + +} + +function setElevatorFloor(floor) { + if (floor == 0) + targetFloorZ = 0; + else if (floor == 1) + targetFloorZ = 15; + else if (floor == 2) + targetFloorZ = 26; +} + +function setElevatorSpeed(speed) { //0.01 ~ 1 + elevatorSpeed = speed; +} + +function movElevator() { + + + let tree = viewer.model.getData().instanceTree; + let nodeId = 10952; + let fragProxyZ = 0; + var movStatus = 0; // 0=no 1=up 2=down + + + if (fragProxy.position.z > targetFloorZ) { + movStatus = 2 + } + else if (fragProxy.position.z < targetFloorZ) { + movStatus = 1 + } + + if (movStatus == 0) { + return; + } + + tree.enumNodeFragments(nodeId, function (frag) { + fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag); + fragProxy.getAnimTransform(); + //let fragPosition = new THREE.Vector3(0, 0, 15);// 一樓0 二樓15 三樓 26 + if (movStatus == 2) { + fragProxy.position.z -= elevatorSpeed; + } + else if (movStatus == 1) { + fragProxy.position.z += elevatorSpeed; + } + + fragProxyZ = fragProxy.position.z; + fragProxy.updateAnimTransform() + + }); + viewer.impl.sceneUpdated(true); + + if (movStatus == 2) { + if (fragProxyZ >= targetFloorZ) { + requestAnimationFrame(movElevator); + } + } + else if (movStatus == 1) { + if (fragProxyZ <= targetFloorZ) { + requestAnimationFrame(movElevator); + } + } + + + //let fragPosition = new THREE.Vector3(position);// 一樓0 二樓15 三樓 26 + + //fragProxy.position = fragPosition; + + //fragProxy.updateAnimTransform(); + + //viewer.impl.sceneUpdated(true); +} + +function getAllDbIds(viewer) { + var instanceTree = viewer.model.getData().instanceTree; + + var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex); + + return allDbIdsStr.map(function (id) { return parseInt(id) }); } /** From effde07692d29794fcb441e52348996d3df73d90 Mon Sep 17 00:00:00 2001 From: SinoroWu Date: Thu, 24 Nov 2022 09:29:51 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=5FgraphManagement.html=20=E4=B8=B2?= =?UTF-8?q?=E6=8E=A5API=20=E4=BF=AE=E6=94=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frontend/_graphManagement.html | 91 ++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 3 deletions(-) diff --git a/Frontend/_graphManagement.html b/Frontend/_graphManagement.html index b4a8e2f..6e24713 100644 --- a/Frontend/_graphManagement.html +++ b/Frontend/_graphManagement.html @@ -68,7 +68,7 @@ - +
@@ -190,4 +190,89 @@ - \ No newline at end of file + + + \ No newline at end of file From a074dcd89a12175b4eb3f788ae33b66c6dc55491 Mon Sep 17 00:00:00 2001 From: dev02 Date: Thu, 24 Nov 2022 10:43:44 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=99=82=E9=96=93?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frontend/_historyData.html | 156 +++++++++++++++++++++++++++++-------- 1 file changed, 124 insertions(+), 32 deletions(-) diff --git a/Frontend/_historyData.html b/Frontend/_historyData.html index 5aa86ac..779c37c 100644 --- a/Frontend/_historyData.html +++ b/Frontend/_historyData.html @@ -18,24 +18,31 @@
- - - + + +
- - + +
- + + +
+
+
- 查詢  + 查詢 + 匯出 @@ -86,6 +93,7 @@ }); function initList() { + pageAct.mainStatus = false; let sendData = { building_tag: pageAct.buiTag } @@ -95,15 +103,16 @@ let strHtml = ``; let i1 = null, i2 = null, first = true; - $.each(res.data.history_Main_Systems, function (index, val) { - strHtml += `
  • - - ${val.full_name} - -
      `; + if (pageAct.mainStatus) { + strHtml += `
    • + + ${val.full_name} + +
        `; - i1 = (val.history_Sub_systems != null && i1 == null) ? index : null; + i1 = (val.history_Sub_systems != null && i1 == null) ? index : null; + } $.each(val.history_Sub_systems, function (index2, val2) { i2 = (val2.device != null && i2 == null) ? index2 : null; @@ -114,7 +123,7 @@ ${val2.full_name} ${val2.sub_system_tag} -
          `; +
            `; $.each(val2.device, function (index3, val3) { strHtml += `
          • @@ -125,16 +134,29 @@
          • `; - if (index == i1 && index2 == i2 && first) { - first = false; - pageAct.deviceNumber = val3.device_number; - pageAct.deviceName = val3.full_name; - devPointsList(); + if (pageAct.mainStatus) { + if (index == i1 && index2 == i2 && first) { + first = false; + pageAct.deviceNumber = val3.device_number; + pageAct.deviceName = val3.full_name; + devPointsList(); + } } + else { + if (index2 == i2 && first) { + first = false; + pageAct.deviceNumber = val3.device_number; + pageAct.deviceName = val3.full_name; + devPointsList(); + } + } }); strHtml += `
          `; }); - strHtml += `
        `; + + if (pageAct.mainStatus) { + strHtml += `
    • `; + } }); $('#js_nested_list').html(strHtml); @@ -169,10 +191,10 @@ var sdt = new Date(); var edt = new Date(new Date().setDate(sdt.getDate() + 1)); start = start ?? sdt.toLocaleDateString(); - end = end ?? edt.toLocaleDateString(); + end = end ?? edt.toLocaleDateString(); getHistoryDataByBaja(pageAct.deviceNumber + "_" + pageAct.deviceItem, - new Date(start).getTime(), - new Date(end).getTime(), + new Date(start).getTime(), + new Date(end).getTime(), pageAct.deviceName, "Mitsubishi_Sup", callBackFromHistory); @@ -181,14 +203,18 @@ function callBackFromHistory(res) { let strHtml = ``; res = JSON.parse(res); - console.log(res); - $.each(res.data, function (index, val) { - strHtml += ` - ${val.deviceName} - ${val.value} - ${displayDate(val.timestamp)} - `; - }); + if (res.data.length > 0) { + $.each(res.data, function (index, val) { + strHtml += ` + ${val.deviceName} + ${val.value} + ${displayDate(val.timestamp)} + `; + }); + } + else + strHtml += `查無資料`; + $('#tableData tbody').html(strHtml); } @@ -202,5 +228,71 @@ pageAct.deviceItem = deviceItem; getData(); } + } + + function setDateType(type) { + pageAct.dateType = type; + let now = formatDate(new Date(Date.now()), "date"); + let ytd = formatDate(new Date(new Date().setDate(new Date().getDate() - 1)), "date"); + let tmr = formatDate(new Date(new Date().setDate(new Date().getDate() + 1)), "date"); + if (type == "day" || type == "today" || type == "ytd") { + let date = type == "ytd" ? ytd : now; + $('#startdate').css('display', 'block'); + $('#enddate').css('display', 'none'); + $('#getmonth').css('display', 'none'); + $('#startdate').val(date); + + if (type == "today") + getData(formatDate(now, "date", true), formatDate(tmr, "date", true)); + else if (type == "ytd") + getData(formatDate(ytd, "date", true), formatDate(now, "date", true)); + } + else if (type == "range") { + $('#startdate').css('display', 'block'); + $('#enddate').css('display', 'block'); + $('#getmonth').css('display', 'none'); + $('#startdate').val(now); + $('#enddate input').val(tmr); + } + else if (type == "month") { + $('#startdate').css('display', 'none'); + $('#enddate').css('display', 'none'); + $('#getmonth').css('display', 'block'); + $('#getmonth').val(now.substr(0, 7)); + } + else if (type == "ytd") { + $('#startdate').css('display', 'block'); + $('#enddate').css('display', 'none'); + $('#getmonth').css('display', 'none'); + $('#startdate').val(ytd); + } + } + + function searchDate() { + let start = new Date($('#startdate').val()); + let end = new Date(new Date().setDate(new Date($('#enddate input').val()).getDate() + 1)); + + if (pageAct.dateType == "day") + end = new Date(new Date().setDate(start.getDate() + 1)); + else if (pageAct.dateType == "month") { + start = new Date($('#getmonth').val()); + end = new Date(new Date().setDate(start.getDate() + 30)); + } + else if (pageAct.dateType != "range") + return; + + getData(formatDate(start, "date", true), formatDate(end, "date", true)); + } + + function formatDate(date, type, send = false) { + if (!send) + return displayDate(date, type).replaceAll("/", "-"); + else { + date = displayDate(date, type); + let month = date.split('/')[1]; + let year = date.split('/')[0]; + let day= date.split('/')[2]; + return month + "/" + day + "/" + year; + } } \ No newline at end of file From edbf57cf7964265126e3a5dd0e386f5d6702668f Mon Sep 17 00:00:00 2001 From: SinoroWu Date: Thu, 24 Nov 2022 12:05:23 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=5FgraphManagement.html=20=E6=AA=94?= =?UTF-8?q?=E6=A1=88=E4=B8=8A=E5=82=B3=20=E8=AA=BF=E6=95=B4=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frontend/_graphManagement.html | 150 ++++++++++++--------------------- 1 file changed, 55 insertions(+), 95 deletions(-) diff --git a/Frontend/_graphManagement.html b/Frontend/_graphManagement.html index 6e24713..06c5e4f 100644 --- a/Frontend/_graphManagement.html +++ b/Frontend/_graphManagement.html @@ -68,7 +68,7 @@
  • - + --> +
    @@ -135,39 +135,38 @@ -