0

人々のスケジュールを追跡するためにextjs4.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 に答える