Ignore:
Timestamp:
01/03/13 08:46:17 (11 years ago)
Author:
acoutinho
Message:

Ticket #3259 - Otimizar carregamento de eventos no modulo ExpressoCalendar?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/js/init.js

    r7653 r7702  
    1515                }, 
    1616                show: function( event, ui ){ 
    17                         delete Calendar.currentViewKey; 
    18                         $('#calendar').fullCalendar('refetchEvents'); 
     17 
     18            if( $('#tabs').tabs('option' ,'selected') == 0){ 
     19                delete Calendar.currentViewKey; 
     20                $('#calendar').fullCalendar('refetchEvents'); 
     21            } 
    1922                } 
    2023        }) 
     
    397400                eventDrop: function( evt, event, view  ){ 
    398401                        evt.id = evt.id.split('-')[0]; 
    399                         if(!evt.disableDragging){ 
     402            if(!evt.disableDragging){ 
    400403                             
    401                              if(evt.isRepeat){ 
    402                                  var schedulable = copyAndMoveTo(false , evt.id , false, "3", evt); 
     404                if(evt.isRepeat){ 
     405                    var schedulable = copyAndMoveTo(false , evt.id , false, "3", evt); 
    403406                                  
    404                                  var repeat = mount_exception(evt.id, evt.occurrence); 
    405                                  DataLayer.remove('repeat', false); 
    406                                  DataLayer.put('repeat', repeat); 
    407                                  DataLayer.commit('repeat', false, function(data){ 
     407                    var repeat = mount_exception(evt.id, evt.occurrence); 
     408                    DataLayer.remove('repeat', false); 
     409                    DataLayer.put('repeat', repeat); 
     410                    DataLayer.commit('repeat', false, function(data){ 
    408411                                     
    409                                     DataLayer.remove('schedulable', repeat.schedulable, false);  
    410                                     DataLayer.put('schedulable', schedulable); 
     412                        DataLayer.remove('schedulable', repeat.schedulable, false); 
     413                        DataLayer.put('schedulable', schedulable); 
    411414                                      
    412                                  }); 
    413  
    414                              }else{                                  
    415                                 DataLayer.put( "schedulable:calendar", evt ); 
    416  
    417                                 event.editable = false; 
    418                                 event.className = "blocked-event"; 
    419                                 calendar.fullCalendar( 'updateEvent', evt ); 
    420                              } 
     415                     }); 
     416 
     417                }else{ 
     418                    DataLayer.put( "schedulable:calendar", evt ); 
     419 
     420                                    event.editable = false; 
     421                                    event.className = "blocked-event"; 
     422                                    calendar.fullCalendar( 'updateEvent', evt ); 
     423                } 
    421424                              
    422425                        }else 
    423                             Calendar.rerenderView(true); 
     426                Calendar.rerenderView(true); 
    424427                }, 
    425428 
    426429                eventResize: function( evt, event, view ){ 
    427                         evt.id = evt.id.split('-')[0]; 
     430            evt.id = evt.id.split('-')[0]; 
    428431                        if(!evt.disableDragging){ 
    429                              if(evt.isRepeat){ 
    430                                  var schedulable = copyAndMoveTo(false , evt.id , false, "3", evt); 
    431                                   
    432                                  //Normaliza a data para o backend 
    433                                  schedulable.startTime = new Date(parseInt(schedulable.startTime)).toString('yyyy-MM-dd hh:mm:00'); 
    434                                  schedulable.endTime = new Date(parseInt(schedulable.endTime)).toString('yyyy-MM-dd hh:mm:00'); 
    435                                   
    436                                  var repeat = mount_exception(evt.id, evt.occurrence); 
    437                                   
    438                                  DataLayer.remove('repeat', false); 
    439                                  DataLayer.put('repeat', repeat); 
    440                                  DataLayer.commit('repeat', false, function(data){ 
    441                                       
    442                                     DataLayer.remove('schedulable', repeat.schedulable, false);  
    443                                     DataLayer.put('schedulable', schedulable); 
    444                                       
    445                                  }); 
    446                              }else{                                  
    447                                 DataLayer.put( "schedulable:calendar", evt );    
    448                                 evt.editable = false; 
    449                                 evt.className = "blocked-event"; 
    450                                 calendar.fullCalendar( 'updateEvent', evt ); 
    451                              } 
     432                if(evt.isRepeat){ 
     433                    var schedulable = copyAndMoveTo(false , evt.id , false, "3", evt); 
     434 
     435                    //Normaliza a data para o backend 
     436                    schedulable.startTime = new Date(parseInt(schedulable.startTime)).toString('yyyy-MM-dd hh:mm:00'); 
     437                    schedulable.endTime = new Date(parseInt(schedulable.endTime)).toString('yyyy-MM-dd hh:mm:00'); 
     438 
     439                    var repeat = mount_exception(evt.id, evt.occurrence); 
     440 
     441                    DataLayer.remove('repeat', false); 
     442                    DataLayer.put('repeat', repeat); 
     443                    DataLayer.commit('repeat', false, function(data){ 
     444 
     445                        DataLayer.remove('schedulable', repeat.schedulable, false); 
     446                        DataLayer.put('schedulable', schedulable); 
     447 
     448                    }); 
     449                }else{ 
     450 
     451                    DataLayer.put( "schedulable:calendar", evt ); 
     452                    evt.editable = false; 
     453                    evt.className = "blocked-event"; 
     454                    calendar.fullCalendar( 'updateEvent', evt ); 
     455                } 
    452456                         
    453457                        }else 
     
    469473                                'onClose':  function(clicked) { 
    470474                                    if(clicked == 'Editar todas ocorrências') { 
    471                                         eventDetails( DataLayer.get( "schedulable", evt.id), true); 
     475 
     476                                        eventDetails(  getSchedulable(evt.id, ''), true); 
     477 
    472478                                    }else if (clicked == 'Editar essa ocorrência'){ 
    473479                                        /* 
     
    485491                            }); 
    486492                        }else{ 
    487                             var schedulable = DataLayer.get( "schedulable", evt.id); 
     493                            var schedulable = getSchedulable(evt.id, ''); 
    488494                            schedulable.calendar = evt.calendar; 
    489495                            eventDetails( schedulable, true); 
    490496                            } 
    491                         } 
    492                         break; 
    493                     case 2: 
    494                         var task = DataLayer.get( "schedulable", evt.id); 
    495                         task.group = evt.calendar; 
    496                         taskDetails( task, true); 
    497                         break; 
    498                     case 3: 
    499                         var activity = DataLayer.get( "schedulable", evt.id); 
    500                         activity.group = evt.calendar; 
    501                         activityDetails( activity, true); 
    502                         break; 
     497                    } 
     498                    break; 
     499                case 2: 
     500                    var task = getSchedulable(evt.id, ''); 
     501                    task.group = evt.calendar; 
     502                    taskDetails( task, true); 
     503                    break; 
     504                case 3: 
     505                    var activity = getSchedulable(evt.id, ''); 
     506                    activity.group = evt.calendar; 
     507                    activityDetails( activity, true); 
     508                    break; 
    503509            } 
    504510                }, 
     
    558564}); 
    559565 
     566function getSchedulable(id, codec){ 
     567 
     568    var schedule = DataLayer.get(('schedulable' + (codec != '' ? ':'+codec : '')), id, false ); 
     569 
     570    if(schedule == false) 
     571        DataLayer.get(('schedulable' + (codec != '' ? ':'+codec : '')), {filter: ['id', '=', id], criteria: {deepness: 2, findOne: 1, schedulable: id}} ); 
     572 
     573    return DataLayer.get(('schedulable' + (codec != '' ? ':'+codec : '')), id.toString()); 
     574} 
    560575 
    561576function useDesktopNotification(){ 
Note: See TracChangeset for help on using the changeset viewer.