source: trunk/prototype/modules/calendar/js/map.disponibility.js @ 6996

Revision 6996, 7.2 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2966 - Merge de novas funcionalidades com trunk #2951, #2952

  • Property svn:executable set to *
Line 
1function getColorAttendee(keyColor){
2       
3        var colors = ['#3b7847', '#98993d' , '#130aff' , '#d95a0d', '#d9990d', '#8cd90d', '#0dd9b9', '#123456', '#000000', '#5f04c3', '#c3043a', '#faa26b', '#cee4d1',  '#adadad', '#707070'];
4       
5        return  colors[keyColor % 15] ;
6       
7}
8
9
10function updateMap(viewName){
11        var start_date = $(".new-"+viewName+"-win.active .start-date").val();
12        var end_date   = $(".new-"+viewName+"-win.active .end-date").val();
13        var start_time = $(".new-"+viewName+"-win.active .start-time").val();
14        var end_time   = $(".new-"+viewName+"-win.active .end-time").val();
15        var isAllDay   = $('.new-'+viewName+'-win.active input[name="allDay"]').is(':checked');
16       
17        var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat;
18       
19        var startDate = Date.parseExact(  start_date + " " + $.trim(start_time) , formatString );
20        var endDate = Date.parseExact(  end_date + " " + $.trim(end_time) , formatString );
21       
22       
23        var event = $('.new-'+viewName+'-win .map_disponibility').fullCalendar('clientEvents', 'map')[0];
24       
25       
26                if(!!event){   
27                        event.start = startDate;
28                        event.end = endDate;
29                        event.allDay = isAllDay;
30                        $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'updateEvent', event )
31                }
32               
33               
34}
35
36
37function disponibily(objEvent, path, attendees, viewName){
38        var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat;
39        var startDate = Date.parseExact( objEvent.startDate + " " + $.trim(objEvent.startHour) , formatString );
40        var endDate = Date.parseExact( objEvent.endDate + " " + $.trim(objEvent.endHour) , formatString );
41
42    var dialogName = {event: 'addEvent', task: 'addTask', activity: 'addActivity'}
43         
44        var mapHtml = DataLayer.render( path+'templates/availability_map.ejs', {});
45        $('#calendar_add'+viewName+'_details7').html(mapHtml);
46        $('.new-'+viewName+'-win .map_disponibility').fullCalendar(DataLayer.merge({
47                height : 300,
48                timeFormat: User.preferences.hourFormat,
49                axisFormat: User.preferences.hourFormat,
50                firstDay: dateCalendar.dayOfWeek[User.preferences.weekStart],
51                editable: false,
52                selectable: true,
53                selectHelper: false,
54                droppable: false,
55                allDayText: 'Dia todo',
56                buttonText: {
57                        today: 'hoje'
58                },
59                titleFormat: {
60                        month: 'MMMM yyyy',                             
61                        week: "dd[ yyyy] { 'a'[ MMM] dd 'de' MMMM '-' yyyy}",
62                        day: 'dddd,  dd MMM , yyyy'
63                },
64                columnFormat:{
65                        month: 'ddd',   
66                        week: 'ddd dd/MM',
67                        day: 'dddd dd/MM' 
68                },
69                select: function( start, end, allDay, event, view ){
70               
71                        var event2 = $("#new_event_map").fullCalendar('clientEvents', 'map')[0];
72                        event2.start = start;
73                        event2.end = end;
74                        event2.allDay = allDay;
75                        $("#new_event_map").fullCalendar( 'updateEvent', event2 );
76                       
77                        $('[name="startDate"]').val(start.toString(User.preferences.dateFormat));
78                        $('[name="endDate"]').val(end.toString(User.preferences.dateFormat));
79                        if(!allDay){
80                                $('[name="allDay"]').attr("checked", false);
81                                UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').removeClass('hidden');
82                               
83                                $('[name="startHour"]').val(start.toString(User.preferences.hourFormat));
84                                if(end){
85                                        $('[name="endHour"]').val(end.toString(User.preferences.hourFormat));
86                                }
87                        }else{
88                                $('[name="allDay"]').attr("checked", true);
89                                UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').addClass('hidden');
90                        }
91                },
92                events: [
93                        {
94                                id : 'map',
95                                title: 'Disponibilidade',
96                                start: startDate,
97                                end: endDate,
98                                editable : true,
99                                allDay : (objEvent.allDay ? true : false),
100                                className : "map-event",
101                                backgroundColor : "transparent !important",
102                                editable : objEvent.acl ? (objEvent.acl.write || objEvent.acl.organization) : true
103                        }
104                ],
105                eventDrop : function(event,dayDelta,minuteDelta,allDay,revertFunc){
106                        if(event.allDay){
107                                $('[name="allDay"]').attr("checked", true);
108                                UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').addClass('hidden');
109                               
110                                $('[name="startDate"]').val(dateCalendar.toString(event.start, User.preferences.dateFormat));                           
111                                $('[name="endDate"]').val(dateCalendar.toString((event.end ? event.end : event.start), User.preferences.dateFormat));
112
113                        }else{
114                                $('[name="allDay"]').attr("checked", false);
115                                UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').removeClass('hidden');
116                       
117                                $('[name="startHour"]').val(dateCalendar.formatDate(event.start, User.preferences.hourFormat));
118                                $('[name="startDate"]').val(dateCalendar.toString(event.start, User.preferences.dateFormat));
119                               
120                                $('[name="endHour"]').val(dateCalendar.formatDate((event.end ? event.end : new Date(dateCalendar.decodeRange(event.start, 120))), User.preferences.hourFormat));
121
122                                $('[name="endDate"]').val(dateCalendar.toString(event.end ? event.end : event.start , User.preferences.dateFormat));
123                        }
124                },
125                eventResize: function(event,dayDelta,minuteDelta,revertFunc) {
126                        if(event.end)
127                                $('[name="endHour"]').val(dateCalendar.formatDate(event.end, User.preferences.hourFormat));
128                       
129                        $('[name="endDate"]').val(dateCalendar.toString(event.end ? event.end : event.start , User.preferences.dateFormat));
130                               
131                },
132        defaultView : "agendaWeek"
133        }, dateCalendar));
134        var eventSource = new Array();
135        var updateMapView = function(){
136                updateMap(viewName);
137                var view = $('.new-'+viewName+'-win .map_disponibility').fullCalendar('getView');
138                var map = {};
139                $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'removeEventSource', eventSource );
140                eventSource = new Array();     
141                map = {startTime : view.start.getTime(), endTime : view.end.getTime(), attendees: {}, timezone: (objEvent.timezone || User.preferences.timezone)};
142                map.attendees[User.me.id] = {id : User.me.id, name : User.me.name};
143                var count = 0;
144                for (var idAttendee in attendees){
145                        if(attendees[idAttendee]){
146                                map.attendees[idAttendee] = {id : idAttendee, name : attendees[idAttendee], color: getColorAttendee(count)};
147                                count++;
148                        }
149                }
150                map_events = DataLayer.dispatch("mapDisponibility", map, false, false);
151                for(var map_attende in map_events){
152                        for(var event_by_attende in map_events[map_attende]){
153                                var endTime = Timezone.getDateMapDisponibility(new Date(parseInt(map_events[map_attende][event_by_attende].endTime)));
154                                if(!!parseInt(map_events[map_attende][event_by_attende].allDay))
155                                        endTime.add({day: -1});
156
157                                eventSource.push(
158                                {
159                                        id : "map_busy_events",
160                                        title : map.attendees[map_attende].name,
161                                        start: Timezone.getDateMapDisponibility(new Date(parseInt(map_events[map_attende][event_by_attende].startTime))),
162                                        end: endTime,
163                                        editable : false,
164                                        allDay : !!parseInt(map_events[map_attende][event_by_attende].allDay),
165                                        backgroundColor : map.attendees[map_attende].color + " !important",
166                                        borderColor : map.attendees[map_attende].color + " !important"
167                                });
168                        }
169                }
170                if(eventSource.length)
171                        $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'addEventSource', eventSource );
172        };
173        $('[href="#calendar_add'+viewName+'_details7"]').click(function(eventData, eventObject){
174                $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'gotoDate', Date.parseExact($('[name="startDate"]').val() + " " + $.trim($('[name="startHour"]').val()), formatString) , formatString);
175                  updateMapView();
176        });     
177        $('.new-'+viewName+'-win .map_disponibility').find(".fc-button-prev, .fc-button-next, .fc-button-today").click(function(){
178                updateMapView();
179        });
180}
Note: See TracBrowser for help on using the repository browser.