fleet-contractor/Site/Maintenance/AlertsManagement.aspx
2023-04-28 12:22:26 +08:00

1351 lines
62 KiB
Plaintext
Raw 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">
<link href="../css/jquery.datetimepicker.css" rel="stylesheet" />
<style type="text/css">
.selectinput {
width: 150px;
margin-right: 10px;
}
.dialog-content table {
border-collapse: collapse;
width: 100%;
}
.dialog-content table td.label {
width: 150px;
text-align: right;
padding-right: 10px;
line-height: 24px;
height: 24px;
vertical-align: top;
}
.dialog-content table td input,
.dialog-content table td textarea {
border: 1px solid #a9a9a9;
width: 400px;
height: 18px;
padding: 1px;
}
.dialog-content table td select {
width: 403px;
}
.dialog-content table td input[type="checkbox"] {
border: none;
}
#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;*/
}
.div_filter .dropdown {
width: 100px;
}
.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';
}
#div_autoacknowledgelist input[type="checkbox"] {
width: unset;
}
</style>
<script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>" type="text/javascript"></script>
<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 alerttypeparam;
var assetgroupparam;
var alertstatusparam;
var jobsitesparam;
var isalertview = true;
var isacknowledgingalerts = false;
var tabIndex = 0;
var assetid = "<%=AssetID %>";
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'));
});
}
function GetAlerts() {
showloading(true);
$('#chk_all_ackalert').prop('checked', false);
var searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
//var showCompleted = $('#chkShowCompleted').prop("checked") ? 1 : 0;
var beginDate = $('#txtbegindate').val();
var endDate = $('#txtenddate').val();
var alerttypes = [];
var assetgroups = [];
var alertstatus = [];
var jobsites = [];
if (alerttypeparam)
alerttypes = alerttypeparam.selectedvalue;
if (assetgroupparam)
assetgroups = assetgroupparam.selectedvalue;
if (alertstatusparam)
alertstatus = alertstatusparam.selectedvalue;
if (jobsitesparam)
jobsites = jobsitesparam.selectedvalue;
var item = {
AssetID: assetid == "" ? -1 : eval(assetid),
SearchText: searchtxt,
AlertStatus: alertstatus,
AssetGroups: assetgroups,
AlertTypes: alerttypes,
JobSites: jobsites,
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, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data && data.length > 0)
allalertdata = 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, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data && data.length > 0)
allmachinealertdata = 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, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
if (data && data.length > 0)
allAcknowledgedalertdata = data;
else
allAcknowledgedalertdata = [];
showAcknowledgedAlerts(allAcknowledgedalertdata);
}, function (err) {
showloading(false);
});
}
}
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_XXXXX", '(Blank)') : r[j]), Value: $.trim(r[j]) };
}
}
var fr = { Values: r };
rows.push(fr);
}
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;' data-lgid='P_AM_WORKORDERID'>Work Order ID</th>").appendTo(thr);
$("<th style='width: 110px;' data-lgid='P_AM_WORKORDERSTATUS'>Work Order Status</th>").appendTo(thr);
$("<th style='width: 120px;' data-lgid='P_AM_ALERTTYPE'>Alert Type</th>").appendTo(thr);
$("<th style='width: 300px;' data-lgid='P_AM_DESCRIPTION'>Description</th>").appendTo(thr);
$("<th style='width: 150px;' data-lgid='P_AM_ENGINEHOURS'>Engine Hours</th>").appendTo(thr);
$("<th style='width: 120px;' data-lgid='P_AM_ALERTDATETIME'>Alert DateTime</th>").appendTo(thr);
$("<th style='width: 70px;' data-lgid='P_AM_ALERTCOUNT'>Alert Count</th>").appendTo(thr);
$("<th style='white-space:nowrap;' data-lgid='P_AM_SERVICEDESCRIPTION'>Service Description</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.WorkOrderID > 0 ? alert.WorkOrderID : ""));
tr.append($('<td></td>').text(alert.WorkOrderStatus));
tr.append($('<td></td>').text($.trim(alert.AlertType) == "" ? GetTextByKey("P_XXXXX", '(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 ? "Yes" : "No"));
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();
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() {
alertrequest('GetAlertTypes', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
data.splice(0, 0, { Key: "", Value: GetTextByKey("P_XXXXX", '(Blank)') });
alerttypeparam = {
items: data,
selectedvalue: []
};
alerttypesdata = data;
var iptalertype = editmultiselect(alerttypeparam);
$('#div_alerttype').append(iptalertype);
iptalertype.change(function () {
showIncludeunCompleted(false);
if (alerttypeparam) {
var alerttypes = alerttypeparam.selectedvalue;
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;
}
assetgroupparam = {
items: data,
selectedvalue: []
};
var iptalertype = editmultiselect(assetgroupparam);
$('#div_assetgroup').append(iptalertype);
});
}
function GetJobsites() {
alertrequest('GetJobsites', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
jobsitesparam = {
items: data,
selectedvalue: []
};
var ipt = editmultiselect(jobsitesparam);
$('#div_jobsites').append(ipt);
});
}
function GetAlertStatus() {
var data = [
{ 'Key': "Unassigned", 'Value': "Show Unassigned" },
{ 'Key': "Assigned", 'Value': "Show Assigned" },
{ 'Key': "Completed", 'Value': "Show Completed" },
{ 'Key': "Uncompleted", 'Value': "Show Uncompleted" }
];
alertstatusparam = {
items: data,
selectedvalue: []
};
var iptalertype = editmultiselect(alertstatusparam);
$('#div_alertstatus').append(iptalertype);
}
var alertview_dt;
function InitGridData() {
alertview_dt = new GridView('#alertviewlist');
alertview_dt.lang = {
all: GetTextByKey("P_GRID_ALL", "(All)"),
ok: GetTextByKey("P_GRID_OK", "OK"),
reset: GetTextByKey("P_GRID_RESET", "Reset")
};
var list_columns = [
{ name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, css: { 'width': 30, 'text-align': 'center' } },
{ name: 'WorkOrderID', caption: GetTextByKey("P_AM_WORKORDERID", "Work Order ID"), valueIndex: 'WorkOrderID', 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', 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', css: { 'width': 180, 'text-align': 'left' } },
{ name: 'CurrentHours', caption: GetTextByKey("P_AM_CURRENTHOURS", "Current Hours"), valueIndex: 'CurrentHours', css: { 'width': 120, 'text-align': 'left' } },
{ name: 'EngineHours', caption: GetTextByKey("P_AM_HOURS", "Hours"), valueIndex: 'EngineHours', 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', 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', css: { 'width': 130, '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.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.reload();
}
else {
alertview_dt.SelectedCount--;
if (alertview_dt.SelectedCount == 0) {
for (var i in allalertdata) {
var a = allalertdata[i];
a.Enabled = true;
}
alertview_dt.reload();
}
}
}
};
}
if (col.name === "Selected") {
col.styleFilter = function (item) {
return {
display: (item.WorkOrderID > 0 || item.Completed) ? 'none' : ''
};
}
}
}
alertview_dt.canMultiSelect = false;
alertview_dt.columns = columns;
alertview_dt.init();
//alertview_dt.rowdblclick = OnEdit;
alertview_dt.selectedrowchanged = function (rowindex) {
var rowdata = alertview_dt.source[rowindex];
if (rowdata) {
workOrderID = rowdata.Values.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_XXXXX", '(Blank)') : r[j]), Value: $.trim(r[j]) };
}
}
var fr = { Values: r };
rows.push(fr);
}
acknowledgedalerts_dt.SelectedCount = 0;
acknowledgedalerts_dt.setData(rows);
}
var acknowledgedalerts_dt;
function InitAcknowledgedAlertsGridData() {
acknowledgedalerts_dt = new GridView('#acknowledgedalertslist');
acknowledgedalerts_dt.lang = {
all: GetTextByKey("P_GRID_ALL", "(All)"),
ok: GetTextByKey("P_GRID_OK", "OK"),
reset: GetTextByKey("P_GRID_RESET", "Reset")
};
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', 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', css: { 'width': 180, 'text-align': 'left' } },
{ name: 'EngineHours', caption: GetTextByKey("P_AM_HOURS", "Hours"), valueIndex: 'EngineHours', 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', 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', css: { 'width': 130, 'text-align': 'left' } },
{ name: 'AcknowledgedComment', caption: GetTextByKey("P_AM_ACKNOWLEDGEDCOMMENT", "Acknowledged Comment"), valueIndex: 'AcknowledgedComment', 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;
//}
columns.push(col);
}
acknowledgedalerts_dt.canMultiSelect = false;
acknowledgedalerts_dt.columns = columns;
acknowledgedalerts_dt.init();
//acknowledgedalerts_dt.rowdblclick = OnEdit;
acknowledgedalerts_dt.selectedrowchanged = function (rowindex) {
var rowdata = acknowledgedalerts_dt.source[rowindex];
if (rowdata) {
}
}
}
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();
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);
});
$('#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);
}
});
});
$('#dialog_duedate').datetimepicker({
timepicker: false,
format: 'm/d/Y',
enterLikeTab: false,
onSelectDate: function (v, inp) {
var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
inp.parent().data('val', [date]);
}
});
$('#dialog_completeddate').datetimepicker({
timepicker: false,
format: 'm/d/Y',
enterLikeTab: false,
onSelectDate: function (v, inp) {
var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
inp.parent().data('val', [date]);
}
});
$("#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();
$("#txtbegindate").datetimepicker({
timepicker: false,
format: 'm/d/Y'
});
$("#txtenddate").datetimepicker({
timepicker: false,
format: 'm/d/Y'
});
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 searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
var beginDate = $('#txtbegindate').val();
var endDate = $('#txtenddate').val();
var alerttypes = [];
var assetgroups = [];
var alertstatus = [];
var jobsites = [];
if (alerttypeparam)
alerttypes = alerttypeparam.selectedvalue;
if (assetgroupparam)
assetgroups = assetgroupparam.selectedvalue;
if (alertstatusparam)
alertstatus = alertstatusparam.selectedvalue;
if (jobsitesparam)
jobsites = jobsitesparam.selectedvalue;
var item = {
AssetID: assetid == "" ? -1 : eval(assetid),
SearchText: searchtxt,
AlertStatus: alertstatus,
AssetGroups: assetgroups,
AlertTypes: alerttypes,
JobSites: jobsites,
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 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: 1320px;">
<input type="password" autocomplete="new-password" style="display: none" />
<span data-lgid="P_AM_BEGINDATE_COLON">Begin Date:</span>
<div>
<input type="text" style="margin-left: 5px; width: 70px;" id="txtbegindate" value="<%=BeginDate %>" />
</div>
<span data-lgid="P_AM_ENDDATE_COLON">End Date:</span>
<div>
<input type="text" style="margin-left: 5px; width: 70px;" id="txtenddate" 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>
<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>
<span class="sbutton iconexit" onclick="OnExit();" style="<%=InDialog?"": "display:none;"%>" data-lgid="P_WO_EXIT">Exit</span>
</div>
<div class="clear"></div>
<div id="alertviewlist" style="min-width: 1280px;"></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: 1280px; 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: 1280px; width: 100%; table-layout: fixed;">
<tbody id="tbody_alerts">
</tbody>
</table>
</div>
</div>
<div id="acknowledgedalertslist" style="min-width: 1280px;"></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" class="inputbox" 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>
</asp:Content>