{"version":3,"sources":["kendo.taskboard.js"],"names":["f","define","$","undefined","kendo","window","extend","proxy","ToolBar","ui","Item","toolbar","CLICK","TOGGLE","CLOSE","ACTION","CHANGE","NS","TaskBoardToolbarStyles","searchbox","searchInputPrefix","searchIcon","searchInput","TaskBoardToolBar","init","element","options","that","this","_extendOptions","fn","call","_attachEvents","events","concat","defaultTools","addColumn","type","text","name","command","icon","rules","spacer","search","overflow","bind","_click","_change","tools","items","Object","keys","_extendToolsOptions","messages","length","map","tool","toolOptions","isBuiltInTool","isPlainObject","attr","_validateRules","deepExtend","id","guid","attributes","aria-label","title","buttons","_mapButtonGroups","menuButtons","_mapMenuButtons","hidden","button","i","states","split","ev","target","action","value","val","isToolEnabled","toolName","found","args","trigger","destroy","SearchTool","styles","input","iconWrapper","renderIcon","addUidAttr","addIdAttr","addOverflowAttr","placeholder","append","_bindEvents","addClass","_inputHandler","_input","on","off","registerComponent","taskboard","jQuery","amd","a1","a2","a3","preventDefault","Observable","DOT","BLUR","MOVE","MOVE_START","MOVE_END","TaskBoardColumnStyles","header","headerText","ellipsis","actions","cardsContainer","columnCards","actionButton","card","cardTitle","sortableSuffix","textbox","newColumn","editColumn","disabled","dragPlaceholder","dragHint","ignoreDrag","grabbingCursor","TaskBoardColumn","dataItem","_dataItem","sortableUniqueClass","sortableIdentifier","_render","isReorderable","_initSortable","empty","container","addCard","cardHtml","edit","_renderEditHeader","getDataItem","cards","children","template","editTemplate","builtinButtons","deleteColumn","defaultButtons","headerLabelId","uid","css","width","appendTo","_renderHeader","format","dataTextField","_buildActionsHtml","html","setTimeout","find","focus","spriteCssClass","_actionClick","closest","_textboxBlur","keyCode","ENTER","isRtl","dirClass","sortable","Sortable","ignore","connectWith","filter","hint","clone","offsetWidth","height","offsetHeight","move","_move","start","_start","end","_end","change","draggable","userEvents","unbind","_select","ignoreDragSelectors","event","is","columnElement","sender","parents","newIndex","oldIndex","TaskBoardNewColumn","Column","NewColumn","TaskBoardCardStyles","hbox","link","cardMenuButton","flatButton","body","actionsIcon","moveCursor","categoryBorder","headerActions","TaskBoardCard","resources","headerTemplate","bodyTemplate","cardMenuButtonTemplate","categoryColor","_buildTemplate","cardMenu","_resources","borderDir","isDisabled","toggleClass","dataCategoryField","color","get","selectable","isSelectable","key","resource","field","cardResources","data","resourceIndex","cardResource","dataIndex","resourceColor","result","getter","multiple","dataSource","view","valuePrimitive","dataValueField","dataColorField","push","dataTitleField","dataDescriptionField","Card","ContextMenu","TaskBoardCardMenu","_overrideTemplates","_extendItems","_onSelect","_onOpen","_focus","templates","sprite","defaultItems","editCard","deleteCard","item","_append","_extendItem","menu","isEmptyObject","CardMenu","Class","TaskBoardCommand","_confirm","content","okText","cancel","confirm","fakePromise","taskboardOptions","editable","confirmation","Deferred","resolve","kendoConfirm","buttonLayout","open","AddColumnCommand","exec","column","columns","each","index","enableByColumn","EditColumnCommand","DeleteColumnCommand","columnDS","columnsDataSource","deleteColumnConfirm","done","cancelChanges","remove","sync","SaveColumnCommand","columnSettings","set","CancelEditColumnCommand","MoveFocusCommand","columnIndex","cardElement","currentColumnIndex","direction","Math","max","min","_getColumnByElement","eq","_moveFromCardFocus","focusCard","currentIndex","seekFocusableCard","_getFocusableCard","lastIndex","focusable","TaskBoardBaseCardCommand","_updateOrder","nextCard","taskBoardOptions","dataOrderField","currentCard","cardIndex","idx","prevCard","SelectCardCommand","SaveChangesCommand","receivedStatus","dataStatusField","targetColumn","_getColumn","activeElm","document","activeElement","pane","form","validate","then","DeleteCardCommand","deleteCardConfirm","MoveCardCommand","EditCardCommand","_openPane","AddCardCommand","OpenPaneCommand","ClosePaneCommand","_closePane","SearchCommand","filters","searchOptions","operator","fields","_buildFilters","logic","Command","commands","Form","TaskBoardPaneStyles","preview","footerActions","footerActionButtons","footerButton","primary","TaskBoardPane","_commandClick","buttonTemplate","contentTemplate","delete","saveChanges","create","buttonsContainer","_renderContent","_buildButtonsHtml","_buildHeaderTemplate","TaskBoardPreviewPane","previewPane","_contentTemplate","TaskBoardEditPane","formSettings","label","buttonsTemplate","formLabelId","formData","TaskBoardCreatePane","columnStatusField","firstColumn","at","status","add","createNewCard","Pane","panes","Preview","Edit","Create","KEYDOWN","Keyboard","register","registerShortcut","selector","shortcut","isNaN","toUpperCase","charCodeAt","ctrlKey","shiftKey","altKey","handler","_handler","shortcuts","_getAction","_trigger","_compareShortcut","_getShortcutModifier","mac","navigator","platform","indexOf","metaKey","KeyboardManager","TaskBoardStyles","wrapper","columnsContainer","selected","Widget","DataSource","isArray","GENERIC","SELECT","EXECUTE","ERROR","DATABINDING","DATABOUND","EDIT_CARD","SAVE_CARD","DELETE_CARD","EDIT_COLUMN","SAVE_COLUMN","DELETE_COLUMN","COLUMNSDATABINDING","COLUMNSDATABOUND","TaskBoard","_sortableIdentifier","_wrapper","_columnsDataSource","_initResources","_dataSource","_initToolbar","_initCardMenu","_initKeyboard","autoBind","load","notify","reorderable","previewCard","close","description","_columns","merge","itemsByStatus","itemsByColumn","columnElm","fetchPromises","_progress","fetch","when","apply","read","cardElm","getByUid","columnDataItem","columnByStatus","select","toggle","removeClass","_extendExecArgs","saveCard","model","_buildStates","_createNewModel","insert","before","executeCommand","saveColumn","keyboardManager","enable","readOnly","readOnlyByColumn","setDataSource","setColumnsDataSource","_renderCards","focusableElement","after","parseInt","ESC","headerElm","contentElm","colsContainer","toolbarElm","toolbarOptions","isEditable","_isEditable","_isReorderable","_isSelectable","isReadOnly","isSearchable","_isSearchable","notLocalColumns","transport","LocalTransport","support","commandName","commandOptions","console","warn","cardDataItem","draggableEvent","elm","ns","sort","dir","schema","defaultValue","_columnsChangeHandler","_columnsErrorHandler","_columnsDataSourceChange","_error","statusField","_moveEnd","_moveStart","_changeOrder","_tabindex","_changeHandler","_errorHandler","_clearColumns","_renderCard","cardMenuOptions","showOn","alignToAnchor","_addResource","_resourceDataSource","resourceDS","dataSourceInstance","progress","_registerShortcuts","DELETE","UP","DOWN","LEFT","RIGHT","closePane","plugin"],"mappings":"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","file":"kendo.taskboard.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('taskboard/toolbar', ['kendo.toolbar'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, proxy = $.proxy, ToolBar = kendo.ui.ToolBar, Item = kendo.toolbar.Item, CLICK = 'click', TOGGLE = 'toggle', CLOSE = 'close', ACTION = 'action', CHANGE = 'change', NS = '.taskBoardToolbar';\n var TaskBoardToolbarStyles = {\n searchbox: 'k-searchbox',\n searchInputPrefix: 'k-input-prefix',\n searchIcon: 'k-icon k-i-search',\n searchInput: 'k-input'\n };\n var TaskBoardToolBar = ToolBar.extend({\n init: function (element, options) {\n var that = this;\n that._extendOptions(options);\n ToolBar.fn.init.call(that, element, options);\n that._attachEvents();\n },\n events: ToolBar.fn.events.concat([ACTION]),\n defaultTools: {\n addColumn: {\n type: 'button',\n text: 'Add Column',\n name: 'addColumn',\n command: 'AddColumnCommand',\n icon: 'plus',\n rules: 'isEditable'\n },\n spacer: { type: 'spacer' },\n search: {\n type: 'TaskBoardSearch',\n text: 'Search',\n name: 'search',\n command: 'SearchCommand',\n icon: 'search',\n overflow: 'never',\n rules: 'isSearchable'\n }\n },\n _attachEvents: function () {\n var that = this;\n that.bind(TOGGLE, proxy(that._click, that));\n that.bind(CLOSE, proxy(that._click, that));\n that.bind(CLICK, proxy(that._click, that));\n that.bind(CHANGE, proxy(that._change, that));\n },\n _extendOptions: function (options) {\n var that = this, tools = options.items ? options.items : Object.keys(that.defaultTools);\n that.options = options;\n that.options.items = that._extendToolsOptions(tools);\n },\n _extendToolsOptions: function (tools) {\n var that = this, messages = that.options.messages;\n if (!tools.length) {\n return;\n }\n return tools.map(function (tool) {\n var isBuiltInTool = $.isPlainObject(tool) && Object.keys(tool).length === 1 && tool.name, attr = {}, toolOptions;\n tool = isBuiltInTool ? tool.name : tool;\n toolOptions = $.isPlainObject(tool) ? tool : extend({}, that.defaultTools[tool] || {\n name: tool,\n command: tool + 'Command',\n type: 'button'\n });\n if (!that._validateRules(toolOptions)) {\n return { hidden: true };\n }\n attr[kendo.attr('command')] = toolOptions.command;\n attr[kendo.attr('options')] = toolOptions.options;\n kendo.deepExtend(toolOptions, {\n id: toolOptions.id || toolOptions.name + '-' + kendo.guid(),\n name: toolOptions.name,\n text: messages[toolOptions.name] || toolOptions.name,\n attributes: extend({\n 'aria-label': messages[toolOptions.name] || toolOptions.name,\n 'title': messages[toolOptions.name]\n }, attr),\n overflow: toolOptions.overflow\n });\n if (toolOptions.type === 'buttonGroup') {\n toolOptions.buttons = toolOptions.buttons.map(proxy(that._mapButtonGroups, that));\n }\n if (toolOptions.type === 'splitButton') {\n toolOptions.menuButtons = toolOptions.menuButtons.map(proxy(that._mapMenuButtons, that));\n }\n return toolOptions;\n }, that);\n },\n _mapButtonGroups: function (button) {\n var that = this, messages = that.options.messages, attr = {};\n attr[kendo.attr('command')] = button.command;\n attr[kendo.attr('options')] = button.options;\n return kendo.deepExtend(button, {\n attributes: extend({}, button.attributes, {\n 'aria-label': messages[button.name],\n 'title': messages[button.name]\n }, attr)\n });\n },\n _mapMenuButtons: function (button) {\n var that = this, messages = that.options.messages, attr = {};\n attr[kendo.attr('command')] = button.command;\n attr[kendo.attr('options')] = button.options;\n return kendo.deepExtend(button, {\n text: messages[button.name],\n attributes: extend({}, button.attributes, {\n 'aria-label': messages[button.name],\n 'title': messages[button.name]\n }, attr)\n });\n },\n _validateRules: function (tool) {\n var that = this, states = that.options.states, rules = tool.rules ? tool.rules.split(';') : [];\n if (!rules.length) {\n return true;\n }\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n return true;\n },\n _click: function (ev) {\n var command = $(ev.target).attr(kendo.attr('command')), options = $(ev.target).attr(kendo.attr('options'));\n if (!command) {\n return;\n }\n this.action({\n command: command,\n options: options\n });\n },\n _change: function (ev) {\n var command = $(ev.target).attr(kendo.attr('command')), options = $(ev.target).attr(kendo.attr('options'));\n options = extend({}, options, { value: $(ev.target).val() });\n if (!command) {\n return;\n }\n this.action({\n command: command,\n options: options\n });\n },\n isToolEnabled: function (toolName) {\n var that = this, options = that.options, found = false;\n for (var i = 0; i < options.items.length; i++) {\n if (options.items[i].name == toolName) {\n found = true;\n break;\n }\n }\n return options.items[toolName] || found;\n },\n action: function (args) {\n this.trigger(ACTION, args);\n },\n destroy: function () {\n if (this.search) {\n this.search.destroy();\n }\n ToolBar.fn.destroy.call(this);\n }\n });\n var SearchTool = Item.extend({\n init: function (options, toolbar) {\n var that = this, styles = TaskBoardToolBar.styles, element = $(''), input = $(''), iconWrapper = $(''), icon = $('');\n that.element = element;\n that.input = input;\n that.iconWrapper = iconWrapper;\n that.icon = icon;\n that.options = options;\n that.options.type = 'taskBoardSearch';\n that.toolbar = toolbar;\n that.attributes();\n that.renderIcon();\n that.addUidAttr();\n that.addIdAttr();\n that.addOverflowAttr();\n that.input.attr({\n placeholder: that.options.text,\n title: that.options.text\n });\n that.iconWrapper.append(icon);\n that.element.append(iconWrapper).append(that.input);\n that._bindEvents();\n that.toolbar.search = that;\n },\n attributes: function () {\n if (this.options.attributes) {\n this.input.attr(this.options.attributes);\n }\n },\n renderIcon: function () {\n if (this.options.icon) {\n this.icon.addClass(TaskBoardToolBar.styles.searchIcon);\n }\n },\n _bindEvents: function () {\n this._inputHandler = proxy(this._input, this);\n this.input.on('input' + NS, this._inputHandler);\n },\n _input: function (ev) {\n this.toolbar.trigger(CHANGE, { target: ev.target });\n },\n destroy: function () {\n this.element.off(NS);\n }\n });\n kendo.toolbar.registerComponent('TaskBoardSearch', SearchTool);\n extend(kendo.ui, { taskboard: { ToolBar: TaskBoardToolBar } });\n extend(true, kendo.ui.taskboard.ToolBar, { styles: TaskBoardToolbarStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('taskboard/column', ['kendo.sortable'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Observable = kendo.Observable, extend = $.extend, proxy = $.proxy, DOT = '.', NS = DOT + 'kendoTaskBoardColumn', CLICK = 'click', BLUR = 'blur', MOVE = 'move', MOVE_START = 'moveStart', MOVE_END = 'moveEnd', CHANGE = 'change', ACTION = 'action';\n var TaskBoardColumnStyles = {\n element: 'k-taskboard-column',\n header: 'k-taskboard-column-header',\n headerText: 'k-taskboard-column-header-text',\n ellipsis: 'k-text-ellipsis',\n spacer: 'k-spacer',\n actions: 'k-taskboard-column-header-actions',\n cardsContainer: 'k-taskboard-column-cards-container',\n columnCards: 'k-taskboard-column-cards',\n actionButton: 'k-taskboard-column-action-button',\n button: 'k-button k-button-icon k-flat',\n card: 'k-taskboard-card',\n cardTitle: 'k-card-title',\n sortableSuffix: '-kendosortable',\n textbox: 'k-textbox',\n input: 'k-input',\n newColumn: 'k-taskboard-column-new',\n editColumn: 'k-taskboard-column-edit',\n disabled: 'k-state-disabled',\n dragPlaceholder: 'k-taskboard-drag-placeholder',\n dragHint: 'k-taskboard-drag-hint',\n ignoreDrag: 'k-taskboard-drag-ignore',\n grabbingCursor: 'k-cursor-grabbing'\n };\n function preventDefault(ev) {\n ev.preventDefault();\n }\n var TaskBoardColumn = Observable.extend({\n init: function (options, dataItem) {\n var that = this;\n that._dataItem = dataItem;\n that.options = extend(true, {}, options);\n that.sortableUniqueClass = that.options.sortableIdentifier + TaskBoardColumn.styles.sortableSuffix;\n that._render();\n that._attachEvents();\n if (options.states.isReorderable) {\n that._initSortable();\n }\n Observable.fn.init.call(that);\n },\n empty: function () {\n var that = this;\n that.container.empty();\n },\n addCard: function (cardHtml) {\n var that = this;\n that.container.append(cardHtml);\n },\n edit: function () {\n var that = this, styles = TaskBoardColumn.styles;\n that.element.addClass(styles.editColumn);\n that._renderEditHeader();\n },\n getDataItem: function () {\n return this._dataItem;\n },\n cards: function () {\n var that = this;\n return that.container.children();\n },\n template: '
{0}
' + '' + '#=buttons#',\n editTemplate: '
' + '' + '' + '' + '
' + '' + '#=buttons#',\n actionButton: '',\n builtinButtons: {\n 'editColumn': {\n name: 'editColumn',\n icon: 'edit',\n text: 'Edit Column',\n command: 'EditColumnCommand',\n rules: 'isEditable'\n },\n 'addCard': {\n name: 'addCard',\n icon: 'add',\n text: 'Add Card',\n command: 'AddCardCommand',\n rules: 'isEditable'\n },\n 'deleteColumn': {\n name: 'deleteColumn',\n icon: 'close',\n text: 'Delete Column',\n command: 'DeleteColumnCommand',\n rules: 'isEditable'\n }\n },\n defaultButtons: [\n 'editColumn',\n 'addCard',\n 'deleteColumn'\n ],\n _render: function () {\n var that = this, styles = TaskBoardColumn.styles, headerLabelId = kendo.guid(), element = $('
').attr(kendo.attr('uid'), that._dataItem.uid).css({ width: that.options.width }).attr('role', 'list').attr('aria-labelledby', headerLabelId), header = $('
'), cardsContainer = $('
'), columnCards = $('
');\n that.header = header.appendTo(element).attr('id', headerLabelId);\n that._renderHeader();\n cardsContainer.appendTo(element);\n that.container = columnCards.appendTo(cardsContainer).addClass(that.sortableUniqueClass);\n that.element = element;\n },\n _renderHeader: function () {\n var that = this, styles = TaskBoardColumn.styles, options = that.options, template = options.template ? options.template : kendo.format(that.template, '#:' + options.dataTextField + '#');\n that.header.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n buttons: that._buildActionsHtml()\n }, that._dataItem)));\n },\n _renderEditHeader: function () {\n var that = this, styles = TaskBoardColumn.styles, options = that.options, template = options.editTemplate ? options.editTemplate : kendo.format(that.editTemplate, options.dataTextField);\n that.header.html('');\n that.header.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n messages: options.messages,\n buttons: that._buildActionsHtml()\n }, that._dataItem)));\n setTimeout(function () {\n that.header.find('input').focus();\n }, 0);\n that.header.find(DOT + styles.actions).addClass(styles.disabled);\n },\n _buildActionsHtml: function () {\n var that = this, options = that.options, messages = options.messages, buttons = options.buttons || that.defaultButtons, styles = TaskBoardColumn.styles, html = '
';\n for (var i = 0; i < buttons.length; i++) {\n var button = buttons[i];\n button = $.isPlainObject(button) && Object.keys(button).length === 1 && button.name ? button.name : button;\n if (typeof button === 'string') {\n button = extend(true, {}, that.builtinButtons[button] || {\n spriteCssClass: button,\n command: button + 'Command'\n }, { text: messages[button] || button });\n } else if ($.isPlainObject(button) && button.name) {\n button = extend(true, button, { text: messages[button.name] });\n }\n if (!that._validateRules(button)) {\n continue;\n }\n var icon = button.icon ? 'k-icon k-i-' + button.icon : '';\n button.icon = icon;\n button.spriteCssClass = button.spriteCssClass || '';\n html += kendo.template(that.actionButton)(extend(true, {}, {\n styles: styles,\n options: false\n }, button));\n }\n html += '
';\n return html;\n },\n _validateRules: function (tool) {\n var that = this, states = that.options.states, rules = tool.rules ? tool.rules.split(';') : [];\n if (!rules.length) {\n return true;\n }\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n return true;\n },\n _actionClick: function (ev) {\n var that = this, target = $(ev.target).closest('[' + kendo.attr('command') + ']'), command = target.attr(kendo.attr('command')), options = target.attr(kendo.attr('options'));\n options = typeof options === 'string' ? { value: options } : options;\n if (!command) {\n return;\n }\n that.trigger(ACTION, {\n command: command,\n options: extend({ target: target }, options)\n });\n },\n _textboxBlur: function (ev) {\n var that = this, target = $(ev.target).closest('[' + kendo.attr('command') + ']'), command = target.attr(kendo.attr('command')), options = target.attr(kendo.attr('options'));\n options = typeof options === 'string' ? { value: options } : options;\n if (!command) {\n return;\n }\n that.trigger(ACTION, {\n command: command,\n options: extend({ target: target }, options)\n });\n },\n _attachEvents: function () {\n var that = this;\n that.header.on(CLICK + NS, DOT + TaskBoardColumn.styles.actionButton, proxy(that._actionClick, that));\n that.header.on(BLUR + NS, DOT + TaskBoardColumn.styles.input, proxy(that._textboxBlur, that));\n that.header.on('keyup' + NS, DOT + TaskBoardColumn.styles.input, function (ev) {\n if (ev.keyCode === kendo.keys.ENTER) {\n that._textboxBlur(ev);\n }\n });\n if (that.container) {\n that.container.on(CLICK + NS, DOT + TaskBoardColumn.styles.card + ' [' + kendo.attr('command') + ']', proxy(that._actionClick, that));\n that.container.on(CLICK + NS, DOT + TaskBoardColumn.styles.card + ' a.' + TaskBoardColumn.styles.cardTitle, preventDefault);\n }\n },\n _initSortable: function () {\n var that = this, isRtl = that.options.states.isRtl, dirClass = isRtl ? ' k-rtl' : '', container = that.container;\n if (!that.container) {\n return;\n }\n that.sortable = new ui.Sortable(container, {\n ignore: DOT + TaskBoardColumn.styles.ignoreDrag + ' *',\n connectWith: DOT + that.sortableUniqueClass,\n filter: DOT + TaskBoardColumn.styles.card,\n hint: function (element) {\n return element.clone().addClass(TaskBoardColumn.styles.dragHint + ' ' + TaskBoardColumn.styles.grabbingCursor + dirClass).css({\n width: element[0].offsetWidth,\n height: element[0].offsetHeight\n });\n },\n placeholder: function (element) {\n return $('
').addClass(TaskBoardColumn.styles.dragPlaceholder).css({ height: element[0].offsetHeight });\n },\n move: proxy(that._move, that),\n start: proxy(that._start, that),\n end: proxy(that._end, that),\n change: proxy(that._change, that)\n });\n that.sortable.draggable.userEvents.unbind('select');\n that.sortable.draggable.userEvents.bind('select', proxy(that._select, that));\n },\n _select: function (ev) {\n var ignoreDragSelectors = TaskBoardColumn.ignoreDragSelectors;\n var target = $(ev.event.target);\n for (var i = 0; i < ignoreDragSelectors.length; i++) {\n if (target.is(ignoreDragSelectors[i])) {\n ev.preventDefault();\n break;\n }\n }\n },\n _move: function (ev) {\n extend(ev, { columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element) });\n this.trigger(MOVE, ev);\n },\n _start: function (ev) {\n extend(ev, { columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element) });\n this.trigger(MOVE_START, ev);\n },\n _end: function (ev) {\n extend(ev, { columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element) });\n this.trigger(MOVE_END, ev);\n },\n _change: function (ev) {\n var that = this;\n extend(ev, { columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element) });\n that.trigger(CHANGE, ev);\n if (ev.action === 'receive' && ev.newIndex >= 0 || ev.action === 'sort' && ev.newIndex !== ev.oldIndex) {\n that.trigger(ACTION, {\n command: 'MoveCardCommand',\n options: ev\n });\n }\n },\n destroy: function () {\n var that = this;\n that.header.off(NS);\n that.container.off(NS);\n if (that.sortable) {\n that.sortable.destroy();\n }\n }\n });\n var TaskBoardNewColumn = TaskBoardColumn.extend({\n _render: function () {\n var that = this, styles = TaskBoardColumn.styles, element = $('
').addClass(styles.newColumn).attr(kendo.attr('uid'), that._dataItem.uid), header = $('
');\n that.header = header.appendTo(element);\n that._renderEditHeader();\n that.element = element;\n }\n });\n extend(kendo.ui.taskboard, {\n Column: TaskBoardColumn,\n NewColumn: TaskBoardNewColumn\n });\n extend(true, kendo.ui.taskboard.Column, {\n styles: TaskBoardColumnStyles,\n ignoreDragSelectors: ['img']\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('taskboard/card', ['kendo.core'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Observable = kendo.Observable, extend = $.extend;\n var TaskBoardCardStyles = {\n element: 'k-taskboard-card',\n card: 'k-card',\n header: 'k-card-header',\n hbox: 'k-hbox',\n title: 'k-card-title',\n link: 'k-link',\n spacer: 'k-spacer',\n button: 'k-button',\n cardMenuButton: 'k-taskboard-card-menu-button k-button-icon',\n flatButton: 'k-flat',\n body: 'k-card-body',\n actionsIcon: 'k-icon k-i-more-vertical',\n moveCursor: 'k-cursor-move',\n categoryBorder: 'k-taskboard-card-category',\n headerActions: 'k-card-header-actions',\n disabled: 'k-state-disabled'\n };\n var TaskBoardCard = Observable.extend({\n init: function (options, dataItem, resources) {\n var that = this;\n that._dataItem = dataItem;\n that.resources = resources;\n that.options = extend(true, {}, options);\n that._render();\n Observable.fn.init.call(that);\n },\n headerTemplate: '
' + '#:{0}#' + '' + '#=cardMenuButton#' + '
',\n bodyTemplate: '

#:{0}#

',\n cardMenuButtonTemplate: '
',\n _render: function () {\n var that = this, options = that.options, styles = TaskBoardCard.styles, template = options.template || that._buildTemplate(), element = $('
'), cardMenuButtonTemplate = options.cardMenu ? that.cardMenuButtonTemplate : '', resources = that._resources(that._dataItem), borderDir = options.states.isRtl ? 'borderRightColor' : 'borderLeftColor', categoryColor;\n element.attr(kendo.attr('uid'), that._dataItem.uid).attr('aria-disabled', !options.states.isDisabled).attr('role', 'listitem').toggleClass(styles.disabled, options.states.isDisabled);\n categoryColor = resources[options.dataCategoryField] && resources[options.dataCategoryField].color || that._dataItem.get(options.dataCategoryField);\n if (categoryColor) {\n element.addClass(styles.categoryBorder).css(borderDir, categoryColor);\n }\n element.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n cardMenuButton: kendo.template(cardMenuButtonTemplate)({ styles: styles }),\n selectable: options.states.isSelectable,\n resources: resources\n }, that._dataItem)));\n that.element = element;\n },\n _resources: function (card) {\n var that = this, resources = {};\n if (!that.resources) {\n return resources;\n }\n for (var key in that.resources) {\n var resource = that.resources[key];\n var field = resource.field;\n var cardResources = kendo.getter(field)(card);\n if (!cardResources) {\n continue;\n }\n if (!resource.multiple) {\n cardResources = [cardResources];\n }\n var data = resource.dataSource.view();\n for (var resourceIndex = 0; resourceIndex < cardResources.length; resourceIndex++) {\n var cardResource = null;\n var value = cardResources[resourceIndex];\n if (!resource.valuePrimitive) {\n value = kendo.getter(resource.dataValueField)(value);\n }\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n if (data[dataIndex].get(resource.dataValueField) == value) {\n cardResource = data[dataIndex];\n break;\n }\n }\n if (cardResource !== null) {\n var resourceColor = kendo.getter(resource.dataColorField)(cardResource);\n var result = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n text: kendo.getter(resource.dataTextField)(cardResource),\n value: value,\n color: resourceColor\n };\n if (resource.multiple) {\n if (resources[resource.field]) {\n resources[resource.field].push(result);\n } else {\n resources[resource.field] = [result];\n }\n } else {\n resources[resource.field] = result;\n }\n }\n }\n }\n return resources;\n },\n _buildTemplate: function () {\n var that = this, options = that.options, headerTemplate = kendo.format(that.headerTemplate, options.dataTitleField), bodyTemplate = kendo.format(that.bodyTemplate, options.dataDescriptionField);\n return headerTemplate + bodyTemplate;\n }\n });\n extend(kendo.ui.taskboard, { Card: TaskBoardCard });\n extend(true, kendo.ui.taskboard.Card, { styles: TaskBoardCardStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('taskboard/cardmenu', ['kendo.menu'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, proxy = $.proxy, template = kendo.template, ContextMenu = kendo.ui.ContextMenu, ACTION = 'action';\n var TaskBoardCardMenu = ContextMenu.extend({\n init: function (element, options) {\n var that = this;\n ContextMenu.fn.init.call(that, element, options);\n that._overrideTemplates();\n that._extendItems();\n that.bind('select', proxy(that._onSelect, that));\n that.bind('open', proxy(that._onOpen, that));\n that.bind('activate', proxy(that._focus, that));\n },\n _overrideTemplates: function () {\n this.templates.sprite = template('#if(spriteCssClass) {##}#');\n },\n defaultItems: {\n 'editCard': {\n name: 'editCard',\n text: 'Edit card',\n icon: 'edit',\n command: 'EditCardCommand',\n rules: 'isEditable'\n },\n 'deleteCard': {\n name: 'deleteCard',\n text: 'Delete card',\n icon: 'delete',\n command: 'DeleteCardCommand',\n rules: 'isEditable'\n }\n },\n events: ContextMenu.fn.events.concat([ACTION]),\n _extendItems: function () {\n var that = this, items = that.options.items, item, isBuiltInTool;\n if (items && items.length) {\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n isBuiltInTool = $.isPlainObject(item) && Object.keys(item).length === 1 && item.name;\n if (isBuiltInTool) {\n item = item.name;\n }\n if ($.isPlainObject(item)) {\n that._append(item);\n } else if (that.defaultItems[item]) {\n item = that.defaultItems[item];\n that._append(item);\n } else if (typeof item === 'string') {\n item = {\n name: item,\n text: item,\n spriteCssClass: item,\n command: item + 'Command'\n };\n that._append(item);\n }\n }\n } else {\n for (var key in that.defaultItems) {\n item = that.defaultItems[key];\n that._append(item);\n }\n }\n },\n _append: function (item) {\n var that = this;\n that._extendItem(item);\n if (that._validateRules(item)) {\n that.append(item);\n }\n },\n _extendItem: function (item) {\n var that = this, messages = that.options.messages, icon = item.icon ? 'k-icon k-i-' + item.icon : '', attr = {};\n attr[kendo.attr('command')] = item.command;\n if (item.options) {\n attr[kendo.attr('options')] = item.options;\n }\n extend(item, {\n text: messages[item.name],\n spriteCssClass: icon + ' ' + item.spriteCssClass || '',\n attr: attr,\n uid: kendo.guid()\n });\n },\n _validateRules: function (tool) {\n var that = this, states = that.options.states, rules = tool.rules ? tool.rules.split(';') : [];\n if (!rules.length) {\n return true;\n }\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n return true;\n },\n _onSelect: function (ev) {\n var command = $(ev.item).attr(kendo.attr('command')), options = $(ev.item).attr(kendo.attr('options')), target = $(ev.target);\n options = typeof options === 'string' ? { value: options } : options;\n if (!command) {\n return;\n }\n this.action({\n command: command,\n options: extend({ target: target }, options)\n });\n },\n _onOpen: function (ev) {\n var menu = ev.sender, items = menu.options.items;\n if (!items && $.isEmptyObject(this.defaultItems)) {\n ev.preventDefault();\n }\n },\n _focus: function (ev) {\n if (ev.sender) {\n ev.sender.element.focus();\n }\n },\n action: function (args) {\n this.trigger(ACTION, args);\n }\n });\n extend(kendo.ui.taskboard, { CardMenu: TaskBoardCardMenu });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('taskboard/commands', ['kendo.dialog'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, isPlainObject = $.isPlainObject, Class = kendo.Class;\n var TaskBoardCommand = Class.extend({\n init: function (options) {\n this.options = options;\n this.taskboard = options.taskboard;\n },\n _confirm: function (title, content, okText, cancel) {\n var that = this, taskboard = that.taskboard, taskboardOptions = taskboard.options, confirm;\n if (isPlainObject(taskboardOptions.editable) && taskboardOptions.editable.confirmation === false) {\n var fakePromise = $.Deferred();\n fakePromise.resolve();\n return fakePromise;\n }\n confirm = $('
').kendoConfirm(extend({}, {\n title: title,\n content: content,\n messages: {\n okText: okText,\n cancel: cancel\n },\n buttonLayout: 'normal'\n })).data('kendoConfirm');\n confirm.open();\n return confirm.result;\n }\n });\n var AddColumnCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard;\n if (taskboard.trigger('editColumn', { column: null })) {\n return;\n }\n taskboard.columns().each(function (index, column) {\n taskboard.enableByColumn(column, false);\n });\n taskboard.addColumn();\n }\n });\n var EditColumnCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, options = that.options, taskboard = that.taskboard;\n if (taskboard.trigger('editColumn', { column: options.column })) {\n return;\n }\n taskboard.columns().each(function (index, column) {\n taskboard.enableByColumn(column, false);\n });\n taskboard.editColumn(options.columnElement);\n }\n });\n var DeleteColumnCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, options = that.options, taskboard = that.taskboard, taskboardOptions = taskboard.options, messages = taskboardOptions.messages, columnDS = taskboard.columnsDataSource;\n var result = that._confirm(messages.deleteColumn, messages.deleteColumnConfirm, messages['delete'], messages.cancel);\n result.done(function () {\n if (taskboard.trigger('deleteColumn', { column: options.column })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n columnDS.remove(options.column);\n columnDS.sync();\n });\n }\n });\n var SaveColumnCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, options = that.options, taskboard = that.taskboard, columnSettings = taskboard.options.columnSettings, columnDS = taskboard.columnsDataSource, column = options.column, text = options.target.val();\n if (taskboard.trigger('saveColumn', { column: options.column })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n column.set(columnSettings.dataTextField, text);\n columnDS.sync();\n }\n });\n var CancelEditColumnCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, columnDS = taskboard.columnsDataSource;\n columnDS.cancelChanges();\n }\n });\n var MoveFocusCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, options = that.options, cardElement = options.cardElement, columnElement = options.columnElement, columns = taskboard.columns(), currentColumnIndex = columnElement.index(), direction = options.value, columnIndex, column;\n switch (direction) {\n case 'left':\n columnIndex = Math.max(0, currentColumnIndex - 1);\n break;\n case 'right':\n columnIndex = Math.min(columns.length - 1, currentColumnIndex + 1);\n break;\n default:\n columnIndex = currentColumnIndex;\n break;\n }\n that.columns = columns;\n that.columnIndex = columnIndex;\n that.column = column = taskboard._getColumnByElement(columns.eq(columnIndex));\n that.cards = column.cards();\n if (cardElement) {\n that._moveFromCardFocus(direction, cardElement);\n } else if (columnElement && direction === 'down') {\n that.cards.eq(0).focus();\n } else {\n columns.eq(columnIndex).focus();\n }\n },\n _moveFromCardFocus: function (direction, cardElement) {\n var that = this, currentIndex = cardElement.index(), focusCard, index, seekFocusableCard = false;\n switch (direction) {\n case 'up':\n index = currentIndex - 1;\n break;\n case 'down':\n index = currentIndex + 1;\n break;\n default:\n seekFocusableCard = true;\n index = currentIndex;\n break;\n }\n focusCard = that.cards.eq(index);\n if (!focusCard.length && seekFocusableCard) {\n focusCard = that._getFocusableCard(index, direction);\n }\n if (index >= 0) {\n focusCard.focus();\n } else {\n that.options.columnElement.focus();\n }\n },\n _getFocusableCard: function (index, direction) {\n var that = this, lastIndex = that.cards.length - 1, focusable = that.cards.eq(Math.min(index, lastIndex));\n if (focusable.length) {\n return focusable;\n }\n if (that.columnIndex <= 0 || that.columnIndex >= that.columns.length - 1) {\n return;\n }\n switch (direction) {\n case 'left':\n that.columnIndex = Math.max(0, that.columnIndex - 1);\n break;\n case 'right':\n that.columnIndex = Math.min(that.columns.length - 1, that.columnIndex + 1);\n break;\n }\n that.column = that.taskboard._getColumnByElement(that.columns.eq(that.columnIndex));\n that.cards = that.column.cards();\n return that._getFocusableCard(index, direction);\n }\n });\n var TaskBoardBaseCardCommand = TaskBoardCommand.extend({\n _updateOrder: function (column, currentIndex) {\n var that = this, taskboard = that.taskboard, taskBoardOptions = taskboard.options, dataOrderField = taskBoardOptions.dataOrderField, options = that.options, currentCard = options.card, cardIndex = options.cardElement ? options.cardElement.index() : column.cards().length, newIndex = currentIndex, cards = column.cards().map(function (idx, card) {\n return taskboard.dataItem(card);\n }), prevCard = cards[cardIndex - 1], nextCard;\n currentCard.set(dataOrderField, newIndex);\n if (prevCard && prevCard.get(dataOrderField) >= currentCard.get(dataOrderField)) {\n currentCard.set(dataOrderField, prevCard.get(dataOrderField) + 1);\n }\n for (var i = newIndex + 1; i < cards.length; i++) {\n nextCard = cards[i];\n if (nextCard.get(dataOrderField) <= currentCard.get(dataOrderField)) {\n nextCard.set(dataOrderField, currentCard.get(dataOrderField) + 1);\n currentCard = nextCard;\n } else {\n break;\n }\n }\n }\n });\n var SelectCardCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, options = that.options, cardElement = options.cardElement;\n taskboard._select(cardElement, true);\n cardElement.focus();\n }\n });\n var SaveChangesCommand = TaskBoardBaseCardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, taskBoardOptions = taskboard.options, options = that.options, receivedStatus = options.card.get(taskBoardOptions.dataStatusField), targetColumn = taskboard._getColumn(receivedStatus), activeElm = $(document.activeElement);\n if (activeElm.length) {\n activeElm.trigger('change');\n }\n if (taskboard.pane && taskboard.pane.form && !taskboard.pane.form.validate()) {\n return;\n }\n if (taskboard.trigger('saveCard', { card: options.card })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n if (targetColumn && taskBoardOptions.dataOrderField) {\n that._updateOrder(targetColumn, options.card.get(taskBoardOptions.dataOrderField));\n }\n taskboard.dataSource.sync().then(function () {\n taskboard.columns().eq(0).focus();\n });\n }\n });\n var DeleteCardCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, messages = taskboard.options.messages, options = that.options;\n var result = that._confirm(messages.deleteCard, messages.deleteCardConfirm, messages['delete'], messages.cancel);\n result.done(function () {\n if (taskboard.trigger('deleteCard', { card: options.card })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n taskboard.dataSource.remove(options.card);\n taskboard.dataSource.sync();\n });\n }\n });\n var MoveCardCommand = TaskBoardBaseCardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, taskBoardOptions = taskboard.options, columnSettings = taskBoardOptions.columnSettings, options = that.options, receivedStatus = options.column.get(columnSettings.dataStatusField);\n options.card.set(taskBoardOptions.dataStatusField, receivedStatus);\n if (taskBoardOptions.dataOrderField) {\n that._updateOrder(taskboard._getColumn(receivedStatus), options.newIndex);\n }\n taskboard.dataSource.sync();\n }\n });\n var EditCardCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, options = that.options;\n if (taskboard.trigger('editCard', { card: options.card })) {\n return;\n }\n taskboard._openPane(extend({ pane: 'Edit' }, options));\n }\n });\n var AddCardCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard, options = that.options;\n if (taskboard.trigger('editCard', { card: null })) {\n return;\n }\n taskboard.dataSource.cancelChanges();\n taskboard._openPane(extend({ pane: 'Create' }, options));\n }\n });\n var OpenPaneCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, options = that.options, taskboard = that.taskboard;\n taskboard._openPane({\n pane: options.value,\n card: options.card,\n cardElement: options.cardElement,\n column: options.column,\n columnElement: options.columnElement\n });\n }\n });\n var ClosePaneCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, taskboard = that.taskboard;\n taskboard._closePane();\n taskboard.dataSource.cancelChanges();\n }\n });\n var SearchCommand = TaskBoardCommand.extend({\n exec: function () {\n var that = this, value = that.options.value, taskboard = that.taskboard, taskboardOptions = taskboard.options, searchOptions = taskboardOptions.search, operator = searchOptions.operator, fields = searchOptions && searchOptions.fields || [\n taskboardOptions.dataTitleField,\n taskboardOptions.dataDescriptionField\n ], filters;\n filters = that._buildFilters(fields, operator, value);\n taskboard.dataSource.filter(filters);\n },\n _buildFilters: function (fields, operator, value) {\n var filters = fields.map(function (field) {\n return {\n field: field,\n operator: operator,\n value: value\n };\n });\n return {\n logic: 'or',\n filters: filters\n };\n }\n });\n extend(kendo.ui.taskboard, {\n Command: TaskBoardCommand,\n commands: {\n AddColumnCommand: AddColumnCommand,\n EditColumnCommand: EditColumnCommand,\n DeleteColumnCommand: DeleteColumnCommand,\n SaveColumnCommand: SaveColumnCommand,\n CancelEditColumnCommand: CancelEditColumnCommand,\n OpenPaneCommand: OpenPaneCommand,\n ClosePaneCommand: ClosePaneCommand,\n SelectCardCommand: SelectCardCommand,\n MoveFocusCommand: MoveFocusCommand,\n SaveChangesCommand: SaveChangesCommand,\n DeleteCardCommand: DeleteCardCommand,\n MoveCardCommand: MoveCardCommand,\n EditCardCommand: EditCardCommand,\n AddCardCommand: AddCardCommand,\n SearchCommand: SearchCommand\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}));\n(function (f, define) {\n define('taskboard/pane', ['kendo.form'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, Observable = kendo.Observable, proxy = $.proxy, Form = kendo.ui.Form, DOT = '.', NS = DOT + 'kendoTaskBoardPane', ACTION = 'action', CLICK = 'click';\n var TaskBoardPaneStyles = {\n element: 'k-taskboard-pane',\n edit: 'k-taskboard-edit-pane',\n preview: 'k-taskboard-preview-pane',\n header: 'k-taskboard-pane-header',\n headerText: 'k-taskboard-pane-header-text',\n spacer: 'k-spacer',\n headerActions: 'k-taskboard-pane-header-actions',\n button: 'k-button k-button-icon k-flat',\n content: 'k-taskboard-pane-content',\n footerActions: 'k-taskboard-pane-actions',\n footerActionButtons: 'k-action-buttons k-actions-end',\n footerButton: 'k-button k-button-icontext',\n primary: 'k-primary'\n };\n var TaskBoardPane = Observable.extend({\n init: function (taskboard, options, dataItem, resources) {\n var that = this;\n that.taskboard = taskboard;\n that._dataItem = dataItem;\n that.resources = resources;\n that.options = extend(true, {}, options);\n that._render();\n that.element.on(CLICK + NS, '[' + kendo.attr('command') + ']', proxy(that._commandClick, that));\n Observable.fn.init.call(that);\n },\n headerTemplate: '
{0}
' + '' + '
' + '' + '
',\n buttonTemplate: '',\n contentTemplate: '',\n builtinButtons: {\n 'edit': {\n name: 'edit',\n icon: 'edit',\n text: 'Edit',\n primary: true,\n command: 'EditCardCommand',\n rules: 'isEditable'\n },\n 'delete': {\n name: 'delete',\n icon: 'delete',\n text: 'Delete',\n command: 'DeleteCardCommand',\n rules: 'isEditable'\n },\n 'cancel': {\n name: 'cancel',\n text: 'Cancel',\n command: 'ClosePaneCommand'\n },\n 'saveChanges': {\n name: 'saveChanges',\n text: 'Save',\n command: 'SaveChangesCommand',\n primary: true,\n rules: 'isEditable'\n },\n 'create': {\n name: 'create',\n text: 'Create',\n command: 'SaveChangesCommand',\n primary: true,\n rules: 'isEditable'\n }\n },\n defaultButtons: [],\n _render: function () {\n var that = this, styles = TaskBoardPane.styles, element = $('
'), header = $('
'), content = $('
'), buttonsContainer = $('
');\n that.header = header.appendTo(element);\n that._renderHeader();\n that.content = content.appendTo(element);\n that._renderContent();\n that.buttonsContainer = buttonsContainer.appendTo(element);\n that.buttonsContainer.append(that._buildButtonsHtml());\n that.element = element;\n },\n _renderHeader: function () {\n var that = this, styles = TaskBoardPane.styles, options = that.options, messages = options.messages, headerTemplate = options.headerTemplate ? options.headerTemplate : that._buildHeaderTemplate(), resources = that._resources(that._dataItem);\n that.header.append(kendo.template(headerTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n resources: resources\n }, that._dataItem)));\n },\n _buildHeaderTemplate: function () {\n var that = this;\n return kendo.format(that.headerTemplate, '#:' + that.options.dataTitleField + '#');\n },\n _renderContent: function () {\n var that = this, styles = TaskBoardPane.styles, options = that.options, messages = options.messages, contentTemplate = options.template || that.contentTemplate, resources = that._resources(that._dataItem);\n that.content.append(kendo.template(contentTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n resources: resources\n }, that._dataItem)));\n },\n _resources: function (card) {\n var that = this, resources = {};\n if (!that.resources) {\n return resources;\n }\n for (var key in that.resources) {\n var resource = that.resources[key];\n var field = resource.field;\n var cardResources = kendo.getter(field)(card);\n if (!cardResources) {\n continue;\n }\n if (!resource.multiple) {\n cardResources = [cardResources];\n }\n var data = resource.dataSource.view();\n for (var resourceIndex = 0; resourceIndex < cardResources.length; resourceIndex++) {\n var cardResource = null;\n var value = cardResources[resourceIndex];\n if (!resource.valuePrimitive) {\n value = kendo.getter(resource.dataValueField)(value);\n }\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n if (data[dataIndex].get(resource.dataValueField) == value) {\n cardResource = data[dataIndex];\n break;\n }\n }\n if (cardResource !== null) {\n var resourceColor = kendo.getter(resource.dataColorField)(cardResource);\n var result = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n text: kendo.getter(resource.dataTextField)(cardResource),\n value: value,\n color: resourceColor\n };\n if (resource.multiple) {\n if (resources[resource.field]) {\n resources[resource.field].push(result);\n } else {\n resources[resource.field] = [result];\n }\n } else {\n resources[resource.field] = result;\n }\n }\n }\n }\n return resources;\n },\n _buildButtonsHtml: function () {\n var that = this, options = that.options, messages = options.messages, buttons = options.buttons || that.defaultButtons, styles = TaskBoardPane.styles, html = '';\n for (var i = 0; i < buttons.length; i++) {\n var button = buttons[i];\n button = $.isPlainObject(button) && Object.keys(button).length === 1 && button.name ? button.name : button;\n if (typeof button === 'string') {\n button = extend(true, {}, that.builtinButtons[button] || {\n spriteCssClass: button,\n command: button + 'Command'\n }, { text: messages[button] || button });\n } else if ($.isPlainObject(button) && button.name) {\n button = extend(true, button, { text: messages[button.name] });\n }\n if (!that._validateRules(button)) {\n continue;\n }\n var icon = button.icon ? 'k-icon k-i-' + button.icon : '';\n button.icon = icon;\n button.spriteCssClass = button.spriteCssClass || '';\n html += kendo.template(that.buttonTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n primary: false,\n options: null\n }, button));\n }\n return html;\n },\n _commandClick: function (ev) {\n var that = this, target = $(ev.target).closest('[' + kendo.attr('command') + ']'), command = target.attr(kendo.attr('command')), options = target.attr(kendo.attr('options')), card = that._dataItem;\n options = typeof options === 'string' ? { value: options } : options;\n if (!command) {\n return;\n }\n that.trigger(ACTION, {\n command: command,\n options: extend({ card: card }, options)\n });\n },\n _validateRules: function (tool) {\n var that = this, states = that.options.states, rules = tool.rules ? tool.rules.split(';') : [];\n if (!rules.length) {\n return true;\n }\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n return true;\n },\n destroy: function () {\n var that = this;\n that.element.off(NS);\n that.element.remove();\n }\n });\n var TaskBoardPreviewPane = TaskBoardPane.extend({\n init: function (taskboard, options, dataItem, resources) {\n var that = this;\n options = extend({}, options.previewPane, {\n dataTitleField: options.dataTitleField,\n dataDescriptionField: options.dataDescriptionField,\n messages: options.messages,\n states: options.states\n });\n that.contentTemplate = kendo.format(that._contentTemplate, options.dataDescriptionField);\n TaskBoardPane.fn.init.call(that, taskboard, options, dataItem, resources);\n that.element.addClass(TaskBoardPane.styles.preview);\n },\n _contentTemplate: '

#:{0}#

',\n defaultButtons: [\n 'delete',\n 'edit'\n ]\n });\n var TaskBoardEditPane = TaskBoardPane.extend({\n init: function (taskboard, options, dataItem) {\n var that = this;\n options = extend({}, options.editable, {\n dataTitleField: options.dataTitleField,\n dataDescriptionField: options.dataDescriptionField,\n messages: options.messages,\n states: options.states\n });\n that.formSettings = extend(that.formSettings, {\n items: [\n {\n field: options.dataTitleField,\n label: options.messages[options.dataTitleField]\n },\n {\n field: options.dataDescriptionField,\n label: options.messages[options.dataDescriptionField]\n }\n ]\n }, options.form);\n TaskBoardPane.fn.init.call(that, taskboard, options, dataItem);\n that.element.addClass(TaskBoardPane.styles.edit);\n },\n defaultButtons: [\n 'cancel',\n 'saveChanges'\n ],\n formSettings: { buttonsTemplate: '' },\n _buildHeaderTemplate: function () {\n var that = this;\n return kendo.format(that.headerTemplate, that.options.messages.edit + ' #:' + that.options.dataTitleField + '#');\n },\n _renderContent: function () {\n var that = this, options = that.options, styles = TaskBoardPane.styles, formSettings = options.form || that.formSettings, formLabelId = kendo.guid(), element = $('
').attr('role', 'form').attr('aria-labelledby', formLabelId);\n that.header.find(DOT + styles.headerText).attr('id', formLabelId);\n that.content.append(element);\n that.form = new Form(element, extend({}, formSettings, { formData: that._dataItem }));\n that.form.element.find('input').focus();\n }\n });\n var TaskBoardCreatePane = TaskBoardEditPane.extend({\n init: function (taskboard, options, dataItem, resources, column) {\n var that = this, columnStatusField = options.columnSettings.dataStatusField, firstColumn = taskboard.columnsDataSource.view().at(0), status = column ? column[columnStatusField] : firstColumn[columnStatusField], clone = extend({}, dataItem);\n dataItem = taskboard.dataSource.add();\n dataItem.set(options.dataStatusField, status);\n for (var key in clone) {\n dataItem.set(key, clone[key]);\n }\n TaskBoardEditPane.fn.init.call(that, taskboard, options, dataItem, resources);\n },\n _buildHeaderTemplate: function () {\n var that = this;\n return kendo.format(that.headerTemplate, that.options.messages.createNewCard);\n },\n defaultButtons: [\n 'cancel',\n 'create'\n ]\n });\n extend(kendo.ui.taskboard, {\n Pane: TaskBoardPane,\n panes: {\n Preview: TaskBoardPreviewPane,\n Edit: TaskBoardEditPane,\n Create: TaskBoardCreatePane\n }\n });\n extend(true, kendo.ui.taskboard.Pane, { styles: TaskBoardPaneStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('taskboard/keyboard', ['kendo.core'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Observable = kendo.Observable, proxy = $.proxy, extend = $.extend, DOT = '.', NS = DOT + 'kendoKeboardManager', KEYDOWN = 'keydown', ACTION = 'action';\n var Keyboard = Observable.extend({\n init: function (element) {\n var that = this;\n that.register = {};\n that.element = element;\n that._attachEvents();\n Observable.fn.init.call(that);\n },\n registerShortcut: function (selector, shortcut, options) {\n var that = this;\n if (!that.register[selector]) {\n that.register[selector] = [];\n }\n if (shortcut.keyCode && isNaN(shortcut.keyCode) && shortcut.keyCode.toUpperCase) {\n shortcut.keyCode = shortcut.keyCode.toUpperCase().charCodeAt(0);\n }\n that.register[selector].push({\n shortcut: extend({\n keyCode: null,\n ctrlKey: false,\n shiftKey: false,\n altKey: false\n }, shortcut),\n options: options\n });\n },\n _attachEvents: function () {\n var that = this, handler = proxy(that._handler, that);\n that.element.on(KEYDOWN + NS, handler);\n },\n _handler: function (ev) {\n var that = this, target = $(ev.target), shortcuts, action;\n for (var selector in that.register) {\n if (target.is(selector)) {\n shortcuts = that.register[selector];\n action = that._getAction(shortcuts, ev);\n if (action) {\n that._trigger(action, ev);\n break;\n }\n }\n }\n },\n _trigger: function (action, ev) {\n var that = this, target = $(ev.target);\n if (action.command) {\n that.trigger(ACTION, extend({}, ev, {\n command: action.command,\n options: extend({}, { target: target }, action.options)\n }));\n }\n if (action.handler) {\n action.handler(ev);\n }\n },\n _getAction: function (shortcuts, ev) {\n var that = this;\n for (var i = 0; i < shortcuts.length; i++) {\n if (that._compareShortcut(shortcuts[i].shortcut, ev)) {\n return shortcuts[i].options;\n }\n }\n },\n _compareShortcut: function (shortcut, ev) {\n var that = this;\n for (var key in shortcut) {\n var result = false;\n switch (key) {\n case 'ctrlKey':\n result = shortcut[key] !== that._getShortcutModifier(ev);\n break;\n default:\n result = shortcut[key] !== ev[key];\n break;\n }\n if (result) {\n return false;\n }\n }\n return true;\n },\n _getShortcutModifier: function (ev) {\n var mac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n return mac ? ev.metaKey : ev.ctrlKey;\n },\n destroy: function () {\n var that = this;\n that.element.off(NS);\n }\n });\n extend(kendo.ui.taskboard, { KeyboardManager: Keyboard });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.taskboard', [\n 'taskboard/toolbar',\n 'taskboard/column',\n 'taskboard/card',\n 'taskboard/cardmenu',\n 'taskboard/commands',\n 'taskboard/pane',\n 'taskboard/keyboard',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'taskboard',\n name: 'TaskBoard',\n category: 'web',\n description: 'The TaskBoard widget displays cards.',\n depends: [\n 'data',\n 'sortable',\n 'dialog',\n 'form',\n 'menu',\n 'toolbar'\n ]\n };\n var TaskBoardStyles = {\n wrapper: 'k-taskboard',\n header: 'k-taskboard-header',\n content: 'k-taskboard-content',\n toolbar: 'k-taskboard-toolbar k-toolbar-flat',\n columnsContainer: 'k-taskboard-columns-container',\n card: 'k-taskboard-card',\n column: 'k-taskboard-column',\n selected: 'k-state-selected',\n disabled: 'k-state-disabled',\n ignoreDrag: 'k-taskboard-drag-ignore'\n };\n var preventDefault = function (ev) {\n ev.preventDefault();\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, DataSource = kendo.data.DataSource, extend = $.extend, ui = kendo.ui, proxy = $.proxy, isArray = $.isArray, isPlainObject = $.isPlainObject, GENERIC = '_generic', DOT = '.', MOVE = 'move', MOVE_START = 'moveStart', MOVE_END = 'moveEnd', SELECT = 'select', EXECUTE = 'execute', ACTION = 'action', CHANGE = 'change', ERROR = 'change', DATABINDING = 'dataBinding', DATABOUND = 'dataBound', EDIT_CARD = 'editCard', SAVE_CARD = 'saveCard', DELETE_CARD = 'deleteCard', EDIT_COLUMN = 'editColumn', SAVE_COLUMN = 'saveColumn', DELETE_COLUMN = 'deleteColumn', COLUMNSDATABINDING = 'columnsDataBinding', COLUMNSDATABOUND = 'columnsDataBound';\n var TaskBoard = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n that._sortableIdentifier = that.element.attr('id') || kendo.guid();\n that._wrapper();\n that._columnsDataSource();\n that._initResources();\n that._dataSource();\n that._initToolbar();\n that._initCardMenu();\n that._initKeyboard();\n if (that.options.autoBind) {\n that.load();\n }\n kendo.notify(that);\n },\n events: [\n MOVE,\n MOVE_START,\n MOVE_END,\n CHANGE,\n EXECUTE,\n SELECT,\n DATABINDING,\n DATABOUND,\n COLUMNSDATABINDING,\n COLUMNSDATABOUND,\n EDIT_CARD,\n SAVE_CARD,\n DELETE_CARD,\n EDIT_COLUMN,\n SAVE_COLUMN,\n DELETE_COLUMN\n ],\n options: {\n name: 'TaskBoard',\n autoBind: true,\n height: 600,\n width: '100%',\n toolbar: true,\n dataStatusField: 'status',\n dataTitleField: 'title',\n dataDescriptionField: 'description',\n dataCategoryField: 'category',\n dataOrderField: null,\n cardMenu: true,\n editable: true,\n selectable: true,\n reorderable: true,\n previewPane: true,\n search: { operator: 'contains' },\n dataSource: [],\n columns: [],\n columnSettings: {\n dataStatusField: 'status',\n dataTextField: 'text',\n dataOrderField: null\n },\n resources: [],\n messages: {\n edit: 'Edit',\n createNewCard: 'Create new card',\n create: 'Create',\n search: 'Search',\n previewCard: 'Preview card',\n addCard: 'Add card',\n editCard: 'Edit card',\n deleteCard: 'Delete Card',\n addColumn: 'Add column',\n editColumn: 'Edit column',\n deleteColumn: 'Delete column',\n close: 'Close',\n cancel: 'Cancel',\n 'delete': 'Delete',\n saveChanges: 'Save changes',\n title: 'Title:',\n description: 'Description:',\n newColumn: 'New column',\n deleteColumnConfirm: 'Are you sure you want to delete this column?',\n deleteCardConfirm: 'Are you sure you want to delete this card?'\n }\n },\n items: function () {\n var that = this, result = $([]);\n for (var key in that._columns) {\n $.merge(result, that._columns[key].cards());\n }\n return result;\n },\n itemsByStatus: function (status) {\n var that = this, result = that._getColumn(status).cards();\n return result;\n },\n itemsByColumn: function (columnElm) {\n var that = this, column = that._getColumnByElement(columnElm);\n if (column) {\n return column.cards();\n }\n },\n load: function () {\n var that = this, fetchPromises = [];\n that._progress(true);\n fetchPromises.push(that.columnsDataSource.fetch());\n for (var key in that.resources) {\n fetchPromises.push(that.resources[key].dataSource.fetch());\n }\n $.when.apply(null, fetchPromises).then(proxy(that.dataSource.read, that.dataSource));\n },\n dataItem: function (cardElm) {\n var that = this, dataSource = that.dataSource, uid;\n cardElm = $(cardElm);\n uid = cardElm.attr(kendo.attr('uid'));\n return dataSource.getByUid(uid);\n },\n columnDataItem: function (columnElm) {\n var that = this, columnsDataSource = that.columnsDataSource, uid;\n columnElm = $(columnElm);\n uid = columnElm.attr(kendo.attr('uid'));\n return columnsDataSource.getByUid(uid);\n },\n columns: function () {\n var that = this, result = $([]);\n for (var key in that._columns) {\n $.merge(result, that._columns[key].element);\n }\n return result;\n },\n columnByStatus: function (status) {\n return this._getColumn(status).element;\n },\n select: function (card, toggle) {\n var that = this;\n if (!card) {\n return that.element.find(DOT + TaskBoard.styles.card + DOT + TaskBoard.styles.selected).eq(0);\n }\n card = $(card);\n toggle = toggle !== false;\n if (toggle) {\n that.element.find(DOT + TaskBoard.styles.card + DOT + TaskBoard.styles.selected).removeClass(TaskBoard.styles.selected);\n }\n card.toggleClass(TaskBoard.styles.selected, toggle);\n },\n previewCard: function (cardElement) {\n var that = this, options = that.options, args = that._extendExecArgs({ target: cardElement });\n if (options.previewPane) {\n that._openPane(extend({ pane: 'Preview' }, args));\n }\n },\n editCard: function (cardElement) {\n var that = this, options = that.options, args;\n cardElement = $(cardElement);\n args = that._extendExecArgs({ target: cardElement });\n if (options.editable) {\n that._openPane(extend({ pane: 'Edit' }, args));\n }\n },\n saveCard: function () {\n var that = this;\n that.dataSource.sync();\n },\n deleteCard: function (cardElement) {\n var that = this, card = that.dataItem(cardElement);\n that.dataSource.remove(card);\n that.dataSource.sync();\n },\n addCard: function (dataItem) {\n var that = this, options = that.options, args = { card: dataItem };\n if (options.editable) {\n that._openPane(extend({ pane: 'Create' }, args));\n }\n },\n addColumn: function (index, data) {\n var that = this, columnSettings = extend(true, {}, that.options.columnSettings, {\n messages: that.options.messages,\n states: that._buildStates(),\n sortableIdentifier: that._sortableIdentifier\n }), newColumn, model, column;\n if (isNaN(index) && !data) {\n data = index;\n index = null;\n }\n model = that.columnsDataSource._createNewModel(data);\n index = isNaN(index) || index === null ? that.columnsDataSource.data().length : index;\n column = that.columns().eq(index);\n that.columnsDataSource.insert(index, model);\n newColumn = new ui.taskboard.NewColumn(columnSettings, model);\n if (isNaN(index) || !column.length) {\n that.columnsContainer.append(newColumn.element);\n } else {\n column.before(newColumn.element);\n }\n newColumn.bind(ACTION, that.executeCommand.bind(that));\n },\n editColumn: function (columnElement) {\n var that = this;\n columnElement = $(columnElement);\n that._getColumnByElement(columnElement).edit();\n },\n saveColumn: function () {\n var that = this;\n that.columnsDataSource.sync();\n },\n deleteColumn: function (columnElement) {\n var that = this, column = that.columnDataItem(columnElement);\n that.columnsDataSource.remove(column);\n that.columnsDataSource.sync();\n },\n registerShortcut: function (selector, shortcut, options) {\n var that = this;\n that.keyboardManager.registerShortcut(selector, shortcut, options);\n },\n enable: function (cardElement, toggle) {\n cardElement = $(cardElement);\n cardElement.toggleClass(TaskBoard.styles.disabled, toggle === false);\n cardElement.attr('aria-disabled', toggle === false);\n },\n enableByColumn: function (columnElement, toggle) {\n var that = this;\n columnElement = $(columnElement);\n that.itemsByColumn(columnElement).each(function (index, card) {\n that.enable(card, toggle);\n });\n },\n readOnly: function (cardElement, toggle) {\n cardElement = $(cardElement);\n toggle = toggle !== false;\n cardElement.find('[' + kendo.attr('command') + ']').toggleClass(TaskBoard.styles.disabled, toggle);\n cardElement.find('a,button').toggleClass(TaskBoard.styles.disabled, toggle);\n cardElement.toggleClass(TaskBoard.styles.ignoreDrag, toggle);\n cardElement.attr('aria-readonly', toggle);\n },\n readOnlyByColumn: function (columnElement, toggle) {\n var that = this;\n columnElement = $(columnElement);\n that.itemsByColumn(columnElement).each(function (index, card) {\n that.readOnly(card, toggle);\n });\n },\n setDataSource: function (dataSource) {\n var that = this;\n that.options.dataSource = dataSource;\n that._dataSource();\n if (that.options.autoBind) {\n that.dataSource.read();\n }\n },\n setColumnsDataSource: function (dataSource) {\n var that = this;\n that.options.columns = dataSource;\n that._columnsDataSource();\n if (that.options.autoBind) {\n that.columnsDataSource.fetch(function () {\n that._renderCards(that.dataSource.view());\n });\n }\n },\n _getColumn: function (status) {\n return this._columns[status];\n },\n _getColumnByElement: function (columnElement) {\n var that = this;\n columnElement = $(columnElement);\n for (var key in that._columns) {\n if (that._columns[key].element[0] === columnElement[0]) {\n return that._columns[key];\n }\n }\n },\n _openPane: function (options) {\n var that = this, pane = new ui.taskboard.panes[options.pane](that, extend({}, that.options, { states: that._buildStates() }), options.card, that.resources, options.column), focusableElement, keyboardManager;\n if (that.pane) {\n that._closePane();\n }\n that.pane = pane;\n that.content.after(that.pane.element);\n that.content.css('margin-right', that.pane.element.width() + parseInt(that.pane.element.css('paddingLeft'), 10));\n that.pane.bind(ACTION, that.executeCommand.bind(that));\n that.pane.keyboardManager = keyboardManager = new ui.taskboard.KeyboardManager(that.pane.element);\n keyboardManager.bind(ACTION, that.executeCommand.bind(that));\n keyboardManager.registerShortcut('*', { keyCode: kendo.keys.ESC }, { command: 'ClosePaneCommand' });\n keyboardManager.registerShortcut('*', { keyCode: kendo.keys.ENTER }, {\n command: 'SaveChangesCommand',\n options: { card: that.pane._dataItem }\n });\n focusableElement = that.pane.element.find('input');\n if (!focusableElement.length) {\n focusableElement = that.pane.element.find('button');\n }\n setTimeout(function () {\n focusableElement.eq(0).focus();\n }, 0);\n },\n _closePane: function () {\n var that = this;\n if (that.pane) {\n that.pane.keyboardManager.destroy();\n that.pane.unbind(ACTION);\n that.pane.destroy();\n delete that.pane;\n that.content.css('margin-right', '');\n }\n },\n _wrapper: function () {\n var that = this, options = that.options, styles = TaskBoard.styles, headerElm = '
', contentElm = '
', colsContainer = '
';\n that.element.addClass(styles.wrapper).width(options.width).height(options.height).attr('role', 'application');\n that.header = $(headerElm).appendTo(that.element);\n that.content = $(contentElm).appendTo(that.element);\n that.columnsContainer = $(colsContainer).appendTo(that.content);\n },\n _initToolbar: function () {\n var that = this, styles = TaskBoard.styles, options = that.options, toolbarElm = $('
'), toolbarOptions = isArray(options.toolbar) ? { items: options.toolbar } : options.toolbar;\n if (options.toolbar === false) {\n return;\n }\n toolbarOptions = extend({}, toolbarOptions, {\n taskboard: this,\n messages: options.messages,\n action: that.executeCommand.bind(that),\n states: that._buildStates()\n });\n that.header.append(toolbarElm);\n that.toolbar = new ui.taskboard.ToolBar(toolbarElm, toolbarOptions);\n },\n _buildStates: function () {\n var that = this;\n return {\n isEditable: that._isEditable(),\n isReorderable: that._isReorderable(),\n isSelectable: that._isSelectable(),\n isReadOnly: !that._isReorderable() && !that._isEditable(),\n isDisabled: !that._isReorderable() && !that._isEditable() && !that._isSelectable(),\n isSearchable: that._isSearchable(),\n notLocalColumns: !(that.columnsDataSource.transport instanceof kendo.data.LocalTransport),\n isRtl: kendo.support.isRtl(that.wrapper)\n };\n },\n _isSearchable: function () {\n return !!this.options.search;\n },\n _isEditable: function () {\n return !!this.options.editable;\n },\n _isReorderable: function () {\n return !!this.options.reorderable;\n },\n _isSelectable: function () {\n return !!this.options.selectable;\n },\n executeCommand: function (args) {\n var that = this, commandName = args.command, commandOptions = extend({ taskboard: this }, isPlainObject(args.options) ? that._extendExecArgs(args.options) : { value: args.options }), command = ui.taskboard.commands[commandName] && new ui.taskboard.commands[commandName](commandOptions);\n if (!that.trigger(EXECUTE, args)) {\n if (command) {\n command.exec();\n } else {\n window.console.warn(kendo.format('Trying to use {0} command, but such is not available in the kendo.ui.taskboard.commands namespace!', commandName));\n }\n }\n },\n _extendExecArgs: function (args) {\n var that = this, target = args.draggableEvent ? args.item : args.target, columnElm, cardElm, columnDataItem, cardDataItem;\n if (args.card) {\n target = that.items().filter(function (idx, elm) {\n return $(elm).attr(kendo.attr('uid')) === args.card.get('uid');\n });\n }\n if (!target || !(target && target.length)) {\n return args;\n }\n columnElm = args.columnElement || (target.is(DOT + TaskBoard.styles.column) ? target : target.parents(DOT + TaskBoard.styles.column));\n columnDataItem = that.columnsDataSource.getByUid(columnElm.data(kendo.ns + 'uid'));\n cardElm = target.is(DOT + TaskBoard.styles.card) ? target : target.closest(DOT + TaskBoard.styles.card);\n cardDataItem = that.dataSource.getByUid(cardElm.data(kendo.ns + 'uid'));\n return extend(args, {\n card: cardDataItem,\n cardElement: cardElm.length ? cardElm : undefined,\n column: columnDataItem,\n columnElement: columnElm.length ? columnElm : undefined\n });\n },\n _select: function (card, toggle) {\n var that = this;\n if (toggle === null) {\n toggle = true;\n }\n if (!that.trigger(SELECT, { card: card })) {\n that.select(card, toggle);\n that.previewCard(card);\n }\n },\n _columnsDataSource: function () {\n var that = this, options = that.options, columnSettings = options.columnSettings, columnsDataSource = options.columns;\n columnsDataSource = isArray(columnsDataSource) ? { data: columnsDataSource } : columnsDataSource;\n if (columnSettings.dataOrderField && !columnsDataSource.sort) {\n columnsDataSource.sort = {\n field: columnSettings.dataOrderField,\n dir: 'asc'\n };\n }\n if (!columnsDataSource.schema) {\n var fields = {};\n fields[columnSettings.dataStatusField] = {\n type: 'string',\n defaultValue: function () {\n return kendo.guid().split('-')[0];\n }\n };\n fields[columnSettings.dataTextField] = { type: 'string' };\n if (columnSettings.dataOrderField) {\n fields[columnSettings.dataOrderField] = { type: 'number' };\n }\n columnsDataSource.schema = { model: { fields: fields } };\n }\n if (that.columnsDataSource && that._columnsChangeHandler) {\n that.columnsDataSource.unbind(CHANGE, that._columnsChangeHandler);\n that.columnsDataSource.unbind(CHANGE, that._columnsErrorHandler);\n } else {\n that._columnsChangeHandler = proxy(that._columnsDataSourceChange, that);\n that._columnsErrorHandler = proxy(that._error, that);\n }\n that.columnsDataSource = DataSource.create(columnsDataSource).bind(CHANGE, that._columnsChangeHandler).bind(ERROR, that._columnsErrorHandler);\n },\n _columnsDataSourceChange: function (ev) {\n var that = this, view = that.columnsDataSource.view(), columnSettings = extend(true, {}, that.options.columnSettings, {\n messages: that.options.messages,\n states: that._buildStates(),\n sortableIdentifier: that._sortableIdentifier\n }), statusField = columnSettings.dataStatusField;\n if (ev.action && ev.action !== 'sync') {\n return;\n }\n if (that.trigger(COLUMNSDATABINDING, ev)) {\n return;\n }\n that._progress(true);\n that._columns = {};\n that.columnsContainer.html('');\n for (var i = 0; i < view.length; i++) {\n var data = view[i];\n var status = data[statusField] || GENERIC;\n var column;\n column = that._columns[status] = new ui.taskboard.Column(columnSettings, data);\n that.columnsContainer.append(column.element);\n column.bind(ACTION, that.executeCommand.bind(that));\n column.bind(MOVE, proxy(that._move, that));\n column.bind(MOVE_END, proxy(that._moveEnd, that));\n column.bind(MOVE_START, proxy(that._moveStart, that));\n column.bind(CHANGE, proxy(that._changeOrder, that));\n that._tabindex(column.element);\n }\n if (ev.action === 'sync' || ev.action === undefined) {\n that._renderCards(that.dataSource.view());\n }\n that._progress(false);\n that.trigger(COLUMNSDATABOUND, ev);\n },\n _move: function (ev) {\n this.trigger(MOVE, this._extendExecArgs(ev));\n },\n _moveEnd: function (ev) {\n this.trigger(MOVE_END, this._extendExecArgs(ev));\n },\n _moveStart: function (ev) {\n this.trigger(MOVE_START, this._extendExecArgs(ev));\n },\n _changeOrder: function (ev) {\n this.trigger(CHANGE, this._extendExecArgs(ev));\n },\n _dataSource: function () {\n var that = this, options = that.options, dataSource = options.dataSource;\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n if (options.dataOrderField && !dataSource.sort) {\n dataSource.sort = {\n field: options.dataOrderField,\n dir: 'asc'\n };\n }\n if (!dataSource.schema) {\n var fields = {};\n fields[options.dataStatusField] = { type: 'string' };\n fields[options.dataTitleField] = { type: 'string' };\n fields[options.dataDescriptionField] = { type: 'string' };\n fields[options.dataCategoryField] = { type: 'string' };\n if (options.dataOrderField) {\n fields[options.dataOrderField] = { type: 'number' };\n }\n dataSource.schema = { model: { fields: fields } };\n }\n if (that.dataSource && that._changeHandler) {\n that.dataSource.unbind(CHANGE, that._changeHandler);\n that.dataSource.unbind(ERROR, that._errorHandler);\n } else {\n that._changeHandler = proxy(that._change, that);\n that._errorHandler = proxy(that._error, that);\n }\n that.dataSource = DataSource.create(dataSource).bind(CHANGE, that._changeHandler);\n },\n _change: function (ev) {\n var that = this;\n if (ev.action && ev.action !== 'sync') {\n return;\n }\n if (that.trigger(DATABINDING, ev)) {\n return;\n }\n that._progress(true);\n that._clearColumns();\n that._renderCards(that.dataSource.view());\n that._closePane();\n that.trigger(DATABOUND, ev);\n that._progress(false);\n },\n _error: function () {\n this._progress(false);\n },\n _renderCards: function (data) {\n var that = this;\n for (var i = 0; i < data.length; i++) {\n that._renderCard(data[i]);\n }\n },\n _renderCard: function (card) {\n var that = this, options = extend({}, that.options, { states: that._buildStates() }), statusField = options.dataStatusField, status = card[statusField] || GENERIC;\n if (status && that._columns[status]) {\n card = new ui.taskboard.Card(options, card, that.resources);\n that._columns[status].addCard(card.element);\n that._tabindex(card.element);\n }\n },\n _clearColumns: function () {\n var that = this;\n for (var key in that._columns) {\n that._columns[key].empty();\n }\n },\n _initCardMenu: function () {\n var that = this, options = that.options, cardMenuOptions = isArray(options.cardMenu) ? { items: options.cardMenu } : options.cardMenu;\n cardMenuOptions = extend({}, {\n messages: options.messages,\n target: that.columnsContainer,\n filter: '.k-taskboard-card-menu-button',\n action: that.executeCommand.bind(that),\n showOn: 'click',\n alignToAnchor: true,\n states: that._buildStates()\n }, cardMenuOptions);\n if (options.cardMenu === false) {\n return;\n }\n that.cardMenu = new ui.taskboard.CardMenu('', cardMenuOptions);\n },\n _initResources: function () {\n var that = this, resources = that.options.resources;\n for (var i = 0; i < resources.length; i++) {\n that._addResource(resources[i]);\n }\n },\n _addResource: function (resource) {\n var that = this;\n if (!that.resources) {\n that.resources = {};\n }\n that.resources[resource.field] = {\n field: resource.field,\n name: resource.name,\n title: resource.title || resource.field,\n dataTextField: resource.dataTextField || 'text',\n dataValueField: resource.dataValueField || 'value',\n dataColorField: resource.dataColorField || 'color',\n valuePrimitive: resource.valuePrimitive === false ? false : true,\n multiple: resource.multiple || false,\n dataSource: that._resourceDataSource(resource.dataSource)\n };\n },\n _resourceDataSource: function (resourceDS) {\n var dataSource = isArray(resourceDS) ? { data: resourceDS } : resourceDS, dataSourceInstance = kendo.data.DataSource.create(dataSource);\n return dataSourceInstance;\n },\n _progress: function (toggle) {\n var that = this;\n kendo.ui.progress(that.element, toggle);\n },\n _initKeyboard: function () {\n var that = this;\n that.keyboardManager = new ui.taskboard.KeyboardManager(that.element);\n that.keyboardManager.bind(ACTION, that.executeCommand.bind(that));\n that._registerShortcuts();\n },\n _registerShortcuts: function () {\n var that = this, states = that._buildStates();\n if (states.isEditable) {\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, { keyCode: kendo.keys.DELETE }, { command: 'DeleteColumnCommand' });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: 'e',\n ctrlKey: true\n }, {\n command: 'EditColumnCommand',\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: 'a',\n ctrlKey: true\n }, {\n command: 'AddCardCommand',\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column + ' *', { keyCode: kendo.keys.ESC }, { command: 'CancelEditColumnCommand' });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.DELETE }, { command: 'DeleteCardCommand' });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: 'e',\n ctrlKey: true\n }, {\n command: 'EditCardCommand',\n handler: preventDefault\n });\n }\n if (states.isSelectable) {\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.ENTER }, {\n command: 'SelectCardCommand',\n handler: preventDefault\n });\n }\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.UP }, {\n command: 'MoveFocusCommand',\n options: { value: 'up' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.DOWN }, {\n command: 'MoveFocusCommand',\n options: { value: 'down' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.LEFT }, {\n command: 'MoveFocusCommand',\n options: { value: 'left' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, { keyCode: kendo.keys.RIGHT }, {\n command: 'MoveFocusCommand',\n options: { value: 'right' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, { keyCode: kendo.keys.LEFT }, {\n command: 'MoveFocusCommand',\n options: { value: 'left' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, { keyCode: kendo.keys.RIGHT }, {\n command: 'MoveFocusCommand',\n options: { value: 'right' },\n handler: preventDefault\n });\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, { keyCode: kendo.keys.DOWN }, {\n command: 'MoveFocusCommand',\n options: { value: 'down' },\n handler: preventDefault\n });\n },\n destroy: function () {\n var that = this;\n if (that._columnsChangeHandler) {\n that.columnsDataSource.unbind(CHANGE, that._columnsChangeHandler);\n that.columnsDataSource.unbind(CHANGE, that._columnsErrorHandler);\n }\n if (that._changeHandler) {\n that.dataSource.unbind(CHANGE, that._changeHandler);\n that.dataSource.unbind(ERROR, that._errorHandler);\n }\n for (var key in that._columns) {\n that._columns[key].destroy();\n }\n if (that.toolbar) {\n that.toolbar.destroy();\n }\n if (that.cardMenu) {\n that.cardMenu.destroy();\n }\n if (that.keyboardManager) {\n that.keyboardManager.destroy();\n }\n if (that.pane) {\n that.closePane();\n }\n Widget.fn.destroy.call(that);\n }\n });\n kendo.ui.plugin(TaskBoard);\n extend(true, TaskBoard, { styles: TaskBoardStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}