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

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

Ticket #2846 - Melhorias e inconsistências gerais no modulo expressoCalendar

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