12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069 |
- /**
- * angular-bootstrap-calendar - A pure AngularJS bootstrap themed responsive calendar that can display events and has views for year, month, week and day
- * @version v0.18.0
- * @link https://github.com/mattlewis92/angular-bootstrap-calendar
- * @license MIT
- */
- (function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory(require("angular"), (function webpackLoadOptionalExternalModule() { try { return require("interact.js"); } catch(e) {} }()), require("moment"));
- else if(typeof define === 'function' && define.amd)
- define(["angular", "interact", "moment"], factory);
- else if(typeof exports === 'object')
- exports["angularBootstrapCalendarModuleName"] = factory(require("angular"), (function webpackLoadOptionalExternalModule() { try { return require("interact.js"); } catch(e) {} }()), require("moment"));
- else
- root["angularBootstrapCalendarModuleName"] = factory(root["angular"], root["interact"], root["moment"]);
- })(this, function(__WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_47__, __WEBPACK_EXTERNAL_MODULE_49__) {
- return /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId])
- /******/ return installedModules[moduleId].exports;
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ exports: {},
- /******/ id: moduleId,
- /******/ loaded: false
- /******/ };
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/ // Flag the module as loaded
- /******/ module.loaded = true;
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(0);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- __webpack_require__(8);
- var angular = __webpack_require__(12);
- function requireAll(r) {
- r.keys().forEach(r);
- }
- var templates = {};
- if (true) {
- var templatesContext = __webpack_require__(13);
- templatesContext.keys().forEach(function(templateName) {
- var templateNameWithoutPrefix = templateName.replace('./', '');
- var cacheTemplateName = 'mwl/' + templateNameWithoutPrefix;
- var configTemplateName = templateNameWithoutPrefix.replace('.html', '');
- templates[configTemplateName] = {
- cacheTemplateName: cacheTemplateName,
- template: templatesContext(templateName)
- };
- });
- }
- module.exports = angular
- .module('mwl.calendar', [])
- .config(["calendarConfig", function(calendarConfig) {
- angular.forEach(templates, function(template, templateName) {
- if (!calendarConfig.templates[templateName]) {
- calendarConfig.templates[templateName] = template.cacheTemplateName;
- }
- });
- }])
- .run(["$templateCache", function($templateCache) {
- angular.forEach(templates, function(template) {
- if (!$templateCache.get(template.cacheTemplateName)) {
- $templateCache.put(template.cacheTemplateName, template.template);
- }
- });
- }]).name;
- requireAll(__webpack_require__(23));
- requireAll(__webpack_require__(37));
- requireAll(__webpack_require__(42));
- /***/ },
- /* 1 */,
- /* 2 */,
- /* 3 */,
- /* 4 */,
- /* 5 */,
- /* 6 */,
- /* 7 */,
- /* 8 */
- /***/ function(module, exports) {
- // removed by extract-text-webpack-plugin
- /***/ },
- /* 9 */,
- /* 10 */,
- /* 11 */,
- /* 12 */
- /***/ function(module, exports) {
- module.exports = __WEBPACK_EXTERNAL_MODULE_12__;
- /***/ },
- /* 13 */
- /***/ function(module, exports, __webpack_require__) {
- var map = {
- "./calendar.html": 14,
- "./calendarDayView.html": 15,
- "./calendarHourList.html": 16,
- "./calendarMonthCell.html": 17,
- "./calendarMonthCellEvents.html": 18,
- "./calendarMonthView.html": 19,
- "./calendarSlideBox.html": 20,
- "./calendarWeekView.html": 21,
- "./calendarYearView.html": 22
- };
- function webpackContext(req) {
- return __webpack_require__(webpackContextResolve(req));
- };
- function webpackContextResolve(req) {
- return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
- };
- webpackContext.keys = function webpackContextKeys() {
- return Object.keys(map);
- };
- webpackContext.resolve = webpackContextResolve;
- module.exports = webpackContext;
- webpackContext.id = 13;
- /***/ },
- /* 14 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-context\" ng-switch=\"vm.view\">\n\n <div class=\"alert alert-danger\" ng-switch-default>The value passed to the view attribute of the calendar is not set</div>\n\n <div class=\"alert alert-danger\" ng-hide=\"vm.viewDate\">The value passed to view-date attribute of the calendar is not set</div>\n\n <mwl-calendar-year\n events=\"vm.events\"\n view-date=\"vm.viewDate\"\n on-event-click=\"vm.onEventClick\"\n on-event-times-changed=\"vm.onEventTimesChanged\"\n on-edit-event-click=\"vm.onEditEventClick\"\n on-delete-event-click=\"vm.onDeleteEventClick\"\n on-timespan-click=\"vm.onTimespanClick\"\n edit-event-html=\"vm.editEventHtml\"\n delete-event-html=\"vm.deleteEventHtml\"\n cell-is-open=\"vm.cellIsOpen\"\n cell-modifier=\"vm.cellModifier\"\n ng-switch-when=\"year\"\n ></mwl-calendar-year>\n\n <mwl-calendar-month\n events=\"vm.events\"\n view-date=\"vm.viewDate\"\n on-event-click=\"vm.onEventClick\"\n on-event-times-changed=\"vm.onEventTimesChanged\"\n on-edit-event-click=\"vm.onEditEventClick\"\n on-delete-event-click=\"vm.onDeleteEventClick\"\n on-timespan-click=\"vm.onTimespanClick\"\n edit-event-html=\"vm.editEventHtml\"\n delete-event-html=\"vm.deleteEventHtml\"\n cell-is-open=\"vm.cellIsOpen\"\n cell-modifier=\"vm.cellModifier\"\n ng-switch-when=\"month\"\n ></mwl-calendar-month>\n\n <mwl-calendar-week\n events=\"vm.events\"\n view-date=\"vm.viewDate\"\n on-event-click=\"vm.onEventClick\"\n on-event-times-changed=\"vm.onEventTimesChanged\"\n day-view-start=\"vm.dayViewStart\"\n day-view-end=\"vm.dayViewEnd\"\n day-view-split=\"vm.dayViewSplit\"\n on-timespan-click=\"vm.onTimespanClick\"\n ng-switch-when=\"week\"\n ></mwl-calendar-week>\n\n <mwl-calendar-day\n events=\"vm.events\"\n view-date=\"vm.viewDate\"\n on-event-click=\"vm.onEventClick\"\n on-event-times-changed=\"vm.onEventTimesChanged\"\n on-timespan-click=\"vm.onTimespanClick\"\n day-view-start=\"vm.dayViewStart\"\n day-view-end=\"vm.dayViewEnd\"\n day-view-split=\"vm.dayViewSplit\"\n ng-switch-when=\"day\"\n ></mwl-calendar-day>\n</div>\n";
- /***/ },
- /* 15 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-day-box\">\n <div class=\"row-fluid clearfix cal-row-head\">\n <div class=\"span1 col-xs-1 cal-cell\" ng-bind=\"vm.calendarConfig.i18nStrings.timeLabel\"></div>\n <div class=\"span11 col-xs-11 cal-cell\" ng-bind=\"vm.calendarConfig.i18nStrings.eventsLabel\"></div>\n </div>\n\n <div class=\"cal-day-panel clearfix\" ng-style=\"{height: vm.dayViewHeight + 'px'}\">\n\n <mwl-calendar-hour-list\n day-view-start=\"vm.dayViewStart\"\n day-view-end=\"vm.dayViewEnd\"\n day-view-split=\"vm.dayViewSplit\"\n on-timespan-click=\"vm.onTimespanClick\"\n view-date=\"vm.viewDate\">\n </mwl-calendar-hour-list>\n\n <div\n class=\"pull-left day-event day-highlight\"\n ng-repeat=\"event in vm.view track by event.$id\"\n ng-class=\"'dh-event-' + event.type + ' ' + event.cssClass\"\n ng-style=\"{top: event.top + 'px', left: event.left + 60 + 'px', height: event.height + 'px'}\"\n mwl-draggable=\"event.draggable === true\"\n axis=\"'xy'\"\n snap-grid=\"{y: 30, x: 50}\"\n on-drag=\"vm.eventDragged(event, y)\"\n on-drag-end=\"vm.eventDragComplete(event, y)\"\n mwl-resizable=\"event.resizable === true && event.endsAt\"\n resize-edges=\"{top: true, bottom: true}\"\n on-resize=\"vm.eventResized(event, edge, y)\"\n on-resize-end=\"vm.eventResizeComplete(event, edge, y)\">\n\n <span class=\"cal-hours\">\n <span ng-show=\"event.top == 0\"><span ng-bind=\"(event.tempStartsAt || event.startsAt) | calendarDate:'day':true\"></span>, </span>\n <span ng-bind=\"(event.tempStartsAt || event.startsAt) | calendarDate:'time':true\"></span>\n </span>\n <a href=\"javascript:;\" class=\"event-item\" ng-click=\"vm.onEventClick({calendarEvent: event})\">\n <span ng-bind-html=\"vm.$sce.trustAsHtml(event.title) | calendarTruncateEventTitle:20:event.height\"></span>\n </a>\n\n </div>\n\n </div>\n\n</div>\n";
- /***/ },
- /* 16 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-day-panel-hour\">\n\n <div class=\"cal-day-hour\" ng-repeat=\"hour in vm.hours track by $index\">\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.toDate()})\">\n <div class=\"span1 col-xs-1\"><strong ng-bind=\"hour.label\"></strong></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit, 'minutes').toDate()})\">\n <div class=\"span1 col-xs-1\"></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-show=\"vm.dayViewSplit < 30\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 2, 'minutes').toDate()})\">\n <div class=\"span1 col-xs-1\"></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-show=\"vm.dayViewSplit < 30\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 3, 'minutes').toDate()})\">\n <div class=\"span1 col-xs-1\"></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-show=\"vm.dayViewSplit < 15\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 4, 'minutes').toDate()})\">\n <div class=\"span1 col-xs-1\"></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n <div\n class=\"row-fluid cal-day-hour-part\"\n ng-show=\"vm.dayViewSplit < 15\"\n ng-click=\"vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 5, 'minutes').toDate()})\">\n <div class=\"span1 col-xs-1\"></div>\n <div class=\"span11 col-xs-11\"></div>\n </div>\n\n </div>\n\n</div>\n";
- /***/ },
- /* 17 */
- /***/ function(module, exports) {
- module.exports = "<div\n mwl-droppable\n on-drop=\"vm.handleEventDrop(dropData.event, day.date, dropData.draggedFromDate)\"\n class=\"cal-month-day {{ day.cssClass }}\"\n ng-class=\"{\n 'cal-day-outmonth': !day.inMonth,\n 'cal-day-inmonth': day.inMonth,\n 'cal-day-weekend': day.isWeekend,\n 'cal-day-past': day.isPast,\n 'cal-day-today': day.isToday,\n 'cal-day-future': day.isFuture\n }\">\n\n <small\n class=\"cal-events-num badge badge-important pull-left\"\n ng-show=\"day.badgeTotal > 0\"\n ng-bind=\"day.badgeTotal\">\n </small>\n\n <span\n class=\"pull-right\"\n data-cal-date\n ng-click=\"vm.calendarCtrl.dateClicked(day.date)\"\n ng-bind=\"day.label\">\n </span>\n\n <div class=\"cal-day-tick\" ng-show=\"dayIndex === vm.openDayIndex && vm.view[vm.openDayIndex].events.length > 0\">\n <i class=\"glyphicon glyphicon-chevron-up\"></i>\n <i class=\"fa fa-chevron-up\"></i>\n </div>\n\n <ng-include src=\"vm.calendarConfig.templates.calendarMonthCellEvents\"></ng-include>\n\n <div id=\"cal-week-box\" ng-if=\"$first && rowHovered\">\n {{ vm.calendarConfig.i18nStrings.weekNumber.replace('{week}', day.date.week()) }}\n </div>\n\n</div>\n";
- /***/ },
- /* 18 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"events-list\" ng-show=\"day.events.length > 0\">\n <a\n ng-repeat=\"event in day.events | orderBy:'startsAt' track by event.$id\"\n href=\"javascript:;\"\n ng-click=\"vm.onEventClick({calendarEvent: event})\"\n class=\"pull-left event\"\n ng-class=\"'event-' + event.type + ' ' + event.cssClass\"\n ng-mouseenter=\"vm.highlightEvent(event, true)\"\n ng-mouseleave=\"vm.highlightEvent(event, false)\"\n tooltip-append-to-body=\"true\"\n uib-tooltip-html=\"((event.startsAt | calendarDate:'time':true) + (vm.calendarConfig.displayEventEndTimes && event.endsAt ? ' - ' + (event.endsAt | calendarDate:'time':true) : '') + ' - ' + event.title) | calendarTrustAsHtml\"\n mwl-draggable=\"event.draggable === true\"\n drop-data=\"{event: event, draggedFromDate: day.date.toDate()}\">\n </a>\n</div>\n";
- /***/ },
- /* 19 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-row-fluid cal-row-head\">\n\n <div class=\"cal-cell1\" ng-repeat=\"day in vm.weekDays track by $index\" ng-bind=\"day\"></div>\n\n</div>\n<div class=\"cal-month-box\">\n\n <div\n ng-repeat=\"rowOffset in vm.monthOffsets track by rowOffset\"\n ng-mouseenter=\"rowHovered = true\"\n ng-mouseleave=\"rowHovered = false\">\n <div class=\"cal-row-fluid cal-before-eventlist\">\n <div\n ng-repeat=\"day in vm.view | calendarLimitTo:7:rowOffset track by $index\"\n ng-init=\"dayIndex = vm.view.indexOf(day)\"\n class=\"cal-cell1 cal-cell {{ day.highlightClass }}\"\n ng-click=\"vm.dayClicked(day, false, $event)\"\n ng-class=\"{pointer: day.events.length > 0}\">\n <ng-include src=\"vm.calendarConfig.templates.calendarMonthCell\"></ng-include>\n </div>\n </div>\n\n <mwl-calendar-slide-box\n is-open=\"vm.openRowIndex === $index && vm.view[vm.openDayIndex].events.length > 0\"\n events=\"vm.view[vm.openDayIndex].events\"\n on-event-click=\"vm.onEventClick\"\n edit-event-html=\"vm.editEventHtml\"\n on-edit-event-click=\"vm.onEditEventClick\"\n delete-event-html=\"vm.deleteEventHtml\"\n on-delete-event-click=\"vm.onDeleteEventClick\">\n </mwl-calendar-slide-box>\n\n </div>\n\n</div>\n";
- /***/ },
- /* 20 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-slide-box\" uib-collapse=\"vm.isCollapsed\" mwl-collapse-fallback=\"vm.isCollapsed\">\n <div class=\"cal-slide-content cal-event-list\">\n <ul class=\"unstyled list-unstyled\">\n\n <li\n ng-repeat=\"event in vm.events | orderBy:'startsAt' track by event.$id\"\n ng-class=\"event.cssClass\"\n mwl-draggable=\"event.draggable === true\"\n drop-data=\"{event: event}\">\n <span class=\"pull-left event\" ng-class=\"'event-' + event.type\"></span>\n \n <a\n href=\"javascript:;\"\n class=\"event-item\"\n ng-click=\"vm.onEventClick({calendarEvent: event})\">\n <span ng-bind-html=\"vm.$sce.trustAsHtml(event.title)\"></span>\n (<span ng-bind=\"event.startsAt | calendarDate:(isMonthView ? 'time' : 'datetime'):true\"></span><span ng-if=\"vm.calendarConfig.displayEventEndTimes && event.endsAt\"> - <span ng-bind=\"event.endsAt | calendarDate:(isMonthView ? 'time' : 'datetime'):true\"></span></span>)\n </a>\n\n <a\n href=\"javascript:;\"\n class=\"event-item-edit\"\n ng-if=\"vm.editEventHtml && event.editable !== false\"\n ng-bind-html=\"vm.$sce.trustAsHtml(vm.editEventHtml)\"\n ng-click=\"vm.onEditEventClick({calendarEvent: event})\">\n </a>\n\n <a\n href=\"javascript:;\"\n class=\"event-item-delete\"\n ng-if=\"vm.deleteEventHtml && event.deletable !== false\"\n ng-bind-html=\"vm.$sce.trustAsHtml(vm.deleteEventHtml)\"\n ng-click=\"vm.onDeleteEventClick({calendarEvent: event})\">\n </a>\n </li>\n\n </ul>\n </div>\n</div>\n";
- /***/ },
- /* 21 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-week-box\" ng-class=\"{'cal-day-box': vm.showTimes}\">\n <div class=\"cal-row-fluid cal-row-head\">\n\n <div\n class=\"cal-cell1\"\n ng-repeat=\"day in vm.view.days track by $index\"\n ng-class=\"{\n 'cal-day-weekend': day.isWeekend,\n 'cal-day-past': day.isPast,\n 'cal-day-today': day.isToday,\n 'cal-day-future': day.isFuture}\"\n mwl-element-dimensions=\"vm.dayColumnDimensions\">\n\n <span ng-bind=\"day.weekDayLabel\"></span>\n <br>\n <small>\n <span\n data-cal-date\n ng-click=\"vm.calendarCtrl.dateClicked(day.date)\"\n class=\"pointer\"\n ng-bind=\"day.dayLabel\">\n </span>\n </small>\n\n </div>\n\n </div>\n\n <div class=\"cal-day-panel clearfix\" ng-style=\"{height: vm.showTimes ? (vm.dayViewHeight + 'px') : 'auto'}\">\n\n <mwl-calendar-hour-list\n day-view-start=\"vm.dayViewStart\"\n day-view-end=\"vm.dayViewEnd\"\n day-view-split=\"vm.dayViewSplit\"\n view-date=\"vm.viewDate\"\n on-timespan-click=\"vm.onTimespanClick\"\n ng-if=\"vm.showTimes\">\n </mwl-calendar-hour-list>\n\n <div class=\"row\">\n <div class=\"col-xs-12\">\n <div\n class=\"cal-row-fluid \"\n ng-repeat=\"event in vm.view.events track by event.$id\">\n <div\n ng-class=\"'cal-cell' + (vm.showTimes ? 1 : event.daySpan) + (vm.showTimes ? '' : ' cal-offset' + event.dayOffset) + ' day-highlight dh-event-' + event.type + ' ' + event.cssClass\"\n ng-style=\"{\n top: vm.showTimes ? ((event.top + 2) + 'px') : 'auto',\n position: vm.showTimes ? 'absolute' : 'inherit',\n width: vm.showTimes ? (vm.dayColumnDimensions.width + 'px') : '',\n left: vm.showTimes ? (vm.dayColumnDimensions.width * event.dayOffset) + 15 + 'px' : ''\n }\"\n data-event-class\n mwl-draggable=\"event.draggable === true\"\n axis=\"vm.showTimes ? 'xy' : 'x'\"\n snap-grid=\"vm.showTimes ? {x: vm.dayColumnDimensions.width, y: 30} : {x: vm.dayColumnDimensions.width}\"\n on-drag=\"vm.tempTimeChanged(event, y)\"\n on-drag-end=\"vm.weekDragged(event, x, y)\"\n mwl-resizable=\"event.resizable === true && event.endsAt && !vm.showTimes\"\n resize-edges=\"{left: true, right: true}\"\n on-resize-end=\"vm.weekResized(event, edge, x)\">\n <strong ng-bind=\"(event.tempStartsAt || event.startsAt) | calendarDate:'time':true\" ng-show=\"vm.showTimes\"></strong>\n <a\n href=\"javascript:;\"\n ng-click=\"vm.onEventClick({calendarEvent: event})\"\n class=\"event-item\"\n ng-bind-html=\"vm.$sce.trustAsHtml(event.title)\"\n uib-tooltip-html=\"event.title | calendarTrustAsHtml\"\n tooltip-placement=\"left\"\n tooltip-append-to-body=\"true\">\n </a>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>\n";
- /***/ },
- /* 22 */
- /***/ function(module, exports) {
- module.exports = "<div class=\"cal-year-box\">\n <div ng-repeat=\"rowOffset in [0, 4, 8] track by rowOffset\">\n <div class=\"row cal-before-eventlist\">\n <div\n class=\"span3 col-md-3 col-xs-6 cal-cell {{ day.cssClass }}\"\n ng-repeat=\"month in vm.view | calendarLimitTo:4:rowOffset track by $index\"\n ng-init=\"monthIndex = vm.view.indexOf(month)\"\n ng-click=\"vm.monthClicked(month, false, $event)\"\n ng-class=\"{pointer: month.events.length > 0, 'cal-day-today': month.isToday}\"\n mwl-droppable\n on-drop=\"vm.handleEventDrop(dropData.event, month.date)\">\n\n <span\n class=\"pull-right\"\n data-cal-date\n ng-click=\"vm.calendarCtrl.dateClicked(month.date)\"\n ng-bind=\"month.label\">\n </span>\n\n <small\n class=\"cal-events-num badge badge-important pull-left\"\n ng-show=\"month.badgeTotal > 0\"\n ng-bind=\"month.badgeTotal\">\n </small>\n\n <div\n class=\"cal-day-tick\"\n ng-show=\"monthIndex === vm.openMonthIndex && vm.view[vm.openMonthIndex].events.length > 0\">\n <i class=\"glyphicon glyphicon-chevron-up\"></i>\n <i class=\"fa fa-chevron-up\"></i>\n </div>\n\n </div>\n </div>\n\n <mwl-calendar-slide-box\n is-open=\"vm.openRowIndex === $index && vm.view[vm.openMonthIndex].events.length > 0\"\n events=\"vm.view[vm.openMonthIndex].events\"\n on-event-click=\"vm.onEventClick\"\n edit-event-html=\"vm.editEventHtml\"\n on-edit-event-click=\"vm.onEditEventClick\"\n delete-event-html=\"vm.deleteEventHtml\"\n on-delete-event-click=\"vm.onDeleteEventClick\">\n </mwl-calendar-slide-box>\n\n </div>\n\n</div>\n";
- /***/ },
- /* 23 */
- /***/ function(module, exports, __webpack_require__) {
- var map = {
- "./mwlCalendar.js": 24,
- "./mwlCalendarDay.js": 25,
- "./mwlCalendarHourList.js": 26,
- "./mwlCalendarMonth.js": 27,
- "./mwlCalendarSlideBox.js": 28,
- "./mwlCalendarWeek.js": 29,
- "./mwlCalendarYear.js": 30,
- "./mwlCollapseFallback.js": 31,
- "./mwlDateModifier.js": 32,
- "./mwlDraggable.js": 33,
- "./mwlDroppable.js": 34,
- "./mwlElementDimensions.js": 35,
- "./mwlResizable.js": 36
- };
- function webpackContext(req) {
- return __webpack_require__(webpackContextResolve(req));
- };
- function webpackContextResolve(req) {
- return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
- };
- webpackContext.keys = function webpackContextKeys() {
- return Object.keys(map);
- };
- webpackContext.resolve = webpackContextResolve;
- module.exports = webpackContext;
- webpackContext.id = 23;
- /***/ },
- /* 24 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarCtrl', ["$scope", "$log", "$timeout", "$attrs", "$locale", "moment", "calendarTitle", function($scope, $log, $timeout, $attrs, $locale, moment, calendarTitle) {
- var vm = this;
- vm.events = vm.events || [];
- vm.changeView = function(view, newDay) {
- vm.view = view;
- vm.viewDate = newDay;
- };
- vm.dateClicked = function(date) {
- var rawDate = moment(date).toDate();
- var nextView = {
- year: 'month',
- month: 'day',
- week: 'day'
- };
- if (vm.onViewChangeClick({calendarDate: rawDate, calendarNextView: nextView[vm.view]}) !== false) {
- vm.changeView(nextView[vm.view], rawDate);
- }
- };
- var previousDate = moment(vm.viewDate);
- var previousView = vm.view;
- function eventIsValid(event) {
- if (!event.startsAt) {
- $log.warn('Bootstrap calendar: ', 'Event is missing the startsAt field', event);
- }
- if (!angular.isDate(event.startsAt)) {
- $log.warn('Bootstrap calendar: ', 'Event startsAt should be a javascript date object', event);
- }
- if (angular.isDefined(event.endsAt)) {
- if (!angular.isDate(event.endsAt)) {
- $log.warn('Bootstrap calendar: ', 'Event endsAt should be a javascript date object', event);
- }
- if (moment(event.startsAt).isAfter(moment(event.endsAt))) {
- $log.warn('Bootstrap calendar: ', 'Event cannot start after it finishes', event);
- }
- }
- return true;
- }
- function refreshCalendar() {
- if (calendarTitle[vm.view] && angular.isDefined($attrs.viewTitle)) {
- vm.viewTitle = calendarTitle[vm.view](vm.viewDate);
- }
- vm.events = vm.events.filter(eventIsValid).map(function(event, index) {
- Object.defineProperty(event, '$id', {enumerable: false, configurable: true, value: index});
- return event;
- });
- //if on-timespan-click="calendarDay = calendarDate" is set then don't update the view as nothing needs to change
- var currentDate = moment(vm.viewDate);
- var shouldUpdate = true;
- if (
- previousDate.clone().startOf(vm.view).isSame(currentDate.clone().startOf(vm.view)) &&
- !previousDate.isSame(currentDate) &&
- vm.view === previousView
- ) {
- shouldUpdate = false;
- }
- previousDate = currentDate;
- previousView = vm.view;
- if (shouldUpdate) {
- // a $timeout is required as $broadcast is synchronous so if a new events array is set the calendar won't update
- $timeout(function() {
- $scope.$broadcast('calendar.refreshView');
- });
- }
- }
- var eventsWatched = false;
- //Refresh the calendar when any of these variables change.
- $scope.$watchGroup([
- 'vm.viewDate',
- 'vm.view',
- 'vm.cellIsOpen',
- function() {
- return moment.locale() + $locale.id; //Auto update the calendar when the locale changes
- }
- ], function() {
- if (!eventsWatched) {
- eventsWatched = true;
- //need to deep watch events hence why it isn't included in the watch group
- $scope.$watch('vm.events', refreshCalendar, true); //this will call refreshCalendar when the watcher starts (i.e. now)
- } else {
- refreshCalendar();
- }
- });
- }])
- .directive('mwlCalendar', ["calendarConfig", function(calendarConfig) {
- return {
- templateUrl: calendarConfig.templates.calendar,
- restrict: 'E',
- scope: {
- events: '=',
- view: '=',
- viewTitle: '=?',
- viewDate: '=',
- editEventHtml: '=',
- deleteEventHtml: '=',
- cellIsOpen: '=',
- onEventClick: '&',
- onEventTimesChanged: '&',
- onEditEventClick: '&',
- onDeleteEventClick: '&',
- onTimespanClick: '&',
- onViewChangeClick: '&',
- cellModifier: '&',
- dayViewStart: '@',
- dayViewEnd: '@',
- dayViewSplit: '@'
- },
- controller: 'MwlCalendarCtrl as vm',
- bindToController: true
- };
- }]);
- /***/ },
- /* 25 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarDayCtrl', ["$scope", "$sce", "moment", "calendarHelper", "calendarConfig", function($scope, $sce, moment, calendarHelper, calendarConfig) {
- var vm = this;
- vm.calendarConfig = calendarConfig;
- vm.$sce = $sce;
- $scope.$on('calendar.refreshView', function() {
- vm.dayViewSplit = vm.dayViewSplit || 30;
- vm.dayViewHeight = calendarHelper.getDayViewHeight(
- vm.dayViewStart,
- vm.dayViewEnd,
- vm.dayViewSplit
- );
- vm.view = calendarHelper.getDayView(
- vm.events,
- vm.viewDate,
- vm.dayViewStart,
- vm.dayViewEnd,
- vm.dayViewSplit
- );
- });
- vm.eventDragComplete = function(event, minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- var newStart = moment(event.startsAt).add(minutesDiff, 'minutes');
- var newEnd = moment(event.endsAt).add(minutesDiff, 'minutes');
- delete event.tempStartsAt;
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarNewEventStart: newStart.toDate(),
- calendarNewEventEnd: event.endsAt ? newEnd.toDate() : null
- });
- };
- vm.eventDragged = function(event, minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- event.tempStartsAt = moment(event.startsAt).add(minutesDiff, 'minutes').toDate();
- };
- vm.eventResizeComplete = function(event, edge, minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- var start = moment(event.startsAt);
- var end = moment(event.endsAt);
- if (edge === 'start') {
- start.add(minutesDiff, 'minutes');
- } else {
- end.add(minutesDiff, 'minutes');
- }
- delete event.tempStartsAt;
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarNewEventStart: start.toDate(),
- calendarNewEventEnd: end.toDate()
- });
- };
- vm.eventResized = function(event, edge, minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- if (edge === 'start') {
- event.tempStartsAt = moment(event.startsAt).add(minutesDiff, 'minutes').toDate();
- }
- };
- }])
- .directive('mwlCalendarDay', ["calendarConfig", function(calendarConfig) {
- return {
- templateUrl: calendarConfig.templates.calendarDayView,
- restrict: 'E',
- require: '^mwlCalendar',
- scope: {
- events: '=',
- viewDate: '=',
- onEventClick: '=',
- onEventTimesChanged: '=',
- onTimespanClick: '=',
- dayViewStart: '=',
- dayViewEnd: '=',
- dayViewSplit: '='
- },
- controller: 'MwlCalendarDayCtrl as vm',
- bindToController: true
- };
- }]);
- /***/ },
- /* 26 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarHourListCtrl', ["$scope", "moment", "calendarConfig", "calendarHelper", function($scope, moment, calendarConfig, calendarHelper) {
- var vm = this;
- var dayViewStart, dayViewEnd;
- function updateDays() {
- dayViewStart = moment(vm.dayViewStart || '00:00', 'HH:mm');
- dayViewEnd = moment(vm.dayViewEnd || '23:00', 'HH:mm');
- vm.dayViewSplit = parseInt(vm.dayViewSplit);
- vm.hours = [];
- var dayCounter = moment(vm.viewDate)
- .clone()
- .hours(dayViewStart.hours())
- .minutes(dayViewStart.minutes())
- .seconds(dayViewStart.seconds());
- for (var i = 0; i <= dayViewEnd.diff(dayViewStart, 'hours'); i++) {
- vm.hours.push({
- label: calendarHelper.formatDate(dayCounter, calendarConfig.dateFormats.hour),
- date: dayCounter.clone()
- });
- dayCounter.add(1, 'hour');
- }
- }
- var originalLocale = moment.locale();
- $scope.$on('calendar.refreshView', function() {
- if (originalLocale !== moment.locale()) {
- originalLocale = moment.locale();
- updateDays();
- }
- });
- $scope.$watchGroup([
- 'vm.dayViewStart',
- 'vm.dayViewEnd',
- 'vm.dayViewSplit',
- 'vm.viewDate'
- ], function() {
- updateDays();
- });
- }])
- .directive('mwlCalendarHourList', ["calendarConfig", function(calendarConfig) {
- return {
- restrict: 'E',
- templateUrl: calendarConfig.templates.calendarHourList,
- controller: 'MwlCalendarHourListCtrl as vm',
- scope: {
- viewDate: '=',
- dayViewStart: '=',
- dayViewEnd: '=',
- dayViewSplit: '=',
- onTimespanClick: '='
- },
- bindToController: true
- };
- }]);
- /***/ },
- /* 27 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarMonthCtrl', ["$scope", "moment", "calendarHelper", "calendarConfig", function($scope, moment, calendarHelper, calendarConfig) {
- var vm = this;
- vm.calendarConfig = calendarConfig;
- vm.openRowIndex = null;
- $scope.$on('calendar.refreshView', function() {
- vm.weekDays = calendarHelper.getWeekDayNames();
- vm.view = calendarHelper.getMonthView(vm.events, vm.viewDate, vm.cellModifier);
- var rows = Math.floor(vm.view.length / 7);
- vm.monthOffsets = [];
- for (var i = 0; i < rows; i++) {
- vm.monthOffsets.push(i * 7);
- }
- //Auto open the calendar to the current day if set
- if (vm.cellIsOpen && vm.openRowIndex === null) {
- vm.openDayIndex = null;
- vm.view.forEach(function(day) {
- if (day.inMonth && moment(vm.viewDate).startOf('day').isSame(day.date)) {
- vm.dayClicked(day, true);
- }
- });
- }
- });
- vm.dayClicked = function(day, dayClickedFirstRun, $event) {
- if (!dayClickedFirstRun) {
- vm.onTimespanClick({
- calendarDate: day.date.toDate(),
- $event: $event
- });
- if ($event && $event.defaultPrevented) {
- return;
- }
- }
- vm.openRowIndex = null;
- var dayIndex = vm.view.indexOf(day);
- if (dayIndex === vm.openDayIndex) { //the day has been clicked and is already open
- vm.openDayIndex = null; //close the open day
- vm.cellIsOpen = false;
- } else {
- vm.openDayIndex = dayIndex;
- vm.openRowIndex = Math.floor(dayIndex / 7);
- vm.cellIsOpen = true;
- }
- };
- vm.highlightEvent = function(event, shouldAddClass) {
- vm.view.forEach(function(day) {
- delete day.highlightClass;
- if (shouldAddClass) {
- var dayContainsEvent = day.events.indexOf(event) > -1;
- if (dayContainsEvent) {
- day.highlightClass = 'day-highlight dh-event-' + event.type;
- }
- }
- });
- };
- vm.handleEventDrop = function(event, newDayDate, draggedFromDate) {
- var newStart = moment(event.startsAt)
- .date(moment(newDayDate).date())
- .month(moment(newDayDate).month());
- var newEnd = calendarHelper.adjustEndDateFromStartDiff(event.startsAt, newStart, event.endsAt);
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarDate: newDayDate,
- calendarNewEventStart: newStart.toDate(),
- calendarNewEventEnd: newEnd ? newEnd.toDate() : null,
- calendarDraggedFromDate: draggedFromDate
- });
- };
- }])
- .directive('mwlCalendarMonth', ["calendarConfig", function(calendarConfig) {
- return {
- templateUrl: calendarConfig.templates.calendarMonthView,
- restrict: 'E',
- require: '^mwlCalendar',
- scope: {
- events: '=',
- viewDate: '=',
- onEventClick: '=',
- onEditEventClick: '=',
- onDeleteEventClick: '=',
- onEventTimesChanged: '=',
- editEventHtml: '=',
- deleteEventHtml: '=',
- cellIsOpen: '=',
- onTimespanClick: '=',
- cellModifier: '='
- },
- controller: 'MwlCalendarMonthCtrl as vm',
- link: function(scope, element, attrs, calendarCtrl) {
- scope.vm.calendarCtrl = calendarCtrl;
- },
- bindToController: true
- };
- }]);
- /***/ },
- /* 28 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarSlideBoxCtrl', ["$sce", "$scope", "$timeout", "calendarConfig", function($sce, $scope, $timeout, calendarConfig) {
- var vm = this;
- vm.$sce = $sce;
- vm.calendarConfig = calendarConfig;
- vm.isCollapsed = true;
- $scope.$watch('vm.isOpen', function(isOpen) {
- //events must be populated first to set the element height before animation will work
- $timeout(function() {
- vm.isCollapsed = !isOpen;
- });
- });
- }])
- .directive('mwlCalendarSlideBox', ["calendarConfig", function(calendarConfig) {
- return {
- restrict: 'E',
- templateUrl: calendarConfig.templates.calendarSlideBox,
- replace: true,
- controller: 'MwlCalendarSlideBoxCtrl as vm',
- require: ['^?mwlCalendarMonth', '^?mwlCalendarYear'],
- link: function(scope, elm, attrs, ctrls) {
- scope.isMonthView = !!ctrls[0];
- scope.isYearView = !!ctrls[1];
- },
- scope: {
- isOpen: '=',
- events: '=',
- onEventClick: '=',
- editEventHtml: '=',
- onEditEventClick: '=',
- deleteEventHtml: '=',
- onDeleteEventClick: '='
- },
- bindToController: true
- };
- }]);
- /***/ },
- /* 29 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarWeekCtrl', ["$scope", "$sce", "moment", "calendarHelper", "calendarConfig", function($scope, $sce, moment, calendarHelper, calendarConfig) {
- var vm = this;
- vm.showTimes = calendarConfig.showTimesOnWeekView;
- vm.$sce = $sce;
- $scope.$on('calendar.refreshView', function() {
- vm.dayViewSplit = vm.dayViewSplit || 30;
- vm.dayViewHeight = calendarHelper.getDayViewHeight(
- vm.dayViewStart,
- vm.dayViewEnd,
- vm.dayViewSplit
- );
- if (vm.showTimes) {
- vm.view = calendarHelper.getWeekViewWithTimes(
- vm.events,
- vm.viewDate,
- vm.dayViewStart,
- vm.dayViewEnd,
- vm.dayViewSplit
- );
- } else {
- vm.view = calendarHelper.getWeekView(vm.events, vm.viewDate);
- }
- });
- vm.weekDragged = function(event, daysDiff, minuteChunksMoved) {
- var newStart = moment(event.startsAt).add(daysDiff, 'days');
- var newEnd = moment(event.endsAt).add(daysDiff, 'days');
- if (minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- newStart = newStart.add(minutesDiff, 'minutes');
- newEnd = newEnd.add(minutesDiff, 'minutes');
- }
- delete event.tempStartsAt;
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarNewEventStart: newStart.toDate(),
- calendarNewEventEnd: event.endsAt ? newEnd.toDate() : null
- });
- };
- vm.weekResized = function(event, edge, daysDiff) {
- var start = moment(event.startsAt);
- var end = moment(event.endsAt);
- if (edge === 'start') {
- start.add(daysDiff, 'days');
- } else {
- end.add(daysDiff, 'days');
- }
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarNewEventStart: start.toDate(),
- calendarNewEventEnd: end.toDate()
- });
- };
- vm.tempTimeChanged = function(event, minuteChunksMoved) {
- var minutesDiff = minuteChunksMoved * vm.dayViewSplit;
- event.tempStartsAt = moment(event.startsAt).add(minutesDiff, 'minutes').toDate();
- };
- }])
- .directive('mwlCalendarWeek', ["calendarConfig", function(calendarConfig) {
- return {
- templateUrl: calendarConfig.templates.calendarWeekView,
- restrict: 'E',
- require: '^mwlCalendar',
- scope: {
- events: '=',
- viewDate: '=',
- onEventClick: '=',
- onEventTimesChanged: '=',
- dayViewStart: '=',
- dayViewEnd: '=',
- dayViewSplit: '=',
- onTimespanClick: '='
- },
- controller: 'MwlCalendarWeekCtrl as vm',
- link: function(scope, element, attrs, calendarCtrl) {
- scope.vm.calendarCtrl = calendarCtrl;
- },
- bindToController: true
- };
- }]);
- /***/ },
- /* 30 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCalendarYearCtrl', ["$scope", "moment", "calendarHelper", function($scope, moment, calendarHelper) {
- var vm = this;
- vm.openMonthIndex = null;
- $scope.$on('calendar.refreshView', function() {
- vm.view = calendarHelper.getYearView(vm.events, vm.viewDate, vm.cellModifier);
- //Auto open the calendar to the current day if set
- if (vm.cellIsOpen && vm.openMonthIndex === null) {
- vm.openMonthIndex = null;
- vm.view.forEach(function(month) {
- if (moment(vm.viewDate).startOf('month').isSame(month.date)) {
- vm.monthClicked(month, true);
- }
- });
- }
- });
- vm.monthClicked = function(month, monthClickedFirstRun, $event) {
- if (!monthClickedFirstRun) {
- vm.onTimespanClick({
- calendarDate: month.date.toDate(),
- $event: $event
- });
- if ($event && $event.defaultPrevented) {
- return;
- }
- }
- vm.openRowIndex = null;
- var monthIndex = vm.view.indexOf(month);
- if (monthIndex === vm.openMonthIndex) { //the month has been clicked and is already open
- vm.openMonthIndex = null; //close the open month
- vm.cellIsOpen = false;
- } else {
- vm.openMonthIndex = monthIndex;
- vm.openRowIndex = Math.floor(monthIndex / 4);
- vm.cellIsOpen = true;
- }
- };
- vm.handleEventDrop = function(event, newMonthDate) {
- var newStart = moment(event.startsAt).month(moment(newMonthDate).month());
- var newEnd = calendarHelper.adjustEndDateFromStartDiff(event.startsAt, newStart, event.endsAt);
- vm.onEventTimesChanged({
- calendarEvent: event,
- calendarDate: newMonthDate,
- calendarNewEventStart: newStart.toDate(),
- calendarNewEventEnd: newEnd ? newEnd.toDate() : null
- });
- };
- }])
- .directive('mwlCalendarYear', ["calendarConfig", function(calendarConfig) {
- return {
- templateUrl: calendarConfig.templates.calendarYearView,
- restrict: 'E',
- require: '^mwlCalendar',
- scope: {
- events: '=',
- viewDate: '=',
- onEventClick: '=',
- onEventTimesChanged: '=',
- onEditEventClick: '=',
- onDeleteEventClick: '=',
- editEventHtml: '=',
- deleteEventHtml: '=',
- cellIsOpen: '=',
- onTimespanClick: '=',
- cellModifier: '='
- },
- controller: 'MwlCalendarYearCtrl as vm',
- link: function(scope, element, attrs, calendarCtrl) {
- scope.vm.calendarCtrl = calendarCtrl;
- },
- bindToController: true
- };
- }]);
- /***/ },
- /* 31 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlCollapseFallbackCtrl', ["$scope", "$attrs", "$element", function($scope, $attrs, $element) {
- $scope.$watch($attrs.mwlCollapseFallback, function(shouldCollapse) {
- if (shouldCollapse) {
- $element.addClass('ng-hide');
- } else {
- $element.removeClass('ng-hide');
- }
- });
- }])
- .directive('mwlCollapseFallback', ["$injector", function($injector) {
- if ($injector.has('uibCollapseDirective')) {
- return {};
- }
- return {
- restrict: 'A',
- controller: 'MwlCollapseFallbackCtrl'
- };
- }]);
- /***/ },
- /* 32 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlDateModifierCtrl', ["$element", "$attrs", "$scope", "moment", function($element, $attrs, $scope, moment) {
- var vm = this;
- function onClick() {
- if (angular.isDefined($attrs.setToToday)) {
- vm.date = new Date();
- } else if (angular.isDefined($attrs.increment)) {
- vm.date = moment(vm.date).add(1, vm.increment).toDate();
- } else if (angular.isDefined($attrs.decrement)) {
- vm.date = moment(vm.date).subtract(1, vm.decrement).toDate();
- }
- $scope.$apply();
- }
- $element.bind('click', onClick);
- $scope.$on('$destroy', function() {
- $element.unbind('click', onClick);
- });
- }])
- .directive('mwlDateModifier', function() {
- return {
- restrict: 'A',
- controller: 'MwlDateModifierCtrl as vm',
- scope: {
- date: '=',
- increment: '=',
- decrement: '='
- },
- bindToController: true
- };
- });
- /***/ },
- /* 33 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlDraggableCtrl', ["$element", "$scope", "$window", "$parse", "$attrs", "$timeout", "interact", function($element, $scope, $window, $parse, $attrs, $timeout, interact) {
- if (!interact) {
- return;
- }
- var snap, snapGridDimensions;
- if ($attrs.snapGrid) {
- snapGridDimensions = $parse($attrs.snapGrid)($scope);
- snap = {
- targets: [
- interact.createSnapGrid(snapGridDimensions)
- ]
- };
- }
- function translateElement(elm, transformValue) {
- return elm
- .css('-ms-transform', transformValue)
- .css('-webkit-transform', transformValue)
- .css('transform', transformValue);
- }
- function canDrag() {
- return $parse($attrs.mwlDraggable)($scope);
- }
- function getUnitsMoved(x, y, gridDimensions) {
- var result = {x: x, y: y};
- if (gridDimensions && gridDimensions.x) {
- result.x /= gridDimensions.x;
- }
- if (gridDimensions && gridDimensions.y) {
- result.y /= gridDimensions.y;
- }
- return result;
- }
- interact($element[0]).draggable({
- snap: snap,
- onstart: function(event) {
- if (canDrag()) {
- angular.element(event.target).addClass('dragging-active');
- event.target.dropData = $parse($attrs.dropData)($scope);
- event.target.style.pointerEvents = 'none';
- if ($attrs.onDragStart) {
- $parse($attrs.onDragStart)($scope);
- $scope.$apply();
- }
- }
- },
- onmove: function(event) {
- if (canDrag()) {
- var elm = angular.element(event.target);
- var x = (parseFloat(elm.attr('data-x')) || 0) + (event.dx || 0);
- var y = (parseFloat(elm.attr('data-y')) || 0) + (event.dy || 0);
- switch ($parse($attrs.axis)($scope)) {
- case 'x':
- y = 0;
- break;
- case 'y':
- x = 0;
- break;
- default:
- }
- if ($window.getComputedStyle(elm[0]).position === 'static') {
- elm.css('position', 'relative');
- }
- translateElement(elm, 'translate(' + x + 'px, ' + y + 'px)')
- .css('z-index', 1000)
- .attr('data-x', x)
- .attr('data-y', y);
- if ($attrs.onDrag) {
- $parse($attrs.onDrag)($scope, getUnitsMoved(x, y, snapGridDimensions));
- $scope.$apply();
- }
- }
- },
- onend: function(event) {
- if (canDrag()) {
- var elm = angular.element(event.target);
- var x = elm.attr('data-x');
- var y = elm.attr('data-y');
- event.target.style.pointerEvents = 'auto';
- if ($attrs.onDragEnd) {
- $parse($attrs.onDragEnd)($scope, getUnitsMoved(x, y, snapGridDimensions));
- $scope.$apply();
- }
- $timeout(function() {
- translateElement(elm, '')
- .css('z-index', 'auto')
- .removeAttr('data-x')
- .removeAttr('data-y')
- .removeClass('dragging-active');
- });
- }
- }
- });
- $scope.$on('$destroy', function() {
- interact($element[0]).unset();
- });
- }])
- .directive('mwlDraggable', function() {
- return {
- restrict: 'A',
- controller: 'MwlDraggableCtrl'
- };
- });
- /***/ },
- /* 34 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlDroppableCtrl', ["$element", "$scope", "$parse", "$attrs", "interact", function($element, $scope, $parse, $attrs, interact) {
- if (!interact) {
- return;
- }
- interact($element[0]).dropzone({
- ondragenter: function(event) {
- angular.element(event.target).addClass('drop-active');
- },
- ondragleave: function(event) {
- angular.element(event.target).removeClass('drop-active');
- },
- ondropdeactivate: function(event) {
- angular.element(event.target).removeClass('drop-active');
- },
- ondrop: function(event) {
- if (event.relatedTarget.dropData) {
- $parse($attrs.onDrop)($scope, {dropData: event.relatedTarget.dropData});
- $scope.$apply();
- }
- }
- });
- $scope.$on('$destroy', function() {
- interact($element[0]).unset();
- });
- }])
- .directive('mwlDroppable', function() {
- return {
- restrict: 'A',
- controller: 'MwlDroppableCtrl'
- };
- });
- /***/ },
- /* 35 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlElementDimensionsCtrl', ["$element", "$scope", "$parse", "$attrs", function($element, $scope, $parse, $attrs) {
- $parse($attrs.mwlElementDimensions).assign($scope, {
- width: $element[0].offsetWidth,
- height: $element[0].offsetHeight
- });
- }])
- .directive('mwlElementDimensions', function() {
- return {
- restrict: 'A',
- controller: 'MwlElementDimensionsCtrl'
- };
- });
- /***/ },
- /* 36 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .controller('MwlResizableCtrl', ["$element", "$scope", "$parse", "$attrs", "$timeout", "interact", function($element, $scope, $parse, $attrs, $timeout, interact) {
- if (!interact) {
- return;
- }
- var snap, snapGridDimensions;
- if ($attrs.snapGrid) {
- snapGridDimensions = $parse($attrs.snapGrid)($scope);
- snap = {
- targets: [
- interact.createSnapGrid(snapGridDimensions)
- ]
- };
- }
- var originalDimensions = {};
- var originalDimensionsStyle = {};
- var resizeEdge;
- function canResize() {
- return $parse($attrs.mwlResizable)($scope);
- }
- function getUnitsResized(edge, elm, gridDimensions) {
- var unitsResized = {};
- unitsResized.edge = edge;
- if (edge === 'start') {
- unitsResized.x = elm.data('x');
- unitsResized.y = elm.data('y');
- } else if (edge === 'end') {
- unitsResized.x = parseFloat(elm.css('width').replace('px', '')) - originalDimensions.width;
- unitsResized.y = parseFloat(elm.css('height').replace('px', '')) - originalDimensions.height;
- }
- if (gridDimensions && gridDimensions.x) {
- unitsResized.x = Math.round(unitsResized.x / gridDimensions.x);
- }
- if (gridDimensions && gridDimensions.y) {
- unitsResized.y = Math.round(unitsResized.y / gridDimensions.y);
- }
- return unitsResized;
- }
- interact($element[0]).resizable({
- edges: $parse($attrs.resizeEdges)($scope),
- snap: snap,
- onstart: function(event) {
- if (canResize()) {
- resizeEdge = 'end';
- var elm = angular.element(event.target);
- originalDimensions.height = elm[0].offsetHeight;
- originalDimensions.width = elm[0].offsetWidth;
- originalDimensionsStyle.height = elm.css('height');
- originalDimensionsStyle.width = elm.css('width');
- }
- },
- onmove: function(event) {
- if (canResize()) {
- var elm = angular.element(event.target);
- var x = parseFloat(elm.data('x') || 0);
- var y = parseFloat(elm.data('y') || 0);
- elm.css({
- width: event.rect.width + 'px',
- height: event.rect.height + 'px'
- });
- // translate when resizing from top or left edges
- x += event.deltaRect.left;
- y += event.deltaRect.top;
- elm.css('transform', 'translate(' + x + 'px,' + y + 'px)');
- elm.data('x', x);
- elm.data('y', y);
- if (event.deltaRect.left !== 0 || event.deltaRect.top !== 0) {
- resizeEdge = 'start';
- }
- if ($attrs.onResize) {
- $parse($attrs.onResize)($scope, getUnitsResized(resizeEdge, elm, snapGridDimensions));
- $scope.$apply();
- }
- }
- },
- onend: function(event) {
- if (canResize()) {
- var elm = angular.element(event.target);
- var unitsResized = getUnitsResized(resizeEdge, elm, snapGridDimensions);
- $timeout(function() {
- elm
- .data('x', null)
- .data('y', null)
- .css({
- transform: '',
- width: originalDimensionsStyle.width,
- height: originalDimensionsStyle.height
- });
- });
- if ($attrs.onResizeEnd) {
- $parse($attrs.onResizeEnd)($scope, unitsResized);
- $scope.$apply();
- }
- }
- }
- });
- $scope.$on('$destroy', function() {
- interact($element[0]).unset();
- });
- }])
- .directive('mwlResizable', function() {
- return {
- restrict: 'A',
- controller: 'MwlResizableCtrl'
- };
- });
- /***/ },
- /* 37 */
- /***/ function(module, exports, __webpack_require__) {
- var map = {
- "./calendarDate.js": 38,
- "./calendarLimitTo.js": 39,
- "./calendarTruncateEventTitle.js": 40,
- "./calendarTrustAsHtml.js": 41
- };
- function webpackContext(req) {
- return __webpack_require__(webpackContextResolve(req));
- };
- function webpackContextResolve(req) {
- return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
- };
- webpackContext.keys = function webpackContextKeys() {
- return Object.keys(map);
- };
- webpackContext.resolve = webpackContextResolve;
- module.exports = webpackContext;
- webpackContext.id = 37;
- /***/ },
- /* 38 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .filter('calendarDate', ["calendarHelper", "calendarConfig", function(calendarHelper, calendarConfig) {
- function calendarDate(date, format, getFromConfig) {
- if (getFromConfig === true) {
- format = calendarConfig.dateFormats[format];
- }
- return calendarHelper.formatDate(date, format);
- }
- // This is stateful because the locale can change as well
- // as calendarConfig.dateFormats which would change the value outside of this filter
- calendarDate.$stateful = true;
- return calendarDate;
- }]);
- /***/ },
- /* 39 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .filter('calendarLimitTo', ["limitToFilter", function(limitToFilter) {
- if (angular.version.minor >= 4) { //1.4+ supports the begin attribute
- return limitToFilter;
- }
- //Copied from the angular source. Only 1.4 has the begin functionality.
- return function(input, limit, begin) {
- if (Math.abs(Number(limit)) === Infinity) {
- limit = Number(limit);
- } else {
- limit = parseInt(limit);
- }
- if (isNaN(limit)) {
- return input;
- }
- if (angular.isNumber(input)) {
- input = input.toString();
- }
- if (!angular.isArray(input) && !angular.isString(input)) {
- return input;
- }
- begin = (!begin || isNaN(begin)) ? 0 : parseInt(begin);
- begin = (begin < 0 && begin >= -input.length) ? input.length + begin : begin;
- if (limit >= 0) {
- return input.slice(begin, begin + limit);
- } else if (begin === 0) {
- return input.slice(limit, input.length);
- } else {
- return input.slice(Math.max(0, begin + limit), begin);
- }
- };
- }]);
- /***/ },
- /* 40 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .filter('calendarTruncateEventTitle', function() {
- return function(string, length, boxHeight) {
- if (!string) {
- return '';
- }
- //Only truncate if if actually needs truncating
- if (string.length >= length && string.length / 20 > boxHeight / 30) {
- return string.substr(0, length) + '...';
- } else {
- return string;
- }
- };
- });
- /***/ },
- /* 41 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .filter('calendarTrustAsHtml', ["$sce", function($sce) {
- return function(text) {
- return $sce.trustAsHtml(text);
- };
- }]);
- /***/ },
- /* 42 */
- /***/ function(module, exports, __webpack_require__) {
- var map = {
- "./calendarConfig.js": 43,
- "./calendarHelper.js": 44,
- "./calendarTitle.js": 45,
- "./interact.js": 46,
- "./moment.js": 48
- };
- function webpackContext(req) {
- return __webpack_require__(webpackContextResolve(req));
- };
- function webpackContextResolve(req) {
- return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
- };
- webpackContext.keys = function webpackContextKeys() {
- return Object.keys(map);
- };
- webpackContext.resolve = webpackContextResolve;
- module.exports = webpackContext;
- webpackContext.id = 42;
- /***/ },
- /* 43 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .constant('calendarConfig', {
- allDateFormats: {
- angular: {
- date: {
- hour: 'ha',
- day: 'd MMM',
- month: 'MMMM',
- weekDay: 'EEEE',
- time: 'HH:mm',
- datetime: 'MMM d, h:mm a'
- },
- title: {
- day: 'EEEE d MMMM, yyyy',
- week: 'Week {week} of {year}',
- month: 'MMMM yyyy',
- year: 'yyyy'
- }
- },
- moment: {
- date: {
- hour: 'ha',
- day: 'D MMM',
- month: 'MMMM',
- weekDay: 'dddd',
- time: 'HH:mm',
- datetime: 'MMM D, h:mm a'
- },
- title: {
- day: 'dddd D MMMM, YYYY',
- week: 'Week {week} of {year}',
- month: 'MMMM YYYY',
- year: 'YYYY'
- }
- }
- },
- get dateFormats() {
- return this.allDateFormats[this.dateFormatter].date;
- },
- get titleFormats() {
- return this.allDateFormats[this.dateFormatter].title;
- },
- dateFormatter: 'angular',
- displayEventEndTimes: false,
- showTimesOnWeekView: false,
- displayAllMonthEvents: false,
- i18nStrings: {
- eventsLabel: 'Events',
- timeLabel: 'Time',
- weekNumber: 'Week {week}'
- },
- templates: {}
- });
- /***/ },
- /* 44 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .factory('calendarHelper', ["dateFilter", "moment", "calendarConfig", function(dateFilter, moment, calendarConfig) {
- function formatDate(date, format) {
- if (calendarConfig.dateFormatter === 'angular') {
- return dateFilter(moment(date).toDate(), format);
- } else if (calendarConfig.dateFormatter === 'moment') {
- return moment(date).format(format);
- }
- }
- function adjustEndDateFromStartDiff(oldStart, newStart, oldEnd) {
- if (!oldEnd) {
- return oldEnd;
- }
- var diffInSeconds = moment(newStart).diff(moment(oldStart));
- return moment(oldEnd).add(diffInSeconds);
- }
- function eventIsInPeriod(event, periodStart, periodEnd) {
- var eventStart = moment(event.startsAt);
- var eventEnd = moment(event.endsAt || event.startsAt);
- periodStart = moment(periodStart);
- periodEnd = moment(periodEnd);
- if (angular.isDefined(event.recursOn)) {
- switch (event.recursOn) {
- case 'year':
- eventStart.set({
- year: periodStart.year()
- });
- break;
- case 'month':
- eventStart.set({
- year: periodStart.year(),
- month: periodStart.month()
- });
- break;
- default:
- throw new Error('Invalid value (' + event.recursOn + ') given for recurs on. Can only be year or month.');
- }
- eventEnd = adjustEndDateFromStartDiff(event.startsAt, eventStart, eventEnd);
- }
- return (eventStart.isAfter(periodStart) && eventStart.isBefore(periodEnd)) ||
- (eventEnd.isAfter(periodStart) && eventEnd.isBefore(periodEnd)) ||
- (eventStart.isBefore(periodStart) && eventEnd.isAfter(periodEnd)) ||
- eventStart.isSame(periodStart) ||
- eventEnd.isSame(periodEnd);
- }
- function filterEventsInPeriod(events, startPeriod, endPeriod) {
- return events.filter(function(event) {
- return eventIsInPeriod(event, startPeriod, endPeriod);
- });
- }
- function getEventsInPeriod(calendarDate, period, allEvents) {
- var startPeriod = moment(calendarDate).startOf(period);
- var endPeriod = moment(calendarDate).endOf(period);
- return filterEventsInPeriod(allEvents, startPeriod, endPeriod);
- }
- function getBadgeTotal(events) {
- return events.filter(function(event) {
- return event.incrementsBadgeTotal !== false;
- }).length;
- }
- function getWeekDayNames() {
- var weekdays = [];
- var count = 0;
- while (count < 7) {
- weekdays.push(formatDate(moment().weekday(count++), calendarConfig.dateFormats.weekDay));
- }
- return weekdays;
- }
- function getYearView(events, viewDate, cellModifier) {
- var view = [];
- var eventsInPeriod = getEventsInPeriod(viewDate, 'year', events);
- var month = moment(viewDate).startOf('year');
- var count = 0;
- while (count < 12) {
- var startPeriod = month.clone();
- var endPeriod = startPeriod.clone().endOf('month');
- var periodEvents = filterEventsInPeriod(eventsInPeriod, startPeriod, endPeriod);
- var cell = {
- label: formatDate(startPeriod, calendarConfig.dateFormats.month),
- isToday: startPeriod.isSame(moment().startOf('month')),
- events: periodEvents,
- date: startPeriod,
- badgeTotal: getBadgeTotal(periodEvents)
- };
- cellModifier({calendarCell: cell});
- view.push(cell);
- month.add(1, 'month');
- count++;
- }
- return view;
- }
- function getMonthView(events, viewDate, cellModifier) {
- var startOfMonth = moment(viewDate).startOf('month');
- var day = startOfMonth.clone().startOf('week');
- var endOfMonthView = moment(viewDate).endOf('month').endOf('week');
- var eventsInPeriod;
- if (calendarConfig.displayAllMonthEvents) {
- eventsInPeriod = filterEventsInPeriod(events, day, endOfMonthView);
- } else {
- eventsInPeriod = filterEventsInPeriod(events, startOfMonth, startOfMonth.clone().endOf('month'));
- }
- var view = [];
- var today = moment().startOf('day');
- while (day.isBefore(endOfMonthView)) {
- var inMonth = day.month() === moment(viewDate).month();
- var monthEvents = [];
- if (inMonth || calendarConfig.displayAllMonthEvents) {
- monthEvents = filterEventsInPeriod(eventsInPeriod, day, day.clone().endOf('day'));
- }
- var cell = {
- label: day.date(),
- date: day.clone(),
- inMonth: inMonth,
- isPast: today.isAfter(day),
- isToday: today.isSame(day),
- isFuture: today.isBefore(day),
- isWeekend: [0, 6].indexOf(day.day()) > -1,
- events: monthEvents,
- badgeTotal: getBadgeTotal(monthEvents)
- };
- cellModifier({calendarCell: cell});
- view.push(cell);
- day.add(1, 'day');
- }
- return view;
- }
- function getWeekView(events, viewDate) {
- var startOfWeek = moment(viewDate).startOf('week');
- var endOfWeek = moment(viewDate).endOf('week');
- var dayCounter = startOfWeek.clone();
- var days = [];
- var today = moment().startOf('day');
- while (days.length < 7) {
- days.push({
- weekDayLabel: formatDate(dayCounter, calendarConfig.dateFormats.weekDay),
- date: dayCounter.clone(),
- dayLabel: formatDate(dayCounter, calendarConfig.dateFormats.day),
- isPast: dayCounter.isBefore(today),
- isToday: dayCounter.isSame(today),
- isFuture: dayCounter.isAfter(today),
- isWeekend: [0, 6].indexOf(dayCounter.day()) > -1
- });
- dayCounter.add(1, 'day');
- }
- var eventsSorted = filterEventsInPeriod(events, startOfWeek, endOfWeek).map(function(event) {
- var eventStart = moment(event.startsAt).startOf('day');
- var eventEnd = moment(event.endsAt || event.startsAt).startOf('day');
- var weekViewStart = moment(startOfWeek).startOf('day');
- var weekViewEnd = moment(endOfWeek).startOf('day');
- var offset, span;
- if (eventStart.isBefore(weekViewStart) || eventStart.isSame(weekViewStart)) {
- offset = 0;
- } else {
- offset = eventStart.diff(weekViewStart, 'days');
- }
- if (eventEnd.isAfter(weekViewEnd)) {
- eventEnd = weekViewEnd;
- }
- if (eventStart.isBefore(weekViewStart)) {
- eventStart = weekViewStart;
- }
- span = moment(eventEnd).diff(eventStart, 'days') + 1;
- event.daySpan = span;
- event.dayOffset = offset;
- return event;
- });
- return {days: days, events: eventsSorted};
- }
- function getDayView(events, viewDate, dayViewStart, dayViewEnd, dayViewSplit) {
- var dayStartHour = moment(dayViewStart || '00:00', 'HH:mm').hours();
- var dayEndHour = moment(dayViewEnd || '23:00', 'HH:mm').hours();
- var hourHeight = (60 / dayViewSplit) * 30;
- var calendarStart = moment(viewDate).startOf('day').add(dayStartHour, 'hours');
- var calendarEnd = moment(viewDate).startOf('day').add(dayEndHour, 'hours');
- var calendarHeight = (dayEndHour - dayStartHour + 1) * hourHeight;
- var hourHeightMultiplier = hourHeight / 60;
- var buckets = [];
- var eventsInPeriod = filterEventsInPeriod(
- events,
- moment(viewDate).startOf('day').toDate(),
- moment(viewDate).endOf('day').toDate()
- );
- return eventsInPeriod.map(function(event) {
- if (moment(event.startsAt).isBefore(calendarStart)) {
- event.top = 0;
- } else {
- event.top = (moment(event.startsAt).startOf('minute').diff(calendarStart.startOf('minute'), 'minutes') * hourHeightMultiplier) - 2;
- }
- if (moment(event.endsAt || event.startsAt).isAfter(calendarEnd)) {
- event.height = calendarHeight - event.top;
- } else {
- var diffStart = event.startsAt;
- if (moment(event.startsAt).isBefore(calendarStart)) {
- diffStart = calendarStart.toDate();
- }
- if (!event.endsAt) {
- event.height = 30;
- } else {
- event.height = moment(event.endsAt || event.startsAt).diff(diffStart, 'minutes') * hourHeightMultiplier;
- }
- }
- if (event.top - event.height > calendarHeight) {
- event.height = 0;
- }
- event.left = 0;
- return event;
- }).filter(function(event) {
- return event.height > 0;
- }).map(function(event) {
- var cannotFitInABucket = true;
- buckets.forEach(function(bucket, bucketIndex) {
- var canFitInThisBucket = true;
- bucket.forEach(function(bucketItem) {
- if (eventIsInPeriod(event, bucketItem.startsAt, bucketItem.endsAt || bucketItem.startsAt) ||
- eventIsInPeriod(bucketItem, event.startsAt, event.endsAt || event.startsAt)) {
- canFitInThisBucket = false;
- }
- });
- if (canFitInThisBucket && cannotFitInABucket) {
- cannotFitInABucket = false;
- event.left = bucketIndex * 150;
- buckets[bucketIndex].push(event);
- }
- });
- if (cannotFitInABucket) {
- event.left = buckets.length * 150;
- buckets.push([event]);
- }
- return event;
- });
- }
- function getWeekViewWithTimes(events, viewDate, dayViewStart, dayViewEnd, dayViewSplit) {
- var weekView = getWeekView(events, viewDate);
- var newEvents = [];
- weekView.days.forEach(function(day) {
- var dayEvents = weekView.events.filter(function(event) {
- return moment(event.startsAt).startOf('day').isSame(moment(day.date).startOf('day'));
- });
- var newDayEvents = getDayView(
- dayEvents,
- day.date,
- dayViewStart,
- dayViewEnd,
- dayViewSplit
- );
- newEvents = newEvents.concat(newDayEvents);
- });
- weekView.events = newEvents;
- return weekView;
- }
- function getDayViewHeight(dayViewStart, dayViewEnd, dayViewSplit) {
- var dayViewStartM = moment(dayViewStart || '00:00', 'HH:mm');
- var dayViewEndM = moment(dayViewEnd || '23:00', 'HH:mm');
- var hourHeight = (60 / dayViewSplit) * 30;
- return ((dayViewEndM.diff(dayViewStartM, 'hours') + 1) * hourHeight) + 2;
- }
- return {
- getWeekDayNames: getWeekDayNames,
- getYearView: getYearView,
- getMonthView: getMonthView,
- getWeekView: getWeekView,
- getDayView: getDayView,
- getWeekViewWithTimes: getWeekViewWithTimes,
- getDayViewHeight: getDayViewHeight,
- adjustEndDateFromStartDiff: adjustEndDateFromStartDiff,
- formatDate: formatDate,
- eventIsInPeriod: eventIsInPeriod //expose for testing only
- };
- }]);
- /***/ },
- /* 45 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- angular
- .module('mwl.calendar')
- .factory('calendarTitle', ["moment", "calendarConfig", "calendarHelper", function(moment, calendarConfig, calendarHelper) {
- function day(viewDate) {
- return calendarHelper.formatDate(viewDate, calendarConfig.titleFormats.day);
- }
- function week(viewDate) {
- var weekTitleLabel = calendarConfig.titleFormats.week;
- return weekTitleLabel.replace('{week}', moment(viewDate).week()).replace('{year}', moment(viewDate).format('YYYY'));
- }
- function month(viewDate) {
- return calendarHelper.formatDate(viewDate, calendarConfig.titleFormats.month);
- }
- function year(viewDate) {
- return calendarHelper.formatDate(viewDate, calendarConfig.titleFormats.year);
- }
- return {
- day: day,
- week: week,
- month: month,
- year: year
- };
- }]);
- /***/ },
- /* 46 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- var interact;
- try {
- interact = __webpack_require__(47);
- } catch (e) {
- /* istanbul ignore next */
- interact = null;
- }
- angular
- .module('mwl.calendar')
- .constant('interact', interact);
- /***/ },
- /* 47 */
- /***/ function(module, exports) {
- if(typeof __WEBPACK_EXTERNAL_MODULE_47__ === 'undefined') {var e = new Error("Cannot find module \"undefined\""); e.code = 'MODULE_NOT_FOUND'; throw e;}
- module.exports = __WEBPACK_EXTERNAL_MODULE_47__;
- /***/ },
- /* 48 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- var angular = __webpack_require__(12);
- var moment = __webpack_require__(49);
- angular
- .module('mwl.calendar')
- .constant('moment', moment);
- /***/ },
- /* 49 */
- /***/ function(module, exports) {
- module.exports = __WEBPACK_EXTERNAL_MODULE_49__;
- /***/ }
- /******/ ])
- });
- ;
|