source: branches/2.2.0.1/calendar/js/dhtmlx/sources/ext/ext_collision.js @ 4001

Revision 4001, 2.5 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #1615 - Componente novo para agenda......................................

Line 
1(function(){
2
3var temp_section,temp_time;
4var before;
5
6scheduler.config.collision_limit = 1;   
7scheduler.attachEvent("onBeforeDrag",function(id){
8        var pr = scheduler._props?scheduler._props[this._mode]:null;
9        var matrix = scheduler.matrix?scheduler.matrix[this._mode]:null;
10        var checked_mode = pr||matrix;
11        if(pr)
12                var map_to = checked_mode.map_to;
13        if(matrix)
14                var map_to = checked_mode.y_property;
15
16        if ((checked_mode) && id){
17                temp_section = this.getEvent(id)[map_to];
18                temp_time = this.getEvent(id).start_date;
19        }
20        return true;
21});
22scheduler.attachEvent("onBeforeLightbox",function(id){
23        var ev = scheduler.getEvent(id);
24        before = [ev.start_date, ev.end_date];
25        return true;
26});
27scheduler.attachEvent("onEventChanged",function(id){
28        if (!id) return true;
29        var ev = scheduler.getEvent(id);
30        if (!collision_check(ev)){
31                if (!before) return false;
32                ev.start_date = before[0];
33                ev.end_date = before[1];
34                ev._timed=this.is_one_day_event(ev);
35        };
36        return true;
37});
38scheduler.attachEvent("onBeforeEventChanged",function(ev,e,is_new){
39        return collision_check(ev);
40});
41scheduler.attachEvent("onEventSave",function(id, edited_ev){
42        //var ev = scheduler.getEvent(id);
43        if(edited_ev.rec_type)
44                scheduler._roll_back_dates(edited_ev);
45       
46        return collision_check(edited_ev);
47});
48
49
50function collision_check(ev){
51        var evs = [];
52       
53        if (ev.rec_type) {
54                var evs_dates = scheduler.getRecDates(ev);
55                for(var k=0; k<evs_dates.length; k++) {
56                        var tevs = scheduler.getEvents(evs_dates[k].start_date, evs_dates[k].end_date);
57                        for(var j=0; j<tevs.length; j++) {
58                                if ((tevs[j].event_pid || tevs[j].id) != ev.id )
59                                        evs.push(tevs[j]);
60                        }
61                }
62                evs.push(ev);
63        } else {
64                evs = scheduler.getEvents(ev.start_date, ev.end_date);
65        }
66       
67        var pr = scheduler._props?scheduler._props[scheduler._mode]:null;
68        var matrix = scheduler.matrix?scheduler.matrix[scheduler._mode]:null;
69       
70        var checked_mode = pr||matrix;
71        if(pr)
72                var map_to = checked_mode.map_to;
73        if(matrix)
74                var map_to = checked_mode.y_property;
75       
76        var single = true;
77        if (checked_mode) {
78                var count = 0;
79
80                for (var i = 0; i < evs.length; i++)
81                        if (evs[i][map_to] == ev[map_to])
82                                count++;
83                               
84                if (count > scheduler.config.collision_limit) {
85                        scheduler._drag_event.start_date = temp_time;
86                        ev[map_to] = temp_section;
87                        single = false;
88                }
89        }
90        else {
91                if (evs.length > scheduler.config.collision_limit)
92                        single = false;
93        }
94                       
95        if (!single) return !scheduler.callEvent("onEventCollision",[ev,evs]);
96        return single;
97       
98};
99
100})();
Note: See TracBrowser for help on using the repository browser.