This commit is contained in:
2023-04-28 12:22:26 +08:00
parent 88e0a25ecd
commit c9723008af
1047 changed files with 443540 additions and 1 deletions

View File

@ -0,0 +1,119 @@

function GetRoadMachines() {
jobsitequery("GetRoadMachines", "", function (data) {
if (data && data.length > 0) {
allroadassets = data;
editableSelectAssignAsset.setEnable(true);
editableSelectAssignAsset.datasource = data;
editableSelectAssignAsset.valuepath = "Id"
editableSelectAssignAsset.displaypath = "DisplayName";
}
}, function (err) {
});
}
function openAssignDispatch(seltype,) {
assignAsset = null;
_seltype = seltype;
if (_sendType == 1) {
_selectdispatchids = [];
for (var i = 0; i < grid_dt.source.length; i++) {
var ct = grid_dt.source[i].Values;
if (ct.Selected) {
_selectdispatchids.push(ct.DispatchId);
}
}
if (_selectdispatchids.length == 0) {
var title = "";
if (seltype == 1)
title = GetTextByKey('P_JS_EMAIL', 'Email');
else
title = GetTextByKey('P_MR_PRINT', 'Print');
showAlert(GetTextByKey('P_JS_PLEASESELECTDISPATCH', 'Please select Dispatch.'), title);
return;
}
}
if (!allroadassets)
GetRoadMachines();
editableSelectAssignAsset.val('');
showmaskbg(true);
$('#dialog_assignment .dialog-title span.title').text(GetTextByKey('P_JS_DISPATCHASSIGNMENT', 'Dispatch Assignment'));
//$('#mask_bg').show();
$('#dialog_assignment')
.attr('act', 'edit')
.css({
'width': 400,
'top': (document.documentElement.clientHeight - $('#dialog_assignment').height()) / 4,
'left': (document.documentElement.clientWidth - $('#dialog_assignment').width()) / 2
})
.showDialogfixed();
}
var assignAsset = null;
function onAssignContinue() {
assignAsset = editableSelectAssignAsset.selecteditem();
if (assignAsset == null) {
onAssignSkip();
}
else {
onAssignSkip(assignAsset.DisplayName);
}
}
function assignDispatch(asset) {
var item = {
'Type': _sendType,
'AssetID': asset.Id,
'ObjectIDs': _sendType == 0 ? _createrequireids : _selectdispatchids
};
var param = JSON.stringify(item);
param = htmlencode(param);
jobsitequery("AssignDispatch", param, function (data) {
if (typeof OnRefresh == "function")
OnRefresh();
}, function (err) {
});
}
function onAssignSkip(assignto) {
$("#dialog_assignment").hide();
if (_seltype == 0) {
showmaskbg(false);
if (_sendType == 0) {
onPrint(_createrequireids, assignto);
OnExit();
}
else if (_sendType == 1) {
OnPrint(assignto);
}
else if (_sendType == 2) {
OnPrint(assignto);
}
if (assignAsset != null)
assignDispatch(assignAsset);
}
else if (_seltype == 1) {
if (_sendType == 0) {
openSendEmails(assignto, _assetids, function () {
if (assignAsset != null)
assignDispatch(assignAsset);
});
}
else if (_sendType == 1) {
openSendEmails(assignto, null, function () {
if (assignAsset != null)
assignDispatch(assignAsset);
});
}
else if (_sendType == 2) {
openSendEmails(assignto, null, function () {
if (assignAsset != null)
assignDispatch(assignAsset);
});
}
}
}

224
Site/JobSite/js/email.js Normal file
View File

@ -0,0 +1,224 @@

function CheckEmail(mail) {
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (mail.length == 0)
return true;
return filter.test(mail);
}
function showContactList(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
for (var j in r) {
var a = r[j];
}
r.Text = false;
r.Email = false;
var fr = { Values: r };
rows.push(fr);
}
grid_maildt.setData(rows);
}
var grid_maildt;
function InitEmailGridData() {
grid_maildt = new GridView('#contactlist');
grid_maildt.lang = {
all: GetTextByKey("P_GRID_ALL", "(All)"),
ok: GetTextByKey("P_GRID_OK", "OK"),
reset: GetTextByKey("P_GRID_RESET", "Reset")
};
var list_columns = [
{ name: 'DisplayName', caption: GetTextByKey("P_MV_CONTACTNAME", "Contact Name"), valueIndex: 'DisplayName', css: { 'width': 148, 'text-align': 'left' } },
{ name: 'ContactTypeName', caption: GetTextByKey("P_MV_CONTACTTYPE", "Contact Type"), valueIndex: 'ContactTypeName', css: { 'width': 148, 'text-align': 'left' } },
//{ name: 'Text', caption: GetTextByKey("P_MV_TEXT", "Text"), valueIndex: 'Text', type: 3, css: { 'width': 45, 'text-align': 'center' } },
{ name: 'Email', caption: GetTextByKey("P_MV_EMAIL", "Email"), valueIndex: 'Email', type: 3, css: { 'width': 45, '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;
if (list_columns[hd].type) {
col.type = list_columns[hd].type;
}
columns.push(col);
if (col.name === "Text") {
col.enabled = function (item) {
return item.TextAddress !== '';
};
}
if (col.name === "Email") {
col.enabled = function (item) {
return item.ID !== '';
};
}
}
grid_maildt.canMultiSelect = false;
grid_maildt.columns = columns;
grid_maildt.init();
grid_maildt.selectedrowchanged = function (rowindex) {
var rowdata = grid_maildt.source[rowindex];
if (rowdata) {
}
}
}
function getDispatchContacts(assetids) {
var ctr = $("#selContractor").val();
if (!ctr) ctr = "";
var p = ctr + ";";
var ids = [];
if (_sendType == 0 || _sendType == 2) {
ids = assetids;
}
else {
for (var i = 0; i < grid_dt.source.length; i++) {
var ct = grid_dt.source[i].Values;
if (ct.Selected && ids.indexOf(ct.AssetId) < 0)
ids.push(ct.AssetId);
}
}
jobsitequery("GetDispatchContacts", JSON.stringify(ids), function (data) {
if (typeof (data) !== "string")
showContactList(data);
}, function () {
});
}
var _selectdispatchids = [];
var _assignto;
var aftersend = null;
function openSendEmails(assignto, assetids, next) {
_assignto = "";
if (assignto)
_assignto = assignto;
aftersend = next;
var title = GetTextByKey("P_JS_SENDDISPATCHREQUEST", 'Send Dispatch Request');
var aids = [];
if (_sendType == 0)
aids = assetids;
else if (_sendType == 1) {
aids = _selectdispatchids;
if (aids.length == 0) {
showAlert(GetTextByKey('P_JS_PLEASESELECTDISPATCH', 'Please select Dispatch.'), title);
return;
}
}
else if (_sendType == 2)
aids = _selectdispatchids;
getDispatchContacts(aids);
$('#sendmail_otheremailaddress').val('');
$('#sendmail_othertextaddress').val('');
$('#sendmail_desc').val('Please make the pick-ups/deliveries as indicated.');
$('#dialog_sendmail .dialog-title span.title').text(title);
$('#dialog_sendmail')
.attr('act', 'edit')
.css({
'width': 500,
'top': (document.documentElement.clientHeight - $('#dialog_sendmail').height()) / 4,
'left': (document.documentElement.clientWidth - $('#dialog_sendmail').width()) / 2
})
.showDialogfixed();
}
function onSendEmails() {
var alerttitle = GetTextByKey("P_WO_SENDEMAIL", 'Send Email');
var ids = [];
if (_sendType == 0) {
ids = _createrequireids;
}
else {
ids = _selectdispatchids;
}
if (ids.length == 0)
return;
var emailaddress = [];
var textaddress = [];
var otheremailaddressstr = $('#sendmail_otheremailaddress').val();
if (otheremailaddressstr !== "") {
var address = otheremailaddressstr.split(';');
for (var i = 0; i < address.length; i++) {
if (!CheckEmail($.trim(address[i]))) {
showAlert(GetTextByKey("P_MV_OTHEREMAILADDRESSISINVALID", 'The other email address {0} is invalid.').replace('{0}', emailaddress[i]), alerttitle);
return;
}
emailaddress.push({ 'Key': '', 'Value': address[i] });
}
}
var othertextaddressstr = $('#sendmail_othertextaddress').val();
if (othertextaddressstr !== "") {
var address = othertextaddressstr.split(';');
for (var i = 0; i < address.length; i++) {
if (!CheckEmail($.trim(address[i]))) {
showAlert(GetTextByKey("P_MV_OTHERTEXTADDRESSISINVALID", 'The other text address {0} is invalid.').replace('{0}', emailaddress[i]), alerttitle);
return;
}
textaddress.push({ 'Key': '', 'Value': address[i] });
}
}
for (var i = 0; i < grid_maildt.source.length; i++) {
var ct = grid_maildt.source[i].Values;
if (ct.Email) {
emailaddress.push({ 'Key': ct.IID, 'Value': ct.ID });
}
if (ct.Text) {
textaddress.push({ 'Key': ct.IID, 'Value': ct.TextAddress });
}
}
if (emailaddress.length == 0 && textaddress.length == 0) {
$('#dialog_sendmail').hideDialog();
$('#mask_bg').hide();
return;
}
var item = {
'Type': _sendType,
'ObjectIDs': ids,
'Description': $('#sendmail_desc').val(),
'EmailAddress': emailaddress,
'TextAddress': textaddress,
'AssignTo': _assignto
};
jobsitequery('SendEmails', htmlencode(JSON.stringify(item)), function (data) {
if (_sendType == 0) {
$('#dialog_sendmail').hideDialog();
$('#mask_bg').hide();
OnExit(data);
}
else {
if (data !== 'OK')
showAlert(data, alerttitle);
else
showAlert(GetTextByKey("P_WO_MESSAGESENT", 'Message sent'), alerttitle);
$('#dialog_sendmail').hideDialog();
$('#mask_bg').hide();
}
if (aftersend)
aftersend();
});
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,632 @@

function showSchedulerData(data) {
if (data) {
assetsObj = data;
if (assetsObj.HasSchedule)
grid_dt.columns[grid_dt.columns.length - 1].width = assetsObj.TotalDays * 5;
else
grid_dt.columns[grid_dt.columns.length - 1].width = 320;
grid_dt.init();
showSchedulerList(data.DispatchAssets);
}
else {
assetsObj = null;
grid_dt.columns[grid_dt.columns.length - 1].width = 320;
grid_dt.init();
showSchedulerList([]);
}
}
function showSchedulerList(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
var fr = { Values: r };
rows.push(fr);
}
grid_dt.setData(rows);
grid_dt.refresh();
}
var grid_dt;
function InitGridData() {
grid_dt = new GridView('#schedulerlist');
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: 'TypeName', caption: GetTextByKey("P_JS_ASSETTYPE", "Asset Type"), valueIndex: 'TypeName', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'MakeName', caption: GetTextByKey("P_PM_MAKE", "Make"), valueIndex: 'MakeName', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'ModelName', caption: GetTextByKey("P_PM_MODEL", "Model"), valueIndex: 'ModelName', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'AssetName', caption: GetTextByKey("P_JS_ASSETNAME", "Asset Name"), valueIndex: 'AssetName', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'CurrentJobSite', caption: GetTextByKey("P_JS_CURRJOBSITE", "Current Jobsite"), allowFilter: true, valueIndex: 'CurrentJobSite', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'AssetGroups', caption: GetTextByKey("P_JS_ASSETGROUP", "Asset Group"), valueIndex: 'AssetGroups', allowFilter: true, 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', allowFilter: true, 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;
col.alwaysshow = list_columns[hd].alwaysshow;
if (col.name === "Schedules") {
var labelCount = 4;
col.sortable = false;
col.allowHtml = true;
col.caption = function () {
if (!assetsObj || !assetsObj.HasSchedule) return;
var container = $('<span></span>').css({ position: 'relative', height: '100%', display: 'block' });
var left = 0;
for (var i = 0; i < assetsObj.Labels.length; i++) {
var label = assetsObj.Labels[i];
var sp = $('<span class="span-caption"></span>').text(label.Key).css({ left: left });
left += parseInt(label.Value) * 5;
container.append(sp);
}
grid_dt.resize();
//var totalDays = (led.getTime() - fbd.getTime()) / (1000 * 60 * 60 * 24);
//var interval = parseInt(totalDays / labelCount);
//if (totalDays % labelCount != 0)
// interval += 1;
//var d = new Date(assetsObj.BeginDate);
//var w = col.width / labelCount;
//for (var i = 0; i < labelCount; i++) {
// var label = new DateFormatter().formatDate(d, 'm/d/Y');
// var sp = $('<span class="span-caption"></span>').text(label).css({ left: w * i });
// container.append(sp);
// d = new Date(d.getTime() + interval * 1000 * 60 * 60 * 24);
//}
return container;
}
col.filter = function (item) {
if (item.ScheduleParts && assetsObj && assetsObj.HasSchedule) {
var totalDays = assetsObj.TotalDays;
var interval = parseInt(totalDays / labelCount);
if (totalDays % labelCount != 0)
interval += 1;
totalDays = interval * labelCount;
var container = $('<div></div>').css({
position: 'relative',
height: '20px',
});
var d = new Date(assetsObj.BeginDate);
for (var i = 0; i < item.ScheduleParts.length; i++) {
var sp = item.ScheduleParts[i];
var bdate = new Date(sp.BeginDate);
var edate = new Date(sp.EndDate);
var l = (bdate.getTime() - d.getTime()) / (1000 * 60 * 60 * 24) / totalDays * col.width;
var w = (edate.getTime() - bdate.getTime()) / (1000 * 60 * 60 * 24) / totalDays * col.width;
var color = "";
if (sp.Schedules.length == 1)
color = sp.Schedules[0].Color;
else {
for (var j = 0; j < sp.Schedules.length; j++) {
if (color !== "")
color += ","
color += sp.Schedules[j].Color;
}
}
var df = new DateFormatter();
var title = df.formatDate(bdate, 'm/d/Y') + " - " + df.formatDate(new Date((edate.getTime() - 1000 * 60 * 60 * 24)), 'm/d/Y') + "\n";
for (var j = 0; j < sp.Schedules.length; j++) {
var bd = new Date(sp.Schedules[j].BeginDate);
var ed = new Date(sp.Schedules[j].EndDate);
title += sp.Schedules[j].JobSiteName + ": " + df.formatDate(bd, 'm/d/Y') + " - " + df.formatDate(ed, 'm/d/Y');
if (sp.Schedules[j].PointOfContact)
title += "\n " + GetTextByKey("P_JS_CONTACT_COLON", "Contact: ") + " " + sp.Schedules[j].PointOfContact;
if (sp.Schedules[j].Creator)
title += "\n " + GetTextByKey("P_JS_CREATOR_COLON", "Creator: ") + " " + sp.Schedules[j].Creator;
if (j != sp.Schedules.length - 1)
title += "\n";
}
var bar = $('<span class="span-bar"></span>');
bar.css({
left: l,
width: w - 1,
'border-left': '1px solid transparen'
});
if (sp.Schedules.length == 1)
bar.css("backgroundColor", color);
else {
//bar.css("background", "url(img/gridline.jpg) repeat 20px 20px");
//bar.css("background", "linear-gradient(45deg," + color + ")");
//bar.css("background-image", "repeating-linear-gradient(45deg,white, white 5px,#ff9900 5px,#ff9900 7px)");
//bar.css("background-image", "repeating-linear-gradient(135deg,blue 1px, transparent 0), repeating-linear-gradient(45deg, red 1px, transparent 0)");
//bar.css("background-size", "5px 5px");
//bar.css("background-image", "url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><g fill='orange' fill-opacity='1'><path fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/></g></svg>\")");
bar.css("background-image", "url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><g fill-opacity='0.5'><path d='M0 0L8 8z M0 8L8 0z' style='fill:white;stroke:gray;stroke-width:1'/></g></svg>\")");
}
bar.attr("title", title);
if (!IsReadOnly) {
bar.dblclick(sp, function (e) {
onEditScheduler(item, e.data.Schedules);
});
}
container.append(bar);
}
return container;
}
};
col.styleFilter = function () {
return {
'margin-top': '3px',
'margin-bottom': '0px',
};
}
}
columns.push(col);
}
grid_dt.canMultiSelect = false;
grid_dt.columns = columns;
grid_dt.init();
grid_dt.celldblclick = function (rowindex, columnIndex) {
if (!IsReadOnly) {
if (columnIndex != grid_dt.columns.length - 1) {
var rowdata = grid_dt.source[rowindex];
if (rowdata) {
onEditScheduler(rowdata.Values);
}
}
}
}
grid_dt.selectedrowchanged = function (rowindex) {
var rowdata = grid_dt.source[rowindex];
if (rowdata) {
}
}
}
if (typeof jobsiteschedulerCtrl !== 'function') {
$jobsiteschedulerCtrl = function jobsiteschedulerCtrl() {
this.tmpobj = {
};
this.wizardCtrl = null;
this.vue = null;
};
(function () {
'use strict';
var dataGrid = window.DataGrid || window['g5-datagrid'];
$jobsiteschedulerCtrl.prototype.getData = function (/*dataObj, tmpdata*/) {
return this.vue.source;
};
$jobsiteschedulerCtrl.prototype.setData = function (data) {
if (data) {
for (var i = 0; i < data.length; i++) {
data[i].Selected = false;
}
}
this.vue.source = data ? data : [];
this.vue.$refs.grid.resize();
};
$jobsiteschedulerCtrl.prototype.reload = function () {
this.vue.$refs.grid.reload()
};
$jobsiteschedulerCtrl.prototype.Init = function (parent, newselected) {
var ethis = this;
//加载子页面模版
parent.load('../template/JobsiteSchedulerCtrl.html?v=8', function () {
ethis.vue = new Vue({
el: parent.find('.JobsiteSchedulerCtrl')[0],
components: {
'data-grid': dataGrid
},
data: {
wnd: window.parent,
//editable: true,
columns: [],
source: []
},
computed: {
},
watch: {
source: function (val) {
}
},
methods: {
cellvaluechanged: function (item, key) {
},
rowdblclick: function (e) {
}
}
});
ethis.vue.columns = createGridColumn(newselected);
});
};
function createGridColumn(newselected) {
var editable = true;
var columns = [
{
key: 'Selected',
caption: '',
type: dataGrid.COLUMN_TYPE.checkbox,
width: 30,
align: 'center',
sortable: false,
orderable: false,
resizable: false,
allcheck: false,
enabled: function (item) {
return !item.Completed;
}
},
{
key: 'JobSiteName',
caption: GetTextByKey("P_JS_JOBSITE", "Jobsite"),
type: dataGrid.COLUMN_TYPE.label,
width: 200,
orderable: false,
resizable: false,
enabled: false
},
{
key: 'BeginDateStr',
caption: GetTextByKey("P_JS_BEGINDATE", 'Begin Date'),
type: dataGrid.COLUMN_TYPE.datepicker,
width: 120,
orderable: false,
resizable: false,
enabled: editable,
onchanged: function (item) {
item.Changed = true;
}
},
{
key: 'EndDateStr',
caption: GetTextByKey("P_JS_ENDDATE", 'End Date'),
type: dataGrid.COLUMN_TYPE.datepicker,
width: 120,
orderable: false,
resizable: false,
enabled: editable,
onchanged: function (item) {
item.Changed = true;
}
},
{
key: 'Delete',
type: dataGrid.COLUMN_TYPE.link,
align: 'center',
width: 30,
orderable: false,
resizable: false,
enabled: editable,
filter: function (item) {
return item.Completed ? '' : '\uf00d';
},
onclick: function (e, item) {
onDeleteScheduler(item);
},
styleFilter: function (item) {
return {
'font-family': 'FontAwesome',
'cursor': 'pointer',
'color': 'rgb(123, 28, 33)'
};
},
attrs: { 'title': GetTextByKey("P_JS_DELETE", 'Delete') }
}
];
return columns;
}
}());
}
var currentscheduler;
var allSchedulers;
function onEditScheduler(item, schedules) {
allSchedulers = [];
currentscheduler = item;
if (!schedules || schedules.length == 0) {
schedules = item.Schedules;
}
if (schedules && schedules.length > 0)
allSchedulers = schedules;
$('#dialog_assetname').text(item.AssetName);
$('#dialog_assettype').text(item.TypeName);
$('#dialog_make').text(item.MakeName);
$('#dialog_model').text(item.ModelName);
showmaskbg(true);
var title = GetTextByKey("P_JS_MANAGESCHEDULER", "Manage Scheduler");
$('#dialog_managescheduler .dialog-title span.title').html(title);
$('#dialog_managescheduler')
.attr('init', 1)
.css({
'top': (document.documentElement.clientHeight - $('#dialog_managescheduler').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_managescheduler').width()) / 2
}).showDialogfixed();
if (jobsiteschedulerCtrl) {
jobsiteschedulerCtrl.setData(allSchedulers);
}
}
function onDeleteScheduler(item) {
var schduler = item;
var ids = [];
if (schduler) {
ids.push(schduler.DispatchId);
}
else {
for (var i = 0; i < jobsiteschedulerCtrl.vue.source.length; i++) {
var sch = jobsiteschedulerCtrl.vue.source[i];
if (sch.Selected && !sch.Completed) {
ids.push(sch.DispatchId);
}
}
}
if (ids.length == 0)
return;
var text = GetTextByKey("P_JS_WOULDYOULIKETODELETETHESCHEDULERS", "Would you like to delete the scheduler(s)?");
var alerttitle = GetTextByKey("P_JS_DELETESCHEDULER", "Delete Scheduler");
showConfirmIndialog(text, alerttitle, function () {
var dispatchids = [];
if (schduler) {
dispatchids.push(schduler.DispatchId);
var index = jobsiteschedulerCtrl.vue.source.indexOf(schduler);
jobsiteschedulerCtrl.vue.$refs.grid.deleteRow(index);
}
else {
for (var i = jobsiteschedulerCtrl.vue.source.length - 1; i >= 0; i--) {
var sch = jobsiteschedulerCtrl.vue.source[i];
if (sch.Selected && !sch.Completed) {
dispatchids.push(sch.DispatchId);
jobsiteschedulerCtrl.vue.$refs.grid.deleteRow(i);
}
}
}
if (dispatchids.length == 0)
return;
var item = {
'DispatchId': dispatchids,
'DeleteNotes': ''
};
var p = htmlencode(JSON.stringify(item));
jobsitequery("DeleteDispatch", p, function (data) {
}, function (err) {
});
});
}
function checkSchedulerItems(alerttitle) {
var items = [];
for (var i = 0; i < jobsiteschedulerCtrl.vue.source.length; i++) {
var sch = jobsiteschedulerCtrl.vue.source[i];
if (sch.Changed) {
var item = {
'DispatchId': sch.DispatchId,
'MoveDate': sch.MoveDate,
'BeginDate': sch.BeginDateStr,
'EndDate': sch.EndDateStr,
'Notes': sch.Notes
};
if (!item.BeginDate) {
showAlert(GetTextByKey("P_JS_PLEASEENTERTHEBEGINDATE", "Please enter the Begin Date."), alerttitle);
return false;
}
if (!checkDate(item.BeginDate)) {
showAlert(GetTextByKey("P_JS_BEGINDATEFORMATERROR", "Begin Date format error."), alerttitle);
return false;
}
if (!item.EndDate) {
showAlert(GetTextByKey("P_JS_PLEASEENTERTHEENDDATE", "Please enter the End Date."), alerttitle);
return false;
}
if (!checkDate(item.EndDate)) {
showAlert(GetTextByKey("P_JS_ENDDATEFORMATERROR", "End Date format error."), alerttitle);
return false;
}
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 (stdt < nowdt) {
// showAlert(GetTextByKey("P_JS_BEGINDATESHOULDBENOEARLIERTHANTODAYSDATE", "Begin Date should be no earlier than todays date. Please select another date."), alerttitle);
// return false;
//}
//if (etdt < nowdt) {
// showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE1", "End Date must be later than Begin Date. Please select another date range."), alerttitle);
// return false;
//}
if (stdt > etdt) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), alerttitle);
return false;
}
items.push(item);
}
}
return items;
}
function onUpdateScheduler() {
if (jobsiteschedulerCtrl.vue.source.length == 0) {
$('#dialog_managescheduler').hide();
$('#mask_bg').hide();
OnRefresh();
return;
}
var alerttitle = GetTextByKey("P_JS_MANAGESCHEDULER", "Manage Scheduler");
var items = checkSchedulerItems(alerttitle);
if (!items)
return;
if (items.length == 0) {
$('#dialog_managescheduler').hide();
$('#dialogmask').hide();
OnRefresh();
return;
}
showloading(true);
var param = JSON.stringify(items);
param = htmlencode(param);
jobsitequery("UpdateDispatch", param, function (data) {
showloading(false);
if (data !== "OK") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
}
$('#dialog_managescheduler').hide();
$('#dialogmask').hide();
OnRefresh();
}, function (err) {
console.log(err);
showloading(false);
showAlert(GetTextByKey("P_JS_FAILEDTOSAVE", "Failed to save jobsite."), alerttitle);
});
}
function openAddScheduler() {
showmaskbg(true);
$('#dialogmask').show();
$('#dialog_addjobsite').val('');
$('#dialog_addbegindate').val('');
$('#dialog_addenddate').val('');
$('#dialog_addnotes').val('');
$('#dialog_pointofcontact').val('');
var title = GetTextByKey("P_JS_ADDSCHEDULER", "Add Scheduler");
$('#dialog_addscheduler .dialog-title span.title').html(title);
$('#dialog_addscheduler')
.attr('init', 1)
.css({
'top': (document.documentElement.clientHeight - $('#dialog_addscheduler').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_addscheduler').width()) / 2
}).showDialogfixed();
}
function onAddScheduler(ignorebeginpast) {
var alerttitle = GetTextByKey("P_JS_ADDSCHEDULER", "Add Scheduler");
var item = {
'JobSiteId': $('#dialog_addjobsite').find("option:selected").val(),
'JobSiteName': $("#dialog_addjobsite").find("option:selected").text(),
'BeginDate': $.trim($('#dialog_addbegindate').val()),
'EndDate': $.trim($('#dialog_addenddate').val()),
'Quantity': 1,
'Notes': $('#dialog_addnotes').val(),
'PointOfContact': $('#dialog_pointofcontact').val()
};
item.AssetType = currentscheduler.TypeId;
var assets = [];
var asset = {
'AssetId': currentscheduler.AssetId,
'BeginDate': item.BeginDate,
'EndDate': item.EndDate
};
assets.push(asset);
item.Assets = assets;
if (item.BeginDate.length === 0) {
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.length === 0) {
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?")
showConfirm(msg, alerttitle, function () {
onAddScheduler(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;
}
$('#dialogmask1').show();
var param = JSON.stringify(item);
param = htmlencode(param);
jobsitequery("CreateNewRequirment", param, function (data) {
if (typeof (data) === "string") {
showAlert(data, alerttitle);
$('#dialogmask1').hide();
} else {
$('#dialog_addscheduler').hide();
$('#dialogmask').hide();
$('#dialogmask1').hide();
var scheduleritem = item;
scheduleritem.DispatchId = data[0];
scheduleritem.BeginDateStr = item.BeginDate;
scheduleritem.EndDateStr = item.EndDate;
allSchedulers.push(scheduleritem);
}
}, function (err) {
console.log(err);
showAlert(GetTextByKey("P_JS_FAILEDTOSAVESCHEDULER", "Failed to save scheduler."), alerttitle);
$('#dialogmask1').hide();
});
}