{"version":3,"sources":["kendo.gantt.editors.js"],"names":["f","define","$","normalizeText","text","String","replace","REPLACE_REGEX","SPACE","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","window","kendo","util","Class","extend","init","size","this","_size","_length","_map","put","value","map","entry","_head","_tail","newer","older","get","baselineMarkerSize","document","createElement","cssText","options","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","box","_baselineMarker","cloneNode","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","deepExtend","jQuery","amd","a1","a2","a3","undefined","ui","browser","support","Observable","Widget","outerWidth","_outerWidth","keys","F10","proxy","isPlainObject","NS","PERCENTAGE_FORMAT","TABINDEX","CLICK","WIDTH","STRING","ARIA_DESCENDANT","ACTIVE_OPTION","DOT","DIRECTIONS","down","origin","position","up","TASK_DROPDOWN_TEMPLATE","template","ganttStyles","buttonDelete","buttonCancel","buttonSave","focused","gridContent","hovered","item","popupWrapper","popupList","popup","form","editForm","formContainer","resourcesFormContainer","message","buttonsContainer","button","editField","editLabel","resourcesField","primary","toolbar","appendButton","DATERANGEEDITOR","container","attr","name","field","title","validationRules","model","fields","validation","appendTo","hide","RESOURCESEDITOR","styles","messages","assignButton","click","TaskDropDown","element","fn","call","_popup","direction","navigatable","destroy","clearTimeout","_focusTimeout","off","list","unbind","_adjustListWidth","computedStyle","computedWidth","wrapper","listOuterWidth","data","getComputedStyle","parseFloat","mozilla","msie","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","css","fontFamily","_current","method","find","sibling","removeClass","removeAttr","addClass","that","itemSelector","actions","addChild","insertBefore","insertAfter","append","Popup","anchor","open","animation","on","e","target","action","preventDefault","trigger","type","end","aria-activedescendant","focus","hover","close","bind","parents","keyCode","UP","DOWN","ENTER","ESC","editors","desktop","dateRange","resources","Editor","createButton","plannedEditors","editor","editable","start","percentComplete","format","splice","apply","concat","plannedStart","plannedEnd","_buildEditTemplate","editableFields","tmpl","settings","Template","templateSettings","paramName","popupStyles","html","unescape","expr","PopupEditor","is","editTask","task","_createPopupEditor","showDialog","buttons","eq","buttonIndex","currentTarget","index","kendoWindow","modal","autoFocus","resizable","draggable","visible","deactivate","getKendoWindow","center","editableWidget","uid","save","className","cancel","editorTitle","userTriggered","kendoEditable","clearContainer","validateOnBlur","cycleForm","stopPropagation","updateInfo","ResourceEditor","_initContainer","_attachHandlers","events","_dettachHandlers","grid","closeHandler","_cancelProxy","_cancel","_saveProxy","_save","row","closest","dataSource","getByUid","set","_createButtons","dom","resourcesEditorTitle","resize","_resourceGrid","Grid","columns","resourcesHeader","unitsHeader","dataItem","valueFormat","toString","sortable","filterable","schema","id","from","unitsValidation","values","parent","prop","_updateModel","gantt"],"mappings":"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","file":"kendo.gantt.editors.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('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\n if (typeof document !== 'undefined') {\n defaultMeasureBox = document.createElement('div');\n defaultMeasureBox.style.cssText = 'position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.gantt.editors', [\n 'kendo.data',\n 'kendo.popup',\n 'kendo.window',\n 'kendo.gantt.data',\n 'kendo.grid',\n 'kendo.datetimepicker',\n 'kendo.numerictextbox'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'gantt.editors',\n name: 'GanttEditors',\n category: 'web',\n description: 'The Gantt component editors.',\n depends: [\n 'data',\n 'popup',\n 'window',\n 'gantt.data',\n 'grid',\n 'datetimepicker',\n 'numerictextbox'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, browser = kendo.support.browser, Observable = kendo.Observable, Widget = ui.Widget, outerWidth = kendo._outerWidth, keys = $.extend({ F10: 121 }, kendo.keys), proxy = $.proxy, extend = $.extend, isPlainObject = $.isPlainObject, NS = '.kendoGantt', PERCENTAGE_FORMAT = 'p0', TABINDEX = 'tabIndex', CLICK = 'click', WIDTH = 'width', STRING = 'string', ARIA_DESCENDANT = 'aria-activedescendant', ACTIVE_OPTION = 'action-option-focused', DOT = '.', DIRECTIONS = {\n 'down': {\n origin: 'bottom left',\n position: 'top left'\n },\n 'up': {\n origin: 'top left',\n position: 'bottom left'\n }\n }, TASK_DROPDOWN_TEMPLATE = kendo.template('
' + '' + '
');\n var ganttStyles = {\n buttonDelete: 'k-gantt-delete',\n buttonCancel: 'k-gantt-cancel',\n buttonSave: 'k-gantt-update',\n focused: 'k-state-focused',\n gridContent: 'k-grid-content',\n hovered: 'k-state-hover',\n item: 'k-item',\n popupWrapper: 'k-list-container',\n popupList: 'k-list k-reset',\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 k-state-default',\n button: 'k-button',\n editField: 'k-edit-field',\n editLabel: 'k-edit-label',\n resourcesField: 'k-gantt-resources'\n },\n primary: 'k-primary',\n toolbar: { appendButton: 'k-gantt-create' }\n };\n var DATERANGEEDITOR = function (container, options) {\n var attr = {\n name: options.field,\n title: options.title\n };\n var validationRules = options.model.fields[options.field].validation;\n if (validationRules && isPlainObject(validationRules) && validationRules.message) {\n attr[kendo.attr('dateCompare-msg')] = validationRules.message;\n }\n $('').attr(attr).appendTo(container);\n $('').hide().appendTo(container);\n };\n var RESOURCESEDITOR = function (container, options) {\n $('' + options.messages.assignButton + '').click(options.click).appendTo(container);\n };\n var TaskDropDown = Observable.extend({\n init: function (element, options) {\n Observable.fn.init.call(this);\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n this._popup();\n },\n options: {\n direction: 'down',\n navigatable: false\n },\n destroy: function () {\n clearTimeout(this._focusTimeout);\n this.popup.destroy();\n this.element.off(NS);\n this.list.off(NS);\n this.unbind();\n },\n _adjustListWidth: function () {\n var list = this.list;\n var width = list[0].style.width;\n var wrapper = this.element;\n var listOuterWidth = outerWidth(list);\n var computedStyle;\n var computedWidth;\n if (!list.data(WIDTH) && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = computedStyle ? parseFloat(computedStyle.width) : outerWidth(wrapper);\n if (computedStyle && (browser.mozilla || browser.msie)) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n if (list.css('box-sizing') !== 'border-box') {\n width = computedWidth - (outerWidth(list) - list.width());\n } else {\n width = computedWidth;\n }\n if (listOuterWidth > width) {\n width = listOuterWidth;\n }\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: width\n }).data(WIDTH, width);\n },\n _current: function (method) {\n var current = this.list.find(DOT + ganttStyles.focused);\n var sibling = current[method]();\n if (sibling.length) {\n current.removeClass(ganttStyles.focused).removeAttr('id');\n sibling.addClass(ganttStyles.focused).attr('id', ACTIVE_OPTION);\n this.list.find('ul').removeAttr(ARIA_DESCENDANT).attr(ARIA_DESCENDANT, ACTIVE_OPTION);\n }\n },\n _popup: function () {\n var that = this;\n var itemSelector = 'li' + DOT + ganttStyles.item;\n var actions = this.options.messages.actions;\n var navigatable = this.options.navigatable;\n this.list = $(TASK_DROPDOWN_TEMPLATE({\n styles: ganttStyles,\n actions: [\n {\n data: 'add',\n text: actions.addChild\n },\n {\n data: 'insert-before',\n text: actions.insertBefore\n },\n {\n data: 'insert-after',\n text: actions.insertAfter\n }\n ]\n }));\n this.element.append(this.list);\n this.popup = new kendo.ui.Popup(this.list, extend({\n anchor: this.element,\n open: function () {\n that._adjustListWidth();\n },\n animation: this.options.animation\n }, DIRECTIONS[this.options.direction]));\n this.element.on(CLICK + NS, function (e) {\n var target = $(this);\n var action = target.attr(kendo.attr('action'));\n e.preventDefault();\n if (action) {\n that.trigger('command', { type: action });\n } else {\n that.popup.open();\n if (navigatable) {\n that.list.find('li:first').addClass(ganttStyles.focused).attr('id', ACTIVE_OPTION).end().find('ul').attr({\n TABINDEX: 0,\n 'aria-activedescendant': ACTIVE_OPTION\n }).focus();\n }\n }\n });\n this.list.find(itemSelector).hover(function () {\n $(this).addClass(ganttStyles.hovered);\n }, function () {\n $(this).removeClass(ganttStyles.hovered);\n }).end().on(CLICK + NS, itemSelector, function () {\n that.trigger('command', { type: $(this).attr(kendo.attr('action')) });\n that.popup.close();\n });\n if (navigatable) {\n this.popup.bind('close', function () {\n that.list.find(itemSelector).removeClass(ganttStyles.focused).end().find('ul').attr(TABINDEX, 0);\n that.element.parents('[' + kendo.attr('role') + '=\"gantt\"]').find(DOT + ganttStyles.gridContent + ' > table:first').focus();\n });\n this.list.find('ul').on('keydown' + NS, function (e) {\n var key = e.keyCode;\n switch (key) {\n case keys.UP:\n e.preventDefault();\n that._current('prev');\n break;\n case keys.DOWN:\n e.preventDefault();\n that._current('next');\n break;\n case keys.ENTER:\n that.list.find(DOT + ganttStyles.focused).click();\n break;\n case keys.ESC:\n e.preventDefault();\n that.popup.close();\n break;\n }\n });\n }\n }\n });\n var editors = {\n desktop: {\n dateRange: DATERANGEEDITOR,\n resources: RESOURCESEDITOR\n }\n };\n var Editor = kendo.Observable.extend({\n init: function (element, options) {\n kendo.Observable.fn.init.call(this);\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n this.createButton = this.options.createButton;\n },\n fields: function (editors, model, plannedEditors) {\n var that = this;\n var options = this.options;\n var messages = options.messages.editor;\n var resources = options.resources;\n var fields;\n var click = function (e) {\n e.preventDefault();\n resources.editor(that.container.find(DOT + ganttStyles.popup.resourcesField), model);\n };\n if (options.editable.template) {\n fields = $.map(model.fields, function (value, key) {\n return { field: key };\n });\n } else {\n fields = [\n {\n field: 'title',\n title: messages.title\n },\n {\n field: 'start',\n title: messages.start,\n editor: editors.dateRange\n },\n {\n field: 'end',\n title: messages.end,\n editor: editors.dateRange\n },\n {\n field: 'percentComplete',\n title: messages.percentComplete,\n format: PERCENTAGE_FORMAT\n }\n ];\n if (plannedEditors) {\n fields.splice.apply(fields, [\n 1,\n 0\n ].concat([\n {\n field: 'plannedStart',\n title: messages.plannedStart,\n editor: editors.dateRange\n },\n {\n field: 'plannedEnd',\n title: messages.plannedEnd,\n editor: editors.dateRange\n }\n ]));\n }\n if (model.get(resources.field)) {\n fields.push({\n field: resources.field,\n title: messages.resources,\n messages: messages,\n editor: editors.resources,\n click: click,\n styles: ganttStyles.popup\n });\n }\n }\n return fields;\n },\n _buildEditTemplate: function (model, fields, editableFields) {\n var resources = this.options.resources;\n var template = this.options.editable.template;\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var paramName = settings.paramName;\n var popupStyles = ganttStyles.popup;\n var html = '';\n if (template) {\n if (typeof template === STRING) {\n template = kendo.unescape(template);\n }\n html += kendo.template(template, settings)(model);\n } else {\n for (var i = 0, length = fields.length; i < length; i++) {\n var field = fields[i];\n html += '
';\n if (field.field === resources.field) {\n html += '
';\n }\n if (!model.editable || model.editable(field.field)) {\n editableFields.push(field);\n html += '
';\n } else {\n var tmpl = '#:';\n if (field.field) {\n field = kendo.expr(field.field, paramName);\n tmpl += field + '==null?\\'\\':' + field;\n } else {\n tmpl += '\\'\\'';\n }\n tmpl += '#';\n tmpl = kendo.template(tmpl, settings);\n html += '
' + tmpl(model) + '
';\n }\n }\n }\n return html;\n }\n });\n var PopupEditor = Editor.extend({\n destroy: function () {\n this.close();\n this.unbind();\n },\n close: function () {\n var that = this;\n var destroy = function () {\n if (that.editable) {\n that.editable.destroy();\n that.editable = null;\n that.container = null;\n }\n if (that.popup) {\n that.popup.destroy();\n that.popup = null;\n }\n };\n if (this.editable && this.container.is(':visible')) {\n that.trigger('close', { window: that.container });\n this.container.data('kendoWindow').bind('deactivate', destroy).close();\n } else {\n destroy();\n }\n },\n editTask: function (task, plannedEditors) {\n this.editable = this._createPopupEditor(task, plannedEditors);\n },\n showDialog: function (options) {\n var buttons = options.buttons;\n var popupStyles = ganttStyles.popup;\n var html = kendo.format('

{3}

', popupStyles.form, popupStyles.formContainer, popupStyles.message, options.text, popupStyles.buttonsContainer);\n for (var i = 0, length = buttons.length; i < length; i++) {\n html += this.createButton(buttons[i]);\n }\n html += '
';\n var wrapper = this.element;\n if (this.popup) {\n this.popup.destroy();\n }\n var popup = this.popup = $(html).appendTo(wrapper).eq(0).on('click', DOT + popupStyles.button, function (e) {\n e.preventDefault();\n popup.close();\n var buttonIndex = $(e.currentTarget).index();\n buttons[buttonIndex].click();\n }).kendoWindow({\n modal: true,\n autoFocus: false,\n resizable: false,\n draggable: false,\n title: options.title,\n visible: false,\n deactivate: function () {\n this.destroy();\n wrapper.focus();\n }\n }).getKendoWindow();\n popup.center().open();\n popup.element.find('.k-primary').focus();\n },\n _createPopupEditor: function (task, plannedEditors) {\n var that = this;\n var options = {};\n var messages = this.options.messages;\n var popupStyles = ganttStyles.popup;\n var html = kendo.format('
', kendo.attr('uid'), task.uid, popupStyles.form, popupStyles.editForm, popupStyles.formContainer);\n var fields = this.fields(editors.desktop, task, plannedEditors);\n var editableFields = [];\n html += this._buildEditTemplate(task, fields, editableFields);\n html += '
';\n html += this.createButton({\n name: 'update',\n text: messages.save,\n className: ganttStyles.primary\n });\n html += this.createButton({\n name: 'cancel',\n text: messages.cancel\n });\n if (that.options.editable.destroy !== false) {\n html += this.createButton({\n name: 'delete',\n text: messages.destroy\n });\n }\n html += '
';\n var container = this.container = $(html).appendTo(this.element).eq(0).kendoWindow(extend({\n modal: true,\n resizable: false,\n draggable: true,\n title: messages.editor.editorTitle,\n visible: false,\n close: function (e) {\n if (e.userTriggered) {\n if (that.trigger('cancel', {\n container: container,\n model: task\n })) {\n e.preventDefault();\n }\n }\n }\n }, options));\n var editableWidget = container.kendoEditable({\n fields: editableFields,\n model: task,\n clearContainer: false,\n validateOnBlur: true,\n target: that.options.target\n }).data('kendoEditable');\n kendo.cycleForm(container);\n if (!this.trigger('edit', {\n container: container,\n model: task\n })) {\n container.data('kendoWindow').center().open();\n container.on(CLICK + NS, DOT + ganttStyles.buttonCancel, function (e) {\n e.preventDefault();\n e.stopPropagation();\n that.trigger('cancel', {\n container: container,\n model: task\n });\n });\n container.on(CLICK + NS, DOT + ganttStyles.buttonSave, function (e) {\n e.preventDefault();\n e.stopPropagation();\n var fields = that.fields(editors.desktop, task, plannedEditors);\n var updateInfo = {};\n var field;\n for (var i = 0, length = fields.length; i < length; i++) {\n field = fields[i].field;\n updateInfo[field] = task.get(field);\n }\n that.trigger('save', {\n container: container,\n model: task,\n updateInfo: updateInfo\n });\n });\n container.on(CLICK + NS, DOT + ganttStyles.buttonDelete, function (e) {\n e.preventDefault();\n e.stopPropagation();\n that.trigger('remove', {\n container: container,\n model: task\n });\n });\n } else {\n that.trigger('cancel', {\n container: container,\n model: task\n });\n }\n return editableWidget;\n }\n });\n var ResourceEditor = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this.wrapper = this.element;\n this.model = this.options.model;\n this.resourcesField = this.options.resourcesField;\n this.createButton = this.options.createButton;\n this._initContainer();\n this._attachHandlers();\n },\n events: ['save'],\n close: function () {\n this.window.bind('deactivate', proxy(this.destroy, this)).close();\n },\n destroy: function () {\n this._dettachHandlers();\n this.grid.destroy();\n this.grid = null;\n this.window.destroy();\n this.window = null;\n Widget.fn.destroy.call(this);\n kendo.destroy(this.wrapper);\n this.element = this.wrapper = null;\n },\n open: function () {\n this.window.center().open();\n },\n _attachHandlers: function () {\n var grid = this.grid;\n var closeHandler = this._cancelProxy = proxy(this._cancel, this);\n this.container.on(CLICK + NS, DOT + ganttStyles.buttonCancel, this._cancelProxy);\n this._saveProxy = proxy(this._save, this);\n this.container.on(CLICK + NS, DOT + ganttStyles.buttonSave, this._saveProxy);\n this.window.bind('close', function (e) {\n if (e.userTriggered) {\n closeHandler(e);\n }\n });\n grid.wrapper.on(CLICK + NS, 'input[type=\\'checkbox\\']', function () {\n var element = $(this);\n var row = $(element).closest('tr');\n var model = grid.dataSource.getByUid(row.attr(kendo.attr('uid')));\n var value = $(element).is(':checked') ? 1 : '';\n model.set('value', value);\n });\n },\n _cancel: function (e) {\n e.preventDefault();\n this.close();\n },\n _createButtons: function () {\n var buttons = this.options.buttons;\n var html = '
';\n for (var i = 0, length = buttons.length; i < length; i++) {\n html += this.createButton(buttons[i]);\n }\n html += '
';\n this.container.append(html);\n },\n _dettachHandlers: function () {\n this._cancelProxy = null;\n this._saveProxy = null;\n this.container.off(NS);\n this.grid.wrapper.off();\n },\n _initContainer: function () {\n var that = this;\n var popupStyles = ganttStyles.popup;\n var dom = kendo.format('
\"', popupStyles.form, popupStyles.editForm, popupStyles.formContainer, popupStyles.resourcesFormContainer);\n dom = $(dom);\n this.container = dom.find(DOT + popupStyles.resourcesFormContainer);\n this.window = dom.kendoWindow({\n modal: true,\n resizable: false,\n draggable: true,\n visible: false,\n title: this.options.messages.resourcesEditorTitle,\n open: function () {\n that.grid.resize(true);\n }\n }).data('kendoWindow');\n this._resourceGrid();\n this._createButtons();\n },\n _resourceGrid: function () {\n var that = this;\n var messages = this.options.messages;\n var element = $('
').appendTo(this.container);\n this.grid = new kendo.ui.Grid(element, {\n columns: [\n {\n field: 'name',\n title: messages.resourcesHeader,\n template: '