"use strict";angular.module("mwl.calendar",["ui.bootstrap"]),angular.module("mwl.calendar").run(["$templateCache",function(e){e.put("templates/day.html",'
{{ timeLabel || \'Time\' }}
{{ eventLabel || \'Events\' }}
{{ day.label }}
'),e.put("templates/main.html",'
The value passed to calendar-view is not set
'),e.put("templates/month.html",'
{{ day }}
{{ day.events.length }} {{ day.label }}
'),e.put("templates/week.html",'
{{ column.weekDay }}
{{ column.date }}
'),e.put("templates/year.html",'
{{ month.label }} {{ month.events.length }}
')}]),angular.module("mwl.calendar").constant("moment",window.moment),angular.module("mwl.calendar").service("calendarHelper",["$filter","moment",function(e,t){function a(){return 1===t().startOf("week").day()}function n(e){return angular.isDefined(e)?e:a()}var l=this;this.getMonthNames=function(t){for(var a=t?"MMM":"MMMM",n=[],l=0;11>=l;l++)n.push(e("date")(new Date(2014,l),a));return n},this.getWeekDayNames=function(t,a){for(var l=t?"EEE":"EEEE",i=[],r=n(a)?22:21,c=0;6>=c;c++)i.push(e("date")(new Date(2014,8,r+c),l));return i},this.eventIsInPeriod=function(e,a,n,l){return t(e).isAfter(t(n))&&t(e).isBefore(t(l))||t(a).isAfter(t(n))&&t(a).isBefore(t(l))||t(e).isBefore(t(n))&&t(a).isAfter(t(l))||t(e).isSame(t(n))||t(a).isSame(t(l))},this.getYearView=function(e,a){for(var n=[],i=l.getMonthNames(),r=0;3>r;r++){for(var c=[],d=0;4>d;d++){var s=12-i.length,v=new Date(t(a).format("YYYY"),s,1),o=t(v).add(1,"month").subtract(1,"second").toDate();c.push({label:i.shift(),monthIndex:s,isToday:t(v).startOf("month").isSame(t().startOf("month")),events:e.filter(function(e){return l.eventIsInPeriod(e.starts_at,e.ends_at,v,o)}),date:t(v).startOf("month")})}n.push(c)}return n},this.getMonthView=function(e,a,i){function r(){var e=d.day()-c;return 0>e&&(e=6),e}for(var c=n(i)?1:0,d=t(a).startOf("month"),s=t(a).endOf("month").date(),v=[],o=new Array(7),u=e.map(function(e,t){return e.$id=t,e}),m=1;s>=m;m++){if(1==m)for(var y=r(d),f=d.clone();y>0;)y--,f=f.subtract(1,"day"),o[y]={label:f.date(),date:f.clone(),inMonth:!1,events:[]};if(o[r(d)]={label:d.date(),inMonth:!0,isToday:t().startOf("day").isSame(d),date:d.clone(),events:u.filter(function(e){return l.eventIsInPeriod(e.starts_at,e.ends_at,d.clone().startOf("day"),d.clone().endOf("day"))})},m==s)for(var y=r(d),h=d.clone();6>y;)y++,h=h.add(1,"day"),o[y]={label:h.date(),date:h.clone(),inMonth:!1,events:[]};(6===r(d)||m==s)&&(v.push(o),o=new Array(7)),d=d.add(1,"day")}return v},this.getWeekView=function(a,i,r){for(var c,d,s=n(r)?1:0,v=new Array(7),o=l.getWeekDayNames(!1,r),u=i.getDay(),m=u;m>=0;m--){var y=t(i).subtract(u-m,"days").add(s,"day").toDate();v[m]={weekDay:o[m],day:e("date")(y,"d"),date:e("date")(y,"d MMM"),isToday:t(y).startOf("day").isSame(t().startOf("day"))},0==m?c=y:6==m&&(d=y)}for(var m=u+1;7>m;m++){var y=t(i).add(m-u,"days").add(s,"day").toDate();v[m]={weekDay:o[m],day:e("date")(y,"d"),date:e("date")(y,"d MMM"),isToday:t(y).startOf("day").isSame(t().startOf("day"))},0==m?c=y:6==m&&(d=y)}d=t(d).endOf("day").toDate(),c=t(c).startOf("day").toDate();var f=a.filter(function(e){return l.eventIsInPeriod(e.starts_at,e.ends_at,c,d)}).map(function(e){var a,n,l=t(e.starts_at).startOf("day"),i=t(e.ends_at).startOf("day"),r=t(c).startOf("day"),s=t(d).startOf("day");return a=l.isBefore(r)||l.isSame(r)?0:l.diff(r,"days"),i.isAfter(s)&&(i=s),l.isBefore(r)&&(l=r),n=t(i).diff(l,"days")+1,e.daySpan=n,e.dayOffset=a,e});return{columns:v,events:f}},this.getDayView=function(e,a,n,i){var r=t(a).startOf("day").add(n,"hours"),c=t(a).startOf("day").add(i,"hours"),d=60*(i-n+1),s=[];return e.filter(function(e){return l.eventIsInPeriod(e.starts_at,e.ends_at,t(a).startOf("day").toDate(),t(a).endOf("day").toDate())}).map(function(e){if(e.top=t(e.starts_at).isBefore(r)?0:t(e.starts_at).startOf("minute").diff(r.startOf("minute"),"minutes")-2,t(e.ends_at).isAfter(c))e.height=d-e.top;else{var a=e.starts_at;t(e.starts_at).isBefore(r)&&(a=r.toDate()),e.height=t(e.ends_at).diff(a,"minutes")}return e.top-e.height>d&&(e.height=0),e.left=0,e}).filter(function(e){return e.height>0}).map(function(e){var t=!0;return s.forEach(function(a,n){var i=!0;a.forEach(function(t){(l.eventIsInPeriod(e.starts_at,e.ends_at,t.starts_at,t.ends_at)||l.eventIsInPeriod(t.starts_at,t.ends_at,e.starts_at,e.ends_at))&&(i=!1)}),i&&t&&(t=!1,e.left=150*n,s[n].push(e))}),t&&(e.left=150*s.length,s.push([e])),e})},this.toggleEventBreakdown=function(e,t,a){function n(){e=e.map(function(e){return e.isOpened=!1,e.map(function(e){return e.isOpened=!1,e})})}var l=[];if(e[t][a].events.length>0){var i=e[t][a].isOpened;n(),e[t][a].isOpened=!i,e[t].isOpened=!i,l=e[t][a].events}else n();return{view:e,openEvents:l}}}]),angular.module("mwl.calendar").filter("truncateEventTitle",function(){return function(e,t,a){return e?e.length>=t&&e.length/20>a/30?e.substr(0,t)+"...":e:""}}),angular.module("mwl.calendar").directive("mwlCalendarYear",["$sce","$timeout","calendarHelper","moment",function(e,t,a,n){return{templateUrl:"templates/year.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=calendarEvents",currentDay:"=calendarCurrentDay",eventClick:"=calendarEventClick",eventEditClick:"=calendarEditEventClick",eventDeleteClick:"=calendarDeleteEventClick",editEventHtml:"=calendarEditEventHtml",deleteEventHtml:"=calendarDeleteEventHtml",autoOpen:"=calendarAutoOpen",timespanClick:"=calendarTimespanClick"},link:function(l,i,r,c){function d(){l.view=a.getYearView(l.events,l.currentDay),l.autoOpen&&!s&&l.view.forEach(function(e,a){e.forEach(function(e,i){e.label==n(l.currentDay).format("MMMM")&&(l.monthClicked(a,i,!0),t(function(){s=!1}))})})}var s=!1;l.$sce=e,c.titleFunctions.year=function(e){return n(e).format("YYYY")},l.$watch("currentDay",d),l.$watch("events",d,!0),l.monthClicked=function(e,t,n){n||l.timespanClick({$date:l.view[e][t].date.startOf("month").toDate()});var i=a.toggleEventBreakdown(l.view,e,t);l.view=i.view,l.openEvents=i.openEvents},l.drillDown=function(e){c.changeView("month",n(l.currentDay).clone().month(e).toDate())}}}}]),angular.module("mwl.calendar").directive("mwlCalendarWeek",["moment","calendarHelper",function(e,t){return{templateUrl:"templates/week.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=calendarEvents",currentDay:"=calendarCurrentDay",eventClick:"=calendarEventClick",useIsoWeek:"=calendarUseIsoWeek",weekTitleLabel:"@calendarWeekTitleLabel"},link:function(a,n,l,i){function r(){a.view=t.getWeekView(a.events,a.currentDay,a.useIsoWeek)}var c=a.weekTitleLabel||"Week {week} of {year}";i.titleFunctions.week=function(t){return c.replace("{week}",e(t).week()).replace("{year}",e(t).format("YYYY"))},a.drillDown=function(t){i.changeView("day",e(a.currentDay).clone().date(t).toDate())},a.$watch("currentDay",r),a.$watch("events",r,!0)}}}]),angular.module("mwl.calendar").directive("mwlCalendarMonth",["$sce","$timeout","$filter","moment","calendarHelper",function(e,t,a,n,l){return{templateUrl:"templates/month.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=calendarEvents",currentDay:"=calendarCurrentDay",eventClick:"=calendarEventClick",eventEditClick:"=calendarEditEventClick",eventDeleteClick:"=calendarDeleteEventClick",editEventHtml:"=calendarEditEventHtml",deleteEventHtml:"=calendarDeleteEventHtml",autoOpen:"=calendarAutoOpen",useIsoWeek:"=calendarUseIsoWeek",timespanClick:"=calendarTimespanClick"},link:function(i,r,c,d){function s(){i.view=l.getMonthView(i.events,i.currentDay,i.useIsoWeek),i.autoOpen&&!v&&i.view.forEach(function(e,a){e.forEach(function(e,l){e.inMonth&&n(i.currentDay).startOf("day").isSame(e.date.startOf("day"))&&(i.dayClicked(a,l,!0),t(function(){v=!1}))})})}var v=!1;i.$sce=e,d.titleFunctions.month=function(e){return a("date")(e,"MMMM yyyy")},i.$watch("currentDay",s),i.$watch("events",s,!0),i.weekDays=l.getWeekDayNames(!1,i.useIsoWeek),i.dayClicked=function(e,t,a){a||i.timespanClick({$date:i.view[e][t].date.startOf("day").toDate()});var n=l.toggleEventBreakdown(i.view,e,t);i.view=n.view,i.openEvents=n.openEvents},i.drillDown=function(e){d.changeView("day",n(i.currentDay).clone().date(e).toDate())},i.highlightEvent=function(e,t){i.view=i.view.map(function(a){return a.isOpened=!1,a.map(function(a){if(delete a.highlightClass,a.isOpened=!1,t){var n=a.events.filter(function(t){return t.$id==e.$id}).length>0;n&&(a.highlightClass="day-highlight dh-event-"+e.type)}return a})})}}}}]),angular.module("mwl.calendar").directive("mwlCalendarDay",["$filter","moment","calendarHelper",function(e,t,a){return{templateUrl:"templates/day.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=calendarEvents",currentDay:"=calendarCurrentDay",eventClick:"=calendarEventClick",eventLabel:"@calendarEventLabel",timeLabel:"@calendarTimeLabel",dayViewStart:"@calendarDayViewStart",dayViewEnd:"@calendarDayViewEnd"},link:function(n,l,i,r){function c(){n.view=a.getDayView(n.events,n.currentDay,d.hours(),s.hours())}var d=t(n.dayViewStart||"00:00","HH:mm"),s=t(n.dayViewEnd||"23:00","HH:mm");n.days=[];for(var v=t(d),o=0;o<=s.diff(d,"hours");o++)n.days.push({label:v.format("ha")}),v.add(1,"hour");r.titleFunctions.day=function(t){return e("date")(t,"EEEE d MMMM, yyyy")},n.$watch("currentDay",c),n.$watch("events",c,!0)}}}]),angular.module("mwl.calendar").directive("mwlCalendar",function(){return{templateUrl:"templates/main.html",restrict:"EA",scope:{events:"=calendarEvents",view:"=calendarView",currentDay:"=calendarCurrentDay",control:"=calendarControl",eventClick:"&calendarEventClick",eventEditClick:"&calendarEditEventClick",eventDeleteClick:"&calendarDeleteEventClick",editEventHtml:"=calendarEditEventHtml",deleteEventHtml:"=calendarDeleteEventHtml",autoOpen:"=calendarAutoOpen",useIsoWeek:"=calendarUseIsoWeek",eventLabel:"@calendarEventLabel",timeLabel:"@calendarTimeLabel",dayViewStart:"@calendarDayViewStart",dayViewEnd:"@calendarDayViewEnd",weekTitleLabel:"@calendarWeekTitleLabel",timespanClick:"&calendarTimespanClick"},controller:["$scope","$timeout","$locale","moment",function(e,t,a,n){var l=this;this.titleFunctions={},this.changeView=function(t,a){e.view=t,e.currentDay=a},e.control=e.control||{},e.control.prev=function(){e.currentDay=n(e.currentDay).subtract(1,e.view).toDate()},e.control.next=function(){e.currentDay=n(e.currentDay).add(1,e.view).toDate()},e.control.getTitle=function(){return l.titleFunctions[e.view]?l.titleFunctions[e.view](e.currentDay):""};var i=!0,r=e.$watch(function(){return n.locale()+a.id},function(){if(i)return void(i=!1);var a=angular.copy(e.view);e.view="redraw",t(function(){e.view=a})}),c=e.$on("$destroy",function(){c(),r()})}]}}); //# sourceMappingURL=angular-bootstrap-calendar-tpls.min.js.map