<%@ Page Title="" Language="C#" MasterPageFile="~/Maintenance/MaintenanceBase.master" AutoEventWireup="true" CodeFile="WorkOrderHistory.aspx.cs" Inherits="WorkOrderHistory" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> <link href="../css/jquery.datetimepicker.css" rel="stylesheet" /> <style type="text/css"> .no_wrap th { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .max160 { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dialog-content table { border-collapse: collapse; width: 100%; line-height: 32px; } .dialog-content table td.label { width: 130px; 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: 250px; height: 18px; padding: 1px; } #dialog_machines .dialog-content table td input { width: auto; } .dialog-content table td textarea { margin-top: 6px; } .dialog-content table td select { width: 254px; height: 24px; } .dialog-content table td input[type="checkbox"] { border: none; } .dialog-content table td textarea { height: 150px; width: 420px; max-width: 500px; } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } #dialog_machinegroup { z-index: 500; width: 870px; top: 60px; left: 150px; } .inputbox { width: 500px; padding: 1px; } .group_table .main_table { table-layout: fixed; } .group_table .main_table thead tr { display: block; } .group_table .main_table tbody { height: 280px; display: block; overflow-y: auto; } .group_table .main_table th { width: 165px; } .group_table .main_table td { width: 165px; white-space: nowrap; word-break: keep-all; } .group_table .main_table td div { width: 165px; overflow: hidden; white-space: nowrap; word-break: keep-all; text-overflow: ellipsis; } .td_controller { vertical-align: middle; padding: 40px 8px; /*border-left: 1px solid #b0b0b0; border-right: 1px solid #b0b0b0;*/ } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } #tbwoh { width: 100%; line-height: 30px; border-collapse: collapse; border-spacing: 0; } #tbwoh th { border: 1px solid #bababa; background-color: #d8dce1; text-align: left; border-right: 1px solid #bababa; font-weight: bold; position: relative; padding-left: 5px; } #tbwoh tr { border-bottom: 1px solid #cacaca; } #tbwoh td { border-right: 1px solid #cacaca; padding-left: 5px; } </style> <script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/editableselect.js")%>"></script> <script src="<%=GetFileUrlWithVersion("js/controls.js")%>" type="text/javascript"></script> <script type="text/javascript"> woquery = function (method, param, callback, error) { _network.request("Maintenance/WorkOrderHistory.aspx", -1, method, param, callback, error); } function CloseDialog(type) { $('#dialog_user').hideDialog(); OnRefresh(); } function OnRefresh() { var woid = $('#div_wonumber').dropdownVal(); if (!woid) { return; } showloading(true); var beginDate = $('#startdatetxt').val(); var endDate = $('#enddatetxt').val(); var searchtxt = ""; searchtxt = htmlencode($.trim($('#searchinputtxt').val())); woquery('GetWorkOrderHistorys', JSON.stringify([woid, beginDate, endDate, searchtxt]), function (data) { showloading(false); if (typeof (data) === "string") { showAlert(data, GetTextByKey('P_WORKORDER', "Work Order")); return; } showWorkOrderList(data); }, function (err) { showloading(false); }); } function showWorkOrderList(data) { var wohlist = $("#wohlist").empty(); //var logid = -1; var datetime = ""; var ftr = null; var count = 0; for (var i = 0; i < data.length; i++) { var r = data[i]; var type = ""; var status = ""; var category = ""; if (r.UpdateType == 0) type = GetTextByKey('P_WO_XXX', 'Manually'); else if (r.UpdateType == 1) type = GetTextByKey('P_WO_XXX', 'Automatically'); else if (r.UpdateType == 2) type = GetTextByKey('P_WO_XXX', 'System'); if (r.UpdateStatus == 0) status = GetTextByKey('P_WO_XXX', 'Created'); else if (r.UpdateStatus == 1 || r.UpdateStatus == 4 || r.UpdateStatus == 9999) status = GetTextByKey('P_WO_XXX', 'Modified'); else if (r.UpdateStatus == 2) status = GetTextByKey('P_WO_XXX', 'Closed'); else if (r.UpdateStatus == 3) status = GetTextByKey('P_WO_XXX', 'Re_Opened'); //else if (r.UpdateStatus == 4) // status = GetTextByKey('P_WO_XXX', 'Restored'); //else if (r.UpdateStatus == 9999) // status = GetTextByKey('P_WO_XXX', 'Deleted'); switch (r.Category) { case 0: category = GetTextByKey('P_WO_XXX', 'Work Order Status'); break; case 1: category = GetTextByKey('P_WO_XXX', 'Assigned To'); break; case 2: category = GetTextByKey('P_WO_XXX', 'Advisor'); break; case 3: category = GetTextByKey('P_WO_XXX', 'Work Order Type'); break; case 4: category = GetTextByKey('P_WO_XXX', 'Location'); break; case 5: category = GetTextByKey('P_WO_XXX', 'Department'); break; case 6: category = GetTextByKey('P_WO_XXX', 'Alternate Status'); break; case 7: category = GetTextByKey('P_WO_XXX', 'Description'); break; case 8: category = GetTextByKey('P_WO_XXX', 'Invoice Number'); break; case 9: category = GetTextByKey('P_WO_XXX', 'Internal ID'); break; case 10: category = GetTextByKey('P_WO_XXX', 'Complete Date'); break; case 11: category = GetTextByKey('P_WO_XXX', 'Next Follow Up Date'); break; case 12: category = GetTextByKey('P_WO_XXX', 'Due Date'); break; case 13: category = GetTextByKey('P_WO_XXX', 'Parts Expected Date'); break; case 14: category = GetTextByKey('P_WO_XXX', 'Last Labor Date'); break; case 15: category = GetTextByKey('P_WO_XXX', 'Total Cost'); break; case 16: category = GetTextByKey('P_WO_XXX', 'Expected Cost'); break; case 17: category = GetTextByKey('P_WO_XXX', 'Parts Cost'); break; case 18: category = GetTextByKey('P_WO_XXX', 'Travel Time Cost'); break; case 19: category = GetTextByKey('P_WO_XXX', 'Labor Cost'); break; case 20: category = GetTextByKey('P_WO_XXX', 'Other Cost'); break; case 21: category = GetTextByKey('P_WO_XXX', 'Estimate'); break; case 22: category = GetTextByKey('P_WO_XXX', 'Inspection'); break; case 23: category = GetTextByKey('P_WO_XXX', 'Invoice'); break; case 24: category = GetTextByKey('P_WO_XXX', 'Segment User'); break; case 25: category = GetTextByKey('P_WO_XXX', 'Segment Hours'); break; case 26: category = GetTextByKey('P_WO_XXX', 'Segment Jobsite'); break; case 27: category = GetTextByKey('P_WO_XXX', 'Segment Cost'); break; case 28: category = GetTextByKey('P_WO_XXX', 'Segment Component'); break; case 29: category = GetTextByKey('P_WO_XXX', 'Segment Completed'); break; case 30: category = GetTextByKey('P_WO_XXX', 'Segment Completed Date'); break; case 31: category = GetTextByKey('P_WO_XXX', 'Segment Description'); break; case 32: category = GetTextByKey('P_WO_XXX', 'Segment Notes'); break; case 33: category = GetTextByKey('P_WO_XXX', 'Segment'); break; case 34: category = GetTextByKey('P_WO_XXX', 'Alerts'); break; case 35: category = GetTextByKey('P_WO_XXX', 'Segment Type'); break; case 36: category = GetTextByKey('P_WO_XXX', 'Segment Billable'); break; case 37: category = GetTextByKey('P_WO_XXX', 'Component'); break; case 38: category = GetTextByKey('P_WO_XXX', 'Billable'); break; case 39: category = GetTextByKey('P_WO_XXX', 'Bill to job'); break; case 40: category = GetTextByKey('P_WO_XXX', 'Work Order Attachment'); break; case 41: category = GetTextByKey('P_WO_XXX', 'Estimate Attachment'); break; case 42: category = GetTextByKey('P_WO_XXX', 'Invoice Attachment'); break; case 43: category = GetTextByKey('P_WO_XXX', 'Company Name'); break; case 44: category = GetTextByKey('P_WO_XXX', 'Asset'); break; case 45: category = GetTextByKey('P_WO_XXX', 'Parts Order Number'); break; case 46: category = GetTextByKey('P_WO_XXX', 'Parts Status'); break; case 47: category = GetTextByKey('P_WO_XXX', 'Salesperson'); break; case 48: category = GetTextByKey('P_WO_XXX', 'Inspection Template'); break; case 97: category = GetTextByKey('P_WO_XXX', 'Deleted'); break; case 98: category = GetTextByKey('P_WO_XXX', 'Restored'); break; case 99: category = GetTextByKey('P_WO_XXX', 'WO Life Cycle'); break; default: category = GetTextByKey('P_WO_XXX', 'Other'); break; } var tr = $("<tr></tr>"); //if (logid != r.Id) { if (datetime !== r.DateTimeStr) { if (ftr && count > 1) ftr.children().eq(0).attr("rowspan", count); count = 0; ftr = tr; tr.append($("<td></td>").text(r.DateTimeStr)); } tr.append($("<td></td>").text(status)); tr.append($("<td></td>").text(type)); tr.append($("<td></td>").text(r.UpdateBy)); tr.append($("<td></td>").text(category)); tr.append($("<td></td>").text(r.Detail)); var td_del = $("<td></td>"); tr.append(td_del); if (r.UpdateStatus == 9999 && r.CanDeleteAndRestore) { var span_del = $('<a href="#" data-lgid="P_UM_XXXX">Restore</a>').data('wo', r).click(ManageDeleteAndRestore); td_del.append(span_del); } if (i % 2 == 1) tr.css("background-color", "#f1f4f8"); wohlist.append(tr); //logid = r.Id; datetime = r.DateTimeStr; count++; } if (ftr && count > 1) ftr.children().eq(0).attr("rowspan", count); } function ManageDeleteAndRestore() { var wo = $(this).data('wo'); if (!wo) return; var alerttitle = GetTextByKey('P_WORKORDER', "Work Order"); showConfirm(GetTextByKey("P_WO_XXX", 'Are you sure you want to restore this work order?'), alerttitle, function () { woquery("RestoreDeleteWorkOrder", wo.WorkOrderId, function (data) { if (data == "OK") OnRefresh(); }, function (err) { showAlert(GetTextByKey("P_WO_XXX", 'Failed to restore this work order.'), alerttitle); }); }); } function GetWorkOrderNumbers() { woquery('GetWorkOrderNumbers', '', function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_AM_ERROR", 'Error')); return; } $('#div_wonumber').dropdownSource(data); }); } $(function () { setPageTitle(GetTextByKey("P_WORKORDERHISTORY", "Work Order History"), true); $('#div_wonumber').dropdown([], { search: true, valueKey: 'Key', textKey: 'Value' }); GetWorkOrderNumbers(); OnRefresh(); $('#startdatetxt').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]); } }); $('#enddatetxt').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]); } }); $('#searchinputtxt').keydown(searchEnter); $(window).resize(function () { $("#divwoh").css("height", $(window).height() - $("#divwoh").offset().top - 4); //grid_dt && grid_dt.resize(); }).resize(); if (!canExport) { $('#spExport').hide(); } }); function searchEnter(e) { if (e.keyCode == 13 || e.keyCode == 9) { OnRefresh(); } } function OnExport() { var woid = $('#div_wonumber').dropdownVal(); if (!woid) { return; } var from = $('#startdatetxt').val(); var to = $('#enddatetxt').val(); var searchtxt = ""; window.open("../ExportToFile.aspx?type=wohis&t=" + searchtxt + "&from=" + from + "&to=" + to + "&woid=" + woid); } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <div style="min-width: 400px;"> <div class="page_title" data-lgid="P_XXX">Work Order History</div> <div class="search_bar"> <input type="password" autocomplete="new-password" style="display: none" /> <span data-lgid="P_XXX">Work Order Number:</span> <div class="dropdown" id="div_wonumber" style="width: 200px"></div> <span style="margin-left: 5px;" data-lgid="P_FR_BEGINDATE_COLON">Begin Date: </span> <div> <input id="startdatetxt" type="text" style="width: 80px; margin-left: 5px;" value="<%=BeginDate %>" autocomplete="off" /> </div> <span style="margin-left: 5px;" data-lgid="P_FR_ENDDATE_COLON">End Date: </span> <div> <input id="enddatetxt" type="text" style="width: 80px; margin-left: 5px;" value="<%=EndDate %>" autocomplete="off" /> </div> <div style="display: none;"> <input id="searchinputtxt" autocomplete="off" style="width: 100px; margin-left: 5px;" /> </div> <input class="search" type="button" onclick="OnRefresh();" style="margin-left: 10px;" value="Search" data-lgid="P_FR_SEARCH" /> </div> <div class="function_title"> <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_UM_REFRESH">Refresh</span> <span id="spExport" class="sbutton iconexport" onclick="OnExport();" data-lgid="P_MR_EXPORTTOEXCEL">Export to Excel</span> </div> <div class="clear"></div> <div id="divwoh" style="overflow: auto;"> <table id="tbwoh" style="min-width: 1250px; table-layout: fixed;"> <thead> <tr> <th style="width: 150px;" data-lgid="P_XXX">Date/Time Stamp</th> <th style="width: 80px;" data-lgid="P_XXX">Update</th> <th style="width: 120px;" data-lgid="P_XXX">Update Type</th> <th style="width: 200px;" data-lgid="P_XXX">By</th> <th style="width: 200px;" data-lgid="P_XXX">Category</th> <th style="width: 400px;" data-lgid="P_XXX">Detail</th> <th></th> </tr> </thead> <tbody id="wohlist" style="border: 1px solid #cacaca; overflow: hidden; text-overflow: ellipsis;"> </tbody> </table> </div> <div id="mask_bg" style="display: none;"> <div class="loading c-spin"></div> </div> </div> </asp:Content>