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/helpers.js

    r7661 r7702  
    19641964            if(clicked == 'Sim'){ 
    19651965 
    1966                 var schedulable = DataLayer.get('schedulable', ''+eventId); 
     1966                var schedulable = getSchedulable( eventId, ''); 
    19671967                schedulable.calendar = ''+idCalendar; 
    19681968                var schudableDecode = DataLayer.encode( "schedulable:preview", schedulable); 
     
    19821982 
    19831983function mount_exception(eventID, idException){ 
    1984      
    1985     var schedulable = DataLayer.get('schedulable', ''+eventID); 
    1986     var edit = { 
    1987         repeat: (DataLayer.get('repeat', schedulable.repeat)) 
    1988         };                                    
     1984 
     1985    getSchedulable( eventID.toString() , ''); 
     1986    var schedulable = DataLayer.get('schedulable', eventID.toString() ) 
     1987    var edit = { repeat: (DataLayer.get('repeat', schedulable.repeat)) }; 
    19891988 
    19901989    edit.repeat.startTime = new Date(parseInt(edit.repeat.startTime)).toString('yyyy-MM-dd HH:mm:00'); 
     
    25022501        case 'basicDay': 
    25032502        case 'agendaDay': 
    2504             rangeStart = new Date.today().add({ 
    2505                 days: page_index 
    2506             }).getTime(); 
     2503            rangeStart = new Date.today().add({ days: page_index }).getTime(); 
    25072504            rangeEnd = rangeStart + 86400000; 
    25082505            break; 
     
    25102507            var dateStart = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]);  
    25112508            var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]);  
    2512             rangeStart = dateStart.add({ 
    2513                 days: (7 * page_index) 
    2514                 }).getTime(); 
    2515             rangeEnd = dateEnd.add({ 
    2516                 days: (7 * page_index)+7 
    2517                 }).getTime(); 
     2509            rangeStart = dateStart.add({ days: (7 * page_index) }).getTime(); 
     2510            rangeEnd = dateEnd.add({ days: (7 * page_index)+7 }).getTime(); 
    25182511            break; 
    25192512        case 'month': 
    2520             var date = Date.today().add({ 
    2521                 months: page_index 
    2522             })  
     2513            var date = Date.today().add({ months: page_index }) 
    25232514            rangeStart = date.moveToFirstDayOfMonth().getTime(); 
    25242515            rangeEnd = date.moveToLastDayOfMonth().getTime(); 
    25252516            break; 
    25262517        case 'year': 
    2527             var dateStart = new Date().add({ 
    2528                 years: page_index 
    2529             });  
    2530             var dateEnd = new Date().add({ 
    2531                 years: page_index 
    2532             }); 
     2518            var dateStart = new Date().add({ years: page_index }); 
     2519            var dateEnd = new Date().add({ years: page_index }); 
    25332520            if(dateStart.getMonth() != 0) 
    2534                 dateStart.moveToMonth(0, -1) 
     2521                    dateStart.moveToMonth(0, -1) 
    25352522            if(dateEnd.getMonth() != 11) 
    2536                 dateEnd.moveToMonth(11)  
    2537             rangeStart =    dateStart.moveToFirstDayOfMonth().getTime(); 
    2538             rangeEnd = dateEnd.moveToLastDayOfMonth().getTime(); 
     2523            dateEnd.moveToMonth(11) 
     2524 
     2525        rangeStart = dateStart.moveToFirstDayOfMonth().getTime(); 
     2526        rangeEnd = dateEnd.moveToLastDayOfMonth().getTime(); 
    25392527            break;   
    25402528    } 
     
    25422530    var timezone = {}; 
    25432531    for(var i in Calendar.signatureOf) 
    2544         timezone[i] = Calendar.signatureOf[i].calendar.timezone;                 
    2545          
    2546     return { 
    2547          filter: ['AND',  
    2548                     ['OR',  
    2549                         ['AND',  
    2550                             ['>=', 'rangeEnd', rangeStart],  
    2551                             ['<=', 'rangeEnd', rangeEnd] 
    2552                         ], 
    2553                         ['AND',  
    2554                             ['>=', 'rangeStart', rangeStart],  
    2555                             ['<=', 'rangeStart', rangeEnd] 
    2556                         ], 
    2557                         ['AND',  
    2558                             ['<=', 'rangeStart', rangeStart],  
    2559                             ['>=', 'rangeEnd', rangeEnd] 
    2560                         ] 
    2561                     ], 
    2562                     ['IN', 'calendar',  calerdars_selecteds] 
    2563                 ],  
    2564         criteria: { 
    2565             deepness: 2,  
     2532            timezone[i] = Calendar.signatureOf[i].calendar.timezone; 
     2533         
     2534    return  { 
     2535        rangeStart: rangeStart, 
     2536        rangeEnd: rangeEnd, 
    25662537            order: 'startTime',  
    2567             timezones: timezone 
    2568         } 
    2569     };  
    2570  
     2538            timezones: timezone, 
     2539        calendar: calerdars_selecteds 
     2540        }; 
    25712541} 
    25722542 
     
    25812551     
    25822552        if(!selecteds && (keyword != '' && keyword != null)){    
    2583         jQuery('#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
    2584             '<div title="'+tab_title[type]+'" class="events-list events-list-win active empty">' + 
    2585             '<label>'+label_noselect_calendar[type]+'</label>' + 
    2586             '</div>' 
    2587             ); 
     2553        jQuery('#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
     2554            '<div title="'+tab_title[type]+'" class="events-list events-list-win active empty">' + 
     2555            '<label>'+label_noselect_calendar[type]+'</label>' + 
     2556            '</div>' 
     2557        ); 
    25882558    }else{ 
    2589         var criteria = null; 
    2590         if(keyword == '' || keyword == null) 
    2591             criteria = mountCriteriaList(!!view ? view : User.preferences.defaultCalView, page_index, selecteds) 
    2592         else 
    2593             criteria =  { 
    2594                 filter: ['AND', ['OR', ["i*", "summary", keyword], ["i*", "description", keyword]], ['IN', 'calendar',  selecteds]],  
    2595                 criteria: { 
    2596                     searchEvent: true, 
    2597                     order: 'startTime',  
    2598                     offset: (25 * page_index),  
    2599                     limit: (((25 * page_index) + 25) + 1),  
    2600                     deepness: 2 
    2601                 } 
    2602             }; 
    2603     var results = DataLayer.get('schedulable:detail', criteria); 
    2604     keyword = ( keyword || '' ).replace( /\s+/g, "_" );  
     2559        var criteria = null; 
     2560        if(keyword == '' || keyword == null){ 
     2561 
     2562            criteria = mountCriteriaList(!!view ? view : User.preferences.defaultCalView, page_index, selecteds); 
     2563 
     2564        }else{ 
     2565 
     2566            var timezone = {}; 
     2567            for(var i in Calendar.signatureOf) 
     2568                timezone[i] = Calendar.signatureOf[i].calendar.timezone; 
     2569 
     2570            criteria =  { 
     2571 
     2572                searchEvent: true, 
     2573                order: 'startTime', 
     2574                offset: (25 * page_index), 
     2575                limit: (((25 * page_index) + 25) + 1), 
     2576                summary: keyword, 
     2577                description: keyword, 
     2578                calendar: selecteds, 
     2579                timezones: timezone 
     2580 
     2581            }; 
     2582        } 
     2583 
     2584        var results = DataLayer.encode('schedulable:list', DataLayer.dispatch('modules/calendar/schedules', criteria)); 
     2585        //var results = DataLayer.get('schedulable:detail', criteria); 
     2586        keyword = ( keyword || '' ).replace( /\s+/g, "_" ); 
    26052587        } 
    26062588// não há resultados     
     
    26272609                        $(".event-details-item").parent().click(function(event){ 
    26282610                        event.stopImmediatePropagation(); 
    2629                         $(this).siblings("div.details-event-list").toggleClass("hidden") 
     2611            var container = $(this).siblings("div.details-event-list"); 
     2612 
     2613 
     2614            //lazy data 
     2615            if( container.hasClass('hidden') ){ 
     2616 
     2617                //only first click 
     2618                if(!container.find('fieldset').length){ 
     2619 
     2620                   $(this).append( '<span style="width: 20px;" class="load-event-detail"><img style="width: 20px;" src="'+DataLayer.dispatchPath+'/modules/calendar/img/loading.gif"></img></span>'); 
     2621 
     2622                    var schedulable = container.find('input[name="eventid"]').val(); 
     2623                    schedulable = DataLayer.encode('schedulable:detail', [getSchedulable( schedulable, '' )]); 
     2624 
     2625                    schedulable = $.isArray( schedulable ) ? schedulable[0] : schedulable; 
     2626 
     2627                    container.prepend( DataLayer.render( 'templates/event_detail_list.ejs', {'_event': schedulable})); 
     2628 
     2629                    $(this).find('span.load-event-detail').remove(); 
     2630                } 
     2631            } 
     2632 
     2633            container.toggleClass("hidden") 
    26302634                        .find('.button.delete').click(function(event){ 
    26312635                                var eventId = $(this).siblings('[name="eventid"]').val(); 
     
    26352639                        }) 
    26362640                        .end().find('.button.edit').click(function(event){ 
     2641 
     2642                var schedulable = $(this).siblings('[name="eventid"]').val(); 
    26372643                switch($(this).siblings('[name="eventtype"]').val()){ 
     2644 
    26382645                    case '1': 
    2639                         eventDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2646                        eventDetails( getSchedulable( schedulable, '' ), true ); 
    26402647                    break; 
    26412648                    case '2': 
    2642                         taskDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2649                        taskDetails( getSchedulable( schedulable, '' ), true ); 
    26432650                    break; 
    26442651                    case '3': 
    2645                         activityDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2652                        activityDetails( getSchedulable( schedulable, '' ), true ); 
    26462653                    break;  
    26472654                } 
     
    28292836        type = $('.calendar-copy-move input[name="typeEvent"]').val(); 
    28302837 
    2831     var schedulable = DataLayer.get('schedulable', event+''); 
     2838    getSchedulable(event,''); 
     2839    var schedulable = DataLayer.get('schedulable', event.toString()); 
    28322840    schedulable['class'] = '1'; 
    28332841         
     
    28432851                 
    28442852        schedulable.lastCalendar = schedulable.calendar; 
    2845         schedulable.calendar = calendar;         
     2853    schedulable.calendar = calendar; 
    28462854        DataLayer.put('schedulable', schedulable); 
    28472855         
     
    28682876            delete repeat.schedulable; 
    28692877            delete repeat.id; 
    2870             repeat.startTime = new Date(parseInt(repeat.startTime)).toString('yyyy-MM-dd HH:mm:00'); 
    2871             repeat.endTime = new Date(parseInt(repeat.endTime)).toString('yyyy-MM-dd HH:mm:00'); 
     2878            repeat.startTime = repeat.startTime == '' ? '' : new Date(parseInt(repeat.startTime)).toString('yyyy-MM-dd HH:mm:00'); 
     2879            repeat.endTime = repeat.endTime == '' ? '' : new Date(parseInt(repeat.endTime)).toString('yyyy-MM-dd HH:mm:00'); 
    28722880                     
    28732881            var exceptions = DataLayer.get('repeatOccurrence', { 
     
    28922900        delete schedulable.occurrences; 
    28932901                 
    2894         schedulable.calendar = DataLayer.copy(calendar);         
     2902        schedulable.calendar = DataLayer.copy(calendar); 
    28952903                 
    28962904        var participants = DataLayer.copy(schedulable.participants); 
     
    29252933            return newSchedulable; 
    29262934        } 
    2927         newSchedulable.endTime = new Date(parseInt(newSchedulable.endTime) - (newSchedulable.allDay ? 86400000 : 0)).toString('yyyy-MM-dd hh:mm:00'); 
    2928         newSchedulable.startTime = new Date(parseInt(newSchedulable.startTime)).toString('yyyy-MM-dd hh:mm:00');  
     2935        newSchedulable.endTime = new Date(parseInt(newSchedulable.endTime) - (parseInt(newSchedulable.allDay) ? 86400000 : 0)).toString('yyyy-MM-dd HH:mm:00'); 
     2936        newSchedulable.startTime = new Date(parseInt(newSchedulable.startTime)).toString('yyyy-MM-dd HH:mm:00'); 
    29292937         
    29302938        DataLayer.put('schedulable', newSchedulable); 
Note: See TracChangeset for help on using the changeset viewer.