fleet-contractor/Site/Maintenance/AlertsManagement.aspx
2024-03-26 15:56:31 +08:00

1571 lines
73 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ Page Title="" Language="C#" MasterPageFile="~/Maintenance/MaintenanceBase.master" AutoEventWireup="true" CodeFile="AlertsManagement.aspx.cs" Inherits="Maintenance_AlertsManagement" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<style type="text/css">
.selectinput {
width: 150px;
margin-right: 10px;
}
#dialogdatatb td {
padding-top: 5px;
}
.a {
text-decoration: none;
color: #2140fb;
}
.main_table tbody tr.no-hover:hover {
background: inherit;
}
.iconplus:before {
font-family: 'FontAwesome';
content: '\f067';
font-size: 10px;
}
.iconminus:before {
font-family: 'FontAwesome';
content: '\f068';
/*font-size: 10px;*/
}
.assettr {
background: #f1f4f8;
}
.assettr:hover {
background: #e1e1e1;
}
.alerttr {
background: #e1e4e8;
}
.alerttr:hover {
background: #e1e1e1;
}
.tabheader {
padding-top: 2px;
padding-bottom: 2px;
padding-left: 5px;
padding-right: 5px;
border: 1px solid #bbb;
z-index: 10;
background-color: #ddd;
}
.tabheader:hover {
cursor: pointer;
}
.tabheaderselected {
padding-top: 2px;
padding-bottom: 2px;
padding-left: 5px;
padding-right: 5px;
border: 1px solid #bbb;
border-bottom: 0;
z-index: 10;
background-color: white;
}
.tabheaderselected:hover {
cursor: pointer;
}
.autoacknowledge:before {
font-family: CalciteWebCoreIcons, FontAwesome;
content: '\e670';
}
.export:before {
font-family: CalciteWebCoreIcons, FontAwesome;
content: '\f56e';
}
.exit:before {
font-family: CalciteWebCoreIcons, FontAwesome;
content: '\f08b';
}
#div_autoacknowledgelist input[type="checkbox"] {
width: unset;
}
</style>
<script src="<%=GetFileUrlWithVersion("js/inputdatactr.js")%>" type="text/javascript"></script>
<script type="text/javascript">
var CanEditWorkOrder = <%=CanEditWorkOrder?"true":"false"%>;
var allmachinealertdata;
var allalertdata;
var allAcknowledgedalertdata;
var lastClickCheckbox = undefined;
var selectedMachineID = undefined;//已选择的MachineID
var selectedWorkOrderIDs = undefined;
var selectedAlerts = [];//已选择的AlertID
var selectedAlertData = [];//已选择的Alert
var selectedAssetGroups = [];
var isalertview = true;
var isacknowledgingalerts = false;
var tabIndex = 0;
var assetid = "<%=AssetID %>";
var AlertViewApiAddress = "<%=AlertViewApiAddress%>";
var AssetViewApiAddress = "<%=AssetViewApiAddress%>";
var AcknowledgedApiAddress = "<%=AcknowledgedApiAddress%>";
var CompanyID = "<%=CompanyID%>";
function alertrequest(method, param, callback, error) {
_network.request("Maintenance/AlertsManagement.aspx", -1, method, param, callback, error || function (e) {
console.log(e);
showmaskbg(false, true);
showAlert(GetTextByKey('P_AM_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_AM_QUERY', 'Query'));
});
}
function worequest(method, param, callback, error) {
_network.request("Maintenance/WorkOrderMaintenance.aspx", -1, method, param, callback, error || function (e) {
console.log(e);
showmaskbg(false, true);
showAlert(GetTextByKey('P_AM_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_AM_QUERY', 'Query'));
});
}
var SPLIT_CHAR175 = String.fromCharCode(175);
var SPLIT_CHAR180 = String.fromCharCode(180);
var SPLIT_CHAR181 = String.fromCharCode(181);
var SPLIT_CHAR182 = String.fromCharCode(182);
var SPLIT_CHAR183 = String.fromCharCode(183);
function GetAlerts() {
if (AlertViewApiAddress) {
GetAlerts1();
return;
}
var begindate = $('#txtbegindate').val();
var enddate = $('#txtenddate').val();
if (begindate && !$('#txtbegindate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_BEGINDATEISINVALID', "The begin date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (enddate && !$('#txtenddate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_ENDDATEISINVALID', "The end date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (begindate && enddate && begindate > enddate) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
showloading(true);
$('#chk_all_ackalert').prop('checked', false);
var searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
//var showCompleted = $('#chkShowCompleted').prop("checked") ? 1 : 0;
var alerttypes = $('#div_alerttype').dropdownVals();
var assetgroups = $('#div_assetgroup').dropdownVals();
var alertstatus = $('#div_alertstatus').dropdownVals();
var jobsites = $('#div_jobsites').dropdownVals();
var category = $('#div_categorys').dropdownVals();
var item = {
AssetID: assetid == "" ? -1 : eval(assetid),
SearchText: searchtxt,
AlertStatus: alertstatus,
AssetGroups: assetgroups,
AlertTypes: alerttypes,
JobSites: jobsites,
Category: category,
BeginDate: begindate,
EndDate: enddate,
IncludeunCompleted: $('#chk_includeuncompleted').prop("checked"),
}
if (tabIndex == 0) {
$('#alertviewlist').data("dataloaded", true);
alertrequest("GETALERTS", JSON.stringify(item), function (data) {
showloading(false);
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allalertdata = ConvertAlertInfos(data);
else
allalertdata = [];
showAlerts(allalertdata);
}, function (err) {
showloading(false);
});
}
else if (tabIndex == 1) {
$('#machineviewlist').data("dataloaded", true);
alertrequest("GETMACHINEALERTS", JSON.stringify(item), function (data) {
showloading(false);
$('#tbody_alerts').empty();
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allmachinealertdata = ConvertMachineInfoForAlert(data);
else
allmachinealertdata = [];
sortTableData($('#tbRecordList'), allmachinealertdata);
showMachineAlerts(allmachinealertdata);
}, function (err) {
console.log(err);
showloading(false);
});
}
else {
$('#acknowledgedalertslist').data("dataloaded", true);
alertrequest("GetAcknowledgedAlerts", JSON.stringify(item), function (data) {
showloading(false);
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allAcknowledgedalertdata = ConvertAlertInfos(data);
else
allAcknowledgedalertdata = [];
showAcknowledgedAlerts(allAcknowledgedalertdata);
}, function (err) {
showloading(false);
});
}
}
function GetAlerts1() {
var begindate = $('#txtbegindate').val();
var enddate = $('#txtenddate').val();
if (begindate && !$('#txtbegindate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_BEGINDATEISINVALID', "The begin date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (enddate && !$('#txtenddate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_ENDDATEISINVALID', "The end date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (begindate && enddate && begindate > enddate) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
showloading(true);
$('#chk_all_ackalert').prop('checked', false);
var searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
//var showCompleted = $('#chkShowCompleted').prop("checked") ? 1 : 0;
var alerttypes = $('#div_alerttype').dropdownVals();
var assetgroups = $('#div_assetgroup').dropdownVals();
var alertstatus = $('#div_alertstatus').dropdownVals();
var jobsites = $('#div_jobsites').dropdownVals();
var category = $('#div_categorys').dropdownVals();
var item = {
AssetID: assetid == "" ? -1 : eval(assetid),
SearchText: searchtxt,
AlertStatus: alertstatus,
AssetGroups: assetgroups,
AlertTypes: alerttypes,
JobSites: jobsites,
Category: category,
BeginDate: begindate,
EndDate: enddate,
IncludeunCompleted: $('#chk_includeuncompleted').prop("checked"),
}
if (tabIndex == 0) {
$('#alertviewlist').data("dataloaded", true);
_network.apipost(AlertViewApiAddress, CompanyID, item, function (data) {
showloading(false);
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allalertdata = ConvertAlertInfos(data);
else
allalertdata = [];
showAlerts(allalertdata);
}, function (err) {
showloading(false);
});
}
else if (tabIndex == 1) {
$('#machineviewlist').data("dataloaded", true);
_network.apipost(AssetViewApiAddress, CompanyID, item, function (data) {
showloading(false);
$('#tbody_alerts').empty();
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allmachinealertdata = ConvertMachineInfoForAlert(data);
else
allmachinealertdata = [];
sortTableData($('#tbRecordList'), allmachinealertdata);
showMachineAlerts(allmachinealertdata);
}, function (err) {
console.log(err);
showloading(false);
});
}
else {
$('#acknowledgedalertslist').data("dataloaded", true);
_network.apipost(AcknowledgedApiAddress, CompanyID, item, function (data) {
showloading(false);
if (typeof (data) !== "string") {
showAlert(data[0], GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data !== "")
allAcknowledgedalertdata = ConvertAlertInfos(data);
else
allAcknowledgedalertdata = [];
showAcknowledgedAlerts(allAcknowledgedalertdata);
}, function (err) {
showloading(false);
});
}
}
function ConvertMachineInfoForAlert(str) {
var machinealerts = [];
var arrays = str.split(SPLIT_CHAR183);
if (arrays && arrays.length > 0) {
for (var i = 0; i < arrays.length; i++) {
var array = arrays[i].split(SPLIT_CHAR182);
var mi = {};
mi.MachineID = parseInt(array[0]);
mi.VIN = array[1];
mi.MachineName = array[2];
mi.Make = array[3];
mi.Model = array[4];
mi.EngineHours = parseFloat(array[5]);
mi.DTCAlertCount = parseInt(array[6]);
mi.PMAlertCount = parseInt(array[7]);
mi.InspectAlertCount = parseInt(array[8]);
mi.OpenWorkOrders = parseInt(array[9]);
mi.LatestAlertDateTime = array[10];
mi.LatestAlertDateTimeStr = array[11];
var alertsstr = array[12];
if (alertsstr !== "") {
mi.Alerts = ConvertAlertInfos(alertsstr);
}
machinealerts.push(mi);
}
}
return machinealerts;
}
function ConvertAlertInfos(str) {
var alerts = [];
var arrays = str.split(SPLIT_CHAR180);
if (arrays && arrays.length > 0) {
for (var i = 0; i < arrays.length; i++) {
var array = arrays[i].split(SPLIT_CHAR175);
var alert = {};
alert.AlertID = parseInt(array[0]);
alert.WorkOrderID = parseInt(array[1]);
alert.WorkOrderStatus = array[2];
alert.AlertType = array[3];
alert.AlertTime_UTC = array[4];
alert.AlertTime_UTCStr = array[5];
alert.AlertLocalTime = array[6];
alert.AlertLocalTimeStr = array[7];
alert.Completed = parseInt(array[8]) == 1;
alert.MachineID = parseInt(array[9]);
alert.ModelID = parseInt(array[10]);
alert.Model = array[11];
alert.MakeID = parseInt(array[12]);
alert.Make = array[13];
alert.VIN = array[14];
alert.MachineName = array[15];
alert.EngineHours = parseFloat(array[16]);
alert.CurrentHours = parseFloat(array[17]);
alert.Description = array[18];
alert.ServiceDescription = array[19];
alert.ScheduleID = array[20];
alert.IntervalID = array[21];
alert.Recurring = parseInt(array[22]) == 1;
alert.Priority = parseInt(array[23]);
alert.ExpectedCost = parseFloat(array[24]);
alert.AlertCount = parseInt(array[25]);
var repeatedalertsstr = array[26];
if (repeatedalertsstr !== "") {
alert.RepeatedAlerts = repeatedalertsstr.split(SPLIT_CHAR181);
}
alert.OpenWorkOrderCount = parseInt(array[27]);
alert.PMType = array[28];
alert.AcknowledgedBy = array[29];
alert.AcknowledgedByName = array[30];
alert.AcknowledgedTime_UTC = array[31];
alert.AcknowledgedTime_UTCStr = array[32];
alert.AcknowledgedTime_Local = array[33];
alert.AcknowledgedTime_LocalStr = array[34];
alert.AcknowledgedComment = array[35];
alert.WorkOrderNumber = array[36];
alert.Comment = array[37];
alerts.push(alert);
}
}
return alerts;
}
function showAlerts(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
r.Enabled = true;
r.Selected = false;
for (var j in r) {
if (j === "AlertLocalTime") {
r[j] = { DisplayValue: r["AlertLocalTimeStr"], Value: r[j] };
}
if (j === "WorkOrderID" && r[j] <= 0) {
r[j] = { DisplayValue: "", Value: r[j] };
}
if (j === "AlertType") {
r[j] = { DisplayValue: ($.trim(r[j]) == "" ? GetTextByKey("P_AM_BLANK", '(Blank)') : r[j]), Value: $.trim(r[j]) };
}
}
rows.push(r);
}
alertview_dt.SelectedCount = 0;
alertview_dt.setData(rows);
}
function CheckAcknowledgeAlert(e) {
selectedWorkOrderIDs = "";
lastClickCheckbox = e;
selectedAlerts = [];
selectedAlertData = [];
var chk = $(e);
var name = chk.attr("name");
var index = chk.attr("index");
if (name === "ack" + index) {
var tr = chk.parents('tr').next();
var ma = chk.data("alert");
var chksub = tr.find("[name='acksub" + index + "']");
if (chksub.length === 0) {//Sub没有展开
if (ma && ma.Alerts) {
var selectedWOIDS = [];
for (var i in ma.Alerts) {
var alert = ma.Alerts[i];
if (alert.WorkOrderID <= 0 && !alert.Completed) {
selectedAlerts.push(alert.AlertID);
if (alert.RepeatedAlerts) {
for (var j = 0; j < alert.RepeatedAlerts.length; j++) {
selectedAlerts.push(alert.RepeatedAlerts[j]);
}
}
selectedAlertData.push(alert);
}
}
}
}
else {
chksub.prop("checked", e.checked).each(function () {
var tempchk = $(this);
var alert = tempchk.data("alert");
if (alert && tempchk.prop("checked")) {
selectedAlerts.push(alert.AlertID);
if (alert.RepeatedAlerts) {
for (var j = 0; j < alert.RepeatedAlerts.length; j++) {
selectedAlerts.push(alert.RepeatedAlerts[j]);
}
}
selectedAlertData.push(alert);
}
});
}
$('#tbody_alerts').find("input[index!='" + index + "']").prop("disabled", e.checked);
//selectedMachineIDselectedworkorderids获取
if (ma && ma.Alerts) {
var selectedWOIDS = [];
for (var i in ma.Alerts) {
var alert = ma.Alerts[i];
if (alert.WorkOrderID > 0 && e.checked) {
if (alert.WorkOrderStatus === "Completed" || selectedWOIDS.indexOf(alert.WorkOrderID) >= 0)
continue;
selectedWOIDS.push(alert.WorkOrderID);
if (!selectedWorkOrderIDs || selectedWorkOrderIDs === "")
selectedWorkOrderIDs = alert.WorkOrderID;
else
selectedWorkOrderIDs = selectedWorkOrderIDs + ", " + alert.WorkOrderID;
}
}
}
if (e.checked) {
selectedMachineID = ma.MachineID;
}
else {
selectedAlerts = [];
selectedAlertData = [];
selectedMachineID = "";
selectedWorkOrderIDs = "";
}
}
else if (name === "acksub" + index) {
if (e.checked) {
var allState = true;
var subs = $('#tbody_alerts').find("[name='acksub" + index + "']").each(function () {
var tempchk = $(this);
var alert = tempchk.data("alert");
if (alert && tempchk.prop("checked")) {
selectedAlerts.push(alert.AlertID);
if (alert.RepeatedAlerts) {
for (var j = 0; j < alert.RepeatedAlerts.length; j++) {
selectedAlerts.push(alert.RepeatedAlerts[j]);
}
}
selectedAlertData.push(alert);
}
allState = allState && tempchk.prop("checked");
});
if (allState)
$('#tbody_alerts').find("[name='ack" + index + "']").prop("checked", true);
$('#tbody_alerts').find("input[index!='" + index + "']").prop("disabled", true);
}
else {
var allState = false;
var subs = $('#tbody_alerts').find("[name='acksub" + index + "']").each(function () {
var tempchk = $(this);
var alert = tempchk.data("alert");
if (alert && tempchk.prop("checked")) {
selectedAlerts.push(alert.AlertID);
if (alert.RepeatedAlerts) {
for (var j = 0; j < alert.RepeatedAlerts.length; j++) {
selectedAlerts.push(alert.RepeatedAlerts[j]);
}
}
selectedAlertData.push(alert);
}
allState = allState || tempchk.prop("checked");
});
$('#tbody_alerts').find("[name='ack" + index + "']").prop("checked", false);
if (!allState)
$('#tbody_alerts').find("input[index!='" + index + "']").prop("disabled", false);
}
//selectedMachineIDselectedworkorderids获取
var ma = $('#tbody_alerts').find("[name='ack" + index + "']").data("alert");
var checkedcount = $('#tbody_alerts').find("[name='acksub" + index + "']:checked").length;
if (checkedcount > 0 && ma && ma.Alerts) {
selectedMachineID = ma.MachineID;
var selectedWOIDS = [];
for (var i in ma.Alerts) {
var alert = ma.Alerts[i];
if (alert.WorkOrderID > 0) {
if (alert.WorkOrderStatus === "Completed" || selectedWOIDS.indexOf(alert.WorkOrderID) >= 0)
continue;
selectedWOIDS.push(alert.WorkOrderID);
if (!selectedWorkOrderIDs || selectedWorkOrderIDs === "")
selectedWorkOrderIDs = alert.WorkOrderID;
else
selectedWorkOrderIDs = selectedWorkOrderIDs + ", " + alert.WorkOrderID;
}
}
}
else {
selectedAlerts = [];
selectedAlertData = [];
selectedMachineID = "";
selectedWorkOrderIDs = "";
}
}
}
function showMachineAlerts(data) {
lastClickCheckbox = undefined;
selectedMachineID = undefined;
selectedAlerts = [];
selectedAlertData = [];
$('#tbody_alerts').empty();
for (var i = 0; i < data.length; i++) {
var ma = data[i];
ma.index = i;
var tr = $('<tr class="ma"></tr>').data("alert", ma);
if (i % 2 == 1)
tr.addClass("alerttr");
var icontd = $('<td style="width: 12px;"></td>');
var icon = $("<span class='iconplus'></span>");
icontd.append(icon);
tr.append(icontd);
var chktd = $('<td style="width: 12px;"></td>');
var ackchk = $('<input type="checkbox" onclick="CheckAcknowledgeAlert(this); "/>');
ackchk.attr("name", "ack" + i).attr("index", i).data("alert", ma);
chktd.append(ackchk);
tr.append(chktd);
tr.append($('<td style="width: 150px;"></td>').html(replaceHtmlText(ma.MachineName)));
tr.append($('<td style="width: 120px;"></td>').text(ma.Make));
tr.append($('<td style="width: 120px;"></td>').text(ma.Model));
tr.append($('<td style="width: 200px;"></td>').html(replaceHtmlText(ma.VIN)));
tr.append($('<td style="width: 150px;"></td>').text(ma.EngineHours == 0 ? "" : ma.EngineHours));
tr.append($('<td style="width: 80px;"></td>').text(ma.DTCAlertCount));
tr.append($('<td style="width: 80px;"></td>').text(ma.PMAlertCount));
tr.append($('<td style="width: 80px;"></td>').text(ma.InspectAlertCount));
tr.append($('<td style="width: 120px;"></td>').text(ma.OpenWorkOrders));
tr.append($('<td style="width: 130px;"></td>').text(ma.LatestAlertDateTimeStr));
tr.append($('<td></td>'));
$('#tbody_alerts').append(tr);
var subtr = $('<tr class="no-hover"></tr>').data("alert", ma).css("display", "none");
var subtd = $('<td colspan="13"></td>');
subtr.append(subtd);
$('#tbody_alerts').append(subtr);
icontd.click(subtr, iconclick);
}
}
function iconclick(e) {
var t = $(e.target);
if (!t.is('span'))
t = t.find("span");
var subtr = e.data;
var subtd = subtr.children().first();
if (subtr.is(":visible")) {
subtr.hide();
t.removeClass("iconminus").addClass("iconplus");
}
else {
if (subtd.attr("loaded") !== "1") {
var ma = subtr.data("alert");
if (ma) {
subtd.append(createAlertsTable(ma.Alerts, ma.index));
subtd.attr("loaded", "1");
if (lastClickCheckbox)//控制没有加载的checkbox
CheckAcknowledgeAlert(lastClickCheckbox);
}
}
subtr.show();
t.removeClass("iconplus").addClass("iconminus");
}
}
function createAlertsTable(alerts, index) {
var table = $("<table class='main_table'></table>");
var thr = $("<tr></tr>").appendTo(table);
$("<th style='width: 54px;'></th>").appendTo(thr);
$("<th style='width: 100px;'>" + GetTextByKey('P_WO_WORKORDERNUMBER', 'Work Order Number') + "</th>").appendTo(thr);
$("<th style='width: 110px;'>" + GetTextByKey('P_AM_WORKORDERSTATUS', 'Work Order Status') + "</th>").appendTo(thr);
$("<th style='width: 120px;'>" + GetTextByKey('P_AM_ALERTTYPE', 'Alert Type') + "</th>").appendTo(thr);
$("<th style='width: 300px;'>" + GetTextByKey('P_AM_DESCRIPTION', 'Description') + "</th>").appendTo(thr);
$("<th style='width: 150px;'>" + GetTextByKey('P_AM_ENGINEHOURS', 'Engine Hours') + "</th>").appendTo(thr);
$("<th style='width: 120px;'>" + GetTextByKey('P_AM_ALERTDATETIME', 'Alert DateTime') + "</th>").appendTo(thr);
$("<th style='width: 70px;'>" + GetTextByKey('P_AM_ALERTCOUNT', 'Alert Count') + "</th>").appendTo(thr);
$("<th style='white-space:nowrap;'>" + GetTextByKey('P_AM_SERVICEDESCRIPTION', 'Service Description') + "</th>").appendTo(thr);
$("<th style='white-space:nowrap;'>" + GetTextByKey('P_AM_COMMENT', 'Comment') + "</th>").appendTo(thr);
//$("<th style='width: 50px;'>Completed</th>").appendTo(thr);
var pmalertsarray = [];
for (var i = 0; i < alerts.length; i++) {
var alert = alerts[i];
var tr = $('<tr></tr>').data("alert", alert);
if (i % 2 == 1)
tr.addClass("assettr");
var tdacksubchk = $('<td style="text-align:right;"></td>');
if (alert.WorkOrderID <= 0 && !alert.Completed) {
var acksubchk = $('<input type="checkbox" onclick="CheckAcknowledgeAlert(this); "/>');
acksubchk.attr("name", "acksub" + index).attr("index", index).data("alert", alert);
tdacksubchk.append(acksubchk);
}
tr.append(tdacksubchk);
tr.append($('<td></td>').text(alert.WorkOrderNumber));
tr.append($('<td></td>').text(alert.WorkOrderStatus));
tr.append($('<td></td>').text($.trim(alert.AlertType) == "" ? GetTextByKey("P_AM_BLANK", '(Blank)') : alert.AlertType));
var tdnote = $('<td style="word-wrap:break-word;"></td>').text(alert.Description).attr('title', alert.Description);
tr.append(tdnote);
tr.append($('<td></td>').text(alert.EngineHours == 0 ? "" : alert.EngineHours));
tr.append($('<td></td>').text(alert.AlertLocalTimeStr));
tr.append($('<td></td>').text(alert.AlertCount));
var text = alert.ServiceDescription.length > 80 ? alert.ServiceDescription.substring(0, 80) + " ..." : alert.ServiceDescription;
var tdsnote = $('<td style="word-wrap:break-word;"></td>').text(text).attr('title', alert.ServiceDescription);
tr.append(tdsnote);
//tr.append($('<td></td>').html(alert.Completed ? GetTextByKey("P_UTILITY_YES", "Yes") : GetTextByKey("P_UTILITY_NO", "No")));
text = alert.Comment?.length > 80 ? alert.Comment.substring(0, 80) + " ..." : alert.Comment;
var tdscomment = $('<td style="word-wrap:break-word;"></td>').html(window['lib-utility'].escapeHtml(text)).attr('title', alert.Comment);
tr.append(tdscomment);
table.append(tr);
if (alert.AlertType == "Preventative Maintenance")
pmalertsarray.push({ AlertID: alert.AlertID, Ctrl: tdsnote });
}
getPMAlertServiceDescriptions(pmalertsarray);
return table;
}
function getPMAlertServiceDescriptions(pmalertsarray) {
if (!pmalertsarray || pmalertsarray.length == 0) return;
var alertids = pmalertsarray.map(function (a) { return a.AlertID; });
alertrequest("GetPMAlertServiceDescriptions", JSON.stringify(alertids), function (data) {
if (typeof (data) === "string") {
return;
}
if (data) {
for (var i = 0; i < data.length; i++) {
var adesc = data[i];
for (var j = 0; j < pmalertsarray.length; j++) {
if (pmalertsarray[i].AlertID = adesc.AlertId) {
var text = adesc.ServiceDescription.length > 80 ? adesc.ServiceDescription.substring(0, 80) + " ..." : adesc.ServiceDescription;
pmalertsarray[i].Ctrl.text(text).attr('title', adesc.ServiceDescription);
break;
}
}
}
}
}, function (err) {
});
}
function sortTable(sortPath, desc) {
var result = allmachinealertdata.sort(dataSort(sortPath, desc));
showMachineAlerts(result);
}
var acknowledgealerts;
function OnSaveAcknowledgeAlert() {
acknowledgealerts = [];
if (isalertview) {
for (var i in allalertdata) {
var alert = allalertdata[i];
if (alert.Selected) {
acknowledgealerts.push(alert.AlertID);
if (alert.RepeatedAlerts) {
for (var j = 0; j < alert.RepeatedAlerts.length; j++) {
acknowledgealerts.push(alert.RepeatedAlerts[j]);
}
}
}
}
}
else
acknowledgealerts = selectedAlerts;
if (acknowledgealerts.length < 1) {
showAlert(GetTextByKey("P_AM_SELECTANALERT", 'Please select an Alert.'), GetTextByKey("P_AM_ALERT", 'Alert'));
return;
}
$('#dialog_acknowledgmentcomment').val('');
showmaskbg(true);
$('#dialog_acknowledgingalerts')
.attr('act', 'add')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_acknowledgingalerts').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_acknowledgingalerts').width()) / 2
})
.showDialogfixed();
}
function SaveAcknowledgeAlert() {
var acknowledgmentcomment = $('#dialog_acknowledgmentcomment').val();
if (isacknowledgingalerts && (!acknowledgmentcomment || acknowledgmentcomment.length == 0)) {
showAlert(GetTextByKey("P_AM_ACKNOWLEDGMENTCOMMENTREQUIRED", 'Acknowledgment Comment is required.'), GetTextByKey("P_AM_ALERT", 'Alert'));
$('#dialog_comment').focus();
return;
}
alertrequest('SaveAcknowledgeAlert', JSON.stringify(acknowledgealerts) + String.fromCharCode(170) + acknowledgmentcomment, function (data) {
if (data !== 'OK') {
showAlert(data, GetTextByKey("P_AM_ALERT", 'Alert'));
} else {
$('#dialog_acknowledgingalerts').hideDialog();
OnSearchClick();
}
});
}
function CloseDialog(type) {
$('#dialog_workorder').hideDialog();
setPageTitle(GetTextByKey("P_ALERTSMANAGEMENT", "Alerts Management"), true);
if (type == 1) {
OnSearchClick();
}
else {
showmaskbg(false);
}
}
var avselectedMachineID = undefined;
function AssignedWorkOrder() {
avselectedMachineID = "";
var machineid = "";
if (isalertview) {
for (var i in allalertdata) {
var alert = allalertdata[i];
if (alert.Selected) {
avselectedMachineID = alert.MachineID;
break;
}
}
machineid = avselectedMachineID;
}
else
machineid = selectedMachineID;
var meterType = "";
var hacount = 0;
var dacount = 0;
if (selectedAlertData && selectedAlertData.length > 0) {
for (var i in selectedAlertData) {
var alert = selectedAlertData[i];
if (alert.PMType == "PM_ALERT" || alert.PMType == "TBM_ALERT" || alert.PMType == "HM_ALERT")
hacount++;
if (alert.PMType == "RDM_ALERT" || alert.PMType == "ADM_ALERT")
dacount++;
}
if (hacount > 0 && dacount > 0)
meterType = "Both";
else if (hacount > 0)
meterType = "HourMeter";
else if (dacount > 0)
meterType = "Odometer";
}
if (!machineid)
machineid = "";
if (machineid === "")
selectedAlerts = [];
$('#iframeworkorder').attr('src', 'AddWorkOrder.aspx?mid=' + machineid + "&aids=" + selectedAlerts + "&metertype=" + meterType);
$('#dialog_workorder .dialog-title span.title').text(GetTextByKey("P_AM_ASSIGNWORKORDER", 'Assign Work Order'));
showmaskbg(true);
$('#dialog_workorder')
.attr('act', 'add')
.showDialogRight();
return;
}
var showworkorder = false;
function GetAlertsLisence() {
alertrequest("GetAlertsLisence", '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data) {
showworkorder = data.WorkOrder;
isacknowledgingalerts = data.AcknowledgingAlerts;
}
if (showworkorder && CanEditWorkOrder)
$('#btnassignworkorder').css('display', '');
else
$('#btnassignworkorder').css('display', 'none');
}, function (err) {
})
}
function ExpandAll(e) {
var btn = $(e);
var expanded = false;
if (btn.attr("expandall") == "1") {
expanded = true;
btn.attr("expandall", "0").text(GetTextByKey("P_AM_EXPANDALL", "Expand All")).removeClass("iconcollapse").addClass("iconexpand");
}
else {
expanded = false;
btn.attr("expandall", "1").text(GetTextByKey("P_AM_COLLAPSEALL", "Collapse All")).removeClass("iconexpand").addClass("iconcollapse");
}
$("#tbody_alerts").find(".ma").each(function () {
var mtr = $(this);
var icontd = mtr.children().first();
var iconspan = icontd.find("span");
var subtr = mtr.next();
var subtd = subtr.children().first();
if (expanded) {
subtr.hide();
iconspan.removeClass("iconminus").addClass("iconplus");
}
else {
if (subtd.attr("loaded") !== "1") {
var ma = subtr.data("alert");
if (ma) {
subtd.append(createAlertsTable(ma.Alerts, ma.index));
subtd.attr("loaded", "1");
if (lastClickCheckbox)//控制没有加载的checkbox
CheckAcknowledgeAlert(lastClickCheckbox);
}
}
subtr.show();
iconspan.removeClass("iconplus").addClass("iconminus");
}
});
}
var alerttypesdata;
function GetAlertTypes() {
$('#div_alerttype').empty();
alertrequest('GetAlertTypes', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
data.splice(0, 0, { Key: "", Value: GetTextByKey("P_AM_BLANK", '(Blank)') });
$('#div_alerttype').css('width', 110).dropdown(data, {
search: true,
multiselect: true,
textKey: 'Value',
valueKey: 'Key'
}).on('collapsed', function (_e, wo) {
var alerttypes = $('#div_alerttype').dropdownVals();
if (alerttypes && alerttypes.length > 0) {
if (alerttypes.indexOf("Preventative Maintenance") >= 0 || alerttypes.indexOf("Yellow-Inspect") >= 0 || alerttypes.indexOf("Red-Inspect") >= 0) {
showIncludeunCompleted(true);
}
}
else
showIncludeunCompleted(true);
});
});
}
function GetAssetGroups() {
alertrequest('GetAssetGroups', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
$('#div_assetgroup').css('width', 110).dropdown(data, {
search: true,
multiselect: true,
textKey: 'Value',
valueKey: 'Key'
});
});
}
function GetJobsites() {
alertrequest('GetJobsites', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
$('#div_jobsites').css('width', 110).dropdown(data, {
search: true,
multiselect: true,
textKey: 'Value',
valueKey: 'Key'
});
});
}
function GetCategory() {
alertrequest('GetAlertCategory', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
$('#div_categorys').css('width', 110).dropdown(data, {
search: true,
multiselect: true,
textKey: 'Value',
valueKey: 'Value'
});
});
}
function GetAlertStatus() {
var data = [
{ 'Key': "Unassigned", 'Value': "Show Unassigned" },
{ 'Key': "Assigned", 'Value': "Show Assigned" },
{ 'Key': "Completed", 'Value': "Show Completed" },
{ 'Key': "Uncompleted", 'Value': "Show Uncompleted" }
];
$('#div_alertstatus').css('width', 110).dropdown(data, {
search: true,
multiselect: true,
textKey: 'Value',
valueKey: 'Key'
});
}
function onEditText(it, next) {
showmaskbg(true);
$('#dialog_edittext').data('item', it).data('next', next)
.css({
'top': (document.documentElement.clientHeight - $('#dialog_edittext').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_edittext').width()) / 2
}).showDialogfixed();
$('#dialog_text').val(it.Comment).focus();
}
function SaveText() {
var text = $('#dialog_text').val();
var item = $('#dialog_edittext').data('item');
var next = $('#dialog_edittext').data('next');
item.Comment = text;
if (next)
next();
$('#dialog_edittext').hideDialog();
showmaskbg(false);
var ids = [item.AlertID];
if (item.RepeatedAlerts) {
ids = ids.concat(item.RepeatedAlerts);
}
alertrequest('UpdateAlertComment', encodeURIComponent(JSON.stringify([ids.join(','), item.Comment])), function (data) {
if (data !== 'OK') {
showAlert(data, GetTextByKey('P_AM_EDITCOMMENT', 'Edit Comment'));
return;
}
});
}
var alertview_dt;
function InitGridData() {
alertview_dt = createGridView('#alertviewlist');
var list_columns = [
{ name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, css: { 'width': 45, 'text-align': 'center' } },
{ name: 'WorkOrderNumber', caption: GetTextByKey("P_WO_WORKORDERNUMBER", "Work Order Number"), valueIndex: 'WorkOrderNumber', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'WorkOrderStatus', caption: GetTextByKey("P_AM_WORKORDERSTATUS", "Work Order Status"), valueIndex: 'WorkOrderStatus', allowFilter: true, css: { 'width': 140, 'text-align': 'left' } },
{ name: 'MachineName', caption: GetTextByKey("P_AM_ASSETNAME", "Asset Name"), valueIndex: 'MachineName', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
{ name: 'Make', caption: GetTextByKey("P_AM_MAKE", "Make"), valueIndex: 'Make', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Model', caption: GetTextByKey("P_AM_MODEL", "Model"), valueIndex: 'Model', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'VIN', caption: GetTextByKey("P_AM_VIN", "SN/VIN"), valueIndex: 'VIN', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
{ name: 'CurrentHours', caption: GetTextByKey("P_AM_CURRENTHOURS", "Current Hours"), valueIndex: 'CurrentHours', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'EngineHours', caption: GetTextByKey("P_AM_HOURS", "Hours"), valueIndex: 'EngineHours', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'AlertType', caption: GetTextByKey("P_AM_ALERTTYPE", "Alert Type"), valueIndex: 'AlertType', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Description', caption: GetTextByKey("P_AM_DESCRIPTION", "Description"), valueIndex: 'Description', css: { 'width': 240, 'text-align': 'left' } },
{ name: 'AlertCount', caption: GetTextByKey("P_AM_ALERTCOUNT", "Alert Count"), valueIndex: 'AlertCount', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'AlertLocalTime', caption: GetTextByKey("P_AM_LATESTALERTDATETIME", "Latest Alert DateTime"), valueIndex: 'AlertLocalTime', css: { 'width': 150, 'text-align': 'left' } },
{ name: 'OpenWorkOrderCount', caption: GetTextByKey("P_AM_OPENWORKORDERS", "Open Work Orders"), allowFilter: true, valueIndex: 'OpenWorkOrderCount', css: { 'width': 130, 'text-align': 'left' } },
{ name: 'Comment', caption: GetTextByKey("P_AM_COMMENT", "Comment"), valueIndex: 'Comment', css: { 'width': 240, 'text-align': 'left' } },
];
var columns = [];
// head
for (var hd in list_columns) {
var col = {};
col.name = list_columns[hd].name;
col.caption = list_columns[hd].caption;
col.visible = true;
col.sortable = true;
col.width = list_columns[hd].css.width;
col.align = list_columns[hd].css["text-align"]
col.key = list_columns[hd].valueIndex;
col.allowFilter = list_columns[hd].allowFilter;
if (list_columns[hd].type) {
col.type = list_columns[hd].type;
}
columns.push(col);
if (col.name === "Selected") {
col.enabled = "Enabled";
col.sortable = false;
col.events = {
onchange: function () {
if (this.Selected) {
if (alertview_dt.SelectedCount == undefined || alertview_dt.SelectedCount == null)
alertview_dt.SelectedCount = 0;
alertview_dt.SelectedCount++;
for (var i in allalertdata) {
var a = allalertdata[i];
if (a.MachineID !== this.MachineID)
a.Enabled = false;
}
alertview_dt.refresh();
}
else {
alertview_dt.SelectedCount--;
if (alertview_dt.SelectedCount == 0) {
for (var i in allalertdata) {
var a = allalertdata[i];
a.Enabled = true;
}
alertview_dt.refresh();
}
}
}
};
col.styleFilter = function (item) {
return {
display: (item.WorkOrderID > 0 || item.Completed) ? 'none' : ''
};
}
}
else if (col.name === 'Comment') {
col.type = NoteColumn;
col.onClicked = function (item, element) {
onEditText(item, function () {
element.querySelector('.cell-flex-memo').innerHTML = window['lib-utility'].escapeHtml(item.Comment);
});
};
}
}
alertview_dt.isEditable = true;
alertview_dt.multiSelect = false;
alertview_dt.columns = columns;
alertview_dt.init();
alertview_dt.onSelectedRowChanged = function (rowindex) {
var rowdata = alertview_dt.source[rowindex];
if (rowdata) {
workOrderID = rowdata.workOrderID;
}
}
}
function showAcknowledgedAlerts(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
for (var j in r) {
if (j === "AlertLocalTime") {
r[j] = { DisplayValue: r["AlertLocalTimeStr"], Value: r[j] };
}
if (j === "AcknowledgedTime_Local") {
r[j] = { DisplayValue: r["AcknowledgedTime_LocalStr"], Value: r[j] };
}
if (j === "AlertType") {
r[j] = { DisplayValue: ($.trim(r[j]) == "" ? GetTextByKey("P_AM_BLANK", '(Blank)') : r[j]), Value: $.trim(r[j]) };
}
}
rows.push(r);
}
acknowledgedalerts_dt.SelectedCount = 0;
acknowledgedalerts_dt.setData(rows);
}
var acknowledgedalerts_dt;
function InitAcknowledgedAlertsGridData() {
acknowledgedalerts_dt = createGridView('#acknowledgedalertslist');
var list_columns = [
{ name: 'AcknowledgedByName', caption: GetTextByKey("P_AM_ACKNOWLEDGEDBY", "Acknowledged By"), valueIndex: 'AcknowledgedByName', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'AcknowledgedTime_Local', caption: GetTextByKey("P_AM_ACKNOWLEDGEDDATETIME", "Acknowledged DateTime"), valueIndex: 'AcknowledgedTime_Local', css: { 'width': 150, 'text-align': 'left' } },
{ name: 'MachineName', caption: GetTextByKey("P_AM_ASSETNAME", "Asset Name"), valueIndex: 'MachineName', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
{ name: 'Make', caption: GetTextByKey("P_AM_MAKE", "Make"), valueIndex: 'Make', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Model', caption: GetTextByKey("P_AM_MODEL", "Model"), valueIndex: 'Model', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'VIN', caption: GetTextByKey("P_AM_VIN", "SN/VIN"), valueIndex: 'VIN', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
{ name: 'EngineHours', caption: GetTextByKey("P_AM_HOURS", "Hours"), valueIndex: 'EngineHours', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'AlertType', caption: GetTextByKey("P_AM_ALERTTYPE", "Alert Type"), valueIndex: 'AlertType', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Description', caption: GetTextByKey("P_AM_DESCRIPTION", "Description"), valueIndex: 'Description', css: { 'width': 240, 'text-align': 'left' } },
{ name: 'AlertCount', caption: GetTextByKey("P_AM_ALERTCOUNT", "Alert Count"), valueIndex: 'AlertCount', allowFilter: true, css: { 'width': 80, 'text-align': 'left' } },
{ name: 'AlertLocalTime', caption: GetTextByKey("P_AM_LATESTALERTDATETIME", "Latest Alert DateTime"), valueIndex: 'AlertLocalTime', css: { 'width': 150, 'text-align': 'left' } },
{ name: 'OpenWorkOrderCount', caption: GetTextByKey("P_AM_OPENWORKORDERS", "Open Work Orders"), valueIndex: 'OpenWorkOrderCount', allowFilter: true, css: { 'width': 130, 'text-align': 'left' } },
{ name: 'AcknowledgedComment', caption: GetTextByKey("P_AM_ACKNOWLEDGEDCOMMENT", "Acknowledged Comment"), valueIndex: 'AcknowledgedComment', css: { 'width': 200, 'text-align': 'left' } },
{ name: 'Comment', caption: GetTextByKey("P_AM_COMMENT", "Comment"), valueIndex: 'Comment', css: { 'width': 200, 'text-align': 'left' } },
];
var columns = [];
// head
for (var hd in list_columns) {
var col = {};
col.name = list_columns[hd].name;
col.caption = list_columns[hd].caption;
col.visible = true;
col.sortable = true;
col.width = list_columns[hd].css.width;
col.align = list_columns[hd].css["text-align"]
col.key = list_columns[hd].valueIndex;
col.allowFilter = list_columns[hd].allowFilter;
if (list_columns[hd].type) {
col.type = list_columns[hd].type;
}
//if (col.name === "AcknowledgedComment") {
// col.visible = isacknowledgingalerts;
//}
if (col.name === 'Comment') {
col.type = NoteColumn;
col.enabled = false;
}
columns.push(col);
}
acknowledgedalerts_dt.multiSelect = false;
acknowledgedalerts_dt.columns = columns;
acknowledgedalerts_dt.init();
}
function switchPage(index) {
tabIndex = index;
if (index === 0) {
showIncludeunCompleted(true);
isalertview = true;
$('#alertviewlist').show();
$('#machineviewlist').hide();
$('#acknowledgedalertslist').hide();
$(".tabheaderselected").addClass("tabheader");
$(".tabheaderselected").removeClass("tabheaderselected");
$("#tabAlertView").removeClass("tabheader").addClass("tabheaderselected");
$('#search_alertstatus').show();
$('#div_function').show();
$('#btnExpandAll').hide();
$(window).resize();
if (!$('#alertviewlist').data("dataloaded"))
GetAlerts();
} else if (index === 1) {
showIncludeunCompleted(true);
isalertview = false;
$('#alertviewlist').hide();
$('#machineviewlist').show();
$('#acknowledgedalertslist').hide();
$('#search_alertstatus').show();
$('#div_function').show();
$('#btnExpandAll').show();
$(".tabheaderselected").addClass("tabheader");
$(".tabheaderselected").removeClass("tabheaderselected");
$("#tabAssetView").removeClass("tabheader").addClass("tabheaderselected");
$('.content_main').css('min-height', $(window).height() - $('.content_main').offset().top - 4);
$('#listDiv').css('min-height', $(window).height() - $('#listDiv').offset().top - 4);
if (!$('#machineviewlist').data("dataloaded"))
GetAlerts();
}
else if (index === 2) {
showIncludeunCompleted(false);
$('#alertviewlist').hide();
$('#machineviewlist').hide();
$('#acknowledgedalertslist').show();
$(".tabheaderselected").addClass("tabheader");
$(".tabheaderselected").removeClass("tabheaderselected");
$("#tabAcknowledgedAlertsView").removeClass("tabheader").addClass("tabheaderselected");
$('#search_alertstatus').hide();
$('#div_function').hide();
$(window).resize();
if (!$('#acknowledgedalertslist').data("dataloaded"))
GetAlerts();
}
}
$(function () {
setPageTitle(GetTextByKey("P_ALERTSMANAGEMENT", "Alerts Management"), true);
setTableSort("tbalertlist", sortTable);
GetAlertsLisence();
GetAlerts();
GetAlertTypes();
GetAssetGroups();
GetAlertStatus();
GetJobsites();
GetCategory();
InitGridData();
InitAcknowledgedAlertsGridData();
switchPage(tabIndex);
$('#dialog_workorder').prop('iframe', true).dialog(function () {
showmaskbg(false);
});
$('#dialog_workorder').dialog(function () {
showmaskbg(false);
});
$('#dialog_acknowledgingalerts').dialog(function () {
showmaskbg(false);
});
$('#dialog_edittext').dialog(function () {
showmaskbg(false);
});
$('#searchinputtxt').keydown(enterKeydown);
$('#chk_all_ackalert').change(function (e) {
var checked = $(this).prop('checked');
$('#tbody_alerts').find("input:checkbox[name='acknowledge']").each(function () {
if (!$(this).prop('disabled')) {
$(this).prop('checked', checked);
var ev = $(this).parents('tr');
ev.data('ackchanged', true).data('ackchecked', checked);
}
});
});
$("#listDiv").scroll(null, function (e) {
var t = $(e.target);
$('#tbalertlist').css('margin-left', -(t.scrollLeft()));
});
$(window).resize(function () {
$("#alertviewlist").css("height", $(window).height() - $("#alertviewlist").offset().top - 4);
alertview_dt && alertview_dt.resize();
$("#acknowledgedalertslist").css("height", $(window).height() - $("#acknowledgedalertslist").offset().top - 4);
acknowledgedalerts_dt && acknowledgedalerts_dt.resize();
//$("#div_autoacknowledgelist").css("height", $(window).height() - $("#div_autoacknowledgelist").offset().top - 4);
//autoacknowledge_dt && autoacknowledge_dt.resize();
//$("#machineviewlist").css("height", $(window).height() - $("#alertviewlist").offset().top - 4);
$('#listDiv').css('height', $(window).height() - $('#alertviewlist').offset().top - 40);
}).resize();
if (!canExport) {
$('#spExport').hide();
}
});
function enterKeydown(e) {
if (e.keyCode == 13) {
OnSearchClick();
}
}
function OnSearchClick() {
$('#alertviewlist').data("dataloaded", false);
$('#machineviewlist').data("dataloaded", false);
$('#acknowledgedalertslist').data("dataloaded", false);
GetAlerts();
}
function changeasset(aid) {
assetid = aid;
GetAlerts();
}
function OnExit() {
window.parent.CloseAlertsManagementDialog();
}
function showIncludeunCompleted(show) {
if (show)
$('#div_includeuncompleted').show();
else
$('#div_includeuncompleted').hide();
}
function openOpenAutoAcknowled() {
$('#iframealertautomation').attr('src', 'AlertAutomationManagement.aspx');
ShowAlertAutomationDialog();
}
function CloseAlertAutomationDialog() {
$('#dialog_alertautomation').hideDialog();
showmaskbg(false);
}
function ShowAlertAutomationDialog(type) {
showmaskbg(true);
$('#dialog_alertautomation')
.attr('act', type)
.showDialogRight();
}
function OnViewAutoAcknowledChangeHistory() {
window.open("AutoAcknowledChangeHistory.aspx");
}
function OnExport() {
var begindate = $('#txtbegindate').val();
var enddate = $('#txtenddate').val();
if (begindate && !$('#txtbegindate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_BEGINDATEISINVALID', "The begin date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (enddate && !$('#txtenddate').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_ENDDATEISINVALID', "The end date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (begindate && enddate && begindate > enddate) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
var searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
var alerttypes = $('#div_alerttype').dropdownVals();
var assetgroups = $('#div_assetgroup').dropdownVals();
var alertstatus = $('#div_alertstatus').dropdownVals();
var jobsites = $('#div_jobsites').dropdownVals();
var category = $('#div_categorys').dropdownVals();
var item = {
AssetID: assetid == "" ? -1 : eval(assetid),
SearchText: searchtxt,
AlertStatus: alertstatus,
AssetGroups: assetgroups,
AlertTypes: alerttypes,
JobSites: jobsites,
Category: category,
BeginDate: begindate,
EndDate: enddate,
IncludeunCompleted: $('#chk_includeuncompleted').prop("checked"),
}
var param = JSON.stringify(item);
window.open("../ExportToFile.aspx?type=alerts&tab=" + tabIndex + "&param=" + param);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="recordcontent" style="padding: 0px; margin: 0px;">
<div class="page_title">
<span data-lgid="P_ALERTSMANAGEMENT">Alerts Management</span>
<span class="exit" onclick="OnExit();" style="<%=InDialog?"": "display:none;"%>; float: right; font-size: 14px; margin-right: 10px; cursor: pointer;">
<label data-lgid="P_WO_EXIT" style="padding-left: 2px;">Exit</label>
</span>
<span id="spExport" class="export" style="float: right; font-size: 14px; margin-right: 10px; cursor: pointer;" onclick="OnExport();">
<label data-lgid="P_AM_EXPORT" style="padding-left: 2px;">Export</label>
</span>
<span class="autoacknowledge" style="<%=InDialog?"display:none;": ""%>; float: right; font-size: 14px; margin-right: 15px; cursor: pointer;" onclick="openOpenAutoAcknowled();">
<label data-lgid="P_AM_ALERTAUTOMATION">Alert Automation</label></span>
</div>
<div class="setting" style="float: right;"></div>
<table style="border-collapse: collapse; border-spacing: 0; width: 100%; line-height: 20px; margin-top: 3px;">
<tr style="height: 24px;">
<td style="border-bottom: 1px solid #bbb; width: 10px;">&nbsp;</td>
<td class="tabheaderselected" id="tabAlertView" onclick="switchPage(0)" style="width: 106px;" data-lgid="P_AM_ALERTVIEW">Alert View</td>
<td class="tabheader notfirsttab" id="tabAssetView" onclick="switchPage(1)" style="width: 90px;" data-lgid="P_AM_ASSETVIEW">Asset View</td>
<td class="tabheader notfirsttab" id="tabAcknowledgedAlertsView" onclick="switchPage(2)" style="width: 120px;" data-lgid="P_AM_ACKNOWLEDGEDALERTS">Acknowledged Alerts</td>
<td style="border-bottom: 1px solid #bbb;">&nbsp;</td>
</tr>
</table>
<div class="search_bar" style="margin-top: 10px; margin-bottom: 0px; min-width: 1400px;">
<input type="password" autocomplete="new-password" style="display: none" />
<span data-lgid="P_AM_BEGINDATE_COLON">Begin Date:</span>
<div>
<input id="txtbegindate" type="date" class="type-date" required min="1900-01-01" style="margin-left: 5px; width: 90px;" value="<%=BeginDate %>" />
</div>
<span data-lgid="P_AM_ENDDATE_COLON">End Date:</span>
<div>
<input id="txtenddate" type="date" class="type-date" required min="1900-01-01" style="margin-left: 5px; width: 90px;" value="<%=EndDate %>" />
</div>
<div style="<%=InDialog?"display:none;": ""%>; display: flex;">
<span data-lgid="P_AM_ALERTTYPE_COLON">Alert Type:</span>
<div id="div_alerttype"></div>
<span data-lgid="P_AM_ASSETGROUP_COLON">Asset Group:</span>
<div id="div_assetgroup"></div>
<div id="search_alertstatus" style="display: flex;">
<span data-lgid="P_AM_ALERSTATUS_COLON">Alert Status:</span>
<div id="div_alertstatus"></div>
</div>
<span data-lgid="P_AM_JOBSITES_COLON">Jobsites:</span>
<div id="div_jobsites"></div>
<span data-lgid="P_AM_CATEGORY_COLON">Category:</span>
<div id="div_categorys"></div>
<input style="margin-left: 5px; width: 140px;" type="text" id="searchinputtxt" autocomplete="off" />
</div>
<input class="search" type="button" style="margin-left: 8px;" onclick="OnSearchClick();" value="Search" data-lgid="P_AM_SEARCH" />
<%--<input id="chkShowCompleted" type="checkbox" onclick="GetAlerts();" /><span>Show Completed Alerts</span>--%>
</div>
<div class="search_bar" style="margin-top: 5px;">
<div id="div_includeuncompleted">
<input id="chk_includeuncompleted" type="checkbox" onclick="OnSearchClick();" />
<span data-lgid="P_AM_INCLUDEUNCOMPLETED">Display triggered/incomplete PM and red/yellow inspect alerts despite date selection</span>
</div>
</div>
<div class="function_title" id="div_function">
<span class="sbutton iconcheck" onclick="OnSaveAcknowledgeAlert();" data-lgid="P_AM_ACKNOWLEDGEALERTS">Acknowledge Alert(s)</span>
<span class="sbutton iconadd" id="btnassignworkorder" onclick="AssignedWorkOrder();" data-lgid="P_AM_CREATEWORKORDER">Create Work Order</span>
<span class="sbutton iconrefresh" onclick="GetAlerts();" data-lgid="P_AM_REFRESH">Refresh</span>
<span class="sbutton iconexpand" id="btnExpandAll" onclick="ExpandAll(this);" data-lgid="P_AM_EXPANDALL">Expand All</span>
</div>
<div class="clear"></div>
<div id="alertviewlist" style="min-width: 1300px;"></div>
<div id="machineviewlist" class="content_main" style="overflow-x: auto; display: none;">
<div style="overflow: hidden;">
<table id="tbalertlist" class="main_table" style="min-width: 1300px; width: 100%; table-layout: fixed;">
<thead>
<tr>
<th style="width: 12px;"></th>
<th style="width: 12px;"></th>
<th style="width: 150px;" sort="MachineName" data-lgid="P_AM_ASSETNAME">Asset Name</th>
<th style="width: 120px;" sort="Make" data-lgid="P_AM_MAKE">Make</th>
<th style="width: 120px;" sort="Model" data-lgid="P_AM_MODEL">Model</th>
<th style="width: 200px;" sort="VIN" data-lgid="P_AM_VIN">VIN/SN</th>
<th style="width: 150px;" sort="EngineHours" data-lgid="P_AM_ENGINEHOURS">Engine Hours</th>
<th style="width: 80px;" sort="DTCAlertCount" data-lgid="P_AM_DTCALERTS">DTC Alerts</th>
<th style="width: 80px;" sort="PMAlertCount" data-lgid="P_AM_PMALERTS">PM Alerts</th>
<th style="width: 80px;" sort="InspectAlertCount" data-lgid="P_AM_INSPECTALERTS">Inspect Alerts</th>
<th style="width: 120px;" sort="OpenWorkOrders" data-lgid="P_AM_OPENWORKORDERS">Open Work Orders</th>
<th style="width: 130px;" sort="LatestAlertDateTime" data-lgid="P_AM_LATESTALERTDATETIME">Latest Alert DateTime</th>
<th></th>
</tr>
</thead>
</table>
</div>
<div id="listDiv" class="content_div">
<table class="main_table" style="min-width: 1300px; width: 100%; table-layout: fixed;">
<tbody id="tbody_alerts">
</tbody>
</table>
</div>
</div>
<div id="acknowledgedalertslist" style="min-width: 1300px;"></div>
</div>
<div id="mask_bg" style="display: none;">
<div class="loading c-spin"></div>
</div>
<div class="dialog" id="dialog_workorder" style="display: none; height: 100%; border-bottom: 0; border-top: 0;">
<iframe id="iframeworkorder" style="width: 100%; height: 100%; display: block; border: none;"></iframe>
<div class="maskbg" style="display: none;"></div>
</div>
<div class="dialog" id="dialog_acknowledgingalerts" style="display: none; width: 500px;">
<div class="dialog-title"><span class="title" data-lgid="P_AM_ACKNOWLEDGEALERTS">Acknowledge Alert(s)</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<table>
<tr>
<td class="label" data-lgid="P_AM_COMMENT_COLON">Comment:</td>
<td>
<textarea id="dialog_acknowledgmentcomment" maxlength="1000" tabindex="1" style="width: 400px; height: 120px;"></textarea>
</td>
</tr>
</table>
</div>
<div class="dialog-func">
<input type="button" value="Cancel" data-lgid="P_AM_CANCEL" class="dialog-close" tabindex="3" />
<input type="button" onclick="SaveAcknowledgeAlert();" value="OK" data-lgid="P_AM_OK" tabindex="2" />
<div class="clear"></div>
</div>
</div>
<div class="dialog" id="dialog_alertautomation" style="display: none; height: 100%; border-bottom: 0; border-top: 0;">
<%--<div class="dialog-title"><span class="title">Add Work Order</span></div>--%>
<iframe id="iframealertautomation" style="width: 100%; height: 100%; display: block; border: none;"></iframe>
<div class="maskbg" style="display: none;"></div>
</div>
<div class="dialog" id="dialog_edittext" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_AM_EDITCOMMENT">Edit Comment</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<table style="line-height: 30px;">
<tr>
<td>
<textarea id="dialog_text" tabindex="1" style="width: 480px; height: 200px; margin-top: 6px;" maxlength="1000"></textarea></td>
</tr>
</table>
</div>
<div class="dialog-func">
<input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="3" />
<input type="button" onclick="SaveText();" value="Save" data-lgid="P_WO_SAVE" tabindex="2" />
<div class="clear"></div>
</div>
</div>
</asp:Content>