var indexInRequirement; var allRequirements = []; var currentRequirement; function showJobsiteRequirementList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; rows.push(r); } grid_jsrequirementdt.setData(rows); grid_jsrequirementdt.refresh(); } var grid_jsrequirementdt; function InitJobsiteschedulerGridData() { grid_jsrequirementdt = createGridView('#requirementlist'); grid_jsrequirementdt.isEditable = true; var list_columns = [ { name: 'BeginDate', caption: GetTextByKey("P_JS_BEGINDATE", 'Begin Date'), valueIndex: 'BeginDateStr', css: { 'width': 120, 'text-align': 'left' } }, { name: 'EndDate', caption: GetTextByKey("P_JS_ENDDATE", 'End Date'), valueIndex: 'EndDateStr', css: { 'width': 120, 'text-align': 'left' } }, { name: 'AssetTypeName', caption: GetTextByKey("P_JS_ASSETTYPE", 'Asset Type'), valueIndex: 'AssetTypeName', css: { 'width': 130, 'text-align': 'left' } }, { name: 'Quantity', caption: GetTextByKey("P_JS_QUANTITY", 'Quantity'), valueIndex: 'Quantity', css: { 'width': 100, 'text-align': 'right' } }, { name: 'ScheduledQuantity', caption: GetTextByKey("P_JS_SCHEDULED", 'Scheduled'), valueIndex: 'ScheduledQuantity', css: { 'width': 100, 'text-align': 'right' } }, { name: 'Days', caption: GetTextByKey("P_JS_NUMBEROFDAYS", 'Number of Days'), valueIndex: 'Days', css: { 'width': 100, 'text-align': 'right' } }, { name: 'Notes', caption: GetTextByKey("P_JS_NOTES", 'Notes'), valueIndex: 'Notes', css: { 'width': 300, 'text-align': 'left' } }, { name: 'PointOfContact', caption: GetTextByKey("P_JS_POINTOFCONTACT", 'Point Of Contact'), valueIndex: 'PointOfContact', css: { 'width': 120, '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' } } ]; 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; col.oldFilterValues = col.filterValues; if (list_columns[hd].type) { col.type = list_columns[hd].type; } col.alwaysshow = list_columns[hd].alwaysshow; var DateColumn = window['lib-ui'].GridDateColumn; if (col.name === "BeginDate") { col.type = DateColumn; col.filter = function (item, editing) { return item.BeginDate; }; col.sortFilter = function (a, b) { a = a.BeginDate; b = b.BeginDate; return a > b ? 1 : (a < b ? -1 : 0); }; col.onChanged = function (item, value) { item.BeginDate = item.BeginDateStr = DateColumn.formatDate(value); item.Days = getDaysBetween(item.BeginDate, item.EndDate); item.Changed = true; grid_jsrequirementdt.refresh(); }; } else if (col.name === "EndDate") { col.type = DateColumn; col.filter = function (item, editing) { return item.EndDate; }; col.sortFilter = function (a, b) { a = a.EndDate; b = b.EndDate; return a > b ? 1 : (a < b ? -1 : 0); }; col.onChanged = function (item, value) { item.EndDate = item.EndDateStr = DateColumn.formatDate(value); item.Days = getDaysBetween(item.BeginDate, item.EndDate); item.Changed = true; grid_jsrequirementdt.refresh(); }; } else if (col.name === "Quantity") { col.type = GridView.ColumnTypes.Input; col.attrs = { 'maxlength': 100 }; col.filter = function (item) { return item.Quantity; }; col.styleFilter = function () { return { "width": "100%", 'padding': 0 }; } col.onChanged = function (item, value) { item.Quantity = value; item.QuantityDisplayText = value; } } else if (col.name === "Notes") { col.type = GridView.ColumnTypes.Input; col.attrs = { 'maxlength': 100 }; col.filter = function (item) { return item.Notes; }; col.styleFilter = function () { return { "width": "100%", 'padding': 0 }; } col.onChanged = function (item, value) { item.Notes = value; } } else if (col.name === "PointOfContact") { col.type = GridView.ColumnTypes.Input; col.attrs = { 'maxlength': 100 }; col.filter = function (item) { return item.PointOfContact; }; col.styleFilter = function () { return { "width": "100%", 'padding': 0 }; } col.onChanged = function (item, value) { item.PointOfContact = value; } } else if (col.name === "ManageAssets") { col.sortable = false; col.resizable = false; col.type = GridView.ColumnTypes.Icon; col.text = 'truck-pickup'; col.events = { onclick: function () { onManageAssets(this); } }; col.styleFilter = function (e) { return { display: IsRequestOnly ? 'none' : '' }; }; col.attrs = { 'title': GetTextByKey("P_JS_MANAGEASSETS", 'Manage Assets') }; } else if (col.name === "Delete") { col.sortable = false; col.resizable = false; col.type = GridView.ColumnTypes.Icon; col.text = 'times'; col.events = { onclick: function () { onRemoveRequirement(this); } }; col.styleFilter = function (e) { return { display: IsRequestOnly ? 'none' : '' }; }; col.attrs = { 'title': GetTextByKey("P_JS_DELETE", 'Delete') }; } columns.push(col); } grid_jsrequirementdt.multiSelect = true; grid_jsrequirementdt.columns = columns; grid_jsrequirementdt.init(); } function getDaysBetween(dateString1, dateString2, type) { var startDate = Date.parse(dateString1); var endDate = Date.parse(dateString2); if (!type) if (startDate > endDate) return 0; var days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000) + 1; return parseInt(days); } function getSearchItem() { var jsid = $('#dialog_jobsite').find("option:selected").val(); var jsname = $("#dialog_jobsite").find("option:selected").text(); var begindate = $('#begindatetxt').val(); var enddate = $('#enddatetxt').val(); var pointofcontact = $('#pointofcontacttxt').val(); var selassettypes = $("#div_assettypes").dropdownVals(); var item = { JobSiteId: jsid, JobSiteName: jsname, BeginDate: begindate, BeginDateStr: begindate, EndDate: enddate, EndDateStr: enddate, PointOfContact: pointofcontact, AssetTypes: selassettypes, Days: getDaysBetween(begindate, enddate) }; return item; } function getMatchRequirements(ignorebeginpast) { var item = getSearchItem(); var alerttitle = GetTextByKey('P_JS_JOBSITEREQUIREMENTS', "Jobsite Requirements"); if (!item.JobSiteId) { showAlert(GetTextByKey("P_JS_PLEASESELECTJOBSITE", "Please select Jobsite."), alerttitle); return; } if (!item.BeginDate) { showAlert(GetTextByKey("P_JS_PLEASEENTERTHEBEGINDATE", "Please enter the Begin Date."), alerttitle); return; } if (!checkDate(item.BeginDate)) { showAlert(GetTextByKey("P_JS_BEGINDATEFORMATERROR", "Begin Date format error."), alerttitle); return; } if (!item.EndDate) { showAlert(GetTextByKey("P_JS_PLEASEENTERTHEENDDATE", "Please enter the End Date."), alerttitle); return; } if (!checkDate(item.EndDate)) { showAlert(GetTextByKey("P_JS_ENDDATEFORMATERROR", "End Date format error."), alerttitle); return; } var nowdt = new Date(currentdate.replace("-", "/")); var sdate = item.BeginDate; var stdt = new Date(sdate.replace("-", "/")); var edate = item.EndDate; var etdt = new Date(edate.replace("-", "/")); if (!ignorebeginpast && stdt < nowdt) { var msg = GetTextByKey("P_JS_BEGINDATEPAST", "The begin date for this requirement is in the past, do you want to continue?") showConfirm1(msg, alerttitle, function () { getMatchRequirements(true); }); return; } //if (etdt < nowdt) { // showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE1", "End Date must be later than Begin Date. Please select another date range."), alerttitle); // return; //} if (stdt > etdt) { showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), alerttitle); return; } if (item.AssetTypes.length == 0) { showAlert(GetTextByKey("P_JS_PLEASESELECTASSETTYPE", "Please select Asset Type."), alerttitle); return; } //if (!item.PointOfContact) { // showAlert(GetTextByKey("P_JS_PLEASEENTERTHEPOINTOFCONTACT", "Please enter the Point Of Contact."), alerttitle); // return; //} var items = []; for (var i = 0; i < item.AssetTypes.length; i++) { var existitem = getExistsItem(item.AssetTypes[i]); if (existitem) { items.push(existitem); } else { var aitem = { 'JobSiteId': item.JobSiteId, 'JobSiteName': item.JobSiteName, 'BeginDate': item.BeginDate, 'BeginDateStr': item.BeginDateStr, 'EndDate': item.EndDate, 'EndDateStr': item.EndDateStr, 'AssetType': item.AssetTypes[i], 'AssetTypeName': getAssetTypeName(item.AssetTypes[i]), 'Quantity': 1, 'ScheduledQuantity': 0, 'Days': item.Days, 'Notes': '', 'PointOfContact': item.PointOfContact, }; items.push(aitem); } } allRequirements = items; if (allRequirements.length > 0) $("#btnFulfillRequest").show(); else $("#btnFulfillRequest").hide(); showJobsiteRequirementList(allRequirements); } function getExistsItem(assettypeid) { for (var i = 0; i < allRequirements.length; i++) { if (allRequirements[i].AssetType == assettypeid) return allRequirements[i]; } return null; } function getAssetTypeName(assettypeid) { for (var i = 0; i < assettypes.length; i++) { if (assettypes[i].Key == assettypeid) return assettypes[i].Value; } return ""; } function onRemoveRequirement(item) { for (var i = 0; i < allRequirements.length; i++) { if (item.AssetType == allRequirements[i].AssetType) { allRequirements.splice(i, 1); showJobsiteRequirementList(allRequirements); break; } } } //*********************************************Begin Manage Assets***********************************************// var dispatchAssetsObj; var alldispatchassets; var selecteddispatchassets; function showAssetList(data) { alldispatchassets = []; selecteddispatchassets = []; var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; if (r.AttachedAssets && r.AttachedAssets.length > 0) { for (var j = 0; j < r.AttachedAssets.length; j++) { var temp = { ...r }; temp.AttachedToAsset = null; temp.AttachedAssets = null; r.AttachedAssets[j].AttachedToAsset = temp; } } if (r.AttachedToAsset && r.AttachedToAsset.AttachedAssets.length > 0) { for (var j = 0; j < r.AttachedToAsset.AttachedAssets.length; j++) { var temp = { ...r.AttachedToAsset }; temp.AttachedToAsset = null; temp.AttachedAssets = null; r.AttachedToAsset.AttachedAssets[j].AttachedToAsset = temp; } } if (addrequirement) { r.Selected = false; if (currentRequirement && currentRequirement.Assets) { for (var k = 0; k < currentRequirement.Assets.length; k++) { if (currentRequirement.Assets[k].AssetId === r.AssetId) { r.Selected = true; break; } } } } else { if (r.Selected) { r.Selected = false; selecteddispatchassets.push(r); } else { r.Selected = false; alldispatchassets.push(r); continue; } } for (var j in r) { if (j === "DistanceToDestJobSite") r[j] = { DisplayValue: r["DistanceStr"], Value: r[j] }; } rows.push(r); } if (currentRequirement) currentRequirement.ScheduledQuantity = selecteddispatchassets.length; grid_assetdt.setData(rows); grid_assetdt.refresh(); } var grid_assetdt; function InitAssetGridData() { grid_assetdt = createGridView('#selectedmachinelist'); var list_columns = [ { name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, allcheck: true, css: { 'width': 45, 'text-align': 'center' } }, { name: 'MakeName', caption: GetTextByKey("P_PM_MAKE", "Make"), valueIndex: 'MakeName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'ModelName', caption: GetTextByKey("P_PM_MODEL", "Model"), valueIndex: 'ModelName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'AssetName', caption: GetTextByKey("P_JS_ASSETNAME", "Asset Name"), valueIndex: 'AssetName', css: { 'width': 150, 'text-align': 'left' } }, { name: 'CurrentJobSite', caption: GetTextByKey("P_JS_CURRJOBSITE", "Current Jobsite"), valueIndex: 'CurrentJobSite', css: { 'width': 150, 'text-align': 'left' } }, { name: 'DistanceToDestJobSite', caption: GetTextByKey("P_JS_DISTANCEFROMJOBSITE", "Distance from Jobsite"), valueIndex: 'DistanceToDestJobSite', css: { 'width': 100, 'text-align': 'right' } }, { name: 'AssetGroups', caption: GetTextByKey("P_JS_ASSETGROUP", "Asset Group"), valueIndex: 'AssetGroups', css: { 'width': 150, 'text-align': 'left' } }, { name: 'EngineHours', caption: GetTextByKey("P_JS_ENGINEHOURS", "Engine Hours"), valueIndex: 'EngineHours', css: { 'width': 100, 'text-align': 'right' } }, { name: 'AquisitionType', caption: GetTextByKey("P_JS_ACQUISITIONTYPE", "Acquisition Type"), valueIndex: 'AquisitionType', css: { 'width': 150, 'text-align': 'left' } }, { name: 'Schedules', caption: "gantt", valueIndex: 'ScheduleParts', css: { 'width': 320, '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 = 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.type = list_columns[hd].type; if (col.name === "Selected") { col.events = { onchange: function () { if (addrequirement) CheckAttachedAsset(this); else//requirement列表asset管理-删除Asset CheckDeleteAttachedAsset(this); } }; col.enabled = function (item) { return !item.Completed; }; } else if (col.name === "Schedules") { col.sortable = false; col.orderable = false; col.type = DispatchSchedulesColumn; col.styleFilter = function () { return { 'position': 'relative', 'height': '36px', }; } } else { col.styleFilter = function (item) { if (addrequirement && item.ConflictDays > 0) return { 'color': '#c55a11', }; }; } col.alwaysshow = list_columns[hd].alwaysshow; columns.push(col); } grid_assetdt.canMultiSelect = false; grid_assetdt.columns = columns; grid_assetdt.init(); } function showAllAssetList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; if (r.Selected) continue; for (var j in r) { if (j === "DistanceToDestJobSite") r[j] = { DisplayValue: r["DistanceStr"], Value: r[j] }; } rows.push(r); } grid_allassetdt.setData(rows); grid_allassetdt.refresh(); } var grid_allassetdt; function InitAllAssetGridData() { grid_allassetdt = createGridView('#allmachinelist'); var list_columns = [ { name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, css: { 'width': 45, 'text-align': 'center' } }, { name: 'MakeName', caption: GetTextByKey("P_PM_MAKE", "Make"), valueIndex: 'MakeName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'ModelName', caption: GetTextByKey("P_PM_MODEL", "Model"), valueIndex: 'ModelName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'AssetName', caption: GetTextByKey("P_JS_ASSETNAME", "Asset Name"), valueIndex: 'AssetName', css: { 'width': 150, 'text-align': 'left' } }, { name: 'CurrentJobSite', caption: GetTextByKey("P_JS_CURRJOBSITE", "Current Jobsite"), valueIndex: 'CurrentJobSite', css: { 'width': 150, 'text-align': 'left' } }, { name: 'DistanceToDestJobSite', caption: GetTextByKey("P_JS_DISTANCEFROMJOBSITE", "Distance from Jobsite"), valueIndex: 'DistanceToDestJobSite', css: { 'width': 100, 'text-align': 'right' } }, { name: 'AssetGroups', caption: GetTextByKey("P_JS_ASSETGROUP", "Asset Group"), valueIndex: 'AssetGroups', css: { 'width': 150, 'text-align': 'left' } }, { name: 'EngineHours', caption: GetTextByKey("P_JS_ENGINEHOURS", "Engine Hours"), valueIndex: 'EngineHours', css: { 'width': 100, 'text-align': 'right' } }, { name: 'AquisitionType', caption: GetTextByKey("P_JS_ACQUISITIONTYPE", "Acquisition Type"), valueIndex: 'AquisitionType', css: { 'width': 150, 'text-align': 'left' } }, { name: 'Schedules', caption: "gantt", valueIndex: 'ScheduleParts', css: { 'width': 320, '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 = 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.type = list_columns[hd].type; if (col.name === "Selected") { col.events = { onchange: function () { CheckAttachedAsset(this); } }; } else if (col.name === "Schedules") { col.sortable = false; col.orderable = false; col.type = DispatchSchedulesColumn; col.styleFilter = function () { return { 'position': 'relative', 'height': '36px', }; } } else { col.styleFilter = function (item) { if (item.ConflictDays > 0) return { 'color': '#c55a11', }; }; } col.alwaysshow = list_columns[hd].alwaysshow; columns.push(col); } grid_allassetdt.canMultiSelect = false; grid_allassetdt.columns = columns; grid_allassetdt.init(); } function onManageAssets(item, showprenext, index) { if (showprenext) { if (!allRequirements || allRequirements.length <= 0) return; if (allRequirements.length > 1) { $('#btnNext').show(); $('#btnPrevious').show(); } else { $('#btnNext').hide(); $('#btnPrevious').hide(); } indexInRequirement = index; item = allRequirements[indexInRequirement]; } else { $('#btnNext').hide(); $('#btnPrevious').hide(); } if (currentRequirement) { var assetdata = collectAssets(); currentRequirement.Assets = assetdata.Assets; } currentRequirement = item; showmaskbg(true); $('#span_jobsite').text(item.JobSiteName); $('#span_assettypes').text(item.AssetTypeName); $('#span_pointofcontact').text(item.PointOfContact); $('#span_quantity').text(item.Quantity); if (addrequirement) { $('#span_begindate').text(item.BeginDate); $('#span_enddate').text(item.EndDate); } else { requireid = item.Id; $('#span_begindate').text(item.BeginDateStr); $('#span_enddate').text(item.EndDateStr); } var title = GetTextByKey("P_JS_MANAGEASSETS", "Manage Assets"); $('#dialog_managemahchine .dialog-title span.title').html(title); $('#dialog_managemahchine').showDialogAuto(1400); if (addrequirement) getAvailableAssets(item); else getAvailableAssetsByRequirement(); } function getAvailableAssets(reqitem) { $("#dialogmask").show(); var item = { 'AssetType': reqitem.AssetType, 'JobSiteId': reqitem.JobSiteId, 'BeginDate': reqitem.BeginDate, 'EndDate': reqitem.EndDate, }; var p = htmlencode(JSON.stringify(item)); showAssetList([]); jobsitequery("GetAvailableAssets", p, function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_JS_ERROR", 'Error')); } else if (data) { dispatchAssetsObj = data; var assets = []; if (reqitem.Assets && reqitem.Assets.length > 0) { for (var i = 0; i < data.DispatchAssets.length; i++) { var dasset = data.DispatchAssets[i]; for (var j = 0; j < reqitem.Assets.length; j++) { if (dasset.AssetId === reqitem.Assets[j].AssetId) { dasset.Selected = true; break; } } assets.push(dasset); } } else assets = data.DispatchAssets; showAssetList(assets); } $("#dialogmask").hide(); }, function (err) { $("#dialogmask").hide(); }); } function getAvailableAssetsByRequirement() { $("#dialogmask").show(); if (!requireid) return; showAssetList([]); jobsitequery("GetAvailableAssetsByRequirement", requireid, function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_JS_ERROR", 'Error')); } else if (data) { dispatchAssetsObj = data; showAssetList(data.DispatchAssets); } $("#dialogmask").hide(); }, function (err) { $("#dialogmask").hide(); }); } function collectAssets() { var assets = []; var othertypeassets = []; var tempsource = grid_assetdt.source; for (var i = 0; i < tempsource.length; i++) { var ct = tempsource[i]; if (ct.Selected) { var asset = ct; if (!addrequirement) asset.DispatchId = ct.DispatchId; assets.push(asset); //AttachedAssets if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { for (var j = 0; j < asset.AttachedAssets.length; j++) { var attasset = asset.AttachedAssets[j]; if (attasset.Selected) { if (!addrequirement) attasset.DispatchId = ct.DispatchId; if (attasset.TypeId === asset.TypeId)//和主机器Type相同 assets.push(attasset); else othertypeassets.push(attasset); } } } else { if (asset.AttachedToAsset) { var attoasset = asset.AttachedToAsset; if (attoasset.Selected) { if (!addrequirement) attoasset.DispatchId = ct.DispatchId; if (attoasset.TypeId === asset.TypeId)//和主机器Type相同 assets.push(attoasset); else othertypeassets.push(attoasset); } if (asset.AttachedToAsset.AttachedAssets && asset.AttachedToAsset.AttachedAssets.length > 0) { for (var j = 0; j < asset.AttachedToAsset.AttachedAssets.length; j++) { var atto_attasset = asset.AttachedToAsset.AttachedAssets[j]; if (asset.AssetId === atto_attasset.AssetId) continue; if (atto_attasset.Selected) { if (!addrequirement) atto_attasset.DispatchId = ct.DispatchId; if (atto_attasset.TypeId === asset.TypeId)//和主机器Type相同 assets.push(atto_attasset); else othertypeassets.push(atto_attasset); } } } } } } } var rst = { 'Assets': assets, 'OtherTypeAssets': othertypeassets }; return rst; } function removeAttachedAssets() { if (allRequirements && allRequirements.length > 0) { for (var i = 0; i < allRequirements.length; i++) { var req = allRequirements[i]; if (req.Assets) { for (var j = req.Assets.length - 1; j >= 0; j--) { var reqasset = req.Assets[j]; if (_removeattachedassets.indexOf(reqasset.AssetId) >= 0) req.Assets.splice(j, 1); } } if (req.Assets) req.ScheduledQuantity = req.Assets.length; } showJobsiteRequirementList(allRequirements); } } function OnSetMachine() { if (allRequirements && allRequirements.length > 0) { for (var i = 0; i < allRequirements.length; i++) { var req = allRequirements[i]; if (req.Assets) req.ScheduledQuantity = req.Assets.length; } } var assetdata = collectAssets(); currentRequirement.Assets = assetdata.Assets; currentRequirement.ScheduledQuantity = assetdata.Assets.length; if (!checkQuantity()) { showAlert(GetTextByKey("P_JS_REQUIREMENTIFORASSETSPLEASEREMOVEEXCESSASSETS1", "Requirement is for {0} asset(s), please remove excess asset(s).").replace('{0}', (currentRequirement.Quantity)), GetTextByKey("P_AM_ERROR", 'Error')); return; } if (assetdata.OtherTypeAssets && assetdata.OtherTypeAssets.length > 0) createRequirement(assetdata.OtherTypeAssets); if (_removeattachedassets && _removeattachedassets.length > 0) { removeAttachedAssets();//移除AttachedAssets _removeattachedassets = []; } $('#dialog_managemahchine').hide(); currentRequirement = null; grid_jsrequirementdt.reload(); showmaskbg(false); } function checkQuantity() { if (currentRequirement) { var count = 0; var tempsource = grid_assetdt.source; for (var i = 0; i < tempsource.length; i++) { var ct = tempsource[i]; if (ct.Selected) count++; } return currentRequirement.Quantity >= count; } else return true; } //Requirement列表机器管理-添加机器 function onAddDispatch() { var assets = []; var attachedassets = []; var tempsource = grid_allassetdt.source; for (var i = 0; i < tempsource.length; i++) { var asset = tempsource[i]; if (asset.Selected) { var casset = { 'AssetId': asset.AssetId } assets.push(casset); //AttachedAssets if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { for (var j = 0; j < asset.AttachedAssets.length; j++) { var attasset = asset.AttachedAssets[j]; if (attasset.Selected) { attachedassets.push(attasset); } } } else { if (asset.AttachedToAsset) { var attoasset = asset.AttachedToAsset; if (attoasset.Selected) attachedassets.push(attoasset); if (asset.AttachedToAsset.AttachedAssets && asset.AttachedToAsset.AttachedAssets.length > 0) { for (var j = 0; j < asset.AttachedToAsset.AttachedAssets.length; j++) { var atto_attasset = asset.AttachedToAsset.AttachedAssets[j]; if (asset.AssetId === atto_attasset.AssetId) continue; if (atto_attasset.Selected) { attachedassets.push(atto_attasset); } } } } } } } if (assets.length == 0) { $('#dialog_allmahchine').hide(); $("#dialogmask").hide(); return; } var count = currentRequirement.Quantity - currentRequirement.ScheduledQuantity; if (assets.length > count) { showAlert(GetTextByKey("P_JS_REQUIREMENTIFORASSETSPLEASEREMOVEEXCESSASSETS1", "Requirement is for {0} asset(s), please remove excess asset(s).").replace('{0}', (count)), GetTextByKey("P_AM_ERROR", 'Error')); return; } var stdt = new Date(currentRequirement.BeginDate.DisplayValue.replace("-", "/")); var now = new Date(currentdate); var time = now.getFullYear() + "/" + ((now.getMonth() + 1) < 10 ? "0" : "") + (now.getMonth() + 1) + "/" + (now.getDate() < 10 ? "0" : "") + now.getDate(); var stime = stdt.getFullYear() + "/" + ((stdt.getMonth() + 1) < 10 ? "0" : "") + (stdt.getMonth() + 1) + "/" + (stdt.getDate() < 10 ? "0" : "") + stdt.getDate(); var daycount = 0; var days = getDaysBetween(time, stime, true); if (days > 0 && days < 8) { daycount++; } var alerttitle = GetTextByKey('P_JS_ADDDISPATCH', 'Add Dispatch'); jobsitequery("AddDispatch", requireid + String.fromCharCode(170) + htmlencode(JSON.stringify(assets) + String.fromCharCode(170) + htmlencode(JSON.stringify(attachedassets))), function (data) { if (typeof (data) === "string") { showAlert(data, alerttitle); } else { _selectdispatchids = data; $('#dialog_allmahchine').hide(); $("#dialogmask").hide(); if (daycount > 0) { $('#dialog_managemahchine').hide(); OnRefresh(true); var msg = GetTextByKey("P_JS_SCHEDULEDREQUIREMENTSTAKEPLACEWITHINTHENEXTDAYSWOULDYOULIKETO", "{0} scheduled requirements take place within the next 7 days. Would you like to:").replace('{0}', 1); showRequirementConfirm(msg, alerttitle, function () { openAssignDispatch(0); }, function () { openAssignDispatch(1); }, function () { }, function () { }); } else getAvailableAssetsByRequirement(); } }, function (err) { $("#dialogmask").hide(); }); } //function OnExit() { //} function onDeleteDispatch() { var dispatchids = []; var tempsource = grid_assetdt.source; for (var j = 0; j < tempsource.length; j++) { var asset = tempsource[j]; if (asset.Selected) { dispatchids.push(asset.DispatchId); //收集相关联需删除的DispatchId if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { for (var i = 0; i < asset.AttachedAssets.length; i++) { var attasset = asset.AttachedAssets[i]; if (attasset.Selected && attasset.DispatchId) dispatchids.push(attasset.DispatchId); } } else { if (asset.AttachedToAsset) { if (asset.AttachedToAsset.Selected && asset.AttachedToAsset.DispatchId) dispatchids.push(asset.AttachedToAsset.DispatchId); if (asset.AttachedToAsset.AttachedAssets && asset.AttachedToAsset.AttachedAssets.length > 0) { for (var i = 0; i < asset.AttachedToAsset.AttachedAssets.length; i++) { var attasset = asset.AttachedToAsset.AttachedAssets[i]; if (attasset.Selected && attasset.DispatchId) dispatchids.push(attasset.DispatchId); } } } } } } if (dispatchids.length == 0) return; var item = { 'DispatchId': dispatchids, 'DeleteNotes': '' }; var p = htmlencode(JSON.stringify(item)); var text = GetTextByKey("P_JS_DELETETHEDISPATCH", "Would you like to delete the dispatch?"); var alerttitle = GetTextByKey("P_JS_DELETEDISPATCH", "Delete Dispatch"); showConfirmIndialog(text, alerttitle, function () { jobsitequery("DeleteDispatch", p, function (data) { getAvailableAssetsByRequirement(); }, function (err) { }); }); } function CheckDeleteAttachedAsset(asset) { if (asset.Selected) { showAttachAssetList([]); //ScheduleAssets显示相关联的assets if (dispatchAssetsObj.RelatedRequirementAssets && dispatchAssetsObj.RelatedRequirementAssets.length > 0) { var _showAttachedAssets = []; if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { for (var i = 0; i < asset.AttachedAssets.length; i++) { var attasset = asset.AttachedAssets[i]; var relatedasset = dispatchAssetsObj.RelatedRequirementAssets.find(a => a.AssetId == attasset.AssetId); if (relatedasset) { attasset.Selected = true; attasset.DispatchId = relatedasset.DispatchId; _showAttachedAssets.push(attasset); } } } else { if (asset.AttachedToAsset) { var atttoasset = asset.AttachedToAsset; var relatedasset = dispatchAssetsObj.RelatedRequirementAssets.find(a => a.AssetId == atttoasset.AssetId); if (relatedasset) { atttoasset.Selected = true; atttoasset.DispatchId = relatedasset.DispatchId; _showAttachedAssets.push(atttoasset); } if (asset.AttachedToAsset.AttachedAssets && asset.AttachedToAsset.AttachedAssets.length > 0) { for (var i = 0; i < asset.AttachedToAsset.AttachedAssets.length; i++) { var attasset = asset.AttachedToAsset.AttachedAssets[i]; var relatedasset = dispatchAssetsObj.RelatedRequirementAssets.find(a => a.AssetId == attasset.AssetId); if (relatedasset) { attasset.Selected = true; attasset.DispatchId = relatedasset.DispatchId; _showAttachedAssets.push(attasset); } } } } } if (_showAttachedAssets.length > 0) { openAttachedAssetDialog(3); showAttachAssetList(_showAttachedAssets); } } } } function OnPrevious() { if (!checkQuantity()) { showAlert(GetTextByKey("P_JS_REQUIREMENTIFORASSETSPLEASEREMOVEEXCESSASSETS1", "Requirement is for {0} asset(s), please remove excess asset(s).").replace('{0}', (currentRequirement.Quantity)), GetTextByKey("P_AM_ERROR", 'Error')); return; } if (--indexInRequirement < 0) indexInRequirement = allRequirements.length - 1; onManageAssets(allRequirements[indexInRequirement], true, indexInRequirement); changeGridSelectIndex(indexInRequirement); } function OnNext() { if (!checkQuantity()) { showAlert(GetTextByKey("P_JS_REQUIREMENTIFORASSETSPLEASEREMOVEEXCESSASSETS1", "Requirement is for {0} asset(s), please remove excess asset(s).").replace('{0}', (currentRequirement.Quantity)), GetTextByKey("P_AM_ERROR", 'Error')); return; } if (++indexInRequirement > allRequirements.length - 1) indexInRequirement = 0; onManageAssets(allRequirements[indexInRequirement], true, indexInRequirement); changeGridSelectIndex(indexInRequirement); } function changeGridSelectIndex(index) { } function OnMachineAdd() { $('#dialogmask').show(); var title = GetTextByKey("P_MA_SELECTASSET", "Select Assets"); $('#dialog_allmahchine .dialog-title span.title').html(title); $('#dialog_allmahchine').showDialogAuto(1400); showAllAssetList(alldispatchassets); } function showAttachAssetList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; rows.push(r); } grid_attachedassetdt.setData(rows); grid_attachedassetdt.refresh(); } var grid_attachedassetdt; function InitAttachedAssetGridData() { grid_attachedassetdt = createGridView('#dialog_attachedassetlist'); var list_columns = [ { name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, css: { 'width': 45, 'text-align': 'center' } }, { name: 'TypeName', caption: GetTextByKey("P_PM_ASSETTYPE", "Asset Type"), valueIndex: 'TypeName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'MakeName', caption: GetTextByKey("P_PM_MAKE", "Make"), valueIndex: 'MakeName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'ModelName', caption: GetTextByKey("P_PM_MODEL", "Model"), valueIndex: 'ModelName', css: { 'width': 100, 'text-align': 'left' } }, { name: 'AssetName', caption: GetTextByKey("P_JS_ASSETNAME", "Asset Name"), valueIndex: 'AssetName', css: { 'width': 150, '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 = 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.type = list_columns[hd].type; if (col.name === "Selected") { col.events = { onclick: function () { } }; } col.alwaysshow = list_columns[hd].alwaysshow; columns.push(col); } grid_attachedassetdt.canMultiSelect = false; grid_attachedassetdt.columns = columns; grid_attachedassetdt.init(); } function CheckRequirementExistsAsset(asset) { var exists = false; if (dispatchAssetsObj && dispatchAssetsObj.DispatchAssets && dispatchAssetsObj.DispatchAssets.length > 0) { for (var i = 0; i < dispatchAssetsObj.DispatchAssets.length; i++) { var disassts = dispatchAssetsObj.DispatchAssets[i]; if (disassts.AssetId === asset.AssetId) { exists = true; break; } } } return exists; } function CheckAttachedAsset(asset) { if (asset.Selected) { showAttachAssetList([]); var _showAttachedAssets = []; var opttype = 0; var toasset = null; if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { var attachedassets = []; for (var i = 0; i < asset.AttachedAssets.length; i++) { var attasset = asset.AttachedAssets[i]; if (asset.TypeId != attasset.TypeId) { if (addrequirement) { attasset.Selected = true; attachedassets.push(attasset); } else { var exists = CheckRequirementExistsAsset(attasset); if (!exists) { attasset.Selected = true; attachedassets.push(attasset); } } } } _showAttachedAssets = attachedassets; opttype = 1; } else { if (asset.AttachedToAsset) { var attachedtoassets = []; if (addrequirement) { asset.AttachedToAsset.Selected = true; attachedtoassets.push(asset.AttachedToAsset); } else { var exists = CheckRequirementExistsAsset(asset.AttachedToAsset); if (!exists) { asset.AttachedToAsset.Selected = true; attachedtoassets.push(asset.AttachedToAsset); } } if (asset.AttachedToAsset.AttachedAssets && asset.AttachedToAsset.AttachedAssets.length > 0) { for (var i = 0; i < asset.AttachedToAsset.AttachedAssets.length; i++) { var attasset = asset.AttachedToAsset.AttachedAssets[i]; if (asset.AssetId !== attasset.AssetId && asset.TypeId !== attasset.TypeId) { if (addrequirement) { attasset.Selected = true; attachedtoassets.push(attasset); } else { var exists = CheckRequirementExistsAsset(attasset); if (!exists) { attasset.Selected = true; attachedtoassets.push(attasset); } } } } } _showAttachedAssets = attachedtoassets; toasset = asset.AttachedToAsset; opttype = 2; } } if (_showAttachedAssets.length > 0) { openAttachedAssetDialog(opttype, toasset); showAttachAssetList(_showAttachedAssets); } } else { var selectedattachedassets = []; if (asset.AttachedAssets && asset.AttachedAssets.length > 0) { for (var i = 0; i < allRequirements.length; i++) { var req = allRequirements[i]; if (req.Assets && req.Assets.length > 0) { for (var j = 0; j < req.Assets.length; j++) { var reqasset = req.Assets[j]; if (reqasset.AttachedToAsset && reqasset.AttachedToAsset.AssetId === asset.AssetId) { reqasset.Selected = true; selectedattachedassets.push(reqasset); } } } } } else if (asset.AttachedToAsset) { for (var i = 0; i < allRequirements.length; i++) { var req = allRequirements[i]; if (req.Assets && req.Assets.length > 0) { for (var j = 0; j < req.Assets.length; j++) { var reqasset = req.Assets[j]; if (reqasset.AssetId === asset.AttachedToAsset.AssetId) { reqasset.Selected = true; selectedattachedassets.push(reqasset); break; } } } } for (var i = 0; i < allRequirements.length; i++) { var req = allRequirements[i]; if (req.Assets && req.Assets.length > 0) { for (var j = 0; j < req.Assets.length; j++) { var reqasset = req.Assets[j]; if (reqasset.AssetId !== asset.AssetId && reqasset.AttachedToAsset && reqasset.AttachedToAsset.AssetId === asset.AttachedToAsset.AssetId) { reqasset.Selected = true; selectedattachedassets.push(reqasset); } } } } } if (selectedattachedassets.length > 0) { openAttachedAssetDialog(3); showAttachAssetList(selectedattachedassets); } } } function openAttachedAssetDialog(opttype, toasset) {//opttype:1 Add Primary, 2: Add Secondary, 3: Remove,4:Delete $('#dialogmask').show(); $('#dialog_allassetmask').show(); $('#btn_removeattasset').hide(); var title = GetTextByKey('P_JS_SELECTATTACHEDASSETS', 'Select Attached Asset(s)'); var span1 = GetTextByKey('P_JS_THISASSETHASEQUIPMENTATTACHMENTSASSOCIATEDWITHIT', 'This asset has equipment/attachments associated with it.'); var span2 = GetTextByKey('P_JS_SELECTTHEASSETSTHATYOUWISHTOINDUDEWITHTHISASSET', 'Select the assets that you wish to indude with this asset.'); if (opttype == 3) { title = GetTextByKey('P_JS_REMOVEATTACHEDASSETS', 'Remove Attached Asset(s)') span2 = GetTextByKey('P_JS_WOULDYOULIKETOREMOVETHERELATEDREQUIREMENTS', 'Would you like to remove the related requirements?'); $('#btn_addattasset').hide(); $('#btn_removeattasset').show(); } else { if (opttype == 2) span1 = GetTextByKey('P_JS_THISASSETISATTACHEDTO', 'This asset is attached to {0}').replace('{0}', toasset ? toasset.AssetName : ""); $('#btn_addattasset').show(); $('#btn_removeattasset').hide(); } $('#span_attachedasset_tips1').text(span1); $('#span_attachedasset_tips2').text(span2); $('#dialog_attachedassets .dialog-title span.title').text(title); $('#dialog_attachedassets') .attr('act', 'edit') .css({ 'width': 600, 'top': (document.documentElement.clientHeight - $('#dialog_attachedassets').height()) / 4, 'left': (document.documentElement.clientWidth - $('#dialog_attachedassets').width()) / 2 }).showDialogfixed(); } function OnAddAttachedAssets() { var tempsource = grid_attachedassetdt.source; for (var i = 0; i < tempsource.length; i++) { var ct = tempsource[i]; if (ct.Selected) { if (_removeattachedassets) { for (var j = 0; j < _removeattachedassets.length; j++) { if (ct.AssetId === _removeattachedassets[j]) _removeattachedassets.splice(j, 1); } } } } $('#dialogmask').hide(); $('#dialog_allassetmask').hide(); $('#dialog_attachedassets').hide(); } var _removeattachedassets = []; function OnRemoveAttachedAssets() { _removeattachedassets = []; var tempsource = grid_attachedassetdt.source; for (var i = 0; i < tempsource.length; i++) { var ct = tempsource[i]; if (ct.Selected) { _removeattachedassets.push(ct.AssetId); } } $('#dialogmask').hide(); $('#dialog_allassetmask').hide(); $('#dialog_attachedassets').hide(); } function createRequirement(assets) { var item = getSearchItem(); var types = item.AssetTypes; for (var i = 0; i < assets.length; i++) { var asset = assets[i]; var existitem = getExistsItem(asset.TypeId); if (existitem) { if (existitem.Assets) { var existsasset = false; for (var j = 0; j < existitem.Assets.length; j++) { if (existitem.Assets[j].AssetId === asset.AssetId) { existsasset = true; continue; } } if (!existsasset) existitem.Assets.push(asset); } else existitem.Assets = [asset]; existitem.ScheduledQuantity = existitem.Assets.length; if (existitem.ScheduledQuantity > existitem.Quantity) existitem.Quantity = existitem.ScheduledQuantity; } else { types.push(asset.TypeId + ''); var aitem = { 'JobSiteId': item.JobSiteId, 'JobSiteName': item.JobSiteName, 'BeginDate': item.BeginDate, 'BeginDateStr': item.BeginDateStr, 'EndDate': item.EndDate, 'EndDateStr': item.EndDateStr, 'AssetType': asset.TypeId, 'AssetTypeName': asset.TypeName, 'Quantity': 1, 'Assets': [asset], 'ScheduledQuantity': 1, 'Days': item.Days, 'Notes': '', 'PointOfContact': item.PointOfContact, }; allRequirements.push(aitem); } } $("#div_assettypes").dropdownVals(types); if (allRequirements.length > 0) $("#btnFulfillRequest").show(); else $("#btnFulfillRequest").hide(); showJobsiteRequirementList(allRequirements); } //*********************************************End Manage Assets***********************************************//