Changeset 5358


Ignore:
Timestamp:
01/11/12 13:28:21 (12 years ago)
Author:
acoutinho
Message:

Ticket #2434 - Mudanca na manipulacao de participantes para melhor desempenho

Location:
trunk/prototype/modules/calendar
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/index.php

    r5349 r5358  
    349349 
    350350                eventClick: function( evt, event, view ){ 
    351                         eventDetails( DataLayer.get( "schedulable", evt.id ), true ); 
     351                        eventDetails( DataLayer.get( "schedulable", evt.id), true); 
    352352                } 
    353353        }); 
  • trunk/prototype/modules/calendar/js/calendar.codecs.js

    r5343 r5358  
    437437        };       
    438438 
     439        var isOrganizer = !!evtObj[0].id ? 0 : 1; 
     440         
    439441        var res = $.map(evtObj, function( objEvent ){                    
    440442                     
     
    460462                        }        
    461463                        var temp = []; 
    462                          
     464                        var tempAlarm = []; 
     465                                         
    463466                        var typeAlarm = function(obj){ 
     467                                var alarm = []; 
    464468                                for(var i = 0; i < obj.length; i++){ 
     469                                        if(tempAlarm[obj[i].id])  
     470                                                continue;  
     471                                        tempAlarm[obj[i].id] = true; 
     472                                         
    465473                                        if(obj[i].type == "1"){ 
    466474                                                obj[i].type = 'alert'; 
     
    470478                                                obj[i].type = 'sms'; 
    471479                                        } 
     480                                        alarm.push(obj[i]); 
    472481                                } 
    473                                 return obj; 
     482                                return alarm; 
    474483                        } 
    475484                    return { 
     
    490499                              allDay: !!parseInt( objEvent.allDay ), 
    491500          //                            attachments: this.decode( "attachment:detail", form ), 
    492                               attendee: $.map(objEvent.participants || [], function( participant ){ 
    493                                 if(participant.indexOf('java') >= 0) 
    494                                         return (null); 
    495                                 if(temp[participant]) 
    496                                         return (null); 
    497                                 temp[participant] = true;        
     501                              attendee: $.map(objEvent.participants || [], function( participant, i ){ 
     502                                                if(participant.indexOf('java') >= 0)  
     503                                                        return (null);  
     504                                                if(temp[participant])  
     505                                                        return (null);  
     506                                                temp[participant] = true; 
     507                                                 
     508                                        var attend = DataLayer.get('participant', participant); 
     509                                        attend.user = DataLayer.get('user', attend.user) 
    498510                                         
    499                                                 participant = DataLayer.get( "participant", participant); 
    500                                          
    501                                         statusParticipants[participant.status]++;  
    502                                         var user = DataLayer.get( "user", participant.user.id || participant.user ); 
    503                                         var getIdUser = function(user){ 
    504                                                 if(user.owner) 
    505                                                         return 'external:'+user.id; 
    506                                                 else if(user.id == User.me.id) 
    507                                                         return user.id; 
    508                                                 else return 'internal:'+user.id; 
    509                                         };       
     511                                        statusParticipants[attend.status]++;     
    510512                                          
    511                                           var person = { uid: getIdUser(user), 
    512                                                          name: user.name, 
    513                                                                  mail: user.mail 
    514                                                                 }; 
    515  
    516                                           if( person.uid ===  me.uid ) 
     513                                          var person = { uid: attend.id, 
     514                                                 name: attend.user.name, 
     515                                                 mail: attend.user.mail, 
     516                                                 isExternal: attend.isExternal 
     517                                                }; 
     518 
     519                                          if( attend.user.id ===  me.uid ) 
    517520                                          { 
    518                                               participantInfo.status = participant.status; 
     521                                              participantInfo.status = attend.status; 
    519522                                              participantInfo.alarms = typeAlarm(objEvent.alarms); 
    520523                                          } 
    521                                           if( parseInt( participant.isOrganizer ) ) 
     524                                          if( parseInt( attend.isOrganizer ) ) 
    522525                                          { 
     526                                                 isOrganizer = ((attend.user.id == User.me.id) || (!!!attend.user)) ? 1 : 0; 
    523527                                              participantInfo.organizer = person; 
    524                                               return( null ); 
     528                                                  return(null); 
    525529                                          } 
    526530 
     
    534538                            }; 
    535539                }); 
    536         res[0].isOrganizer = res[0].organizer.uid == User.me.id ? 1 : 0; 
     540        res[0].isOrganizer = isOrganizer; 
    537541        res[0].statusParticipants = statusObject(statusParticipants); 
    538542        if( !notArray ) 
     
    594598                    participants = [];  
    595599 
    596                     if( form.idEvent ) 
    597                         participants = DataLayer.get( "participant:detail", [ "=", "schedulable", form.idEvent ] ); 
     600                    //if( form.idEvent ) 
     601                        //      participants = DataLayer.get( "participant:detail", [ "=", "schedulable", form.idEvent ] ); 
    598602                         
    599603                        var spaces = function(hours){ 
     
    620624                              participants: $.map( form.attendee || [], function( attendee, i ){ 
    621625 
    622                                         if( !attendee || attendee === "" ) 
    623                                         return( null ); 
     626                                                if( !attendee || attendee === "" ) 
     627                                                        return( null ); 
    624628 
    625629                                                var participant = {}; 
    626                                                 var isCurrentParticipant = function(user, event){ 
    627                                                         var participant =  DataLayer.get('participant', ['AND',['=', 'user', user],['=', 'schedulable', event]]); 
    628                                                         if(participant != '') 
    629                                                                 return participant[0].id; 
    630                                                         else 
    631                                                                 return false; 
    632                                                 };   
     630                                                participant.user = (attendee!= User.me.id) ? DataLayer.get('participant', attendee).user : attendee ; 
    633631                                                 
    634                                                 if((attendee.indexOf('internal') >= 0) || (attendee.indexOf('external') >= 0)){ 
    635                                                         participant.user = attendee.replace(/[a-z:]/g, ""), 
     632                                                if( participant.user === User.me.id ){ 
     633                                                        if(!!form.idEvent ) 
     634                                                                participant.id = attendee; 
    636635                                                        participant.isOrganizer = ( !i ? 1 : 0 ); 
    637                                                         if(attendee.indexOf('external') >= 0) 
    638                                                                 participant.isExternal = 1; 
    639                                                         var id = ''; 
    640                                                         if(participant.user == User.me.id) 
    641                                                                 participant.status = form.status; 
    642                                                         if((form.idEvent) && (id = isCurrentParticipant(participant.user, form.idEvent))) 
    643                                                                 participant.id = id; 
    644                                                                 return participant; 
    645                                                 }else if(attendee.indexOf('java') >= 0){                   
    646                                                         participant.user = attendee; 
    647                                                         participant.isOrganizer = ( !i ? 1 : 0 ); 
    648                                                         participant.isExternal= 1; 
    649                                                 }else{   
    650                                                         participant.user = attendee; 
    651                                                         participant.isOrganizer = ( !i ? 1 : 0 ); 
    652                                                 } 
    653                                                
    654                                                 if( attendee === User.me.id ){ 
    655636                                                        var obj = form.alarmTime ? form : pref; 
    656637                                                        participant.alarms = $.map( obj.alarmTime || [], function( alarmTime, i ){ 
     
    659640                                                                        return( null ); 
    660641 
    661                                                                  
    662642                                                                if(obj.alarmId[i] === "") 
    663643                                                                        return { type: obj.alarmType[i],unit: obj.alarmUnit[i], time: obj.alarmTime[i] }; 
     
    665645                                                                        return { type: obj.alarmType[i], unit: obj.alarmUnit[i], time: obj.alarmTime[i], id: obj.alarmId[i] }; 
    666646                                                        }); 
    667                                                          
    668                                                         if( participants[ attendee ] ){ 
    669                                                                 participant.id = participants[ attendee ].id; 
    670                                                         } 
    671647                                                        participant.status = form.status; 
    672                                             } 
    673  
    674                                               return( participant ); 
     648                                                }else{ 
     649                                                        participant.id = attendee; 
     650                                                        participant.isOrganizer = ( !i ? 1 : 0 ); 
     651                                                        if(!!parseInt(form.attendeeType[i])) 
     652                                                                participant.isExternal= 1; 
     653                                                } 
     654                                                if( participants[ attendee ] ){ 
     655                                                        participant.id = participants[ attendee ].id; 
     656                                                } 
     657                                                return( participant ); 
    675658                                          }) 
    676659                            }; 
     
    742725                                          { 
    743726                                              participantInfo.organizer = person; 
    744                                               return( null ); 
     727                                                  return(null); 
    745728                                          } 
    746729 
  • trunk/prototype/modules/calendar/js/helpers.js

    r5354 r5358  
    432432                         
    433433                        blkAddAtendee.find('li.attendee .button').addClass('small').button({text:false, icons: {primary:'ui-icon-close'}}).click(function () { 
    434                                 var participant =  DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable', $(this).parents().find('.id-event').first().val()]]); 
    435                                 if(participant) 
    436                                         DataLayer.remove('participant', participant[0].id); 
     434                                DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
    437435                                $(this).parent().remove(); 
    438436                        }); 
     
    600598                                                lastEditAttendeeToolTip.qtip('destroy'); 
    601599 
     600                                        var userId = ''; 
    602601                                        var newAttendeeId = ''; 
    603602 
    604603                                        if (user){ 
    605                                                 if(user[0].isExternal) 
    606                                                         newAttendeeId = 'external:'+user[0].id; 
    607                                                 else 
    608                                                         newAttendeeId = 'internal:'+user[0].id; 
    609  
    610604                                                if (!skipAddNewLine) { 
    611605                                                        blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    612                                                                 DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: user[0].name, mail: user[0].mail}]) 
     606                                                                DataLayer.render('templates/participants_add_itemlist.ejs', {user: user[0]}) 
    613607                                                        ) 
    614608                                                        .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
    615                                                                 var participant =  DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable',$(this).parents().find('.id-event').first().val()]]); 
    616                                                                 if(participant) 
    617                                                                         DataLayer.remove('participant', participant[0].id); 
     609                                                                DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
    618610                                                                $(this).parent().remove(); 
    619611                                                        }).end() 
     
    629621                                                 */ 
    630622 
    631                                                 newAttendeeId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 
     623                                                userId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 
     624                                                newAttendeeId = DataLayer.put('participant', {user: userId, isExternal: isExternal}); 
    632625 
    633626                                                  
    634627                                                blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    635                                                         DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail}]) 
     628                                                        DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail, isExternal: 1}]) 
    636629                                                ).find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
    637                                                         var participant =  DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable', $(this).parents().find('.id-event').first().val()]]); 
    638                                                         if(participant) 
    639                                                                 DataLayer.remove('participant', participant[0].id); 
     630                                                        DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
    640631                                                        $(this).parent().remove(); 
    641632                                                }).end() 
     
    671662                                                lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 
    672663 
     664 
     665 
     666 
     667 
     668 
     669 
     670 
    673671                                                $(this).val(''); 
    674672 
     
    704702                                                if ($(event.target).is('input')) { 
    705703                                                        old_item = $(event.target).parents('li'); 
     704                                                        newAttendeeId = DataLayer.put('participant', {user: old_item.find('.id').html(), isExternal: 0}); 
    706705                                                        blkAddAtendee.find('dd.attendee-list ul.attendee-list') 
    707                                                         .append(DataLayer.render('templates/participants_add_itemlist.ejs', [{id: 'internal:'+old_item.find('.id').text(), name: old_item.find('.name').html()}])) 
     706                                                        .append(DataLayer.render('templates/participants_add_itemlist.ejs', [{id: newAttendeeId, name: old_item.find('.name').html(), isExternal: 0}])) 
    708707                                                        .find('.button').addClass('small').button({text:false, icons: {primary:'ui-icon-close'}}).click(function () { 
    709708                                                                $(this).parent().remove(); 
  • trunk/prototype/modules/calendar/templates/attendee_add.ejs

    r5353 r5358  
    2121                                                <input type="checkbox" value="<%= data.event.organizer.uid %>" disabled="disabled"> 
    2222                                                <input type="hidden" name="attendee[]" value="<%=data.event.organizer.uid%>"> 
     23                                                <input type="hidden" name="attendeeType[]" value="0"> 
    2324                                                <input type="hidden" name="attendee_organizer[]" value="<%=data.event.organizer.uid%>"> 
    2425                                                <label for="attendee_organizer" title="<%= data.event.organizer.name ? data.event.organizer.name: '' %>" class="name"><%= data.event.organizer.name ? data.event.organizer.name : '' %></label> 
     
    3738                                                <input type="checkbox" value="<%= data.event.attendee[i].uid %>" disabled="disabled"> 
    3839                                                <input type="hidden" name="attendee[]" value="<%=data.event.attendee[i].uid%>"> 
     40                                                <input type="hidden" name="attendeeType[]" value="<%=data.event.attendee[i].isExternal%>"> 
    3941                                                <label title="<%= data.event.attendee[i].name ? data.event.attendee[i].name: '' %>" class="name"><%= data.event.attendee[i].name ? data.event.attendee[i].name : '' %></label> 
    4042                                                <label title="<%= data.event.attendee[i].mail ? data.event.attendee[i].mail : '' %>" class="mail"><%= data.event.attendee[i].mail ? data.event.attendee[i].mail : '' %></label> 
     
    8183                 
    8284        </dl> 
    83 <% if (data.event.me.uid == data.event.organizer.uid) { %> 
     85<% if (data.event.isOrganizer == 1) { %> 
    8486        <dl class="block-add-attendee"> 
    8587                <dt class="add-attendee">Adicionar convidados</dt> 
  • trunk/prototype/modules/calendar/templates/participants_add_itemlist.ejs

    r5341 r5358  
    33                <input type="checkbox" value="<%= data[0].id %>" disabled="disabled"> 
    44                <input type="hidden" name="attendee[]" value="<%= data[0].id %>"> 
     5                <input type="hidden" name="attendeeType[]" value="<%=data[0].isExternal%>"> 
    56                <label title="<%= data[0].name ? data[0].name : '' %>" class="name"><%= data[0].name ? data[0].name : '' %></label> 
    67                <label title="<%= data[0].mail ? data[0].mail : '' %>" class="mail"><%= data[0].mail ? data[0].mail : '' %></label> 
  • trunk/prototype/modules/calendar/templates/participants_search_itemlist.ejs

    r5341 r5358  
    22<li class="ui-widget-content" style="width:6000px;" title="<%=data[i]['name']%>"> 
    33        <input type="checkbox" name="opcao"> 
    4         <input type="hidden" value="internal:<%=data[i]['id']%>"> 
     4        <input type="hidden" value="<%=data[i]['id']%>"> 
    55        <label class="name"><%=data[i]['name']%></label> 
    66        <label class="email hidden"><%=data[i]['mail']%></label> 
Note: See TracChangeset for help on using the changeset viewer.