@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 8.69 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.data.min.js`),require(`kendo.treelist.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.data.min`,`kendo.treelist.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.GanttData={}),e.kendo._globals.Data,e.kendo._globals.Treelist))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let r={id:`gantt.data`,name:`GanttData`,category:`web`,description:`The Gantt Data.`,depends:[`data`,`treelist`],hidden:!0};(function(e,t){var n=Array.isArray,r=e.extend,i=e.map,a=kendo.data,o=a.Query,s=a.DataSource,c=a.TreeListDataSource,l=a.TreeListModel,u=`parentId`,d=function(e,t){return function(r){r=n(r)?{data:r}:r;var i=r||{};if(i.data=i.data,!(i instanceof e)&&i instanceof s)throw Error(`Incorrect DataSource type. Only `+t+` instances are supported`);return i instanceof e?i:new e(i)}},f=function(e){if(e.filter(`[name=end], [name=start], [name=plannedEnd], [name=plannedStart]`).length){for(var t=e.attr(`name`),n=kendo.widgetInstance(e,kendo.ui),r={},i=e,a,o;i!==window&&!a;)i=i.parent(),a=i.data(`kendoEditable`);return o=a?a.options.model:null,o?(t.indexOf(`planned`)>=0?(r.plannedStart=o.plannedStart,r.plannedEnd=o.plannedEnd):(r.start=o.start,r.end=o.end),r[t]=n?n.value():kendo.parseDate(e.val()),t.indexOf(`planned`)>=0?r.plannedStart<=r.plannedEnd:r.start<=r.end):!0}return!0},p=kendo.data.Model.define({id:`id`,fields:{id:{type:`number`,editable:!1},predecessorId:{type:`number`,validation:{required:!0}},successorId:{type:`number`,validation:{required:!0}},type:{type:`number`,validation:{required:!0}}}}),m=s.extend({init:function(e){s.fn.init.call(this,r(!0,{},{schema:{modelBase:p,model:p}},e))},dependencies:function(e){var t=this.predecessors(e),n=this.successors(e);return t.push.apply(t,n),t},predecessors:function(e){return this._dependencies(`successorId`,e)},successors:function(e){return this._dependencies(`predecessorId`,e)},_dependencies:function(e,t){var n=this.view(),r={field:e,operator:`eq`,value:t};return n=new o(n).filter(r).toArray(),n}});m.create=d(m,`GanttDependencyDataSource`);var h=l.define({fields:{id:{type:`number`,editable:!1},parentId:{type:`number`,defaultValue:null,nullable:!0},orderId:{type:`number`,validation:{required:!0}},title:{type:`string`,defaultValue:`New task`},start:{type:`date`,validation:{required:!0}},end:{type:`date`,validation:{required:!0,dateCompare:f,message:`End date should be after or equal to the start date`}},percentComplete:{type:`number`,validation:{required:!0,min:0,max:1,step:.01}},summary:{type:`boolean`},expanded:{type:`boolean`,defaultValue:!0},plannedStart:{type:`date`,defaultValue:null,nullable:!0},plannedEnd:{type:`date`,defaultValue:null,nullable:!0,validation:{dateCompare:f,message:`Planned end date should be after or equal to the planned start date`}}},duration:function(){return this.end-this.start},plannedDuration:function(){var e=this.plannedEnd,t=this.plannedStart;return e&&t?e-t:0},isMilestone:function(){return this.duration()===0},_offset:function(e){for(var t=[`start`,`end`],n,r=0;r<t.length;r++)n=new Date(this.get(t[r]).getTime()+e),this.set(t[r],n)},_offsetPlanned:function(e){for(var t=[`plannedStart`,`plannedEnd`],n,r=0;r<t.length;r++)n=new Date(this.get(t[r]).getTime()+e),this.set(t[r],n)}});h.define=function(e,n){n===t&&(n=e,e=h);var r=n.parentId||u;n.parentIdField=r;var i=l.define(e,n);return r&&(i.parentIdField=r),i};var g=c.extend({init:function(e){c.fn.init.call(this,r(!0,{},{schema:{modelBase:h,model:h},sort:{field:`orderId`,dir:`asc`}},e))},add:function(e){if(e)return e=this._toGanttTask(e),this.insert(this.taskSiblings(e).length,e)},insert:function(e,t){if(t)return t=this._toGanttTask(t),t.set(`orderId`,e),t=s.fn.insert.call(this,e,t),this._reorderSiblings(t,this.taskSiblings(t).length-1),this._resolveSummaryFields(this.taskParent(t)),t},remove:function(e){var t=e.get(`parentId`),n=this.taskAllChildren(e);return this._removeItems(n),e=c.fn.remove.call(this,e),this._childRemoved(t,e.get(`orderId`)),e},taskAllChildren:function(e){var t=[],n=this,r=function(e){var a=n.taskChildren(e);t.push.apply(t,a),i(a,r)};return e?r(e):t=this.view(),t},taskChildren:function(e,n){var r={field:`parentId`,operator:`eq`,value:null},i=this._sort&&this._sort.length?this._sort:{field:`orderId`,dir:`asc`},a,s=n?this.view():this.data();if(e){if(a=e.get(`id`),a===t||a===null||a===``)return[];r.value=a}return s=new o(s).filter(r).sort(i).toArray(),s},taskLevel:function(e){for(var t=0,n=this.taskParent(e);n!==null;)t+=1,n=this.taskParent(n);return t},taskParent:function(e){return!e||e.get(`parentId`)===null?null:this.get(e.parentId)},taskSiblings:function(e){if(!e)return null;var t=this.taskParent(e);return this.taskChildren(t)},taskTree:function(e){for(var t=[],n,r=this.taskChildren(e,!0),i=0,a=r.length;i<a;i++)if(n=r[i],t.push(n),n.get(`expanded`)){var o=this.taskTree(n);t.push.apply(t,o)}return t},update:function(e,n){var r=this,i,a=function(e,t){for(var n=r.taskAllChildren(e),i=0,a=n.length;i<a;i++)n[i]._offset(t)},o=function(e,t){for(var n=r.taskAllChildren(e),i=0,a=n.length;i<a;i++)n[i]._offsetPlanned(t)},s=function(e){var t=e.field,n=e.sender;switch(t){case`start`:r._resolveSummaryStart(r.taskParent(n)),a(n,n.get(t).getTime()-i.getTime());break;case`end`:r._resolveSummaryEnd(r.taskParent(n));break;case`plannedStart`:r._resolveSummaryPlannedStart(r.taskParent(n)),n.get(t)&&i&&o(n,n.get(t).getTime()-i.getTime());break;case`plannedEnd`:r._resolveSummaryPlannedEnd(r.taskParent(n));break;case`percentComplete`:r._resolveSummaryPercentComplete(r.taskParent(n));break;case`orderId`:r._reorderSiblings(n,i);break}};for(var c in n.parentId!==t&&(i=e.get(`parentId`),i!==n.parentId&&(e.set(`parentId`,n.parentId),r._childRemoved(i,e.get(`orderId`)),e.set(`orderId`,r.taskSiblings(e).length-1),r._resolveSummaryFields(r.taskParent(e))),delete n.parentId),e.bind(`change`,s),e.bind(`equalSet`,s),n)i=e.get(c),c===`plannedStart`||c===`plannedEnd`?(i!==t||n[c]!==null)&&e.set(c,n[c]):(c===`start`||c===`end`||e.get(c)!==n[c])&&e.set(c,n[c]);e.unbind(`change`,s),e.unbind(`equalSet`,s)},_childRemoved:function(e,t){for(var n=e===null?null:this.get(e),r=this.taskChildren(n),i=t,a=r.length;i<a;i++)r[i].set(`orderId`,i);this._resolveSummaryFields(n)},_resolveSummaryFields:function(e){e&&(this._updateSummary(e),this.taskChildren(e).length&&(this._resolveSummaryStart(e),this._resolveSummaryEnd(e),this._resolveSummaryPlannedStart(e),this._resolveSummaryPlannedEnd(e),this._resolveSummaryPercentComplete(e)))},_resolveSummaryStart:function(e){var t=this;this._updateSummaryRecursive(e,`start`,function(e){for(var n=t.taskChildren(e),r=n[0].start.getTime(),i,a=1,o=n.length;a<o;a++)i=n[a].start.getTime(),i<r&&(r=i);return new Date(r)})},_resolveSummaryEnd:function(e){var t=this;this._updateSummaryRecursive(e,`end`,function(e){for(var n=t.taskChildren(e),r=n[0].end.getTime(),i,a=1,o=n.length;a<o;a++)i=n[a].end.getTime(),i>r&&(r=i);return new Date(r)})},_resolveSummaryPlannedStart:function(e){var t=this;this._updateSummaryRecursive(e,`plannedStart`,function(e){for(var n=t.taskChildren(e),r=null,i,a=0,o=n.length;a<o;a++)n[a].plannedStart&&(i=n[a].plannedStart.getTime(),(!r||i<r)&&(r=i));return r?new Date(r):null})},_resolveSummaryPlannedEnd:function(e){var t=this;this._updateSummaryRecursive(e,`plannedEnd`,function(e){for(var n=t.taskChildren(e),r=null,i,a=0,o=n.length;a<o;a++)n[a].plannedEnd&&(i=n[a].plannedEnd.getTime(),(!r||i>r)&&(r=i));return r?new Date(r):null})},_resolveSummaryPercentComplete:function(e){var t=this;this._updateSummaryRecursive(e,`percentComplete`,function(e){return new o(t.taskChildren(e)).aggregate([{field:`percentComplete`,aggregate:`average`}]).percentComplete.average})},_reorderSiblings:function(e,t){var n=e.get(`orderId`),r=n>t,i=r?t:n,a=r?n:t,o=r?i:i+1,s=this.taskSiblings(e);if(s.length){a=Math.min(a,s.length-1);for(var c=i;c<=a;c++)s[c]!==e&&(s[c].set(`orderId`,o),o+=1)}},_toGanttTask:function(e){if(!(e instanceof h)){var t=e;e=s.fn._createNewModel.call(this),e.accept(t)}return e},_updateSummary:function(e){if(e!==null){var t=this.taskChildren(e).length;e.set(`summary`,t>0)}},_updateSummaryRecursive:function(e,t,n){if(e){var r=n(e);e.set(t,r);var i=this.taskParent(e);i&&this._updateSummaryRecursive(i,t,n)}}});g.create=d(g,`GanttDataSource`),r(!0,kendo.data,{GanttDataSource:g,GanttTask:h,GanttDependencyDataSource:m,GanttDependency:p})})(window.kendo.jQuery);var i=kendo;e.__meta__=r,e.default=i});
//# sourceMappingURL=kendo.gantt.data.min.js.map