sync
This commit is contained in:
@ -3,11 +3,8 @@ 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";
|
||||
$('#dialog_assignasset').dropdownDisabled(false);
|
||||
$('#dialog_assignasset').dropdownSource(data);
|
||||
}
|
||||
|
||||
}, function (err) {
|
||||
@ -19,8 +16,9 @@ function openAssignDispatch(seltype,) {
|
||||
_seltype = seltype;
|
||||
if (_sendType == 1) {
|
||||
_selectdispatchids = [];
|
||||
for (var i = 0; i < grid_dt.source.length; i++) {
|
||||
var ct = grid_dt.source[i].Values;
|
||||
var tempsource = grid_dt.source;
|
||||
for (var i = 0; i < tempsource.length; i++) {
|
||||
var ct = tempsource[i];
|
||||
if (ct.Selected) {
|
||||
_selectdispatchids.push(ct.DispatchId);
|
||||
}
|
||||
@ -38,7 +36,7 @@ function openAssignDispatch(seltype,) {
|
||||
|
||||
if (!allroadassets)
|
||||
GetRoadMachines();
|
||||
editableSelectAssignAsset.val('');
|
||||
$('#dialog_assignasset').dropdownVal('');
|
||||
showmaskbg(true);
|
||||
$('#dialog_assignment .dialog-title span.title').text(GetTextByKey('P_JS_DISPATCHASSIGNMENT', 'Dispatch Assignment'));
|
||||
$('#dialog_assignment')
|
||||
@ -53,7 +51,7 @@ function openAssignDispatch(seltype,) {
|
||||
|
||||
var assignAsset = null;
|
||||
function onAssignContinue() {
|
||||
assignAsset = editableSelectAssignAsset.selecteditem();
|
||||
assignAsset = $('#dialog_assignasset').dropdownItem();
|
||||
if (assignAsset == null) {
|
||||
onAssignSkip();
|
||||
}
|
||||
|
@ -15,8 +15,7 @@ function showContactList(data) {
|
||||
}
|
||||
r.Text = false;
|
||||
r.Email = false;
|
||||
var fr = { Values: r };
|
||||
rows.push(fr);
|
||||
rows.push(r);
|
||||
}
|
||||
|
||||
grid_maildt.setData(rows);
|
||||
@ -24,12 +23,7 @@ function showContactList(data) {
|
||||
|
||||
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")
|
||||
};
|
||||
grid_maildt = createGridView('#contactlist');
|
||||
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' } },
|
||||
@ -65,12 +59,6 @@ function InitEmailGridData() {
|
||||
grid_maildt.canMultiSelect = false;
|
||||
grid_maildt.columns = columns;
|
||||
grid_maildt.init();
|
||||
|
||||
grid_maildt.selectedrowchanged = function (rowindex) {
|
||||
var rowdata = grid_maildt.source[rowindex];
|
||||
if (rowdata) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -84,8 +72,9 @@ function getDispatchContacts(assetids) {
|
||||
ids = assetids;
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < grid_dt.source.length; i++) {
|
||||
var ct = grid_dt.source[i].Values;
|
||||
var tempsource = grid_dt.source;
|
||||
for (var i = 0; i < tempsource.length; i++) {
|
||||
var ct = tempsource[i];
|
||||
if (ct.Selected && ids.indexOf(ct.AssetId) < 0)
|
||||
ids.push(ct.AssetId);
|
||||
}
|
||||
@ -177,8 +166,9 @@ function onSendEmails() {
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < grid_maildt.source.length; i++) {
|
||||
var ct = grid_maildt.source[i].Values;
|
||||
var tempsource = grid_maildt.source;
|
||||
for (var i = 0; i < tempsource.length; i++) {
|
||||
var ct = tempsource[i];
|
||||
if (ct.Email) {
|
||||
emailaddress.push({ 'Key': ct.IID, 'Value': ct.ID });
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,10 +2,11 @@
|
||||
function showSchedulerData(data) {
|
||||
if (data) {
|
||||
assetsObj = data;
|
||||
var col = grid_dt.columns.find(c => c.name === 'Schedules');
|
||||
if (assetsObj.HasSchedule)
|
||||
grid_dt.columns[grid_dt.columns.length - 1].width = assetsObj.TotalDays * 5;
|
||||
col.width = assetsObj.TotalDays * 5;
|
||||
else
|
||||
grid_dt.columns[grid_dt.columns.length - 1].width = 320;
|
||||
col.width = 320;
|
||||
grid_dt.init();
|
||||
showSchedulerList(data.DispatchAssets);
|
||||
}
|
||||
@ -21,8 +22,22 @@ function showSchedulerList(data) {
|
||||
var rows = [];
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var r = data[i];
|
||||
var fr = { Values: r };
|
||||
rows.push(fr);
|
||||
for (var j in r) {
|
||||
if (j === "StartDate") {
|
||||
r[j] = { DisplayValue: r["StartDateStr"], Value: r[j] };
|
||||
}
|
||||
else if (j === "FinishDate") {
|
||||
r[j] = { DisplayValue: r["FinishDateStr"], Value: r[j] };
|
||||
}
|
||||
else if (j === "EngineHours") {
|
||||
r[j] = { DisplayValue: r[j] === null ? "" : r[j], Value: r[j] };
|
||||
}
|
||||
if (r.AttachedToAsset)
|
||||
r.AttachedToAssetName = r.AttachedToAsset.AssetName;
|
||||
else
|
||||
r.AttachedToAssetName = r.AssetName;
|
||||
}
|
||||
rows.push(r);
|
||||
}
|
||||
|
||||
grid_dt.setData(rows);
|
||||
@ -31,21 +46,21 @@ function showSchedulerList(data) {
|
||||
|
||||
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")
|
||||
};
|
||||
grid_dt = createGridView('#schedulerlist', true);
|
||||
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: 'MakeName', caption: GetTextByKey("P_JS_MAKE", "Make"), valueIndex: 'MakeName', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
|
||||
{ name: 'ModelName', caption: GetTextByKey("P_JS_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: 'AttachedToAsset', caption: GetTextByKey("P_JS_ATTACHEDTO", "Attached To"), valueIndex: 'AttachedToAssetName', 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: 'NextJobSite', caption: GetTextByKey("P_JS_SCHEDULEDFOR", "Scheduled For"), allowFilter: true, valueIndex: 'NextJobSite', 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: 'EngineHours', caption: GetTextByKey("P_JS_ENGINEHOURS", "Engine Hours"), valueIndex: 'EngineHours', allowFilter: true, 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: 'StartDate', caption: GetTextByKey("P_JS_START", "Start"), valueIndex: 'StartDate', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
|
||||
{ name: 'FinishDate', caption: GetTextByKey("P_JS_FINISH", "Finish"), valueIndex: 'FinishDate', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
|
||||
{ name: 'DurationDays', caption: GetTextByKey("P_JS_DURATIONDAYS", "Duration (days)"), valueIndex: 'DurationDays', allowFilter: true, css: { 'width': 120, 'text-align': 'right' } },
|
||||
{ name: 'Schedules', caption: "gantt", valueIndex: 'ScheduleParts', css: { 'width': 320, 'text-align': 'left' } }
|
||||
];
|
||||
var columns = [];
|
||||
@ -63,286 +78,176 @@ function InitGridData() {
|
||||
col.type = list_columns[hd].type;
|
||||
|
||||
col.alwaysshow = list_columns[hd].alwaysshow;
|
||||
if (col.name === "Schedules") {
|
||||
var labelCount = 4;
|
||||
if (col.name === "AttachedToAsset") {
|
||||
col.sortFilter = function (a, b) {
|
||||
|
||||
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;
|
||||
a = a.AttachedToAssetName + (a.AttachedToAsset ? "1" : "");
|
||||
b = b.AttachedToAssetName + (b.AttachedToAsset ? "1" : "");
|
||||
return a > b ? 1 : -1;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
else if (col.name === "Schedules") {
|
||||
col.sortable = false;
|
||||
col.orderable = false;
|
||||
col.type = SchedulesColumn;
|
||||
col.onScheduleClicked = function (item, sp) {
|
||||
onEditScheduler(item, sp.Schedules);
|
||||
};
|
||||
col.styleFilter = function () {
|
||||
return {
|
||||
'margin-top': '3px',
|
||||
'margin-bottom': '0px',
|
||||
'position': 'relative',
|
||||
'height': '36px',
|
||||
};
|
||||
}
|
||||
}
|
||||
columns.push(col);
|
||||
}
|
||||
grid_dt.canMultiSelect = false;
|
||||
grid_dt.columns = columns;
|
||||
grid_dt.init();
|
||||
grid_dt.celldblclick = function (rowindex, columnIndex) {
|
||||
grid_dt.onCellDblClicked = function (rowindex, columnIndex) {
|
||||
if (!IsReadOnly) {
|
||||
if (columnIndex != grid_dt.columns.length - 1) {
|
||||
var rowdata = grid_dt.source[rowindex];
|
||||
if (rowdata) {
|
||||
onEditScheduler(rowdata.Values);
|
||||
onEditScheduler(rowdata);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grid_dt.selectedrowchanged = function (rowindex) {
|
||||
var rowdata = grid_dt.source[rowindex];
|
||||
if (rowdata) {
|
||||
grid_dt.allcolumns = columns;
|
||||
// multiple sort
|
||||
grid_dt.columnchanged = function (ev) {
|
||||
if (ev === 'sort') {
|
||||
try {
|
||||
var sorts = JSON.parse(window.localStorage.getItem('jobsite_schedulers_sorts'));
|
||||
delete sorts[`${companyid}_${userid}`];
|
||||
window.localStorage.setItem('jobsite_schedulers_sorts', JSON.stringify(sorts));
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
};
|
||||
grid_dt.onsorts = function (arr) {
|
||||
var sorts;
|
||||
try {
|
||||
sorts = JSON.parse(window.localStorage.getItem('jobsite_schedulers_sorts'));
|
||||
if (sorts == null) {
|
||||
sorts = {};
|
||||
}
|
||||
}
|
||||
catch {
|
||||
sorts = {};
|
||||
}
|
||||
sorts[`${companyid}_${userid}`] = arr;
|
||||
window.localStorage.setItem('jobsite_schedulers_sorts', JSON.stringify(sorts));
|
||||
};
|
||||
try {
|
||||
var sorts = JSON.parse(window.localStorage.getItem('jobsite_schedulers_sorts'));
|
||||
grid_dt.sortArray = sorts[`${companyid}_${userid}`];
|
||||
} catch { }
|
||||
getGridLayout(gridLayoutID, grid_dt);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
function showJobsiteSchedulerList(data) {
|
||||
var rows = [];
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var r = data[i];
|
||||
r.Selected = false;
|
||||
r.Changed = false;
|
||||
for (var j in r) {
|
||||
if (j === "BeginDate") {
|
||||
r[j] = { DisplayValue: r["BeginDateStr"], Value: r[j] };
|
||||
}
|
||||
if (j === "EndDate") {
|
||||
r[j] = { DisplayValue: r["EndDateStr"], Value: r[j] };
|
||||
}
|
||||
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;
|
||||
}
|
||||
}());
|
||||
rows.push(r);
|
||||
}
|
||||
|
||||
grid_jsschedulerdt.setData(rows);
|
||||
grid_jsschedulerdt.refresh();
|
||||
}
|
||||
|
||||
var grid_jsschedulerdt;
|
||||
function InitJobsiteschedulerGridData() {
|
||||
grid_jsschedulerdt = createGridView('#schedulerlist1');
|
||||
grid_jsschedulerdt.isEditable = true;
|
||||
var list_columns = [
|
||||
{ name: 'Selected', caption: "", valueIndex: 'Selected', type: 3, css: { 'width': 45, 'text-align': 'center' } },
|
||||
{ name: 'JobSiteName', caption: GetTextByKey("P_JOBSITES", "Jobsite"), valueIndex: 'JobSiteName', allowFilter: true, css: { 'width': 130, 'text-align': 'left' } },
|
||||
{ name: 'BeginDate', caption: GetTextByKey("P_JS_BEGINDATE", 'Begin Date'), valueIndex: 'BeginDate', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
|
||||
{ name: 'EndDate', caption: GetTextByKey("P_JS_ENDDATE", 'End Date'), valueIndex: 'EndDate', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
|
||||
{ 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.BeginDateStr;
|
||||
};
|
||||
col.sortFilter = function (a, b) {
|
||||
a = a.BeginDate.Value;
|
||||
b = b.BeginDate.Value;
|
||||
return a > b ? 1 : (a < b ? -1 : 0);
|
||||
};
|
||||
col.onChanged = function (item, value) {
|
||||
item.BeginDateStr = item.BeginDate.DisplayValue = DateColumn.formatDate(value);
|
||||
item.BeginDate = item.BeginDate.Value;
|
||||
item.Changed = true;
|
||||
};
|
||||
}
|
||||
else if (col.name === "EndDate") {
|
||||
col.type = DateColumn;
|
||||
col.filter = function (item, editing) {
|
||||
return item.EndDateStr;
|
||||
};
|
||||
col.sortFilter = function (a, b) {
|
||||
a = a.EndDate.Value;
|
||||
b = b.EndDate.Value;
|
||||
return a > b ? 1 : (a < b ? -1 : 0);
|
||||
};
|
||||
col.onChanged = function (item, value) {
|
||||
item.EndDateStr = item.EndDate.DisplayValue = DateColumn.formatDate(value);
|
||||
item.EndDate = item.EndDate.Value;
|
||||
item.Changed = true;
|
||||
};
|
||||
}
|
||||
else if (col.name === "Delete") {
|
||||
col.sortable = false;
|
||||
col.resizable = false;
|
||||
col.type = GridView.ColumnTypes.Icon;
|
||||
col.text = 'times';
|
||||
col.events = {
|
||||
onclick: function () {
|
||||
onDeleteScheduler(this);
|
||||
}
|
||||
};
|
||||
col.attrs = { 'title': GetTextByKey("P_WO_DELETE", 'Delete') };
|
||||
}
|
||||
columns.push(col);
|
||||
}
|
||||
grid_jsschedulerdt.multiSelect = true;
|
||||
grid_jsschedulerdt.columns = columns;
|
||||
grid_jsschedulerdt.init();
|
||||
}
|
||||
|
||||
var currentscheduler;
|
||||
@ -372,10 +277,7 @@ function onEditScheduler(item, schedules) {
|
||||
'left': (document.documentElement.clientWidth - $('#dialog_managescheduler').width()) / 2
|
||||
}).showDialogfixed();
|
||||
|
||||
|
||||
if (jobsiteschedulerCtrl) {
|
||||
jobsiteschedulerCtrl.setData(allSchedulers);
|
||||
}
|
||||
showJobsiteSchedulerList(allSchedulers);
|
||||
}
|
||||
|
||||
function onDeleteScheduler(item) {
|
||||
@ -385,8 +287,9 @@ function onDeleteScheduler(item) {
|
||||
ids.push(schduler.DispatchId);
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < jobsiteschedulerCtrl.vue.source.length; i++) {
|
||||
var sch = jobsiteschedulerCtrl.vue.source[i];
|
||||
var tempsource = grid_jsschedulerdt.source;
|
||||
for (var i = 0; i < tempsource.length; i++) {
|
||||
var sch = tempsource[i];
|
||||
if (sch.Selected && !sch.Completed) {
|
||||
ids.push(sch.DispatchId);
|
||||
}
|
||||
@ -402,15 +305,16 @@ function onDeleteScheduler(item) {
|
||||
var dispatchids = [];
|
||||
if (schduler) {
|
||||
dispatchids.push(schduler.DispatchId);
|
||||
var index = jobsiteschedulerCtrl.vue.source.indexOf(schduler);
|
||||
jobsiteschedulerCtrl.vue.$refs.grid.deleteRow(index);
|
||||
var index = grid_jsschedulerdt.selectedIndex;
|
||||
grid_jsschedulerdt.removeItem(index);
|
||||
}
|
||||
else {
|
||||
for (var i = jobsiteschedulerCtrl.vue.source.length - 1; i >= 0; i--) {
|
||||
var sch = jobsiteschedulerCtrl.vue.source[i];
|
||||
var tempsource = grid_jsschedulerdt.source;
|
||||
for (var i = tempsource.length - 1; i >= 0; i--) {
|
||||
var sch = tempsource[i];
|
||||
if (sch.Selected && !sch.Completed) {
|
||||
dispatchids.push(sch.DispatchId);
|
||||
jobsiteschedulerCtrl.vue.$refs.grid.deleteRow(i);
|
||||
grid_jsschedulerdt.removeItem(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -432,8 +336,9 @@ function onDeleteScheduler(item) {
|
||||
|
||||
function checkSchedulerItems(alerttitle) {
|
||||
var items = [];
|
||||
for (var i = 0; i < jobsiteschedulerCtrl.vue.source.length; i++) {
|
||||
var sch = jobsiteschedulerCtrl.vue.source[i];
|
||||
var tempsource = grid_jsschedulerdt.source;
|
||||
for (var i = 0; i < tempsource.length; i++) {
|
||||
var sch = tempsource[i];
|
||||
if (sch.Changed) {
|
||||
var item = {
|
||||
'DispatchId': sch.DispatchId,
|
||||
@ -488,7 +393,7 @@ function checkSchedulerItems(alerttitle) {
|
||||
}
|
||||
|
||||
function onUpdateScheduler() {
|
||||
if (jobsiteschedulerCtrl.vue.source.length == 0) {
|
||||
if (grid_jsschedulerdt.source.length == 0) {
|
||||
$('#dialog_managescheduler').hide();
|
||||
showmaskbg(false);
|
||||
OnRefresh();
|
||||
@ -528,7 +433,7 @@ function onUpdateScheduler() {
|
||||
function openAddScheduler() {
|
||||
showmaskbg(true);
|
||||
$('#dialogmask').show();
|
||||
$('#dialog_addjobsite').val('');
|
||||
//$('#dialog_addjobsite').val('');
|
||||
$('#dialog_addbegindate').val('');
|
||||
$('#dialog_addenddate').val('');
|
||||
$('#dialog_addnotes').val('');
|
||||
@ -623,6 +528,7 @@ function onAddScheduler(ignorebeginpast) {
|
||||
scheduleritem.BeginDateStr = item.BeginDate;
|
||||
scheduleritem.EndDateStr = item.EndDate;
|
||||
allSchedulers.push(scheduleritem);
|
||||
showJobsiteSchedulerList(allSchedulers);
|
||||
}
|
||||
}, function (err) {
|
||||
console.log(err);
|
||||
|
Reference in New Issue
Block a user