ibms-dome/Frontend/_historyData.html
2022-11-24 10:43:44 +08:00

298 lines
12 KiB
HTML

<main id="js-page-content" role="main" class="page-content">
<div class="row">
<div class="col-sm-12 col-xl-2">
<div class="bg-success-900 rounded bg-info-gradient">
<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="Filter nested items (e.g buttons, chart)">
</div>
<!-- nav-menu-reset will reset the font colors -->
<ul id="js_nested_list" class="nav-menu nav-menu-reset nav-menu-compact bg-success-900 bg-info-gradient mb-sm-4 mb-md-0 rounded" 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">
<h1 class="p-2 mb-0">歷史資料瀏覽</h1>
<div class="row bg-dark p-2 mb-5">
<div class="col-auto">
<div class="btn-group">
<button type="button" onclick="setDateType('day')" class="btn btn-secondary waves-effect waves-themed">日期</button>
<button type="button" onclick="setDateType('range')" class="btn btn-secondary waves-effect waves-themed">日區間</button>
<button type="button" onclick="setDateType('month')" 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')" class="btn btn-secondary waves-effect waves-themed">今天</button>
<button type="button" onclick="setDateType('ytd')" class="btn btn-secondary waves-effect waves-themed">昨天</button>
</div>
</div>
<div class="col-auto">
<div class="form-group">
<input class="form-control" id="startdate" type="date" name="date" value="">
<input class="form-control" id="getmonth" type="month" style="display: none"/>
</div>
</div>
<div class="col-auto" id="enddate" style="display: none">
<div class="form-group">
<input class="form-control" type="date" name="date" value="">
</div>
</div>
<div class="col-auto">
<a href="#" onclick="searchDate()" class="btn btn-info">查詢</a>
<a href="#" class="btn btn-info waves-effect waves-themed">
<span class="fal fa-file-excel mr-1"></span>
匯出
</a>
</div>
</div>
<div class="row mb-2">
<div id="devPointsList" class="btn-group">
</div>
</div>
<div class="row">
<div class="frame-wrap">
<table id="tableData" class="table table-bordered table-striped text-center m-0">
<thead class="thead-themed">
<tr>
<th>設備名稱</th>
<th>數值</th>
<th>紀錄時間</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
<script>
$(function () {
initList();
// default list filter
initApp.listFilter($('#js_default_list'), $('#js_default_list_filter'));
// custom response message
initApp.listFilter($('#js-list-msg'), $('#js-list-msg-filter'));
//accordion filter
initApp.listFilter($('#js_list_accordion'), $('#js_list_accordion_filter'));
// nested list filter
initApp.listFilter($('#js_nested_list'), $('#js_nested_list_filter'));
//init navigation
initApp.buildNavigation($('#js_nested_list'));
});
function initList() {
pageAct.mainStatus = false;
let sendData = {
building_tag: pageAct.buiTag
}
objSendData.Data = sendData;
let url = baseApiUrl + "/api/History/GetMainSub";
function success(res) {
let strHtml = ``;
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="user interface buttons compass action dropdown navigation sidebars" data-maintag="${val.main_system_tag}">
<span class="nav-link-text">${val.full_name}</span>
</a>
<ul style="${index == 0 ? `display:block;` : ``}">`;
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;
strHtml += `<li>
<a href="#" data-filter-tags="user interface buttons" data-subtag="${val2.sub_system_tag}">
<span class="nav-link-text">
${val2.full_name} ${val2.sub_system_tag}
</span>
</a>
<ul style="${(i1 != null ? index == i1 : first) && index2 == i2 ? `display:block;` : ``}">`;
$.each(val2.device, function (index3, val3) {
strHtml += `<li>
<a href="#" onClick="setValue('${val3.device_number}', '${val3.full_name}', null)" data-filter-tags="user interface buttons" data-devnum="${val3.device_number}">
<span class="nav-link-text">
${val3.full_name} ${val3.device_serial_tag}
</span>
</a>
</li>`;
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 += `</ul> </li>`;
});
if (pageAct.mainStatus) {
strHtml += `</ul> </li>`;
}
});
$('#js_nested_list').html(strHtml);
}
ytAjax = new YourTeam.Ajax(url, objSendData, success, null, "POST").send();
}
function devPointsList() {
let sendData = {
device_number: pageAct.deviceNumber
}
objSendData.Data = sendData;
let url = baseApiUrl + "/api/History/GetDevPoi";
function success(res) {
let strHtml = ``;
$.each(res.data, function (index, val) {
strHtml += `<button onClick="setValue(null, null, '${val.points}')" type="button" class="btn btn-secondary waves-effect waves-themed">${val.full_name} ${val.points}</button>`;
if (index == 0) {
pageAct.deviceItem = val.points;
getData();
}
});
$('#devPointsList').html(strHtml);
}
ytAjax = new YourTeam.Ajax(url, objSendData, success, null, "POST").send();
}
function getData(start = null, end = null) {
var sdt = new Date();
var edt = new Date(new Date().setDate(sdt.getDate() + 1));
start = start ?? sdt.toLocaleDateString();
end = end ?? edt.toLocaleDateString();
getHistoryDataByBaja(pageAct.deviceNumber + "_" + pageAct.deviceItem,
new Date(start).getTime(),
new Date(end).getTime(),
pageAct.deviceName,
"Mitsubishi_Sup",
callBackFromHistory);
}
function callBackFromHistory(res) {
let strHtml = ``;
res = JSON.parse(res);
if (res.data.length > 0) {
$.each(res.data, function (index, val) {
strHtml += `<tr>
<td>${val.deviceName}</td>
<td>${val.value}</td>
<td>${displayDate(val.timestamp)}</td>
</tr>`;
});
}
else
strHtml += `<tr><td colspan="3">查無資料</td></tr>`;
$('#tableData tbody').html(strHtml);
}
function setValue(deviceNumber, deviceName, deviceItem) {
if ((deviceNumber != null && deviceNumber != undefined) && (deviceName != null && deviceName != undefined)) {
pageAct.deviceNumber = deviceNumber;
pageAct.deviceName = deviceName;
devPointsList();
}
else if (deviceItem != null && deviceItem != undefined) {
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;
}
}
</script>