fleet-contractor/Site/JobSite/js/jobsiterequirement.js
2024-03-26 15:56:31 +08:00

1308 lines
51 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

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: Remove4Delete
$('#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***********************************************//