{"version":3,"sources":["kendo.scheduler.monthview.js"],"names":["f","define","$","shiftArray","array","idx","slice","concat","firstVisibleMonthDay","date","calendarInfo","firstDay","firstVisibleDay","Date","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","getDay","kendo","setTime","MS_PER_DAY","isInDateRange","value","min","max","msValue","msMin","msMax","window","ui","SchedulerView","NS","extend","getDate","NUMBER_OF_ROWS","NUMBER_OF_COLUMNS","INVERSE_COLOR_CLASS","DAY_TEMPLATE","template","EVENT_WRAPPER_STRING","EVENT_TEMPLATE","CELL_INNER_SPACING","MORE_BUTTON_TEMPLATE","MonthGroupedView","Class","init","view","this","_view","_verticalRowCountForLevel","level","_rowCountForLevel","_horizontalGroupCountForLevel","_columnCountForLevel","_getCalendarRowsLength","cellsPerRow","cellCount","_createRows","start","startIdx","horizontalGroupCount","verticalGroupIndex","groupIdx","isVerticallyGrouped","_isVerticallyGrouped","html","_createRow","_adjustStartDate","addDays","_getContent","content","startDate","resources","_getTimeSlotByPosition","x","y","groupIndex","group","groups","daySlotByPosition","_nextSlotStartDate","nextDay","_createRowsLayout","rows","groupHeaderTemplate","_createVerticalColumnsLayout","columns","_createColumnsLayout","_verticalGroupCount","_horizontalGroupCount","_columnOffsetForResource","_positionMobileEvent","event","range","rangeCount","end","rangeIndex","occurrence","endDate","clone","head","tail","_createEventElement","_positionEvent","_addDaySlotCollections","groupCount","tableRows","rowMultiplier","rowIndex","collection","tableRow","cells","cellMultiplier","cellIndex","cell","columnCount","rowCount","addDaySlotCollection","children","setAttribute","addDaySlot","_changePeriodGroupIndex","reverse","length","_createResizeHint","left","startSlot","offsetLeft","top","offsetTop","width","innerWidth","height","clientHeight","hint","fn","call","_appendResizeHint","_createMoveHint","endSlot","css","firstChildHeight","options","eventHeight","index","addClass","inverseColor","_appendMoveHint","MonthGroupedByDateView","verticalStart","dateIdx","_groupCount","isLastRow","cellIdx","_createDateLayout","dataIndex","obj","resource","configuration","data","dataSource","getter","dataValueField","text","htmlEncode","dataTextField","color","dataColorField","field","title","name","className","push","subColumns","i","currentSlot","dateRange","startIndex","endIndex","_slots","daySlotRanges","dateIndex","currentTableIndex","currentCellIndex","currentGroupIndex","_daySlotCollections","vertical","selectionGroupIndex","slotIdx","slot","offsetWidth","offsetHeight","scheduler","MonthView","element","isGroupedByDate","adaptiveSlotHeight","that","eventsPerDay","moreButtonHeight","_groupedView","_getGroupedView","_isGroupedByDate","Error","_templates","_editable","_renderLayout","_groups","_updateDirection","selection","ranges","multiple","isSameSlot","isSameCollection","updateDirection","collectionIndex","backward","_changeDate","previous","collections","slotIndex","_getCollections","daySlotCollectionCount","_getNextHorizontalRange","method","horizontalRange","isVertical","_getNextVerticalRange","verticalRange","_changeViewPeriod","newStart","newEnd","pad","_isInRange","events","_continuousSlot","continuousSlot","_changeGroupContinuously","lastGroupIndex","_normalizeHorizontalSelection","_normalizeVerticalSelection","settings","Template","templateSettings","eventTemplate","_eventTmpl","dayTemplate","dateForTitle","format","selectedDateFormat","_firstDayOfMonth","_lastDayOfMonth","shortDateForTitle","selectedShortDateFormat","mobileDateForTitle","selectedMobileDateFormat","nextDate","previousDate","previousDay","_startDate","_endDate","firstDayOfMonth","lastDayOfMonth","createLayout","_layout","_content","_initSlotHeight","refreshLayout","_isVirtualized","_tryRenderContent","on","e","offset","currentTarget","_slotByPosition","preventDefault","trigger","_footer","editable","_isMobile","_touchEditable","_mouseEditable","uid","closest","attr","create","resourceInfo","_resourceBySlot","eventInfo","isAllDay","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","useClickAsTap","browser","edge","filter","tap","_scrolling","target","selectionByElement","columnLevel","columnLevels","rowLevel","rowLevels","verticalGroupIdx","verticalGroupCount","groupedView","groupedResources","_createCalendar","_cachedGroupIndex","find","_virtualContent","append","_calcSlotHeight","dateHeader","eventSpacing","firstCell","firstChild","Math","round","rowHeight","isMobile","table","_adjustSlotHeight","weeks","_canAdjustSlotHeight","forEach","week","_events","eventIndex","slots","firstSlot","weekOffsetTop","weekHeight","eventMeta","actualEventCount","meta","adjSlot","adjMeta","indexOf","dirty","sort","first","second","order","slotHeight","firstChildTop","style","more","parentNode","bind","calendarRowsLength","rowIdx","weekStartDates","_slotIndices","_weekStartDates","classes","isToday","getTime","inner","weekDayNames","days","namesShort","map","names","showDelete","destroy","resizable","resize","ns","eventResources","messages","angular","elements","dataItem","_isInDateSlot","slotStart","slotEnd","lastSlot","startTime","toUtcTime","endTime","_slotIndex","slotRange","eventCount","container","collidingEvents","createRows","at","appendChild","addEvent","_continuousEvents","rightOffset","rowEvents","eventTop","j","eventLength","_collectionIndex","_startSlotIndex","_startSlot","clientWidth","parseInt","appendTo","_inverseEventColor","outerHeight","scrollTop","scrollLeft","ceil","_resizeHint","add","_updateResizeHint","_removeResizeHint","toString","timezone","toLocalDate","last","_updateMoveHint","distance","duration","_removeMoveHint","_moveHint","getElementsByTagName","_addResourceView","MS_PER_HOUR","render","remove","_cachedEvents","Query","dir","toArray","_renderGroups","_renderEvents","slotRanges","rangeStart","rangeEnd","setDate","middle","parentValue","itemIdx","tmp","item","itemParentValue","dataParentValueField","undefined","_resourceValue","operator","groupEqFilter","removeClass","off","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.scheduler.monthview.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.scheduler.monthview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.monthview',\n name: 'Scheduler Month View',\n category: 'web',\n description: 'The Scheduler Month View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, SchedulerView = ui.SchedulerView, NS = '.kendoMonthView', extend = $.extend, getDate = kendo.date.getDate, MS_PER_DAY = kendo.date.MS_PER_DAY, NUMBER_OF_ROWS = 6, NUMBER_OF_COLUMNS = 7, INVERSE_COLOR_CLASS = 'k-event-inverse', DAY_TEMPLATE = kendo.template('#:kendo.toString(date, \"dd\")#'), EVENT_WRAPPER_STRING = '
' + '' + '# if (data.tail || data.middle) {#' + '' + '#}#' + '# if (data.isException()) {#' + '' + '# } else if (data.isRecurring()) {#' + '' + '#}#' + '' + '{0}' + '' + '#if (showDelete) {#' + '' + '#}#' + '# if (data.head || data.middle) {#' + '' + '#}#' + '' + '# if (resizable && !data.tail && !data.middle) {#' + '' + '#}#' + '# if (resizable && !data.head && !data.middle) {#' + '' + '#}#' + '
', EVENT_TEMPLATE = kendo.template('
' + '
#:title#
' + '
');\n var CELL_INNER_SPACING = 2;\n var MORE_BUTTON_TEMPLATE = kendo.template('
');\n var MonthGroupedView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level);\n },\n _getCalendarRowsLength: function (cellsPerRow, cellCount) {\n return cellCount / cellsPerRow;\n },\n _createRows: function (start, startIdx, horizontalGroupCount, verticalGroupIndex) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n for (var groupIdx = 0; groupIdx < horizontalGroupCount; groupIdx++) {\n html += view._createRow(start, startIdx, cellsPerRow, isVerticallyGrouped ? verticalGroupIndex : groupIdx);\n }\n return html;\n },\n _adjustStartDate: function (start) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources) {\n return content({\n date: startDate,\n resources: resources\n });\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y);\n },\n _nextSlotStartDate: function (startDate) {\n return kendo.date.nextDay(startDate);\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n return columns;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / view._columnOffsetForResource(level);\n },\n _positionMobileEvent: function (event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n var occurrence = event.clone({\n start: start,\n end: end,\n head: range.head,\n tail: range.tail\n });\n view._positionMobileEvent(range, view._createEventElement(occurrence), group);\n },\n _positionEvent: function (event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n var occurrence = event.clone({\n start: start,\n end: end,\n head: range.head,\n tail: range.tail\n });\n view._positionEvent(range, view._createEventElement(occurrence), group);\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var cellCount = 0;\n var rowMultiplier = 0;\n if (view._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n for (var rowIndex = rowMultiplier * rowCount; rowIndex < (rowMultiplier + 1) * rowCount; rowIndex++) {\n var group = view.groups[groupIndex];\n var collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n var tableRow = tableRows[rowIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n for (var cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n var cell = cells[cellIndex];\n view.addDaySlot(collection, cell, startDate, cellCount);\n cellCount++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse) {\n var view = this._view;\n return reverse ? view.groups.length - 1 : 0;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left = range.startSlot().offsetLeft;\n var top = range.start.offsetTop;\n var width = range.innerWidth();\n var height = range.start.clientHeight - 2;\n var hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop + startSlot.firstChildHeight,\n height: view.options.eventHeight === 'auto' ? 25 : view.options.eventHeight,\n width: range.innerWidth() - (startSlot.index !== endSlot.index ? 3 : 2)\n });\n hint.addClass('k-event-drag-hint');\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n }\n });\n var MonthGroupedByDateView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function () {\n return 1;\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level + 1) / NUMBER_OF_COLUMNS;\n },\n _createRows: function (start, startIdx, horizontalGroupCount) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n var dateIdx = 0;\n if (isVerticallyGrouped) {\n var verticalStart = new Date(start);\n var groupCount = view._groupCount();\n for (dateIdx; dateIdx < NUMBER_OF_ROWS; dateIdx++) {\n html += view._createRow(verticalStart, startIdx, groupCount, dateIdx);\n verticalStart = kendo.date.addDays(verticalStart, cellsPerRow);\n }\n start = kendo.date.nextDay(start);\n } else {\n for (dateIdx; dateIdx < cellsPerRow; dateIdx++) {\n html += view._createRow(start, startIdx, horizontalGroupCount, dateIdx);\n start = kendo.date.nextDay(start);\n }\n start = kendo.date.addDays(start, cellsPerRow);\n }\n return html;\n },\n _adjustStartDate: function (start, isLastRow) {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n if (isVerticallyGrouped) {\n if (isLastRow) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS * (NUMBER_OF_ROWS - 1) + 1);\n } else {\n return kendo.date.nextDay(start);\n }\n }\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources, cellIdx) {\n if (cellIdx === 0) {\n return content({\n date: startDate,\n resources: resources\n });\n }\n return '';\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y, true);\n },\n _nextSlotStartDate: function (startDate) {\n return startDate;\n },\n _getCalendarRowsLength: function () {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n return isVerticallyGrouped ? NUMBER_OF_COLUMNS : NUMBER_OF_ROWS;\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n var view = this._view;\n return view._createDateLayout(columns, null, false);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n var resource = resources[0];\n var configuration = [];\n var data = resource.dataSource.view();\n for (var dataIndex = 0; dataIndex < data.length * NUMBER_OF_ROWS; dataIndex++) {\n var value = kendo.getter(resource.dataValueField)(data[dataIndex % data.length]);\n var obj = {\n text: groupHeaderTemplate({\n text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex % data.length])),\n color: kendo.getter(resource.dataColorField)(data[dataIndex % data.length]),\n field: resource.field,\n title: resource.title,\n name: resource.name,\n value: value\n }),\n className: 'k-slot-cell',\n value: value\n };\n obj.columns = view._createColumnsLayout(resources.slice(1), null, groupHeaderTemplate, null, null, value);\n configuration.push(obj);\n }\n return configuration;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate, subColumns) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_ROWS;\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_COLUMNS;\n },\n _positionMobileEvent: function (event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail\n });\n view._positionMobileEvent(dateRange, view._createEventElement(occurrence), group);\n }\n },\n _positionEvent: function (event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail\n });\n view._positionEvent(dateRange, view._createEventElement(occurrence), group);\n }\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n for (var dateIndex = 0; dateIndex < columnCount; dateIndex++) {\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n var groupIndex = 0;\n var currentTableIndex = isVerticallyGrouped ? dateIndex : rowIndex;\n var tableRow = tableRows[currentTableIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = dateIndex;\n }\n for (var cellIndex = cellMultiplier * groupCount; cellIndex < (cellMultiplier + 1) * groupCount; cellIndex++) {\n var cellCount = rowIndex * columnCount + dateIndex;\n var currentCellIndex = isVerticallyGrouped ? cellIndex + rowIndex * groupCount : cellIndex;\n var cell = cells[currentCellIndex];\n var currentGroupIndex = isVerticallyGrouped ? cellIndex : groupIndex;\n var group = view.groups[currentGroupIndex];\n var collection;\n if (dateIndex === 0) {\n collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n } else {\n collection = group._daySlotCollections[rowIndex];\n }\n view.addDaySlot(collection, cell, startDate, cellCount);\n groupIndex++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse, vertical, selectionGroupIndex) {\n var view = this._view;\n if (vertical && view._isVerticallyGrouped()) {\n return reverse ? view.groups.length - 1 : 0;\n }\n return selectionGroupIndex;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left, top, width, height, hint;\n if (view._isVerticallyGrouped()) {\n left = range.startSlot().offsetLeft;\n top = range.start.offsetTop;\n width = range.startSlot().offsetWidth;\n height = range.endSlot().offsetTop + range.startSlot().offsetHeight - range.startSlot().offsetTop - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n } else {\n for (var slotIdx = range.startSlot().index; slotIdx <= range.endSlot().index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n left = slot.offsetLeft;\n top = slot.offsetTop;\n width = slot.offsetWidth;\n height = slot.offsetHeight - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n }\n }\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n for (var slotIdx = startSlot.index; slotIdx <= endSlot.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: slot.offsetLeft,\n top: slot.offsetTop + slot.firstChildHeight,\n height: view.options.eventHeight === 'auto' ? 25 : view.options.eventHeight,\n width: slot.offsetWidth - 2\n });\n hint.addClass('k-event-drag-hint');\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n }\n }\n });\n kendo.ui.scheduler.MonthGroupedView = MonthGroupedView;\n kendo.ui.scheduler.MonthGroupedByDateView = MonthGroupedByDateView;\n ui.MonthView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n if (options.eventsPerDay === 0) {\n options.eventsPerDay = 1;\n }\n if (options.eventHeight === 0) {\n options.eventHeight = 1;\n }\n if (options.moreButtonHeight === 0) {\n options.moreButtonHeight = 1;\n }\n if (typeof options.eventHeight === 'string' && options.eventHeight !== 'auto') {\n options.eventHeight = 25;\n }\n if (options.eventHeight === 'auto') {\n options.adaptiveSlotHeight = true;\n }\n SchedulerView.fn.init.call(that, element, options);\n that._groupedView = that._getGroupedView();\n var isGroupedByDate = this._isGroupedByDate();\n var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n var eventHeight = this.options.eventHeight;\n if (isGroupedByDate === true && adaptiveSlotHeight === true) {\n throw new Error('Incompatible options: adaptive slot height and date grouping!');\n }\n if (isGroupedByDate === true && eventHeight === 'auto') {\n throw new Error('Incompatible options: auto event height and date grouping!');\n }\n that.title = that.options.title;\n that._templates();\n that._editable();\n that._renderLayout(that.options.date);\n that._groups();\n },\n name: 'month',\n _getGroupedView: function () {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.MonthGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.MonthGroupedView(this);\n }\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n if (multiple) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var isSameSlot = startSlot.index === endSlot.index;\n var isSameCollection = startSlot.collectionIndex === endSlot.collectionIndex;\n var updateDirection;\n if (vertical) {\n updateDirection = isSameSlot && isSameCollection || isSameCollection;\n } else {\n updateDirection = isSameSlot && isSameCollection;\n }\n if (updateDirection) {\n selection.backward = reverse;\n }\n }\n },\n _changeDate: function (selection, slot, previous) {\n var group = this.groups[selection.groupIndex];\n var collections, index;\n if (previous) {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex - 1;\n if (index >= 0) {\n return collections[index]._slots[collections[index]._slots.length - 1];\n }\n } else {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex + 1;\n var slotIndex = 0;\n if (collections[index] && collections[index]._slots[slotIndex]) {\n return collections[index]._slots[slotIndex];\n }\n }\n },\n _getNextHorizontalRange: function (group, method, horizontalRange) {\n var isVertical = this._isVerticallyGrouped();\n horizontalRange.startSlot = group[method](horizontalRange.startSlot, isVertical);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot, isVertical);\n return horizontalRange;\n },\n _getNextVerticalRange: function (group, method, verticalRange, multiple) {\n var isVertical = this._isVerticallyGrouped() && this._isGroupedByDate();\n verticalRange.startSlot = group[method](verticalRange.startSlot, multiple, isVertical);\n verticalRange.endSlot = group[method](verticalRange.endSlot, multiple, isVertical);\n return verticalRange;\n },\n _changeViewPeriod: function (selection, reverse, vertical) {\n var pad = vertical ? 7 : 1;\n var newStart, newEnd;\n if (reverse) {\n pad *= -1;\n }\n newStart = kendo.date.addDays(selection.start, pad);\n newEnd = kendo.date.addDays(selection.end, pad);\n if (this._isInRange(newStart, newEnd)) {\n return false;\n }\n selection.start = newStart;\n selection.end = newEnd;\n if (!vertical || vertical && this._isVerticallyGrouped()) {\n selection.groupIndex = this._groupedView._changePeriodGroupIndex(reverse, vertical, selection.groupIndex);\n }\n selection.events = [];\n return true;\n },\n _continuousSlot: function (selection, ranges, reverse) {\n var index = selection.backward ? 0 : ranges.length - 1;\n var group = this.groups[selection.groupIndex];\n return group.continuousSlot(ranges[index].start, reverse);\n },\n _changeGroupContinuously: function (selection, continuousSlot, multiple, reverse) {\n if (!multiple) {\n var groupIndex = selection.groupIndex;\n var lastGroupIndex = this.groups.length - 1;\n var vertical = this._isVerticallyGrouped();\n var group = this.groups[groupIndex];\n if (!continuousSlot && vertical) {\n continuousSlot = group[reverse ? 'lastSlot' : 'firstSlot']();\n groupIndex += reverse ? -1 : 1;\n } else if (continuousSlot && !vertical) {\n groupIndex = reverse ? lastGroupIndex : 0;\n }\n if (groupIndex < 0 || groupIndex > lastGroupIndex) {\n groupIndex = reverse ? lastGroupIndex : 0;\n continuousSlot = null;\n }\n selection.groupIndex = groupIndex;\n }\n return continuousSlot;\n },\n _normalizeHorizontalSelection: function (selection, ranges, reverse) {\n var slot;\n if (reverse) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _normalizeVerticalSelection: function (selection, ranges) {\n var slot;\n if (selection.backward) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.dayTemplate = kendo.template(options.dayTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n dateForTitle: function () {\n return kendo.format(this.options.selectedDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n shortDateForTitle: function () {\n return kendo.format(this.options.selectedShortDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n mobileDateForTitle: function () {\n return kendo.format(this.options.selectedMobileDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n nextDate: function () {\n return kendo.date.nextDay(this._lastDayOfMonth);\n },\n previousDate: function () {\n return kendo.date.previousDay(this._firstDayOfMonth);\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n _renderLayout: function (date) {\n var that = this;\n this._firstDayOfMonth = kendo.date.firstDayOfMonth(date);\n this._lastDayOfMonth = kendo.date.lastDayOfMonth(date);\n this._startDate = firstVisibleMonthDay(date, this.calendarInfo());\n this.createLayout(this._layout());\n this._content();\n this._initSlotHeight();\n this.refreshLayout();\n if (this._isVirtualized()) {\n this._tryRenderContent();\n }\n this.content.on('click' + NS, '.k-nav-day,.k-more-events', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n e.preventDefault();\n that.trigger('navigate', {\n view: 'day',\n date: slot.startDate()\n });\n });\n this._footer();\n },\n _editable: function () {\n if (this.options.editable) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n _mouseEditable: function () {\n var that = this;\n that.element.on('click' + NS, '.k-scheduler-monthview .k-event a:has(.k-i-close)', function (e) {\n that.trigger('remove', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n if (that.options.editable.create !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-scheduler-content td', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-event', function (e) {\n that.trigger('edit', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n }\n },\n _touchEditable: function () {\n var that = this;\n var threshold = 0;\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-scheduler-monthview .k-scheduler-content td',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var offset = $(e.target).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n },\n selectionByElement: function (cell) {\n var offset = $(cell).offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _columnCountForLevel: function (level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n _rowCountForLevel: function (level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n _content: function () {\n var html = '';\n var verticalGroupCount = 1;\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n verticalGroupCount = groupedView._verticalRowCountForLevel(resources.length - 1);\n }\n }\n for (var verticalGroupIdx = 0; verticalGroupIdx < verticalGroupCount; verticalGroupIdx++) {\n html += this._createCalendar(verticalGroupIdx);\n this._cachedGroupIndex = verticalGroupIdx;\n }\n html += '';\n this.content.find('table').html(html);\n },\n _virtualContent: function () {\n var that = this;\n var html = '';\n html += this._createCalendar(++this._cachedGroupIndex);\n that.content.find('table tbody').append(html);\n that._initSlotHeight();\n },\n _calcSlotHeight: function (eventsPerDay) {\n var options = this.options;\n var eventHeight = options.eventHeight;\n var eventSpacing = options.eventSpacing;\n var moreButtonHeight = options.moreButtonHeight;\n var firstCell = this.content.find('table tr td')[0];\n var dateHeader;\n if (eventHeight === 'auto' || !firstCell) {\n return undefined;\n }\n dateHeader = firstCell.firstChild;\n return Math.round(firstCell.offsetHeight - firstCell.clientHeight + dateHeader.offsetTop + dateHeader.offsetHeight + CELL_INNER_SPACING + eventsPerDay * eventHeight + (eventsPerDay - 1) * eventSpacing + (CELL_INNER_SPACING + moreButtonHeight) + CELL_INNER_SPACING);\n },\n _initSlotHeight: function () {\n var options = this.options;\n var eventsPerDay = options.eventsPerDay;\n var eventHeight = options.eventHeight;\n var isMobile = this._isMobile();\n var table = this.content.find('table');\n var rowHeight;\n if (isMobile) {\n return;\n }\n if (typeof eventHeight === 'number') {\n table.addClass('k-scheduler-table-auto');\n rowHeight = this._calcSlotHeight(eventsPerDay);\n table.find('tr').height(rowHeight);\n }\n },\n _adjustSlotHeight: function (group) {\n var options = this.options;\n var eventHeight = options.eventHeight;\n var eventSpacing = options.eventSpacing;\n var moreButtonHeight = options.moreButtonHeight;\n if (this._canAdjustSlotHeight !== true) {\n return;\n }\n var weeks = group._daySlotCollections;\n this.content.find('table').addClass('k-scheduler-table-auto');\n weeks.forEach(function (week) {\n var events = week._events;\n var eventIndex = 0;\n var slots = week._slots;\n var firstSlot = slots[0];\n var weekOffsetTop = firstSlot.element.offsetTop;\n var weekHeight = 0;\n slots.forEach(function (slot) {\n if (!slot.eventMeta) {\n slot.eventMeta = [];\n slot.actualEventCount = 0;\n } else {\n slot.actualEventCount = slot.eventMeta.length;\n }\n });\n slots.forEach(function (slot, slotIndex) {\n slot.eventMeta.forEach(function (meta, eventIndex) {\n if (meta.startIndex !== slotIndex) {\n return;\n }\n if (meta.startIndex === meta.endIndex) {\n return;\n }\n slots.slice(slotIndex, meta.endIndex + 1).forEach(function (adjSlot) {\n var adjMeta = adjSlot.eventMeta;\n if (adjMeta.indexOf(meta) > -1) {\n return;\n }\n adjMeta[adjMeta.length] = slot.eventMeta[eventIndex];\n adjSlot.actualEventCount = adjMeta.length;\n adjSlot.dirty = true;\n });\n });\n if (slot.dirty === true) {\n slot.eventMeta.sort(function (first, second) {\n return first.order - second.order;\n });\n delete slot.dirty;\n }\n });\n if (eventHeight === 'auto') {\n slots.forEach(function (slot, slotIndex) {\n var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n slot.eventMeta.forEach(function (meta, eventIndex) {\n meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n slotHeight = meta.top - weekOffsetTop + eventSpacing + meta.height;\n });\n });\n }\n slots.forEach(function (slot, slotIndex) {\n var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n slot.eventMeta.forEach(function (meta) {\n meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n slotHeight = meta.top - weekOffsetTop + eventSpacing + meta.height;\n if (meta.startIndex === slotIndex) {\n events[eventIndex].element[0].style.top = meta.top + 'px';\n eventIndex++;\n }\n });\n if (slot.eventMeta.length > 0) {\n slotHeight -= eventSpacing;\n slotHeight += CELL_INNER_SPACING;\n } else {\n slotHeight += eventHeight === 'auto' ? 25 : eventHeight;\n }\n if (slot.more) {\n slot.more[0].style.top = weekOffsetTop + slotHeight + 'px';\n slotHeight += CELL_INNER_SPACING + moreButtonHeight;\n }\n weekHeight = Math.max(weekHeight, slotHeight + 1);\n });\n firstSlot.element.parentNode.style.height = weekHeight + 'px';\n slots.forEach(function (slot) {\n slot.offsetTop = weekOffsetTop;\n slot.offsetHeight = weekHeight;\n slot.clientHeight = weekHeight - 1;\n });\n }.bind(this));\n },\n _createCalendar: function (verticalGroupIndex) {\n var start = this.startDate();\n var cellCount = NUMBER_OF_COLUMNS * NUMBER_OF_ROWS;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var weekStartDates = [start];\n var html = '';\n var horizontalGroupCount = 1;\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (!isVerticallyGrouped) {\n horizontalGroupCount = groupedView._horizontalGroupCountForLevel(resources.length - 1);\n }\n }\n this._slotIndices = {};\n var calendarRowsLength = groupedView._getCalendarRowsLength(cellsPerRow, cellCount);\n for (var rowIdx = 0; rowIdx < calendarRowsLength; rowIdx++) {\n html += '';\n weekStartDates.push(start);\n var startIdx = rowIdx * cellsPerRow;\n html += groupedView._createRows(start, startIdx, horizontalGroupCount, verticalGroupIndex);\n start = groupedView._adjustStartDate(start, rowIdx === calendarRowsLength - 1);\n html += '';\n }\n this._weekStartDates = weekStartDates;\n this._endDate = kendo.date.previousDay(start);\n return html;\n },\n _createRow: function (startDate, startIdx, cellsPerRow, groupIndex) {\n var that = this;\n var min = that._firstDayOfMonth;\n var max = that._lastDayOfMonth;\n var content = that.dayTemplate;\n var classes = '';\n var html = '';\n var groupedView = this._groupedView;\n var resources = function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n for (var cellIdx = 0; cellIdx < cellsPerRow; cellIdx++) {\n classes = '';\n if (kendo.date.isToday(startDate)) {\n classes += 'k-today';\n }\n if (!kendo.date.isInDateRange(startDate, min, max)) {\n classes += ' k-other-month';\n }\n html += ' ',\n className: 'k-hidden k-slot-cell'\n });\n }\n rows = groupedView._createRowsLayout(resources, inner, this.groupHeaderTemplate, columns);\n columns = groupedView._createVerticalColumnsLayout(resources, inner, this.groupHeaderTemplate, columns);\n } else {\n columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _createEventElement: function (event) {\n var options = this.options;\n var editable = options.editable;\n var isMobile = this._isMobile();\n event.showDelete = editable && editable.destroy !== false && !isMobile;\n event.resizable = editable && editable.resize !== false && !isMobile;\n event.ns = kendo.ns;\n event.resources = this.eventResources(event);\n event.inverseColor = false;\n event.messages = options.messages || { destroy: 'Delete' };\n var element = $(this.eventTemplate(event));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: event }]\n };\n });\n return element;\n },\n _isInDateSlot: function (event) {\n var groups = this.groups[0];\n var slotStart = groups.firstSlot().start;\n var slotEnd = groups.lastSlot().end - 1;\n var startTime = kendo.date.toUtcTime(event.start);\n var endTime = kendo.date.toUtcTime(event.end);\n return (isInDateRange(startTime, slotStart, slotEnd) || isInDateRange(endTime, slotStart, slotEnd) || isInDateRange(slotStart, startTime, endTime) || isInDateRange(slotEnd, startTime, endTime)) && (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay);\n },\n _slotIndex: function (date) {\n return this._slotIndices[getDate(date).getTime()];\n },\n _positionMobileEvent: function (slotRange, element, group) {\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = startIndex;\n var eventCount = 3;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n var slot = slotRange.collection.at(startIndex);\n var container = slot.container;\n if (!container) {\n container = $(kendo.format('
', startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + 'px', startSlot.offsetLeft + 'px', startSlot.offsetWidth + 'px'));\n slot.container = container;\n this.content[0].appendChild(container[0]);\n }\n if (rows.length <= eventCount) {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end\n });\n container[0].appendChild(element[0]);\n }\n },\n _positionEvent: function (slotRange, element, group) {\n var eventHeight = this.options.eventHeight;\n var eventSpacing = this.options.eventSpacing;\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var eventCount = startSlot.eventCount;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n var rightOffset = startIndex !== endIndex ? 3 : 2;\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n for (var idx = 0, length = Math.min(rows.length, eventCount); idx < length; idx++) {\n var rowEvents = rows[idx].events;\n var eventTop = eventHeight === 'auto' ? '' : startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + CELL_INNER_SPACING + idx * (eventHeight + eventSpacing) + 'px';\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n rowEvents[j].element[0].style.top = eventTop;\n rowEvents[j].element.attr(kendo.attr('order'), idx);\n }\n }\n if (rows.length > eventCount) {\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n var collection = slotRange.collection;\n var slot = collection.at(slotIndex);\n if (slot.more) {\n continue;\n }\n slot.more = $(MORE_BUTTON_TEMPLATE({\n ns: kendo.ns,\n start: slotIndex,\n end: slotIndex,\n width: slot.clientWidth - 2,\n left: slot.offsetLeft + 2,\n top: eventHeight === 'auto' ? '' : slot.offsetTop + slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING + eventCount * eventHeight + (eventCount - 1) * eventSpacing + CELL_INNER_SPACING\n }));\n this.content[0].appendChild(slot.more[0]);\n }\n } else {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n element[0].style.width = slotRange.innerWidth() - rightOffset + 'px';\n element[0].style.left = startSlot.offsetLeft + 2 + 'px';\n element[0].style.height = eventHeight === 'auto' ? '' : eventHeight + 'px';\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end,\n order: parseInt(element.attr(kendo.attr('order')), 10)\n });\n element.appendTo(this.content);\n this._inverseEventColor(element);\n var _collectionIndex = slotRange.start.collectionIndex;\n var _startSlotIndex = slotRange.start.index;\n var _startSlot = group._daySlotCollections[_collectionIndex]._slots[_startSlotIndex];\n if (!_startSlot.eventMeta) {\n _startSlot.eventMeta = [];\n }\n _startSlot.eventMeta.push({\n height: eventHeight === 'auto' ? element.outerHeight() : eventHeight,\n top: 0,\n startIndex: _startSlotIndex,\n endIndex: slotRange.end.index,\n uid: element.attr(kendo.attr('uid')),\n order: parseInt(element.attr(kendo.attr('order')), 10)\n });\n }\n },\n _slotByPosition: function (x, y) {\n var offset = this.content.offset();\n x -= offset.left;\n y -= offset.top;\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n var slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n _appendResizeHint: function (hint) {\n hint.appendTo(this.content);\n this._resizeHint = this._resizeHint.add(hint);\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n this._removeResizeHint();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, true, event.isAllDay);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createResizeHint(ranges[rangeIndex]);\n }\n this._resizeHint.find('.k-label-top,.k-label-bottom').text('');\n this._resizeHint.first().addClass('k-first').find('.k-label-top').text(kendo.toString(kendo.timezone.toLocalDate(startTime), 'M/dd'));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), 'M/dd'));\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var start = kendo.date.toUtcTime(event.start) + distance;\n var end = start + event.duration();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(start, end, true, event.isAllDay);\n this._removeMoveHint(event.uid);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createMoveHint(ranges[rangeIndex], event);\n }\n },\n _appendMoveHint: function (hint) {\n hint.appendTo(this.content);\n this._moveHint = this._moveHint.add(hint);\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var tableRows = this.content[0].getElementsByTagName('tr');\n var startDate = this.startDate();\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n this._addResourceView(idx);\n }\n this._groupedView._addDaySlotCollections(groupCount, tableRows, startDate);\n },\n addDaySlot: function (collection, cell, startDate, cellCount) {\n var start = kendo.date.addDays(startDate, cellCount);\n var end = kendo.date.MS_PER_DAY;\n var eventsPerDay = this.options.eventsPerDay;\n if (startDate.getHours() !== start.getHours()) {\n end += (startDate.getHours() - start.getHours()) * kendo.date.MS_PER_HOUR;\n }\n start = kendo.date.toUtcTime(start);\n end += start;\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addDaySlot(cell, start, end, eventsPerDay);\n },\n render: function (events) {\n this.content.children('.k-event,.k-more-events,.k-events-container').remove();\n this._cachedEvents = events;\n this._groups();\n events = new kendo.data.Query(events).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).toArray().filter(function (event) {\n return this._isInDateSlot(event);\n }.bind(this));\n var resources = this.groupedResources;\n var isMobile = this._isMobile();\n var isGroupedByDate = this._isGroupedByDate();\n var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n this._canAdjustSlotHeight = isMobile !== true && isGroupedByDate !== true && resources.length === 0 && adaptiveSlotHeight === true;\n if (resources.length) {\n this._renderGroups(events, resources, 0, 1);\n } else {\n this._renderEvents(events, 0);\n }\n this.refreshLayout();\n this.trigger('activate');\n },\n _renderEvents: function (events, groupIndex) {\n var group = this.groups[groupIndex];\n var view = this._groupedView._view;\n var isMobile = view._isMobile();\n if (!group) {\n return;\n }\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n if (isMobile) {\n events.forEach(function (event) {\n var ranges = group.slotRanges(event, true);\n var range = ranges[0];\n var start = range.start.start;\n var end = range.end.end;\n var rangeStart = new Date(range.start.start);\n var rangeEnd = ranges[ranges.length - 1].end.end;\n var newStart = new Date(rangeStart);\n var newEnd = new Date(end);\n while (rangeStart.getTime() <= rangeEnd && event.end >= kendo.timezone.toLocalDate(rangeStart) && event.start <= kendo.timezone.toLocalDate(rangeEnd)) {\n var dateRange = group.daySlotRanges(newStart.getTime(), newEnd.getTime(), true)[0];\n newEnd.setDate(newEnd.getDate() + 1);\n newStart.setDate(newStart.getDate() + 1);\n if (dateRange) {\n dateRange.head = null;\n dateRange.middle = null;\n dateRange.tail = null;\n this._groupedView._positionMobileEvent(event, group, dateRange, 1, start, end, 0);\n }\n rangeStart = kendo.date.addDays(rangeStart, 1);\n }\n }.bind(this));\n } else {\n events.forEach(function (event) {\n var range;\n var start = event.start;\n var end = event.end;\n var ranges = group.slotRanges(event, true);\n var rangeCount = ranges.length;\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n this._groupedView._positionEvent(event, group, range, rangeCount, start, end, rangeIndex);\n }\n }.bind(this));\n if (this._canAdjustSlotHeight === true) {\n this._adjustSlotHeight(group);\n }\n }\n },\n _renderGroups: function (events, resources, offset, columnLevel, parentValue) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n view = view.filter(function (item) {\n var itemParentValue = kendo.getter(resource.dataParentValueField)(item);\n return itemParentValue === null || itemParentValue === undefined || itemParentValue === parentValue;\n });\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var tmp = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n offset = this._renderGroups(tmp, resources.slice(1), offset++, columnLevel + 1, value);\n } else {\n this._renderEvents(tmp, offset++);\n }\n }\n }\n return offset;\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n var groupedView = this._groupedView;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n return groupedView._verticalGroupCount(resources.length - 1);\n } else {\n return groupedView._horizontalGroupCount(resources.length);\n }\n }\n return 1;\n },\n _columnOffsetForResource: function (index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n destroy: function () {\n if (this.table) {\n this.table.removeClass('k-scheduler-monthview');\n }\n if (this.content) {\n this.content.off(NS);\n }\n if (this.element) {\n this.element.off(NS);\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && this.options.editable) {\n if (this.options.editable.create !== false) {\n this._addUserEvents.destroy();\n }\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit',\n 'navigate'\n ],\n options: {\n title: 'Month',\n name: 'month',\n eventHeight: 25,\n moreButtonHeight: 13,\n editable: true,\n selectedDateFormat: '{0:y}',\n selectedShortDateFormat: '{0:y}',\n selectedMobileDateFormat: '{0:MMMM}',\n groupHeaderTemplate: '#=text#',\n dayTemplate: DAY_TEMPLATE,\n eventTemplate: EVENT_TEMPLATE,\n eventsPerDay: 2,\n adaptiveSlotHeight: false,\n eventSpacing: 3\n }\n });\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n function firstVisibleMonthDay(date, calendarInfo) {\n var firstDay = calendarInfo.firstDay, firstVisibleDay = new Date(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n while (firstVisibleDay.getDay() != firstDay) {\n kendo.date.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n return firstVisibleDay;\n }\n function isInDateRange(value, min, max) {\n var msMin = min, msMax = max, msValue;\n msValue = value;\n return msValue >= msMin && msValue <= msMax;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}