source: trunk/prototype/modules/calendar/js/load.js @ 7702

Revision 7702, 3.8 KB checked in by acoutinho, 11 years ago (diff)

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

Line 
1Refresh = {
2    //Tempo em que após a ultima sincronização será verificado atualizações
3    timeRefresh : 180,
4    clookRefresh: false,
5
6    init: function(){
7
8        delete DataLayer.tasks[this.clookRefresh];
9       
10        //Realiza agendamentos de atualização de view somente se o módulo aberto for expressoCalendar
11        if(User.moduleName == "expressoCalendar"){
12            this.clookRefresh = (parseInt(($.now()) / 1000) + this.timeRefresh);
13
14            DataLayer.task( this.clookRefresh , function(){
15
16            DataLayer.remove('schedulable', false);
17            Calendar.rerenderView(true);
18            });
19        }
20    }
21}
22
23Calendar = {
24 
25    load: function(){
26        this.lastView = 0;
27        var filter = ['=', 'user', User.me.id];
28        if(!!User.me.gidNumber){
29            if(!$.isArray(User.me.gidNumber))
30                User.me.gidNumber = [User.me.gidNumber];
31
32            filter = ['OR', filter, ['IN', 'user', User.me.gidNumber]];
33        }
34
35        //var descart = DataLayer.get("calendarSignature", {filter: filter, criteria: {deepness: 2}});
36        this.signatures  = DataLayer.get("calendarSignature", {
37            filter: filter,
38            criteria: {
39                deepness: 2
40            }
41        });
42         
43    var prevSources = this.sources;
44   
45    this.sources = DataLayer.encode( "calendarSignature:calendar", this.signatures );
46
47     if( prevSources )
48    {
49        var newSources = this.sources.slice();
50
51        for( var i = 0; i < newSources.length; i++ )
52            $('#calendar').fullCalendar( 'addEventSource', newSources[i] );
53
54        for( var i = 0; i < prevSources.length; i++ )
55            $('#calendar').fullCalendar( 'removeEventSource', prevSources[i] );
56    }
57
58    this.calendarIds = [], this.groupIds = [], this.signatureOf = {}, this.calendars = [], this.groups = [], this.calendarOf = {}, this.groupOf= {};
59
60    for( var i = 0; i < this.signatures.length; i++ ){
61        if(this.signatures[i].isOwner == "0")
62            this.signatures[i].permission =  DataLayer.encode('calendarToPermission:detail', this.signatures[i].permission);
63
64        if(this.signatures[i].calendar.type == '1')
65           this.signatureOf[ this.groupIds[this.groupIds.length] = ( this.groups[ this.groups.length ] = this.groupOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i];
66        else
67           this.signatureOf[ this.calendarIds[ this.calendarIds.length] = ( this.calendars[ this.calendars.length ] = this.calendarOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i];
68    }
69
70    delete Calendar.currentViewKey;
71    Refresh.init();
72    },
73
74    rerenderView: function(force){
75        //TODO - Remover if quando centralizar o objeto User que contem as informações do usuário logado em um local acessível a todos módulos
76        if(User.moduleName == "expressoCalendar"){
77            if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') == 0){
78                if(force){
79                    //Remove a incônsistencia do aninhamento de um mesmo tipo em diferentes conceitos
80                    DataLayer.rollback('user');
81
82                    delete Calendar.currentViewKey;
83                    $('#calendar').fullCalendar( 'refetchEvents' );
84
85                    //Recarrega os alarmes de eventos   
86                    Alarms.load();
87
88                    Refresh.init();
89                }
90
91                var calendarNotSelected = getSelectedCalendars( true );
92                for(var i = 0; i < calendarNotSelected.length; i++)
93                        if(!!Calendar.currentView[ calendarNotSelected[i] ])
94                        Calendar.currentView[ calendarNotSelected[i] ].hidden = true;
95
96                $('#calendar').fullCalendar( 'refetchEvents' );
97
98                contentMenu();
99            }else if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') != 0)
100                               
101                pageselectCallback($('.events-list-win.active [name=keyword]').val(), 0, false, ($tabs.tabs('option' ,'selected') > 2) ? 2 : ($tabs.tabs('option' ,'selected') == 1) ? 0 : 1);
102        }
103    }
104}
105
106Calendar.load();
Note: See TracBrowser for help on using the repository browser.