[5636] | 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(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 | |
---|
[6444] | 17 | var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; |
---|
[5636] | 18 | |
---|
[6444] | 19 | var startDate = Date.parseExact( start_date + " " + $.trim(start_time) , formatString ); |
---|
| 20 | var endDate = Date.parseExact( end_date + " " + $.trim(end_time) , formatString ); |
---|
[5636] | 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 | |
---|
| 37 | function disponibily(objEvent, path, attendees){ |
---|
[6444] | 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 ); |
---|
[5636] | 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, |
---|
[6444] | 46 | timeFormat: User.preferences.hourFormat, |
---|
[5636] | 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 | |
---|
[6444] | 75 | $('[name="startDate"]').val(start.toString(User.preferences.dateFormat)); |
---|
| 76 | $('[name="endDate"]').val(end.toString(User.preferences.dateFormat)); |
---|
[5636] | 77 | if(!allDay){ |
---|
| 78 | $('[name="allDay"]').attr("checked", false); |
---|
| 79 | UI.dialogs.addEvent.find('.start-time, .end-time').removeClass('hidden'); |
---|
| 80 | |
---|
[6444] | 81 | $('[name="startHour"]').val(start.toString(User.preferences.hourFormat)); |
---|
[5636] | 82 | if(end){ |
---|
[6444] | 83 | $('[name="endHour"]').val(end.toString(User.preferences.hourFormat)); |
---|
[5636] | 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", |
---|
[6327] | 99 | backgroundColor : "transparent !important", |
---|
| 100 | editable : objEvent.acl.write || objEvent.acl.organization |
---|
[5636] | 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'); |
---|
[6444] | 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 | |
---|
[5636] | 111 | }else{ |
---|
| 112 | $('[name="allDay"]').attr("checked", false); |
---|
| 113 | UI.dialogs.addEvent.find('.start-time, .end-time').removeClass('hidden'); |
---|
[6444] | 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)); |
---|
[5636] | 121 | } |
---|
| 122 | }, |
---|
| 123 | eventResize: function(event,dayDelta,minuteDelta,revertFunc) { |
---|
[6444] | 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)); |
---|
[5636] | 128 | |
---|
| 129 | }, |
---|
[6444] | 130 | defaultView : "agendaWeek" |
---|
[5636] | 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]){ |
---|
[6069] | 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 | |
---|
[5636] | 155 | eventSource.push( |
---|
| 156 | { |
---|
| 157 | id : "map_busy_events", |
---|
| 158 | title : map.attendees[map_attende].name, |
---|
[6069] | 159 | start: Timezone.getDateMapDisponibility(new Date(parseInt(map_events[map_attende][event_by_attende].startTime))), |
---|
| 160 | end: endTime, |
---|
[5636] | 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 | }); |
---|
[6327] | 179 | } |
---|