我正在使用 extjs 4.1.1 日历(调度程序)来跟踪人们的日程安排,但我可能会遇到麻烦,因为我无法弄清楚如何限制个人的预订时间段
例子。
用户 A 可以预订周一至周三下午 3 点至 4 点之间的时段。
用户 B 可以预订周一和周六凌晨 1 点到 5 点之间的时段
我正在使用 extjs 4.1.1 日历(调度程序)来跟踪人们的日程安排,但我可能会遇到麻烦,因为我无法弄清楚如何限制个人的预订时间段
例子。
用户 A 可以预订周一至周三下午 3 点至 4 点之间的时段。
用户 B 可以预订周一和周六凌晨 1 点到 5 点之间的时段
这可能比你真正想要的更复杂,但我们必须在我们的应用程序中这样做,唯一真正的方法是覆盖他们的 Extensible.calendar.dd.DropZone 类并用你自己的覆盖 onNodeOver 方法逻辑,希望你能很好地理解 Extjs :) :
Ext.override("Extensible.calendar.dd.DropZone", {
onNodeOver : function(n, dd, e, data){
//change anything in this logic with the logic you want....
//but preferrably, don't change anything and use callOverridden and then add your stuff as extras
var D = Extensible.Date,
start = data.type == 'eventdrag' ? n.date : D.min(data.start, n.date),
end = data.type == 'eventdrag' ? D.add(n.date, {days: D.diffDays(data.eventStart, data.eventEnd)}) :
D.max(data.start, n.date);
if(!this.dragStartDate || !this.dragEndDate || (D.diffDays(start, this.dragStartDate) != 0) || (D.diffDays(end, this.dragEndDate) != 0)){
this.dragStartDate = start;
this.dragEndDate = D.add(end, {days: 1, millis: -1, clearTime: true});
this.shim(start, end);
var range = Ext.Date.format(start, this.dateFormat);
if(D.diffDays(start, end) > 0){
end = Ext.Date.format(end, this.dateFormat);
range = Ext.String.format(this.dateRangeFormat, range, end);
}
var msg = Ext.String.format(data.type == 'eventdrag' ? this.moveText : this.createText, range);
data.proxy.updateMsg(msg);
}
return this.dropAllowed;
}
});