1 | function 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 | |
---|
10 | function 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 | |
---|
37 | function 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 | } |
---|