{"version":3,"sources":["kendo.scheduler.timelineview.js"],"names":["f","define","$","undefined","toInvariantTime","date","staticDate","Date","setTime","getMilliseconds","getWorkDays","options","workDays","dayIndex","workWeekStart","push","workWeekEnd","setColspan","columnLevel","i","count","columns","length","colspan","collidingEvents","elements","left","right","idx","startPosition","overlaps","endPosition","rectLeft","rectRight","eventsForSlot","event","events","kendo","window","ui","SchedulerView","extend","proxy","getDate","MS_PER_DAY","MS_PER_MINUTE","CURRENT_TIME_MARKER_CLASS","CURRENT_TIME_MARKER_ARROW_CLASS","SCHEDULER_HEADER_WRAP_CLASS","BORDER_SIZE_COEFF","NS","EVENT_TEMPLATE","template","DATA_HEADER_TEMPLATE","EVENT_WRAPPER_STRING","TimelineView","init","element","that","this","fn","call","title","name","_workDays","_templates","_editable","calculateDateRange","_groups","_currentTime","_currentTimeMarkerUpdater","timezone","timezoneOffset","groupsCount","groupIndex","currentGroup","utcCurrentTime","ranges","collection","slotElement","elementHtml","headerWrap","timesTableMarker","currentTime","datesHeader","find","remove","content","_isInDateSlot","start","end","currentTimeMarker","useLocalTimezone","dataSource","schema","offset","convert","getTimezoneOffset","group","orientation","groups","toUtcTime","timeSlotRanges","slotByStartDate","Math","round","innerRect","getTime","prependTo","addClass","css","_adjustLeftPosition","outerWidth","top","prev","position","width","bottom","_isRtl","scrollWidth","offsetWidth","updateInterval","markerOptions","_currentTimeUpdateTimer","setInterval","editable","_isMobile","_touchEditable","_mouseEditable","on","e","trigger","uid","closest","attr","preventDefault","create","resourceInfo","slot","_slotByPosition","pageX","pageY","_resourceBySlot","eventInfo","startDate","endDate","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","filter","tap","x","location","y","_editUserEvents","eventElement","target","hasClass","browser","mozilla","scrollLeft","msie","webkit","scrollTop","ceil","timeSlotByPosition","selectedDateFormat","selectedShortDateFormat","today","startTime","endTime","showWorkHours","minorTickCount","workDayStart","workDayEnd","majorTick","eventHeight","eventMinWidth","columnWidth","groupHeaderTemplate","majorTimeHeaderTemplate","slotTemplate","eventTemplate","dateHeaderTemplate","footer","command","messages","defaultRowText","showFullDay","showWorkDay","settings","Template","templateSettings","_eventTmpl","_render","dates","_dates","_startDate","_endDate","_calculateSlotRanges","createLayout","_layout","_content","_footer","_setContentWidth","refreshLayout","th","currentTarget","view","timesHeader","hide","contentWidth","contentTable","columnCount","children","minWidth","calculatedWidth","add","slotRanges","rangeStart","rangeEnd","slotStartTime","slotEndTime","_slotRanges","_forTimeRange","min","max","action","after","msMin","msMax","msMajorInterval","msInterval","startDay","msStart","html","majorTickDivider","isMajorTickColumn","isMiddleColumn","isLastSlotColumn","minorTickColumns","isLastMajorSlot","minorTickIndex","resources","timeColumns","rows","text","minorTickSlots","className","middleColumn","lastSlotColumn","minorSlotsCount","timeColumn","slice","groupedResources","_groupOrientation","_createRowsLayout","_createColumnsLayout","appendTo","isWorkDay","_columnCountForLevel","level","columnLevels","_rowCountForLevel","rowLevel","rowLevels","_isWorkDay","day","getDay","appendRow","rowIdx","groupIdx","rowCount","isVerticalGrouped","_groupCount","tmplDate","classes","isToday","append","groupCount","_addResourceView","addTimeSlotCollection","addDays","_timeSlotGroups","_isVerticallyGrouped","_isHorizontallyGrouped","datesCount","rowMultiplier","time","rowIndex","cellMultiplier","cells","cellsPerGroup","cellsPerDay","dateIndex","cellOffset","cellIndex","cell","currentDate","interval","_timeSlotInterval","isVerticallyGrouped","tableRows","floor","getTimeSlotCollection","UTC","getFullYear","getMonth","setAttribute","addTimeSlot","nextDate","nextDay","previousDate","previousDay","render","eventsByResource","eventGroups","maxRowCount","eventGroup","_headerColumnCount","data","Query","sort","field","dir","toArray","_eventsByResource","_renderEvents","_setRowsHeight","_positionEvents","eventsForGroup","eventUid","eventObject","_positionEvent","rowsCount","rowHeight","timesRow","row","eventBottomOffset","_getBottomRowOffset","times","height","_refreshSlots","minOffset","maxOffset","isMobile","slotsCollection","lastSlot","offsetRight","rect","slotRange","_slots","offsetLeft","offsetTop","refresh","result","itemIdx","value","eventsFilteredByResource","resource","_resourceValue","operator","groupEqFilter","_isInTimeSlot","slotIndex","_startTime","_endTime","_adjustEvent","occurrence","eventStartTime","_time","eventEndTime","adjustedStartDate","adjustedEndDate","head","tail","isAllDay","clone","isMultiDayEvent","container","adjustedEvent","range","_continuousEvents","_createEventElement","addContinuousEvent","_arrangeRows","showDelete","destroy","resizable","resize","eventStartDate","eventEndDate","eventResources","apply","ns","singleDay","inverseColor","_shouldInverseResourceColor","angular","dataItem","rowEvents","j","eventLength","startIndex","index","endIndex","addEvent","createRows","_updateEventForSelection","_eventOptionsForMove","_updateEventForResize","set","_updateMoveHint","distance","rangeIndex","startSlot","hint","clonedEvent","eventDuraton","duration","_removeMoveHint","snap","offsetHeight","_moveHint","_updateResizeHint","startRect","format","_removeResizeHint","_createResizeHint","_resizeHint","first","toString","toLocalDate","last","selectionByElement","_updateDirection","selection","multiple","reverse","vertical","endSlot","collectionIndex","backward","_changeGroup","previous","method","prevGroupSlot","isDay","_collection","nextGroupSlot","_verticalSlots","_horizontalSlots","_changeViewPeriod","move","key","shift","slots","handled","keys","DOWN","UP","LEFT","RIGHT","off","clearInterval","TimelineWeekView","selectedDate","dayOfWeek","calendarInfo","firstDay","TimelineWorkWeekView","TimelineMonthView","firstDayOfMonth","lastDayOfMonth","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.scheduler.timelineview.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.timelineview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.timelineview',\n name: 'Scheduler Timeline View',\n category: 'web',\n description: 'The Scheduler Timeline View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, setTime = kendo.date.setTime, SchedulerView = ui.SchedulerView, extend = $.extend, proxy = $.proxy, getDate = kendo.date.getDate, getMilliseconds = kendo.date.getMilliseconds, MS_PER_DAY = kendo.date.MS_PER_DAY, MS_PER_MINUTE = kendo.date.MS_PER_MINUTE, CURRENT_TIME_MARKER_CLASS = 'k-current-time', CURRENT_TIME_MARKER_ARROW_CLASS = 'k-current-time-arrow', SCHEDULER_HEADER_WRAP_CLASS = 'k-scheduler-header-wrap', BORDER_SIZE_COEFF = 0.8666, NS = '.kendoTimelineView';\n var EVENT_TEMPLATE = kendo.template('
' + '
#:kendo.format(\"{0:t} - {1:t}\", start, end)#
' + '
${title}
'), DATA_HEADER_TEMPLATE = kendo.template('#=kendo.format(\\'{0:m}\\', date)#'), EVENT_WRAPPER_STRING = '
' + '' + '# if(data.tail) {#' + '' + '#}#' + '# if(data.isException()) {#' + '' + '# } else if(data.isRecurring()) {#' + '' + '# } #' + '' + '{0}' + '' + '#if (showDelete) {#' + '' + '#}#' + '# if(data.head) {#' + '' + '#}#' + '' + '#if(resizable && !data.tail){#' + '' + '#}#' + '#if(resizable && !data.head){#' + '' + '#}#' + '
';\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n setTime(staticDate, getMilliseconds(date));\n return staticDate;\n }\n function getWorkDays(options) {\n var workDays = [];\n var dayIndex = options.workWeekStart;\n workDays.push(dayIndex);\n while (options.workWeekEnd != dayIndex) {\n if (dayIndex > 6) {\n dayIndex -= 7;\n } else {\n dayIndex++;\n }\n workDays.push(dayIndex);\n }\n return workDays;\n }\n function setColspan(columnLevel) {\n var count = 0;\n if (columnLevel.columns) {\n for (var i = 0; i < columnLevel.columns.length; i++) {\n count += setColspan(columnLevel.columns[i]);\n }\n columnLevel.colspan = count;\n return count;\n } else {\n columnLevel.colspan = 1;\n return 1;\n }\n }\n function collidingEvents(elements, left, right) {\n var idx, startPosition, overlaps, endPosition;\n for (idx = elements.length - 1; idx >= 0; idx--) {\n startPosition = elements[idx].rectLeft;\n endPosition = elements[idx].rectRight;\n overlaps = startPosition <= left && endPosition >= left;\n if (overlaps || startPosition >= left && endPosition <= right || left <= startPosition && right >= startPosition) {\n if (startPosition < left) {\n left = startPosition;\n }\n if (endPosition > right) {\n right = endPosition;\n }\n }\n }\n return eventsForSlot(elements, left, right);\n }\n function eventsForSlot(elements, left, right) {\n var events = [];\n for (var idx = 0; idx < elements.length; idx++) {\n var event = {\n rectLeft: elements[idx].rectLeft,\n rectRight: elements[idx].rectRight\n };\n if (event.rectLeft < left && event.rectRight > left || event.rectLeft >= left && event.rectRight <= right) {\n events.push(elements[idx]);\n }\n }\n return events;\n }\n var TimelineView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that.title = that.options.title || that.options.name;\n that._workDays = getWorkDays(that.options);\n that._templates();\n that._editable();\n that.calculateDateRange();\n that._groups();\n that._currentTime();\n },\n name: 'timeline',\n _currentTimeMarkerUpdater: function () {\n var currentTime = new Date();\n var options = this.options;\n this.datesHeader.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n this.content.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n if (!this._isInDateSlot({\n start: currentTime,\n end: currentTime\n })) {\n return;\n }\n if (options.currentTimeMarker.useLocalTimezone === false) {\n var timezone = options.dataSource.options.schema.timezone;\n if (options.dataSource && timezone) {\n var timezoneOffset = kendo.timezone.offset(currentTime, timezone);\n currentTime = kendo.timezone.convert(currentTime, currentTime.getTimezoneOffset(), timezoneOffset);\n }\n }\n var groupsCount = !options.group || options.group.orientation == 'vertical' ? 1 : this.groups.length;\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var currentGroup = this.groups[groupIndex];\n if (!currentGroup) {\n return;\n }\n var utcCurrentTime = kendo.date.toUtcTime(currentTime);\n var ranges = currentGroup.timeSlotRanges(utcCurrentTime, utcCurrentTime + 1);\n if (ranges.length === 0) {\n return;\n }\n var collection = ranges[0].collection;\n var slotElement = collection.slotByStartDate(currentTime);\n if (slotElement) {\n var elementHtml = '
';\n var headerWrap = this.datesHeader.find('.' + SCHEDULER_HEADER_WRAP_CLASS);\n var left = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).left);\n var timesTableMarker = $(elementHtml).prependTo(headerWrap).addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-down');\n timesTableMarker.css({\n left: this._adjustLeftPosition(left - timesTableMarker.outerWidth() * BORDER_SIZE_COEFF / 2),\n top: headerWrap.find('tr:last').prev().position().top\n });\n $(elementHtml).prependTo(this.content).css({\n left: this._adjustLeftPosition(left),\n width: '1px',\n bottom: '1px',\n top: 0\n });\n }\n }\n },\n _adjustLeftPosition: function (left) {\n if (this._isRtl) {\n left -= this.content[0].scrollWidth - this.content[0].offsetWidth;\n }\n return left;\n },\n _currentTime: function () {\n var that = this;\n var markerOptions = that.options.currentTimeMarker;\n if (markerOptions !== false && markerOptions.updateInterval !== undefined) {\n var updateInterval = markerOptions.updateInterval;\n that._currentTimeMarkerUpdater();\n that._currentTimeUpdateTimer = setInterval(proxy(this._currentTimeMarkerUpdater, that), updateInterval);\n }\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-event a:has(.k-si-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-content td', function (e) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.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 filter: '.k-scheduler-content td',\n tap: function (e) {\n var x = e.x.location !== undefined ? e.x.location : e.x;\n var y = e.y.location !== undefined ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n filter: '.k-event',\n tap: function (e) {\n var eventElement = $(e.target).closest('.k-event');\n if (!eventElement.hasClass('k-event-active')) {\n that.trigger('edit', { uid: eventElement.attr(kendo.attr('uid')) });\n }\n e.preventDefault();\n }\n });\n }\n },\n _slotByPosition: function (x, y) {\n var slot;\n var content = this.content;\n var offset = content.offset();\n var group;\n var groupIndex;\n x -= offset.left;\n y -= offset.top;\n if (this._isRtl) {\n var browser = kendo.support.browser;\n if (browser.mozilla) {\n x += content[0].scrollWidth - content[0].offsetWidth;\n x += content[0].scrollLeft;\n } else if (browser.msie) {\n x -= content.scrollLeft();\n x += content[0].scrollWidth - content[0].offsetWidth;\n } else if (browser.webkit) {\n x += content[0].scrollLeft;\n }\n } else {\n x += content[0].scrollLeft;\n }\n y += content[0].scrollTop;\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n group = this.groups[groupIndex];\n slot = group.timeSlotByPosition(x, y);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n options: {\n name: 'TimelineView',\n title: 'Timeline',\n selectedDateFormat: '{0:D}',\n selectedShortDateFormat: '{0:d}',\n date: kendo.date.today(),\n startTime: kendo.date.today(),\n endTime: kendo.date.today(),\n showWorkHours: false,\n minorTickCount: 2,\n editable: true,\n workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n workWeekStart: 1,\n workWeekEnd: 5,\n majorTick: 60,\n eventHeight: 25,\n eventMinWidth: 0,\n columnWidth: 100,\n groupHeaderTemplate: '#=text#',\n majorTimeHeaderTemplate: '#=kendo.toString(date, \\'t\\')#',\n slotTemplate: ' ',\n eventTemplate: EVENT_TEMPLATE,\n dateHeaderTemplate: DATA_HEADER_TEMPLATE,\n footer: { command: 'workDay' },\n currentTimeMarker: {\n updateInterval: 10000,\n useLocalTimezone: true\n },\n messages: {\n defaultRowText: 'All events',\n showFullDay: 'Show full day',\n showWorkDay: 'Show business hours'\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit'\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.majorTimeHeaderTemplate = kendo.template(options.majorTimeHeaderTemplate, settings);\n this.dateHeaderTemplate = kendo.template(options.dateHeaderTemplate, settings);\n this.slotTemplate = kendo.template(options.slotTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n _render: function (dates) {\n var that = this;\n dates = dates || [];\n that._dates = dates;\n that._startDate = dates[0];\n that._endDate = dates[dates.length - 1 || 0];\n that._calculateSlotRanges();\n that.createLayout(that._layout(dates));\n that._content(dates);\n that._footer();\n that._setContentWidth();\n that.refreshLayout();\n that.datesHeader.on('click' + NS, '.k-nav-day', function (e) {\n var th = $(e.currentTarget).closest('th');\n var slot = that._slotByPosition(th.offset().left, that.content.offset().top);\n that.trigger('navigate', {\n view: 'timeline',\n date: slot.startDate()\n });\n });\n that.timesHeader.find('table tr:last').hide();\n that.datesHeader.find('table tr:last').hide();\n },\n _setContentWidth: function () {\n var content = this.content;\n var contentWidth = content.width();\n var contentTable = this.content.find('table');\n var columnCount = contentTable.find('tr:first').children().length;\n var minWidth = 100;\n var calculatedWidth = columnCount * this.options.columnWidth;\n if (contentWidth < calculatedWidth) {\n minWidth = Math.ceil(calculatedWidth / contentWidth * 100);\n }\n contentTable.add(this.datesHeader.find('table')).css('width', minWidth + '%');\n },\n _calculateSlotRanges: function () {\n var dates = this._dates;\n var slotStartTime = this.startTime();\n var slotEndTime = this.endTime();\n if (getMilliseconds(slotEndTime) === getMilliseconds(kendo.date.getDate(slotEndTime))) {\n slotEndTime = kendo.date.getDate(slotEndTime);\n setTime(slotEndTime, MS_PER_DAY - 1);\n }\n slotEndTime = getMilliseconds(slotEndTime);\n slotStartTime = getMilliseconds(slotStartTime);\n var slotRanges = [];\n for (var i = 0; i < dates.length; i++) {\n var rangeStart = getDate(dates[i]);\n setTime(rangeStart, slotStartTime);\n var rangeEnd = getDate(dates[i]);\n setTime(rangeEnd, slotEndTime);\n slotRanges.push({\n start: kendo.date.toUtcTime(rangeStart),\n end: kendo.date.toUtcTime(rangeEnd)\n });\n }\n this._slotRanges = slotRanges;\n },\n _forTimeRange: function (min, max, action, after) {\n min = toInvariantTime(min);\n max = toInvariantTime(max);\n var that = this, msMin = getMilliseconds(min), msMax = getMilliseconds(max), minorTickCount = that.options.minorTickCount, msMajorInterval = that.options.majorTick * MS_PER_MINUTE, msInterval = msMajorInterval / minorTickCount || 1, start = new Date(+min), startDay = start.getDate(), msStart, idx = 0, length, html = '';\n length = MS_PER_DAY / msInterval;\n if (msMin != msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n length = (msMax - msMin) / msInterval;\n }\n length = Math.round(length);\n for (; idx < length; idx++) {\n var majorTickDivider = idx % (msMajorInterval / msInterval);\n var isMajorTickColumn = majorTickDivider === 0;\n var isMiddleColumn = majorTickDivider < minorTickCount - 1;\n var isLastSlotColumn = majorTickDivider === minorTickCount - 1;\n var minorTickColumns = minorTickCount;\n if (length % minorTickCount !== 0) {\n var isLastMajorSlot = length - (idx + 1) < minorTickCount;\n if (isMajorTickColumn && isLastMajorSlot) {\n minorTickColumns = length % minorTickCount;\n }\n }\n html += action(start, isMajorTickColumn, isMiddleColumn, isLastSlotColumn, minorTickColumns);\n setTime(start, msInterval, false);\n }\n if (msMax) {\n msStart = getMilliseconds(start);\n if (startDay < start.getDate()) {\n msStart += MS_PER_DAY;\n }\n if (msStart > msMax) {\n start = new Date(+max);\n }\n }\n if (after) {\n html += after(start);\n }\n return html;\n },\n _layout: function (dates) {\n var timeColumns = [];\n var columns = [];\n var that = this;\n var rows = [{ text: that.options.messages.defaultRowText }];\n var minorTickSlots = [];\n for (var minorTickIndex = 0; minorTickIndex < that.options.minorTickCount; minorTickIndex++) {\n minorTickSlots.push({\n text: '',\n className: ''\n });\n }\n this._forTimeRange(that.startTime(), that.endTime(), function (date, majorTick, middleColumn, lastSlotColumn, minorSlotsCount) {\n var template = that.majorTimeHeaderTemplate;\n if (majorTick) {\n var timeColumn = {\n text: template({ date: date }),\n className: lastSlotColumn ? 'k-slot-cell' : '',\n columns: minorTickSlots.slice(0, minorSlotsCount)\n };\n setColspan(timeColumn);\n timeColumns.push(timeColumn);\n }\n });\n for (var idx = 0; idx < dates.length; idx++) {\n columns.push({\n text: that.dateHeaderTemplate({ date: dates[idx] }),\n className: 'k-slot-cell',\n columns: timeColumns.slice(0)\n });\n }\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n rows = that._createRowsLayout(resources, null, this.groupHeaderTemplate);\n } else {\n columns = that._createColumnsLayout(resources, columns, this.groupHeaderTemplate);\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _footer: function () {\n var options = this.options;\n if (options.footer !== false) {\n var html = '
';\n var command = options.footer.command;\n if (command && command === 'workDay') {\n html += '';\n } else {\n html += ' ';\n }\n html += '
';\n this.footer = $(html).appendTo(this.element);\n var that = this;\n this.footer.on('click' + NS, '.k-scheduler-fullday', function (e) {\n e.preventDefault();\n that.trigger('navigate', {\n view: that.name || options.name,\n date: that.startDate(),\n isWorkDay: !options.showWorkHours\n });\n });\n }\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 _isWorkDay: function (date) {\n var day = date.getDay();\n var workDays = this._workDays;\n for (var i = 0; i < workDays.length; i++) {\n if (workDays[i] === day) {\n return true;\n }\n }\n return false;\n },\n _content: function (dates) {\n var that = this;\n var options = that.options;\n var start = that.startTime();\n var end = this.endTime();\n var groupsCount = 1;\n var rowCount = 1;\n var columnCount = dates.length;\n var html = '';\n var resources = this.groupedResources;\n var slotTemplate = this.slotTemplate;\n var isVerticalGrouped = false;\n if (resources.length) {\n isVerticalGrouped = that._groupOrientation() === 'vertical';\n if (isVerticalGrouped) {\n rowCount = that._groupCount();\n } else {\n groupsCount = that._groupCount();\n }\n }\n html += '';\n var appendRow = function (date) {\n var content = '';\n var classes = '';\n var tmplDate;\n var resources = function (groupIndex) {\n return function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n };\n if (kendo.date.isToday(dates[idx])) {\n classes += 'k-today';\n }\n if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(options.workDayStart) || kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(options.workDayEnd) || !that._isWorkDay(dates[idx])) {\n classes += ' k-nonwork-hour';\n }\n content += '';\n tmplDate = kendo.date.getDate(dates[idx]);\n kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n content += slotTemplate({\n date: tmplDate,\n resources: resources(isVerticalGrouped ? rowIdx : groupIdx)\n });\n content += '';\n return content;\n };\n for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n html += '';\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n for (var idx = 0, length = columnCount; idx < length; idx++) {\n html += this._forTimeRange(start, end, appendRow);\n }\n }\n html += '';\n }\n html += '';\n this.content.find('table').append(html);\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var dates = this._dates;\n var columnCount = dates.length;\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n var view = this._addResourceView(idx);\n var start = dates[0];\n var end = dates[dates.length - 1 || 0];\n view.addTimeSlotCollection(start, kendo.date.addDays(end, 1));\n }\n this._timeSlotGroups(groupCount, columnCount);\n },\n _isVerticallyGrouped: function () {\n return this.groupedResources.length && this._groupOrientation() === 'vertical';\n },\n _isHorizontallyGrouped: function () {\n return this.groupedResources.length && this._groupOrientation() === 'horizontal';\n },\n _timeSlotGroups: function (groupCount, datesCount) {\n var interval = this._timeSlotInterval();\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var tableRows = this.content.find('tr');\n var rowCount = tableRows.length;\n tableRows.attr('role', 'row');\n if (isVerticallyGrouped) {\n rowCount = Math.floor(rowCount / groupCount);\n }\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var rowMultiplier = 0;\n var group = this.groups[groupIndex];\n var time;\n if (isVerticallyGrouped) {\n rowMultiplier = groupIndex;\n }\n var rowIndex = rowMultiplier * rowCount;\n var cellMultiplier = 0;\n if (!isVerticallyGrouped) {\n cellMultiplier = groupIndex;\n }\n var cells = tableRows[rowIndex].children;\n var cellsPerGroup = cells.length / (!isVerticallyGrouped ? groupCount : 1);\n var cellsPerDay = cellsPerGroup / datesCount;\n for (var dateIndex = 0; dateIndex < datesCount; dateIndex++) {\n var cellOffset = dateIndex * cellsPerDay + cellsPerGroup * cellMultiplier;\n time = getMilliseconds(new Date(+this.startTime()));\n for (var cellIndex = 0; cellIndex < cellsPerDay; cellIndex++) {\n var cell = cells[cellIndex + cellOffset];\n var collection = group.getTimeSlotCollection(0);\n var currentDate = this._dates[dateIndex];\n var currentTime = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n var start = currentTime + time;\n var end = start + interval;\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addTimeSlot(cell, start, end, true);\n time += interval;\n }\n }\n }\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n startTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayStart : options.startTime;\n },\n endTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayEnd : options.endTime;\n },\n _timeSlotInterval: function () {\n var options = this.options;\n return options.majorTick / options.minorTickCount * MS_PER_MINUTE;\n },\n nextDate: function () {\n return kendo.date.nextDay(this.endDate());\n },\n previousDate: function () {\n return kendo.date.previousDay(this.startDate());\n },\n calculateDateRange: function () {\n this._render([this.options.date]);\n },\n render: function (events) {\n this._headerColumnCount = 0;\n this._groups();\n this.element.find('.k-event').remove();\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();\n var eventsByResource = [];\n this._eventsByResource(events, this.groupedResources, eventsByResource);\n var eventGroups = [];\n var maxRowCount = 0;\n for (var groupIndex = 0; groupIndex < eventsByResource.length; groupIndex++) {\n var eventGroup = {\n groupIndex: groupIndex,\n maxRowCount: 0,\n events: {}\n };\n eventGroups.push(eventGroup);\n this._renderEvents(eventsByResource[groupIndex], groupIndex, eventGroup);\n if (maxRowCount < eventGroup.maxRowCount) {\n maxRowCount = eventGroup.maxRowCount;\n }\n }\n this._setRowsHeight(eventGroups, eventsByResource.length, maxRowCount);\n this._positionEvents(eventGroups, eventsByResource.length);\n this.trigger('activate');\n },\n _positionEvents: function (eventGroups, groupsCount) {\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var eventsForGroup = eventGroups[groupIndex].events;\n for (var eventUid in eventsForGroup) {\n var eventObject = eventsForGroup[eventUid];\n this._positionEvent(eventObject);\n }\n }\n },\n _setRowsHeight: function (eventGroups, groupsCount, maxRowCount) {\n var eventHeight = this.options.eventHeight + 2;\n var eventBottomOffset = this._getBottomRowOffset();\n groupsCount = this._isVerticallyGrouped() ? groupsCount : 1;\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var rowsCount = this._isVerticallyGrouped() ? eventGroups[groupIndex].maxRowCount : maxRowCount;\n rowsCount = rowsCount ? rowsCount : 1;\n var rowHeight = (eventHeight + 2) * rowsCount + eventBottomOffset;\n var timesRow = $(this.times.find('tr')[groupIndex]);\n var row = $(this.content.find('tr')[groupIndex]);\n timesRow.height(rowHeight);\n row.height(rowHeight);\n }\n this._setContentWidth();\n this.refreshLayout();\n this._refreshSlots();\n },\n _getBottomRowOffset: function () {\n var eventBottomOffset = this.options.eventHeight * 0.5;\n var isMobile = this._isMobile();\n var minOffset;\n var maxOffset;\n if (isMobile) {\n minOffset = 30;\n maxOffset = 60;\n } else {\n minOffset = 15;\n maxOffset = 30;\n }\n if (eventBottomOffset > maxOffset) {\n eventBottomOffset = maxOffset;\n } else if (eventBottomOffset < minOffset) {\n eventBottomOffset = minOffset;\n }\n return eventBottomOffset;\n },\n _positionEvent: function (eventObject) {\n var eventHeight = this.options.eventHeight + 2;\n var rect = eventObject.slotRange.innerRect(eventObject.start, eventObject.end, false);\n var left = this._adjustLeftPosition(rect.left);\n var width = rect.right - rect.left - 2;\n if (width < 0) {\n width = 0;\n }\n if (width < this.options.eventMinWidth) {\n var slotsCollection = eventObject.slotRange.collection;\n var lastSlot = slotsCollection._slots[slotsCollection._slots.length - 1];\n var offsetRight = lastSlot.offsetLeft + lastSlot.offsetWidth;\n width = this.options.eventMinWidth;\n if (offsetRight < left + width) {\n width = offsetRight - rect.left - 2;\n }\n }\n eventObject.element.css({\n top: eventObject.slotRange.start.offsetTop + eventObject.rowIndex * (eventHeight + 2) + 'px',\n left: left,\n width: width\n });\n },\n _refreshSlots: function () {\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n this.groups[groupIndex].refresh();\n }\n },\n _eventsByResource: function (events, resources, result) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var eventsFilteredByResource = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n this._eventsByResource(eventsFilteredByResource, resources.slice(1), result);\n } else {\n result.push(eventsFilteredByResource);\n }\n }\n } else {\n result.push(events);\n }\n },\n _isInDateSlot: function (event) {\n var startTime = event.start;\n var endTime = event.end;\n var rangeStart = getDate(this._startDate);\n var rangeEnd = kendo.date.addDays(getDate(this._endDate), 1);\n if (startTime < rangeEnd && rangeStart <= endTime) {\n return true;\n }\n return false;\n },\n _isInTimeSlot: function (event) {\n var startTime = event._startTime || kendo.date.toUtcTime(event.start);\n var endTime = event._endTime || kendo.date.toUtcTime(event.end);\n var slotRanges = this._slotRanges;\n if (startTime === endTime) {\n endTime = endTime + 1;\n }\n for (var slotIndex = 0; slotIndex < slotRanges.length; slotIndex++) {\n if (startTime < slotRanges[slotIndex].end && slotRanges[slotIndex].start < endTime) {\n return true;\n }\n }\n return false;\n },\n _adjustEvent: function (event) {\n var start = event.start;\n var end = event.end;\n var eventStartTime = event._time('start');\n var eventEndTime = event._time('end');\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n var adjustedStartDate = null;\n var adjustedEndDate = null;\n var occurrence;\n var head = false;\n var tail = false;\n if (event.isAllDay) {\n adjustedStartDate = getDate(start);\n if (startTime > eventStartTime) {\n setTime(adjustedStartDate, startTime);\n tail = true;\n }\n adjustedEndDate = getDate(end);\n if (endTime === getMilliseconds(getDate(this.endTime()))) {\n adjustedEndDate = kendo.date.addDays(adjustedEndDate, 1);\n } else {\n setTime(adjustedEndDate, endTime);\n head = true;\n }\n } else {\n endTime = endTime === 0 ? MS_PER_DAY : endTime;\n if (startTime > eventStartTime) {\n adjustedStartDate = getDate(start);\n setTime(adjustedStartDate, startTime);\n tail = true;\n } else if (endTime < eventStartTime) {\n adjustedStartDate = getDate(start);\n adjustedStartDate = kendo.date.addDays(adjustedStartDate, 1);\n setTime(adjustedStartDate, startTime);\n tail = true;\n }\n if (endTime < eventEndTime) {\n adjustedEndDate = getDate(end);\n setTime(adjustedEndDate, endTime);\n head = true;\n } else if (startTime > eventEndTime) {\n adjustedEndDate = getDate(end);\n adjustedEndDate = kendo.date.addDays(adjustedEndDate, -1);\n setTime(adjustedEndDate, endTime);\n head = true;\n }\n }\n occurrence = event.clone({\n start: adjustedStartDate ? adjustedStartDate : start,\n end: adjustedEndDate ? adjustedEndDate : end,\n _startTime: adjustedStartDate ? kendo.date.toUtcTime(adjustedStartDate) : event._startTime,\n _endTime: adjustedEndDate ? kendo.date.toUtcTime(adjustedEndDate) : event._endTime,\n isAllDay: false\n });\n return {\n occurrence: occurrence,\n head: head,\n tail: tail\n };\n },\n _renderEvents: function (events, groupIndex, eventGroup) {\n var event;\n var idx;\n var length;\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n if (this._isInDateSlot(event)) {\n var isMultiDayEvent = event.isAllDay || event.end.getTime() - event.start.getTime() >= MS_PER_DAY;\n var container = this.content;\n if (isMultiDayEvent || this._isInTimeSlot(event)) {\n var adjustedEvent = this._adjustEvent(event);\n var group = this.groups[groupIndex];\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n var ranges = group.slotRanges(adjustedEvent.occurrence, false);\n var range = ranges[0];\n var element;\n if (this._isInTimeSlot(adjustedEvent.occurrence)) {\n element = this._createEventElement(adjustedEvent.occurrence, event, range.head || adjustedEvent.head, range.tail || adjustedEvent.tail);\n element.appendTo(container).css({\n top: 0,\n height: this.options.eventHeight\n });\n var eventObject = {\n start: adjustedEvent.occurrence._startTime || adjustedEvent.occurrence.start,\n end: adjustedEvent.occurrence._endTime || adjustedEvent.occurrence.end,\n element: element,\n uid: event.uid,\n slotRange: range,\n rowIndex: 0,\n offsetTop: 0\n };\n eventGroup.events[event.uid] = eventObject;\n this.addContinuousEvent(group, range, element, event.isAllDay);\n this._arrangeRows(eventObject, range, eventGroup);\n }\n }\n }\n }\n },\n addContinuousEvent: function (group, range, element, isAllDay) {\n var events = group._continuousEvents;\n events.push({\n element: element,\n isAllDay: isAllDay,\n uid: element.attr(kendo.attr('uid')),\n start: range.start,\n end: range.end\n });\n },\n _createEventElement: function (occurrence, event, head, tail) {\n var template = this.eventTemplate;\n var editable = this.options.editable;\n var isMobile = this._isMobile();\n var showDelete = editable && editable.destroy !== false && !isMobile;\n var resizable = editable && editable.resize !== false;\n var eventStartTime = event._time('start');\n var eventEndTime = event._time('end');\n var eventStartDate = event.start;\n var eventEndDate = event.end;\n var resources = this.eventResources(event);\n if (event._startTime && eventStartTime !== kendo.date.getMilliseconds(event.start)) {\n eventStartDate = new Date(eventStartTime);\n eventStartDate = kendo.timezone.apply(eventStartDate, 'Etc/UTC');\n }\n if (event._endTime && eventEndTime !== kendo.date.getMilliseconds(event.end)) {\n eventEndDate = new Date(eventEndTime);\n eventEndDate = kendo.timezone.apply(eventEndDate, 'Etc/UTC');\n }\n var data = extend({}, {\n ns: kendo.ns,\n resizable: resizable,\n showDelete: showDelete,\n head: head,\n tail: tail,\n singleDay: this._dates.length == 1,\n resources: resources,\n inverseColor: resources && resources[0] ? this._shouldInverseResourceColor(resources[0]) : false\n }, event, {\n start: eventStartDate,\n end: eventEndDate\n });\n var element = $(template(data));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: data }]\n };\n });\n return element;\n },\n _arrangeRows: function (eventObject, slotRange, eventGroup) {\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var rect = eventObject.slotRange.innerRect(eventObject.start, eventObject.end, false);\n var rectRight = rect.right + this.options.eventMinWidth;\n var events = collidingEvents(slotRange.events(), rect.left, rectRight);\n slotRange.addEvent({\n slotIndex: startIndex,\n start: startIndex,\n end: endIndex,\n rectLeft: rect.left,\n rectRight: rectRight,\n element: eventObject.element,\n uid: eventObject.uid\n });\n events.push({\n start: startIndex,\n end: endIndex,\n uid: eventObject.uid\n });\n var rows = SchedulerView.createRows(events);\n if (eventGroup.maxRowCount < rows.length) {\n eventGroup.maxRowCount = rows.length;\n }\n for (var idx = 0, length = rows.length; idx < length; idx++) {\n var rowEvents = rows[idx].events;\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n eventGroup.events[rowEvents[j].uid].rowIndex = idx;\n }\n }\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n return this._rowCountForLevel(resources.length - 1);\n } else {\n return this._columnCountForLevel(resources.length - 1);\n }\n }\n return 1;\n },\n _updateEventForSelection: function (event) {\n var adjustedEvent = this._adjustEvent(event.clone());\n return adjustedEvent.occurrence;\n },\n _eventOptionsForMove: function (event) {\n if (event.isAllDay) {\n return { isAllDay: false };\n }\n return {};\n },\n _updateEventForResize: function (event) {\n if (event.isAllDay) {\n event.set('isAllDay', false);\n }\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var group = this.groups[groupIndex];\n var clonedEvent = event.clone({\n start: event.start,\n end: event.end\n });\n var eventDuraton = clonedEvent.duration();\n clonedEvent.start = new Date(clonedEvent.start.getTime() + distance);\n clonedEvent.end = new Date(+clonedEvent.start + eventDuraton);\n var adjustedEvent = this._adjustEvent(clonedEvent);\n var ranges = group.slotRanges(adjustedEvent.occurrence, false);\n this._removeMoveHint();\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var startSlot = range.start;\n var hint = this._createEventElement(adjustedEvent.occurrence, adjustedEvent.occurrence, false, false);\n hint.addClass('k-event-drag-hint');\n var rect = range.innerRect(adjustedEvent.occurrence.start, adjustedEvent.occurrence.end, this.options.snap);\n var width = rect.right - rect.left - 2;\n if (width < 0) {\n width = 0;\n }\n var left = this._adjustLeftPosition(rect.left);\n var css = {\n left: left,\n top: startSlot.offsetTop,\n height: startSlot.offsetHeight - 2,\n width: width\n };\n hint.css(css);\n this._moveHint = this._moveHint.add(hint);\n }\n var content = this.content;\n this._moveHint.appendTo(content);\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, false, false);\n this._removeResizeHint();\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var start = range.startSlot();\n var startRect = range.innerRect(startTime, endTime, false);\n startRect.top = start.offsetTop;\n var width = startRect.right - startRect.left;\n var height = start.offsetHeight;\n var left = this._adjustLeftPosition(startRect.left);\n var hint = SchedulerView.fn._createResizeHint.call(this, left, startRect.top, width, height);\n this._resizeHint = this._resizeHint.add(hint);\n }\n var format = 't';\n var container = this.content;\n this._resizeHint.appendTo(container);\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), format));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), format));\n },\n selectionByElement: function (cell) {\n var offset = cell.offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n if (multiple && !vertical) {\n if (startSlot.index === endSlot.index && startSlot.collectionIndex === endSlot.collectionIndex) {\n selection.backward = reverse;\n }\n }\n },\n _changeGroup: function (selection, previous) {\n var method = previous ? 'prevGroupSlot' : 'nextGroupSlot';\n var slot = this[method](selection.start, selection.groupIndex, false);\n if (slot) {\n selection.groupIndex += previous ? -1 : 1;\n }\n return slot;\n },\n prevGroupSlot: function (date, groupIndex, isDay) {\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n if (groupIndex <= 0) {\n return;\n }\n if (this._isVerticallyGrouped()) {\n return slot;\n } else {\n var collection = group._collection(0, isDay);\n return collection.last();\n }\n },\n nextGroupSlot: function (date, groupIndex, isDay) {\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n if (groupIndex >= this.groups.length - 1) {\n return;\n }\n if (this._isVerticallyGrouped()) {\n return slot;\n } else {\n var collection = group._collection(0, isDay);\n return collection.first();\n }\n },\n _verticalSlots: function (selection, ranges, multiple, reverse) {\n var method = reverse ? 'leftSlot' : 'rightSlot';\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var group = this.groups[selection.groupIndex];\n startSlot = group[method](startSlot);\n endSlot = group[method](endSlot);\n if (!multiple && this._isVerticallyGrouped() && (!startSlot || !endSlot)) {\n startSlot = endSlot = this._changeGroup(selection, reverse);\n }\n return {\n startSlot: startSlot,\n endSlot: endSlot\n };\n },\n _horizontalSlots: function (selection, ranges, multiple, reverse) {\n var method = reverse ? 'upSlot' : 'downSlot';\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var group = this.groups[selection.groupIndex];\n startSlot = group[method](startSlot);\n endSlot = group[method](endSlot);\n if (!multiple && this._isHorizontallyGrouped() && (!startSlot || !endSlot)) {\n startSlot = endSlot = this._changeGroup(selection, reverse);\n }\n return {\n startSlot: startSlot,\n endSlot: endSlot\n };\n },\n _changeViewPeriod: function (selection, reverse) {\n var date = reverse ? this.previousDate() : this.nextDate();\n var start = selection.start;\n var end = selection.end;\n selection.start = new Date(date);\n selection.end = new Date(date);\n if (this._isHorizontallyGrouped()) {\n selection.groupIndex = reverse ? this.groups.length - 1 : 0;\n }\n var duration = end - start;\n if (reverse) {\n end = getMilliseconds(this.endTime());\n end = end === 0 ? MS_PER_DAY : end;\n setTime(selection.start, end - duration);\n setTime(selection.end, end);\n } else {\n start = getMilliseconds(this.startTime());\n setTime(selection.start, start);\n setTime(selection.end, start + duration);\n }\n selection.events = [];\n return true;\n },\n move: function (selection, key, shift) {\n var handled = false;\n var group = this.groups[selection.groupIndex];\n var keys = kendo.keys;\n var ranges = group.ranges(selection.start, selection.end, false, false);\n var startSlot, endSlot, reverse, slots;\n if (key === keys.DOWN || key === keys.UP) {\n handled = true;\n reverse = key === keys.UP;\n this._updateDirection(selection, ranges, shift, reverse, true);\n slots = this._verticalSlots(selection, ranges, shift, reverse);\n } else if (key === keys.LEFT || key === keys.RIGHT) {\n handled = true;\n reverse = key === keys.LEFT;\n this._updateDirection(selection, ranges, shift, reverse, false);\n slots = this._horizontalSlots(selection, ranges, shift, reverse);\n if ((!slots.startSlot || !slots.endSlot) && !shift && this._changeViewPeriod(selection, reverse, false)) {\n return handled;\n }\n }\n if (handled) {\n startSlot = slots.startSlot;\n endSlot = slots.endSlot;\n if (shift) {\n var backward = selection.backward;\n if (backward && startSlot) {\n selection.start = startSlot.startDate();\n } else if (!backward && endSlot) {\n selection.end = endSlot.endDate();\n }\n } else if (startSlot && endSlot) {\n selection.start = startSlot.startDate();\n selection.end = endSlot.endDate();\n }\n selection.events = [];\n }\n return handled;\n },\n destroy: function () {\n var that = this;\n if (that.element) {\n that.element.off(NS);\n }\n if (that.footer) {\n that.footer.remove();\n }\n if (that._currentTimeUpdateTimer) {\n clearInterval(that._currentTimeUpdateTimer);\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && that.options.editable) {\n if (that.options.editable.create !== false) {\n that._addUserEvents.destroy();\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents.destroy();\n }\n }\n }\n });\n extend(true, ui, {\n TimelineView: TimelineView,\n TimelineWeekView: TimelineView.extend({\n options: {\n name: 'TimelineWeekView',\n title: 'Timeline Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n majorTick: 120\n },\n name: 'timelineWeek',\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1), idx, length, dates = [];\n for (idx = 0, length = 7; idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n TimelineWorkWeekView: TimelineView.extend({\n options: {\n name: 'TimelineWorkWeekView',\n title: 'Timeline Work Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n majorTick: 120\n },\n name: 'timelineWorkWeek',\n nextDate: function () {\n return kendo.date.dayOfWeek(kendo.date.nextDay(this.endDate()), this.options.workWeekStart, 1);\n },\n previousDate: function () {\n return kendo.date.previousDay(this.startDate());\n },\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.dayOfWeek(selectedDate, this.options.workWeekStart, -1), end = kendo.date.dayOfWeek(start, this.options.workWeekEnd, 1), dates = [];\n while (start <= end) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n TimelineMonthView: TimelineView.extend({\n options: {\n name: 'TimelineMonthView',\n title: 'Timeline Month',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n workDayStart: new Date(1980, 1, 1, 0, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 23, 59, 59),\n footer: false,\n majorTick: 1440,\n minorTickCount: 1\n },\n name: 'timelineMonth',\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.firstDayOfMonth(selectedDate), end = kendo.date.lastDayOfMonth(selectedDate), idx, length, dates = [];\n for (idx = 0, length = end.getDate(); idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n })\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}