848 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			848 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| <%@ Page Title="" Language="C#" MasterPageFile="~/JobSite/JobSiteMasterPage.master" AutoEventWireup="true" CodeFile="JobSiteRequirements.aspx.cs" Inherits="JobSiteRequirements" %>
 | |
| 
 | |
| <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
 | |
|     <link href="../css/jquery.datetimepicker.css" rel="stylesheet" />
 | |
|     <style type="text/css">
 | |
|         .itemselcted {
 | |
|             background-color: #ccc;
 | |
|         }
 | |
| 
 | |
|         .itemhidden {
 | |
|             display: none;
 | |
|         }
 | |
| 
 | |
|         .itemsuggested {
 | |
|             background-color: #ffff99;
 | |
|         }
 | |
| 
 | |
|         #tbMachineTypes tbody tr:hover {
 | |
|             cursor: default;
 | |
|             background: #ddd;
 | |
|         }
 | |
| 
 | |
|         #tbodyAssigned tr:hover {
 | |
|             cursor: default;
 | |
|             background: #ddd;
 | |
|         }
 | |
| 
 | |
|         #tbodyUnassigned tr:hover {
 | |
|             cursor: default;
 | |
|             background: #ddd;
 | |
|         }
 | |
| 
 | |
|         #tbodySelected tr:hover {
 | |
|             cursor: default;
 | |
|             background: #ddd;
 | |
|         }
 | |
| 
 | |
|         #contentctrl {
 | |
|             position: absolute;
 | |
|             top: 0;
 | |
|             bottom: 0;
 | |
|             left: 0;
 | |
|             right: 0;
 | |
|         }
 | |
| 
 | |
|         .float_left {
 | |
|             float: left;
 | |
|         }
 | |
| 
 | |
|         .function_bar {
 | |
|             float: right;
 | |
|         }
 | |
| 
 | |
|         .user_main {
 | |
|             padding: 0 4px;
 | |
|         }
 | |
| 
 | |
|         .dialog .dialog-title .dialog-close {
 | |
|             float: right;
 | |
|             margin-right: 6px;
 | |
|             cursor: pointer;
 | |
|         }
 | |
| 
 | |
|             .dialog .dialog-title .dialog-close:before {
 | |
|                 content: '\e600';
 | |
|             }
 | |
| 
 | |
|         .dialog-content table {
 | |
|             border-collapse: collapse;
 | |
|             width: 100%;
 | |
|         }
 | |
| 
 | |
|             .dialog-content table td.label {
 | |
|                 width: 170px;
 | |
|                 text-align: right;
 | |
|                 padding-right: 10px;
 | |
|                 line-height: 28px;
 | |
|                 height: 24px;
 | |
|                 vertical-align: top;
 | |
|             }
 | |
| 
 | |
| 
 | |
|         #dialog_machines .dialog-content table td input,
 | |
|         #dialog_layouts .dialog-content table td input {
 | |
|             width: auto;
 | |
|         }
 | |
| 
 | |
|         .dialog-content table td input[type="checkbox"] {
 | |
|             border: none;
 | |
|         }
 | |
| 
 | |
|         .dialog .dialog-func input {
 | |
|             width: unset;
 | |
|         }
 | |
| 
 | |
|         #dialog_user_randompass {
 | |
|             width: auto;
 | |
|             height: 16px;
 | |
|             margin: 3px 4px 0 4px;
 | |
|         }
 | |
| 
 | |
|         .icon {
 | |
|             font-family: CalciteWebCoreIcons;
 | |
|             cursor: default;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         .ybutton {
 | |
|             width: 80px;
 | |
|             line-height: normal;
 | |
|             margin-left: 6px;
 | |
|             border: none;
 | |
|             background: rgb(249, 189, 117);
 | |
|             padding: 5px 14px;
 | |
|             cursor: pointer;
 | |
|         }
 | |
| 
 | |
|             .ybutton:hover {
 | |
|                 background: #d7690E;
 | |
|             }
 | |
| 
 | |
|         .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;
 | |
|         }
 | |
| 
 | |
|         .subdialog {
 | |
|             width: -moz-calc(100% - 24px);
 | |
|             width: -webkit-calc(100% - 24px);
 | |
|             width: calc(100% - 24px);
 | |
|         }
 | |
| 
 | |
|         .machine_maskbg {
 | |
|             top: 0;
 | |
|             left: 0;
 | |
|             width: 100%;
 | |
|             height: 100%;
 | |
|             position: absolute;
 | |
|             background: #000;
 | |
|             opacity: 0.2;
 | |
|         }
 | |
| 
 | |
|         #machine-name {
 | |
|             margin: 10px 10px 6px;
 | |
|             /*color: gray;*/
 | |
|             font-weight: lighter;
 | |
|             font-size: 18px;
 | |
|             width: 770px;
 | |
|             overflow: hidden;
 | |
|             text-overflow: ellipsis;
 | |
|             white-space: nowrap;
 | |
|         }
 | |
| 
 | |
|         .div_filter .dropdown {
 | |
|             width: 120px;
 | |
|         }
 | |
| 
 | |
|         .requireinfo {
 | |
|             line-height: 30px;
 | |
|             margin-left: 10px;
 | |
|         }
 | |
| 
 | |
|         .requireinfospan {
 | |
|             font-weight: 500;
 | |
|             margin-left: 20px;
 | |
|         }
 | |
| 
 | |
|         .quantity {
 | |
|             padding: 3px 0 3px 10px;
 | |
|             margin-top: 5px;
 | |
|             margin-bottom: 5px;
 | |
|             /*color: gray;*/
 | |
|             font-weight: 500;
 | |
|             font-size: 16px;
 | |
|             /*width: 770px;*/
 | |
|             overflow: hidden;
 | |
|             text-overflow: ellipsis;
 | |
|             white-space: nowrap;
 | |
|             background-color: #f0f0f0;
 | |
|         }
 | |
| 
 | |
|         .span-caption {
 | |
|             position: absolute;
 | |
|         }
 | |
| 
 | |
|         .span-bar {
 | |
|             position: absolute;
 | |
|             height: 100%;
 | |
|             margin: 0;
 | |
|             vertical-align: bottom;
 | |
|         }
 | |
|     </style>
 | |
|     <link href="<%=GetFileUrlWithVersion("../css/spectrum.css")%>" rel="stylesheet" type="text/css" />
 | |
|     <script src="../js/spectrum.js?v=1" type="text/javascript"></script>
 | |
|     <script src="../js/jquery.datetimepicker.full.js"></script>
 | |
|     <script src="<%=GetFileUrlWithVersion("../js/editableselect.js")%>"></script>
 | |
|     <script src="<%=GetFileUrlWithVersion("../js/editmultiselect.js")%>" type="text/javascript"></script>
 | |
|     <script src="<%=GetFileUrlWithVersion("js/jobsiterequirement.js")%>" type="text/javascript"></script>
 | |
|     <script src="<%=GetFileUrlWithVersion("js/dispatchassign.js")%>" type="text/javascript"></script>
 | |
|     <script src="<%=GetFileUrlWithVersion("js/email.js")%>" type="text/javascript"></script>
 | |
| 
 | |
|     <script>
 | |
|         jobsitequery = function (method, param, callback, error, nolog) {
 | |
|             _network.request("JobSite/JobSiteRequirements.aspx?tp=ashx", -1, method, param, callback, error, nolog);
 | |
|         }
 | |
| 
 | |
|         var jobsiteparam;
 | |
|         var regionparam;
 | |
|         var addrequirement = false;
 | |
|         var IsReadOnly = <%=IsReadOnly ?"true":"false"%>;
 | |
|         var IsRequestOnly = <%=IsRequestOnly ?"true":"false"%>;
 | |
|         var allroadassets;
 | |
|         var _sendType = 2;
 | |
|         var _seltype;//0.print;1.email
 | |
|         var _selectdispatchids;
 | |
|         var currentdate = "<%=CurrentDate %>";
 | |
| 
 | |
|         /***************************Jobsites***************************/        
 | |
| 
 | |
|         _dialog.showRequirementConfirm = function (msg, title, fprint, femail, fsave, fcancel, fclose, iniframe, shownote) {
 | |
|             if (!fclose)
 | |
|                 fclose = fcancel;
 | |
|             _dialog.showButtonDialog(msg, title, 'question', fclose, [{
 | |
|                 value: GetTextByKey("P_JS_PRINTDISPATCHINSTRUCTIONS", 'Print Dispatch Instructions'),
 | |
|                 func: fprint
 | |
|             }, {
 | |
|                 value: GetTextByKey("P_JS_EMAILDISPATCHINSTRUCTIONS", 'Email Dispatch Instructions'),
 | |
|                 func: femail
 | |
|             }, {
 | |
|                 value: GetTextByKey("P_JS_CONTINUE", 'Continue'),
 | |
|                 func: fsave
 | |
|             }], iniframe, shownote);
 | |
|         };
 | |
| 
 | |
|         function showRequirementConfirm(msg, title, fprint, femai, fsave, fclose) {
 | |
|             showmaskbg(true);
 | |
|             _dialog.showRequirementConfirm(msg, title, function (e) {
 | |
|                 showmaskbg(false);
 | |
|                 if (typeof fprint === 'function') {
 | |
|                     fprint(e);
 | |
|                 }
 | |
|             }, function (e) {
 | |
|                 showmaskbg(false);
 | |
|                 if (typeof femai === 'function') {
 | |
|                     femai(e);
 | |
|                 }
 | |
|             }, function (e) {
 | |
|                 showmaskbg(false);
 | |
|                 if (typeof fsave === 'function') {
 | |
|                     fsave(e);
 | |
|                 }
 | |
|             }, function (e) {
 | |
|                 showmaskbg(false);
 | |
|                 if (typeof fclose === 'function') {
 | |
|                     fclose(e);
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function showConfirmIndialog(msg, title, fok, fcancel, shownote) {
 | |
|             $("#dialogmask").show();
 | |
|             _dialog.showConfirm(msg, title, function (e, notes) {
 | |
|                 $("#dialogmask").hide();
 | |
|                 if (typeof fok === 'function') {
 | |
|                     fok(e, notes);
 | |
|                 }
 | |
|             }, fcancel || function () {
 | |
|                 $("#dialogmask").hide();
 | |
|             }, null, null, shownote);
 | |
|         }
 | |
| 
 | |
|         function OnDelete(req) {
 | |
|             if (!req) {
 | |
|                 return;
 | |
|             }
 | |
|             var text = $('<div style="padding-right:20px;line-height:20px;">' + GetTextByKey("P_JS_DELETETHEREQUIREMENT", "Would you like to delete the requirement?") + '<br/></div');
 | |
|             text.append($('<span></span>').text(GetTextByKey("P_JS_JOBSITE_COLON", "Jobsite:") + " " + req.JobSiteName));
 | |
|             text.append($('<span style="margin-left:10px;"></span>').text(GetTextByKey("P_JS_ASSETTYPE_COLON", "Asset Type:") + " " + req.AssetTypeName));
 | |
|             text.append("<br/>")
 | |
|             text.append($('<span></span>').text(GetTextByKey("P_JS_BEGINDATE_COLON", "Begin Date:") + " " + req.BeginDateStr));
 | |
|             text.append($('<span style="margin-left:10px;"></span>').text(GetTextByKey("P_JS_ENDDATE_COLON", "Begin Date:") + " " + req.EndDateStr));
 | |
|             var alerttile = GetTextByKey("P_JS_DELETEREQUIREMENT", "Delete Requirement");
 | |
|             showConfirm(text, alerttile, function (e, notes) {
 | |
|                 var item = {
 | |
|                     'Key': req.Id,
 | |
|                     'Value': notes
 | |
|                 };
 | |
|                 var p = htmlencode(JSON.stringify(item));
 | |
|                 jobsitequery("DeleteRequirment", p, function (data) {
 | |
|                     OnRefresh();
 | |
|                 }, function (err) {
 | |
|                     showAlert(GetTextByKey("P_JS_FAILEDTODELETETHISREQUIREMENT", "Failed to delete this requirement."), alerttile);
 | |
|                 });
 | |
|             }, null, true);
 | |
|         }
 | |
| 
 | |
| 
 | |
|         function CloseDialog(msg) {
 | |
|             if (msg) {
 | |
|                 var alerttitle = GetTextByKey("P_WO_SENDEMAIL", 'Send Email');
 | |
|                 if (msg !== 'OK') {
 | |
|                     showAlert(msg, alerttitle);
 | |
|                 }
 | |
|                 else {
 | |
|                     showAlert(GetTextByKey("P_WO_MESSAGESENT", 'Message sent'), alerttitle);
 | |
|                 }
 | |
|             }
 | |
|             $('#dialog_requirements').hideDialog();
 | |
|             OnRefresh();
 | |
|         }
 | |
| 
 | |
|         function ShowDialog(type) {
 | |
|             showmaskbg(true);
 | |
|             $('#dialog_requirements')
 | |
|                 .attr('act', type)
 | |
|                 .showDialogRight();
 | |
|         }
 | |
| 
 | |
| 
 | |
|         function OnAdd() {
 | |
|             execIframeFunc("init", [alljobsites], "iframerequirements");
 | |
|             ShowDialog("add");
 | |
|         }
 | |
| 
 | |
|         var requireid;
 | |
| 
 | |
|         function OnRefresh(keepmasg) {
 | |
|             showloading(true);
 | |
| 
 | |
|             var jobsites = [];
 | |
|             if (jobsiteparam)
 | |
|                 jobsites = jobsiteparam.selectedvalue;
 | |
| 
 | |
|             var regions = [];
 | |
|             if (regionparam)
 | |
|                 regions = regionparam.selectedvalue;
 | |
| 
 | |
|             var p = {
 | |
|                 "LatestStartDate": $.trim($('#latesdatetxt').val()),
 | |
|                 "JobSites": jobsites,
 | |
|                 "Regions": regions,
 | |
|                 "SearchText": $.trim($('#searchinputtxt').val()),
 | |
|                 "UnScheduledOnly": $('#chk_unscheduled').prop('checked')
 | |
|             };
 | |
|             jobsitequery("GetRequirements", htmlencode(JSON.stringify(p)), function (data) {
 | |
|                 if (typeof (data) === "string") {
 | |
|                     showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
 | |
|                     return;
 | |
|                 }
 | |
| 
 | |
|                 showRequirementList(data);
 | |
| 
 | |
|                 if (!keepmasg)
 | |
|                     showloading(false);
 | |
|             }, function (err) {
 | |
|                 if (!keepmasg)
 | |
|                     showloading(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function showRequirementList(data) {
 | |
|             var rows = [];
 | |
|             for (var i = 0; i < data.length; i++) {
 | |
|                 var r = data[i];
 | |
|                 for (var j in r) {
 | |
|                     if (j === "BeginDate")
 | |
|                         r[j] = { DisplayValue: r["BeginDateStr"], Value: r[j] };
 | |
|                     else if (j === "EndDate")
 | |
|                         r[j] = { DisplayValue: r["EndDateStr"], Value: r[j] };
 | |
|                 }
 | |
|                 var fr = { Values: r };
 | |
|                 rows.push(fr);
 | |
|             }
 | |
| 
 | |
|             grid_dt.setData(rows);
 | |
|             grid_dt.refresh();
 | |
|         }
 | |
| 
 | |
|         var grid_dt;
 | |
|         function InitGridData() {
 | |
|             grid_dt = new GridView('#jobsitelist');
 | |
|             grid_dt.lang = {
 | |
|                 all: GetTextByKey("P_GRID_ALL", "(All)"),
 | |
|                 ok: GetTextByKey("P_GRID_OK", "OK"),
 | |
|                 reset: GetTextByKey("P_GRID_RESET", "Reset")
 | |
|             };
 | |
|             var list_columns = [
 | |
|                 { name: 'BeginDate', caption: GetTextByKey("P_JS_BEGINDATE", "Begin Date"), valueIndex: 'BeginDate', css: { 'width': 100, 'text-align': 'left' } },
 | |
|                 { name: 'EndDate', caption: GetTextByKey("P_JS_ENDDATE", "End Date"), valueIndex: 'EndDate', css: { 'width': 100, 'text-align': 'left' } },
 | |
|                 { name: 'AssetTypeName', caption: GetTextByKey("P_JS_ASSETTYPE", "Asset Type"), valueIndex: 'AssetTypeName', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
 | |
|                 { name: 'Quantity', caption: GetTextByKey("P_JS_QUANTITY", "Quantity"), valueIndex: 'Quantity', css: { 'width': 80, 'text-align': 'right' } },
 | |
|                 { name: 'ScheduledQuantity', caption: GetTextByKey("P_JS_SCHEDULED", "Scheduled"), valueIndex: 'ScheduledQuantity', css: { 'width': 80, 'text-align': 'right' } },
 | |
|                 { name: 'JobSiteName', caption: GetTextByKey("P_JOBSITE", "Jobsite"), valueIndex: 'JobSiteName', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'NumberOfDays', caption: GetTextByKey("P_JS_NUMBEROFDAYS", "Number of Days"), valueIndex: 'NumberOfDays', css: { 'width': 120, 'text-align': 'right' } },
 | |
|                 { name: 'Notes', caption: GetTextByKey("P_JS_NOTES", "Notes"), valueIndex: 'Notes', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'PointOfContact', caption: GetTextByKey("P_JS_POINTOFCONTACT", "Point Of Contact"), allowFilter: true, valueIndex: 'PointOfContact', css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'AddedByName', caption: GetTextByKey("P_JS_CREATOR", "Creator"), valueIndex: 'AddedByName', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
 | |
|                 { name: 'FulfilledByName', caption: GetTextByKey("P_JS_FULFILLEDBY", "Fulfilled By"), allowFilter: true, valueIndex: 'FulfilledByName', css: { 'width': 150, 'text-align': 'left' } },
 | |
|                 { name: 'ManageAssets', caption: "", alwaysshow: true, css: { 'width': 30, 'text-align': 'center' } },
 | |
|                 { name: 'Delete', caption: "", alwaysshow: true, css: { 'width': 30, 'text-align': 'center' } },
 | |
|                 { name: 'History', caption: "", alwaysshow: true, css: { 'width': 30, 'text-align': 'center' } }
 | |
|             ];
 | |
|             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 = list_columns[hd].visible === false ? false : 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;
 | |
| 
 | |
|                 col.alwaysshow = list_columns[hd].alwaysshow;
 | |
|                 if (col.name === "ManageAssets") {
 | |
|                     col.sortable = false;
 | |
|                     col.isurl = true;
 | |
|                     col.text = "\uf63c";
 | |
|                     col.events = {
 | |
|                         onclick: function () {
 | |
|                             onManageAssets(this);
 | |
|                         }
 | |
|                     };
 | |
|                     col.classFilter = function (e) {
 | |
|                         return "icon-col";
 | |
|                     };
 | |
|                     col.attrs = { 'title': GetTextByKey("P_JS_MANAGEASSETS", "Manage Assets") };
 | |
|                     col.visible = !IsReadOnly && !IsRequestOnly;
 | |
|                 }
 | |
|                 else if (col.name === "Delete") {
 | |
|                     col.sortable = false;
 | |
|                     col.isurl = true;
 | |
|                     col.text = "\uf00d";
 | |
|                     col.events = {
 | |
|                         onclick: function () {
 | |
|                             OnDelete(this);
 | |
|                         }
 | |
|                     };
 | |
|                     col.classFilter = function (e) {
 | |
|                         return "icon-col";
 | |
|                     };
 | |
|                     col.attrs = { 'title': GetTextByKey("P_JS_DELETE", 'Delete') };
 | |
|                     col.visible = !IsReadOnly && !IsRequestOnly;
 | |
|                 }
 | |
|                 if (col.name === "History") {
 | |
|                     col.sortable = false;
 | |
|                     col.isurl = true;
 | |
|                     col.text = "\uf06e";
 | |
|                     col.events = {
 | |
|                         onclick: function () {
 | |
|                             OnViewChangeHistory(this);
 | |
|                         }
 | |
|                     };
 | |
|                     col.classFilter = function (e) {
 | |
|                         return "icon-col";
 | |
|                     };
 | |
|                     col.attrs = { 'title': GetTextByKey("P_MR_VIEWCHANGEHIS", 'View Change History') };
 | |
|                     col.visible = !IsReadOnly && !IsRequestOnly;
 | |
|                 }
 | |
|                 columns.push(col);
 | |
|             }
 | |
|             grid_dt.canMultiSelect = false;
 | |
|             grid_dt.columns = columns;
 | |
|             grid_dt.init();
 | |
|             grid_dt.rowdblclick = function (rowindex) {
 | |
|                 if (!IsReadOnly && !IsRequestOnly) {
 | |
|                     var rowdata = grid_dt.source[rowindex];
 | |
|                     if (rowdata) {
 | |
|                         onManageAssets(rowdata.Values);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             grid_dt.selectedrowchanged = function (rowindex) {
 | |
|                 var rowdata = grid_dt.source[rowindex];
 | |
|                 if (rowdata) {
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function searchEnter(e) {
 | |
|             if (e.keyCode == 13) {
 | |
|                 OnRefresh();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         var jobsite_editmultiselect;
 | |
|         var region_editmultiselect;
 | |
|         var alljobsites;
 | |
|         function getJobsitesAndRegions() {
 | |
|             showmaskbg(true);
 | |
|             jobsitequery('GetJobsitesAndRegions', '', function (data) {
 | |
|                 if (typeof (data) === "string") {
 | |
|                     showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
 | |
|                     return;
 | |
|                 }
 | |
| 
 | |
|                 alljobsites = data.Jobsites;
 | |
|                 jobsiteparam = {
 | |
|                     allitems: data.Jobsites,
 | |
|                     items: JSON.parse(JSON.stringify(data.Jobsites)),
 | |
|                     selectedvalue: [],
 | |
|                     width: 240
 | |
|                 };
 | |
|                 jobsite_editmultiselect = editmultiselect(jobsiteparam);
 | |
|                 $('#div_jobsites').append(jobsite_editmultiselect);
 | |
| 
 | |
|                 regionparam = {
 | |
|                     items: data.Regions,
 | |
|                     selectedvalue: [],
 | |
|                     width: 240,
 | |
|                     oncompleted: onregioncompleted
 | |
|                 };
 | |
|                 region_editmultiselect = editmultiselect(regionparam);
 | |
|                 $('#div_region').append(region_editmultiselect);
 | |
| 
 | |
|                 getRequirmentsDefault();
 | |
|             }, function () {
 | |
|                 showmaskbg(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function onregioncompleted() {
 | |
|             if (!jobsiteparam || !jobsiteparam.allitems) return;
 | |
|             jobsiteparam.items.length = 0;
 | |
|             for (var i in jobsiteparam.allitems) {
 | |
|                 var item = jobsiteparam.allitems[i];
 | |
|                 if (!regionparam.selectedvalue
 | |
|                     || regionparam.selectedvalue.length == 0
 | |
|                     || regionparam.selectedvalue.indexOf(item.Tag3) >= 0)
 | |
|                     jobsiteparam.items.push(item);
 | |
|             }
 | |
|             jobsite_editmultiselect.reset();
 | |
|         }
 | |
| 
 | |
|         var editableSelectAssignAsset;
 | |
|         $(function () {
 | |
|             setPageTitle(GetTextByKey("P_JS_JOBSITEREQUIREMENTS", "Jobsite Requirements"), true);
 | |
|             editableSelectAssignAsset = new $editableselect($("#dialog_assignasset"));
 | |
|             editableSelectAssignAsset.setEnable(false);
 | |
|             InitGridData();
 | |
|             InitAssetGridData();
 | |
|             InitAllAssetGridData();
 | |
|             InitEmailGridData();
 | |
| 
 | |
|             getJobsitesAndRegions();
 | |
| 
 | |
|             $(window).resize(function () {
 | |
|                 $("#jobsitelist").css("height", $(window).height() - $("#jobsitelist").offset().top - 14);
 | |
|                 grid_dt && grid_dt.resize();
 | |
|                 $("#allmachinelist").css("height", 500);
 | |
|                 grid_allassetdt && grid_allassetdt.resize();
 | |
| 
 | |
|             }).resize();
 | |
| 
 | |
|             $('#searchinputtxt').keydown(searchEnter);
 | |
| 
 | |
|             $('#dialog_managemahchine').dialog(function () {
 | |
|                 OnRefresh();
 | |
|                 showmaskbg(false);
 | |
|             })
 | |
| 
 | |
|             $('#dialog_allmahchine').dialog(function () {
 | |
|                 $('#dialogmask').hide();
 | |
|             })
 | |
| 
 | |
|             $('#dialog_assignment').dialog(function () {
 | |
|                 showmaskbg(false);
 | |
|                 $('#dialogmask').hide();
 | |
|             });
 | |
| 
 | |
|             $('#dialog_sendmail').dialog(function () {
 | |
|                 showmaskbg(false);
 | |
|             });
 | |
| 
 | |
|             $('#sendmail_othertextaddress').focus(function (e) {
 | |
|                 var left = $('#dialog_sendmail').offset().left + $('#dialog_sendmail').width() + 2;
 | |
|                 var top = $('#dialog_sendmail').offset().top + $("#dialog_sendmail").height() - $("#div_tooltip").height() - 9;
 | |
|                 $('#div_tooltip').css({ 'display': '', 'left': left, 'top': top });
 | |
|             });
 | |
| 
 | |
|             $('#latesdatetxt').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]);
 | |
|                 }
 | |
|             });
 | |
| 
 | |
|             if (!canExport) {
 | |
|                 $('#spExport').hide();
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         function searchEnter(e) {
 | |
|             if (e.keyCode == 13 || e.keyCode == 9) {
 | |
|                 OnRefresh();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function OnExport() {
 | |
|             var jobsites = [];
 | |
|             if (jobsiteparam)
 | |
|                 jobsites = jobsiteparam.selectedvalue;
 | |
| 
 | |
|             var regions = [];
 | |
|             if (regionparam)
 | |
|                 regions = regionparam.selectedvalue;
 | |
| 
 | |
|             var p = {
 | |
|                 "LatestStartDate": $.trim($('#latesdatetxt').val()),
 | |
|                 "JobSites": jobsites,
 | |
|                 "Regions": regions,
 | |
|                 "SearchText": $.trim($('#searchinputtxt').val()),
 | |
|                 "UnScheduledOnly": $('#chk_unscheduled').prop('checked')
 | |
|             };
 | |
| 
 | |
|             var param = JSON.stringify(p);
 | |
|             window.open("../ExportToFile.aspx?type=requirements¶m=" + param);
 | |
|         }
 | |
| 
 | |
|         function getRequirmentsDefault() {
 | |
|             jobsitequery("GetRequirmentsDefault", '', function (data) {
 | |
|                 if (typeof (data) === "string") {
 | |
|                     showAlert(data, GetTextByKey('P_JS_ERROR', 'Error'));
 | |
|                     return;
 | |
|                 }
 | |
|                 if (data) {
 | |
|                     region_editmultiselect.setValues(data.Regions);
 | |
|                     onregioncompleted();
 | |
|                     jobsite_editmultiselect.setValues(data.Jobsites);
 | |
|                 }
 | |
|                 OnRefresh();
 | |
|             }, function (err) {
 | |
|                 showmaskbg(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function onSaveDefault() {
 | |
|             var jobsites = [];
 | |
|             if (jobsiteparam)
 | |
|                 jobsites = jobsiteparam.selectedvalue;
 | |
| 
 | |
|             var regions = [];
 | |
|             if (regionparam)
 | |
|                 regions = regionparam.selectedvalue;
 | |
| 
 | |
|             var item = {
 | |
|                 'JobSites': jobsites,
 | |
|                 'Regions': regions
 | |
|             };
 | |
|             var alerttitle = GetTextByKey("P_JS_SAVEDEFAULT", "Save Default");
 | |
|             var param = JSON.stringify(item);
 | |
|             param = htmlencode(param);
 | |
|             jobsitequery("SetRequirmentsDefault", param, function (data) {
 | |
|                 if (data !== 'OK') {
 | |
|                     showAlert(data, alerttitle);
 | |
|                 }
 | |
|                 else {
 | |
|                     showAlert(GetTextByKey("P_JS_SAVSUCCESSFULLY", 'Saved successfully.'), alerttitle);
 | |
|                 }
 | |
| 
 | |
|             }, function (err) {
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function OnViewChangeHistory(req) {
 | |
|             if (!req) {
 | |
|                 return;
 | |
|             }
 | |
|             window.open("DispatchChangeHistory.aspx?stype=0&id=" + req.Id);
 | |
|         }
 | |
| 
 | |
|         function OnViewDeleteHistory() {
 | |
|             window.open("RequirementChangeHistory.aspx");
 | |
|         }
 | |
| 
 | |
|         function OnPrint(assignto) {
 | |
|             if (!assignto)
 | |
|                 assignto = "";
 | |
| 
 | |
|             window.open("../Print.aspx?pt=2&t=" + _sendType + "&assignto=" + encodeURIComponent(assignto) + "&ids=" + JSON.stringify(_selectdispatchids));
 | |
|         }
 | |
| 
 | |
| 
 | |
|     </script>
 | |
| </asp:Content>
 | |
| <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
 | |
|     <div id="contentctrl">
 | |
|         <div class="page_title" data-lgid="P_JS_JOBSITEREQUIREMENTS"></div>
 | |
|         <div class="search_bar">
 | |
|             <input type="password" autocomplete="new-password" style="display: none" />
 | |
|             <span data-lgid="P_JS_LATESTSTARTDATE_COLON"></span>
 | |
|             <input type="text" id="latesdatetxt" autocomplete="off" style="width: 80px; margin-left: 5px;" value="<%=LatestStartDate %>" />
 | |
|             <span data-lgid="P_JS_REGION_COLON">Region:</span>
 | |
|             <div id="div_region"></div>
 | |
|             <span data-lgid="P_JS_JOBSITES_COLON">Jobsites:</span>
 | |
|             <div id="div_jobsites"></div>
 | |
|             <input type="text" id="searchinputtxt" autocomplete="off" style="margin-left: 5px; display: none;" />
 | |
|             <input class="search" type="button" onclick="OnRefresh();" value="Search" data-lgid="P_CM_SEARCH" style="margin-left: 5px;" />
 | |
|             <input id="chk_unscheduled" type="checkbox" checked="checked" onclick="OnRefresh();" />
 | |
|             <label data-lgid="P_JS_UNSCHEDULEDREQUIREMENTSONLY" for="chk_unscheduled">Unscheduled Requirements Only</label>
 | |
|             <span class="sbutton iconsave" onclick="onSaveDefault();" style="margin-left: 20px;padding: 0px 0px 0px 7px;" data-title-lgid="P_JS_SAVEJOBSITEANDREGIONSELECTIONASDEFAULT"></span>
 | |
|         </div>
 | |
|         <div class="function_title">
 | |
|             <%if (!IsReadOnly)
 | |
|                 { %>
 | |
|             <span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_JS_ADD"></span>
 | |
|             <%} %>
 | |
|             <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_JS_REFRESH"></span>
 | |
|             <span id="spExport" class="sbutton iconexport" onclick="OnExport();" data-lgid="P_MR_EXPORTTOEXCEL">Export to Excel</span>
 | |
|             <span class="sbutton iconview" onclick="OnViewDeleteHistory();" data-lgid="P_JS_VIEWDELETEDRECORDS">View Deleted Records</span>
 | |
| 
 | |
|         </div>
 | |
|         <div id="jobsitelist"></div>
 | |
|     </div>
 | |
|     <div id="mask_bg" style="display: none;"><div class="loading c-spin"></div></div>
 | |
|     <div class="dialog subdialog" id="dialog_requirements" style="display: none; border-bottom: 0; border-top: 0;">
 | |
|         <%--<div class="dialog-title"><span class="title">Add Work Order</span></div>--%>
 | |
|         <iframe id="iframerequirements" src="AddRequirements.aspx" style="width: 100%; height: 100%; display: block; border: none;"></iframe>
 | |
|         <div class="maskbg" style="display: none;"></div>
 | |
|     </div>
 | |
| 
 | |
|     <div class="dialog" id="dialog_managemahchine" style="display: none;">
 | |
|         <div class="dialog-title"><span id="spTitle" class="title" data-lgid="P_JS_MANAGEASSETS"></span><em class="dialog-close"></em></div>
 | |
|         <div class="requireinfo">
 | |
|             <span class="requireinfospan" data-lgid="P_JS_JOBSITE_COLON" style="margin-left: 0px;">Jobsite:</span>
 | |
|             <span id="span_jobsite"></span>
 | |
|             <span class="requireinfospan" data-lgid="P_JS_BEGINDATE_COLON">Begin Date:</span>
 | |
|             <span id="span_begindate"></span>
 | |
|             <span class="requireinfospan" data-lgid="P_JS_ENDDATE_COLON">End Date:</span>
 | |
|             <span id="span_enddate"></span>
 | |
|             <span class="requireinfospan" data-lgid="P_JS_ASSETTYPE_COLON">Asset Type:</span>
 | |
|             <span id="span_assettypes"></span>
 | |
|         </div>
 | |
|         <div class="quantity">
 | |
|             <span data-lgid="P_JS_QUANTITY_COLON">Quantity:</span>
 | |
|             <span id="span_quantity"></span>
 | |
|             <span class="sbutton iconadd" onclick="OnMachineAdd()" data-lgid="P_UM_ADD" style="margin-left: 20px; font-weight: lighter;">Add</span>
 | |
|             <span class="sbutton icondelete" onclick="onDeleteDispatch()" data-lgid="P_UM_DELETE" style="font-weight: lighter;">Delete</span>
 | |
|         </div>
 | |
|         <div id="selectedmachinelist" style="height: 500px; width: 100%;"></div>
 | |
| 
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" value="Close" data-lgid="P_JS_CLOSE" class="dialog-close" tabindex="28" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|         <div id="dialogmask" class="maskbg" style="display: none;">
 | |
|             <div class="loading_icon icon c-spin"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
| 
 | |
|     <div class="dialog" id="dialog_allmahchine" style="display: none;">
 | |
|         <div class="dialog-title"><span class="title" data-lgid="P_MA_SELECTASSET"></span><em class="dialog-close"></em></div>
 | |
|         <div id="allmachinelist" style="height: 500px; width: 100%;"></div>
 | |
| 
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" value="Close" data-lgid="P_JS_CANCEL" class="dialog-close" tabindex="28" />
 | |
|             <input type="button" onclick="onAddDispatch();" data-lgid="P_JS_OK" value="OK" tabindex="27" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
|     <div class="dialog" id="dialog_sendmail" style="display: none; width: 320px;">
 | |
|         <div class="dialog-title"><span class="title" data-lgid="P_JS_SENDDISPATCHREQUEST">Send Dispatch Request</span><em class="dialog-close"></em></div>
 | |
|         <div class="dialog-content" style="height: 378px;">
 | |
|             <table>
 | |
|                 <tr>
 | |
|                     <td colspan="2" data-lgid="P_MV_SENDTHISTO">Who do you want to send this to? Select from existing relationships or manual entry.</td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td colspan="2">
 | |
|                         <div id="contactlist" style="height: 168px; width: 440px; margin-left: 10px; margin-right: 10px;"></div>
 | |
|                     </td>
 | |
|                 </tr>
 | |
|                 <tr style="height: 24px;">
 | |
|                     <td colspan="2" data-lgid="P_MV_EMAILORTEXTADDRESSESTIPS">Separate multiple manually entered email or text addresses with a semi-colon (;).</td>
 | |
|                 </tr>
 | |
|                 <tr style="height: 24px;">
 | |
|                     <td><span data-lgid="P_MV_OTHEREMAILADDRESS">Other Email Address</span>
 | |
|                     </td>
 | |
|                     <td>
 | |
|                         <input type="text" id="sendmail_otheremailaddress" style="width: 312px;" autocomplete="off" /></td>
 | |
|                 </tr>
 | |
|                 <tr style="height: 24px; display: none;">
 | |
|                     <td><span data-lgid="P_MV_OTHERTEXTADDRESS">Other Text Address</span>
 | |
|                     </td>
 | |
|                     <td>
 | |
|                         <input type="text" id="sendmail_othertextaddress" style="width: 312px;" autocomplete="off" />
 | |
|                     </td>
 | |
|                     <%--<span id="span_hepler" class='helper pointer' title='Help'></span>--%>
 | |
|                 </tr>
 | |
|                 <tr style="height: 24px;">
 | |
|                     <td colspan="2" data-lgid="P_MV_DESCRIPTION_COLON">Description:</td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td colspan="2">
 | |
|                         <textarea id="sendmail_desc" style="width: 444px; height: 80px; resize: none; margin-left: 12px;"></textarea></td>
 | |
|                 </tr>
 | |
|             </table>
 | |
|         </div>
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" value="Cancel" data-lgid="P_MV_CANCEL" class="dialog-close" tabindex="12" />
 | |
|             <input type="button" onclick="onSendEmails();" value="OK" data-lgid="P_MV_OK" tabindex="11" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
|     <div class="dialog" id="dialog_assignment" style="display: none;">
 | |
|         <div class="dialog-title"><span class="title" data-lgid="P_JS_DISPATCHASSIGNMENT">Dispatch Assignment</span><em class="dialog-close"></em></div>
 | |
|         <div class="dialog-content">
 | |
|             <table style="line-height: 30px; margin-left: 30px;">
 | |
|                 <tr>
 | |
|                     <td data-lgid="P_JS_SELECTASSETFORDISPATCH">Select Asset for Dispatch</td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>
 | |
|                         <div id="dialog_assignasset" style="width: 320px; height: 22px;"></div>
 | |
|                     </td>
 | |
|                 </tr>
 | |
|             </table>
 | |
|         </div>
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" onclick="onAssignContinue();" value="Continue" data-lgid="P_JS_CONTINUE" tabindex="12" />
 | |
|             <input type="button" onclick="onAssignSkip();" value="Skip" data-lgid="P_JS_SKIP" tabindex="11" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
| </asp:Content>
 |