0

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

例子。

用户 A 可以预订周一至周三下午 3 点至 4 点之间的时段。

用户 B 可以预订周一和周六凌晨 1 点到 5 点之间的时段

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

4

1 回答 1

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;
    }
});
于 2012-08-17T21:59:32.020 回答