{"version":3,"file":"kendo.gantt.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendogantt","js","this","$","undefined$1","kendo","window","keys","supportsMedia","mobileOS","support","Widget","ui","encode","htmlEncode","ObservableObject","data","ObservableArray","Query","isArray","Array","isFunction","extend","isPlainObject","outerWidth","_outerWidth","outerHeight","_outerHeight","NS","TABINDEX","STRING","DOT","VIEWS_DROPDOWN_TEMPLATE","label","styles","views","viewsDropdown","Object","map","view","title","join","ADD_ACTIONS","text","ganttStyles","wrapper","plannedTasks","rowHeight","content","listWrapper","list","timelineWrapper","timeline","splitBar","splitter","popupWrapper","popupList","resizeHandle","icon","item","line","buttonDelete","buttonCancel","buttonSave","buttonToggle","buttonDefaults","primary","hovered","selected","focused","focusedCell","gridHeader","gridHeaderWrap","gridContent","tasks","popup","form","editForm","formContainer","resourcesFormContainer","message","buttonsContainer","button","editField","editLabel","resourcesField","toolbar","headerWrapper","footerWrapper","viewsWrapper","iconPlus","iconPdf","iconToggle","viewButton","link","pdfButton","appendButton","selector","uid","attr","focusTable","table","direct","parents","scrollPositions","parentsUntil","filter","index","element","getComputedStyles","overflow","add","each","parent","scrollTop","setActive","e","focus","Gantt","init","options","events","dataSource","fn","call","_events","_wrapper","_resources","length","_timeline","_processDefaults","_toolbar","_footer","_splitter","_adjustDimensions","_preventRefresh","_selectedViewName","_dataSource","_assignments","_list","_dependencies","_scrollable","_dataBind","_attachEvents","_createEditor","notify","_showWatermarkOverlay","name","autoBind","navigatable","selectable","editable","resizable","columnResizeHandleWidth","columns","dependencies","resources","assignments","taskTemplate","messages","save","cancel","destroy","deleteTaskConfirmation","deleteDependencyConfirmation","deleteTaskWindowTitle","deleteDependencyWindowTitle","selectView","day","week","month","year","start","end","actions","append","addChild","insertBefore","insertAfter","pdf","toggle","editor","editorTitle","resourcesEditorTitle","plannedStart","plannedEnd","percentComplete","assignButton","resourcesHeader","unitsHeader","addNew","percentCompleteHint","remove","actualStart","actualEnd","parentOptionLabel","general","predecessors","successors","other","dependencyType","switchText","offsetTooltipAdvanced","offsetTooltipDelay","seconds","minutes","hours","days","showWorkHours","showWorkDays","workDayStart","Date","workDayEnd","workWeekStart","workWeekEnd","hourSpan","snap","height","listWidth","showPlannedTasks","select","value","find","_selectionUpdate","clearSelection","unbind","_refreshHandler","_progressHandler","_errorHandler","_dependencyRefreshHandler","_dependencyErrorHandler","getKendoToolBar","footer","_editor","_resourceEditorWindow","_resizeDraggable","layout","getKendoSplitter","off","_mediaQuery","removeListener","_mediaQueryHandler","_resizeHandler","setOptions","newOptions","deepExtend","selectedView","isSettings","type","empty","_setEvents","resize","bind","on","matches","kendoSplitter","orientation","panes","collapsible","scrollable","size","width","addClass","appendTo","css","treelistWrapper","_viewClickHandler","target","trigger","preventDefault","_togglePane","that","treelist","contentSelector","is","removeClass","refresh","_resize","ns","viewsButtons","toolbarStyles","actionsMessages","defaults","menuButtons","m","attributes","class","click","_addClickHandler","open","_openAddClickHandler","saveAsPDF","showText","switchLabel","template","component","componentOptions","checked","change","_togglePlannedTasks","unchecked","viewsDdl","togglable","group","viewsGroup","current","toLowerCase","push","values","t","buttons","_viewsButtons","defaultCommands","_processTools","items","commands","tools","spacerPresent","create","c","splitbar","toolbarEl","_suppressResize","hide","show","viewsDropdownSelector","toolsOptions","prepend","kendoToolBar","defaultTools","parentMessages","matchMedia","addListener","val","toggleSwitch","direction","animation","effects","toolbarHeight","footerHeight","totalHeight","totalWidth","treeListVisible","splitBarWidth","treeListWidth","timelineWidth","children","_scrollTo","action","scrollTarget","id","closest","get","scrollIntoView","_addTask","orderId","task","_createNewModel","firstSlot","_timeSlots","set","_createTask","dataItem","taskParent","_getListEditable","update","reorder","mode","move","reorderable","clickMoveClick","_getListOptions","filterable","columnMenu","field","_attachResourceEditor","column","i","_resourcePopupEditor","_attachListEvents","oldIndex","newIndex","oldWidth","newWidth","_navigatable","model","container","cell","_preventItemChange","closeCell","key","updatedValues","previousTask","updateDuration","duration","updatePlannedDuration","plannedDuration","hasOwnProperty","getTime","isCurrentInHeader","currentIndex","rowIndex","updateInfo","hasChanges","cancelChanges","_updateAssignments","Math","max","cellIndex","_requestStart","sync","then","_tabPressed","td","tbody","eq","_setCurrent","sender","position","parentId","source","sort","dir","_updateTask","selection","listElement","listOptions","GanttList","prefix","edit","navigate","trimOptions","GanttTimeline","viewName","replace","viewsEl","getKendoButtonGroup","getByUid","resizeStart","dependency","predecessorId","predecessor","successorId","successor","_createDependency","currentUid","editTask","removeTask","summary","removeDependency","_error","GanttDataSource","refreshDependencies","GanttDependencyDataSource","dataTextField","dataColorField","dataFormatField","DataSource","_assignmentsRefreshHandler","dataTaskIdField","dataResourceIdField","dataValueField","gantt","PopupEditor","_createResourceEditor","cancelTask","saveTask","updateDependencies","buttonsEl","dialog","popupStyles","dialogEl","format","kendoButton","themeColor","updateModel","close","kendoWindow","modal","draggable","visible","deactivate","center","unitsValidation","step","min","assignmentsModel","schema","resourceTextField","fields","Units","validation","_resourceEditor","ResourceEditor","r","range","_render","taskTree","_renderDependencies","date","_scrollToDate","_modelFromElement","setDataSource","fetch","setDependenciesDataSource","assignment","resource","taskId","resourceId","hasMatch","operator","toArray","_updateAssignment","splice","_removeAssignment","shift","j","newLength","_createAssignment","taskCopy","toJSON","_editTask","difference","hasResourceChanges","k","updated","u","some","concat","dirty","_syncDataSource","_updateDependency","created","d","_preventDependencyRefresh","destroyed","resourceValueField","_taskConfirm","_removeTask","insert","_scrollToUid","resourceValue","_dependencyConfirm","_removeDependency","_removeTaskDependencies","_removeTaskAssignments","callback","_confirm","confirmation","showDialog","_progress","cachedUid","scrollToUid","cachedIndex","_selected","_assignResources","_renderTree","_current","assigments","applyTaskResource","setter","wrapTask","resourcedId","valueFormat","formatedValue","toString","color","_wrapResourceData","result","taskAssignments","valuePerResource","progress","headerSelector","timelineHeader","timelineContent","treeListHeader","treeListContent","scrollLeft","delta","wheelDeltaY","currentTarget","one","headerTable","contentTable","tables","isInput","ctrlKey","_focusTimeout","setTimeout","focusedIndex","keyCode","focusSequence","contains","F10","first","TAB","shiftKey","hasClass","last","DELETE","selectedTask","deleteAction","tagName","_viewByIndex","promises","when","apply","done","_adjustHeight","_renderCurrentTime","toggleClass","_setPlanned","PDFMixin","_drawPDF","listTableWidth","listTableHeight","toolbarsHeight","timelineTableWidth","clone","_drawPDFShadow","avoidLinks","plugin","jQuery"],"sources":["kendo.gantt.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.data.js'), require('kendo.resizable.js'), require('kendo.switch.js'), require('kendo.gantt.data.js'), require('kendo.gantt.editors.js'), require('kendo.gantt.list.js'), require('kendo.gantt.timeline.js'), require('kendo.splitter.js'), require('kendo.pdf.js'), require('kendo.toolbar.js'), require('kendo.html.button.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.data', 'kendo.resizable', 'kendo.switch', 'kendo.gantt.data', 'kendo.gantt.editors', 'kendo.gantt.list', 'kendo.gantt.timeline', 'kendo.splitter', 'kendo.pdf', 'kendo.toolbar', 'kendo.html.button'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendogantt = global.kendogantt || {}, global.kendogantt.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"gantt\",\n name: \"Gantt\",\n category: \"web\",\n description: \"The Gantt component.\",\n depends: [ \"data\", \"resizable\", \"switch\", \"gantt.data\", \"gantt.editors\", \"gantt.list\", \"gantt.timeline\", \"pdf\", \"toolbar\", \"html.button\" ]\n };\n (function($, undefined$1) {\n\n var kendo = window.kendo,\n keys = kendo.keys,\n supportsMedia = \"matchMedia\" in window,\n mobileOS = kendo.support.mobileOS,\n Widget = kendo.ui.Widget,\n encode = kendo.htmlEncode,\n ObservableObject = kendo.data.ObservableObject,\n ObservableArray = kendo.data.ObservableArray,\n Query = kendo.data.Query,\n isArray = Array.isArray,\n isFunction = kendo.isFunction,\n extend = $.extend,\n isPlainObject = $.isPlainObject,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n defaultIndicatorWidth = 3,\n\n NS = \".kendoGantt\",\n PERCENTAGE_FORMAT = \"p0\",\n TABINDEX = \"tabIndex\",\n STRING = \"string\",\n DOT = \".\",\n TASK_DELETE_CONFIRM = \"Are you sure you want to delete this task?\",\n DEPENDENCY_DELETE_CONFIRM = \"Are you sure you want to delete this dependency?\",\n VIEWS_DROPDOWN_TEMPLATE = ({ label, styles, views }) => `',\n MIN_SCREEN = \"(max-width: 480px)\",\n ADD_ACTIONS = [{\n data: \"add\",\n text: \"addChild\"\n },\n {\n data: \"insert-before\",\n text: \"insertBefore\"\n },\n {\n data: \"insert-after\",\n text: \"insertAfter\"\n }];\n\n var ganttStyles = {\n wrapper: \"k-gantt\",\n plannedTasks: \"k-gantt-planned\",\n rowHeight: \"k-gantt-rowheight\",\n content: \"k-gantt-content\",\n listWrapper: \"k-gantt-treelist\",\n list: \"k-gantt-treelist\",\n timelineWrapper: \"k-gantt-timeline-pane\",\n timeline: \"k-gantt-timeline-pane\",\n splitBar: \"k-splitbar\",\n splitter: \"k-splitter\",\n popupWrapper: \"k-list-container\",\n popupList: \"k-list k-reset\",\n resizeHandle: \"k-resize-handle\",\n icon: \"k-icon\",\n item: \"k-item\",\n line: \"k-gantt-line\",\n buttonDelete: \"k-gantt-delete\",\n buttonCancel: \"k-gantt-cancel\",\n buttonSave: \"k-gantt-update\",\n buttonToggle: \"k-gantt-toggle\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid\",\n primary: \"k-button-solid-primary\",\n hovered: \"k-hover\",\n selected: \"k-selected\",\n focused: \"k-focus\",\n focusedCell: \"k-focus\",\n gridHeader: \"k-grid-header\",\n gridHeaderWrap: \"k-grid-header-wrap\",\n gridContent: \"k-grid-content\",\n tasks: \"k-gantt-tasks\",\n popup: {\n form: \"k-popup-edit-form\",\n editForm: \"k-gantt-edit-form\",\n formContainer: \"k-edit-form-container\",\n resourcesFormContainer: \"k-resources-form-container\",\n message: \"k-popup-message\",\n buttonsContainer: \"k-edit-buttons\",\n button: \"k-button\",\n editField: \"k-edit-field\",\n editLabel: \"k-edit-label\",\n resourcesField: \"k-gantt-resources\"\n },\n toolbar: {\n headerWrapper: \"k-gantt-header k-gantt-toolbar\",\n footerWrapper: \"k-gantt-footer k-gantt-toolbar\",\n toolbar: \"k-gantt-toolbar\",\n views: \"k-gantt-views\",\n viewsWrapper: \"k-gantt-views-wrapper\",\n viewsDropdown: \"k-views-dropdown\",\n button: \"k-button\",\n buttonToggle: \"k-gantt-toggle\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid\",\n iconPlus: \"plus\",\n iconPdf: \"file-pdf\",\n iconToggle: \"layout-1-by-4\",\n viewButton: \"k-view\",\n link: \"k-link\",\n pdfButton: \"k-gantt-pdf\",\n appendButton: \"k-gantt-create\"\n }\n };\n\n function selector(uid) {\n return \"[\" + kendo.attr(\"uid\") + (uid ? \"='\" + uid + \"']\" : \"]\");\n }\n\n function trimOptions(options) {\n delete options.name;\n delete options.prefix;\n\n delete options.remove;\n delete options.edit;\n delete options.add;\n delete options.navigate;\n\n return options;\n }\n\n function focusTable(table, direct) {\n var wrapper = table.parents('[' + kendo.attr(\"role\") + '=\"gantt\"]');\n var scrollPositions = [];\n var parents = scrollableParents(wrapper);\n\n table.attr(TABINDEX, 0);\n\n if (direct) {\n parents.each(function(index, parent) {\n scrollPositions[index] = $(parent).scrollTop();\n });\n }\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n table[0].setActive();\n } catch (e) {\n table[0].focus();\n }\n\n if (direct) {\n parents.each(function(index, parent) {\n $(parent).scrollTop(scrollPositions[index]);\n });\n }\n }\n\n function scrollableParents(element) {\n return $(element).parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow != \"visible\";\n })\n .add(window);\n }\n\n var Gantt = Widget.extend({\n init: function(element, options, events) {\n if (isArray(options)) {\n options = { dataSource: options };\n }\n\n Widget.fn.init.call(this, element, options);\n\n if (events) {\n this._events = events;\n }\n\n this._wrapper();\n\n this._resources();\n\n if (!this.options.views || !this.options.views.length) {\n this.options.views = [\"day\", \"week\", \"month\"];\n }\n\n this._timeline();\n\n this._processDefaults();\n this._toolbar();\n this._footer();\n this._splitter();\n\n this._adjustDimensions();\n\n // Prevent extra refresh from setting the view\n this._preventRefresh = true;\n\n this.view(this.timeline._selectedViewName);\n\n this._preventRefresh = false;\n\n this._dataSource();\n\n this._assignments();\n\n this._list();\n\n this._dependencies();\n\n this._scrollable();\n\n this._dataBind();\n\n this._attachEvents();\n\n this._createEditor();\n\n kendo.notify(this);\n\n if (this._showWatermarkOverlay) {\n this._showWatermarkOverlay(this.wrapper[0]);\n }\n },\n\n events: [\n \"dataBinding\",\n \"dataBound\",\n \"add\",\n \"edit\",\n \"remove\",\n \"cancel\",\n \"save\",\n \"change\",\n \"navigate\",\n \"moveStart\",\n \"move\",\n \"moveEnd\",\n \"resizeStart\",\n \"resize\",\n \"resizeEnd\",\n \"columnHide\",\n \"columnReorder\",\n \"columnResize\",\n \"columnShow\",\n \"togglePlannedTasks\"\n ],\n\n options: {\n name: \"Gantt\",\n autoBind: true,\n navigatable: true,\n selectable: true,\n editable: true,\n resizable: false,\n columnResizeHandleWidth: defaultIndicatorWidth,\n columns: [],\n views: [],\n dataSource: {},\n dependencies: {},\n resources: {},\n assignments: {},\n taskTemplate: null,\n messages: {\n save: \"Save\",\n cancel: \"Cancel\",\n destroy: \"Delete\",\n deleteTaskConfirmation: TASK_DELETE_CONFIRM,\n deleteDependencyConfirmation: DEPENDENCY_DELETE_CONFIRM,\n deleteTaskWindowTitle: \"Delete task\",\n deleteDependencyWindowTitle: \"Delete dependency\",\n selectView: \"Select view\",\n views: {\n day: \"Day\",\n week: \"Week\",\n month: \"Month\",\n year: \"Year\",\n start: \"Start\",\n end: \"End\"\n },\n actions: {\n append: \"Add Task\",\n addChild: \"Add Child\",\n insertBefore: \"Add Above\",\n insertAfter: \"Add Below\",\n pdf: \"Export to PDF\",\n toggle: \"Toggle pane\"\n },\n editor: {\n editorTitle: \"Task\",\n resourcesEditorTitle: \"Resources\",\n title: \"Title\",\n start: \"Start\",\n end: \"End\",\n plannedStart: \"Planned Start\",\n plannedEnd: \"Planned End\",\n percentComplete: \"Complete\",\n resources: \"Resources\",\n assignButton: \"Assign\",\n resourcesHeader: \"Resources\",\n unitsHeader: \"Units\",\n parent: \"Parent\",\n addNew: \"Add\",\n name: \"Name\",\n percentCompleteHint: \"value from 0 to 1\",\n remove: \"Remove\",\n actualStart: \"Actual Start\",\n actualEnd: \"Actual End\",\n parentOptionLabel: \"-None-\",\n general: \"General\",\n predecessors: \"Predecessors\",\n successors: \"Successors\",\n other: \"Other\",\n dependencyType: \"Type\"\n },\n plannedTasks: {\n switchText: \"Planned Tasks\",\n offsetTooltipAdvanced: \"Met deadline earlier\",\n offsetTooltipDelay: \"Delay\",\n seconds: \"seconds\",\n minutes: \"minutes\",\n hours: \"hours\",\n days: \"days\"\n }\n },\n showWorkHours: true,\n showWorkDays: true,\n toolbar: null,\n workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n workWeekStart: 1,\n workWeekEnd: 5,\n hourSpan: 1,\n snap: true,\n height: 600,\n listWidth: \"30%\",\n rowHeight: null,\n showPlannedTasks: false\n },\n\n select: function(value) {\n var list = this.list;\n\n if (!value) {\n return list.select();\n }\n\n if (typeof value === STRING) {\n value = list.content.find(value);\n }\n\n list.select(value);\n this._selectionUpdate();\n\n return;\n },\n\n clearSelection: function() {\n this.list.clearSelection();\n this._selectionUpdate();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this.dataSource) {\n this.dataSource.unbind(\"change\", this._refreshHandler);\n this.dataSource.unbind(\"progress\", this._progressHandler);\n this.dataSource.unbind(\"error\", this._errorHandler);\n }\n\n if (this.dependencies) {\n this.dependencies.unbind(\"change\", this._dependencyRefreshHandler);\n this.dependencies.unbind(\"error\", this._dependencyErrorHandler);\n }\n\n if (this.timeline) {\n this.timeline.unbind();\n this.timeline.destroy();\n }\n\n if (this.list) {\n this.list.unbind();\n this.list.destroy();\n }\n\n if (this.toolbar && this.toolbar.getKendoToolBar()) {\n this.toolbar.getKendoToolBar().destroy();\n }\n\n if (this.footer && this.footer.getKendoToolBar()) {\n this.footer.getKendoToolBar().destroy();\n }\n\n if (this._editor) {\n this._editor.destroy();\n }\n\n if (this._resourceEditorWindow) {\n this._resourceEditorWindow.destroy();\n }\n\n if (this._resizeDraggable) {\n this._resizeDraggable.destroy();\n }\n\n if (this.layout && this.layout.getKendoSplitter()) {\n this.layout.getKendoSplitter().destroy();\n }\n\n this.toolbar.off(NS);\n\n if (supportsMedia) {\n this._mediaQuery.removeListener(this._mediaQueryHandler);\n this._mediaQuery = null;\n }\n\n $(window).off(\"resize\" + NS, this._resizeHandler);\n $(this.wrapper).off(NS);\n\n this.toolbar = null;\n this.footer = null;\n\n kendo.destroy(this.element);\n },\n\n setOptions: function(options) {\n var newOptions = kendo.deepExtend({}, this.options, options);\n\n var events = this._events;\n\n if (!options.views) {\n var selectedView = this.view().name;\n\n newOptions.views = $.map(this.options.views, function(view) {\n var isSettings = isPlainObject(view);\n var name = isSettings ? ((typeof view.type !== \"string\") ? view.title : view.type) : view;\n\n if (selectedView === name) {\n if (isSettings) {\n view.selected = true;\n } else {\n view = { type: name, selected: true };\n }\n } else if (isSettings) {\n view.selected = false;\n }\n\n return view;\n });\n }\n\n if (!options.dataSource) { newOptions.dataSource = this.dataSource; }\n if (!options.dependencies) { newOptions.dependencies = this.dependencies; }\n if (!options.resources) { newOptions.resources = this.resources; }\n if (!options.assignments) { newOptions.assignments = this.assignments; }\n\n this.destroy();\n this.element.empty();\n this.options = null;\n\n this.init(this.element, newOptions, events);\n\n Widget.fn._setEvents.call(this, newOptions);\n },\n\n _attachEvents: function() {\n this._resizeHandler = this.resize.bind(this, false);\n $(window).on(\"resize\" + NS, this._resizeHandler);\n\n if (supportsMedia) {\n this._mediaQueryHandler({ matches: this._mediaQuery.matches });\n }\n },\n\n _splitter: function() {\n this.splitter = this.layout.kendoSplitter({\n navigatable: this.options.navigatable,\n orientation: \"horizontal\",\n panes: [\n { collapsible: false, scrollable: false, label: \"Gantt List\" },\n { collapsible: false, scrollable: false, label: \"Gantt Timeline\" }\n ]\n }).getKendoSplitter();\n\n if (this.options.listWidth) {\n this.splitter.size(\".k-pane:first\", this.options.listWidth);\n }\n },\n\n _wrapper: function() {\n var ganttStyles = Gantt.styles;\n var options = this.options;\n var height = options.height;\n var width = options.width;\n\n this.wrapper = this.element.addClass(ganttStyles.wrapper).attr(\"role\", \"application\");\n this.layout = $(\"
\").appendTo(this.wrapper)\n .append(\"
\")\n .append(\"
\");\n\n if (options.showPlannedTasks) {\n this.wrapper.addClass(ganttStyles.plannedTasks);\n }\n\n if (height) {\n this.wrapper.css(\"height\", height);\n }\n\n if (width) {\n this.wrapper.css(\"width\", width);\n }\n\n if (options.rowHeight) {\n this.wrapper.addClass(ganttStyles.rowHeight);\n }\n\n this.treelistWrapper = this.wrapper.find(DOT + ganttStyles.list);\n this.timelineWrapper = this.wrapper.find(DOT + ganttStyles.timeline);\n\n this.treelistWrapper.css(\"width\", options.listWidth);\n this.timelineWrapper.css(\"width\", this.wrapper.width() - this.treelistWrapper.outerWidth());\n },\n\n _viewClickHandler: function(e) {\n var list = this.list;\n var name = e.target.attr(kendo.attr(\"name\"));\n\n if (list.editor && !list.editor.end()) {\n return;\n }\n\n if (!this.trigger(\"navigate\", { view: name })) {\n this.view(name);\n } else {\n e.preventDefault();\n }\n },\n\n _togglePane: function(e) {\n var that = this,\n treelist = that.treelistWrapper,\n timeline = that.timelineWrapper,\n contentSelector = DOT + ganttStyles.gridContent;\n\n e.preventDefault();\n\n if (treelist.is(\":visible\")) {\n treelist.addClass(\"k-hidden\");\n timeline.removeClass(\"k-hidden\");\n\n that.refresh();\n\n timeline\n .find(contentSelector)\n .scrollTop(that.scrollTop);\n } else {\n treelist.removeClass(\"k-hidden\");\n timeline.addClass(\"k-hidden\");\n\n treelist\n .find(contentSelector)\n .scrollTop(that.scrollTop);\n }\n\n that._resize();\n },\n\n _processDefaults: function() {\n var that = this,\n views = that.timeline.views,\n ns = kendo.ns,\n viewsButtons = [],\n toolbarStyles = Gantt.styles.toolbar,\n actionsMessages = this.options.messages.actions,\n items = ADD_ACTIONS.map((m) => ({\n text: actionsMessages[m.text],\n attributes: { \"data-type\": m.data }\n })),\n defaults = {\n append: {\n name: \"append\",\n type: \"dropDownButton\",\n menuButtons: items,\n icon: toolbarStyles.iconPlus,\n attributes: {\n class: toolbarStyles.appendButton\n },\n click: that._addClickHandler.bind(that),\n open: that._openAddClickHandler.bind(that)\n },\n pdf: {\n name: \"pdf\",\n type: \"button\",\n attributes: {\n class: toolbarStyles.pdfButton\n },\n icon: toolbarStyles.iconPdf,\n click: that.saveAsPDF.bind(that)\n },\n toggle: {\n name: \"toggle\",\n type: \"button\",\n showText: \"overflow\",\n attributes: {\n class: \"k-gantt-toggle\"\n },\n icon: toolbarStyles.iconToggle,\n click: that._togglePane.bind(that)\n },\n switchLabel: {\n template: \"\"\n },\n plannedTasks: {\n type: \"component\",\n component: \"Switch\",\n element: \"\",\n componentOptions: {\n checked: that.options.showPlannedTasks,\n change: that._togglePlannedTasks.bind(that),\n messages: {\n checked: \"\",\n unchecked: \"\"\n }\n }\n },\n viewsDdl: {\n template: VIEWS_DROPDOWN_TEMPLATE({\n views: that.timeline.views,\n styles: toolbarStyles,\n label: that.options.messages.selectView\n })\n },\n view: {\n name: \"view\",\n type: \"button\",\n togglable: true,\n group: \"views\"\n },\n viewsGroup: {\n type: \"buttonGroup\",\n attributes: {\n class: toolbarStyles.views\n }\n }\n };\n\n Object.keys(views).map(name => {\n var current = $.extend(true, {}, defaults.view);\n\n current.text = views[name].title;\n current.attributes = {\n class: \"k-view-\" + name.toLowerCase()\n };\n current.attributes[\"data\" + ns + \"-name\"] = name;\n\n defaults[name] = current;\n\n viewsButtons.push(name);\n });\n\n Object.values(defaults).map(t => {\n if (t.name === \"view\") {\n t.click = that._viewClickHandler.bind(that);\n }\n });\n\n defaults.viewsGroup.buttons = viewsButtons;\n\n that._viewsButtons = viewsButtons;\n that.defaultCommands = defaults;\n },\n\n _processTools: function(items) {\n var editable = this.options.editable,\n commands = [],\n tools = [\"toggle\"],\n spacerPresent = false,\n defaults = this.defaultCommands;\n\n if (!Array.isArray(items)) {\n if (editable && editable.create !== false) {\n tools.push(\"append\");\n }\n } else {\n commands = items;\n }\n\n commands.map(c => {\n if (c === \"plannedTasks\" || c.name === \"plannedTasks\") {\n spacerPresent = true;\n\n tools.push({\n type: \"spacer\"\n });\n\n tools.push(\"switchLabel\");\n }\n\n if (!defaults[c] && !defaults[c.name] && !c.template) {\n if (typeof c === STRING) {\n c = {\n name: c,\n type: \"button\",\n text: c,\n attributes: {\n class: \"k-gantt-\" + c\n }\n };\n } else {\n c = $.extend({}, {\n type: \"button\",\n text: c.name,\n attributes: {\n class: \"k-gantt-\" + c.name\n }\n }, c);\n }\n }\n\n tools.push(c);\n });\n\n if (!spacerPresent) {\n tools.push({\n type: \"spacer\"\n });\n }\n\n if (this._viewsButtons && this._viewsButtons.length > 0) {\n if (this._viewsButtons.length > 1) {\n tools.push(\"viewsDdl\");\n }\n\n tools.push(\"viewsGroup\");\n }\n\n return tools;\n },\n\n _mediaQueryHandler: function(e) {\n var that = this;\n var splitbar = that.layout.find(\".k-splitbar\");\n var splitter = that.layout.getKendoSplitter();\n var treelist = that.treelistWrapper;\n var timeline = that.timelineWrapper;\n var contentSelector = DOT + ganttStyles.gridContent;\n\n var toolbarEl = that.toolbar;\n var toolbar = toolbarEl.getKendoToolBar();\n\n if (e.matches) {\n treelist.addClass(\"k-hidden\");\n splitbar.addClass(\"k-hidden\");\n splitter._suppressResize = true;\n toolbar.hide(toolbarEl.find(\".k-gantt-views\"));\n toolbar.show(toolbarEl.find(\".k-views-dropdown\"));\n\n treelist.width(\"100%\");\n } else {\n splitter._suppressResize = false;\n treelist.removeClass(\"k-hidden\");\n splitbar.removeClass(\"k-hidden\");\n timeline.removeClass(\"k-hidden\");\n\n toolbar.show(toolbarEl.find(\".k-gantt-views\"));\n toolbar.hide(toolbarEl.find(\".k-views-dropdown\"));\n\n treelist.width(treelist.outerWidth());\n\n timeline\n .find(contentSelector)\n .scrollTop(that.scrollTop);\n }\n\n that._resize();\n },\n\n _toolbar: function() {\n var that = this;\n var ganttStyles = Gantt.styles;\n var viewsDropdownSelector = DOT + ganttStyles.toolbar.viewsDropdown;\n var toolsOptions = this.options.toolbar;\n var tools;\n var toolbar;\n\n if (typeof toolsOptions === STRING) {\n toolsOptions = kendo.template(toolsOptions).bind(this);\n }\n\n if (isFunction(toolsOptions)) {\n tools = this._processTools([{\n template: toolsOptions({})\n }]);\n } else {\n tools = this._processTools(toolsOptions);\n }\n\n toolbar = $(\"
\");\n\n this.wrapper.prepend(toolbar);\n this.toolbar = toolbar;\n\n toolbar.kendoToolBar({\n resizable: false,\n tools: tools,\n size: \"medium\",\n defaultTools: this.defaultCommands,\n parentMessages: this.options.messages.actions\n });\n\n if (supportsMedia) {\n this._mediaQuery = window.matchMedia(MIN_SCREEN);\n this._mediaQuery.addListener(this._mediaQueryHandler.bind(this));\n }\n\n toolbar.on(\"change\" + NS, viewsDropdownSelector, function() {\n var list = that.list;\n var name = $(this).val();\n\n if (list.editable && list.editable.trigger(\"validate\")) {\n return;\n }\n\n if (!that.trigger(\"navigate\", { view: name })) {\n that.view(name);\n }\n });\n\n this.toggleSwitch = toolbar.find('input.k-gantt-planned-switch').data(\"kendoSwitch\");\n },\n\n _footer: function() {\n var editable = this.options.editable;\n\n if (!editable || editable.create === false) {\n return;\n }\n\n var ganttStyles = Gantt.styles.toolbar;\n var messages = this.options.messages.actions;\n var footer = $(\"
\");\n\n this.wrapper.append(footer);\n this.footer = footer;\n\n footer.kendoToolBar({\n resizable: false,\n size: \"medium\",\n tools: [\"append\"],\n defaultTools: {\n append: extend(true, {}, this.defaultCommands.append, {\n direction: \"up\",\n animation: {\n open: {\n effects: \"slideIn:up\"\n }\n }\n })\n },\n parentMessages: messages\n });\n },\n\n _adjustDimensions: function() {\n var element = this.element;\n var toolbarHeight = outerHeight(this.toolbar);\n var footerHeight = this.footer ? outerHeight(this.footer) : 0;\n var totalHeight = element.height();\n var totalWidth = element.width();\n var treeListVisible = this.treelistWrapper.is(\":visible\");\n var splitBar = this.layout.find(\".k-splitbar\");\n var splitBarWidth = splitBar.is(\":visible\") ? outerWidth(splitBar) : 0;\n var treeListWidth = treeListVisible ? outerWidth(this.treelistWrapper) : 0;\n var timelineWidth = totalWidth - ( treeListWidth + splitBarWidth );\n\n this.layout.children().height(totalHeight - (toolbarHeight + footerHeight));\n this.timelineWrapper.width(timelineWidth);\n if (!treeListVisible) {\n this.timelineWrapper.css(\"left\", 0);\n }\n\n if (totalWidth < (treeListWidth + splitBarWidth)) {\n this.treelistWrapper.width(totalWidth - splitBarWidth);\n }\n },\n\n _scrollTo: function(value) {\n var view = this.timeline.view();\n var list = this.list;\n var attr = kendo.attr(\"uid\");\n var id = typeof value === \"string\" ? value :\n value.closest(\"tr\" + selector()).attr(attr);\n var action;\n var scrollTarget;\n var scrollIntoView = function() {\n if (scrollTarget.length !== 0) {\n action();\n }\n };\n\n if (view.content.is(\":visible\")) {\n scrollTarget = view.content.find(selector(id));\n action = function() {\n view._scrollTo(scrollTarget);\n };\n } else {\n scrollTarget = list.element.find(selector(id));\n action = function() {\n scrollTarget.get(0).scrollIntoView();\n };\n }\n\n scrollIntoView();\n },\n\n _addTask: function(selected, parent, type) {\n var dataSource = this.dataSource,\n task = dataSource._createNewModel({}),\n timeline = this.timeline,\n firstSlot = timeline.view()._timeSlots()[0],\n editable = this.list.editor,\n orderId;\n\n if (editable && editable.trigger(\"validate\")) {\n return;\n }\n\n task.set(\"title\", \"New task\");\n\n if (parent) {\n task.set(\"parentId\", parent.get(\"id\"));\n task.set(\"start\", parent.get(\"start\"));\n task.set(\"end\", parent.get(\"end\"));\n task.set(\"plannedStart\", parent.get(\"plannedStart\"));\n task.set(\"plannedEnd\", parent.get(\"plannedEnd\"));\n } else {\n task.set(\"start\", firstSlot.start);\n task.set(\"end\", firstSlot.end);\n }\n\n if (type && type !== \"add\") {\n orderId = selected.get(\"orderId\");\n orderId = type === \"insert-before\" ? orderId : orderId + 1;\n }\n\n this._createTask(task, orderId);\n },\n\n _addClickHandler: function(e) {\n var type = e.target.data(\"type\");\n var dataSource = this.dataSource;\n var selected = this.dataItem(this.select());\n var parent = dataSource.taskParent(selected);\n var target = type === \"add\" ? selected : parent;\n\n this._addTask(selected, target, type);\n },\n\n _openAddClickHandler: function(e) {\n var selected = this.select();\n\n if (!selected || selected.length === 0) {\n e.preventDefault();\n\n this._addTask();\n }\n },\n\n _getListEditable: function() {\n var editable = false,\n options = this.options;\n\n if (options.editable !== false) {\n editable = \"incell\";\n\n if (options.editable && options.editable.update === false) {\n editable = false;\n } else {\n if (!options.editable || options.editable.reorder !== false) {\n editable = {\n mode: \"incell\",\n move: {\n reorderable: true,\n clickMoveClick: options.editable.clickMoveClick === false ? false : true\n }\n };\n }\n }\n }\n\n return editable;\n },\n\n _getListOptions: function() {\n var options = this.options,\n editable = this._getListEditable(),\n listWrapper = this.wrapper.find(DOT + ganttStyles.list),\n ganttListOptions = {\n columns: options.columns || [],\n dataSource: this.dataSource,\n navigatable: options.navigatable,\n selectable: options.selectable,\n reorderable: options.reorderable,\n editable: editable,\n resizable: options.resizable,\n filterable: options.filterable,\n columnMenu: options.columnMenu,\n columnResizeHandleWidth: this.options.columnResizeHandleWidth,\n listWidth: outerWidth(listWrapper),\n resourcesField: this.resources.field,\n rowHeight: this.options.rowHeight\n };\n\n return ganttListOptions;\n },\n\n _attachResourceEditor: function(columns) {\n var column;\n\n for (var i = 0; i < columns.length; i++) {\n column = columns[i];\n\n if (column.field === this.resources.field && typeof column.editor !== \"function\") {\n column.editor = this._resourcePopupEditor.bind(this);\n }\n }\n },\n\n _attachListEvents: function() {\n var that = this;\n\n that.list\n .bind(\"columnShow\", function(e) {\n that.trigger(\"columnShow\", { column: e.column });\n })\n .bind(\"columnHide\", function(e) {\n that.trigger(\"columnHide\", { column: e.column });\n })\n .bind(\"columnReorder\", function(e) {\n that.trigger(\"columnReorder\", { column: e.column, oldIndex: e.oldIndex, newIndex: e.newIndex });\n })\n .bind(\"columnResize\", function(e) {\n that.trigger(\"columnResize\", { column: e.column, oldWidth: e.oldWidth, newWidth: e.newWidth });\n })\n .bind(\"render\", function() {\n that._navigatable();\n }, true)\n .bind(\"beforeEdit\", function(e) {\n\n if (that.trigger(\"edit\", { task: e.model, container: e.container })) {\n e.preventDefault();\n }\n })\n .bind(\"cancel\", function(e) {\n if (that.trigger(\"cancel\", { task: e.model, container: e.cell })) {\n e.preventDefault();\n return;\n }\n\n that._preventItemChange = true;\n that.list.closeCell(true);\n })\n .bind(\"save\", function(e) {\n var updatedValues = e.values,\n key;\n\n that.previousTask = {};\n that._preventRefresh = true;\n\n if (that.updateDuration === null || that.updateDuration === undefined$1) {\n that.updateDuration = e.model.duration();\n }\n\n if (that.updatePlannedDuration === null || that.updatePlannedDuration === undefined$1) {\n that.updatePlannedDuration = e.model.plannedDuration();\n }\n\n if (updatedValues.hasOwnProperty(\"start\")) {\n updatedValues.end = new Date(updatedValues.start.getTime() + that.updateDuration);\n }\n\n if (updatedValues.hasOwnProperty(\"plannedStart\") && updatedValues.plannedStart) {\n updatedValues.plannedEnd = new Date(updatedValues.plannedStart.getTime() + that.updatePlannedDuration);\n }\n\n for (key in updatedValues) {\n if (updatedValues.hasOwnProperty(key)) {\n that.previousTask[key] = e.model.get(key);\n }\n }\n\n that.updatedValues = updatedValues;\n })\n .bind(\"itemChange\", function(e) {\n var updateInfo = that.updatedValues,\n task = e.data,\n resourcesField = that.resources.field,\n previousTask = that.previousTask,\n current,\n isCurrentInHeader,\n currentIndex,\n rowIndex,\n navigatable = that.options.navigatable,\n key;\n\n if (that._preventItemChange) {\n that._preventItemChange = false;\n return;\n }\n\n for (key in previousTask) {\n if (previousTask.hasOwnProperty(key)) {\n task.set(key, previousTask[key]);\n }\n }\n\n that.previousTask = {};\n\n if (!that.trigger(\"save\", { task: task, values: updateInfo })) {\n if (updateInfo) {\n that._preventRefresh = true;\n that.dataSource.update(task, updateInfo);\n\n if (updateInfo[resourcesField]) {\n that._updateAssignments(task.get(\"id\"), updateInfo[resourcesField]);\n }\n }\n\n if (navigatable) {\n current = $(that.list.current());\n isCurrentInHeader = current.is(\"th\");\n rowIndex = current.closest(\"tr\").index();\n currentIndex = isCurrentInHeader ? current.parent().children(\":not(.k-group-cell)\").index(current[0]) : Math.max(that.list.cellIndex(current), 0);\n }\n\n that._preventRefresh = false;\n that._requestStart();\n that.dataSource.sync().then(function() {\n if (that.options.navigatable && !that._tabPressed) {\n if (!isCurrentInHeader) {\n var row = that.list.tbody.children().eq(rowIndex);\n\n var td = row.find(\">td:visible\")\n .eq(currentIndex);\n\n that.list._setCurrent(td, false, true);\n }\n }\n that._tabPressed = false;\n });\n } else if (that.dataSource.hasChanges()) {\n that.dataSource.cancelChanges(task);\n that._preventRefresh = false;\n that.refresh();\n }\n\n that.updatedValues = null;\n that.updateDuration = null;\n })\n .bind(\"change\", function() {\n that.trigger(\"change\");\n\n that._selectionUpdate();\n\n })\n .bind(\"navigate\", function(e) {\n var treeList = e.sender;\n var current = treeList.current();\n var uid;\n\n that._scrollTo(current);\n that.timeline.element.find(\"div.k-task\").attr(\"tabindex\", \"-1\");\n uid = current.closest(\"tr\").attr(\"data-uid\");\n that.timeline.element.find(\"div.k-task[data-uid='\" + uid + \"']\").attr(\"tabindex\", \"0\");\n })\n .bind(\"expand\", function(e) {\n e.preventDefault();\n e.model.set(\"expanded\", true);\n })\n .bind(\"collapse\", function(e) {\n e.preventDefault();\n e.model.set(\"expanded\", false);\n })\n .bind(\"dragend\", function(e) {\n var dataSource = that.dataSource,\n task, updateInfo;\n\n if (e.position === \"over\") {\n dataSource.cancelChanges();\n\n updateInfo = {\n parentId: e.source.parentId\n };\n\n task = dataSource.get(e.source.id);\n\n if (!that.trigger(\"save\", { task: task, values: updateInfo })) {\n dataSource.update(task, updateInfo);\n }\n\n dataSource.sync();\n }\n })\n .bind(\"dataBound\", function() {\n if (that.dataSource.sort().length === 0) {\n that.dataSource.sort([{ field: \"orderId\", dir: \"asc\" }]);\n }\n })\n .bind(\"reorder\", function(e) {\n that._updateTask(e.task, e.updateInfo);\n });\n },\n\n _selectionUpdate: function() {\n var that = this,\n selection = that.list.select();\n\n if (selection.length) {\n that.timeline.select(\"[data-uid='\" + selection.attr(\"data-uid\") + \"']\");\n } else {\n that.timeline.clearSelection();\n }\n },\n\n _list: function() {\n var ganttStyles = Gantt.styles,\n listWrapper = this.wrapper.find(DOT + ganttStyles.list),\n listElement = listWrapper.find(\"> div\"),\n listOptions = this._getListOptions();\n\n this._attachResourceEditor(listOptions.columns);\n\n this.list = new kendo.ui.GanttList(listElement, listOptions);\n\n this._attachListEvents();\n },\n\n _timeline: function() {\n var that = this;\n var ganttStyles = Gantt.styles;\n var options = trimOptions(extend(true, { resourcesField: this.resources.field }, this.options));\n var element = this.wrapper.find(DOT + ganttStyles.timeline + \" > div\");\n\n this.timeline = new kendo.ui.GanttTimeline(element, options);\n\n this.timeline\n .bind(\"navigate\", function(e) {\n var viewName = e.view.replace(/\\./g, \"\\\\.\").toLowerCase();\n var viewsEl = that.toolbar.find(DOT + ganttStyles.toolbar.views);\n var viewsGroup = viewsEl.getKendoButtonGroup();\n\n if (viewsGroup) {\n viewsGroup.select(viewsEl.find(DOT + ganttStyles.toolbar.viewButton + \"-\" + viewName));\n }\n\n that.toolbar\n .find(DOT + ganttStyles.toolbar.viewsDropdown)\n .val(e.view);\n\n that.refresh();\n })\n .bind(\"moveStart\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n e.preventDefault();\n return;\n }\n\n if (that.trigger(\"moveStart\", { task: e.task })) {\n e.preventDefault();\n }\n })\n .bind(\"move\", function(e) {\n var task = e.task;\n var start = e.start;\n var end = new Date(start.getTime() + task.duration());\n\n if (that.trigger(\"move\", { task: task, start: start, end: end })) {\n e.preventDefault();\n }\n })\n .bind(\"moveEnd\", function(e) {\n var task = e.task;\n var start = e.start;\n var end = new Date(start.getTime() + task.duration());\n\n if (!that.trigger(\"moveEnd\", { task: task, start: start, end: end })) {\n that._updateTask(that.dataSource.getByUid(task.uid), {\n start: start,\n end: end\n });\n }\n })\n .bind(\"resizeStart\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n e.preventDefault();\n return;\n }\n\n if (that.trigger(\"resizeStart\", { task: e.task })) {\n e.preventDefault();\n }\n })\n .bind(\"resize\", function(e) {\n if (that.trigger(\"resize\", { task: e.task, start: e.start, end: e.end })) {\n e.preventDefault();\n }\n })\n .bind(\"resizeEnd\", function(e) {\n var task = e.task;\n var updateInfo = {};\n\n if (e.resizeStart) {\n updateInfo.start = e.start;\n } else {\n updateInfo.end = e.end;\n }\n\n if (!that.trigger(\"resizeEnd\", { task: task, start: e.start, end: e.end })) {\n that._updateTask(that.dataSource.getByUid(task.uid), updateInfo);\n }\n })\n .bind(\"percentResizeStart\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n e.preventDefault();\n }\n })\n .bind(\"percentResizeEnd\", function(e) {\n that._updateTask(that.dataSource.getByUid(e.task.uid), { percentComplete: e.percentComplete });\n })\n .bind(\"dependencyDragStart\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n e.preventDefault();\n }\n })\n .bind(\"dependencyDragEnd\", function(e) {\n var dependency = that.dependencies._createNewModel({\n type: e.type,\n predecessorId: e.predecessor.id,\n successorId: e.successor.id\n });\n\n that._createDependency(dependency);\n })\n .bind(\"select\", function(e) {\n var editable = that.list.editor,\n current = that.select(),\n currentUid;\n\n if (editable) {\n editable.end();\n }\n\n if (current && current.length) {\n currentUid = current.data(\"uid\");\n }\n\n if (currentUid !== e.uid) {\n that.select(\"[data-uid='\" + e.uid + \"']\");\n that.trigger(\"change\");\n }\n })\n .bind(\"editTask\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n return;\n }\n\n that.editTask(e.uid);\n })\n .bind(\"clear\", function() {\n that.clearSelection();\n that.trigger(\"change\");\n })\n .bind(\"removeTask\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n return;\n }\n\n that.removeTask(that.dataSource.getByUid(e.uid));\n })\n .bind(\"expand\", function(e) {\n var model = that.dataSource.getByUid(e.uid);\n if (model.summary && !model.get(\"expanded\")) {\n model.set(\"expanded\", true);\n } else {\n e.preventDefault();\n }\n })\n .bind(\"collapse\", function(e) {\n var model = that.dataSource.getByUid(e.uid);\n\n if (model.summary && model.get(\"expanded\")) {\n model.set(\"expanded\", false);\n } else {\n e.preventDefault();\n }\n })\n .bind(\"removeDependency\", function(e) {\n var editable = that.list.editor;\n\n if (editable && !editable.end()) {\n return;\n }\n\n that.removeDependency(that.dependencies.getByUid(e.uid));\n });\n },\n\n _dataSource: function() {\n var options = this.options;\n var dataSource = options.dataSource;\n\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n\n if (this.dataSource && this._refreshHandler) {\n this.dataSource\n .unbind(\"change\", this._refreshHandler)\n .unbind(\"progress\", this._progressHandler)\n .unbind(\"error\", this._errorHandler);\n } else {\n this._refreshHandler = this.refresh.bind(this);\n this._progressHandler = this._requestStart.bind(this);\n this._errorHandler = this._error.bind(this);\n }\n\n this.dataSource = kendo.data.GanttDataSource.create(dataSource)\n .bind(\"change\", this._refreshHandler)\n .bind(\"progress\", this._progressHandler)\n .bind(\"error\", this._errorHandler);\n },\n\n _dependencies: function() {\n var dependencies = this.options.dependencies || {};\n var dataSource = isArray(dependencies) ? { data: dependencies } : dependencies;\n\n if (this.dependencies && this._dependencyRefreshHandler) {\n this.dependencies\n .unbind(\"change\", this._dependencyRefreshHandler)\n .unbind(\"error\", this._dependencyErrorHandler);\n } else {\n this._dependencyRefreshHandler = this.refreshDependencies.bind(this);\n this._dependencyErrorHandler = this._error.bind(this);\n }\n\n this.dependencies = kendo.data.GanttDependencyDataSource.create(dataSource)\n .bind(\"change\", this._dependencyRefreshHandler)\n .bind(\"error\", this._dependencyErrorHandler);\n },\n\n _resources: function() {\n var resources = this.options.resources;\n var dataSource = resources.dataSource || {};\n\n this.resources = {\n field: \"resources\",\n dataTextField: \"name\",\n dataColorField: \"color\",\n dataFormatField: \"format\"\n };\n\n extend(this.resources, resources);\n\n this.resources.dataSource = kendo.data.DataSource.create(dataSource);\n },\n\n _assignments: function() {\n var assignments = this.options.assignments;\n var dataSource = assignments.dataSource || { };\n\n if (this.assignments) {\n this.assignments.dataSource\n .unbind(\"change\", this._assignmentsRefreshHandler);\n } else {\n this._assignmentsRefreshHandler = this.refresh.bind(this);\n }\n\n this.assignments = {\n dataTaskIdField: \"taskId\",\n dataResourceIdField: \"resourceId\",\n dataValueField: \"value\"\n };\n\n extend(this.assignments, assignments);\n\n this.assignments.dataSource = kendo.data.DataSource.create(dataSource);\n\n this.assignments.dataSource\n .bind(\"change\", this._assignmentsRefreshHandler);\n },\n\n _createEditor: function() {\n var that = this;\n\n var editor = this._editor = new kendo.gantt.PopupEditor(this.wrapper, extend({}, this.options, {\n target: this,\n resources: {\n field: this.resources.field,\n editor: this._createResourceEditor.bind(this)\n }\n }));\n\n editor\n .bind(\"cancel\", function(e) {\n var task = that.dataSource.getByUid(e.model.uid);\n\n if (that.trigger(\"cancel\", { container: e.container, task: task })) {\n e.preventDefault();\n return;\n }\n\n if (that.dependencies) {\n that.dependencies.filter({});\n }\n\n that.cancelTask();\n if (that.options.navigatable) {\n that.timeline.element.find('div[data-uid=\"' + e.model.uid + '\"]').focus();\n }\n })\n .bind(\"edit\", function(e) {\n var task = that.dataSource.getByUid(e.model.uid);\n\n if (that.trigger(\"edit\", { container: e.container, task: task })) {\n e.preventDefault();\n }\n })\n .bind(\"save\", function(e) {\n var task = that.dataSource.getByUid(e.model.uid);\n\n that.saveTask(task, e.updateInfo, e.updateDependencies);\n })\n .bind(\"remove\", function(e) {\n that.removeTask(e.model.uid);\n })\n .bind(\"close\", function(options) {\n if (that.options.navigatable) {\n that.element.find('div[data-uid=\"' + options.window.attr(\"data-uid\") + '\"]').focus();\n }\n });\n },\n\n _resourcePopupEditor: function(container, options) {\n var that = this,\n editor = that._createResourceEditor($(\"
\"), options),\n popupStyles = ganttStyles.popup,\n wrapper = that.element,\n dialogEl = $(kendo.format('
')).appendTo(wrapper),\n messages = that.options.messages,\n buttonsEl, dialog;\n\n dialogEl.append(editor.wrapper);\n buttonsEl = $('
');\n dialogEl.append(buttonsEl);\n\n buttonsEl.append($(\"\").kendoButton({\n name: \"save\",\n themeColor: \"primary\",\n icon: \"save\",\n click: () => {\n if (!editor.updateModel()) {\n return;\n }\n editor.trigger(\"save\", { model: editor.model });\n that._updateAssignments(editor.model.get(\"id\"), editor.model.get(that.resources.field));\n\n dialog.trigger(\"close\");\n dialog.close();\n }\n }));\n\n buttonsEl.append($(\"\").kendoButton({\n name: \"cancel\",\n icon: \"cancel\",\n click: () => {\n dialog.trigger(\"close\");\n dialog.close();\n }\n }));\n\n this._resourceEditorWindow = dialog = dialogEl.kendoWindow({\n modal: true,\n resizable: false,\n draggable: true,\n visible: false,\n title: messages.editor.resourcesEditorTitle,\n deactivate: () => {\n editor.destroy();\n dialog.destroy();\n dialog.element.closest(\".k-window\").remove();\n }\n }).data(\"kendoWindow\");\n\n dialog.center().open();\n\n return editor;\n },\n\n _createResourceEditor: function(container, options) {\n var that = this;\n var model = options instanceof ObservableObject ? options : options.model;\n var messages = this.options.messages;\n var resourcesField = this.resources.field;\n var unitsValidation = { step: 0.01, min: 0.01, max: 1 };\n var assignmentsModel = this.assignments.dataSource.options.schema.model;\n var resourceTextField = that.resources.dataTextField;\n var resources = this.resources.dataSource.view();\n\n\n if (assignmentsModel && assignmentsModel.fields.Units && assignmentsModel.fields.Units.validation) {\n extend(true, unitsValidation, assignmentsModel.fields.Units.validation);\n }\n\n var editor = this._resourceEditor = new kendo.gantt.ResourceEditor(container, {\n resourcesField: resourcesField,\n unitsValidation: unitsValidation,\n resources: resources.map(r => ({ value: r.id, text: r[resourceTextField] })),\n model: model,\n messages: extend({}, messages.editor)\n });\n\n return editor;\n },\n\n view: function(type) {\n return this.timeline.view(type);\n },\n\n range: function(range) {\n var dataSource = this.dataSource;\n var view = this.view();\n var timeline = this.timeline;\n\n if (range) {\n view.options.range = {\n start: range.start,\n end: range.end\n };\n\n timeline._render(dataSource.taskTree());\n timeline._renderDependencies(this.dependencies.view());\n }\n\n return {\n start: view.start,\n end: view.end\n };\n },\n\n date: function(date) {\n var view = this.view();\n\n if (date) {\n view.options.date = date;\n view._scrollToDate(date);\n }\n\n return view.options.date;\n },\n\n dataItem: function(value) {\n if (!value) {\n return null;\n }\n\n var list = this.list;\n var element = list.element.find(value);\n\n return list._modelFromElement(element);\n },\n\n setDataSource: function(dataSource) {\n this.options.dataSource = dataSource;\n\n this._dataSource();\n\n this.list.setDataSource(this.dataSource);\n\n if (this.options.autoBind) {\n dataSource.fetch();\n }\n },\n\n setDependenciesDataSource: function(dependencies) {\n this.options.dependencies = dependencies;\n\n this._dependencies();\n\n if (this.options.autoBind) {\n dependencies.fetch();\n }\n },\n\n items: function() {\n return this.wrapper.children(\".k-task\");\n },\n\n _updateAssignments: function(id, resources) {\n var dataSource = this.assignments.dataSource;\n var taskId = this.assignments.dataTaskIdField;\n var resourceId = this.assignments.dataResourceIdField;\n var hasMatch = false;\n var assignments = new Query(dataSource.view())\n .filter({\n field: taskId,\n operator: \"eq\",\n value: id\n }).toArray();\n var assignment;\n var resource;\n var value;\n\n while (assignments.length) {\n assignment = assignments[0];\n\n for (var i = 0, length = resources.length; i < length; i++) {\n resource = resources[i];\n\n if (assignment.get(resourceId) === resource.get(\"id\")) {\n value = resources[i].get(\"value\");\n this._updateAssignment(assignment, value);\n resources.splice(i, 1);\n hasMatch = true;\n break;\n }\n }\n\n if (!hasMatch) {\n this._removeAssignment(assignment);\n }\n\n hasMatch = false;\n\n assignments.shift();\n }\n\n for (var j = 0, newLength = resources.length; j < newLength; j++) {\n resource = resources[j];\n\n if (resource.id !== undefined$1 && resource.value) {\n this._createAssignment(resource, id);\n }\n }\n\n dataSource.sync();\n },\n\n cancelTask: function() {\n var editor = this._editor;\n var container = editor.container;\n\n if (container) {\n editor.close();\n }\n\n if (this.dependencies) {\n this.dependencies.cancelChanges();\n }\n },\n\n editTask: function(uid) {\n var task = typeof uid === \"string\" ? this.dataSource.getByUid(uid) : uid;\n\n if (!task) {\n return;\n }\n\n var taskCopy = this.dataSource._createNewModel(task.toJSON());\n taskCopy.uid = task.uid;\n\n this.cancelTask();\n\n this._editTask(taskCopy);\n },\n\n _editTask: function(task) {\n this._editor.editTask(task, this.options.editable.plannedTasks);\n },\n\n saveTask: function(task, updateInfo, updateDependencies) {\n var that = this,\n editor = this._editor,\n container = editor.container,\n editable = editor.editable,\n hasChanges = false,\n hasResourceChanges = false,\n updateInfo = updateInfo || {},\n resourcesField = that.options.resources.field,\n difference;\n\n Object.keys(updateInfo).map(k => {\n var updated = updateInfo[k],\n current = task.get(k);\n\n if (updated instanceof Date) {\n updated = updated.getTime();\n current = current ? current.getTime() : undefined$1;\n }\n\n if (updated !== current) {\n if (k === resourcesField) {\n difference = updated\n .filter(u => !current.some(c => c.id === u.id && c.value === u.value))\n .concat(current.filter(c => !updated.some(u => u.id === c.id && c.value === u.value)));\n\n if (difference && difference.length > 0) {\n hasResourceChanges = true;\n }\n } else {\n hasChanges = true;\n }\n }\n });\n\n if (container &&\n editable &&\n editable.end() &&\n (hasChanges || hasResourceChanges || updateDependencies)) {\n if (!that.trigger(\"save\", { task: task, values: updateInfo, updateDependencies: updateDependencies })) {\n if (hasChanges) {\n that._preventRefresh = true;\n\n that.dataSource.update(task, updateInfo);\n }\n\n if (hasResourceChanges) {\n this._updateAssignments(task.get(\"id\"), updateInfo[resourcesField]);\n }\n\n that._syncDataSource();\n\n if (this.dependencies) {\n this._updateDependency(updateDependencies);\n }\n\n this._editor.close();\n } else {\n if (task && task.dirty) {\n that.dataSource.cancelChanges(task);\n that._preventRefresh = false;\n that.refresh();\n }\n\n if (that.dependencies) {\n that.dependencies.cancelChanges();\n }\n }\n } else if (editable && editable.end()) {\n this._editor.close();\n }\n },\n\n _updateDependency: function(updateDependencies) {\n this.dependencies.filter({});\n\n if (updateDependencies) {\n updateDependencies.created.map(d => {\n this._preventDependencyRefresh = true;\n this.dependencies.add(d);\n this._preventDependencyRefresh = false;\n });\n\n updateDependencies.destroyed.map(d => {\n this.dependencies.remove(d);\n });\n }\n\n this.dependencies.sync();\n },\n\n _updateTask: function(task, updateInfo) {\n var that = this;\n var resourcesField = that.resources.field;\n\n if (!that.trigger(\"save\", { task: task, values: updateInfo })) {\n if (updateInfo) {\n that._preventRefresh = true;\n\n that.dataSource.update(task, updateInfo);\n\n if (updateInfo[resourcesField]) {\n that._updateAssignments(task.get(\"id\"), updateInfo[resourcesField]);\n }\n }\n\n that._syncDataSource();\n } else {\n if (task && task.dirty) {\n that.dataSource.cancelChanges(task);\n that._preventRefresh = false;\n that.refresh();\n }\n\n if (that.dependencies) {\n that.dependencies.cancelChanges();\n }\n }\n },\n\n _updateAssignment: function(assignment, value) {\n var resourceValueField = this.assignments.dataValueField;\n\n assignment.set(resourceValueField, value);\n },\n\n removeTask: function(uid) {\n var that = this;\n var task = typeof uid === \"string\" ? this.dataSource.getByUid(uid) : uid;\n\n if (!task) {\n return;\n }\n\n this._taskConfirm(function(cancel) {\n if (!cancel) {\n that._removeTask(task);\n }\n }, task);\n },\n\n _createTask: function(task, index) {\n if (!this.trigger(\"add\", {\n task: task,\n dependency: null\n })) {\n var dataSource = this.dataSource;\n\n this._preventRefresh = true;\n\n if (index === undefined$1) {\n dataSource.add(task);\n } else {\n dataSource.insert(index, task);\n }\n\n this._scrollToUid = task.uid;\n this._syncDataSource();\n }\n },\n\n _createDependency: function(dependency) {\n if (!this.trigger(\"add\", {\n task: null,\n dependency: dependency\n })) {\n this._preventDependencyRefresh = true;\n\n this.dependencies.add(dependency);\n\n this._preventDependencyRefresh = false;\n\n this.dependencies.sync();\n }\n },\n\n _createAssignment: function(resource, id) {\n var assignments = this.assignments;\n var dataSource = assignments.dataSource;\n var taskId = assignments.dataTaskIdField;\n var resourceId = assignments.dataResourceIdField;\n var resourceValue = assignments.dataValueField;\n var assignment = dataSource._createNewModel();\n\n assignment[taskId] = id;\n assignment[resourceId] = resource.get(\"id\");\n assignment[resourceValue] = resource.get(\"value\");\n\n dataSource.add(assignment);\n },\n\n removeDependency: function(uid) {\n var that = this;\n var dependency = typeof uid === \"string\" ? this.dependencies.getByUid(uid) : uid;\n\n if (!dependency) {\n return;\n }\n\n this._dependencyConfirm(function(cancel) {\n if (!cancel) {\n that._removeDependency(dependency);\n }\n }, dependency);\n },\n\n _removeTaskDependencies: function(task, dependencies) {\n this._preventDependencyRefresh = true;\n\n for (var i = 0, length = dependencies.length; i < length; i++) {\n this.dependencies.remove(dependencies[i]);\n }\n\n this._preventDependencyRefresh = false;\n\n this.dependencies.sync();\n },\n\n _removeTaskAssignments: function(task) {\n var dataSource = this.assignments.dataSource;\n var assignments = dataSource.view();\n var filter = {\n field: this.assignments.dataTaskIdField,\n operator: \"eq\",\n value: task.get(\"id\")\n };\n\n assignments = new Query(assignments).filter(filter).toArray();\n\n this._preventRefresh = true;\n\n for (var i = 0, length = assignments.length; i < length; i++) {\n dataSource.remove(assignments[i]);\n }\n\n this._preventRefresh = false;\n\n dataSource.sync();\n },\n\n _removeTask: function(task) {\n var dependencies = this.dependencies.dependencies(task.id);\n\n if (!this.trigger(\"remove\", {\n task: task,\n dependencies: dependencies\n })) {\n this._removeTaskDependencies(task, dependencies);\n this._removeTaskAssignments(task);\n\n this._preventRefresh = true;\n\n if (this.dataSource.remove(task)) {\n this._syncDataSource();\n }\n\n if (this.dependencies) {\n this.dependencies.filter({});\n }\n\n this._preventRefresh = false;\n }\n },\n\n _removeDependency: function(dependency) {\n if (!this.trigger(\"remove\", {\n task: null,\n dependencies: [dependency]\n })) {\n if (this.dependencies.remove(dependency)) {\n this.dependencies.sync();\n }\n }\n },\n\n _removeAssignment: function(assignment) {\n this.assignments.dataSource.remove(assignment);\n },\n\n _taskConfirm: function(callback, task) {\n var messages = this.options.messages;\n\n this._confirm(callback, {\n model: task,\n text: messages.deleteTaskConfirmation,\n title: messages.deleteTaskWindowTitle\n });\n },\n\n _dependencyConfirm: function(callback, dependency) {\n var messages = this.options.messages;\n\n this._confirm(callback, {\n model: dependency,\n text: messages.deleteDependencyConfirmation,\n title: messages.deleteDependencyWindowTitle\n });\n },\n\n _confirm: function(callback, options) {\n var editable = this.options.editable;\n\n if (editable === true || editable.confirmation !== false) {\n this.showDialog(extend(true, {}, options, { callback: callback }));\n } else {\n callback();\n }\n },\n\n showDialog: function(options) {\n this._editor.showDialog(options);\n },\n\n refresh: function() {\n if (this._preventRefresh || !this.list || this.list.editor) {\n return;\n }\n\n this._progress(false);\n\n var dataSource = this.dataSource;\n var taskTree = dataSource.taskTree();\n var scrollToUid = this._scrollToUid;\n var current;\n var cachedUid;\n var cachedIndex = -1;\n var selected = this.select()[0] ? this.select().data(\"uid\") : this._selected;\n\n if (this.current) {\n cachedUid = this.current.closest(\"tr\").attr(kendo.attr(\"uid\"));\n cachedIndex = this.current.index();\n }\n\n if (this.trigger(\"dataBinding\")) {\n return;\n }\n\n if (this.resources.dataSource.data().length !== 0) {\n this._assignResources(taskTree);\n }\n\n if (this._editor) {\n this._editor.close();\n }\n\n this.clearSelection();\n this.list._renderTree(taskTree);\n this.timeline._render(taskTree);\n this.timeline._renderDependencies(this.dependencies.view());\n\n if (scrollToUid) {\n this._scrollTo(scrollToUid);\n this.select(selector(scrollToUid));\n }\n\n if ((scrollToUid || cachedUid) && cachedIndex >= 0) {\n current = this.list.element\n .find(\"tr\" + selector((scrollToUid || cachedUid)) + \" > td\").eq(cachedIndex);\n\n this._current(current);\n }\n\n this._scrollToUid = null;\n\n if (selected) {\n this._selected = selected;\n this.select(\"[data-uid=\" + selected + \"]\");\n }\n\n this.trigger(\"dataBound\");\n },\n\n refreshDependencies: function() {\n if (this._preventDependencyRefresh) {\n return;\n }\n\n if (this.trigger(\"dataBinding\")) {\n return;\n }\n\n this.timeline._renderDependencies(this.dependencies.view());\n\n this.trigger(\"dataBound\");\n },\n\n _assignResources: function(taskTree) {\n var resources = this.resources;\n var assignments = this.assignments;\n var groupAssigments = function() {\n var data = assignments.dataSource.view();\n var group = {\n field: assignments.dataTaskIdField\n };\n\n data = new Query(data).group(group).toArray();\n\n return data;\n };\n var assigments = groupAssigments();\n var applyTaskResource = function(task, action) {\n var taskId = task.get(\"id\");\n\n kendo.setter(resources.field)(task, new ObservableArray([]));\n\n for (var i = 0, length = assigments.length; i < length; i++) {\n if (assigments[i].value === taskId) {\n action(task, assigments[i].items);\n }\n }\n };\n var wrapTask = function(task, items) {\n for (var j = 0, length = items.length; j < length; j++) {\n var item = items[j];\n var resource = resources.dataSource.get(item.get(assignments.dataResourceIdField));\n var resourceValue = item.get(assignments.dataValueField);\n var resourcedId = item.get(assignments.dataResourceIdField);\n var valueFormat = resource.get(resources.dataFormatField) || PERCENTAGE_FORMAT;\n var formatedValue = kendo.toString(resourceValue, valueFormat);\n\n task[resources.field].push(new ObservableObject({\n id: resourcedId,\n name: resource.get(resources.dataTextField),\n color: resource.get(resources.dataColorField),\n value: resourceValue,\n formatedValue: formatedValue,\n format: valueFormat\n }));\n }\n };\n\n for (var i = 0, length = taskTree.length; i < length; i++) {\n applyTaskResource(taskTree[i], wrapTask);\n }\n },\n\n _wrapResourceData: function(id) {\n var that = this;\n var result = [];\n var resource;\n var resources = this.resources.dataSource.view();\n var assignments = this.assignments.dataSource.view();\n var taskAssignments = new Query(assignments).filter({\n field: that.assignments.dataTaskIdField,\n operator: \"eq\",\n value: id\n }).toArray();\n var valuePerResource = function(id) {\n var resourceValue = null;\n\n new Query(taskAssignments).filter({\n field: that.assignments.dataResourceIdField,\n operator: \"eq\",\n value: id\n }).select(function(assignment) {\n resourceValue += assignment.get(that.assignments.dataValueField);\n });\n\n return resourceValue;\n };\n\n for (var i = 0, length = resources.length; i < length; i++) {\n resource = resources[i];\n result.push({\n id: resource.get(\"id\"),\n name: resource.get(that.resources.dataTextField),\n format: resource.get(that.resources.dataFormatField) || PERCENTAGE_FORMAT,\n value: valuePerResource(resource.id)\n });\n }\n\n return result;\n },\n\n _syncDataSource: function() {\n this._preventRefresh = false;\n this._requestStart();\n this.dataSource.sync();\n },\n\n _requestStart: function() {\n this._progress(true);\n },\n\n _error: function() {\n this._progress(false);\n },\n\n _progress: function(toggle) {\n kendo.ui.progress(this.element, toggle);\n },\n\n _scrollable: function() {\n var that = this;\n var ganttStyles = Gantt.styles;\n var contentSelector = DOT + ganttStyles.gridContent;\n var headerSelector = DOT + ganttStyles.gridHeaderWrap;\n var timelineHeader = this.timeline.element.find(headerSelector);\n var timelineContent = this.timeline.element.find(contentSelector);\n var treeListHeader = this.list.element.find(headerSelector);\n var treeListContent = this.list.element.find(contentSelector);\n\n if (mobileOS) {\n treeListContent.css(\"overflow-y\", \"auto\");\n }\n\n timelineContent.on(\"scroll\", function() {\n that.scrollTop = this.scrollTop;\n kendo.scrollLeft(timelineHeader, this.scrollLeft);\n treeListContent.scrollTop(this.scrollTop);\n });\n\n treeListContent\n .on(\"scroll\", function() {\n kendo.scrollLeft(treeListHeader, this.scrollLeft);\n })\n .on(\"DOMMouseScroll\" + NS + \" mousewheel\" + NS, function(e) {\n var scrollTop = timelineContent.scrollTop();\n var delta = kendo.wheelDeltaY(e);\n\n if (delta) {\n e.preventDefault();\n //In Firefox DOMMouseScroll event cannot be canceled\n $(e.currentTarget).one(\"wheel\" + NS, false);\n\n timelineContent.scrollTop(scrollTop + (-delta));\n }\n });\n },\n\n _navigatable: function() {\n var that = this;\n var navigatable = this.options.navigatable;\n var editable = this.options.editable;\n var ganttStyles = Gantt.styles;\n var contentSelector = DOT + ganttStyles.gridContent;\n var listWrapper = DOT + ganttStyles.listWrapper;\n var headerSelector = DOT + ganttStyles.gridHeaderWrap;\n var headerTable = this.list.element.find(headerSelector).find(\"table\");\n var contentTable = this.list.element.find(contentSelector).find(\"table\");\n var tables = headerTable.add(contentTable);\n var attr = selector();\n var deleteAction = function() {\n var editable = that.options.editable;\n\n if (!editable || editable.destroy === false || that.list.editor) {\n return;\n }\n\n var selectedTask = that.select();\n var uid = kendo.attr(\"uid\");\n\n if (selectedTask.length) {\n that.removeTask(selectedTask.attr(uid));\n }\n };\n\n $(this.wrapper)\n .on(\"mousedown\" + NS, listWrapper + \" tr\" + attr, function(e) {\n var isInput = $(e.target).is(\":button,a,:input,a>.k-icon,.k-svg-icon,k-svg-icon,svg,path,textarea,span.k-icon:not(.k-i-none),span.k-svg-icon:not(.k-svg-i-none),span.k-link,.k-input,.k-multiselect-wrap,.k-input-value-text,.k-input-inner\");\n\n if (e.ctrlKey) {\n return;\n }\n\n\n if ((navigatable || editable) && !isInput) {\n that._focusTimeout = setTimeout(function() {\n focusTable(that.list.content.find(\"table\"), true);\n }, 2);\n }\n })\n .on(\"keydown\" + NS, function(e) {\n var key = e.keyCode;\n var that = this;\n var uid;\n var cell;\n var target = $(e.target);\n var focusedIndex;\n var focusSequence = [\n that.toolbar,\n that.layout.find(\".k-splitbar\"),\n that.layout.find(\".k-gantt-treelist\"),\n that.layout.find(\".k-gantt-timeline-pane\")\n ];\n\n that._tabPressed = false;\n\n if (that.footer) {\n focusSequence.push(that.footer);\n }\n\n for (var i = 0; i < focusSequence.length; i++) {\n if ($.contains(focusSequence[i][0], e.target) || focusSequence[i][0] === e.target) {\n focusedIndex = i;\n break;\n }\n }\n\n if (key === keys.F10) {\n that.toolbar.find(\"[tabindex=0]:visible\").first().addClass(ganttStyles.focused).trigger(\"focus\");\n e.preventDefault();\n } else if (key == keys.TAB) {\n if (focusedIndex == 2) {\n that._tabPressed = true;\n }\n if (e.shiftKey) {\n for (i = focusedIndex - 1; i >= 0; i--) {\n if (!focusSequence[i].hasClass(\"k-hidden\")) {\n uid = target.attr(\"data-uid\");\n if (i === 2 && uid) {\n cell = that.list.content.find(\"tr[data-uid='\" + uid + \"']\").find(\"td\").last();\n that.list.current(cell);\n focusTable(that.list.content.find(\"table\"), true);\n } else {\n if (focusSequence[i].is(\":kendoFocusable\")) {\n focusSequence[i].focus();\n } else {\n focusSequence[i].find(\"[tabindex=0]:visible\").focus();\n }\n }\n e.preventDefault();\n break;\n }\n }\n } else {\n for (i = focusedIndex + 1; i < focusSequence.length; i++) {\n if (!focusSequence[i].hasClass(\"k-hidden\")) {\n if (focusSequence[i].is(\":kendoFocusable\")) {\n focusSequence[i].focus();\n } else {\n focusSequence[i].find(\"[tabindex=0]:visible\").focus();\n }\n e.preventDefault();\n break;\n }\n }\n }\n }\n\n }.bind(this));\n\n if (navigatable) {\n contentTable\n .on(\"keydown\" + NS, function(e) {\n var key = e.keyCode;\n if (e.keyCode == keys.DELETE) {\n deleteAction();\n } else if (key >= 49 && key <= 57 && e.target.tagName.toLowerCase() !== \"input\") {\n that.view(that.timeline._viewByIndex(key - 49));\n }\n });\n\n return;\n }\n\n tables\n .on(\"focus\" + NS, function() {\n $(that.toolbar.find(DOT + ganttStyles.focused)).removeClass(ganttStyles.focused);\n })\n .on(\"blur\" + NS, function() {\n\n if (this == headerTable) {\n $(this).attr(TABINDEX, -1);\n }\n });\n },\n\n\n _dataBind: function() {\n var that = this;\n\n if (that.options.autoBind) {\n this._preventRefresh = true;\n this._preventDependencyRefresh = true;\n\n var promises = $.map([\n this.dataSource,\n this.dependencies,\n this.resources.dataSource,\n this.assignments.dataSource\n ],\n function(dataSource) {\n return dataSource.fetch();\n });\n\n $.when.apply(null, promises)\n .done(function() {\n that._preventRefresh = false;\n that._preventDependencyRefresh = false;\n that.refresh();\n });\n }\n },\n\n _resize: function() {\n this._adjustDimensions();\n this.timeline.view()._adjustHeight();\n this.timeline.view()._renderCurrentTime();\n this.list._adjustHeight();\n },\n\n _togglePlannedTasks: function(e) {\n var timeline = this.timeline;\n\n if (!this.trigger(\"togglePlannedTasks\", { showPlannedTasks: !timeline.options.showPlannedTasks })) {\n this.wrapper.toggleClass(ganttStyles.plannedTasks);\n timeline._setPlanned(!timeline.options.showPlannedTasks);\n timeline._render(this.dataSource.taskTree());\n timeline._renderDependencies(this.dependencies.view());\n } else {\n e.preventDefault();\n }\n }\n });\n\n if (kendo.PDFMixin) {\n kendo.PDFMixin.extend(Gantt.fn);\n\n Gantt.fn._drawPDF = function() {\n var ganttStyles = Gantt.styles;\n // Get the width of the treelist portion.\n var listTableWidth = this.wrapper.find(DOT + ganttStyles.list + \" \" + DOT + ganttStyles.gridContent + \">table\").width();\n // Get the height of the treelist portion.\n var listTableHeight = this.wrapper.find(DOT + ganttStyles.list + \" \" + DOT + ganttStyles.gridContent + \">table\").height();\n // Get the combined height of all toolbars.\n var toolbarsHeight = this.wrapper.find(DOT + ganttStyles.toolbar.toolbar).outerHeight() * this.wrapper.find(DOT + ganttStyles.toolbar.toolbar).length;\n // Get the width of the timeline portion.\n var timelineTableWidth = this.wrapper.find(DOT + ganttStyles.timeline + \" \" + DOT + ganttStyles.gridContent + \" table\").width();\n var content = this.wrapper.clone();\n\n content.find(DOT + ganttStyles.list).css(\"height\", listTableHeight + toolbarsHeight);\n content.find(DOT + ganttStyles.splitter).css(\"width\", timelineTableWidth + listTableWidth);\n content.find(DOT + ganttStyles.splitter).css(\"height\", listTableHeight + toolbarsHeight);\n\n return this._drawPDFShadow({\n content: content\n }, {\n avoidLinks: this.options.pdf.avoidLinks\n });\n };\n }\n\n kendo.ui.plugin(Gantt);\n\n extend(true, Gantt, { styles: ganttStyles });\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}