EOS/Scripts/kendo/2015.3.1111/kendo.gantt.timeline.min.js
Nidhi Bhargava f0c1ab20e1 code push
2025-09-04 16:25:07 +05:30

10 lines
36 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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.dom.min","./kendo.touch.min","./kendo.draganddrop.min"],e)}(function(){return function(e){function t(e){return delete e.name,delete e.prefix,delete e.views,e}function n(e){var t=[],n=e.workWeekStart;for(t.push(n);e.workWeekEnd!=n;)n>6?n-=7:n++,t.push(n);return t}function i(){var t=kendo._activeElement();"body"!==t.nodeName.toLowerCase()&&e(t).blur()}var o,r,s=kendo.ui.Widget,a=kendo.dom.element,l=kendo.dom.text,c=kendo.dom.html,h=e.isPlainObject,u=e.extend,d=e.proxy,f=kendo.support.browser,p=!1,g=kendo.keys,m=kendo.data.Query,v="string",_=".kendoGanttTimeline",w="click",y="dblclick",b="mousemove",x="mouseenter",k="mouseleave",C="keydown",S=".",T=kendo.template("#=kendo.toString(start, 't')#"),D=kendo.template("#=kendo.toString(start, 'ddd M/dd')#"),A=kendo.template("#=kendo.toString(start, 'ddd M/dd')# - #=kendo.toString(kendo.date.addDays(end, -1), 'ddd M/dd')#"),M=kendo.template("#=kendo.toString(start, 'MMM')#"),E=kendo.template("#=kendo.toString(start, 'yyyy')#"),P=kendo.template('<div class="#=styles.marquee#"><div class="#=styles.marqueeColor#"></div></div>'),I=kendo.template('<div style="z-index: 100002;" class="#=styles.tooltipWrapper#"><div class="#=styles.tooltipContent#"><div>#=messages.start#: #=kendo.toString(start, format)#</div><div>#=messages.end#: #=kendo.toString(end, format)#</div></div></div>'),R=kendo.template('<div style="z-index: 100002;" class="#=styles.tooltipWrapper#" ><div class="#=styles.tooltipContent#">#=text#%</div><div class="#=styles.tooltipCallout#" style="left:13px;"></div></div>'),B=kendo.template('<div class="#=styles.taskDetails#"><strong>#=task.title#</strong><div class="#=styles.taskDetailsPercent#">#=kendo.toString(task.percentComplete, "p0")#</div><ul class="#=styles.reset#"><li>#=messages.start#: #=kendo.toString(task.start, "h:mm tt ddd, MMM d")#</li><li>#=messages.end#: #=kendo.toString(task.end, "h:mm tt ddd, MMM d")#</li></ul></div>'),z="<table style='visibility: hidden;'><tbody><tr style='height:{0}'><td>&nbsp;</td></tr></tbody></table>",L={day:{type:"kendo.ui.GanttDayView"},week:{type:"kendo.ui.GanttWeekView"},month:{type:"kendo.ui.GanttMonthView"},year:{type:"kendo.ui.GanttYearView"}},F={alt:"k-alt",reset:"k-reset",nonWorking:"k-nonwork-hour",header:"k-header",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",tasksWrapper:"k-gantt-tables",rowsTable:"k-gantt-rows",columnsTable:"k-gantt-columns",tasksTable:"k-gantt-tasks",dependenciesWrapper:"k-gantt-dependencies",resource:"k-resource",resourceAlt:"k-resource k-alt",task:"k-task",taskSingle:"k-task-single",taskMilestone:"k-task-milestone",taskSummary:"k-task-summary",taskWrap:"k-task-wrap",taskMilestoneWrap:"k-milestone-wrap",resourcesWrap:"k-resources-wrap",taskDot:"k-task-dot",taskDotStart:"k-task-start",taskDotEnd:"k-task-end",taskDragHandle:"k-task-draghandle",taskContent:"k-task-content",taskTemplate:"k-task-template",taskActions:"k-task-actions",taskDelete:"k-task-delete",taskComplete:"k-task-complete",taskDetails:"k-task-details",taskDetailsPercent:"k-task-pct",link:"k-link",icon:"k-icon",iconDelete:"k-si-close",taskResizeHandle:"k-resize-handle",taskResizeHandleWest:"k-resize-w",taskResizeHandleEast:"k-resize-e",taskSummaryProgress:"k-task-summary-progress",taskSummaryComplete:"k-task-summary-complete",line:"k-line",lineHorizontal:"k-line-h",lineVertical:"k-line-v",arrowWest:"k-arrow-w",arrowEast:"k-arrow-e",dragHint:"k-drag-hint",dependencyHint:"k-dependency-hint",tooltipWrapper:"k-widget k-tooltip k-popup k-group k-reset",tooltipContent:"k-tooltip-content",tooltipCallout:"k-callout k-callout-s",callout:"k-callout",marquee:"k-marquee k-gantt-marquee",marqueeColor:"k-marquee-color"},O=kendo.ui.GanttView=s.extend({init:function(e,t){s.fn.init.call(this,e,t),this.title=this.options.title||this.options.name,this.header=this.element.find(S+O.styles.gridHeader),this.content=this.element.find(S+O.styles.gridContent),this.contentWidth=this.content.width(),this._workDays=n(this.options),this._headerTree=t.headerTree,this._taskTree=t.taskTree,this._taskTemplate=t.taskTemplate?kendo.template(t.taskTemplate,u({},kendo.Template,t.templateSettings)):null,this._dependencyTree=t.dependencyTree,this._taskCoordinates={},this._currentTime()},destroy:function(){s.fn.destroy.call(this),clearTimeout(this._tooltipTimeout),this.headerRow=null,this.header=null,this.content=null,this._dragHint=null,this._resizeHint=null,this._resizeTooltip=null,this._taskTooltip=null,this._percentCompleteResizeTooltip=null,this._headerTree=null,this._taskTree=null,this._dependencyTree=null},options:{showWorkHours:!1,showWorkDays:!1,workDayStart:new Date(1980,1,1,8,0,0),workDayEnd:new Date(1980,1,1,17,0,0),workWeekStart:1,workWeekEnd:5,hourSpan:1,slotSize:100,currentTimeMarker:{updateInterval:1e4}},renderLayout:function(){this._slots=this._createSlots(),this._tableWidth=this._calculateTableWidth(),this.createLayout(this._layout()),this._slotDimensions(),this._adjustHeight(),this.content.find(S+O.styles.dependenciesWrapper).width(this._tableWidth)},_adjustHeight:function(){this.content.height(this.element.height()-this.header.outerHeight())},createLayout:function(e){var t=this._headers(e),n=this._colgroup(),i=this._headerTree,o=a("thead",null,t),r=a("table",{style:{width:this._tableWidth+"px"}},[n,o]);i.render([r]),this.headerRow=this.header.find("table:first tr").last()},_slotDimensions:function(){var e,t,n,i,o=this.headerRow[0].children,r=this._timeSlots();for(n=0,i=o.length;i>n;n++)t=o[n],e=r[n],e.offsetLeft=t.offsetLeft,e.offsetWidth=t.offsetWidth},render:function(e){var t,n,i=e.length,o=O.styles,r=this._rowsTable(i),s=this._columnsTable(i),a=this._tasksTable(e),l=this.options.currentTimeMarker,c=this.options.calculatedSize;this._taskTree.render([r,s,a]),t=this.content.find(S+o.rowsTable),c&&(n=c.row*e.length,this.content.find(S+o.tasksTable).height(n),t.height(n)),this._contentHeight=t.height(),this._rowHeight=c?c.row:this._contentHeight/t.find("tr").length,this.content.find(S+o.columnsTable).height(this._contentHeight),l!==!1&&void 0!==l.updateInterval&&this._renderCurrentTime()},_rowsTable:function(e){var t,n,i=[],o=O.styles,r=[null,{className:o.alt}];for(n=0;e>n;n++)t=a("tr",r[n%2],[a("td",null,[l(" ")])]),i.push(t);return this._createTable(1,i,{className:o.rowsTable})},_columnsTable:function(){var e,t,n,i,o,r=[],s=O.styles,c=this._timeSlots(),h=c.length,u=0;for(o=0;h>o;o++)t=c[o],i={},n=t.span,u+=n,1!==n&&(i.colspan=n),t.isNonWorking&&(i.className=s.nonWorking),r.push(a("td",i,[l(" ")]));return e=a("tr",null,r),this._createTable(u,[e],{className:s.columnsTable})},_tasksTable:function(e){var t,n,i,o,r,s,l,c,h=[],u=O.styles,d=this._taskCoordinates={},f=this._calculateMilestoneWidth(),g=Math.round(f.width),m=this.options.resourcesField,v=[u.resource,u.resourceAlt],_=this.options.calculatedSize,w=this._calculateResourcesMargin(),y=this._calculateTaskBorderWidth(),b=function(e){var t=i.left,n=t+i.width;o.isMilestone()&&(t-=g/2,n=t+g),d[o.id]={start:t,end:n,rowIndex:e}};for(l=0,c=e.length;c>l;l++)o=e[l],i=this._taskPosition(o),i.borderWidth=y,t=a("tr",null),n=a("td",null,[this._renderTask(e[l],i)]),o[m]&&o[m].length&&(r=p?this._tableWidth-i.left:Math.max(i.width||f.clientWidth,0)+i.left,s={width:this._tableWidth-(r+w)+"px"},s[p?"right":"left"]=r+"px",_&&(s.height=_.cell+"px"),n.children.push(a("div",{className:u.resourcesWrap,style:s},this._renderResources(o[m],v[l%2])))),t.children.push(n),h.push(t),b(l);return this._createTable(1,h,{className:O.styles.tasksTable})},_createTable:function(e,t,n){var i,o,r,s=[];for(r=0;e>r;r++)s.push(a("col"));return i=a("colgroup",null,s),o=a("tbody",null,t),n.style||(n.style={}),n.style.width=this._tableWidth+"px",a("table",n,[i,o])},_calculateTableWidth:function(){var e,t,n,i,o=this._timeSlots(),r=0,s=0;for(n=0,i=o.length;i>n;n++)e=o[n].span,s+=e,e>r&&(r=e);return t=Math.round(s*this.options.slotSize/r)},_calculateMilestoneWidth:function(){var t,n,i=O.styles.task+" "+O.styles.taskMilestone,o=e("<div class='"+i+"' style='visibility: hidden; position: absolute'>");return this.content.append(o),n=o[0].getBoundingClientRect(),t={width:n.right-n.left,clientWidth:o[0].clientWidth},o.remove(),t},_calculateResourcesMargin:function(){var t,n=e("<div class='"+O.styles.resourcesWrap+"' style='visibility: hidden; position: absolute'>");return this.content.append(n),t=parseInt(n.css(p?"margin-right":"margin-left"),10),n.remove(),t},_calculateTaskBorderWidth:function(){var t,n,i=O.styles.task+" "+O.styles.taskSingle,o=e("<div class='"+i+"' style='visibility: hidden; position: absolute'>");return this.content.append(o),n=kendo.getComputedStyles(o[0],["border-left-width"]),t=parseFloat(n["border-left-width"],10),o.remove(),t},_renderTask:function(e,t){var n,i,o,r=this.options.editable,s=t.left,l=O.styles,c=l.taskWrap,h=this.options.calculatedSize,u={},d={className:c,style:{left:s+"px"}};return h&&(d.style.height=h.cell+"px"),e.summary?i=this._renderSummary(e,t):e.isMilestone()?(i=this._renderMilestone(e,t),d.className+=" "+l.taskMilestoneWrap):i=this._renderSingleTask(e,t),n=a("div",d,[i]),r&&(n.children.push(a("div",{className:l.taskDot+" "+l.taskDotStart})),n.children.push(a("div",{className:l.taskDot+" "+l.taskDotEnd}))),e.summary||e.isMilestone()||!r||null!==this._taskTemplate||(o=Math.round(t.width*e.percentComplete),u[p?"right":"left"]=o+"px",n.children.push(a("div",{className:l.taskDragHandle,style:u}))),n},_renderSingleTask:function(e,t){var n,i,o,r=O.styles,s=Math.round(t.width*e.percentComplete),h=[];return null!==this._taskTemplate?n=c(this._taskTemplate(e)):(n=l(e.title),h.push(a("div",{className:r.taskComplete,style:{width:s+"px"}}))),i=a("div",{className:r.taskContent},[a("div",{className:r.taskTemplate},[n])]),h.push(i),this.options.editable&&(i.children.push(a("span",{className:r.taskActions},[a("a",{className:r.link+" "+r.taskDelete,href:"#"},[a("span",{className:r.icon+" "+r.iconDelete})])])),i.children.push(a("span",{className:r.taskResizeHandle+" "+r.taskResizeHandleWest})),i.children.push(a("span",{className:r.taskResizeHandle+" "+r.taskResizeHandleEast}))),o=a("div",{className:r.task+" "+r.taskSingle,"data-uid":e.uid,style:{width:Math.max(t.width-2*t.borderWidth,0)+"px"}},h)},_renderMilestone:function(e){var t=O.styles,n=a("div",{className:t.task+" "+t.taskMilestone,"data-uid":e.uid});return n},_renderSummary:function(e,t){var n=O.styles,i=Math.round(t.width*e.percentComplete),o=a("div",{className:n.task+" "+n.taskSummary,"data-uid":e.uid,style:{width:t.width+"px"}},[a("div",{className:n.taskSummaryProgress,style:{width:i+"px"}},[a("div",{className:n.taskSummaryComplete,style:{width:t.width+"px"}})])]);return o},_renderResources:function(e,t){var n,i,o,r=[];for(i=0,o=e.length;o>i;i++)n=e[i],r.push(a("span",{className:t,style:{color:n.get("color")}},[l(n.get("name"))]));return p&&r.reverse(),r},_taskPosition:function(e){var t=Math.round,n=t(this._offset(p?e.end:e.start)),i=t(this._offset(p?e.start:e.end));return{left:n,width:i-n}},_offset:function(e){var t,n,i,o,r=this._timeSlots(),s=0;return r.length?(o=this._slotIndex("start",e),t=r[o],e>t.end?s=t.offsetWidth:e>=t.start&&(n=e-t.start,i=t.end-t.start,s=n/i*t.offsetWidth),p&&(s=t.offsetWidth+1-s),t.offsetLeft+s):0},_slotIndex:function(e,t,n){var i,o=this._timeSlots(),r=0,s=o.length-1;n&&(o=[].slice.call(o).reverse());do i=Math.ceil((s+r)/2),t>o[i][e]?r=i:(i===s&&i--,s=i);while(r!==s);return n&&(r=o.length-1-r),r},_timeByPosition:function(t,n,i){var o,r,s,a=this._slotByPosition(t);return n?i?a.end:a.start:(o=t-e(S+O.styles.tasksTable).offset().left,r=a.end-a.start,s=o-a.offsetLeft,p&&(s=a.offsetWidth-s),new Date(a.start.getTime()+r*(s/a.offsetWidth)))},_slotByPosition:function(t){var n=t-e(S+O.styles.tasksTable).offset().left,i=this._slotIndex("offsetLeft",n,p);return this._timeSlots()[i]},_renderDependencies:function(e){var t,n,i=[],o=this._dependencyTree;for(t=0,n=e.length;n>t;t++)i.push.apply(i,this._renderDependency(e[t]));o.render(i)},_renderDependency:function(e){var t,n,i,o,r=this._taskCoordinates[e.predecessorId],s=this._taskCoordinates[e.successorId];if(!r||!s)return[];for(n="_render"+["FF","FS","SF","SS"][p?3-e.type:e.type],t=this[n](r,s),i=0,o=t.length;o>i;i++)t[i].attr["data-uid"]=e.uid;return t},_renderFF:function(e,t){var n=this._dependencyFF(e,t,!1);return n[n.length-1].children[0]=this._arrow(!0),n},_renderSS:function(e,t){var n=this._dependencyFF(t,e,!0);return n[0].children[0]=this._arrow(!1),n.reverse()},_renderFS:function(e,t){var n=this._dependencyFS(e,t,!1);return n[n.length-1].children[0]=this._arrow(!1),n},_renderSF:function(e,t){var n=this._dependencyFS(t,e,!0);return n[0].children[0]=this._arrow(!0),n.reverse()},_dependencyFF:function(e,t,n){var i,o=this,r=[],s=0,a=0,l=0,c=0,h=n?"start":"end",u=2,d=1,f=this._rowHeight,p=10,g=e.rowIndex*f+Math.floor(f/2)-1,m=t.rowIndex*f+Math.floor(f/2)-1,v=O.styles,_=function(){r.push(o._line(v.line+" "+v.lineHorizontal,{left:s+"px",top:a+"px",width:l+"px"}))},w=function(){r.push(o._line(v.line+" "+v.lineVertical,{left:s+"px",top:a+"px",height:c+"px"}))};return s=e[h],a=g,l=p,i=t[h]-e[h],i>0!==n&&(l=Math.abs(i)+p),n?(s-=l,l-=d,_()):(_(),s+=l-u),a>m?(c=a-m,c+=u,a=m,w()):(c=m-a,c+=u,w(),a+=c-u),l=Math.abs(s-t[h]),n||(l-=d,s-=l),_(),r},_dependencyFS:function(e,t,n){var i=this,o=[],r=0,s=0,a=0,l=0,c=this._rowHeight,h=Math.floor(c/2),u=10,d=2*u,f=t.start-e.end,p=2,g=1,m=e.rowIndex*c+Math.floor(c/2)-1,v=t.rowIndex*c+Math.floor(c/2)-1,_=O.styles,w=function(){o.push(i._line(_.line+" "+_.lineHorizontal,{left:r+"px",top:s+"px",width:a+"px"}))},y=function(){o.push(i._line(_.line+" "+_.lineVertical,{left:r+"px",top:s+"px",height:l+"px"}))};return r=e.end,s=m,a=u,n&&(r+=g,f>d&&(a=f-(u-p)),a-=g),w(),r+=a-p,d>=f&&(l=n?Math.abs(v-m)-h:h,m>v?(s-=l,l+=p,y()):(y(),s+=l),a=e.end-t.start+d,u>a&&(a=u),r-=a-p,w()),m>v?(l=s-v,s=v,l+=p,y()):(l=v-s,y(),s+=l),a=t.start-r,n||(a-=g),w(),o},_line:function(e,t){return a("div",{className:e,style:t})},_arrow:function(e){return a("span",{className:e?O.styles.arrowWest:O.styles.arrowEast})},_colgroup:function(){var e,t,n,i=this._timeSlots(),o=i.length,r=[];for(e=0;o>e;e++)for(t=0,n=i[e].span;n>t;t++)r.push(a("col"));return a("colgroup",null,r)},_createDragHint:function(e){this._dragHint=e.clone().addClass(O.styles.dragHint).css("cursor","move"),e.parent().append(this._dragHint)},_updateDragHint:function(e){var t=this._offset(e);this._dragHint.css({left:t})},_removeDragHint:function(){this._dragHint.remove(),this._dragHint=null},_createResizeHint:function(t){var n,i,o=O.styles,r=this._taskCoordinates[t.id].rowIndex*this._rowHeight,s=this.options,a=s.messages;this._resizeHint=e(P({styles:o})).css({top:0,height:this._contentHeight}),this.content.append(this._resizeHint),this._resizeTooltip=e(I({styles:o,start:t.start,end:t.end,messages:a.views,format:s.resizeTooltipFormat})).css({top:0,left:0}),this.content.append(this._resizeTooltip),this._resizeTooltipWidth=this._resizeTooltip.outerWidth(),n=this._resizeTooltip.outerHeight(),i=r-n,0>i&&(i=r+this._rowHeight),this._resizeTooltipTop=i},_updateResizeHint:function(t,n,i){var o=this._offset(p?n:t),r=this._offset(p?t:n),s=r-o,a=i!==p?o:r,l=this._tableWidth-kendo.support.scrollbar(),c=this._resizeTooltipWidth,h=this.options,u=h.messages,d=e(S+O.styles.tasksTable).offset().left-e(S+O.styles.tasksWrapper).offset().left;p&&(o+=d),this._resizeHint.css({left:o,width:s}),this._resizeTooltip&&this._resizeTooltip.remove(),a-=Math.round(c/2),0>a?a=0:a+c>l&&(a=l-c),p&&(a+=d),this._resizeTooltip=e(I({styles:O.styles,start:t,end:n,messages:u.views,format:h.resizeTooltipFormat})).css({top:this._resizeTooltipTop,left:a,"min-width":c}).appendTo(this.content)},_removeResizeHint:function(){this._resizeHint.remove(),this._resizeHint=null,this._resizeTooltip.remove(),this._resizeTooltip=null},_updatePercentCompleteTooltip:function(t,n,i){var o,r,s,a;this._removePercentCompleteTooltip(),o=this._percentCompleteResizeTooltip=e(R({styles:O.styles,text:i})).appendTo(this.element),r=Math.round(o.outerWidth()/2),s=o.find(S+O.styles.callout),a=Math.round(s.outerWidth()/2),o.css({top:t-(o.outerHeight()+a),left:n-r}),s.css("left",r-a)},_removePercentCompleteTooltip:function(){this._percentCompleteResizeTooltip&&this._percentCompleteResizeTooltip.remove(),this._percentCompleteResizeTooltip=null},_updateDependencyDragHint:function(e,t,n){this._removeDependencyDragHint(),n?this._creteVmlDependencyDragHint(e,t):this._creteDependencyDragHint(e,t)},_creteDependencyDragHint:function(t,n){var i=O.styles,o=n.x-t.x,r=n.y-t.y,s=Math.sqrt(o*o+r*r),a=Math.atan(r/o);0>o&&(a+=Math.PI),e("<div class='"+i.line+" "+i.lineHorizontal+" "+i.dependencyHint+"'></div>").css({top:t.y,left:t.x,width:s,"transform-origin":"0% 0","-ms-transform-origin":"0% 0","-webkit-transform-origin":"0% 0",transform:"rotate("+a+"rad)","-ms-transform":"rotate("+a+"rad)","-webkit-transform":"rotate("+a+"rad)"}).appendTo(this.content)},_creteVmlDependencyDragHint:function(t,n){var i=e("<kvml:line class='"+O.styles.dependencyHint+"' style='position:absolute; top: 0px; left: 0px;' strokecolor='black' strokeweight='2px' from='"+t.x+"px,"+t.y+"px' to='"+n.x+"px,"+n.y+"px'></kvml:line>").appendTo(this.content);i[0].outerHTML=i[0].outerHTML},_removeDependencyDragHint:function(){this.content.find(S+O.styles.dependencyHint).remove()},_createTaskTooltip:function(t,n,i){var o,r=O.styles,s=this.options,a=this.content,l=a.offset(),c=a.width(),h=kendo.scrollLeft(a),u=e(n).parents("tr").first(),d=u.offset(),f=s.tooltip&&s.tooltip.template?kendo.template(s.tooltip.template):B,g=p?i-(l.left+h+kendo.support.scrollbar()):i-(l.left-h),m=d.top+u.outerHeight()-l.top+a.scrollTop(),v=this._taskTooltip=e('<div style="z-index: 100002;" class="'+r.tooltipWrapper+'" ><div class="'+r.taskContent+'"></div></div>');v.css({left:g,top:m}).appendTo(a).find(S+r.taskContent).append(f({styles:r,task:t,messages:s.messages.views})),v.outerHeight()<d.top-l.top&&v.css("top",d.top-l.top-v.outerHeight()+a.scrollTop()),o=v.outerWidth(),o+g-h>c&&(g-=o,h>g&&(g=h+c-(o+17)),v.css("left",g))},_removeTaskTooltip:function(){this._taskTooltip&&this._taskTooltip.remove(),this._taskTooltip=null},_scrollTo:function(e){var t=e.offset().left,n=e.width(),i=t+n,o=e.closest("tr"),r=o.offset().top,s=o.height(),a=r+s,l=this.content,c=l.offset(),h=c.top,u=l.height(),d=h+u,f=c.left,p=l.width(),g=f+p,m=kendo.support.scrollbar();h>r?l.scrollTop(l.scrollTop()+(r-h)):a>d&&l.scrollTop(l.scrollTop()+(a+m-d)),f>t&&n>p&&g>i||i>g&&p>n?l.scrollLeft(l.scrollLeft()+(i+m-g)):(i>g&&n>p&&t>f||f>t&&p>n)&&l.scrollLeft(l.scrollLeft()+(t-f))},_timeSlots:function(){return this._slots&&this._slots.length?this._slots[this._slots.length-1]:[]},_headers:function(e){var t,n,i,o,r,s,c,h,u=[],d=O.styles;for(r=0,s=e.length;s>r;r++){for(t=e[r],n=[],c=0,h=t.length;h>c;c++)i=t[c],o=l(i.text),n.push(a("th",{colspan:i.span,className:d.header+(i.isNonWorking?" "+d.nonWorking:"")},[o]));u.push(a("tr",null,n))}return u},_hours:function(e,t){var n,i,o,r=[],s=this.options,a=s.workDayStart.getHours(),l=s.workDayEnd.getHours(),c=s.hourSpan;for(e=new Date(e),t=new Date(t);t>e;)n=new Date(e),o=n.getHours(),i=o>=a&&l>o,n.setHours(n.getHours()+c),o==n.getHours()&&n.setHours(n.getHours()+2*c),(!s.showWorkHours||i)&&r.push({start:e,end:n,isNonWorking:!i,span:1}),e=n;return r},_days:function(e,t){var n,i,o=[];for(e=new Date(e),t=new Date(t);t>e;)n=kendo.date.nextDay(e),i=this._isWorkDay(e),(!this.options.showWorkDays||i)&&o.push({start:e,end:n,isNonWorking:!i,span:1}),e=n;return o},_weeks:function(e,t){var n,i,o,r=[],s=this.calendarInfo().firstDay;for(e=new Date(e),t=new Date(t);t>e;)n=kendo.date.dayOfWeek(kendo.date.addDays(e,1),s,1),n>t&&(n=t),i=this._days(e,n),o=i.length,o>0&&r.push({start:i[0].start,end:i[o-1].end,span:o}),e=n;return r},_months:function(e,t){var n,i,o,r=[];for(e=new Date(e),t=new Date(t);t>e;)n=new Date(e),n.setMonth(n.getMonth()+1),i=this._days(e,n),o=i.length,o>0&&r.push({start:i[0].start,end:i[o-1].end,span:o}),e=n;return r},_years:function(e,t){var n,i=[];for(e=new Date(e),t=new Date(t);t>e;)n=new Date(e),n.setFullYear(n.getFullYear()+1),i.push({start:e,end:n,span:12}),e=n;return i},_slotHeaders:function(e,t){var n,i,o,r=[];for(i=0,o=e.length;o>i;i++)n=e[i],r.push({text:t(n),isNonWorking:!!n.isNonWorking,span:n.span});return r},_isWorkDay:function(e){var t,n,i=e.getDay(),o=this._workDays;for(t=0,n=o.length;n>t;t++)if(o[t]===i)return!0;return!1},calendarInfo:function(){return kendo.getCulture().calendars.standard},_renderCurrentTime:function(){var t,n=this._getCurrentTime(),i=this._offset(n),o=e("<div class='k-current-time'></div>"),r=O.styles,s=e(S+r.tasksWrapper),a=e(S+r.tasksTable);this.content&&this._timeSlots().length&&(this.content.find(".k-current-time").remove(),t=this._timeSlots()[this._slotIndex("start",n)],t.start>n||n>t.end||(s.length&&a.length&&(i+=a.offset().left-s.offset().left),o.css({left:i+"px",top:"0px",width:"1px",height:this._contentHeight+"px"}).appendTo(this.content)))},_getCurrentTime:function(){return new Date},_currentTime:function(){var e=this.options.currentTimeMarker;e!==!1&&void 0!==e.updateInterval&&(this._renderCurrentTime(),this._currentTimeUpdateTimer=setInterval(d(this._renderCurrentTime,this),e.updateInterval))}});u(!0,O,{styles:F}),kendo.ui.GanttDayView=O.extend({name:"day",options:{timeHeaderTemplate:T,dayHeaderTemplate:D,resizeTooltipFormat:"h:mm tt ddd, MMM d"},range:function(e){this.start=kendo.date.getDate(e.start),this.end=kendo.date.getDate(e.end),(kendo.date.getMilliseconds(e.end)>0||this.end.getTime()===this.start.getTime())&&(this.end=kendo.date.addDays(this.end,1))},_createSlots:function(){var e,t,n,i,o=[],r=this._days(this.start,this.end),s=[];for(n=0,i=r.length;i>n;n++)e=r[n],t=this._hours(e.start,e.end),e.span=t.length,s.push.apply(s,t);return o.push(r),o.push(s),o},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.dayHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.timeHeaderTemplate))),e}}),kendo.ui.GanttWeekView=O.extend({name:"week",options:{dayHeaderTemplate:D,weekHeaderTemplate:A,resizeTooltipFormat:"h:mm tt ddd, MMM d"},range:function(e){var t=this.calendarInfo(),n=t.firstDay,i=e.end;n===i.getDay()&&i.setDate(i.getDate()+7),this.start=kendo.date.getDate(kendo.date.dayOfWeek(e.start,n,-1)),this.end=kendo.date.getDate(kendo.date.dayOfWeek(i,n,1))},_createSlots:function(){var e=[];return e.push(this._weeks(this.start,this.end)),e.push(this._days(this.start,this.end)),e},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.weekHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.dayHeaderTemplate))),e}}),kendo.ui.GanttMonthView=O.extend({name:"month",options:{weekHeaderTemplate:A,monthHeaderTemplate:M,resizeTooltipFormat:"dddd, MMM d, yyyy"},range:function(e){this.start=kendo.date.firstDayOfMonth(e.start),this.end=kendo.date.addDays(kendo.date.getDate(kendo.date.lastDayOfMonth(e.end)),1)},_createSlots:function(){var e=[];return e.push(this._months(this.start,this.end)),e.push(this._weeks(this.start,this.end)),e},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.monthHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.weekHeaderTemplate))),e}}),kendo.ui.GanttYearView=O.extend({name:"year",options:{yearHeaderTemplate:E,monthHeaderTemplate:M,resizeTooltipFormat:"dddd, MMM d, yyyy"},range:function(e){this.start=kendo.date.firstDayOfMonth(new Date(e.start.setMonth(0))),this.end=kendo.date.firstDayOfMonth(new Date(e.end.setMonth(12)))},_createSlots:function(){var t=[],n=this._months(this.start,this.end);return e(n).each(function(e,t){t.span=1}),t.push(this._years(this.start,this.end)),t.push(n),t},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.yearHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.monthHeaderTemplate))),e}}),o={wrapper:"k-timeline k-grid k-widget",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",gridContentWrap:"k-grid-content",tasksWrapper:"k-gantt-tables",dependenciesWrapper:"k-gantt-dependencies",task:"k-task",line:"k-line",taskResizeHandle:"k-resize-handle",taskResizeHandleWest:"k-resize-w",taskDragHandle:"k-task-draghandle",taskComplete:"k-task-complete",taskDelete:"k-task-delete",taskWrapActive:"k-task-wrap-active",taskWrap:"k-task-wrap",taskDot:"k-task-dot",taskDotStart:"k-task-start",taskDotEnd:"k-task-end",hovered:"k-state-hover",selected:"k-state-selected",origin:"k-origin"},r=kendo.ui.GanttTimeline=s.extend({init:function(e,t){s.fn.init.call(this,e,t),this.options.views&&this.options.views.length||(this.options.views=["day","week","month"]),p=kendo.support.isRtl(e),this._wrapper(),this._domTrees(),this._views(),this._selectable(),this._draggable(),this._resizable(),this._percentResizeDraggable(),this._createDependencyDraggable(),this._attachEvents(),this._tooltip()},options:{name:"GanttTimeline",messages:{views:{day:"Day",week:"Week",month:"Month",year:"Year",start:"Start",end:"End"}},snap:!0,selectable:!0,editable:!0},destroy:function(){s.fn.destroy.call(this),clearTimeout(this._tooltipTimeout),this._currentTimeUpdateTimer&&clearInterval(this._currentTimeUpdateTimer),this._unbindView(this._selectedView),this._moveDraggable&&this._moveDraggable.destroy(),this._resizeDraggable&&this._resizeDraggable.destroy(),this._percentDraggable&&this._percentDraggable.destroy(),this._dependencyDraggable&&this._dependencyDraggable.destroy(),this.touch&&this.touch.destroy(),this._headerTree=null,this._taskTree=null,this._dependencyTree=null,this.wrapper.off(_),kendo.destroy(this.wrapper)},_wrapper:function(){var t=r.styles,n=this,i=this.options,o=function(){var o,r,s=typeof i.rowHeight===v?i.rowHeight:i.rowHeight+"px",a=e(kendo.format(z,s)),l=n.wrapper.find(S+t.tasksWrapper);return l.append(a),o=a.find("tr").outerHeight(),r=a.find("td").height(),a.remove(),{row:o,cell:r}};this.wrapper=this.element.addClass(t.wrapper).append("<div class='"+t.gridHeader+"'><div class='"+t.gridHeaderWrap+"'></div></div>").append("<div class='"+t.gridContentWrap+"'><div class='"+t.tasksWrapper+"'></div><div class='"+t.dependenciesWrapper+"'></div></div>"),i.rowHeight&&(this._calculatedSize=o())},_domTrees:function(){var e=r.styles,t=kendo.dom.Tree,n=this.wrapper;this._headerTree=new t(n.find(S+e.gridHeaderWrap)[0]),this._taskTree=new t(n.find(S+e.tasksWrapper)[0]),this._dependencyTree=new t(n.find(S+e.dependenciesWrapper)[0])},_views:function(){var e,t,n,i,o,r,s,a=this.options.views;for(this.views={},r=0,s=a.length;s>r;r++)e=a[r],t=h(e),t&&e.selectable===!1||(n=t?"string"!=typeof e.type?e.title:e.type:e,i=L[n],i&&(t&&(e.type=i.type),i.title=this.options.messages.views[n]),e=u({title:n},i,t?e:{}),n&&(this.views[n]=e,(!o||e.selected)&&(o=n)));o&&(this._selectedViewName=o)},view:function(e){return e&&(this._selectView(e),this.trigger("navigate",{view:e,action:"changeView"})),this._selectedView},_selectView:function(e){e&&this.views[e]&&(this._selectedView&&this._unbindView(this._selectedView),this._selectedView=this._initializeView(e),this._selectedViewName=e)},_viewByIndex:function(e){var t,n=this.views;for(t in n){if(!e)return t;e--}},_initializeView:function(e){var n,i=this.views[e];if(i){if(n=i.type,"string"==typeof n&&(n=kendo.getter(i.type)(window)),!n)throw Error("There is no such view");i=new n(this.wrapper,t(u(!0,{headerTree:this._headerTree,taskTree:this._taskTree,dependencyTree:this._dependencyTree,calculatedSize:this._calculatedSize},i,this.options)))}return i},_unbindView:function(e){e&&e.destroy()},_range:function(e){var t,n,i={field:"start",dir:"asc"},o={field:"end",dir:"desc"};return e&&e.length?(t=new m(e).sort(i).toArray()[0].start||new Date,n=new m(e).sort(o).toArray()[0].end||new Date,{start:new Date(t),end:new Date(n)}):{start:new Date,end:new Date}},_render:function(e){var t=this.view(),n=this._range(e);this._tasks=e,t.range(n),t.renderLayout(),t.render(e)},_renderDependencies:function(e){this.view()._renderDependencies(e)},_taskByUid:function(e){var t,n,i=this._tasks,o=i.length;for(n=0;o>n;n++)if(t=i[n],t.uid===e)return t},_draggable:function(){var e,t,n,o,s=this,a=this.options.snap,l=r.styles,c=function(){s.view()._removeDragHint(),e&&e.css("opacity",1),e=null,t=null,s.dragInProgress=!1};this.options.editable&&(this._moveDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:S+l.task,holdToDrag:kendo.support.mobileOS,ignore:S+l.taskResizeHandle}),this._moveDraggable.bind("dragstart",function(i){var r=s.view();return e=i.currentTarget.parent(),t=s._taskByUid(i.currentTarget.attr("data-uid")),s.trigger("moveStart",{task:t})?void i.preventDefault():(n=t.start,o=r._timeByPosition(i.x.location,a)-n,r._createDragHint(e),e.css("opacity",.5),clearTimeout(s._tooltipTimeout),void(s.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){var i,r,l;s.dragInProgress&&(i=s.view(),r=new Date(i._timeByPosition(e.x.location,a)-o),l=r,s.trigger("move",{task:t,start:r})||(n=r,p&&(l=new Date(n.getTime()+t.duration())),i._updateDragHint(l)))},15)).bind("dragend",function(){s.trigger("moveEnd",{task:t,start:n}),c()}).bind("dragcancel",function(){c()}).userEvents.bind("select",function(){i()}))},_resizable:function(){var e,t,n,o,s,a=this,l=this.options.snap,c=r.styles,h=function(){a.view()._removeResizeHint(),e=null,t=null,a.dragInProgress=!1};this.options.editable&&(this._resizeDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:S+c.taskResizeHandle,holdToDrag:!1}),this._resizeDraggable.bind("dragstart",function(i){return s=i.currentTarget.hasClass(c.taskResizeHandleWest),p&&(s=!s),e=i.currentTarget.closest(S+c.task),t=a._taskByUid(e.attr("data-uid")),a.trigger("resizeStart",{task:t})?void i.preventDefault():(n=t.start,o=t.end,a.view()._createResizeHint(t),clearTimeout(a._tooltipTimeout),void(a.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){var i,r;a.dragInProgress&&(i=a.view(),r=i._timeByPosition(e.x.location,l,!s),s?n=o>r?r:o:o=r>n?r:n,a.trigger("resize",{task:t,start:n,end:o})||i._updateResizeHint(n,o,s))},15)).bind("dragend",function(){a.trigger("resizeEnd",{task:t,resizeStart:s,start:n,end:o}),h()}).bind("dragcancel",function(){h()}).userEvents.bind("select",function(){i()}))},_percentResizeDraggable:function(){var e,t,n,o,s,a,l,c,h,u,d=this,f=r.styles,g=function(){d.view()._removePercentCompleteTooltip(),t=null,e=null,d.dragInProgress=!1},m=function(e){t.find(S+f.taskComplete).width(e).end().siblings(S+f.taskDragHandle).css(p?"right":"left",e)};this.options.editable&&(this._percentDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:S+f.taskDragHandle,holdToDrag:!1}),this._percentDraggable.bind("dragstart",function(i){return d.trigger("percentResizeStart")?void i.preventDefault():(t=i.currentTarget.siblings(S+f.task),e=d._taskByUid(t.attr("data-uid")),l=e.percentComplete,n=t.offset(),o=this.element.offset(),s=t.find(S+f.taskComplete).width(),a=t.outerWidth(),clearTimeout(d._tooltipTimeout),void(d.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){if(d.dragInProgress){u=p?-e.x.initialDelta:e.x.initialDelta;var t=Math.max(0,Math.min(a,s+u));l=Math.round(t/a*100),m(t),c=n.top-o.top,h=n.left+t-o.left,p&&(h+=a-2*t),d.view()._updatePercentCompleteTooltip(c,h,l)}},15)).bind("dragend",function(){d.trigger("percentResizeEnd",{task:e,percentComplete:l/100}),g()}).bind("dragcancel",function(){m(s),g()}).userEvents.bind("select",function(){i()}))},_createDependencyDraggable:function(){var t,n,o,s=this,a=e(),l=e(),c=f.msie&&9>f.version,h=r.styles,u=function(){t.css("display","").removeClass(h.hovered),t.parent().removeClass(h.origin),t=null,d(!1),l=e(),a=e(),s.view()._removeDependencyDragHint(),s.dragInProgress=!1},d=function(e){l.hasClass(h.origin)||(l.find(S+h.taskDot).css("display",e?"block":""),a.toggleClass(h.hovered,e))};this.options.editable&&(c&&document.namespaces&&document.namespaces.add("kvml","urn:schemas-microsoft-com:vml","#default#VML"),
this._dependencyDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:S+h.taskDot,holdToDrag:!1}),this._dependencyDraggable.bind("dragstart",function(i){var r,a;return s.trigger("dependencyDragStart")?void i.preventDefault():(t=i.currentTarget.css("display","block").addClass(h.hovered),t.parent().addClass(h.origin),r=t.offset(),a=e(S+h.tasksWrapper).offset(),n=Math.round(r.left-a.left+t.outerHeight()/2),o=Math.round(r.top-a.top+t.outerWidth()/2),clearTimeout(s._tooltipTimeout),void(s.dragInProgress=!0))}).bind("drag",kendo.throttle(function(t){var i,r,u,f;s.dragInProgress&&(s.view()._removeDependencyDragHint(),i=e(kendo.elementUnderCursor(t)),r=e(S+h.tasksWrapper).offset(),u=t.x.location-r.left,f=t.y.location-r.top,s.view()._updateDependencyDragHint({x:n,y:o},{x:u,y:f},c),d(!1),a=i.hasClass(h.taskDot)?i:e(),l=i.closest(S+h.taskWrap),d(!0))},15)).bind("dragend",function(){var e,n,i,o,r;a.length&&(e=t.hasClass(h.taskDotStart),n=a.hasClass(h.taskDotStart),i=e?n?3:2:n?1:0,o=s._taskByUid(t.siblings(S+h.task).attr("data-uid")),r=s._taskByUid(a.siblings(S+h.task).attr("data-uid")),o!==r&&s.trigger("dependencyDragEnd",{type:i,predecessor:o,successor:r})),u()}).bind("dragcancel",function(){u()}).userEvents.bind("select",function(){i()}))},_selectable:function(){var t=this,n=r.styles;this.options.selectable&&this.wrapper.on(w+_,S+n.task,function(n){n.stopPropagation(),n.ctrlKey?t.trigger("clear"):t.trigger("select",{uid:e(this).attr("data-uid")})}).on(w+_,S+n.taskWrap,function(t){t.stopPropagation(),e(this).css("z-index","0");var i=e(document.elementFromPoint(t.clientX,t.clientY));i.hasClass(n.line)&&i.click(),e(this).css("z-index","")}).on(w+_,S+n.tasksWrapper,function(){t.selectDependency().length>0?t.clearSelection():t.trigger("clear")}).on(w+_,S+n.line,function(e){e.stopPropagation(),t.selectDependency(this)})},select:function(e){var t=this.wrapper.find(e),n=r.styles;return t.length?(this.clearSelection(),t.addClass(n.selected),void(kendo.support.mobileOS&&t.parent().addClass(n.taskWrapActive))):this.wrapper.find(S+n.task+S+n.selected)},selectDependency:function(t){var n,i=this.wrapper.find(t),o=r.styles;return i.length?(this.clearSelection(),this.trigger("clear"),n=e(i).attr("data-uid"),void this.wrapper.find(S+o.line+"[data-uid='"+n+"']").addClass(o.selected)):this.wrapper.find(S+o.line+S+o.selected)},clearSelection:function(){var e=r.styles;this.wrapper.find(S+e.selected).removeClass(e.selected),kendo.support.mobileOS&&this.wrapper.find(S+e.taskWrapActive).removeClass(e.taskWrapActive)},_attachEvents:function(){var t=this,n=r.styles;this.options.editable&&(this._tabindex(),this.wrapper.on(w+_,S+n.taskDelete,function(i){t.trigger("removeTask",{uid:e(this).closest(S+n.task).attr("data-uid")}),i.stopPropagation(),i.preventDefault()}).on(C+_,function(e){var n;e.keyCode===g.DELETE&&(n=t.selectDependency(),n.length&&(t.trigger("removeDependency",{uid:n.attr("data-uid")}),t.clearSelection()))}),kendo.support.mobileOS?this.touch=this.wrapper.kendoTouch({filter:S+n.task,doubletap:function(n){t.trigger("editTask",{uid:e(n.touch.currentTarget).attr("data-uid")})}}).data("kendoTouch"):this.wrapper.on(y+_,S+n.task,function(n){t.trigger("editTask",{uid:e(this).attr("data-uid")}),n.stopPropagation(),n.preventDefault()}))},_tooltip:function(){var t,n=this,i=this.options.tooltip,o=r.styles,s=function(e){t=e.clientX};i&&i.visible===!1||(kendo.support.mobileOS?(this.wrapper.on(w+_,S+o.taskDelete,function(e){e.stopPropagation(),n.view()._removeTaskTooltip()}).on(k+_,S+o.task,function(t){var i=e(t.relatedTarget).parents(S+o.taskWrap,S+o.task);0===i.length&&n.view()._removeTaskTooltip()}),this.touch.bind("tap",function(t){var i=t.touch.target,o=n._taskByUid(e(i).attr("data-uid")),r=t.touch.x.client;n.view()._taskTooltip&&n.view()._removeTaskTooltip(),n.view()._createTaskTooltip(o,i,r)}).bind("doubletap",function(){n.view()._removeTaskTooltip()})):this.wrapper.on(x+_,S+o.task,function(){var i=this,o=n._taskByUid(e(this).attr("data-uid"));n.dragInProgress||(n._tooltipTimeout=setTimeout(function(){n.view()._createTaskTooltip(o,i,t)},800),e(this).on(b,s))}).on(k+_,S+o.task,function(){clearTimeout(n._tooltipTimeout),n.view()._removeTaskTooltip(),e(this).off(b,s)}))}}),u(!0,r,{styles:o})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t){t()});