extjs calendar 4.1.1限制时段预订

时间:2012-08-16 13:06:37

标签: extjs calendar extjs4.1

我正在使用extjs 4.1.1日历(日程安排程序)来跟踪人员日程安排,但我可能会遇到麻烦,因为我无法弄清楚如何限制个人的预订时段

例如

用户A可以在星期一至星期三的下午3点到4点之间预订广告位。

用户B可以在星期一和星期六凌晨1点到5点预订广告位

图片链接 http://i.stack.imgur.com/tuCVV.png

1 个答案:

答案 0 :(得分:0)

这可能比你真正想要的更复杂,但我们必须在我们的应用程序中执行此操作,唯一真正的方法是覆盖它们的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;
    }
});