我们正在使用调度程序(bryntum)在Extjs中开发一个应用程序。 调度程序的设计如下:
processTimelineViewScheduler: function(config) {
var me = this;
var startDate = new Date();
var endDate = new Date();
var cinema = MiscFunctions.getCinema();
var scheduleStart = cinema.schedulestart; // 06:00
var scheduleEnd = cinema.scheduleend; // 05:59
var partstart = scheduleStart.split(":");
var startHours = partstart[0];
var startMinutes = partstart[1];
var partend = scheduleEnd.split(":");
var endHours = partend[0];
var endMinutes = partend[1];
startDate.setHours(startHours);
startDate.setMinutes(startMinutes);
startDate.setSeconds(0);
endDate.setHours(endHours);
endDate.setMinutes(endMinutes);
endDate.setSeconds(0);
if (endDate.getTime() <= startDate.getTime()) {
endDate = Ext.Date.add(endDate, Ext.Date.DAY, 1);
}
Sch.preset.Manager.registerPreset("myHourAndDay", {
displayDateFormat : 'G:i',
shiftIncrement : 1,
shiftUnit : 'HOUR',
timeRowHeight : 75,
timeResolution : {
// Here we use Sch.util.Date.MINUTE constant value
unit : Sch.util.Date.MINUTE,
increment : 5
},
headerConfig : {
middle : {
// and here we use the last fraction Sch.util.Date.HOUR constant name
unit : 'HOUR',
dateFormat : 'G:i'
}
}
});
return Ext.apply(config, {
columns : [{
sortable: true,
width: 100,
dataIndex: 'Name',
flex: 1
}],
split: false,
readOnly: !MiscFunctions.hasRight('SHOW_WRITE'),
enableDragCreation: false,
viewPreset: {
name: 'myHourAndDay',
timeColumnWidth: 100,
},
highlightWeekends: false,
mode: 'horizontal',
startDate: startDate,
endDate: endDate,
weekStartDay: 3,
showTodayLine: true,
rowHeight: 65,
constrainDragToResource: false,
snapToIncrement: true,
eventResizeHandles: 'none',
eventBarTextField: 'Title',
crudManager: this.getCrudManager(),
});
}
变量scheduleStart和scheduleEnd可以是第二天的10:00和09:59。
调度程序在视图中任意设置开始时间和结束时间(例如:21:00至21:00)。
如果第二天的变量scheduleStart和scheduleEnd为06:00和05:59,则开始和结束日期和时间在视图中正确。