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

Revision 6444, 4.0 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2846 - Melhorias e inconsistências gerais 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                Calendar.rerenderView(true);
16            });
17        }
18    }
19}
20
21Calendar = {
22 
23    load: function(){
24        this.lastView = 0;
25        var filter = ['=', 'user', User.me.id];
26        if(!!User.me.gidNumber){
27            if(!$.isArray(User.me.gidNumber))
28                User.me.gidNumber = [User.me.gidNumber];
29
30            filter = ['OR', filter, ['IN', 'user', User.me.gidNumber]];
31        }
32
33        //var descart = DataLayer.get("calendarSignature", {filter: filter, criteria: {deepness: 2}});
34        this.signatures  = DataLayer.get("calendarSignature", {
35            filter: filter,
36            criteria: {
37                deepness: 2
38            }
39        });
40         
41    var prevSources = this.sources;
42   
43    this.sources = DataLayer.encode( "calendarSignature:calendar", this.signatures );
44
45     if( prevSources )
46    {
47        var newSources = this.sources.slice();
48
49        for( var i = 0; i < newSources.length; i++ )
50            $('#calendar').fullCalendar( 'addEventSource', newSources[i] );
51
52        for( var i = 0; i < prevSources.length; i++ )
53            $('#calendar').fullCalendar( 'removeEventSource', prevSources[i] );
54    }
55
56    this.calendarIds = [], this.signatureOf = {}, this.calendars = [], this.calendarOf= {};
57
58    for( var i = 0; i < this.signatures.length; i++ ){
59        if(this.signatures[i].isOwner == "0")
60            this.signatures[i].permission =  DataLayer.encode('calendarToPermission:detail', this.signatures[i].permission);
61        this.signatureOf[ this.calendarIds[i] = ( this.calendars[ this.calendars.length ] = this.calendarOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i];
62    }
63
64    delete Calendar.currentViewKey;
65    Refresh.init();
66    },
67
68    rerenderView: function(force){
69        //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
70        if(User.moduleName == "expressoCalendar"){
71            if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') == 0){
72                if(force){
73                    delete Calendar.currentViewKey;
74                    $('#calendar').fullCalendar( 'refetchEvents' );
75
76                    //Recarrega os alarmes de eventos   
77                    Alarms.load();
78
79                    Refresh.init();
80                }
81
82                var calendarNotSelected = getSelectedCalendars( true );
83                for(var i = 0; i < calendarNotSelected.length; i++)
84                        if(!!Calendar.currentView[ calendarNotSelected[i] ])
85                        Calendar.currentView[ calendarNotSelected[i] ].hidden = true;
86
87                $('#calendar').fullCalendar( 'refetchEvents' );
88
89                contentMenu();
90            }else if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') != 0)
91                pageselectCallback($('.events-list-win.active [name=keyword]').val(), 0);
92        }
93    }
94}
95
96Alarms = {
97    load: function(){
98        var eventsDay = DataLayer.get('alarm:schedulable',['=', 'date', Date.today().getTime()]);
99        if(eventsDay)
100        for(var i = 0; i < eventsDay.length; i++){
101            this.addAlarm( eventsDay[i] );
102        }
103    },
104       
105    addAlarm: function( eventDay ){           
106        if(!DataLayer.tasks[parseInt(eventDay.sendTime)]){
107            DataLayer.task( parseInt(eventDay.sendTime) , function( timestamp ){
108                var path = User.moduleName == 'expressoCalendar' ? '' : '../prototype/modules/calendar/';
109                DataLayer.render(path+'templates/alarm.ejs',{
110                    event: eventDay
111                }, function( html ){                               
112                    $.Zebra_Dialog(html , {
113                        'type':     'question',
114                        'overlay_opacity': '0.5',
115                        'buttons':  ['Fechar'],
116                        'onClose':  function(clicked) {}
117                    });
118                });
119            });
120        }
121    }
122}
123
124Calendar.load();
125Alarms.load();
Note: See TracBrowser for help on using the repository browser.