1 | (function(){
|
---|
2 |
|
---|
3 | var temp_section,temp_time;
|
---|
4 | var before;
|
---|
5 |
|
---|
6 | scheduler.config.collision_limit = 1;
|
---|
7 | scheduler.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 | });
|
---|
22 | scheduler.attachEvent("onBeforeLightbox",function(id){
|
---|
23 | var ev = scheduler.getEvent(id);
|
---|
24 | before = [ev.start_date, ev.end_date];
|
---|
25 | return true;
|
---|
26 | });
|
---|
27 | scheduler.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 | });
|
---|
38 | scheduler.attachEvent("onBeforeEventChanged",function(ev,e,is_new){
|
---|
39 | return collision_check(ev);
|
---|
40 | });
|
---|
41 | scheduler.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 |
|
---|
50 | function 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 | })(); |
---|