[前台] 系統監控 開關燈 | 告警 縮短異常編號 | 能源管理 文字修正 | 歷史資料 邊提文字位置修正
This commit is contained in:
parent
9a27834be0
commit
55bff6fca3
@ -228,7 +228,7 @@
|
|||||||
|
|
||||||
$('input[type=checkbox][data-type=sub]').on('click', function () {
|
$('input[type=checkbox][data-type=sub]').on('click', function () {
|
||||||
if (!pageAct.selAllSysSub) {
|
if (!pageAct.selAllSysSub) {
|
||||||
console.log(this);
|
// console.log(this);
|
||||||
pageAct.selAllSysSub = true;
|
pageAct.selAllSysSub = true;
|
||||||
|
|
||||||
$.each($('input[type=checkbox][data-type=sub]:checked'), function (i, v) {
|
$.each($('input[type=checkbox][data-type=sub]:checked'), function (i, v) {
|
||||||
@ -646,6 +646,7 @@
|
|||||||
let tag = "#alertTable";
|
let tag = "#alertTable";
|
||||||
|
|
||||||
$.each(data, function (i, v) {
|
$.each(data, function (i, v) {
|
||||||
|
// console.log(v.uuid.$val, v.uuid)
|
||||||
v.formId = AlertList(v.uuid.$val || v.uuid);
|
v.formId = AlertList(v.uuid.$val || v.uuid);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -669,6 +670,9 @@
|
|||||||
{
|
{
|
||||||
"title": "異常ID",
|
"title": "異常ID",
|
||||||
"data": "uuid",
|
"data": "uuid",
|
||||||
|
render: (data) => {
|
||||||
|
return data.split("-")[0]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "異常類別",
|
"title": "異常類別",
|
||||||
@ -788,7 +792,7 @@
|
|||||||
function selOpeFir() {
|
function selOpeFir() {
|
||||||
let url = baseApiUrl + "/operation/OpeFirSel";
|
let url = baseApiUrl + "/operation/OpeFirSel";
|
||||||
objSendData.Data = { sub_system_tag: $('input[data-type=sub]').map(function (i, v) { return $(v).prop('id'); }).toArray() };
|
objSendData.Data = { sub_system_tag: $('input[data-type=sub]').map(function (i, v) { return $(v).prop('id'); }).toArray() };
|
||||||
console.log(objSendData.Data)
|
// console.log(objSendData.Data)
|
||||||
ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
|
ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
|
||||||
if (!res || res.code != "0000" || !res.data) {
|
if (!res || res.code != "0000" || !res.data) {
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<main id="js-page-content" role="main" class="page-content">
|
<main id="js-page-content" role="main" class="page-content">
|
||||||
|
<h1 class="p-2 mb-0">運維管理</h1>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="btn-group mb-3">
|
<div class="btn-group mb-3">
|
||||||
@ -23,7 +24,7 @@
|
|||||||
<div class="panel-container show">
|
<div class="panel-container show">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-lg-6 d-flex flex-column">
|
<div class="col-sm-12 col-lg-6 d-flex flex-column">
|
||||||
<h4 class="p-3">今日耗電量 kWh</h4>
|
<h4 class="p-3 todayElecNoDataTitle text-center">今日耗電量 (kWh)</h4>
|
||||||
<div class="panel-content poisition-relative" style="min-height: 346.84px;">
|
<div class="panel-content poisition-relative" style="min-height: 346.84px;">
|
||||||
<div id="todayElecNoData" class="row justify-content-center align-items-center h-100" style="display:none;">
|
<div id="todayElecNoData" class="row justify-content-center align-items-center h-100" style="display:none;">
|
||||||
<h4>無資料</h4>
|
<h4>無資料</h4>
|
||||||
@ -34,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-lg-6 d-flex flex-column">
|
<div class="col-sm-12 col-lg-6 d-flex flex-column">
|
||||||
<h4 class="py-3">用電比較</h4>
|
<h4 class="py-3 elecCompNoDataTitle text-center">用電比較</h4>
|
||||||
<div id="elecCompNoData" class="row justify-content-center align-items-center h-100" style="display:none;">
|
<div id="elecCompNoData" class="row justify-content-center align-items-center h-100" style="display:none;">
|
||||||
<h4>無資料</h4>
|
<h4>無資料</h4>
|
||||||
</div>
|
</div>
|
||||||
@ -53,12 +54,12 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||||
<h4 class="mb-0"><i class="fal fa-server"></i> 自動需量管理</h4>
|
<h4 class="mb-0"><i class="fal fa-server mr-1"></i>自動需量管理</h4>
|
||||||
|
|
||||||
<button id="ediAutDemBtn" class="btn btn-success"><i class="fal fa-pencil"></i> 編輯</button>
|
<button id="ediAutDemBtn" class="btn btn-success"><i class="fal fa-pencil"></i> 編輯</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="row align-items-center justify-content-between d-flex flex-column">
|
<div class="row align-items-center justify-content-between d-flex flex-column">
|
||||||
<div class="col d-flex">
|
<!-- <div class="col d-flex">
|
||||||
<p class="card-text color-white d-flex justify-content-between mr-3">
|
<p class="card-text color-white d-flex justify-content-between mr-3">
|
||||||
<span>契約容量</span>
|
<span>契約容量</span>
|
||||||
<span><span data-id="contract_capacity"></span> kW</span>
|
<span><span data-id="contract_capacity"></span> kW</span>
|
||||||
@ -71,7 +72,7 @@
|
|||||||
<span>復歸值</span>
|
<span>復歸值</span>
|
||||||
<span><span data-id="resetting_value"></span> kW</span>
|
<span><span data-id="resetting_value"></span> kW</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="col" style=" min-height:250px;">
|
<div class="col" style=" min-height:250px;">
|
||||||
<canvas class="chart" id="autDemChart"></canvas>
|
<canvas class="chart" id="autDemChart"></canvas>
|
||||||
</div>
|
</div>
|
||||||
@ -273,9 +274,11 @@
|
|||||||
} else {
|
} else {
|
||||||
let strHtml = "";
|
let strHtml = "";
|
||||||
$.each(res.data, (index, mainSysObj) => {
|
$.each(res.data, (index, mainSysObj) => {
|
||||||
if ((type == 0 || (type == 3 && mainSysObj.mainSubTag == "ELEV_EL"))
|
if (type == 0)
|
||||||
// && filNotShowSysSub.indexOf(subSysObj.sub_system_tag) == -1
|
// && filNotShowSysSub.indexOf(subSysObj.sub_system_tag) == -1
|
||||||
) {
|
{
|
||||||
|
document.querySelector(".elecCompNoDataTitle").textContent = "用電比較";
|
||||||
|
document.querySelector(".todayElecNoDataTitle").textContent = "今日耗電量 (kWh)";
|
||||||
const full_name = mainSysObj.system_remark.split("-")[1];
|
const full_name = mainSysObj.system_remark.split("-")[1];
|
||||||
strHtml += `<div class="col-sm-12 col-xl-4 mb-2">
|
strHtml += `<div class="col-sm-12 col-xl-4 mb-2">
|
||||||
<div class="card elecCard cur-poi" data-id="${mainSysObj.mainSubTag}" data-name="${mainSysObj.mainSubTag}">
|
<div class="card elecCard cur-poi" data-id="${mainSysObj.mainSubTag}" data-name="${mainSysObj.mainSubTag}">
|
||||||
@ -291,6 +294,27 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>`;
|
||||||
|
} else if (type == 3 && mainSysObj.mainSubTag == "ELEV_EL") {
|
||||||
|
document.querySelector(".elecCompNoDataTitle").textContent = "供電比較";
|
||||||
|
document.querySelector(".todayElecNoDataTitle").textContent = "今日供電量 (kWh)";
|
||||||
|
|
||||||
|
|
||||||
|
const full_name = mainSysObj.system_remark.split("-")[1];
|
||||||
|
strHtml += `<div class="col-sm-12 col-xl-4 mb-2">
|
||||||
|
<div class="card elecCard cur-poi" data-id="${mainSysObj.mainSubTag}" data-name="${mainSysObj.mainSubTag}">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title color-white">${full_name}供電</h4>
|
||||||
|
<p class="card-text color-white pl-5 pr-3 d-flex justify-content-between">
|
||||||
|
<span>${elecCardConText[type]?.text1}</span>
|
||||||
|
<span id="insPow${mainSysObj.mainSubTag}"></span>
|
||||||
|
</p>
|
||||||
|
<p class="card-text color-white pl-5 pr-3 d-flex justify-content-between">
|
||||||
|
<span>${elecCardConText[type]?.text2}</span>
|
||||||
|
<span id="insPowPer${mainSysObj.mainSubTag}"></span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -298,7 +322,7 @@
|
|||||||
strHtml += `<div class="col-sm-12 col-xl-4 mb-2">
|
strHtml += `<div class="col-sm-12 col-xl-4 mb-2">
|
||||||
<div class="card elecCard cur-poi">
|
<div class="card elecCard cur-poi">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-title color-white">太陽能設備用電</h4>
|
<h4 class="card-title color-white">太陽能設備供電</h4>
|
||||||
<p class="card-text color-white pl-5 pr-3 d-flex justify-content-between">
|
<p class="card-text color-white pl-5 pr-3 d-flex justify-content-between">
|
||||||
<span>${elecCardConText[type]?.text1}</span>
|
<span>${elecCardConText[type]?.text1}</span>
|
||||||
<span id="insPow">---</span>
|
<span id="insPow">---</span>
|
||||||
@ -480,10 +504,10 @@
|
|||||||
|
|
||||||
// 空調系統 今日與30日內平均用電比較
|
// 空調系統 今日與30日內平均用電比較
|
||||||
getElectricMeterDayDataByBaja(tarDevNum + "_KWH", n4Sup, prevThirtyDay, tomorrow, (data) => {
|
getElectricMeterDayDataByBaja(tarDevNum + "_KWH", n4Sup, prevThirtyDay, tomorrow, (data) => {
|
||||||
let curDay = (new Date()).getDay() == 0 ? 7 : (new Date()).getDay();
|
// let curDay = (new Date()).getDay() == 0 ? 7 : (new Date()).getDay();
|
||||||
|
let curDay = 7;
|
||||||
let eveWeek = [];
|
let eveWeek = [];
|
||||||
let curWeekData = data.data.filter(x => strToDate(displayDate(new Date(), "date"), null, 0 - (curDay - 1)) <= strToDate(x.timestamp.$cEncStr));
|
let curWeekData = data.data.filter(x => strToDate(displayDate(new Date(), "date"), null, 0 - (curDay - 1)) <= strToDate(x.timestamp.$cEncStr));
|
||||||
|
|
||||||
for (let i = 1; i <= curDay; i++) {
|
for (let i = 1; i <= curDay; i++) {
|
||||||
let tarDayData = data.data.filter(x => strToDate(x.timestamp.$cEncStr, "day") == i);
|
let tarDayData = data.data.filter(x => strToDate(x.timestamp.$cEncStr, "day") == i);
|
||||||
let tarDayElecs = tarDayData.map(x => x.sum);
|
let tarDayElecs = tarDayData.map(x => x.sum);
|
||||||
@ -619,10 +643,11 @@
|
|||||||
|
|
||||||
// 圖表 - 今日與30日內平均用電量比較 (長條圖)
|
// 圖表 - 今日與30日內平均用電量比較 (長條圖)
|
||||||
function chartEveWeeksElec(curWeekData, avgData) {
|
function chartEveWeeksElec(curWeekData, avgData) {
|
||||||
|
const labels = curWeekData.map(x => dayToChiDay(strToDate(x.timestamp.$cEncStr, "day")))
|
||||||
elecCompChart?.destroy()
|
elecCompChart?.destroy()
|
||||||
let elecCompChartCanvas = $('#elecCompChart').get(0).getContext('2d');
|
let elecCompChartCanvas = $('#elecCompChart').get(0).getContext('2d');
|
||||||
let elecCompChartData = {
|
let elecCompChartData = {
|
||||||
labels: curWeekData.map(x => dayToChiDay(strToDate(x.timestamp.$cEncStr, "day"))),
|
labels,
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
id: "today",
|
id: "today",
|
||||||
@ -662,13 +687,13 @@
|
|||||||
offset: true,
|
offset: true,
|
||||||
grid: { color: color.fusion._500 },
|
grid: { color: color.fusion._500 },
|
||||||
ticks: {
|
ticks: {
|
||||||
callback: function (value, index, ticks) {
|
// callback: function (value, index, ticks) {
|
||||||
return value
|
// console.log("@@@@圖表的",value)
|
||||||
}
|
// return value
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
y: {
|
y: {
|
||||||
|
|
||||||
ticks: {
|
ticks: {
|
||||||
min: 0,
|
min: 0,
|
||||||
beginAtZero: true
|
beginAtZero: true
|
||||||
@ -691,6 +716,7 @@
|
|||||||
|
|
||||||
// This will get the first returned node in the jQuery collection.
|
// This will get the first returned node in the jQuery collection.
|
||||||
elecCompChart = new Chart(elecCompChartCanvas, {
|
elecCompChart = new Chart(elecCompChartCanvas, {
|
||||||
|
type: "bar",
|
||||||
data: elecCompChartData,
|
data: elecCompChartData,
|
||||||
options: elecCompChartOptions
|
options: elecCompChartOptions
|
||||||
})
|
})
|
||||||
@ -709,7 +735,7 @@
|
|||||||
resCapData = [resCapVal];
|
resCapData = [resCapVal];
|
||||||
|
|
||||||
let autDemChartData = {
|
let autDemChartData = {
|
||||||
labels: labels,
|
labels,
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
id: "conCap",
|
id: "conCap",
|
||||||
@ -779,15 +805,21 @@
|
|||||||
display: true,
|
display: true,
|
||||||
fullSize: true,
|
fullSize: true,
|
||||||
labels: {
|
labels: {
|
||||||
|
font: {
|
||||||
|
size: 16,
|
||||||
|
lineHeight: "40px",
|
||||||
|
},
|
||||||
usePointStyle: true,
|
usePointStyle: true,
|
||||||
generateLabels: (chart) => {
|
generateLabels: (chart) => {
|
||||||
if (!chart.data) return [];
|
if (!chart.data) return [];
|
||||||
return chart.data.datasets.map(
|
return chart.data.datasets.map(
|
||||||
(dataset, index) => ({
|
(dataset, index) => ({
|
||||||
|
|
||||||
datasetIndex: index,
|
datasetIndex: index,
|
||||||
text: dataset.label,
|
text: `${dataset.label} ${dataset.data[0]} KW`,
|
||||||
fontColor: color.fusion._100,
|
fontColor: color.fusion._100,
|
||||||
lineDash: dataset.borderDash ? [5, 5] : [],
|
lineDash: dataset.borderDash ? [5, 5] : [],
|
||||||
|
lineWidth: 5,
|
||||||
fillStyle: dataset.backgroundColor,
|
fillStyle: dataset.backgroundColor,
|
||||||
strokeStyle: dataset.borderColor,
|
strokeStyle: dataset.borderColor,
|
||||||
pointStyle: "line",
|
pointStyle: "line",
|
||||||
@ -834,7 +866,14 @@
|
|||||||
|
|
||||||
autDemChart = new Chart(autDemChartCanvas, {
|
autDemChart = new Chart(autDemChartCanvas, {
|
||||||
data: autDemChartData,
|
data: autDemChartData,
|
||||||
options: autDemChartOptions
|
options: autDemChartOptions,
|
||||||
|
plugins: [{
|
||||||
|
beforeInit: function (chart, args, options) {
|
||||||
|
chart.legend.afterFit = function () {
|
||||||
|
this.height = this.height + 50;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}]
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
autDemChart.data.datasets[0].data.forEach((x, i) => autDemChart.data.datasets[0].data[i] = conCapVal);
|
autDemChart.data.datasets[0].data.forEach((x, i) => autDemChart.data.datasets[0].data[i] = conCapVal);
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<main id="js-page-content" role="main" class="page-content">
|
<main id="js-page-content" role="main" class="page-content">
|
||||||
|
<h1 class="p-2 mb-0">歷史資料</h1>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-xl-2">
|
<div class="col-sm-12 col-xl-2">
|
||||||
<div class="rounded border border-white">
|
<div class="rounded border border-white">
|
||||||
@ -14,7 +16,6 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-xl-10">
|
<div class="col-sm-12 col-xl-10">
|
||||||
<h1 class="p-2 mb-0">歷史資料瀏覽</h1>
|
|
||||||
<div class="row bg-dark p-2 mb-5">
|
<div class="row bg-dark p-2 mb-5">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
@ -93,7 +94,6 @@
|
|||||||
|
|
||||||
if (pageAct.dateType == 'range') {
|
if (pageAct.dateType == 'range') {
|
||||||
if ($('#his_startdate').val() > $('#his_enddate input').val() && ($('#his_startdate').val() != "" && $('#his_enddate input').val() != "")) {
|
if ($('#his_startdate').val() > $('#his_enddate input').val() && ($('#his_startdate').val() != "" && $('#his_enddate input').val() != "")) {
|
||||||
console.log('aaaa');
|
|
||||||
$('#his_startdate').val($('#his_startdate').data('val'));
|
$('#his_startdate').val($('#his_startdate').data('val'));
|
||||||
toast_error('不可選擇大於結束時間');
|
toast_error('不可選擇大於結束時間');
|
||||||
}
|
}
|
||||||
@ -137,7 +137,6 @@
|
|||||||
let ytd = displayDate(new Date(new Date().setDate(new Date(Date.now()).getDate() - 1)), 'date').replaceAll('/', '-');
|
let ytd = displayDate(new Date(new Date().setDate(new Date(Date.now()).getDate() - 1)), 'date').replaceAll('/', '-');
|
||||||
|
|
||||||
if ($('#his_startdate').val() > $('#his_enddate input').val() && ($('#his_startdate').val() != "" && $('#his_enddate input').val() != "")) {
|
if ($('#his_startdate').val() > $('#his_enddate input').val() && ($('#his_startdate').val() != "" && $('#his_enddate input').val() != "")) {
|
||||||
console.log('bbbb');
|
|
||||||
$('#his_enddate input').val($('#his_enddate input').data('val'));
|
$('#his_enddate input').val($('#his_enddate input').data('val'));
|
||||||
toast_error('不可選擇大於結束時間');
|
toast_error('不可選擇大於結束時間');
|
||||||
}
|
}
|
||||||
|
@ -504,7 +504,7 @@
|
|||||||
setDate(null, startdate, enddate);
|
setDate(null, startdate, enddate);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(`[onclick="setType(null)"]`).click();
|
$(`[onclick="setType(2)"]`).click();
|
||||||
|
|
||||||
initDate();
|
initDate();
|
||||||
event();
|
event();
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
}
|
}
|
||||||
myBaja.setSubscribeDevicesByBql(ordPath);
|
myBaja.setSubscribeDevicesByBql(ordPath);
|
||||||
myBaja.setSubscribeDevicesCallBack(function (data) {
|
myBaja.setSubscribeDevicesCallBack(function (data) {
|
||||||
|
//console.log(data)
|
||||||
let matchDevice = allDevList.filter(x => x.device_number == data.device_number_full)[0];
|
let matchDevice = allDevList.filter(x => x.device_number == data.device_number_full)[0];
|
||||||
if (!matchDevice) {
|
if (!matchDevice) {
|
||||||
return false;
|
return false;
|
||||||
@ -126,6 +126,16 @@
|
|||||||
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") {
|
||||||
|
const lightOn = data.value.includes("true")
|
||||||
|
setLightOpenOrClose(lightOn, matchDevice.device_guid);
|
||||||
|
if (lightOn) {
|
||||||
|
setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
|
||||||
|
} else {
|
||||||
|
setLightValues(matchDevice.device_guid, 0, 0xe1cf18);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (data.point_name == "Temp") {
|
if (data.point_name == "Temp") {
|
||||||
heatMap?.changeTemp(data.device_number_full, !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0);
|
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);
|
let devIdx = allDevList.findIndex(x => x.device_number == data.device_number_full);
|
||||||
@ -406,7 +416,9 @@
|
|||||||
"area_tag": pageAct.AreaTag,
|
"area_tag": pageAct.AreaTag,
|
||||||
"building_tag": pageAct.buiTag,
|
"building_tag": pageAct.buiTag,
|
||||||
},
|
},
|
||||||
|
selector: "[name=forgeViewer]",
|
||||||
curDevice: {
|
curDevice: {
|
||||||
|
...device,
|
||||||
roomDbId: !isNaN(parseInt(device.room_dbid)) ? parseInt(device.room_dbid) : -1,
|
roomDbId: !isNaN(parseInt(device.room_dbid)) ? parseInt(device.room_dbid) : -1,
|
||||||
id: device.device_number,
|
id: device.device_number,
|
||||||
position: isJSON(device.device_coordinate_3d) ? JSON.parse(device.device_coordinate_3d) : {}, // x: 0, y: 25, z: -2.5 (3.35, -4.81, 12.88
|
position: isJSON(device.device_coordinate_3d) ? JSON.parse(device.device_coordinate_3d) : {}, // x: 0, y: 25, z: -2.5 (3.35, -4.81, 12.88
|
||||||
@ -576,7 +588,7 @@
|
|||||||
var parentEle = "";
|
var parentEle = "";
|
||||||
onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) {
|
onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) {
|
||||||
forgeUnFocusAll();
|
forgeUnFocusAll();
|
||||||
let position = [obj.event.target.toolController.lastClickX, obj.event.target.toolController.lastClickY];
|
let position = [obj.event.target.toolController.lastClickX - 100, obj.event.target.toolController.lastClickY - 100];
|
||||||
let devObj = obj.myData;
|
let devObj = obj.myData;
|
||||||
let name = allDevList.filter(x => x.device_guid == devObj.device_guid)[0]?.full_name;
|
let name = allDevList.filter(x => x.device_guid == devObj.device_guid)[0]?.full_name;
|
||||||
devObj.full_name = name;
|
devObj.full_name = name;
|
||||||
@ -589,7 +601,6 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
onEvent("autodesk:complete:sprite", "[name=forgeViewer]", function (e, obj) {
|
onEvent("autodesk:complete:sprite", "[name=forgeViewer]", function (e, obj) {
|
||||||
|
|
||||||
$("#floDevList a[name=devItem]").each((idx, ele) => {
|
$("#floDevList a[name=devItem]").each((idx, ele) => {
|
||||||
let devNum = $(ele).data("number");
|
let devNum = $(ele).data("number");
|
||||||
let dbid = obj.myDataList.filter(x => x.device_number == devNum)[0]?._dbId;
|
let dbid = obj.myDataList.filter(x => x.device_number == devNum)[0]?._dbId;
|
||||||
|
@ -459,6 +459,17 @@
|
|||||||
currentData[devIdx]._temp = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
|
currentData[devIdx]._temp = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (data.point_name == "SSC") {
|
||||||
|
const lightOn = data.value.includes("true")
|
||||||
|
setLightOpenOrClose(lightOn, matchDevice.device_guid);
|
||||||
|
if (lightOn) {
|
||||||
|
setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
|
||||||
|
} else {
|
||||||
|
setLightValues(matchDevice.device_guid, 0, 0xffffff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (data.point_name == norDevPoiName && data.value == matchDevice.device_normal_point_value) {
|
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");
|
$(`#${matchDevice.device_number}_status`).attr("data-light-type", "normal").data("light-type", "normal");
|
||||||
|
2551
Frontend/index.html
2551
Frontend/index.html
File diff suppressed because it is too large
Load Diff
@ -748,7 +748,7 @@ async function testNewLight(dataList) {
|
|||||||
dataList.forEach((myData, index) => {
|
dataList.forEach((myData, index) => {
|
||||||
const position = JSON.parse(myData.device_coordinate_3d);
|
const position = JSON.parse(myData.device_coordinate_3d);
|
||||||
if (lightList.findIndex(x => x.device_guid == myData.device_guid) == -1) {
|
if (lightList.findIndex(x => x.device_guid == myData.device_guid) == -1) {
|
||||||
lightList.push({ dbid: myData.forge_dbid, device_guid: myData.device_guid, lightObject: new THREE.SpotLight(0xff0000, 200, 20, 0.6, 0.5, 10) });
|
lightList.push({ dbid: myData.forge_dbid, device_guid: myData.device_guid, lightObject: new THREE.SpotLight(0xe1cf18, 200, 20, 0.6, 0.5, 10) });
|
||||||
}
|
}
|
||||||
|
|
||||||
lightList[index].lightObject.position.set(position.x, position.y, position.z);
|
lightList[index].lightObject.position.set(position.x, position.y, position.z);
|
||||||
@ -795,7 +795,7 @@ async function addHotPoint(data) {
|
|||||||
|
|
||||||
//熱點 點擊事件註冊
|
//熱點 點擊事件註冊
|
||||||
viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);// SPRITE_SELECTED
|
viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);// SPRITE_SELECTED
|
||||||
|
// viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClickedOut);
|
||||||
//viewer.addEventListener(
|
//viewer.addEventListener(
|
||||||
// Autodesk.Viewing.SELECTION_CHANGED_EVENT,
|
// Autodesk.Viewing.SELECTION_CHANGED_EVENT,
|
||||||
// onSelectionChange
|
// onSelectionChange
|
||||||
@ -820,25 +820,13 @@ async function addHotPoint(data) {
|
|||||||
//---------------- 熱點點擊事件 --------------------
|
//---------------- 熱點點擊事件 --------------------
|
||||||
function onSpriteClicked(event) {
|
function onSpriteClicked(event) {
|
||||||
event.hasStopped = true;
|
event.hasStopped = true;
|
||||||
if (pageAct.sysSubTag === "M12" && event != undefined && event != null) {
|
|
||||||
if (event.dbId >= dbIdStart) {
|
|
||||||
changeColorForHotspot(event.dbId);
|
|
||||||
changeScaleForHotspot(event.dbId, false);
|
|
||||||
let myData = [this.curDevice].filter(x => x.forge_dbid == event.dbId)[0];
|
|
||||||
moveViewToDevice(myData.forge_dbid);//移動視角至該設備
|
|
||||||
|
|
||||||
$(selector).trigger("autodesk:click:sprite", { event, myData });
|
|
||||||
} else {
|
|
||||||
$(selector).trigger("autodesk:clickOut:sprite", { event });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (event != undefined && event != null) {
|
if (event != undefined && event != null) {
|
||||||
if (event.dbId >= dbIdStart) {//event.dbId > 0 && event.dbId < 19
|
if (event.dbId >= dbIdStart) {//event.dbId > 0 && event.dbId < 19
|
||||||
// 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++) {
|
||||||
changeColorForHotspot(i);
|
changeColorForHotspot(i);
|
||||||
changeScaleForHotspot(i, false);
|
changeScaleForHotspot(i, true);
|
||||||
}
|
}
|
||||||
let myData = myDataList.filter(x => x._dbId == event.dbId)[0];
|
let myData = myDataList.filter(x => x._dbId == event.dbId)[0];
|
||||||
if (lightList != undefined && lightList != null && lightList.length > 0) {
|
if (lightList != undefined && lightList != null && lightList.length > 0) {
|
||||||
@ -848,6 +836,8 @@ async function addHotPoint(data) {
|
|||||||
}
|
}
|
||||||
$(selector).trigger("autodesk:click:sprite", { event, myData });
|
$(selector).trigger("autodesk:click:sprite", { event, myData });
|
||||||
} else {
|
} else {
|
||||||
|
changeColorForHotspot(event.dbId, null);
|
||||||
|
changeScaleForHotspot(event.dbId, false);
|
||||||
$(selector).trigger("autodesk:clickOut:sprite", { event });
|
$(selector).trigger("autodesk:clickOut:sprite", { event });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -860,6 +850,21 @@ async function addHotPoint(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function onSpriteClickedOut(event){
|
||||||
|
// event.hasStopped = true;
|
||||||
|
// if (event != undefined && event != null) {
|
||||||
|
// if (event.dbId >= dbIdStart) {
|
||||||
|
// for (let i = dbIdStart; i <= myDataList.length + 10; i++) {
|
||||||
|
// changeColorForHotspot(event.dbId);
|
||||||
|
// changeScaleForHotspot(event.dbId, false);
|
||||||
|
// }
|
||||||
|
// let myData = myDataList.filter(x => x._dbId == event.dbId)[0];
|
||||||
|
// debugger
|
||||||
|
// $(selector).trigger("autodesk:clickOut:sprite", { event });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
//function onSelectionChange(event) {
|
//function onSelectionChange(event) {
|
||||||
// if (event != undefined && event != null) {
|
// if (event != undefined && event != null) {
|
||||||
// const dbIds = event.dbIdArray;
|
// const dbIds = event.dbIdArray;
|
||||||
@ -881,7 +886,7 @@ async function addHotPoint(data) {
|
|||||||
// 熱點 更換顏色
|
// 熱點 更換顏色
|
||||||
async function changeColorForHotspot(dbId, type = null) {
|
async function changeColorForHotspot(dbId, type = null) {
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
||||||
// console.log(dbId, dataVizExtn.viewableData.getViewableColor(dbId, false))
|
console.log(dbId, dataVizExtn.viewableData.getViewableColor(dbId, false))
|
||||||
let spriteColorFocus = dataVizExtn.viewableData?.getViewableColor(dbId, false) || new THREE.Color(0xffffff);
|
let spriteColorFocus = dataVizExtn.viewableData?.getViewableColor(dbId, false) || new THREE.Color(0xffffff);
|
||||||
if (type == "focus" && pageAct.sysSubTag !== "M12") {
|
if (type == "focus" && pageAct.sysSubTag !== "M12") {
|
||||||
spriteColorFocus = new THREE.Color(0x00ffe1);
|
spriteColorFocus = new THREE.Color(0x00ffe1);
|
||||||
@ -897,26 +902,6 @@ async function changeColorForHotspot(dbId, type = null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 熱點 更換顏色---環境感知器
|
|
||||||
async function changeColorForSensorHotspot(dbId, temp) {
|
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
|
||||||
const temps = [new THREE.Color(0x0000ff), new THREE.Color(0x00ff00), new THREE.Color(0xffff00), new THREE.Color(0xff0000)]
|
|
||||||
let index = Math.floor(temp / 10);
|
|
||||||
if (index > 3) {
|
|
||||||
index = 3
|
|
||||||
}
|
|
||||||
const viewablesToUpdate = dbId;
|
|
||||||
const color = temps[index]
|
|
||||||
|
|
||||||
dataVizExtn.invalidateViewables(viewablesToUpdate, (viewable) => {
|
|
||||||
return {
|
|
||||||
color: color,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
console.log(dataVizExtn)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 熱點 更換大小
|
// 熱點 更換大小
|
||||||
async function changeScaleForHotspot(dbId, type = true) {
|
async function changeScaleForHotspot(dbId, type = true) {
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
||||||
|
Loading…
Reference in New Issue
Block a user