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

Revision 6327, 6.9 KB checked in by angelo, 12 years ago (diff)

Ticket #2806 - Inconsistencia na alteracao do horario no 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                                editable : objEvent.acl.write || objEvent.acl.organization
104                        }
105                ],
106                eventDrop : function(event,dayDelta,minuteDelta,allDay,revertFunc){
107                        if(event.allDay){
108                                $('[name="allDay"]').attr("checked", true);
109                                UI.dialogs.addEvent.find('.start-time, .end-time').addClass('hidden');
110                                $('[name="startDate"]').val(event.start.toString("dd/MM/yyyy"));
111                                if(event.end)
112                                        $('[name="endDate"]').val(event.end.toString("dd/MM/yyyy"));
113                                else
114                                        $('[name="endDate"]').val(event.start.toString("dd/MM/yyyy"));
115                                return;
116                        }else{
117                                $('[name="allDay"]').attr("checked", false);
118                                UI.dialogs.addEvent.find('.start-time, .end-time').removeClass('hidden');
119                        }
120                        $('[name="startHour"]').val(event.start.toString("HH:mm"));
121                        $('[name="startDate"]').val(event.start.toString("dd/MM/yyyy"));
122                        if(event.end){
123                                $('[name="endHour"]').val(event.end.toString("HH:mm"));
124                                $('[name="endDate"]').val(event.end.toString("dd/MM/yyyy"));
125                        }else
126                                $('[name="endDate"]').val(event.start.toString("dd/MM/yyyy"));
127                },
128                eventResize: function(event,dayDelta,minuteDelta,revertFunc) {
129                        if(event.end){
130                                $('[name="endHour"]').val(event.end.toString("HH:mm"));
131                                $('[name="endDate"]').val(event.end.toString("dd/MM/yyyy"));
132                        }else
133                                $('[name="endDate"]').val(event.start.toString("dd/MM/yyyy"));
134                               
135                },
136                defaultView : "agendaWeek"
137        }, dateCalendar));
138        var eventSource = new Array();
139        var updateMapView = function(){
140                updateMap();
141                var view = $("#new_event_map").fullCalendar('getView');
142                var map = {};
143                $("#new_event_map").fullCalendar( 'removeEventSource', eventSource );
144                eventSource = new Array();     
145                map = {startTime : view.start.getTime(), endTime : view.end.getTime(), attendees: {}, timezone: (objEvent.timezone || User.preferences.timezone)};
146                map.attendees[User.me.id] = {id : User.me.id, name : User.me.name};
147                var count = 0;
148                for (var idAttendee in attendees){
149                        if(attendees[idAttendee]){
150                                map.attendees[idAttendee] = {id : idAttendee, name : attendees[idAttendee], color: getColorAttendee(count)};
151                                count++;
152                        }
153                }
154                map_events = DataLayer.dispatch("mapDisponibility", map, false, false);
155                for(var map_attende in map_events){
156                        for(var event_by_attende in map_events[map_attende]){
157                                var endTime = Timezone.getDateMapDisponibility(new Date(parseInt(map_events[map_attende][event_by_attende].endTime)));
158                                if(!!parseInt(map_events[map_attende][event_by_attende].allDay))
159                                        endTime.add({day: -1});
160
161                                eventSource.push(
162                                {
163                                        id : "map_busy_events",
164                                        title : map.attendees[map_attende].name,
165                                        start: Timezone.getDateMapDisponibility(new Date(parseInt(map_events[map_attende][event_by_attende].startTime))),
166                                        end: endTime,
167                                        editable : false,
168                                        allDay : !!parseInt(map_events[map_attende][event_by_attende].allDay),
169                                        backgroundColor : map.attendees[map_attende].color + " !important",
170                                        borderColor : map.attendees[map_attende].color + " !important"
171                                });
172                        }
173                }
174                if(eventSource.length)
175                        $("#new_event_map").fullCalendar( 'addEventSource', eventSource );
176        };
177        $('[href="#calendar_addevent_details7"]').click(function(eventData, eventObject){
178                $("#new_event_map").fullCalendar( 'gotoDate', Date.parseExact($('[name="startDate"]').val() + " " + $.trim($('[name="startHour"]').val()), formatString) , formatString);
179                //if(eventObject == undefined)
180                        updateMapView();
181        });     
182        $("#new_event_map").find(".fc-button-prev, .fc-button-next, .fc-button-today").click(function(){
183                updateMapView();
184        });
185}
Note: See TracBrowser for help on using the repository browser.