[6779] | 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 | })(); |
---|