12 |
- "use strict";angular.module("mwl.calendar",["ui.bootstrap"]),angular.module("mwl.calendar").constant("moment",window.moment),angular.module("mwl.calendar").service("calendarHelper",["$filter","moment",function(e,t){function n(){return 1===t().startOf("week").day()}function a(e){return angular.isDefined(e)?e:n()}var r=this;this.getMonthNames=function(t){for(var n=t?"MMM":"MMMM",a=[],r=0;11>=r;r++)a.push(e("date")(new Date(2014,r),n));return a},this.getWeekDayNames=function(t,n){for(var r=t?"EEE":"EEEE",i=[],l=a(n)?22:21,c=0;6>=c;c++)i.push(e("date")(new Date(2014,8,l+c),r));return i},this.eventIsInPeriod=function(e,n,a,r){return t(e).isAfter(t(a))&&t(e).isBefore(t(r))||t(n).isAfter(t(a))&&t(n).isBefore(t(r))||t(e).isBefore(t(a))&&t(n).isAfter(t(r))||t(e).isSame(t(a))||t(n).isSame(t(r))},this.getYearView=function(e,n){for(var a=[],i=r.getMonthNames(),l=0;3>l;l++){for(var c=[],d=0;4>d;d++){var o=12-i.length,s=new Date(t(n).format("YYYY"),o,1),u=t(s).add(1,"month").subtract(1,"second").toDate();c.push({label:i.shift(),monthIndex:o,isToday:t(s).startOf("month").isSame(t().startOf("month")),events:e.filter(function(e){return r.eventIsInPeriod(e.starts_at,e.ends_at,s,u)}),date:t(s).startOf("month")})}a.push(c)}return a},this.getMonthView=function(e,n,i){function l(){var e=d.day()-c;return 0>e&&(e=6),e}for(var c=a(i)?1:0,d=t(n).startOf("month"),o=t(n).endOf("month").date(),s=[],u=new Array(7),f=e.map(function(e,t){return e.$id=t,e}),v=1;o>=v;v++){if(1==v)for(var m=l(d),y=d.clone();m>0;)m--,y=y.subtract(1,"day"),u[m]={label:y.date(),date:y.clone(),inMonth:!1,events:[]};if(u[l(d)]={label:d.date(),inMonth:!0,isToday:t().startOf("day").isSame(d),date:d.clone(),events:f.filter(function(e){return r.eventIsInPeriod(e.starts_at,e.ends_at,d.clone().startOf("day"),d.clone().endOf("day"))})},v==o)for(var m=l(d),h=d.clone();6>m;)m++,h=h.add(1,"day"),u[m]={label:h.date(),date:h.clone(),inMonth:!1,events:[]};(6===l(d)||v==o)&&(s.push(u),u=new Array(7)),d=d.add(1,"day")}return s},this.getWeekView=function(n,i,l){for(var c,d,o=a(l)?1:0,s=new Array(7),u=r.getWeekDayNames(!1,l),f=i.getDay(),v=f;v>=0;v--){var m=t(i).subtract(f-v,"days").add(o,"day").toDate();s[v]={weekDay:u[v],day:e("date")(m,"d"),date:e("date")(m,"d MMM"),isToday:t(m).startOf("day").isSame(t().startOf("day"))},0==v?c=m:6==v&&(d=m)}for(var v=f+1;7>v;v++){var m=t(i).add(v-f,"days").add(o,"day").toDate();s[v]={weekDay:u[v],day:e("date")(m,"d"),date:e("date")(m,"d MMM"),isToday:t(m).startOf("day").isSame(t().startOf("day"))},0==v?c=m:6==v&&(d=m)}d=t(d).endOf("day").toDate(),c=t(c).startOf("day").toDate();var y=n.filter(function(e){return r.eventIsInPeriod(e.starts_at,e.ends_at,c,d)}).map(function(e){var n,a,r=t(e.starts_at).startOf("day"),i=t(e.ends_at).startOf("day"),l=t(c).startOf("day"),o=t(d).startOf("day");return n=r.isBefore(l)||r.isSame(l)?0:r.diff(l,"days"),i.isAfter(o)&&(i=o),r.isBefore(l)&&(r=l),a=t(i).diff(r,"days")+1,e.daySpan=a,e.dayOffset=n,e});return{columns:s,events:y}},this.getDayView=function(e,n,a,i){var l=t(n).startOf("day").add(a,"hours"),c=t(n).startOf("day").add(i,"hours"),d=60*(i-a+1),o=[];return e.filter(function(e){return r.eventIsInPeriod(e.starts_at,e.ends_at,t(n).startOf("day").toDate(),t(n).endOf("day").toDate())}).map(function(e){if(e.top=t(e.starts_at).isBefore(l)?0:t(e.starts_at).startOf("minute").diff(l.startOf("minute"),"minutes")-2,t(e.ends_at).isAfter(c))e.height=d-e.top;else{var n=e.starts_at;t(e.starts_at).isBefore(l)&&(n=l.toDate()),e.height=t(e.ends_at).diff(n,"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 o.forEach(function(n,a){var i=!0;n.forEach(function(t){(r.eventIsInPeriod(e.starts_at,e.ends_at,t.starts_at,t.ends_at)||r.eventIsInPeriod(t.starts_at,t.ends_at,e.starts_at,e.ends_at))&&(i=!1)}),i&&t&&(t=!1,e.left=150*a,o[a].push(e))}),t&&(e.left=150*o.length,o.push([e])),e})},this.toggleEventBreakdown=function(e,t,n){function a(){e=e.map(function(e){return e.isOpened=!1,e.map(function(e){return e.isOpened=!1,e})})}var r=[];if(e[t][n].events.length>0){var i=e[t][n].isOpened;a(),e[t][n].isOpened=!i,e[t].isOpened=!i,r=e[t][n].events}else a();return{view:e,openEvents:r}}}]),angular.module("mwl.calendar").filter("truncateEventTitle",function(){return function(e,t,n){return e?e.length>=t&&e.length/20>n/30?e.substr(0,t)+"...":e:""}}),angular.module("mwl.calendar").directive("mwlCalendarYear",["$sce","$timeout","calendarHelper","moment",function(e,t,n,a){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(r,i,l,c){function d(){r.view=n.getYearView(r.events,r.currentDay),r.autoOpen&&!o&&r.view.forEach(function(e,n){e.forEach(function(e,i){e.label==a(r.currentDay).format("MMMM")&&(r.monthClicked(n,i,!0),t(function(){o=!1}))})})}var o=!1;r.$sce=e,c.titleFunctions.year=function(e){return a(e).format("YYYY")},r.$watch("currentDay",d),r.$watch("events",d,!0),r.monthClicked=function(e,t,a){a||r.timespanClick({$date:r.view[e][t].date.startOf("month").toDate()});var i=n.toggleEventBreakdown(r.view,e,t);r.view=i.view,r.openEvents=i.openEvents},r.drillDown=function(e){c.changeView("month",a(r.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(n,a,r,i){function l(){n.view=t.getWeekView(n.events,n.currentDay,n.useIsoWeek)}var c=n.weekTitleLabel||"Week {week} of {year}";i.titleFunctions.week=function(t){return c.replace("{week}",e(t).week()).replace("{year}",e(t).format("YYYY"))},n.drillDown=function(t){i.changeView("day",e(n.currentDay).clone().date(t).toDate())},n.$watch("currentDay",l),n.$watch("events",l,!0)}}}]),angular.module("mwl.calendar").directive("mwlCalendarMonth",["$sce","$timeout","$filter","moment","calendarHelper",function(e,t,n,a,r){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,l,c,d){function o(){i.view=r.getMonthView(i.events,i.currentDay,i.useIsoWeek),i.autoOpen&&!s&&i.view.forEach(function(e,n){e.forEach(function(e,r){e.inMonth&&a(i.currentDay).startOf("day").isSame(e.date.startOf("day"))&&(i.dayClicked(n,r,!0),t(function(){s=!1}))})})}var s=!1;i.$sce=e,d.titleFunctions.month=function(e){return n("date")(e,"MMMM yyyy")},i.$watch("currentDay",o),i.$watch("events",o,!0),i.weekDays=r.getWeekDayNames(!1,i.useIsoWeek),i.dayClicked=function(e,t,n){n||i.timespanClick({$date:i.view[e][t].date.startOf("day").toDate()});var a=r.toggleEventBreakdown(i.view,e,t);i.view=a.view,i.openEvents=a.openEvents},i.drillDown=function(e){d.changeView("day",a(i.currentDay).clone().date(e).toDate())},i.highlightEvent=function(e,t){i.view=i.view.map(function(n){return n.isOpened=!1,n.map(function(n){if(delete n.highlightClass,n.isOpened=!1,t){var a=n.events.filter(function(t){return t.$id==e.$id}).length>0;a&&(n.highlightClass="day-highlight dh-event-"+e.type)}return n})})}}}}]),angular.module("mwl.calendar").directive("mwlCalendarDay",["$filter","moment","calendarHelper",function(e,t,n){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(a,r,i,l){function c(){a.view=n.getDayView(a.events,a.currentDay,d.hours(),o.hours())}var d=t(a.dayViewStart||"00:00","HH:mm"),o=t(a.dayViewEnd||"23:00","HH:mm");a.days=[];for(var s=t(d),u=0;u<=o.diff(d,"hours");u++)a.days.push({label:s.format("ha")}),s.add(1,"hour");l.titleFunctions.day=function(t){return e("date")(t,"EEEE d MMMM, yyyy")},a.$watch("currentDay",c),a.$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,n,a){var r=this;this.titleFunctions={},this.changeView=function(t,n){e.view=t,e.currentDay=n},e.control=e.control||{},e.control.prev=function(){e.currentDay=a(e.currentDay).subtract(1,e.view).toDate()},e.control.next=function(){e.currentDay=a(e.currentDay).add(1,e.view).toDate()},e.control.getTitle=function(){return r.titleFunctions[e.view]?r.titleFunctions[e.view](e.currentDay):""};var i=!0,l=e.$watch(function(){return a.locale()+n.id},function(){if(i)return void(i=!1);var n=angular.copy(e.view);e.view="redraw",t(function(){e.view=n})}),c=e.$on("$destroy",function(){c(),l()})}]}});
- //# sourceMappingURL=angular-bootstrap-calendar.min.js.map
|