Changeset 6501


Ignore:
Timestamp:
06/14/12 18:00:45 (9 years ago)
Author:
eduardow
Message:

Ticket #2855 - Lentidão na abertura da Expresso Calendar.

Location:
branches/2.4/prototype/modules/calendar
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4/prototype/modules/calendar/css/layout.css

    r6369 r6501  
    227227.new-event-win ul.attendee-permissions-list, li.attendee-permissions-list{text-align: left;} 
    228228 
    229 li.attendee-permissions-list input{width: 20px !important; margin: 3px 0 0 0; !important} 
     229li.attendee-permissions-list input{width: 20px !important; margin: 3px 0 0 0 !important;}  
    230230 
    231231p.request-update{display: inline; position: relative; top: 2px;} 
     
    399399.import-export-win p.input-group * { float:left; } 
    400400 
     401 
     402label.messagesHelpers{display: block; position: absolute; left: 60px; top: 21px;} 
    401403/* -- calendar list styles -- */ 
    402404 
  • branches/2.4/prototype/modules/calendar/interceptors/DBMapping.php

    r6393 r6501  
    539539 
    540540                if (isset($v['id'])) { 
    541                     $result[$i]['participants'] = Controller::find( array( 'concept' => 'participant' ) , false ,array( 'filter' => array('=', 'schedulable'  ,  $v['id']),'deepness' => $original['criteria']['deepness'] - 1 ));  
    542  
     541                    $data = self::decodeParticipantsEvent($uri, $v, $criteria, $original);  
     542         
     543                    $result[$i]['statusAttendees'] = isset($data['statusAttendees']) ? $data['statusAttendees'] : false;  
     544                    $result[$i]['sizeAttendees'] = isset($data['sizeAttendees']) ? $data['sizeAttendees'] : false;  
     545                    $result[$i]['participants'] = $data['attendees'];  
     546         
    543547                    $attachmentRelation = Controller::find(array('concept' => 'schedulableToAttachment'), false, array('filter' => array('=', 'schedulable', $v['id']))); 
    544548                    if (is_array($attachmentRelation)) { 
     
    563567        return $result; 
    564568    } 
     569 
    565570 
    566571//TODO: Remover apos suporte a deepness na api 
     
    689694///////////////////////////////////////////////////////////////////////// 
    690695 
    691     static function dayAlarm( &$uri , &$params , &$criteria , $original ) {      
     696    static function decodeParticipantsEvent( &$uri, $result, &$criteria, $original) {  
     697        $participants = Controller::find( array( 'concept' => 'participant' ) , false ,array( 'filter' => array('=', 'schedulable'  ,  $result['id']) ));  
     698                  
     699        if($participants && ($size = count($participants)) < 100){  
     700            if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0){  
     701               self::deepnessFindParticipant($uri, $participants, $criteria, $original);  
     702                $participants['attendees'] = $participants;  
     703            }  
     704                              
     705        }else if($participants && ($size = count($participants)) > 100){  
     706           $owner = Controller::read( array( 'concept' => 'calendarSignature' ) , false ,array( 'filter' => array('AND', array('=', 'calendar'  ,  $result['calendar']), array('=', 'isOwner', '1'))));  
     707           $owner = Controller::read( array( 'concept' => 'participant' ) , false ,array( 'filter' => array('AND', array('=', 'schedulable'  ,  $result['id']), array('=', 'user', $owner[0]['user'])), 'deepness' => 2));  
     708          
     709           if(is_array($owner))  
     710               $owner = $owner[0];  
     711          
     712           $reference = array_slice($participants, 0, 100);  
     713           $organizer = false;  
     714           $asOwner = false;  
     715                  
     716            foreach($reference as $r => &$v){  
     717                if($v['id'] == $owner['id']){  
     718                   $v = $owner;  
     719                   $asOwner = true;  
     720                   continue;  
     721                }  
     722                  
     723                self::deepnessReadParticipant($uri, $v, $criteria, $original);  
     724          
     725                if($v['isOrganizer'] == "1" )  
     726                   $organizer = $v;  
     727           }  
     728          
     729           if(!$organizer){  
     730               $organizer = Controller::find( array( 'concept' => 'participant' ) , false ,array( 'filter' => array('AND', array('=', 'schedulable'  ,  $result['id']), array('=', 'isOrganizer', '1')), 'deepness' => 2));  
     731                  
     732               array_push($reference, $organizer[0]);  
     733          
     734           }else if($organizer && ($organizer['id'] != $owner['id']))  
     735               array_merge($reference, $organizer);  
     736         
     737           if(!$asOwner)  
     738               array_push($reference, $owner);  
     739                  
     740           $statusAttendees = array( 'default' => 0, 'accepted' => 0, 'tentative' => 0, 'cancelled' => 0, 'unanswered' => 0, 'delegated' => 0 );  
     741           $statusLabels = array( 'default', 'accepted', 'tentative', 'cancelled', 'unanswered', 'delegated' );  
     742                  
     743           foreach($participants as $k => &$p){  
     744               if(!$organizer && $p['isOrganizer'] == "1"){  
     745                   self::deepnessReadParticipant($uri, $p, $criteria, $original);  
     746                   $reference = array_merge($reference, array($p));  
     747               }  
     748                  
     749               $statusAttendees[$statusLabels[$p['status']]]++;  
     750           }  
     751                  
     752           $participants['statusAttendees'] = $statusAttendees;  
     753           $participants['sizeAttendees'] = $size;  
     754           $participants['attendees'] = $reference;  
     755        }  
     756                          
     757        return $participants;  
     758    }  
     759              
     760    static function dayAlarm( &$uri , &$params , &$criteria , $original ) {     
    692761        if(isset($criteria['filter'][1]) && $criteria['filter'][1] == 'date') 
    693762        { 
     
    884953                //Criaremos uma agenda padrão 
    885954                $cal = array('name' => 'Calendario', 
    886                     'description' => 'Calendario Padrï¿œo', 
     955                  'description' => 'Calendario Padrão',  
    887956                    'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
    888957                    'dtstamp' => time() . '000' 
  • branches/2.4/prototype/modules/calendar/js/helpers.js

    r6453 r6501  
    435435                                zebraDiscardEventDialog = false; 
    436436                            } 
    437                                                                          
    438                             /** 
    439                                                                          * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 
    440                                                                          * com ESC, para que o evento ESC não seja propagado para fechamento da 
    441                                                                          * janela de edição de eventos, deve ser setada uma flag indicando que 
    442                                                                          * já existe uma janela de confirmação aberta. 
    443                                                                          */ 
     437                                 
     438                                /**                                      
     439                                * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la  
     440                                * com ESC, para que o evento ESC não seja propagado para fechamento da  
     441                                * janela de edição de eventos, deve ser setada uma flag indicando que  
     442                                * já existe uma janela de confirmação aberta.  
     443                                */  
    444444                            if (!clicked) { 
    445445                                window.setTimeout(function() { 
     
    658658                return Calendar.signatures[i].calendar.id; 
    659659} 
     660 
     661/*Seleciona a agenda padrão para visualização/edição de um evento*/  
     662if(objEvent.id)  
     663    UI.dialogs.addEvent.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change');  
    660664                 
    661665/*Adicionar alarms padrões, quando alterado a agenda do usuário*/                
     
    678682            $(this).parent().remove().find('li').is(':empty'); 
    679683        }); 
     684 
    680685    }else{ 
    681686        UI.dialogs.addEvent.find('input[name="defaultAlarm"]').parent().addClass('hidden'); 
     
    683688} 
    684689 
    685 var participant =  UI.dialogs.addEvent.find('dd.me input[name="attendee[]"]').val(); 
    686     if( !parseInt(Calendar.signatureOf[$(this).val()].isOwner) ){ 
    687         var signature = Calendar.signatureOf[$(this).val()]; 
     690var participant =  UI.dialogs.addEvent.find('dd.me input[name="attendee[]"]').val();  
     691        var calendar = $(this).val();  
     692           
     693        if( !parseInt(Calendar.signatureOf[calendar].isOwner) ){  
     694        var signature = Calendar.signatureOf[calendar];  
    688695        var organizer = DataLayer.get('calendarSignature', { 
    689696            filter: ['AND', ['=','calendar',signature.calendar.id], ['=','isOwner','1']],  
     
    717724    .filter('.mail').html(User.me.mail).attr('title',User.me.mail); 
    718725} 
     726 
    719727}); 
    720728 
     
    15321540                 
    15331541    UI.dialogs.addEvent.find('.button.cancel').show(); 
    1534                  
    1535          
    15361542} 
    15371543 
     
    15391545 
    15401546/*Seleciona a agenda padrão para criação de um evento*/ 
    1541 var selectedCalendar = (objEvent.calendar != undefined) ? objEvent.calendar : (User.preferences.defaultCalendar ? User.preferences.defaultCalendar : myCalendar()); 
    1542 UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change'); 
    1543  
     1547if(!objEvent.id){  
     1548    var selectedCalendar = (objEvent.calendar != undefined) ? objEvent.calendar : (User.preferences.defaultCalendar ? User.preferences.defaultCalendar : myCalendar());  
     1549    UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change');  
     1550}  
    15441551UI.dialogs.addEvent.find(':input').change(function(event){ 
    15451552    if (event.keyCode != '27' && event.keyCode != '13') 
     
    25432550    }  
    25442551}  
    2545       $tabs.tabs("select", currentView);  
    2546          
     2552      if(currentView != '#tab_events_list_')  
     2553          $tabs.tabs("select", currentView);  
    25472554} 
    25482555 
     
    27592766 
    27602767    } 
    2761          
    2762  
    2763 } 
     2768}  
     2769                  
     2770function messageHelper(msg, isShow){  
     2771    if(isShow)  
     2772        new $.Zebra_Dialog('<span style="width: 50px; height: 50px;">'+  
     2773                            '<img src="'+DataLayer.dispatchPath+'/modules/calendar/img/loading.gif"></img>'+  
     2774                        '</span><label class="messagesHelpers"> '+ msg +' </label>' , {  
     2775                        'buttons':  false,  
     2776                        'modal': true,  
     2777                        'overlay_opacity': '0.5',  
     2778                        'keyboard': false,  
     2779                        'overlay_close': false,  
     2780                        'type': false,  
     2781                        'custom_class': 'messagesHelpersExpressoCalendar'  
     2782                        }  
     2783                    );  
     2784    else{  
     2785        $('.messagesHelpersExpressoCalendar').remove();  
     2786        $('.ZebraDialogOverlay').remove();  
     2787    }  
     2788}  
  • branches/2.4/prototype/modules/calendar/templates/attendee_add.ejs

    r6370 r6501  
    33        %> 
    44        <dl class="block-attendee-list attendees-list"> 
    5                 <dt class="me"><%= data.event.me.name %></dt> 
     5                <dt class="me"><%= data.event.me.user ? data.event.me.user.name : data.event.me.name %></dt>  
    66                <dd class="me"> 
    77                    <select class="status" name="status" <%= data.event.isAttendee ? '' : 'disabled' %>> 
     
    145145                <% if (data.event && data.event.attendee.length > 0) { %> 
    146146                  <ul class="attendees-count"> 
    147                 <li><label>Sim:</label><%=data.event.statusParticipants.accepted%></li> 
     147                    <li><label>Sim:</label><%=data.event.statusParticipants.accepted%></li>  
    148148                    <li><label>Não:</label><%=data.event.statusParticipants.cancelled%></li> 
    149149                    <li><label>Talvez:</label><%=data.event.statusParticipants.tentative%></li> 
    150150                    <li><label>Aguardando:</label><%=data.event.statusParticipants.unanswered%></li> 
    151                   </ul>      
     151                  </ul>  
     152  <% } %>  
     153  <% if (data.event && data.event.sizeAttendeeLimit){%>  
     154      <ul class="attendees-count">  
     155          <li>Evento com muitos participantes, exibindo os 100 primeiros!</li>  
     156      </ul>      
    152157            <% } %> 
    153158                </dd> 
Note: See TracChangeset for help on using the changeset viewer.