[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 | |
---|
| 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 | |
---|
| 37 | function 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 | eventSource.push( |
---|
| 157 | { |
---|
| 158 | id : "map_busy_events", |
---|
| 159 | title : map.attendees[map_attende].name, |
---|
| 160 | start: new Date(parseInt(map_events[map_attende][event_by_attende].startTime)), |
---|
| 161 | end: new Date(parseInt(map_events[map_attende][event_by_attende].endTime)), |
---|
| 162 | editable : false, |
---|
| 163 | allDay : !!parseInt(map_events[map_attende][event_by_attende].allDay), |
---|
| 164 | backgroundColor : map.attendees[map_attende].color + " !important", |
---|
| 165 | borderColor : map.attendees[map_attende].color + " !important" |
---|
| 166 | }); |
---|
| 167 | } |
---|
| 168 | } |
---|
| 169 | if(eventSource.length) |
---|
| 170 | $("#new_event_map").fullCalendar( 'addEventSource', eventSource ); |
---|
| 171 | }; |
---|
| 172 | $('[href="#calendar_addevent_details7"]').click(function(eventData, eventObject){ |
---|
| 173 | $("#new_event_map").fullCalendar( 'gotoDate', Date.parseExact($('[name="startDate"]').val() + " " + $.trim($('[name="startHour"]').val()), formatString) , formatString); |
---|
| 174 | //if(eventObject == undefined) |
---|
| 175 | updateMapView(); |
---|
| 176 | }); |
---|
| 177 | $("#new_event_map").find(".fc-button-prev, .fc-button-next, .fc-button-today").click(function(){ |
---|
| 178 | updateMapView(); |
---|
| 179 | }); |
---|
| 180 | } |
---|