@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 14.3 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.data.min.js`),require(`kendo.popup.min.js`),require(`kendo.window.min.js`),require(`kendo.gantt.data.min.js`),require(`kendo.grid.min.js`),require(`kendo.datetimepicker.min.js`),require(`kendo.numerictextbox.min.js`),require(`kendo.textbox.min.js`),require(`kendo.form.min.js`),require(`kendo.tabstrip.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.data.min`,`kendo.popup.min`,`kendo.window.min`,`kendo.gantt.data.min`,`kendo.grid.min`,`kendo.datetimepicker.min`,`kendo.numerictextbox.min`,`kendo.textbox.min`,`kendo.form.min`,`kendo.tabstrip.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.GanttEditors={}),e.kendo._globals.Data,e.kendo._globals.Popup,e.kendo._globals.Window,e.kendo._globals.GanttData,e.kendo._globals.Grid,e.kendo._globals.Datetimepicker,e.kendo._globals.Numerictextbox,e.kendo._globals.Textbox,e.kendo._globals.Form,e.kendo._globals.Tabstrip))})(this,function(e,t,n,r,i,a,o,s,c,l,u){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let d={id:`gantt.editors`,name:`GanttEditors`,category:`web`,description:`The Gantt component editors.`,depends:[`data`,`popup`,`window`,`gantt.data`,`grid`,`datetimepicker`,`numerictextbox`,`textbox`,`form`,`tabstrip`],hidden:!0};(function(e,t){var n=window.kendo,r=n.ui,i=n.Observable,a=r.Widget,o=n.htmlEncode,s=e.extend,c=`p0`,l=`23em`,u=`28em`,d=`string`,f={buttonDelete:`k-gantt-delete`,buttonCancel:`k-gantt-cancel`,buttonSave:`k-gantt-update`,focused:`k-focus`,gridContent:`k-grid-content`,hovered:`k-hover`,item:`k-item k-menu-item`,popupWrapper:`k-popup k-menu-popup`,popupList:`k-menu-group k-reset`,popup:{form:`k-popup-edit-form`,editForm:`k-gantt-edit-form`,formContainer:`k-edit-form-container`,resourcesFormContainer:`k-resources-form-container`,message:`k-popup-message`,buttonsContainer:`k-edit-buttons k-actions`,button:`k-button`,buttonDefaults:``,editField:`k-edit-field`,editLabel:`k-edit-label`,resourcesField:`k-gantt-resources`},primary:`k-button-primary`,toolbar:{appendButton:`k-gantt-create`}};n.gantt={PopupEditor:i.extend({init:function(e,t){i.fn.init.call(this),this.element=e,this.options=s(!0,{},this.options,t)},destroy:function(){this.close(),this.unbind()},close:function(){var e=this,t=function(){e.editable&&(e.container.data(`kendoWindow`).destroy(),e.editable=null,e.container=null),e.popup&&=(e.popup.destroy(),null)};e.editable&&e.container.is(`:visible`)?(e.trigger(`close`,{window:e.container}),e.container.data(`kendoWindow`).bind(`deactivate`,t).close()):t()},editTask:function(e,t){this.task=e,this.plannedEditors=t,this.editable=this._createPopupEditor()},fields:function(){var t=this.options,r=this.task,i={},a;return t.editable.template?e.map(r.fields,function(e,t){return{field:t}}):(i.general=this._fieldsGeneral(),t.resources&&(i.resources=[{field:`resources`}]),t.dependencies&&(i.dependencies=this._fieldsDependencies(r)),a=s(!0,{},r.fields),Object.keys(n.data.GanttTask.fields).map(e=>{delete a[e]}),Object.keys(a).length>0&&(i.other=this._fieldsOther(a)),i)},showDialog:function(t){var r=f.popup,i=this.element,a=t.model,s=this,c=e(n.format(`<div class="`+r.formContainer+`" data-uid="`+a.uid+`">`)).appendTo(i),l=this.options.messages,u;c.append(e(`<p>`+t.text+`</p>`)),u=e(`<div class="`+r.buttonsContainer+`">`),c.append(u),u.append(e(`<button class='`+f.buttonDelete+`'>`+o(l.destroy)+`</button>`).kendoButton({name:`delete`,themeColor:`primary`,icon:`trash`,click:e=>{e.preventDefault(),d.close(),t.callback()}})),u.append(e(`<button class='`+f.buttonCancel+`'>`+o(l.cancel)+`</button>`).kendoButton({name:`cancel`,icon:`cancel`,click:e=>{e.preventDefault(),d.close(),t.callback(!0)}})),this.popup&&this.popup.destroy();var d=this.popup=c.kendoWindow({modal:!0,autoFocus:!1,resizable:!1,draggable:!1,title:t.title,visible:!1,deactivate:function(){this.destroy(),s.trigger(`close`,{window:c})}}).getKendoWindow();d.center().open(),d.element.find(`.k-button-primary`).trigger(`focus`)},_buildButtons:function(t){var n=this.options.messages,r=e(`<div class="`+f.popup.buttonsContainer+`">`);r.appendTo(t),r.append(e(`<button class='`+f.buttonSave+`'>`+o(n.save)+`</button>`).kendoButton({name:`update`,themeColor:`primary`,icon:`save`,click:this._onSave.bind(this)})),r.append(e(`<button class='`+f.buttonCancel+`'>`+o(n.cancel)+`</button>`).kendoButton({name:`cancel`,icon:`cancel`,click:this._onCancel.bind(this)})),r.append(e(`<span class='k-spacer'>`)),this.options.editable.destroy!==!1&&r.append(e(`<button class='`+f.buttonDelete+`'>`+o(n.destroy)+`</button>`).kendoButton({name:`delete`,themeColor:`primary`,icon:`trash`,fillMode:`flat`,click:this._onDelete.bind(this)}))},_buildEditTemplate:function(t,r){var i=this.options.editable.template,a=s({},n.Template,this.options.templateSettings),o=``;i?(typeof i===d&&(i=n.unescape(i)),o+=n.template(i,a)(t)):(this.renderForm=!0,o+=`<div role="form" class="k-gantt-edit-tabstrip" ${n.attr(`style-min-height`)}="${u}"></div>`);var c=e(o);n.applyStylesFromKendoAttributes(c,[`min-height`]),c.appendTo(r)},_createPopupEditor:function(){var t=this,r={},i=this.options.messages,a=f.popup,o,c=this.task,l=e(n.format(`<div {0}="{1}" class="{2} {3}">`,n.attr(`uid`),c.uid,a.form,a.editForm));return l.appendTo(this.element),this._buildEditTemplate(c,l),this._buildButtons(l),this.container=l.kendoWindow(s({width:554,modal:!0,resizable:!1,draggable:!0,title:i.editor.editorTitle,visible:!1,actions:[`Minimize`,`Maximize`,`Close`],close:function(e){e.userTriggered&&t.trigger(`cancel`,{container:l,model:c})&&e.preventDefault()}},r)),o=this.renderForm?this._initForm():l.kendoEditable({model:c,clearContainer:!1,validateOnBlur:!0,target:t.options.target}).data(`kendoEditable`),n.cycleForm(l),this.trigger(`edit`,{container:l,model:c})?t.trigger(`cancel`,{container:l,model:c}):l.data(`kendoWindow`).center().open(),o},_fieldsDependencies:function(e){return{nameDdlDs:this.options.target.dataSource.data().filter(t=>t.id!==e.id).map(e=>({text:e.title,value:e.id})),typeDs:[{value:0,text:`Finish-Finish`},{value:1,text:`Finish-Start`},{value:2,text:`Start-Finish`},{value:3,text:`Start-Start`}]}},_fieldsGeneral:function(){var e=this,t=this.options,r=t.target.dataSource,i=t.messages.editor,a=this.task,l=a.fields,u=this.plannedEditors?i.actualStart:i.start,d=this.plannedEditors?i.actualEnd:i.end,f,p,m,h=[{field:`title`,title:i.title,colSpan:4}];return this.plannedEditors&&(h.push({field:`plannedStart`,title:i.plannedStart,colSpan:2,editor:`DateTimePicker`,validation:l.plannedStart.validation,editorOptions:{componentType:`modern`}}),h.push({field:`plannedEnd`,title:i.plannedEnd,colSpan:2,editor:`DateTimePicker`,validation:l.plannedEnd.validation,editorOptions:{componentType:`modern`}})),f=r.data(),p=r.taskAllChildren(a),p.push(a),m=f.filter(e=>!p.some(t=>t.id===e.id)),h.push({field:`start`,title:u,colSpan:2,editor:`DateTimePicker`,validation:l.start.validation,editorOptions:{componentType:`modern`}}),h.push({field:`end`,title:d,colSpan:2,editor:`DateTimePicker`,validation:l.start.validation,editorOptions:{componentType:`modern`}}),h.push({field:`percentComplete`,title:i.percentComplete,format:c,colSpan:1,hint:o(i.percentCompleteHint)}),h.push({field:`parentId`,title:i.parent,colSpan:4,editor:`DropDownList`,editorOptions:{optionLabel:i.parentOptionLabel,filter:`contains`,dataSource:m,enable:m.length>0,dataValueField:`id`,dataTextField:`title`,valuePrimitive:!0,template:({title:e,start:t,end:r})=>`<span>${e} ${n.toString(t,`d`)}-${n.toString(r,`d`)}</span>`}}),h=h.map(function(t){return t=s(!0,{label:t.title},t),!a.editable||a.editable(t.field)?t:s(!0,t,{editor:e._readonlyEditor.bind(e)})}),h},_fieldsOther:function(e){var t=this,n=this.task;return e=Object.keys(e).map(function(r){var i=e[r];return i=s(!0,{field:r,label:i.title},i),!n.editable||n.editable(i.field)?i:s(!0,i,{editor:t._readonlyEditor.bind(t)})}),e},_gridOptions:function(t,n,r,i){var a=this.options.messages,o;return this.dependencyData||={},o=this.dependencyData[n]=this.options.target.dependencies.view().filter(e=>e[r]===i),{dataSource:{data:o,schema:{model:{fields:{id:{from:`id`},[n]:{from:n,validation:{required:{message:a.editor.name+` is required`}}},type:{from:`type`,validation:{required:!0},defaultValue:1}}}}},encodeTitles:!0,columns:[{selectable:!0,width:50},{field:n,title:a.editor.name,values:t.nameDdlDs},{field:`type`,title:a.editor.dependencyType,values:t.typeDs,width:`9em`}],toolbar:[{name:`create`,text:a.editor.addNew},{name:`remove`,icon:`minus`,text:a.editor.remove,click:t=>{var n=t.target.closest(`.k-grid`).getKendoGrid(),r=n.dataSource,i=n.select(),a=[];i&&i.length>0&&(i.each((t,r)=>{a.push(n.dataItem(e(r)))}),a.map(e=>{r.remove(e)}))}}],editable:!0,sortable:!0,navigatable:!0,height:l,edit:function(){var t=e(`[name=predecessorId], [name=successorId]`),n;t.length&&(n=t.data(`kendoDropDownList`),n.setOptions({filter:`contains`}))}}},_initForm:function(){var t=this,n=t.task,r=t.container,i=t.options.resources,a=n.get(i.field),o=t.fields(),s=t._tabStripSource(o,a);return r.find(`.k-gantt-edit-tabstrip`).kendoTabStrip({dataTextField:`name`,dataContentField:`content`,dataSource:s,value:t.options.messages.editor.general,select:t=>{var n=t.sender,r=e(n.contentElement(n.select().index())),i=r.find(`.k-grid`).data(`kendoGrid`),a=r.find(`.k-form`).data(`kendoForm`);(i&&i.editable&&i.editable.validatable&&!i.editable.validatable.validate()||a&&!a.validator.validate())&&t.preventDefault()}}),t._initGeneral(o.general,n),a&&(t.resourceEditor=i.editor(r.find(`.k-gantt-resources`),n)),o.dependencies&&(r.find(`.k-gantt-predecessors`).kendoGrid(t._gridOptions(o.dependencies,`predecessorId`,`successorId`,n.id)),r.find(`.k-gantt-successors`).kendoGrid(t._gridOptions(o.dependencies,`successorId`,`predecessorId`,n.id))),o.other&&t._initOther(o.other,n),t.form.editable},_initGeneral:function(e,t){this.form=this.container.find(`.k-gantt-form-default`).kendoForm({layout:`grid`,grid:{cols:4,gutter:{rows:0,cols:8}},items:e,formData:t,buttonsTemplate:()=>``,validatable:{validateOnBlur:!0}}).data(`kendoForm`)},_initOther:function(e,t){this.container.find(`.k-gantt-form-other`).kendoForm({items:e,formData:t,buttonsTemplate:()=>``,validatable:{validateOnBlur:!0}})},_readonlyEditor:function(e,t){var r=t.field,i=``,a=this.options.target.dataSource;t.model.get(r)!==null&&(i=t.model.get(r),i instanceof Date?i=n.toString(i,`g`):r===`percentComplete`?i=n.toString(i,t.format):r===`parentId`&&(i=a.get(i).title)),e.append(`<span>`+i+`</span>`)},_onCancel:function(){this.trigger(`cancel`,{container:this.container,model:this.task})},_onDelete:function(){this.trigger(`remove`,{container:this.container,model:this.task})},_onSave:function(){var t=this.task,n=[],r={},i,a=this.container,o=a.find(`.k-gantt-predecessors`).getKendoGrid(),s=a.find(`.k-gantt-successors`).getKendoGrid(),c,l,u,d={},f=[],p=[];if(o){if(l=this.dependencyData.successorId.concat(this.dependencyData.predecessorId),u=o.dataSource.view().toJSON().concat(s.dataSource.view().toJSON()),o&&o.editable&&o.editable.validatable&&!o.editable.validatable.validate()||s&&s.editable&&s.editable.validatable&&!s.editable.validatable.validate())return;u.map(e=>{c=l.find(t=>t.id===e.id),c&&(c.dirty&&p.push(e),u=u.filter(t=>t.id!==e.id),l=l.filter(t=>t.id!==e.id))}),u.map(e=>{e.successorId?(e.predecessorId||=t.get(`id`),f.push(e)):e.predecessorId&&(e.successorId||=t.get(`id`),f.push(e))}),(f.length>0||l.length>0||p.length>0)&&(d.updateDependencies={destroyed:l,created:f,updated:p})}if(Array.isArray(this.fields())?n=this.fields():Object.values(this.fields()).map(e=>{Array.isArray(e)&&n.push(...e)}),!(this.resourceEditor&&!this.resourceEditor.updateModel())){for(var m=0,h=n.length;m<h;m++)i=n[m].field,r[i]=t.get(i);this.trigger(`save`,e.extend({},d,{container:a,model:t,updateInfo:r}))}},_tabStripSource:function(e,t){var n=this.options.messages.editor,r=e.dependencies,i=[{name:n.general,content:`<div class='k-gantt-form-default'></div>`}];return t&&i.push({name:n.resources,content:`<div class='k-gantt-resources'></div>`}),r&&(i.push({name:n.predecessors,content:`<div class='k-gantt-predecessors'></div>`}),i.push({name:n.successors,content:`<div class='k-gantt-successors'></div>`})),e.other&&i.push({name:n.other,content:`<div class='k-gantt-form-other'></div>`}),i}}),ResourceEditor:a.extend({init:function(e,t){a.fn.init.call(this,e,t),this.wrapper=this.element,this.model=this.options.model,this.resourcesField=this.options.resourcesField,this._resourceGrid()},destroy:function(){this.grid=null,a.fn.destroy.call(this),this.element=this.wrapper=null},updateModel:function(){var e=[],n,r,i=this.grid,a=i.dataSource.data(),o=i.editable;if(o&&o.validatable&&!o.validatable.validate())return!1;for(var s=0,c=a.length;s<c;s++)n=a[s],r=n.get(`value`),n.id!==t&&r!==null&&r>0&&e.push(a[s]);return this.model[this.resourcesField]=e,!0},_resourceGrid:function(){var e=this,r=this.options.messages,i=e.options,a=this.wrapper,o=i.resources;e.grid=new n.ui.Grid(a,{encodeTitles:!0,columns:[{selectable:!0,width:50},{field:`id`,title:r.resourcesHeader,values:o},{field:`value`,title:r.unitsHeader,template:function(e){var t=e.format||c,r=e.value===null?``:e.value;return t?n.toString(r,t):r},width:120}],height:l,sortable:!0,editable:!0,filterable:!0,navigatable:!0,toolbar:[{name:`create`,text:r.addNew},{name:`remove`,icon:`minus`,text:r.remove,click:()=>{var t=e.grid,n=t.dataSource,r=t.selectedKeyNames();r&&r.length>0&&r.map(e=>{n.remove(n.get(e))})}}],dataSource:{data:this.model.resources,schema:{model:{id:`id`,fields:{id:{from:`id`,defaultValue:t,validation:{required:{message:r.resourcesHeader+` is required`}}},value:{from:`value`,type:`number`,defaultValue:1,validation:this.options.unitsValidation},format:{from:`format`,type:`string`}}}}},edit:function(e){var t=e.container.find(`select`).data(`kendoDropDownList`),n=e.model.id,r=i.model.resources.map(e=>e.id).filter(e=>e!==n).map(e=>({field:`value`,operator:`neq`,value:e}));t&&(t.dataSource.filter({logic:`and`,filters:r}),t.setOptions({filter:`contains`}))}})}})}})(window.kendo.jQuery);var f=kendo;e.__meta__=d,e.default=f});
//# sourceMappingURL=kendo.gantt.editors.min.js.map