{"version":3,"sources":["kendo.scheduler.yearview.js"],"names":["f","define","$","undefined","kendo","window","ui","SchedulerView","extend","proxy","template","firstDayOfYear","date","firstDayOfMonth","lastDayOfMonth","NAVIGATE","KEYDOWN","ACTIVATE","SHOW","HIDE","CLICK","DOT","NS","YearViewStyles","layout","body","tooltip","indicator","event","hidden","TOOLTIP_TEMPLATE","YearView","init","element","options","that","this","fn","call","_yearRange","_templates","_layout","_initCalendar","_initTooltip","title","name","months","startDate","messages","noData","selectedDateFormat","selectedShortDateFormat","selectedMobileDateFormat","tooltipTemplate","events","tempEnd","_startDate","setFullYear","getFullYear","Date","setMonth","getMonth","_endDate","settings","Template","templateSettings","styles","content","addClass","append","calendarElement","calendar","MultiViewCalendar","views","value","showViewHeader","footer","selectable","_disableCalendarSelection","header","toggleClass","on","_calendarCellClick","_calendarKeydown","bind","_calendarNavigate","ev","target","first","preventDefault","stopPropagation","_displayTooltip","keys","keyCode","ENTER","SPACEBAR","sender","isPrevious","_firstViewValue","navigationDate","previousDate","nextDate","trigger","view","_focusCellOnNavigate","focusDate","find","getKendoMultiViewCalendar","lastDateInRange","_focusCell","_cellByDate","off","_move","attr","tooltipElement","_buildTooltipTemplate","Tooltip","filter","showOn","position","width","_initTooltipPopup","_tooltipShow","_tooltipHide","_initPopup","popup","_tooltipTitleClick","_tooltipKeydown","parseDate","current","data","eventsByDate","dateData","toString","items","map","resources","eventResources","_inverseTooltipEventsColor","each","_inverseEventColor","refresh","focus","_navigateToDayView","firstFocusable","lastFocusable","shiftKey","is","TAB","last","dayViewEnabled","grep","isPlainObject","type","length","removeClass","setTimeout","show","_renderEventIndicators","cell","remove","forEach","_currentView","toDateString","querySelector","appendTo","_groupEventsByDate","eventsFormatted","formattedDate","start","Query","sort","field","dir","group","toArray","end","nextYear","previousYear","endDate","moveToEvent","constrainSelection","inRange","select","selection","clearSelection","selectionByElement","index","_index","toDateObject","isAllDay","uid","candidate","_current","move","key","handled","DOWN","UP","LEFT","RIGHT","render","_cachedEvents","destroy","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.scheduler.yearview.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.yearview', [\n 'kendo.scheduler.view',\n 'kendo.multiviewcalendar',\n 'kendo.tooltip'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.yearview',\n name: 'Scheduler Year View',\n category: 'web',\n description: 'The Scheduler Year View',\n depends: [\n 'scheduler.view',\n 'multiviewcalendar',\n 'tooltip'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, SchedulerView = ui.SchedulerView, extend = $.extend, proxy = $.proxy, template = kendo.template, firstDayOfYear = kendo.date.firstDayOfYear, firstDayOfMonth = kendo.date.firstDayOfMonth, lastDayOfMonth = kendo.date.lastDayOfMonth, NAVIGATE = 'navigate', KEYDOWN = 'keydown', ACTIVATE = 'activate', SHOW = 'show', HIDE = 'hide', CLICK = 'click', DOT = '.', NS = '.kendoYearView';\n var YearViewStyles = {\n layout: 'k-scheduler-layout k-scheduler-layout-flex k-scheduler-yearview',\n body: 'k-scheduler-body',\n tooltip: 'k-scheduler-tooltip',\n indicator: 'k-day-indicator',\n event: 'k-tooltip-event',\n hidden: 'k-hidden'\n };\n var TOOLTIP_TEMPLATE = template('
' + '
#:kendo.format(\\'{0:MMM}\\', date)#
' + '' + '
' + '#if(events.length){#' + '
' + '
' + '#for(var i = 0; i < events.length; i+=1){#' + '#var event = events[i]#' + '
' + '
#:event.title#
' + '' + '#:kendo.format(\\'{0:t}\\', event.start)#' + '
' + '#}#' + '
' + '
' + '#} else {#' + '
#:messages.noData#
' + '#}#');\n var YearView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that._yearRange();\n that._templates();\n that._layout();\n that._initCalendar();\n that._initTooltip();\n },\n options: {\n title: 'Year',\n name: 'year',\n months: 12,\n startDate: null,\n messages: { noData: 'No events on this date.' },\n selectedDateFormat: '{0:yyyy}',\n selectedShortDateFormat: '{0:yyyy}',\n selectedMobileDateFormat: '{0:yyyy}',\n tooltipTemplate: TOOLTIP_TEMPLATE\n },\n name: 'year',\n events: [NAVIGATE],\n _yearRange: function () {\n var that = this, options = that.options, tempEnd;\n that._startDate = options.startDate ? firstDayOfMonth(options.startDate) : firstDayOfYear(options.date);\n that._startDate.setFullYear(options.date.getFullYear());\n tempEnd = new Date(that._startDate);\n tempEnd.setMonth(tempEnd.getMonth() + options.months);\n that._endDate = tempEnd;\n },\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.tooltipTemplate = kendo.template(options.tooltipTemplate, settings);\n },\n _layout: function () {\n var that = this, styles = YearViewStyles;\n that.content = $('
').addClass(styles.layout);\n that.element.append(that.content);\n that.body = $('
').addClass(styles.body);\n that.content.append(that.body);\n },\n _initCalendar: function () {\n var that = this, options = that.options, calendarElement = $('
');\n that.body.append(calendarElement);\n that.calendar = new ui.MultiViewCalendar(calendarElement, {\n views: options.months,\n value: that.startDate(),\n showViewHeader: true,\n footer: false\n });\n if (!options.selectable) {\n that._disableCalendarSelection();\n }\n that.calendar.value(null);\n that.calendar.header.toggleClass(YearViewStyles.hidden);\n that.calendar.element.on(CLICK + NS, 'td[role=\\'gridcell\\']', proxy(that._calendarCellClick, that));\n that.calendar.element.on(KEYDOWN + NS, 'table.k-content', proxy(that._calendarKeydown, that));\n that.calendar.bind(NAVIGATE, proxy(that._calendarNavigate, that));\n },\n _calendarCellClick: function (ev) {\n var that = this, target = that.calendar.selectable.value().first();\n ev.preventDefault();\n ev.stopPropagation();\n that._displayTooltip(target);\n },\n _calendarKeydown: function (ev) {\n var that = this, keys = kendo.keys, keyCode = ev.keyCode;\n if (keyCode == keys.ENTER || keyCode == keys.SPACEBAR) {\n ev.preventDefault();\n that._displayTooltip(that.calendar.selectable.value().first());\n }\n },\n _calendarNavigate: function (ev) {\n var that = this, calendar = ev.sender, isPrevious = calendar._firstViewValue < that.startDate(), navigationDate = isPrevious ? that.previousDate() : that.nextDate();\n that.trigger(NAVIGATE, {\n view: 'year',\n date: navigationDate\n });\n that._focusCellOnNavigate();\n },\n _focusCellOnNavigate: function () {\n var that = this, calendar = that.calendar || that.element.find('.k-calendar').getKendoMultiViewCalendar(), isPrevious, focusDate;\n if (!calendar) {\n return;\n }\n isPrevious = calendar._firstViewValue < that.startDate();\n focusDate = isPrevious ? that.lastDateInRange() : that.nextDate();\n if (that.options.selectable) {\n calendar.value(focusDate);\n }\n calendar._focusCell(calendar._cellByDate(focusDate), true);\n },\n _disableCalendarSelection: function () {\n var that = this;\n if (!that.calendar) {\n return;\n }\n that.calendar.value(null);\n that.calendar.element.off(KEYDOWN, that.calendar._move);\n that.calendar.element.find('table').attr('tabindex', '-1');\n },\n _initTooltip: function () {\n var that = this, tooltipElement = that.content, tooltipTemplate = that._buildTooltipTemplate.bind(that);\n that.tooltip = new ui.Tooltip(tooltipElement, {\n filter: '.k-calendar td[role=\\'gridcell\\']',\n showOn: CLICK,\n position: 'right',\n content: tooltipTemplate,\n width: 220\n });\n that._initTooltipPopup();\n that.tooltip.bind(SHOW, proxy(that._tooltipShow, that));\n that.tooltip.bind(HIDE, proxy(that._tooltipHide, that));\n },\n _initTooltipPopup: function () {\n var that = this, tooltip = that.tooltip;\n if (!that.tooltip) {\n return;\n }\n tooltip._initPopup();\n tooltip.popup.element.addClass(YearViewStyles.tooltip);\n tooltip.popup.element.on(CLICK + NS, '.k-tooltip-title > .k-day', proxy(that._tooltipTitleClick, that));\n tooltip.popup.element.on(KEYDOWN + NS, that, proxy(that._tooltipKeydown, that));\n },\n _buildTooltipTemplate: function () {\n var that = this, date = kendo.parseDate(that.calendar.current()), data = that.eventsByDate || [];\n data = data.filter(function (dateData) {\n return kendo.toString(new Date(dateData.value), 'd') == kendo.toString(date, 'd');\n });\n if (data && data[0]) {\n data[0].items.map(function (event) {\n event.resources = that.eventResources(event) || [];\n });\n }\n return that.tooltipTemplate({\n date: date,\n events: data[0] ? data[0].items : [],\n messages: that.options.messages\n });\n },\n _inverseTooltipEventsColor: function () {\n var that = this;\n $.each(that.tooltip.popup.element.find(DOT + YearViewStyles.event), function () {\n that._inverseEventColor($(this));\n });\n },\n _tooltipShow: function (ev) {\n var that = this, tooltip = ev.sender;\n tooltip.refresh();\n that._inverseTooltipEventsColor();\n tooltip.popup.element.find(':kendoFocusable').first().focus();\n },\n _tooltipHide: function () {\n if (!this.calendar) {\n return;\n }\n this.calendar._focusCell(this.calendar.selectable.value().first(), true);\n },\n _tooltipTitleClick: function () {\n this._navigateToDayView();\n },\n _tooltipKeydown: function (ev) {\n var that = this, element = that.tooltip.popup.element, target = $(ev.target), keys = kendo.keys, keyCode = ev.keyCode, shiftKey = ev.shiftKey;\n if (target.is('.k-day') && keyCode == keys.ENTER || keyCode == keys.SPACEBAR) {\n ev.preventDefault();\n that._navigateToDayView();\n }\n if (keyCode == keys.TAB) {\n var firstFocusable = element.find(':kendoFocusable').first();\n var lastFocusable = element.find(':kendoFocusable').last();\n if (shiftKey && target.is(firstFocusable)) {\n lastFocusable.focus();\n ev.preventDefault();\n } else if (target.is(lastFocusable)) {\n firstFocusable.focus();\n ev.preventDefault();\n }\n }\n },\n _navigateToDayView: function () {\n var dayViewEnabled = $.grep(this.options.views, function (view) {\n return $.isPlainObject(view) && view.type == 'kendo.ui.DayView' || view === 'day';\n }).length;\n if (dayViewEnabled) {\n this.trigger(NAVIGATE, {\n view: 'day',\n date: this.calendar.current()\n });\n }\n },\n _displayTooltip: function (target) {\n var that = this;\n if (!target.length) {\n return;\n }\n if (!that.options.selectable) {\n target.removeClass('k-state-selected');\n }\n setTimeout(function () {\n that.tooltip.show(target);\n }, 50);\n },\n _renderEventIndicators: function () {\n var that = this, calendar = that.calendar, current, cell;\n calendar.element.find('.' + YearViewStyles.indicator).remove();\n that.eventsByDate.forEach(function (date) {\n current = calendar._currentView.toDateString(new Date(date.value));\n cell = calendar.element[0].querySelector('[data-value=\\'' + current + '\\']');\n if (date.items.length) {\n $('').addClass(YearViewStyles.indicator).appendTo(cell);\n }\n });\n },\n _groupEventsByDate: function (events) {\n var eventsByDate = [], eventsFormatted;\n if (!events.length) {\n return [];\n }\n eventsFormatted = events.map(function (event) {\n event.formattedDate = event.start.toDateString();\n return event;\n });\n eventsByDate = new kendo.data.Query(eventsFormatted).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).group({ field: 'formattedDate' }).toArray();\n return eventsByDate;\n },\n lastDateInRange: function () {\n var end = new Date(this.previousDate());\n end.setMonth(end.getMonth() - 1 + this.options.months);\n return lastDayOfMonth(end);\n },\n nextDate: function () {\n return kendo.date.nextYear(this._startDate);\n },\n previousDate: function () {\n return kendo.date.previousYear(this._startDate);\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n moveToEvent: function () {\n return false;\n },\n constrainSelection: function () {\n return false;\n },\n inRange: function () {\n return true;\n },\n select: function (selection) {\n this.clearSelection();\n if (selection.start >= this.startDate() && selection.start < this.endDate()) {\n this.calendar.value(selection.start);\n } else {\n this.calendar.value(this.calendar._firstViewValue);\n selection.start = selection.end = this.calendar.value();\n }\n this.current(this.calendar.selectable.value()[0]);\n },\n selectionByElement: function (cell) {\n if (!cell.length) {\n return;\n }\n cell = $(cell);\n return {\n index: this.calendar._index,\n start: kendo.calendar.toDateObject(cell),\n end: kendo.calendar.toDateObject(cell),\n isAllDay: false,\n uid: 0\n };\n },\n current: function (candidate) {\n if (candidate !== undefined) {\n this._current = candidate;\n } else {\n return this._current;\n }\n },\n move: function (selection, key) {\n var handled = false, selectable = this.options.selectable;\n if (!selectable || !selection) {\n return;\n }\n if (key === kendo.keys.DOWN || key === kendo.keys.UP || key === kendo.keys.LEFT || key === kendo.keys.RIGHT) {\n handled = true;\n this.calendar.focus();\n }\n if (key === kendo.keys.ENTER || key === kendo.keys.SPACEBAR) {\n handled = true;\n }\n if (handled) {\n selection.start = selection.end = this.calendar.value();\n }\n return handled;\n },\n render: function (events) {\n var that = this;\n that._cachedEvents = events;\n that.eventsByDate = that._groupEventsByDate(events) || [];\n that._renderEventIndicators();\n that.trigger(ACTIVATE);\n },\n destroy: function () {\n var that = this;\n if (that.tooltip) {\n that.tooltip.destroy();\n that.tooltip = null;\n }\n if (that.calendar) {\n that.calendar.destroy();\n that.calendar = null;\n }\n if (that.element) {\n that.content.remove();\n that.element.off(NS);\n }\n SchedulerView.fn.destroy.call(this);\n }\n });\n extend(true, ui, { YearView: YearView });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}