{"version":3,"file":"kendo.gantt.editors.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendogantt","editors","js","this","$","undefined$1","kendo","window","ui","Observable","Widget","encode","htmlEncode","extend","GRID_HEIGHT","ganttStyles","form","editForm","formContainer","resourcesFormContainer","message","buttonsContainer","button","buttonDefaults","editField","editLabel","resourcesField","PopupEditor","init","element","options","fn","call","destroy","close","unbind","that","editable","container","data","popup","is","trigger","bind","editTask","task","plannedEditors","_createPopupEditor","fields","customFields","model","template","map","value","key","field","general","_fieldsGeneral","resources","dependencies","_fieldsDependencies","Object","keys","GanttTask","length","other","_fieldsOther","showDialog","buttonsEl","popupStyles","wrapper","dialogEl","format","uid","appendTo","messages","append","text","kendoButton","name","themeColor","icon","click","e","preventDefault","callback","cancel","kendoWindow","modal","autoFocus","resizable","draggable","title","visible","deactivate","getKendoWindow","center","open","find","_buildButtons","save","_onSave","_onCancel","fillMode","_onDelete","_buildEditTemplate","settings","Template","templateSettings","html","unescape","renderForm","attr","formEl","applyStylesFromKendoAttributes","editableWidget","width","editor","editorTitle","actions","userTriggered","_initForm","kendoEditable","clearContainer","validateOnBlur","target","cycleForm","nameDdlDs","dataSource","filter","i","id","typeDs","fullData","excluded","ddlData","modelFields","startText","actualStart","start","endText","actualEnd","end","colSpan","push","plannedStart","validation","editorOptions","componentType","plannedEnd","taskAllChildren","n","some","percentComplete","hint","percentCompleteHint","parent","optionLabel","parentOptionLabel","enable","dataValueField","dataTextField","valuePrimitive","toString","item","label","_readonlyEditor","_gridOptions","type","keyType","taskId","dependencyData","view","d","schema","from","required","defaultValue","columns","selectable","values","dependencyType","toolbar","addNew","remove","grid","closest","getKendoGrid","ds","selected","select","items","each","row","dataItem","sortable","navigatable","height","edit","setOptions","resourceField","get","tabStripDs","_tabStripSource","kendoTabStrip","dataContentField","tabStrip","sender","contentElement","index","validatable","validate","validator","_initGeneral","resourceEditor","kendoGrid","_initOther","kendoForm","layout","cols","gutter","rows","formData","buttonsTemplate","Date","found","prevData","newData","updateInfo","predeGrid","sucGrid","args","createdData","updatedData","successorId","concat","predecessorId","toJSON","dirty","updateDependencies","destroyed","created","updated","Array","isArray","val","updateModel","content","predecessors","successors","ResourceEditor","_resourceGrid","ddlDs","Grid","resourcesHeader","unitsHeader","valueFormat","filterable","selectedKeyNames","unitsValidation","ddl","currentId","filters","r","f","operator","logic","gantt","jQuery"],"sources":["kendo.gantt.editors.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.popup.js'), require('kendo.window.js'), require('kendo.gantt.data.js'), require('kendo.grid.js'), require('kendo.datetimepicker.js'), require('kendo.numerictextbox.js'), require('kendo.textbox.js'), require('kendo.form.js'), require('kendo.tabstrip.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.data', 'kendo.popup', 'kendo.window', 'kendo.gantt.data', 'kendo.grid', 'kendo.datetimepicker', 'kendo.numerictextbox', 'kendo.textbox', 'kendo.form', 'kendo.tabstrip'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendogantt = global.kendogantt || {}, global.kendogantt.editors = global.kendogantt.editors || {}, global.kendogantt.editors.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"gantt.editors\",\n name: \"GanttEditors\",\n category: \"web\",\n description: \"The Gantt component editors.\",\n depends: [ \"data\", \"popup\", \"window\", \"gantt.data\", \"grid\", \"datetimepicker\", \"numerictextbox\", \"textbox\", \"form\", \"tabstrip\"],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Observable = kendo.Observable,\n Widget = ui.Widget,\n encode = kendo.htmlEncode,\n extend = $.extend,\n PERCENTAGE_FORMAT = \"p0\",\n GRID_HEIGHT = \"23em\",\n TAB_HEIGHT = \"28em\",\n STRING = \"string\";\n\n var ganttStyles = {\n buttonDelete: \"k-gantt-delete\",\n buttonCancel: \"k-gantt-cancel\",\n buttonSave: \"k-gantt-update\",\n focused: \"k-focus\",\n gridContent: \"k-grid-content\",\n hovered: \"k-hover\",\n item: \"k-item k-menu-item\",\n popupWrapper: \"k-popup k-menu-popup\",\n popupList: \"k-menu-group k-menu-group-md 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-actions\",\n button: \"k-button\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid k-button-solid-base\",\n editField: \"k-edit-field\",\n editLabel: \"k-edit-label\",\n resourcesField: \"k-gantt-resources\"\n },\n primary: \"k-button-solid-primary\",\n toolbar: {\n appendButton: \"k-gantt-create\"\n }\n };\n\n var PopupEditor = Observable.extend({\n init: function(element, options) {\n Observable.fn.init.call(this);\n\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n },\n\n destroy: function() {\n this.close();\n this.unbind();\n },\n\n close: function() {\n var that = this;\n\n var destroy = function() {\n if (that.editable) {\n that.container.data(\"kendoWindow\").destroy();\n that.editable = null;\n that.container = null;\n }\n\n if (that.popup) {\n that.popup.destroy();\n that.popup = null;\n }\n };\n\n if (that.editable && that.container.is(\":visible\")) {\n that.trigger(\"close\", { window: that.container });\n that.container.data(\"kendoWindow\").bind(\"deactivate\", destroy).close();\n } else {\n destroy();\n }\n },\n\n editTask: function(task, plannedEditors) {\n this.task = task;\n this.plannedEditors = plannedEditors;\n this.editable = this._createPopupEditor();\n },\n\n fields: function() {\n var options = this.options,\n model = this.task,\n fields = {},\n customFields;\n\n if (options.editable.template) {\n return $.map(model.fields, function(value, key) {\n return { field: key };\n });\n } else {\n fields.general = this._fieldsGeneral();\n\n if (options.resources) {\n fields.resources = [ { field: \"resources\" } ];\n }\n\n if (options.dependencies) {\n fields.dependencies = this._fieldsDependencies(model);\n }\n\n customFields = extend(true, {}, model.fields);\n Object.keys(kendo.data.GanttTask.fields).map(key => {\n delete customFields[key];\n });\n\n if (Object.keys(customFields).length > 0) {\n fields.other = this._fieldsOther(customFields);\n }\n }\n\n return fields;\n },\n\n\n showDialog: function(options) {\n var popupStyles = ganttStyles.popup,\n wrapper = this.element,\n task = options.model,\n that = this,\n dialogEl = $(kendo.format('
')).appendTo(wrapper),\n messages = this.options.messages,\n buttonsEl;\n\n dialogEl.append($(\"

\" + options.text + \"

\"));\n buttonsEl = $('
');\n dialogEl.append(buttonsEl);\n\n buttonsEl.append($(\"\").kendoButton({\n name: \"delete\",\n themeColor: \"primary\",\n icon: \"trash\",\n click: (e) => {\n e.preventDefault();\n popup.close();\n options.callback();\n }\n }));\n\n buttonsEl.append($(\"\").kendoButton({\n name: \"cancel\",\n icon: \"cancel\",\n click: (e) => {\n e.preventDefault();\n popup.close();\n options.callback(true);\n }\n }));\n\n if (this.popup) {\n this.popup.destroy();\n }\n\n var popup = this.popup = dialogEl.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 that.trigger(\"close\", { window: dialogEl });\n }\n })\n .getKendoWindow();\n\n popup.center().open();\n\n popup.element.find(\".k-button-solid-primary\").trigger(\"focus\");\n },\n\n _buildButtons: function(dialogEl) {\n var messages = this.options.messages,\n buttonsEl = $('
');\n\n buttonsEl.appendTo(dialogEl);\n\n buttonsEl.append($(\"\").kendoButton({\n name: \"update\",\n themeColor: \"primary\",\n icon: \"save\",\n click: this._onSave.bind(this)\n }));\n buttonsEl.append($(\"\").kendoButton({\n name: \"cancel\",\n icon: \"cancel\",\n click: this._onCancel.bind(this)\n }));\n buttonsEl.append($(\"\"));\n\n if (this.options.editable.destroy !== false) {\n buttonsEl.append($(\"\").kendoButton({\n name: \"delete\",\n themeColor: \"primary\",\n icon: \"trash\",\n fillMode: \"flat\",\n click: this._onDelete.bind(this)\n }));\n }\n },\n\n _buildEditTemplate: function(model, dialogEl) {\n var template = this.options.editable.template;\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var html = \"\";\n\n if (template) {\n if (typeof template === STRING) {\n template = kendo.unescape(template);\n }\n\n html += (kendo.template(template, settings))(model);\n } else {\n this.renderForm = true;\n html += `
`;\n }\n\n var formEl = $(html);\n kendo.applyStylesFromKendoAttributes(formEl, [\"min-height\"]);\n formEl.appendTo(dialogEl);\n },\n\n _createPopupEditor: function() {\n var that = this;\n var options = {};\n var messages = this.options.messages;\n var popupStyles = ganttStyles.popup;\n var editableWidget;\n var task = this.task;\n var container = $(kendo.format('
', kendo.attr(\"uid\"), task.uid, popupStyles.form, popupStyles.editForm));\n\n container.appendTo(this.element);\n\n this._buildEditTemplate(task, container);\n this._buildButtons(container);\n\n this.container = container.kendoWindow(extend({\n width: 554,\n modal: true,\n resizable: false,\n draggable: true,\n title: messages.editor.editorTitle,\n visible: false,\n actions: [ \"Minimize\", \"Maximize\", \"Close\" ],\n close: function(e) {\n if (e.userTriggered) {\n if (that.trigger(\"cancel\", { container: container, model: task })) {\n e.preventDefault();\n }\n }\n }\n }, options));\n\n if (this.renderForm) {\n editableWidget = this._initForm();\n } else {\n editableWidget = container.kendoEditable({\n model: task,\n clearContainer: false,\n validateOnBlur: true,\n target: that.options.target\n })\n .data(\"kendoEditable\");\n }\n\n kendo.cycleForm(container);\n\n if (!this.trigger(\"edit\", { container: container, model: task })) {\n container.data(\"kendoWindow\").center().open();\n } else {\n that.trigger(\"cancel\", { container: container, model: task });\n }\n\n return editableWidget;\n },\n\n _fieldsDependencies: function(model) {\n var options = this.options,\n ds = options.target.dataSource,\n nameDdlDs = ds.data().filter(i => i.id !== model.id).map(i => ({ text: i.title, value: i.id })),\n typeDs = [\n { value: 0, text: \"Finish-Finish\" },\n { value: 1, text: \"Finish-Start\" },\n { value: 2, text: \"Start-Finish\" },\n { value: 3, text: \"Start-Start\" }\n ];\n\n return {\n nameDdlDs, typeDs\n };\n },\n\n _fieldsGeneral: function() {\n var that = this,\n options = this.options,\n dataSource = options.target.dataSource,\n messages = options.messages.editor,\n task = this.task,\n modelFields = task.fields,\n startText = this.plannedEditors ? messages.actualStart : messages.start,\n endText = this.plannedEditors ? messages.actualEnd : messages.end,\n fullData, excluded, ddlData;\n\n var general = [\n { field: \"title\", title: messages.title, colSpan: 4 }\n ];\n\n if (this.plannedEditors) {\n general.push({\n field: \"plannedStart\",\n title: messages.plannedStart,\n colSpan: 2,\n editor: \"DateTimePicker\",\n validation: modelFields.plannedStart.validation,\n editorOptions: {\n componentType: \"modern\"\n }\n });\n\n general.push({\n field: \"plannedEnd\",\n title: messages.plannedEnd,\n colSpan: 2,\n editor: \"DateTimePicker\",\n validation: modelFields.plannedEnd.validation,\n editorOptions: {\n componentType: \"modern\"\n }\n });\n }\n\n fullData = dataSource.data();\n excluded = dataSource.taskAllChildren(task);\n excluded.push(task);\n ddlData = fullData.filter(n => !excluded.some(e => e.id === n.id));\n\n general.push({\n field: \"start\",\n title: startText,\n colSpan: 2,\n editor: \"DateTimePicker\",\n validation: modelFields.start.validation,\n editorOptions: {\n componentType: \"modern\"\n }\n });\n general.push({\n field: \"end\",\n title: endText,\n colSpan: 2,\n editor: \"DateTimePicker\",\n validation: modelFields.start.validation,\n editorOptions: {\n componentType: \"modern\"\n }\n });\n general.push({\n field: \"percentComplete\",\n title: messages.percentComplete,\n format: PERCENTAGE_FORMAT,\n colSpan: 1,\n hint: messages.percentCompleteHint\n });\n general.push({\n field: \"parentId\",\n title: messages.parent,\n colSpan: 4,\n editor: \"DropDownList\",\n editorOptions: {\n optionLabel: messages.parentOptionLabel,\n filter: \"contains\",\n dataSource: ddlData,\n enable: ddlData.length > 0,\n dataValueField: \"id\",\n dataTextField: \"title\",\n valuePrimitive: true,\n template: ({ title, start, end }) => `${title} ${kendo.toString(start, \"d\")}-${kendo.toString(end, \"d\")}`\n }\n });\n\n general = general.map(function(item) {\n item = extend(true, {\n label: item.title\n }, item);\n\n if (!task.editable || task.editable(item.field)) {\n return item;\n } else {\n return extend(true, item, {\n editor: that._readonlyEditor.bind(that)\n });\n }\n });\n\n return general;\n },\n\n _fieldsOther: function(other) {\n var that = this,\n task = this.task;\n\n other = Object.keys(other).map(function(key) {\n var item = other[key];\n\n item = extend(true, {\n field: key,\n label: item.title\n }, item);\n\n if (!task.editable || task.editable(item.field)) {\n return item;\n } else {\n return extend(true, item, {\n editor: that._readonlyEditor.bind(that)\n });\n }\n });\n\n return other;\n },\n\n _gridOptions: function(dependencies, type, keyType, taskId) {\n var messages = this.options.messages,\n data;\n\n if (!this.dependencyData) {\n this.dependencyData = {};\n }\n\n data = this.dependencyData[type] = this.options.target.dependencies.view().filter(d => d[keyType] === taskId);\n\n return {\n dataSource: {\n data: data,\n schema: {\n model: {\n fields: {\n id: { from: \"id\" },\n [type]: { from: type, validation: { required: { message: messages.editor.name + \" is required\" } } },\n type: { from: \"type\", validation: { required: true }, defaultValue: 1 }\n }\n }\n }\n },\n columns: [{\n selectable: true,\n width: 50\n },{\n field: type,\n title: messages.editor.name,\n values: dependencies.nameDdlDs\n }, {\n field: \"type\",\n title: messages.editor.dependencyType,\n values: dependencies.typeDs,\n width: \"9em\"\n }],\n toolbar: [{\n name: \"create\",\n text: messages.editor.addNew\n },{\n name: \"remove\",\n icon: \"minus\",\n text: messages.editor.remove,\n click: (e) => {\n var grid = e.target.closest(\".k-grid\").getKendoGrid(),\n ds = grid.dataSource,\n selected = grid.select(),\n items = [];\n\n if (selected && selected.length > 0) {\n selected.each((i, row) => {\n items.push(grid.dataItem($(row)));\n });\n\n items.map(i => {\n ds.remove(i);\n });\n }\n }\n }],\n editable: true,\n sortable: true,\n navigatable: true,\n height: GRID_HEIGHT,\n edit: function() {\n var select = $(\"[name=predecessorId], [name=successorId]\"),\n ddl;\n\n if (select.length) {\n ddl = select.data(\"kendoDropDownList\");\n ddl.setOptions({\n filter: \"contains\"\n });\n }\n },\n };\n },\n\n _initForm: function() {\n var that = this,\n task = that.task,\n container = that.container,\n resources = that.options.resources,\n resourceField = task.get(resources.field),\n fields = that.fields(),\n tabStripDs = that._tabStripSource(fields, resourceField);\n\n container.find(\".k-gantt-edit-tabstrip\").kendoTabStrip({\n dataTextField: \"name\",\n dataContentField: \"content\",\n dataSource: tabStripDs,\n value: that.options.messages.editor.general,\n select: (e) => {\n var tabStrip = e.sender,\n contentElement = $(tabStrip.contentElement(tabStrip.select().index())),\n grid = contentElement.find(\".k-grid\").data(\"kendoGrid\"),\n form = contentElement.find(\".k-form\").data(\"kendoForm\");\n\n if (grid && grid.editable && grid.editable.validatable && !grid.editable.validatable.validate()) {\n e.preventDefault();\n } else if (form && !form.validator.validate()) {\n e.preventDefault();\n }\n }\n });\n\n that._initGeneral(fields.general, task);\n\n if (resourceField) {\n that.resourceEditor = resources.editor(container.find(\".k-gantt-resources\"), task);\n }\n\n if (fields.dependencies) {\n container.find(\".k-gantt-predecessors\").kendoGrid(that._gridOptions(fields.dependencies, \"predecessorId\", \"successorId\", task.id));\n container.find(\".k-gantt-successors\").kendoGrid(that._gridOptions(fields.dependencies, \"successorId\", \"predecessorId\", task.id));\n }\n\n if (fields.other) {\n that._initOther(fields.other, task);\n }\n\n return that.form.editable;\n },\n\n _initGeneral: function(items, task) {\n this.form = this.container.find(\".k-gantt-form-default\").kendoForm({\n layout: \"grid\",\n grid: {\n cols: 4,\n gutter: {\n rows: 0,\n cols: 8\n }\n },\n items: items,\n formData: task,\n buttonsTemplate: () => \"\",\n validatable: {\n validateOnBlur: true\n }\n }).data(\"kendoForm\");\n },\n\n _initOther: function(items, task) {\n this.container.find(\".k-gantt-form-other\").kendoForm({\n items: items,\n formData: task,\n buttonsTemplate: () => \"\",\n validatable: {\n validateOnBlur: true\n }\n });\n },\n\n _readonlyEditor: function(container, options) {\n var field = options.field,\n value = '',\n ds = this.options.target.dataSource;\n\n if (options.model.get(field) !== null) {\n value = options.model.get(field);\n\n if (value instanceof Date) {\n value = kendo.toString(value, \"g\");\n } else if (field === \"percentComplete\") {\n value = kendo.toString(value, options.format);\n } else if (field === \"parentId\") {\n value = ds.get(value).title;\n }\n }\n\n container.append(\"\" + value + \"\");\n },\n\n _onCancel: function() {\n this.trigger(\"cancel\", { container: this.container, model: this.task });\n },\n\n _onDelete: function() {\n this.trigger(\"remove\", { container: this.container, model: this.task });\n },\n\n _onSave: function() {\n var task = this.task,\n fields = [],\n updateInfo = {},\n field,\n container = this.container,\n predeGrid = container.find(\".k-gantt-predecessors\").getKendoGrid(),\n sucGrid = container.find(\".k-gantt-successors\").getKendoGrid(),\n found, prevData, newData, args = {}, createdData = [], updatedData = [];\n\n if (predeGrid) {\n prevData = this.dependencyData.successorId.concat(this.dependencyData.predecessorId);\n newData = predeGrid.dataSource.view().toJSON().concat(sucGrid.dataSource.view().toJSON());\n\n if (predeGrid && predeGrid.editable && predeGrid.editable.validatable && !predeGrid.editable.validatable.validate() ||\n sucGrid && sucGrid.editable && sucGrid.editable.validatable && !sucGrid.editable.validatable.validate()) {\n return;\n }\n\n newData.map(n => {\n found = prevData.find(i => i.id === n.id);\n\n if (found) {\n if (found.dirty) {\n updatedData.push(n);\n }\n\n newData = newData.filter(i => i.id !== n.id);\n prevData = prevData.filter(i => i.id !== n.id);\n }\n });\n\n newData.map(i => {\n if (i.successorId) {\n if (!i.predecessorId) {\n i.predecessorId = task.get(\"id\");\n }\n\n createdData.push(i);\n } else if (i.predecessorId) {\n if (!i.successorId) {\n i.successorId = task.get(\"id\");\n }\n\n createdData.push(i);\n }\n });\n\n if (createdData.length > 0 || prevData.length > 0 || updatedData.length > 0) {\n args.updateDependencies = {\n destroyed: prevData,\n created: createdData,\n updated: updatedData\n };\n }\n }\n\n if (Array.isArray(this.fields())) {\n fields = this.fields();\n } else {\n Object.values(this.fields()).map((val) => {\n if (Array.isArray(val)) {\n fields.push(...val);\n }\n });\n }\n\n if (this.resourceEditor) {\n if (!this.resourceEditor.updateModel()) {\n return;\n }\n }\n\n for (var i = 0, length = fields.length; i < length; i++) {\n field = fields[i].field;\n updateInfo[field] = task.get(field);\n }\n\n this.trigger(\"save\", $.extend({}, args, {\n container: container,\n model: task,\n updateInfo: updateInfo\n }));\n },\n\n _tabStripSource: function(fields, resourceField) {\n var messages = this.options.messages.editor,\n dependencies = fields.dependencies,\n tabStripDs = [{\n name: messages.general,\n content: \"
\"\n }];\n\n if (resourceField) {\n tabStripDs.push({\n name: messages.resources,\n content: \"
\"\n });\n }\n\n if (dependencies) {\n tabStripDs.push({\n name: messages.predecessors,\n content: \"
\"\n });\n tabStripDs.push({\n name: messages.successors,\n content: \"
\"\n });\n }\n\n if (fields.other) {\n tabStripDs.push({\n name: messages.other,\n content: \"
\"\n });\n }\n\n return tabStripDs;\n }\n });\n var ResourceEditor = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this.wrapper = this.element;\n this.model = this.options.model;\n this.resourcesField = this.options.resourcesField;\n\n this._resourceGrid();\n },\n\n destroy: function() {\n this.grid = null;\n\n Widget.fn.destroy.call(this);\n\n this.element = this.wrapper = null;\n },\n\n updateModel: function() {\n var resources = [];\n var item, value;\n var grid = this.grid;\n var data = grid.dataSource.data();\n var editable = grid.editable;\n\n if (editable && editable.validatable && !editable.validatable.validate()) {\n return false;\n }\n\n for (var i = 0, length = data.length; i < length; i++) {\n item = data[i];\n value = item.get(\"value\");\n\n if (item.id !== undefined$1 && value !== null && value > 0) {\n resources.push(data[i]);\n }\n }\n\n this.model[this.resourcesField] = resources;\n\n return true;\n },\n\n _resourceGrid: function() {\n var that = this;\n var messages = this.options.messages;\n var options = that.options;\n var element = this.wrapper;\n var ddlDs = options.resources;\n\n that.grid = new kendo.ui.Grid(element, {\n columns: [{\n selectable: true,\n width: 50\n },{\n field: \"id\",\n title: messages.resourcesHeader,\n values: ddlDs\n },{\n field: \"value\",\n title: messages.unitsHeader,\n template: function(dataItem) {\n var valueFormat = dataItem.format || PERCENTAGE_FORMAT;\n var value = dataItem.value !== null ? dataItem.value : \"\";\n\n return valueFormat ? kendo.toString(value, valueFormat) : value;\n },\n width: 120\n }],\n height: GRID_HEIGHT,\n sortable: true,\n editable: true,\n filterable: true,\n navigatable: true,\n toolbar: [{\n name: \"create\",\n text: messages.addNew\n },{\n name: \"remove\",\n icon: \"minus\",\n text: messages.remove,\n click: () => {\n var grid = that.grid,\n ds = grid.dataSource,\n selected = grid.selectedKeyNames();\n\n if (selected && selected.length > 0) {\n selected.map(i => {\n ds.remove(ds.get(i));\n });\n }\n }\n }],\n dataSource: {\n data: this.model.resources,\n schema: {\n model: {\n id: \"id\",\n fields: {\n id: { from: \"id\", defaultValue: undefined$1, validation: { required: { message: messages.resourcesHeader + \" is required\" } } },\n value: { from: \"value\", type: \"number\", defaultValue: 1, validation: this.options.unitsValidation },\n format: { from: \"format\", type: \"string\" }\n }\n }\n }\n },\n edit: function(e) {\n var select = e.container.find(\"select\"),\n ddl = select.data(\"kendoDropDownList\"),\n currentId = e.model.id,\n filterOut = options.model.resources.map(r => r.id).filter(r => r !== currentId),\n filters = filterOut.map(f => ({\n field: \"value\",\n operator: \"neq\",\n value: f\n }));\n\n if (ddl) {\n ddl.dataSource.filter({\n logic: \"and\",\n filters: filters\n });\n\n ddl.setOptions({\n filter: \"contains\"\n });\n }\n }\n });\n }\n });\n\n kendo.gantt = {\n PopupEditor: PopupEditor,\n ResourceEditor: ResourceEditor\n };\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}