This commit is contained in:
jiahao 2023-09-25 14:01:00 +08:00
commit 3751a21273
3 changed files with 432 additions and 310 deletions

View File

@ -1074,10 +1074,11 @@
const building_name = pageAct.buildList.find(
({ building_tag }) => building_tag === data.split("_")[1]
)?.full_name;
return allDevices.find((d) => d.device_number === data)?.full_name ||
row.alarmClass === "Sys_Con_AlarmClass"
(row.alarmClass === "Sys_Con_AlarmClass"
? `${building_name}_電錶邊緣控制器_${data.split("_")[7]}`
: "";
: "");
},
},
{

View File

@ -6,14 +6,17 @@
<div class="rounded border border-white">
<div class="d-flex position-relative py-3 px-4">
<i class="fal fa-search color-success-700 position-absolute pos-left fs-lg px-3 py-2 mt-1 ml-4"></i>
<input type="text" id="js_nested_list_filter" class="form-control shadow-inset-1 pl-6 border-success" placeholder="輸入兩字以上">
<input type="text"
id="js_nested_list_filter"
class="form-control shadow-inset-1 pl-6 border-success"
placeholder="輸入兩字以上" />
</div>
<!-- nav-menu-reset will reset the font colors -->
<ul id="js_nested_list" class="nav-menu nav-menu-reset nav-menu-compact mb-sm-4 mb-md-0 rounded border border-white" data-nav-accordion="true">
</ul>
<ul id="js_nested_list"
class="nav-menu nav-menu-reset nav-menu-compact mb-sm-4 mb-md-0 rounded border border-white"
data-nav-accordion="true"></ul>
<div class="filter-message js-filter-message m-0 text-left pl-4 py-3 fw-500"></div>
</div>
</div>
<div class="col-sm-12 col-xl-10">
<div class="row bg-dark p-2">
@ -27,31 +30,65 @@
<div class="row bg-dark p-2 mb-5 align-items-center">
<div class="col-auto">
<div class="btn-group">
<button type="button" onclick="setDateType('day', this)" class="btn btn-secondary waves-effect waves-themed">日期</button>
<button type="button" onclick="setDateType('range', this)" class="btn btn-secondary waves-effect waves-themed">區間</button>
<button type="button" onclick="setDateType('month', this)" class="btn btn-secondary waves-effect waves-themed"></button>
<button type="button"
onclick="setDateType('day', this)"
class="btn btn-secondary waves-effect waves-themed">
日期
</button>
<button type="button"
onclick="setDateType('range', this)"
class="btn btn-secondary waves-effect waves-themed">
區間
</button>
<button type="button"
onclick="setDateType('month', this)"
class="btn btn-secondary waves-effect waves-themed">
</button>
</div>
</div>
<div class="col-auto">
<div class="btn-group">
<button type="button" onclick="setDateType('today', this)" class="btn btn-secondary waves-effect waves-themed">今天</button>
<button type="button" onclick="setDateType('ytd', this)" class="btn btn-secondary waves-effect waves-themed">昨天</button>
<button type="button"
onclick="setDateType('today', this)"
class="btn btn-secondary waves-effect waves-themed">
今天
</button>
<button type="button"
onclick="setDateType('ytd', this)"
class="btn btn-secondary waves-effect waves-themed">
昨天
</button>
</div>
</div>
<div class="col-auto">
<div class="form-group">
<input class="form-control flatpickr flatpickr-input selectDate" id="his_startdate" data-val="" type="date" name="date" value="">
<input class="form-control" id="getmonth" type="month" style="display: none" />
<input class="form-control flatpickr flatpickr-input selectDate"
id="his_startdate"
data-val=""
type="date"
name="date"
value="" />
<input class="form-control flatpickr flatpickr-input selectDate"
id="getmonth"
type="month"
style="display: none" />
</div>
</div>
<div class="col-auto" id="his_enddate" style="display: none">
<div class="form-group">
<input class="form-control" type="date" data-val="" name="date" value="">
<input class="form-control flatpickr flatpickr-input selectDate"
type="date"
data-val=""
name="date"
value="" />
</div>
</div>
<div class="col-auto">
<a href="#" onclick="searchDate()" class="btn btn-info">查詢</a>
<a href="#" onclick="exportExcel()" class="btn btn-info waves-effect waves-themed">
<a href="#"
onclick="exportExcel()"
class="btn btn-info waves-effect waves-themed">
<span class="fal fa-file-excel mr-1"></span>
匯出
</a>
@ -59,22 +96,23 @@
</div>
<div class="row-cols-1 mb-2">
<div id="devPointsList" class="btn-group">
</div>
<div id="devPointsList" class="btn-group"></div>
</div>
<div>
<div class="frame-wrap">
<table id="historyTable" class="table table-bordered table-striped text-center m-0 w-100">
</table>
<table id="historyTable"
class="table table-bordered table-striped text-center m-0 w-100"></table>
</div>
</div>
</div>
</div>
</main>
<style>
.flatpickr-monthDropdown-month {
color: black !important;
}
</style>
<script>
var historyTable = null;
var buildingTag = null;
@ -91,138 +129,174 @@
$("#his_building").find(".item").empty();
$("#his_building").find(".item").append(html);
if ($("#his_building .item label").first())
$("#his_building .item label").first().click()
$("#his_building .item label").first().click();
initList();
// default list filter
initApp.listFilter($('#js_default_list'), $('#js_default_list_filter'));
initApp.listFilter($("#js_default_list"), $("#js_default_list_filter"));
// custom response message
initApp.listFilter($('#js-list-msg'), $('#js-list-msg-filter'));
initApp.listFilter($("#js-list-msg"), $("#js-list-msg-filter"));
//accordion filter
initApp.listFilter($('#js_list_accordion'), $('#js_list_accordion_filter'));
initApp.listFilter($("#js_list_accordion"), $("#js_list_accordion_filter"));
// nested list filter
initApp.listFilter($('#js_nested_list'), $('#js_nested_list_filter'));
initApp.listFilter($("#js_nested_list"), $("#js_nested_list_filter"));
//init navigation
initApp.buildNavigation($('#js_nested_list'));
initApp.buildNavigation($("#js_nested_list"));
loadTable(null);
$(`[onclick="setDateType('day', this)"]`).click();
$(`[onclick="setDateType('today', this)"]`).click();
onEvent('change', '#his_startdate', function () {
let today = displayDate(new Date(Date.now()), 'date').replaceAll('/', '-');
let ytd = displayDate(new Date(new Date().setDate(new Date(Date.now()).getDate() - 1)), 'date').replaceAll('/', '-');
onEvent("change", "#his_startdate", function () {
let today = displayDate(new Date(Date.now()), "date").replaceAll(
"/",
"-"
);
let ytd = displayDate(
new Date(new Date().setDate(new Date(Date.now()).getDate() - 1)),
"date"
).replaceAll("/", "-");
if (pageAct.dateType == 'range') {
if ($('#his_startdate').val() > $('#his_enddate input').val() && ($('#his_startdate').val() != "" && $('#his_enddate input').val() != "")) {
$('#his_startdate').val($('#his_startdate').data('val'));
toast_error('不可選擇大於結束時間');
}
else {
$('#his_startdate').data('val', $('#his_startdate').val());
$('#his_enddate input').data('val', $('#his_enddate input').val());
if (pageAct.dateType == "range") {
if (
$("#his_startdate").val() > $("#his_enddate input").val() &&
$("#his_startdate").val() != "" &&
$("#his_enddate input").val() != ""
) {
$("#his_startdate").val($("#his_startdate").data("val"));
toast_error("不可選擇大於結束時間");
} else {
$("#his_startdate").data("val", $("#his_startdate").val());
$("#his_enddate input").data("val", $("#his_enddate input").val());
$(`[onclick="setDateType('today', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('today', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('today', this)"]`).removeClass("btn-info");
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('ytd', this)"]`).removeClass("btn-info");
if ($('#his_startdate').val() == $('#his_enddate input').val()) {
if ($('#his_startdate').val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).addClass('btn-info');
}
else if ($('#his_startdate').val() == ytd) {
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-info');
if ($("#his_startdate").val() == $("#his_enddate input").val()) {
if ($("#his_startdate").val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('today', this)"]`).addClass("btn-info");
} else if ($("#his_startdate").val() == ytd) {
$(`[onclick="setDateType('ytd', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-info");
}
}
}
}
else if ($(this).val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).addClass('btn-info');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-info');
}
else if ($(this).val() == ytd) {
$(`[onclick="setDateType('today', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-info');
} else if ($(this).val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('today', this)"]`).addClass("btn-info");
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('ytd', this)"]`).removeClass("btn-info");
} else if ($(this).val() == ytd) {
$(`[onclick="setDateType('today', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('today', this)"]`).removeClass("btn-info");
$(`[onclick="setDateType('ytd', this)"]`).removeClass("btn-secondary");
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-info");
}
});
onEvent('change', '#his_enddate input', function () {
let today = displayDate(new Date(Date.now()), 'date').replaceAll('/', '-');
let ytd = displayDate(new Date(new Date().setDate(new Date(Date.now()).getDate() - 1)), 'date').replaceAll('/', '-');
onEvent("change", "#his_enddate input", function () {
let today = displayDate(new Date(Date.now()), "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() != "")) {
$('#his_enddate input').val($('#his_enddate input').data('val'));
toast_error('不可選擇大於結束時間');
}
else {
$('#his_startdate').data('val', $('#his_startdate').val());
$('#his_enddate input').data('val', $('#his_enddate input').val());
if (
$("#his_startdate").val() > $("#his_enddate input").val() &&
$("#his_startdate").val() != "" &&
$("#his_enddate input").val() != ""
) {
$("#his_enddate input").val($("#his_enddate input").data("val"));
toast_error("不可選擇大於結束時間");
} else {
$("#his_startdate").data("val", $("#his_startdate").val());
$("#his_enddate input").data("val", $("#his_enddate input").val());
$(`[onclick="setDateType('today', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('today', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('today', this)"]`).removeClass("btn-info");
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-secondary");
$(`[onclick="setDateType('ytd', this)"]`).removeClass("btn-info");
if ($('#his_startdate').val() == $('#his_enddate input').val()) {
if ($('#his_startdate').val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).addClass('btn-info');
}
else if ($('#his_startdate').val() == ytd) {
$(`[onclick="setDateType('ytd', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('ytd', this)"]`).addClass('btn-info');
if ($("#his_startdate").val() == $("#his_enddate input").val()) {
if ($("#his_startdate").val() == today) {
$(`[onclick="setDateType('today', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('today', this)"]`).addClass("btn-info");
} else if ($("#his_startdate").val() == ytd) {
$(`[onclick="setDateType('ytd', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('ytd', this)"]`).addClass("btn-info");
}
}
}
});
});
function initList() {
let sendData = {
building_tag: buildingTag
}
building_tag: buildingTag,
};
objSendData.Data = sendData;
let url = baseApiUrl + "/api/History/GetMainSub";
function success(res) {
let strHtml = ``;
let i1 = null, i2 = null, first = true;
let i1 = null,
i2 = null,
first = true;
$.each(res.data.history_Main_Systems, function (index, val) {
if (pageAct.mainStatus) {
strHtml += `<li>
<a href="#" data-filter-tags="${val.full_name.toLowerCase()}" data-maintag="${val.main_system_tag}">
<span class="nav-link-text">${val.full_name}</span>
<a href="#" data-filter-tags="${val.full_name.toLowerCase()}" data-maintag="${val.main_system_tag
}">
<span class="nav-link-text">${val.full_name
}</span>
</a>
<ul style="${index == 0 ? `display:block;` : ``}">`;
<ul style="${index == 0 ? `display:block;` : ``
}">`;
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;
i2 = val2.device != null && i2 == null ? index2 : null;
strHtml += `<li>
<a href="#" data-filter-tags="${val2.full_name.toLowerCase()}" data-subtag="${val2.sub_system_tag}">
<a href="#" data-filter-tags="${val2.full_name.toLowerCase()}" data-subtag="${val2.sub_system_tag
}">
<span class="nav-link-text">
${val2.full_name}
</span>
</a>
<ul style="${(i1 != null ? index == i1 : first) && index2 == i2 ? `display:block;` : ``}">`;
<ul style="${(i1 != null ? index == i1 : first) &&
index2 == i2
? `display:block;`
: ``
}">`;
$.each(val2.device, function (index3, val3) {
if (val3.device_number.includes("$3"))
val3.device_number = val3.device_number.replace("$3", "");
strHtml += `<li data-tabname="hisListItem">
<a href="#" onClick="setValue('${val3.device_number}', '${val3.full_name}', null)" data-filter-tags="${val3.full_name.toLowerCase()} ${val3.device_serial_tag.toLowerCase()}" data-devnum="${val3.device_number}">
<a href="#" onClick="setValue('${val3.device_number
}', '${val3.full_name
}', null)" data-filter-tags="${val3.full_name.toLowerCase()} ${val3.device_serial_tag.toLowerCase()}" data-devnum="${val3.device_number
}">
<span class="nav-link-text">
${val3.full_name}
</span>
@ -236,8 +310,7 @@
pageAct.deviceName = val3.full_name;
devPointsList();
}
}
else {
} else {
if (index2 == i2 && first) {
first = false;
pageAct.deviceNumber = val3.device_number;
@ -254,7 +327,7 @@
}
});
$('#js_nested_list').html(strHtml);
$("#js_nested_list").html(strHtml);
$(`[data-tabname="hisListItem"]`).YTTab();
}
$(loadEle).Loading("close");
@ -263,8 +336,8 @@
function devPointsList() {
let sendData = {
device_number: pageAct.deviceNumber
}
device_number: pageAct.deviceNumber,
};
objSendData.Data = sendData;
let url = baseApiUrl + "/api/History/GetDevPoi";
function success(res) {
@ -272,15 +345,19 @@
$.each(res.data, function (index, val) {
if (index == 0) {
strHtml += `<button onClick="setValue(null, null, '${val.points}', this)" type="button" class="btn btn-info waves-effect waves-themed">${val.full_name || val.points}</button>`;
strHtml += `<button onClick="setValue(null, null, '${val.points
}', this)" type="button" class="btn btn-info waves-effect waves-themed">${val.full_name || val.points
}</button>`;
pageAct.deviceItem = val.points;
pageAct.devicePoiName = val.full_name + ' ' + val.points;
pageAct.devicePoiName = val.full_name + " " + val.points;
} else {
strHtml += `<button onClick="setValue(null, null, '${val.points}', this)" type="button" class="btn btn-secondary waves-effect waves-themed">${val.full_name || val.points}</button>`;
strHtml += `<button onClick="setValue(null, null, '${val.points
}', this)" type="button" class="btn btn-secondary waves-effect waves-themed">${val.full_name || val.points
}</button>`;
}
});
$('#devPointsList').html(strHtml);
$("#devPointsList").html(strHtml);
if (!hisFirst) {
searchDate();
@ -298,48 +375,60 @@
let sendData = {
device_number: pageAct.deviceNumber,
device_point: pageAct.deviceItem
}
device_point: pageAct.deviceItem,
};
objSendData.Data = sendData;
let url = baseApiUrl + "/api/DevGetWay";
ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (res && res.code == "0000") {
pageAct.hisBuiName = res.data;
getHistoryDataByBaja(pageAct.deviceNumber + "_" + pageAct.deviceItem,
getHistoryDataByBaja(
pageAct.deviceNumber + "_" + pageAct.deviceItem,
new Date(start).getTime(),
new Date(end).getTime(),
pageAct.deviceName,
pageAct.hisBuiName,
callBackFromHistory);
}
else {
callBackFromHistory
);
} else {
$(loadEle).Loading("close");
}
}, function (res) { $(loadEle).Loading("close"); }, "POST", true).send();
},
function (res) {
$(loadEle).Loading("close");
},
"POST",
true
).send();
}
function callBackFromHistory(res = '{"count":0,"data":[]}') {
res = JSON.parse(res);
loadTable(res.data);
if (historyTable != null) {
let t = $('#historyTable').dataTable();
let t = $("#historyTable").dataTable();
t.fnClearTable();
if (res.data.length > 0)
t.fnAddData(res.data);
if (res.data.length > 0) t.fnAddData(res.data);
}
}
function setValue(deviceNumber, deviceName, deviceItem, elem) {
hisFirst = false;
btnSelCss(elem);
if ((deviceNumber != null && deviceNumber != undefined) && (deviceName != null && deviceName != undefined)) {
if (
deviceNumber != null &&
deviceNumber != undefined &&
deviceName != null &&
deviceName != undefined
) {
pageAct.deviceNumber = deviceNumber;
pageAct.deviceName = deviceName;
devPointsList();
}
else if (deviceItem != null && deviceItem != undefined) {
} else if (deviceItem != null && deviceItem != undefined) {
pageAct.devicePoiName = $(elem).text();
pageAct.deviceItem = deviceItem;
@ -352,67 +441,82 @@
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");
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;
$('#his_startdate').css('display', 'block');
$('#his_enddate').css('display', 'none');
$('#getmonth').css('display', 'none');
$('#his_startdate').val(date);
$("#his_startdate").css("display", "block");
$("#his_enddate").css("display", "none");
$("#getmonth").css("display", "none");
$("#his_startdate").val(date);
if (type == "today")
getData(formatDate(now, "date", true), formatDate(now, "date", true));
else if (type == "ytd")
getData(formatDate(ytd, "date", true), formatDate(ytd, "date", true));
else {
$(`[onclick="setDateType('today', this)"]`).removeClass('btn-secondary');
$(`[onclick="setDateType('today', this)"]`).addClass('btn-info');
$(`[onclick="setDateType('today', this)"]`).removeClass(
"btn-secondary"
);
$(`[onclick="setDateType('today', this)"]`).addClass("btn-info");
}
}
else if (type == "range") {
$(`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`).addClass('btn-secondary');
} else if (type == "range") {
$(
`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`
).removeClass("btn-info");
$(
`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`
).addClass("btn-secondary");
$('#his_startdate').css('display', 'block');
$('#his_enddate').css('display', 'block');
$('#getmonth').css('display', 'none');
$('#his_startdate').val(now);
$('#his_startdate').data('val', now);
$('#his_enddate input').val(tmr);
$('#his_enddate input').data('val', tmr);
}
else if (type == "month") {
$(`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`).removeClass('btn-info');
$(`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`).addClass('btn-secondary');
$("#his_startdate").css("display", "block");
$("#his_enddate").css("display", "block");
$("#getmonth").css("display", "none");
$("#his_startdate").val(now);
$("#his_startdate").data("val", now);
$("#his_enddate input").val(tmr);
$("#his_enddate input").data("val", tmr);
} else if (type == "month") {
$(
`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`
).removeClass("btn-info");
$(
`[onclick="setDateType('today', this)"], [onclick="setDateType('ytd', this)"]`
).addClass("btn-secondary");
$('#his_startdate').css('display', 'none');
$('#his_enddate').css('display', 'none');
$('#getmonth').css('display', 'block');
$('#getmonth').val(now.substr(0, 7));
}
else if (type == "ytd") {
$('#his_startdate').css('display', 'block');
$('#his_enddate').css('display', 'none');
$('#getmonth').css('display', 'none');
$('#his_startdate').val(ytd);
$("#his_startdate").css("display", "none");
$("#his_enddate").css("display", "none");
$("#getmonth").css("display", "block");
$("#getmonth").val(now.substr(0, 7));
} else if (type == "ytd") {
$("#his_startdate").css("display", "block");
$("#his_enddate").css("display", "none");
$("#getmonth").css("display", "none");
$("#his_startdate").val(ytd);
}
}
function searchDate() {
let start = new Date($('#his_startdate').val());
let end = new Date($('#his_enddate input').val());
let start = new Date($("#his_startdate").val());
let end = new Date($("#his_enddate input").val());
if (pageAct.dateType == "today" || pageAct.dateType == "day" || pageAct.dateType == "ytd")
if (
pageAct.dateType == "today" ||
pageAct.dateType == "day" ||
pageAct.dateType == "ytd"
)
end = start;
else if (pageAct.dateType == "month") {
start = new Date($('#getmonth').val());
start = new Date($("#getmonth").val());
end = new Date(start.valueOf()).setMonth(start.getMonth() + 1);
end = new Date(new Date(end).setDate(new Date(end).getDate() - 1));
}
else if (pageAct.dateType != "range")
return;
} else if (pageAct.dateType != "range") return;
pageAct.hisStartDate = start;
pageAct.hisEndDate = end;
@ -420,20 +524,18 @@
}
function formatDate(date, type, send = false) {
if (!send)
return displayDate(date, type).replaceAll("/", "-");
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];
let month = date.split("/")[1];
let year = date.split("/")[0];
let day = date.split("/")[2];
return month + "/" + day + "/" + year;
}
}
function loadTable(data) {
if (data) {
$.each(data, function (i, v) {
v.type = pageAct.devicePoiName.split(" ")[0];
});
@ -441,41 +543,51 @@
let tag = "#historyTable";
let column_defs = [
{ "targets": [0], "width": "20%", "sortable": true },
{ "targets": [1], "width": "20%", "sortable": true },
{ "targets": [2], "width": "20%", "sortable": true }
{ targets: [0], width: "20%", sortable: true },
{ targets: [1], width: "20%", sortable: true },
{ targets: [2], width: "20%", sortable: true },
];
let columns = [
{
"title": "類別",
"data": "type"
title: "類別",
data: "type",
},
{
"title": "設備名稱",
"data": "deviceName",
title: "設備名稱",
data: "deviceName",
},
{
"title": "數值",
"data": "value",
"render": function (data) {
title: "數值",
data: "value",
render: function (data) {
if (isNaN(data.toString())) {
return data
return data;
}
return data.roundDecimal(2);
}
},
},
{
"title": "紀錄時間",
"data": "timestamp",
"render": function (data) {
title: "紀錄時間",
data: "timestamp",
render: function (data) {
return displayDate(data, "datetime");
}
}
},
},
];
historyTable = new YourTeam.JqDataTables.getTableByStatic(tag, data, columns, column_defs, null, null, null, null, "tpi");
$(tag).DataTable().order([3, 'desc']);
historyTable = new YourTeam.JqDataTables.getTableByStatic(
tag,
data,
columns,
column_defs,
null,
null,
null,
null,
"tpi"
);
$(tag).DataTable().order([3, "desc"]);
}
}
@ -543,7 +655,7 @@
$("[name=buildingRadio]:checked").parent().removeClass("btn-secondary");
$("[name=buildingRadio]:checked").parent().addClass("btn-info");
buildingTag = buildingRadios.val(); //building tag
pageAct.hisBuiName = buildingRadios.prop('id').split("-")[1];
pageAct.hisBuiName = buildingRadios.prop("id").split("-")[1];
initList();
result = true;
}

View File

@ -1032,7 +1032,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
checkDevState();
loadNoticeConSta();
refreshSubPage()
refreshSubPage();
allDevices = getAllDevice();
if (pageAct.isShowBuildingInMenu) {
@ -1354,7 +1354,9 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
} else {
$(
`#subSysBtn${lastPageAct.sysSubTag
}[data-building-tag=${buildingTagOnJquery(lastPageAct.buiTag)}]`
}[data-building-tag=${buildingTagOnJquery(
lastPageAct.buiTag
)}]`
).click();
}
} else {
@ -1909,7 +1911,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
}
function setSysTagForPageAct(obj) {
console.log($(obj).data("subsysobj"))
console.log($(obj).data("subsysobj"));
pageAct.sysMainTag =
$(obj).data("subsysobj")?.main_system_tag ||
pageAct.sysSubObj.main_system_tag;
@ -2236,9 +2238,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
{
page: page,
tabname: "systemMonitor",
"building-tag": buildingTagOnJquery(
pageAct.buiTag
),
"building-tag": buildingTagOnJquery(pageAct.buiTag),
},
"topFunBtn"
);
@ -2328,16 +2328,25 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
];
// 向 niagara 取得告警資料
getDeviceAlarmCardByBaja(null, now, false, false, function (bajaDatas) {
let datas = bajaDatas.data.filter(({ alarmClass }) => alarmClass!== "defaultAlarmClass");
let datas = bajaDatas.data.filter(
({ alarmClass }) => alarmClass !== "defaultAlarmClass"
);
let titleHtml = `異常通知`;
let notices = [];
// 遍歷每個告警資料
$.each(datas ?? [], (idx, data) => {
if (noticeOptArr.findIndex((x) => x.id == data.uuid) == -1) {
// 針對該告警對象的設備,從 allDevices 找出設備名稱
datas[idx].full_name = allDevices.filter(
(x) => x.device_number == data.devicePath
)[0]?.full_name;
const building_name = pageAct.buildList.find(
({ building_tag }) =>
building_tag === data.devicePath.split("_")[1]
)?.full_name;
datas[idx].full_name =
allDevices.filter((x) => x.device_number == data.devicePath)[0]
?.full_name || (data.alarmClass === "Sys_Con_AlarmClass"
? `${building_name}_電錶邊緣控制器_${data.split("_")[7]}`
: "");
let div1 = creDiv(["col-12"]);
let button = creBtn(