-
查詢
+ 查詢
+
匯出
@@ -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
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:
+
1 Floor
+
2 Floor
+
3 Floor
+
+
+
@@ -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) });
}
/**