/* * Kendo UI v2015.3.1111 (http://www.telerik.com/kendo-ui) * Copyright 2015 Telerik AD. All rights reserved. * * Kendo UI commercial licenses may be obtained at * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete * If you do not own a commercial license, this file shall be governed by the trial license terms. */ !function(e,define){define(["./kendo.data.min","./kendo.popup.min","./kendo.window.min","./kendo.resizable.min","./kendo.gantt.list.min","./kendo.gantt.timeline.min","./kendo.grid.min","./kendo.pdf.min"],e)}(function(){return function(e,t){function n(e){return"["+g.attr("uid")+(e?"='"+e+"']":"]")}function i(e){return delete e.name,delete e.prefix,delete e.remove,delete e.edit,delete e.add,delete e.navigate,e}function o(e){var t,n,i,o,r,s;if(e.filter("[name=end], [name=start]").length){for(t=e.attr("name"),n=g.widgetInstance(e,g.ui),i={},o=e;o!==window&&!r;)o=o.parent(),r=o.data("kendoEditable");return(s=r?r.options.model:null)?(i.start=s.start,i.end=s.end,i[t]=n?n.value():g.parseDate(e.value()),i.end>=i.start):!0}return!0}function r(t,n){var i=t.parents("["+g.attr("role")+'="gantt"]'),o=[],r=s(i);t.attr(L,0),n&&r.each(function(t,n){o[t]=e(n).scrollTop()});try{t[0].setActive()}catch(a){t[0].focus()}n&&r.each(function(t,n){e(n).scrollTop(o[t])})}function s(t){return e(t).parentsUntil("body").filter(function(e,t){var n=g.getComputedStyles(t,["overflow"]);return"visible"!=n.overflow}).add(window)}var a,l,c,u,h,d,f,p,g=window.kendo,m="matchMedia"in window,v=g.support.browser,_=g.support.mobileOS,w=g.Observable,y=g.ui.Widget,b=g.data.DataSource,x=g.data.ObservableObject,k=g.data.ObservableArray,C=g.data.Query,S=e.isArray,T=e.inArray,A=g.isFunction,D=e.proxy,M=e.extend,E=e.isPlainObject,P=e.map,I=g.keys,R=3,B=".kendoGantt",z="p0",L="tabIndex",F="click",O="width",N="string",V={down:{origin:"bottom left",position:"top left"},up:{origin:"top left",position:"bottom left"}},H="aria-activedescendant",U="gantt_active_cell",j="action-option-focused",W=".",G="Are you sure you want to delete this task?",q="Are you sure you want to delete this dependency?",$=g.template(''),Y='',Q='#=text#',X=g.template('
  • &nbps;
  • '),K=g.template(''),Z=g.template('
    '),J=function(t,n){var i={name:n.field},o=n.model.fields[n.field].validation;o&&E(o)&&o.message&&(i[g.attr("dateCompare-msg")]=o.message),e('").attr(i).appendTo(t),e("').hide().appendTo(t)},ee=function(t,n){e(''+n.messages.assignButton+"").click(n.click).appendTo(t)},te={wrapper:"k-widget k-gantt",rowHeight:"k-gantt-rowheight",listWrapper:"k-gantt-layout k-gantt-treelist",list:"k-gantt-treelist",timelineWrapper:"k-gantt-layout k-gantt-timeline",timeline:"k-gantt-timeline",splitBarWrapper:"k-splitbar k-state-default k-splitbar-horizontal k-splitbar-draggable-horizontal k-gantt-layout",splitBar:"k-splitbar",splitBarHover:"k-splitbar-horizontal-hover",popupWrapper:"k-list-container",popupList:"k-list k-reset",resizeHandle:"k-resize-handle",icon:"k-icon",item:"k-item",line:"k-line",buttonDelete:"k-gantt-delete",buttonCancel:"k-gantt-cancel",buttonSave:"k-gantt-update",buttonToggle:"k-gantt-toggle",primary:"k-primary",hovered:"k-state-hover",selected:"k-state-selected",focused:"k-state-focused",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",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-state-default",button:"k-button",editField:"k-edit-field",editLabel:"k-edit-label",resourcesField:"k-gantt-resources"},toolbar:{headerWrapper:"k-floatwrap k-header k-gantt-toolbar",footerWrapper:"k-floatwrap k-header k-gantt-toolbar",toolbar:"k-gantt-toolbar",expanded:"k-state-expanded",views:"k-gantt-views",viewsWrapper:"k-reset k-header k-gantt-views",actions:"k-gantt-actions",button:"k-button k-button-icontext",buttonToggle:"k-button k-button-icon k-gantt-toggle",iconPlus:"k-icon k-i-plus",iconPdf:"k-icon k-i-pdf",iconToggle:"k-icon k-i-gantt-toggle",viewButtonDefault:"k-state-default",viewButton:"k-view",currentView:"k-current-view",link:"k-link",pdfButton:"k-gantt-pdf",appendButton:"k-gantt-create"}},ne=w.extend({init:function(e,t){w.fn.init.call(this),this.element=e,this.options=M(!0,{},this.options,t),this._popup()},options:{direction:"down",navigatable:!1},_current:function(e){var t=p.styles,n=this.list.find(W+t.focused),i=n[e]();i.length&&(n.removeClass(t.focused).removeAttr("id"),i.addClass(t.focused).attr("id",j),this.list.find("ul").removeAttr(H).attr(H,j))},_popup:function(){var t=this,n=p.styles,i="li"+W+n.item,o=W+n.toolbar.appendButton,r=this.options.messages.actions,s=this.options.navigatable;this.list=e(Z({styles:n,actions:[{data:"add",text:r.addChild},{data:"insert-before",text:r.insertBefore},{data:"insert-after",text:r.insertAfter}]})),this.element.append(this.list),this.popup=new g.ui.Popup(this.list,M({anchor:this.element.find(o),open:function(){t._adjustListWidth()},animation:this.options.animation},V[this.options.direction])),this.element.on(F+B,o,function(i){var o=e(this),r=o.attr(g.attr("action"));i.preventDefault(),r?t.trigger("command",{type:r}):(t.popup.open(),s&&t.list.find("li:first").addClass(n.focused).attr("id",j).end().find("ul").attr({TABINDEX:0,"aria-activedescendant":j}).focus())}),this.list.find(i).hover(function(){e(this).addClass(n.hovered)},function(){e(this).removeClass(n.hovered)}).end().on(F+B,i,function(){t.trigger("command",{type:e(this).attr(g.attr("action"))}),t.popup.close()}),s&&(this.popup.bind("close",function(){t.list.find(i).removeClass(n.focused).end().find("ul").attr(L,0),t.element.parents("["+g.attr("role")+'="gantt"]').find(W+n.gridContent+" > table:first").focus()}),this.list.find("ul").on("keydown"+B,function(e){var i=e.keyCode;switch(i){case I.UP:e.preventDefault(),t._current("prev");break;case I.DOWN:e.preventDefault(),t._current("next");break;case I.ENTER:t.list.find(W+n.focused).click();break;case I.ESC:e.preventDefault(),t.popup.close()}}))},_adjustListWidth:function(){var e,t,n=this.list,i=p.styles,o=n[0].style.width,r=this.element.find(W+i.toolbar.appendButton),s=n.outerWidth();(n.data(O)||!o)&&(e=window.getComputedStyle?window.getComputedStyle(r[0],null):0,t=e?parseFloat(e.width):r.outerWidth(),e&&(v.mozilla||v.msie)&&(t+=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight)+parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth)),o="border-box"!==n.css("box-sizing")?t-(n.outerWidth()-n.width()):t,s>o&&(o=s),n.css({fontFamily:r.css("font-family"),width:o}).data(O,o))},destroy:function(){clearTimeout(this._focusTimeout),this.popup.destroy(),this.element.off(B),this.list.off(B),this.unbind()}}),ie=function(e,t){return function(n){var i,o;if(n=S(n)?{data:n}:n,i=n||{},o=i.data,i.data=o,!(i instanceof e)&&i instanceof b)throw Error("Incorrect DataSource type. Only "+t+" instances are supported");return i instanceof e?i:new e(i)}},oe=g.data.Model.define({id:"id",fields:{id:{type:"number"},predecessorId:{type:"number"},successorId:{type:"number"},type:{type:"number"}}}),re=b.extend({init:function(e){b.fn.init.call(this,M(!0,{},{schema:{modelBase:oe,model:oe}},e))},successors:function(e){return this._dependencies("predecessorId",e)},predecessors:function(e){return this._dependencies("successorId",e)},dependencies:function(e){var t=this.predecessors(e),n=this.successors(e);return t.push.apply(t,n),t},_dependencies:function(e,t){var n=this.view(),i={field:e,operator:"eq",value:t};return n=new C(n).filter(i).toArray()}});re.create=ie(re,"GanttDependencyDataSource"),l=g.data.Model.define({duration:function(){var e=this.end,t=this.start;return e-t},isMilestone:function(){return 0===this.duration()},_offset:function(e){var t,n,i=["start","end"];for(n=0;i.length>n;n++)t=new Date(this.get(i[n]).getTime()+e),this.set(i[n],t)},id:"id",fields:{id:{type:"number"},parentId:{type:"number",defaultValue:null,validation:{required:!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:o,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}}}),c=b.extend({init:function(e){b.fn.init.call(this,M(!0,{},{schema:{modelBase:l,model:l}},e))},remove:function(e){var t=e.get("parentId"),n=this.taskAllChildren(e);return this._removeItems(n),e=b.fn.remove.call(this,e),this._childRemoved(t,e.get("orderId")),e},add:function(e){return e?(e=this._toGanttTask(e),this.insert(this.taskSiblings(e).length,e)):t},insert:function(e,n){return n?(n=this._toGanttTask(n),n.set("orderId",e),n=b.fn.insert.call(this,e,n),this._reorderSiblings(n,this.taskSiblings(n).length-1),this._resolveSummaryFields(this.taskParent(n)),n):t},taskChildren:function(e){var n,i=this.view(),o={field:"parentId",operator:"eq",value:null},r=this._sort||{field:"orderId",dir:"asc"};if(e){if(n=e.get("id"),n===t||null===n||""===n)return[];o.value=n}return i=new C(i).filter(o).sort(r).toArray()},taskAllChildren:function(e){var t=[],n=this,i=function(e){var o=n.taskChildren(e);t.push.apply(t,o),P(o,i)};return e?i(e):t=this.view(),t},taskSiblings:function(e){if(!e)return null;var t=this.taskParent(e);return this.taskChildren(t)},taskParent:function(e){return e&&null!==e.get("parentId")?this.get(e.parentId):null},taskLevel:function(e){for(var t=0,n=this.taskParent(e);null!==n;)t+=1,n=this.taskParent(n);return t},taskTree:function(e){var t,n,i,o,r=[],s=this.taskChildren(e);for(n=0,i=s.length;i>n;n++)t=s[n],r.push(t),t.get("expanded")&&(o=this.taskTree(t),r.push.apply(r,o));return r},update:function(e,n){var i,o,r=this,s=function(e,t){var n,i,o=r.taskAllChildren(e);for(n=0,i=o.length;i>n;n++)o[n]._offset(t)},a=function(e){var t=e.field,n=e.sender;switch(t){case"start":r._resolveSummaryStart(r.taskParent(n)),s(n,n.get(t).getTime()-i.getTime());break;case"end":r._resolveSummaryEnd(r.taskParent(n));break;case"percentComplete":r._resolveSummaryPercentComplete(r.taskParent(n));break;case"orderId":r._reorderSiblings(n,i)}};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",a);for(o in n)i=e.get(o),e.set(o,n[o]);e.unbind("change",a)},_resolveSummaryFields:function(e){e&&(this._updateSummary(e),this.taskChildren(e).length&&(this._resolveSummaryStart(e),this._resolveSummaryEnd(e),this._resolveSummaryPercentComplete(e)))},_resolveSummaryStart:function(e){var t=this,n=function(e){var n,i,o,r=t.taskChildren(e),s=r[0].start.getTime();for(i=1,o=r.length;o>i;i++)n=r[i].start.getTime(),s>n&&(s=n);return new Date(s)};this._updateSummaryRecursive(e,"start",n)},_resolveSummaryEnd:function(e){var t=this,n=function(e){var n,i,o,r=t.taskChildren(e),s=r[0].end.getTime();for(i=1,o=r.length;o>i;i++)n=r[i].end.getTime(),n>s&&(s=n);return new Date(s)};this._updateSummaryRecursive(e,"end",n)},_resolveSummaryPercentComplete:function(e){var t=this,n=function(e){var n=t.taskChildren(e),i=new C(n).aggregate([{field:"percentComplete",aggregate:"average"}]);return i.percentComplete.average};this._updateSummaryRecursive(e,"percentComplete",n)},_updateSummaryRecursive:function(e,t,n){var i,o;e&&(i=n(e),e.set(t,i),o=this.taskParent(e),o&&this._updateSummaryRecursive(o,t,n))},_childRemoved:function(e,t){var n,i,o=null===e?null:this.get(e),r=this.taskChildren(o);for(n=t,i=r.length;i>n;n++)r[n].set("orderId",n);this._resolveSummaryFields(o)},_reorderSiblings:function(e,t){var n,i=e.get("orderId"),o=i>t,r=o?t:i,s=o?i:t,a=o?r:r+1,l=this.taskSiblings(e);for(s=Math.min(s,l.length-1),n=r;s>=n;n++)l[n]!==e&&(l[n].set("orderId",a),a+=1)},_updateSummary:function(e){if(null!==e){var t=this.taskChildren(e).length;e.set("summary",t>0)}},_toGanttTask:function(e){if(!(e instanceof l)){var t=e;e=this._createNewModel(),e.accept(t)}return e}}),c.create=ie(c,"GanttDataSource"),M(!0,g.data,{GanttDataSource:c,GanttTask:l,GanttDependencyDataSource:re,GanttDependency:oe}),u={desktop:{dateRange:J,resources:ee}},h=g.Observable.extend({init:function(e,t){g.Observable.fn.init.call(this),this.element=e,this.options=M(!0,{},this.options,t),this.createButton=this.options.createButton},fields:function(t,n){var i,o=this,r=this.options,s=r.messages.editor,a=r.resources,l=function(e){e.preventDefault(),a.editor(o.container.find(W+p.styles.popup.resourcesField),n)};return r.editable.template?i=e.map(n.fields,function(e,t){return{field:t}}):(i=[{field:"title",title:s.title},{field:"start",title:s.start,editor:t.dateRange},{field:"end",title:s.end,editor:t.dateRange},{field:"percentComplete",title:s.percentComplete,format:z}],n.get(a.field)&&i.push({field:a.field,title:s.resources,messages:s,editor:t.resources,click:l,styles:p.styles.popup})),i},_buildEditTemplate:function(e,t,n){var i,o,r,s,a=this.options.resources,l=this.options.editable.template,c=M({},g.Template,this.options.templateSettings),u=c.paramName,h=p.styles.popup,d="";if(l)typeof l===N&&(l=window.unescape(l)),d+=g.template(l,c)(e);else for(i=0,o=t.length;o>i;i++)r=t[i],d+='
    ",r.field===a.field&&(d+=''),!e.editable||e.editable(r.field)?(n.push(r),d+="
    '):(s="#:",r.field?(r=g.expr(r.field,u),s+=r+"==null?'':"+r):s+="''",s+="#",s=g.template(s,c),d+='
    '+s(e)+"
    ");return d}}),d=h.extend({destroy:function(){this.close(),this.unbind()},editTask:function(e){this.editable=this._createPopupEditor(e)},close:function(){var e=this,t=function(){e.editable&&(e.editable.destroy(),e.editable=null,e.container=null),e.popup&&(e.popup.destroy(),e.popup=null)};this.editable&&this.container.is(":visible")?this.container.data("kendoWindow").bind("deactivate",t).close():t()},showDialog:function(t){var n,i,o,r,s=t.buttons,a=p.styles.popup,l=g.format('

    {3}

    ',a.form,a.formContainer,a.message,t.text,a.buttonsContainer);for(n=0,i=s.length;i>n;n++)l+=this.createButton(s[n]);l+="
    ",o=this.element,this.popup&&this.popup.destroy(),r=this.popup=e(l).appendTo(o).eq(0).on("click",W+a.button,function(t){t.preventDefault(),r.close();var n=e(t.currentTarget).index();s[n].click()}).kendoWindow({modal:!0,resizable:!1,draggable:!1,title:t.title,visible:!1,close:function(){this.destroy(),o.focus()}}).getKendoWindow(),r.center().open()},_createPopupEditor:function(t){var n,i,o=this,r={},s=this.options.messages,a=p.styles,l=a.popup,c=g.format('
    ',g.attr("uid"),t.uid,l.form,l.editForm,l.formContainer),h=this.fields(u.desktop,t),d=[];return c+=this._buildEditTemplate(t,h,d),c+='
    ',c+=this.createButton({name:"update",text:s.save,className:p.styles.primary}),c+=this.createButton({name:"cancel",text:s.cancel}),c+=this.createButton({name:"delete",text:s.destroy}),c+="
    ",n=this.container=e(c).appendTo(this.element).eq(0).kendoWindow(M({modal:!0,resizable:!1,draggable:!0,title:s.editor.editorTitle,visible:!1,close:function(e){e.userTriggered&&o.trigger("cancel",{container:n,model:t})&&e.preventDefault()}},r)),i=n.kendoEditable({fields:d,model:t,clearContainer:!1,validateOnBlur:!0,target:o.options.target}).data("kendoEditable"),g.cycleForm(n),this.trigger("edit",{container:n,model:t})?o.trigger("cancel",{container:n,model:t}):(n.data("kendoWindow").center().open(),n.on(F+B,W+a.buttonCancel,function(e){e.preventDefault(),e.stopPropagation(),o.trigger("cancel",{container:n,model:t})}),n.on(F+B,W+a.buttonSave,function(e){var i,r,s,a,l;for(e.preventDefault(),e.stopPropagation(),i=o.fields(u.desktop,t),r={},a=0,l=i.length;l>a;a++)s=i[a].field,r[s]=t.get(s);o.trigger("save",{container:n,model:t,updateInfo:r})}),n.on(F+B,W+a.buttonDelete,function(e){e.preventDefault(),e.stopPropagation(),o.trigger("remove",{container:n,model:t})})),i}}),f=y.extend({init:function(e,t){y.fn.init.call(this,e,t),this.wrapper=this.element,this.model=this.options.model,this.resourcesField=this.options.resourcesField,this.createButton=this.options.createButton,this._initContainer(),this._attachHandlers()},events:["save"],open:function(){this.window.center().open(),this.grid.resize(!0)},close:function(){this.window.bind("deactivate",D(this.destroy,this)).close()},destroy:function(){this._dettachHandlers(),this.grid.destroy(),this.grid=null,this.window.destroy(),this.window=null,y.fn.destroy.call(this),g.destroy(this.wrapper),this.element=this.wrapper=null},_attachHandlers:function(){var t=p.styles,n=this.grid,i=this._cancelProxy=D(this._cancel,this);this.container.on(F+B,W+t.buttonCancel,this._cancelProxy),this._saveProxy=D(this._save,this),this.container.on(F+B,W+t.buttonSave,this._saveProxy),this.window.bind("close",function(e){e.userTriggered&&i(e)}),n.wrapper.on(F+B,"input[type='checkbox']",function(){var t=e(this),i=e(t).closest("tr"),o=n.dataSource.getByUid(i.attr(g.attr("uid"))),r=e(t).is(":checked")?1:"";o.set("value",r)})},_dettachHandlers:function(){this._cancelProxy=null,this._saveProxy=null,this.container.off(B),this.grid.wrapper.off()},_cancel:function(e){e.preventDefault(),this.close()},_save:function(e){e.preventDefault(),this._updateModel(),this.wrapper.is(W+p.styles.popup.resourcesField)||this.trigger("save",{container:this.wrapper,model:this.model}),this.close()},_initContainer:function(){var t=p.styles.popup,n=g.format('
    "',t.form,t.editForm,t.formContainer,t.resourcesFormContainer);n=e(n),this.container=n.find(W+t.resourcesFormContainer),this.window=n.kendoWindow({modal:!0,resizable:!1,draggable:!0,visible:!1,title:this.options.messages.resourcesEditorTitle}).data("kendoWindow"),this._resourceGrid(),this._createButtons()},_resourceGrid:function(){var t=this,n=this.options.messages,i=e('
    ').appendTo(this.container);this.grid=new g.ui.Grid(i,{columns:[{field:"name",title:n.resourcesHeader,template:"