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

Revision 6069, 6.9 KB checked in by douglasz, 12 years ago (diff)

Ticket #2673 - Problemas com o mapa de disponibilidade.

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