From a52ed79d3a2ac4479fcf3be0a65a7df163986dc5 Mon Sep 17 00:00:00 2001 From: AlexKlimenkov Date: Wed, 15 May 2019 17:38:22 +0300 Subject: [PATCH] [update] version 6.1.6 --- bower.json | 2 +- codebase/dhtmlxgantt.js | 4 +- codebase/dhtmlxgantt.js.map | 2 +- codebase/ext/dhtmlxgantt_csp.js | 2 +- codebase/ext/dhtmlxgantt_fullscreen.js | 2 +- .../ext/dhtmlxgantt_keyboard_navigation.js | 2 +- codebase/ext/dhtmlxgantt_marker.js | 2 +- codebase/ext/dhtmlxgantt_multiselect.js | 2 +- codebase/ext/dhtmlxgantt_quick_info.js | 4 +- codebase/ext/dhtmlxgantt_quick_info.js.map | 2 +- codebase/ext/dhtmlxgantt_smart_rendering.js | 4 +- .../ext/dhtmlxgantt_smart_rendering.js.map | 2 +- codebase/ext/dhtmlxgantt_tooltip.js | 2 +- codebase/ext/dhtmlxgantt_undo.js | 2 +- codebase/locale/locale.js | 2 +- codebase/locale/locale_ar.js | 2 +- codebase/locale/locale_be.js | 2 +- codebase/locale/locale_ca.js | 2 +- codebase/locale/locale_cn.js | 2 +- codebase/locale/locale_cs.js | 2 +- codebase/locale/locale_da.js | 2 +- codebase/locale/locale_de.js | 2 +- codebase/locale/locale_el.js | 2 +- codebase/locale/locale_es.js | 2 +- codebase/locale/locale_fa.js | 2 +- codebase/locale/locale_fi.js | 2 +- codebase/locale/locale_fr.js | 2 +- codebase/locale/locale_he.js | 2 +- codebase/locale/locale_hr.js | 2 +- codebase/locale/locale_hu.js | 2 +- codebase/locale/locale_id.js | 2 +- codebase/locale/locale_it.js | 2 +- codebase/locale/locale_jp.js | 2 +- codebase/locale/locale_kr.js | 2 +- codebase/locale/locale_nb.js | 2 +- codebase/locale/locale_nl.js | 2 +- codebase/locale/locale_no.js | 2 +- codebase/locale/locale_pl.js | 2 +- codebase/locale/locale_pt.js | 2 +- codebase/locale/locale_ro.js | 2 +- codebase/locale/locale_ru.js | 2 +- codebase/locale/locale_si.js | 2 +- codebase/locale/locale_sk.js | 2 +- codebase/locale/locale_sv.js | 2 +- codebase/locale/locale_tr.js | 2 +- codebase/locale/locale_ua.js | 2 +- codebase/sources/dhtmlxgantt.css | 2 +- codebase/sources/dhtmlxgantt.js | 14 +-- codebase/sources/ext/dhtmlxgantt_csp.js | 2 +- .../sources/ext/dhtmlxgantt_fullscreen.js | 2 +- .../ext/dhtmlxgantt_keyboard_navigation.js | 2 +- codebase/sources/ext/dhtmlxgantt_marker.js | 2 +- .../sources/ext/dhtmlxgantt_multiselect.js | 2 +- .../sources/ext/dhtmlxgantt_quick_info.js | 87 ++++++++++++++----- .../ext/dhtmlxgantt_smart_rendering.js | 11 ++- codebase/sources/ext/dhtmlxgantt_tooltip.js | 2 +- codebase/sources/ext/dhtmlxgantt_undo.js | 2 +- codebase/sources/locale/locale.js | 2 +- codebase/sources/locale/locale_ar.js | 2 +- codebase/sources/locale/locale_be.js | 2 +- codebase/sources/locale/locale_ca.js | 2 +- codebase/sources/locale/locale_cn.js | 2 +- codebase/sources/locale/locale_cs.js | 2 +- codebase/sources/locale/locale_da.js | 2 +- codebase/sources/locale/locale_de.js | 2 +- codebase/sources/locale/locale_el.js | 2 +- codebase/sources/locale/locale_es.js | 2 +- codebase/sources/locale/locale_fa.js | 2 +- codebase/sources/locale/locale_fi.js | 2 +- codebase/sources/locale/locale_fr.js | 2 +- codebase/sources/locale/locale_he.js | 2 +- codebase/sources/locale/locale_hr.js | 2 +- codebase/sources/locale/locale_hu.js | 2 +- codebase/sources/locale/locale_id.js | 2 +- codebase/sources/locale/locale_it.js | 2 +- codebase/sources/locale/locale_jp.js | 2 +- codebase/sources/locale/locale_kr.js | 2 +- codebase/sources/locale/locale_nb.js | 2 +- codebase/sources/locale/locale_nl.js | 2 +- codebase/sources/locale/locale_no.js | 2 +- codebase/sources/locale/locale_pl.js | 2 +- codebase/sources/locale/locale_pt.js | 2 +- codebase/sources/locale/locale_ro.js | 2 +- codebase/sources/locale/locale_ru.js | 2 +- codebase/sources/locale/locale_si.js | 2 +- codebase/sources/locale/locale_sk.js | 2 +- codebase/sources/locale/locale_sv.js | 2 +- codebase/sources/locale/locale_tr.js | 2 +- codebase/sources/locale/locale_ua.js | 2 +- .../sources/skins/dhtmlxgantt_broadway.css | 2 +- .../skins/dhtmlxgantt_contrast_black.css | 2 +- .../skins/dhtmlxgantt_contrast_white.css | 2 +- .../sources/skins/dhtmlxgantt_material.css | 2 +- codebase/sources/skins/dhtmlxgantt_meadow.css | 2 +- .../sources/skins/dhtmlxgantt_skyblue.css | 2 +- .../sources/skins/dhtmlxgantt_terrace.css | 2 +- package.json | 2 +- whatsnew.txt | 6 ++ 98 files changed, 187 insertions(+), 125 deletions(-) diff --git a/bower.json b/bower.json index 2f661e18..68808d75 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "gantt", - "version": "6.1.5", + "version": "6.1.6", "homepage": "https://dhtmlx.com/docs/products/dhtmlxGantt/", "description": "An open source JavaScript Gantt chart that helps you illustrate a project schedule in a nice-looking chart.", "main": [ diff --git a/codebase/dhtmlxgantt.js b/codebase/dhtmlxgantt.js index c38337f2..cb263c1e 100644 --- a/codebase/dhtmlxgantt.js +++ b/codebase/dhtmlxgantt.js @@ -1,11 +1,11 @@ /* @license -dhtmlxGantt v.6.1.5 Standard +dhtmlxGantt v.6.1.6 Standard This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited. (c) Dinamenta, UAB. */ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)("object"==typeof exports?exports:t)[n]=i[n]}}(window,function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/codebase/",i(i.s=145)}([function(t,e,i){var n,r=i(3);t.exports={copy:function t(e){var i,n;if(e&&"object"==typeof e)switch(!0){case r.isDate(e):n=new Date(e);break;case r.isArray(e):for(n=new Array(e.length),i=0;i=0}function a(t){return!{a:!0,area:!0}[t.nodeName.loLowerCase()]||!!t.getAttribute("href")}function o(t){return!{input:!0,select:!0,textarea:!0,button:!0,object:!0}[t.nodeName.toLowerCase()]||!t.hasAttribute("disabled")}function s(t){if(!t)return"";var e=t.className||"";return e.baseVal&&(e=e.baseVal),e.indexOf||(e=""),u(e)}var l=document.createElement("div");function c(t){return t.tagName?t:(t=t||window.event).target||t.srcElement}function u(t){return(String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")}).apply(t)}t.exports={getNodePosition:i,getFocusableNodes:function(t){for(var e=t.querySelectorAll(["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"].join(", ")),i=Array.prototype.slice.call(e,0),s=0;s=0){if(!i)return n;var o=0===a||!u(r.charAt(a-1)),l=a+e.length>=r.length||!u(r.charAt(a+e.length));if(o&&l)return n}}n=n.parentNode}return null},locateAttribute:function(t,e){if(e){for(var i=c(t);i;){if(i.getAttribute&&i.getAttribute(e))return i;i=i.parentNode}return null}},getTargetNode:c,getRelativeEventPosition:function(t,e){var n=document.documentElement,r=i(e);return{x:t.clientX+n.scrollLeft-n.clientLeft-r.x+e.scrollLeft,y:t.clientY+n.scrollTop-n.clientTop-r.y+e.scrollTop}},isChildOf:function(t,e){if(!t||!e)return!1;for(;t&&t!=e;)t=t.parentNode;return t===e},hasClass:function(t,e){return"classList"in t?t.classList.contains(e):new RegExp("\\b"+e+"\\b").test(t.className)},closest:function(t,e){if(t.closest)return t.closest(e);if(t.matches||t.msMatchesSelector||t.webkitMatchesSelector){var i=t;if(!document.documentElement.contains(i))return null;do{if((i.matches||i.msMatchesSelector||i.webkitMatchesSelector).call(i,e))return i;i=i.parentElement||i.parentNode}while(null!==i&&1===i.nodeType);return null}return console.error("Your browser is not supported"),null}}},function(t,e){t.exports=function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);function n(){this.constructor=t}t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}},function(t,e){var i={second:1,minute:60,hour:3600,day:86400,week:604800,month:2592e3,quarter:7776e3,year:31536e3};function n(t,e){var i=[];if(t.filter)return t.filter(e);for(var n=0;nr.maxWidth&&(i=r.maxWidth),nr.maxHeight&&(n=r.maxHeight),this.setSize(i,n),this.$preResize,this.$preResize=!1},t.prototype.hide=function(){this._hide(!0),this.resize()},t.prototype.show=function(t){this._hide(!1),t&&this.$parent&&this.$parent.show(),this.resize()},t.prototype._hide=function(t){if(!0===t&&this.$view.parentNode)this.$view.parentNode.removeChild(this.$view);else if(!1===t&&!this.$view.parentNode){var e=this.$parent.cellIndex(this.$id);this.$parent.moveView(this,e)}this.$config.hidden=t},t.prototype.$toHTML=function(t,e){void 0===t&&(t=""),e=[e||"",this.$config.css||""].join(" ");var i=this.$config,n="";i.raw?t="string"==typeof i.raw?i.raw:"":(t||(t="
"+(i.html||"")+"
"),i.header&&(n="
"+(i.canCollapse?"
":"")+"
"+i.header+"
"));return"
"+n+t+"
"},t.prototype.$fill=function(t,e){this.$view=t,this.$parent=e,this.init()},t.prototype.getNode=function(){return this.$view.querySelector("gantt_layout_cell")||this.$view},t.prototype.init=function(){var t=this;this._headerClickHandler=function(e){a.locateAttribute(e,"data-cell-id")==t.$id&&t.toggle()},this.$gantt.$services.getService("mouseEvents").delegate("click","gantt_header_arrow",this._headerClickHandler),this.callEvent("onReady",[])},t.prototype.toggle=function(){this.$config.collapsed=!this.$config.collapsed,this.resize()},t.prototype.getSize=function(){var t={height:this.$config.height||0,width:this.$config.width||0,gravity:this.$config.gravity||1,minHeight:this.$config.minHeight||0,minWidth:this.$config.minWidth||0,maxHeight:this.$config.maxHeight||1e5,maxWidth:this.$config.maxWidth||1e5};if(this.$config.collapsed){var e="x"===this.$config.mode;t[e?"width":"height"]=t[e?"maxWidth":"maxHeight"]=this.$config.headerHeight}return t},t.prototype.getContentSize=function(){var t=this.$lastSize.contentX;t!==1*t&&(t=this.$lastSize.width);var e=this.$lastSize.contentY;return e!==1*e&&(e=this.$lastSize.height),{width:t,height:e}},t.prototype._getBorderSizes=function(){var t={top:0,right:0,bottom:0,left:0,horizontal:0,vertical:0};return this._currentBorders&&(this._currentBorders[this._borders.left]&&(t.left=1,t.horizontal++),this._currentBorders[this._borders.right]&&(t.right=1,t.horizontal++),this._currentBorders[this._borders.top]&&(t.top=1,t.vertical++),this._currentBorders[this._borders.bottom]&&(t.bottom=1,t.vertical++)),t},t.prototype.setSize=function(t,e){this.$view.style.width=t+"px",this.$view.style.height=e+"px";var i=this._getBorderSizes(),n=e-i.vertical,r=t-i.horizontal;this.$lastSize={x:t,y:e,contentX:r,contentY:n},this.$config.header?this._sizeHeader():this._sizeContent()},t.prototype._borders={left:"gantt_layout_cell_border_left",right:"gantt_layout_cell_border_right",top:"gantt_layout_cell_border_top",bottom:"gantt_layout_cell_border_bottom"},t.prototype._setBorders=function(t,e){e||(e=this);var i=e.$view;for(var n in this._borders)a.removeClassName(i,this._borders[n]);"string"==typeof t&&(t=[t]);var r={};for(n=0;n";return e+=r.getHtmlSelect(t.options,[{key:"style",value:"width:100%;"}]),e+=""},a.prototype.set_value=function(t,e,i,n){var r=t.firstChild;!r._dhx_onchange&&n.onchange&&(r.onchange=n.onchange,r._dhx_onchange=!0),void 0===e&&(e=(r.options[0]||{}).value),r.value=e||""},a.prototype.get_value=function(t){return t.firstChild.value},a.prototype.focus=function(e){var i=e.firstChild;t._focus(i,!0)},a}},function(t,e,i){var n=i(0);t.exports={createDropTargetObject:function(t){var e={targetParent:null,targetIndex:0,targetId:null,child:!1,nextSibling:!1,prevSibling:!1};return t&&n.mixin(e,t,!0),e},nextSiblingTarget:function(t,e,i){var n=this.createDropTargetObject();return n.targetId=e,n.nextSibling=!0,n.targetParent=i.getParent(n.targetId),n.targetIndex=i.getBranchIndex(n.targetId),(i.getParent(t)!=n.targetParent||n.targetIndexi.getBranchIndex(t)&&(n.targetIndex-=1),n},firstChildTarget:function(t,e,i){var n=this.createDropTargetObject();return n.targetId=e,n.targetParent=n.targetId,n.targetIndex=0,n.child=!0,n},lastChildTarget:function(t,e,i){var n=i.getChildren(e),r=this.createDropTargetObject();return r.targetId=n[n.length-1],r.targetParent=e,r.targetIndex=n.length,r.nextSibling=!0,r}}},function(t,e){t.exports=function(t){var e=[];return{delegate:function(i,n,r,a){e.push([i,n,r,a]),t.$services.getService("mouseEvents").delegate(i,n,r,a)},destructor:function(){for(var i=t.$services.getService("mouseEvents"),n=0;ne)){for(;+t[i]==+t[i+1];)i++;return i}if(!isNaN(r)&&r",this.$task=t.childNodes[0],this.$task.innerHTML="
",this.$task_scale=this.$task.childNodes[0],this.$task_data=this.$task.childNodes[1],this.$task_data.innerHTML="
",this.$task_bg=this.$task_data.childNodes[0],this.$task_links=this.$task_data.childNodes[1],this.$task_bars=this.$task_data.childNodes[2],this._tasks={col_width:0,width:[],full_width:0,trace_x:[],rendered:{}};var e=this.$getConfig(),i=e[this.$config.bind+"_attribute"],n=e[this.$config.bindLinks+"_attribute"];!i&&this.$config.bind&&(i=this.$config.bind+"_id"),!n&&this.$config.bindLinks&&(n=this.$config.bindLinks+"_id"),this.$config.item_attribute=i||null,this.$config.link_attribute=n||null;var r=this._createLayerConfig();this.$config.layers||(this.$config.layers=r.tasks),this.$config.linkLayers||(this.$config.linkLayers=r.links),this._attachLayers(this.$gantt),this.callEvent("onReady",[])},setSize:function(t,e){var i=this.$getConfig();if(1*t===t&&(this.$config.width=t),1*e===e){this.$config.height=e;var n=Math.max(this.$config.height-i.scale_height);this.$task_data.style.height=n+"px"}if(this.refresh(),this.$task_bg.style.backgroundImage="",i.smart_rendering&&this.$config.rowStore){var r=this.$config.rowStore;this.$task_bg.style.height=i.row_height*r.countVisible()+"px"}else this.$task_bg.style.height="";for(var a=this._tasks,o=this.$task_data.childNodes,s=0,l=o.length;s'+this._prepareScaleHtml(t[a],e,i)+"")}return n.join("")},_prepareScaleHtml:function(t,e,i){var n=this.$getConfig(),r=this.$gantt.$services.templates(),a=[],o=null,s=null,l=null;(t.template||t.date)&&(s=t.template||this.$gantt.date.date_to_str(t.date));var u=0,d=t.count;!n.smart_scales||isNaN(e)||isNaN(i)||(u=c(t.left,e),d=c(t.left,i)+1),l=t.css||function(){},!t.css&&n.inherit_scale_class&&(l=r.scale_cell_class);for(var h=u;h"+f+"";a.push(b)}}return a.join("")},dateFromPos:function(t){var e=this._tasks;if(t<0||t>e.full_width||!e.full_width)return null;var i=c(this._tasks.left,t),n=this._tasks.left[i],r=e.width[i]||e.col_width,a=0;r&&(a=(t-n)/r,e.rtl&&(a=1-a));var o=0;return a&&(o=this._getColumnDuration(e,e.trace_x[i])),new Date(e.trace_x[i].valueOf()+Math.round(a*o))},posFromDate:function(t){if(!this.isVisible())return 0;var e=this.columnIndexByDate(t);this.$gantt.assert(e>=0,"Invalid day index");var i=Math.floor(e),n=e%1,r=this._tasks.left[Math.min(i,this._tasks.width.length-1)];return i==this._tasks.width.length&&(r+=this._tasks.width[this._tasks.width.length-1]),n&&(i=r.max_date)return this._tasks.rtl?0:i.length;var a=c(i,e),o=this._getClosestVisibleColumn(a,i,n),s=i[o],l=this._tasks.trace_index_transition;if(!s)return l?l[0]:0;var u=(t-i[o])/this._getColumnDuration(this._tasks,i[o]);return l?l[o]+(1-u):o+u},getItemPosition:function(t,e,i){var n,r,a;return this._tasks.rtl?(r=this.posFromDate(e||t.start_date),n=this.posFromDate(i||t.end_date)):(n=this.posFromDate(e||t.start_date),r=this.posFromDate(i||t.end_date)),a=Math.max(r-n,0),{left:n,top:this.getItemTop(t.id),height:this.getItemHeight(),width:a}},getItemHeight:function(){var t=this.$getConfig(),e=t.task_height;if("full"==e){var i=t.task_height_offset||5;e=t.row_height-i}return e=Math.min(e,t.row_height),Math.max(e,0)},getScale:function(){return this._tasks},_getScales:function(){var t=this.$getConfig(),e=this.$scaleHelper,i=[e.primaryScale()].concat(t.subscales);return e.sortScales(i),i},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},refresh:function(){this.$config.bind&&(this.$config.rowStore=this.$gantt.getDatastore(this.$config.bind)),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this.$task=null,this.$task_scale=null,this.$task_data=null,this.$task_bg=null,this.$task_links=null,this.$task_bars=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.$config.linkStore&&(this.$config.linkStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},a.mixin(l.prototype,o()),t.exports=l},function(t,e){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e){var i={isIE:navigator.userAgent.indexOf("MSIE")>=0||navigator.userAgent.indexOf("Trident")>=0,isIE6:!window.XMLHttpRequest&&navigator.userAgent.indexOf("MSIE")>=0,isIE7:navigator.userAgent.indexOf("MSIE 7.0")>=0&&navigator.userAgent.indexOf("Trident")<0,isIE8:navigator.userAgent.indexOf("MSIE 8.0")>=0&&navigator.userAgent.indexOf("Trident")>=0,isOpera:navigator.userAgent.indexOf("Opera")>=0,isChrome:navigator.userAgent.indexOf("Chrome")>=0,isKHTML:navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0,isFF:navigator.userAgent.indexOf("Firefox")>=0,isIPad:navigator.userAgent.search(/iPad/gi)>=0,isEdge:-1!=navigator.userAgent.indexOf("Edge")};t.exports=i},,function(t,e,i){},function(t,e,i){var n=i(0);t.exports=function t(e,i){e=e||n.event,i=i||n.eventRemove;var r=[],a={attach:function(t,i,n,a){r.push({element:t,event:i,callback:n,capture:a}),e(t,i,n,a)},detach:function(t,e,n,a){i(t,e,n,a);for(var o=0;o"}};function a(t,e,i){return e=e||[],"<"+t+o(i||[])+">"+(e.innerHTML||"")+""}function o(t){var e="";return n.forEach(t,function(t){e+=" "+t.key+"='"+t.value+"'"}),e}t.exports=r},function(t,e,i){var n=i(0),r=i(3);function a(t,e,i,n,r){return this.date=t,this.unit=e,this.task=i,this.id=n,this.calendar=r,this}function o(t,e,i,n,r,a){return this.date=t,this.dir=e,this.unit=i,this.task=n,this.id=r,this.calendar=a,this}function s(t,e,i,n,r,a,o){return this.start_date=t,this.duration=e,this.unit=i,this.step=n,this.task=r,this.id=a,this.calendar=o,this}function l(t,e,i,n){return this.start_date=t,this.end_date=e,this.task=i,this.calendar=n,this.unit=null,this.step=null,this}t.exports=function(t){return{getWorkHoursArguments:function(){var t=arguments[0];return t=r.isDate(t)?{date:t}:n.mixin({},t)},setWorkTimeArguments:function(){return arguments[0]},unsetWorkTimeArguments:function(){return arguments[0]},isWorkTimeArguments:function(){var e,i=arguments[0];return i instanceof a?i:((e=i.date?new a(i.date,i.unit,i.task,null,i.calendar):new a(arguments[0],arguments[1],arguments[2],null,arguments[3])).unit=e.unit||t.config.duration_unit,e)},getClosestWorkTimeArguments:function(e){var i,n=arguments[0];return n instanceof o?n:(i=r.isDate(n)?new o(n):new o(n.date,n.dir,n.unit,n.task,null,n.calendar),n.id&&(i.task=n),i.dir=n.dir||"any",i.unit=n.unit||t.config.duration_unit,i)},_getStartEndConfig:function(e){var i,n=l;return e instanceof n?e:(r.isDate(e)?i=new n(arguments[0],arguments[1],arguments[2],arguments[3]):(i=new n(e.start_date,e.end_date,e.task),e.id&&(i.task=e)),i.unit=i.unit||t.config.duration_unit,i.step=i.step||t.config.duration_step,i.start_date=i.start_date||i.start||i.date,i)},getDurationArguments:function(t,e,i,n){return this._getStartEndConfig.apply(this,arguments)},hasDurationArguments:function(t,e,i,n){return this._getStartEndConfig.apply(this,arguments)},calculateEndDateArguments:function(e,i,n,a){var o,l=arguments[0];return l instanceof s?l:(o=r.isDate(l)?new s(arguments[0],arguments[1],arguments[2],void 0,arguments[3],void 0,arguments[4]):new s(l.start_date,l.duration,l.unit,l.step,l.task,null,l.calendar),l.id&&(o.task=l),o.unit=o.unit||t.config.duration_unit,o.step=o.step||t.config.duration_step,o)}}}},function(t,e){function i(t,e,i){for(var n=0;n=0&&this.splice(t,e||1)},$remove:function(t){this.$removeAt(this.$find(t))},$insertAt:function(t,e){if(e||0===e){var i=this.splice(e,this.length-e);this[e]=t,this.push.apply(this,i)}else this.push(t)},$find:function(t){for(var e=0;en&&(e=Math.min(i.length,e))}this.pull[t.id]=t,this._skip_refresh||this._updateOrder(function(){-1===this.$find(t.id)&&this.$insertAt(t.id,e)}),this.filter()},isVisible:function(t){return this.visibleOrder.$find(t)>-1},getVisibleItems:function(){return this.getIndexRange()},addItem:function(t,e){return r.defined(t.id)||(t.id=r.uid()),this.$initItem&&(t=this.$initItem(t)),!(!this._skip_refresh&&!1===this.callEvent("onBeforeAdd",[t.id,t]))&&(this._addItemInner(t,e),this._skip_refresh||(this.callEvent("onAfterAdd",[t.id,t]),this.callEvent("onStoreUpdated",[t.id,t,"add"])),t.id)},_changeIdInner:function(t,e){this.pull[t]&&(this.pull[e]=this.pull[t]);var i=this._searchVisibleOrder[t];this.pull[e].id=e,this._updateOrder(function(){this[this.$find(t)]=e}),this._searchVisibleOrder[e]=i,delete this._searchVisibleOrder[t],delete this.pull[t]},changeId:function(t,e){this._changeIdInner(t,e),this.callEvent("onIdChange",[t,e])},exists:function(t){return!!this.pull[t]},_moveInner:function(t,e){var i=this.getIdByIndex(t);this._updateOrder(function(){this.$removeAt(t),this.$insertAt(i,Math.min(this.length,e))})},move:function(t,e){var i=this.getIdByIndex(t),n=this.getItem(i);this._moveInner(t,e),this._skip_refresh||this.callEvent("onStoreUpdated",[n.id,n,"move"])},clearAll:function(){this.pull={},this.visibleOrder=n.$create(),this.fullOrder=n.$create(),this._skip_refresh||(this.callEvent("onClearAll",[]),this.refresh())},silent:function(t,e){this._skip_refresh=!0,t.call(e||this),this._skip_refresh=!1},arraysEqual:function(t,e){if(t.length!==e.length)return!1;for(var i=0;i1&&(d+=1),u==s.types.milestone&&(o.left-=Math.round(c/2),o.width=c);var h=document.createElement("div"),f=Math.round(o.width);a.$config.item_attribute&&h.setAttribute(a.$config.item_attribute,e.id),s.show_progress&&u!=s.types.milestone&&function(e,i,n,r,a){var o=1*e.progress||0;n=Math.max(n-2,0);var s=document.createElement("div"),l=Math.round(n*o);l=Math.min(n,l),e.progressColor&&(s.style.backgroundColor=e.progressColor,s.style.opacity=1),s.style.width=l+"px",s.className="gantt_task_progress",s.innerHTML=a.progress_text(e.start_date,e.end_date,e),r.rtl&&(s.style.position="absolute",s.style.right="0px");var c=document.createElement("div");if(c.className="gantt_task_progress_wrapper",c.appendChild(s),i.appendChild(c),t.config.drag_progress&&!t.isReadonly(e)){var u=document.createElement("div"),d=l;r.rtl&&(d=n-l),u.style.left=d+"px",u.className="gantt_task_progress_drag",s.appendChild(u),i.appendChild(u)}}(e,h,f,s,l);var _=function(e,i,n){var r=document.createElement("div");return t.getTaskType(e.type)!=t.config.types.milestone&&(r.innerHTML=n.task_text(e.start_date,e.end_date,e)),r.className="gantt_task_content",r}(e,0,l);e.textColor&&(_.style.color=e.textColor),h.appendChild(_);var g=function(e,i,n,r){var a=r.$getConfig(),o=[e];i&&o.push(i);var s=t.getState(),l=t.getTask(n);if(t.getTaskType(l.type)==a.types.milestone?o.push("gantt_milestone"):t.getTaskType(l.type)==a.types.project&&o.push("gantt_project"),o.push("gantt_bar_"+t.getTaskType(l.type)),t.isSummaryTask(l)&&o.push("gantt_dependent_task"),t.isSplitTask(l)&&o.push("gantt_split_parent"),a.select_task&&n==s.selected_task&&o.push("gantt_selected"),n==s.drag_id&&(o.push("gantt_drag_"+s.drag_mode),s.touch_drag&&o.push("gantt_touch_"+s.drag_mode)),s.link_source_id==n&&o.push("gantt_link_source"),s.link_target_id==n&&o.push("gantt_link_target"),a.highlight_critical_path&&t.isCriticalTask&&t.isCriticalTask(l)&&o.push("gantt_critical_task"),s.link_landing_area&&s.link_target_id&&s.link_source_id&&s.link_target_id!=s.link_source_id){var c=s.link_source_id,u=s.link_from_start,d=s.link_to_start,h=t.isLinkAllowed(c,n,u,d),f="";f=h?d?"link_start_allow":"link_finish_allow":d?"link_start_deny":"link_finish_deny",o.push(f)}return o.join(" ")}("gantt_task_line",l.task_class(e.start_date,e.end_date,e),e.id,a);(e.color||e.progressColor||e.textColor)&&(g+=" gantt_task_inline_color"),h.className=g;var p=["left:"+o.left+"px","top:"+(d+o.top)+"px","height:"+c+"px","line-height:"+Math.max(c<30?c-2:c,0)+"px","width:"+f+"px"];e.color&&p.push("background-color:"+e.color),e.textColor&&p.push("color:"+e.textColor),h.style.cssText=p.join(";");var v=function(t,e,r){var a="gantt_left "+n(!e.rtl,t);return i(t,r.leftside_text,a)}(e,s,l);v&&h.appendChild(v),(v=function(t,e,r){var a="gantt_right "+n(!!e.rtl,t);return i(t,r.rightside_text,a)}(e,s,l))&&h.appendChild(v),t._waiAria.setTaskBarAttr(e,h);var m=t.getState();return t.isReadonly(e)||(s.drag_resize&&!t.isSummaryTask(e)&&u!=s.types.milestone&&r(h,"gantt_task_drag",e,function(t){var e=document.createElement("div");return e.className=t,e},s),s.drag_links&&s.show_links&&r(h,"gantt_link_control",e,function(t){var e=document.createElement("div");e.className=t,e.style.cssText=["height:"+c+"px","line-height:"+c+"px"].join(";");var i=document.createElement("div");i.className="gantt_link_point";var n=!1;return m.link_source_id&&s.touch&&(n=!0),i.style.display=n?"block":"",e.appendChild(i),e},s)),h}}function i(t,e,i){if(!e)return null;var n=e(t.start_date,t.end_date,t);if(!n)return null;var r=document.createElement("div");return r.className="gantt_side_content "+i,r.innerHTML=n,r}function n(e,i){var n=function(e){return e?{$source:[t.config.links.start_to_start],$target:[t.config.links.start_to_start,t.config.links.finish_to_start]}:{$source:[t.config.links.finish_to_start,t.config.links.finish_to_finish],$target:[t.config.links.finish_to_finish]}}(e);for(var r in n)for(var a=i[r],o=0;o=+s.min_date&&((o=r([i,a.rtl?"task_right":"task_left","task_start_date"].join(" "))).setAttribute("data-bind-property","start_date"),e.appendChild(o)),+n.end_date<=+s.max_date&&((o=r([i,a.rtl?"task_left":"task_right","task_end_date"].join(" "))).setAttribute("data-bind-property","end_date"),e.appendChild(o))}return function(i,n){var r=n.$getConfig().type_renderers[t.getTaskType(i.type)],a=e;return r?r.call(t,i,function(e){return a.call(t,e,n)},n):a.call(t,i,n)}}},function(t,e,i){var n=i(1),r=i(0),a=i(4),o=i(115),s=i(25),l=function(t,e,i,n){this.$config=r.mixin({},e||{}),this.$gantt=n,this.$parent=t,a(this),this.$state={}};l.prototype={init:function(t){var e=this.$gantt,n=e._waiAria.gridAttrString(),r=e._waiAria.gridDataAttrString();t.innerHTML="
",this.$grid=t.childNodes[0],this.$grid.innerHTML="
",this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];var a=this.$getConfig()[this.$config.bind+"_attribute"];if(!a&&this.$config.bind&&(a=this.$config.bind+"_id"),this.$config.item_attribute=a||null,!this.$config.layers){var s=this._createLayerConfig();this.$config.layers=s}var l=o(e,this);l.init(),this._renderHeaderResizers=l.doOnRender,this._mouseDelegates=i(10)(e),this._addLayers(this.$gantt),this._initEvents(),this.callEvent("onReady",[])},_validateColumnWidth:function(t,e){var i=t[e];if(i&&"*"!=i){var n=this.$gantt,r=1*i;isNaN(r)?n.assert(!1,"Wrong "+e+" value of column "+t.name):t[e]=r}},setSize:function(t,e){this.$config.width=this.$state.width=t,this.$state.height=e;for(var i,n=this.getGridColumns(),r=0,a=0,o=n.length;au.max_width&&(d=u.max_width-u.width),r-=u.width,u.width+=d,l-=d}for(var h=l>0?1:-1;l>0&&1===h||l<0&&-1===h;){var f=l;for(o=e+1;o-1&&((_=n[e].width+l)==this._getColumnWidth(n[e],i,_)&&(n[e].width=_));return this._getColsTotalWidth()},_getColsTotalWidth:function(){for(var t=this.getGridColumns(),e=0,i=0;io+h&&(d.width=h=f-o),o+=h;var _=t._sort&&d.name==t._sort.name?"
":"",g=["gantt_grid_head_cell","gantt_grid_head_"+d.name,u?"gantt_last_cell":"",n.grid_header_class(d.name,d)].join(" "),p="width:"+(h-(u?1:0))+"px;",v=d.label||s["column_"+d.name]||s[d.name];v=v||"";var m="
"+v+_+"
";a.push(m)}this.$grid_scale.style.height=e.scale_height+"px",this.$grid_scale.style.lineHeight=l+"px",this.$grid_scale.innerHTML=a.join(""),this._renderHeaderResizers&&this._renderHeaderResizers()},_getGridWidth:function(){return this.$config.width},destructor:function(){this._clearLayers(this.$gantt),this._mouseDelegates&&(this._mouseDelegates.destructor(),this._mouseDelegates=null),this.$grid=null,this.$grid_scale=null,this.$grid_data=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},r.mixin(l.prototype,s()),t.exports=l},function(t,e){t.exports=function(){return{getRowTop:function(t){return t*this.$getConfig().row_height},getItemTop:function(t){if(this.$config.rowStore){var e=this.$config.rowStore;if(!e)return 0;var i=e.getIndexById(t);if(-1===i&&e.getParent&&e.exists(t)){var n=e.getParent(t);if(e.exists(n)){var r=e.getItem(n);if(this.$gantt.isSplitTask(r))return this.getRowTop(e.getIndexById(r.id))}}return this.getRowTop(i)}return 0}}}},function(t,e,i){var n=i(0);t.exports=function(t){var e=t.date,i=t.$services;return{getSum:function(t,e,i){void 0===i&&(i=t.length-1),void 0===e&&(e=0);for(var n=0,r=e;r<=i;r++)n+=t[r];return n},setSumWidth:function(t,e,i,n){var r=e.width;void 0===n&&(n=r.length-1),void 0===i&&(i=0);var a=n-i+1;if(!(i>r.length-1||a<=0||n>r.length-1)){var o=t-this.getSum(r,i,n);this.adjustSize(o,r,i,n),this.adjustSize(-o,r,n+1),e.full_width=this.getSum(r)}},splitSize:function(t,e){for(var i=[],n=0;ni(e.unit,e.step)?-1:0});for(var n=0;n=0;u--){var d=u==t.length-1,h=this.initScaleConfig(t[u],r,a);d&&this.processIgnores(h),this.initColSizes(h,e,l,s[u]),this.limitVisibleRange(h),d&&(l=h.full_width),c.unshift(h)}for(u=0;u=+l&&(l=e.add(c,n,i));+c<+l;){o.call(this,new Date(c));var u=c.getTimezoneOffset();c=e.add(c,n,i),c=t._correct_dst_change(c,u,n,i),e[i+"_start"]&&(c=e[i+"_start"](c))}},limitVisibleRange:function(t){var i=t.trace_x,n=t.width.length-1,r=0;if(+i[0]<+t.min_date&&0!=n){var a=Math.floor(t.width[0]*((i[1]-t.min_date)/(i[1]-i[0])));r+=t.width[0]-a,t.width[0]=a,i[0]=new Date(t.min_date)}var o=i.length-1,s=i[o],l=e.add(s,t.step,t.unit);if(+l>+t.max_date&&o>0&&(a=t.width[o]-Math.floor(t.width[o]*((l-t.max_date)/(l-s))),r+=t.width[o]-a,t.width[o]=a),r){for(var c=this.getSum(t.width),u=0,d=0;d0?t[r].$parent.getNextSibling(t[r].$id):t[r].$parent.getPrevSibling(t[r].$id);"resizer"==o.$name&&(o=n>0?o.$parent.getNextSibling(o.$id):o.$parent.getPrevSibling(o.$id));var s=o.getSize();if(o[i]){var l=a.gravity+s.gravity,c=a[i]+s[i],u=l/c;t[r].$config.gravity=u*e,o.$config[i]=c-e,o.$config.gravity=l-u*e}else t[r].$config[i]=e;var d=this.$gantt.$ui.getView("grid");d&&t[r].$content===d&&!d.$config.scrollable&&(this.$gantt.config.grid_width=e)}},e.prototype.resize=function(e){var i=!1;if(this.$root&&!this._resizeInProgress&&(this.callEvent("onBeforeResize",[]),i=!0,this._resizeInProgress=!0),t.prototype.resize.call(this,!0),t.prototype.resize.call(this,!1),i){var n=[];n=(n=(n=n.concat(this.getCellsByType("viewCell"))).concat(this.getCellsByType("viewLayout"))).concat(this.getCellsByType("hostCell"));for(var r=this.getCellsByType("scroller"),a=0;a=0&&this.$cells[e+1]?this.$cells[e+1]:null},e.prototype.getPrevSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e-1]?this.$cells[e-1]:null},e.prototype.cell=function(t){for(var e=0;e=i.childNodes.length?i.appendChild(t.$view):i.insertBefore(t.$view,i.childNodes[e])},e.prototype._parseConfig=function(t){this.$cells=[],this._xLayout=!t.rows;for(var e=t.rows||t.cols||t.views,i=0;i=0;n--){var a=this.$cells[n];a.$fill(i[n],this),a.$config.hidden&&a.$view.parentNode.removeChild(a.$view)}},e.prototype.$toHTML=function(){for(var e=this._xLayout?"x":"y",i=[],n=0;n=1e5&&(c.maxWidth=n),c.maxHeight>=1e5&&(c.maxHeight=a),c.minWidth=c.minWidth!=c.minWidth?0:c.minWidth,c.minHeight=c.minHeight!=c.minHeight?0:c.minHeight,this._xLayout?(c.minWidth+=this.$config.margin*this.$cells.length||0,c.minWidth+=2*this.$config.padding||0,c.minHeight+=2*this.$config.padding||0):(c.minHeight+=this.$config.margin*this.$cells.length||0,c.minHeight+=2*this.$config.padding||0),c},e.prototype._calcFreeSpace=function(t,e,i){var n=i?e.minWidth:e.minHeight,r=e.maxWidth,a=t;return a?(a>r&&(a=r),ar&&(a=r,this._free-=a,this._gravity-=e.gravity),aa&&(n=a),n=0;n--)if(!e[n].$config.hidden){i=n;break}for(n=0;n=i,a="";!r&&e[n+1]&&"scrollbar"==e[n+1].$config.view&&(this._xLayout?r=!0:a="gantt_layout_cell_border_transparent"),this._setBorders(r?[]:[t,a],e[n])}},e.prototype._updateCellVisibility=function(){for(var t,e=this._visibleCells||{},i=!this._visibleCells,n={},r=0;r1)for(var i=1;i=0)return null;var i=arguments[1]||this.config.task_attribute,r=n.locateAttribute(e,i);return r?r.getAttribute(i):null},t._locate_css=function(t,e,i){return n.locateClassName(t,e,i)},t._locateHTML=function(t,e){return n.locateAttribute(t,e||this.config.task_attribute)},t.getTaskRowNode=function(t){for(var e=this.$grid_data.childNodes,i=this.config.task_attribute,n=0;n3600&&o<86400){var s=e.getTimezoneOffset()-i;s&&(e=t.date.add(e,s,"minute"))}return e},t.isSplitTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument task="+e+" of gantt.isSplitTask. Task object was expected"),this.$data.tasksStore._isSplitItem(e)},t._is_icon_open_click=function(t){if(!t)return!1;var e=t.target||t.srcElement;if(!e||!e.className)return!1;var i=n.getClassName(e);return-1!==i.indexOf("gantt_tree_icon")&&(-1!==i.indexOf("gantt_close")||-1!==i.indexOf("gantt_open"))}}},function(t,e){t.exports=function(t){t.locale={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{new_task:"New task",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Task will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty"}}}},function(t,e){t.exports=function(t){function e(){var e;return t.$ui.getView("timeline")&&(e=t.$ui.getView("timeline")._tasks_dnd),e}t.config.touch_drag=500,t.config.touch=!0,t.config.touch_feedback=!0,t.config.touch_feedback_duration=1,t._prevent_touch_scroll=!1,t._touch_feedback=function(){t.config.touch_feedback&&navigator.vibrate&&navigator.vibrate(t.config.touch_feedback_duration)},t.attachEvent("onGanttReady",t.bind(function(){if("force"!=this.config.touch&&(this.config.touch=this.config.touch&&(-1!=navigator.userAgent.indexOf("Mobile")||-1!=navigator.userAgent.indexOf("iPad")||-1!=navigator.userAgent.indexOf("Android")||-1!=navigator.userAgent.indexOf("Touch"))),this.config.touch){var t=!0;try{document.createEvent("TouchEvent")}catch(e){t=!1}t?this._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.navigator.pointerEnabled?this._touch_events(["pointermove","pointerdown","pointerup"],function(t){return"mouse"==t.pointerType?null:t},function(t){return!t||"mouse"==t.pointerType}):window.navigator.msPointerEnabled&&this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}},t));var i=[];t._touch_events=function(n,r,a){for(var o,s=0,l=!1,c=!1,u=null,d=null,h=null,f=0;f5||Math.abs(g)>5)&&(t._touch_scroll_active=c=!0,s=0,o=t.getScrollState()),c){t.scrollTo(o.x+f,o.y+g);var p=t.getScrollState();if(o.x!=p.x&&g>2*f||o.y!=p.y&&f>2*g)return _(i)}}return _(i)}return!0}}]),i.push([this.$container,"contextmenu",function(t){if(l)return _(t)}]),i.push([this.$container,n[1],function(i){if(!a(i))if(i.touches&&i.touches.length>1)l=!1;else{u=r(i),t._locate_css(u,"gantt_hor_scroll")||t._locate_css(u,"gantt_ver_scroll")||(l=!0);var n=e();d=setTimeout(function(){var e=t.locate(u);n&&e&&!t._locate_css(u,"gantt_link_control")&&!t._locate_css(u,"gantt_grid_data")&&(n.on_mouse_down(u),n.drag&&n.drag.start_drag&&(!function(e){var i=t._getTaskLayers(),n=t.getTask(e);if(n&&t.isTaskVisible(e))for(var r=0;r-1&&(i.className=i.className.slice(0,t))},200))})}},function(t,e){t.exports=function(t){t.skins.broadway={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:1,link_arrow_size:7,lightbox_additional_height:86},_second_column_width:90,_third_column_width:80,_lightbox_template:"
 
",_config_buttons_left:{},_config_buttons_right:{gantt_delete_btn:"icon_delete",gantt_save_btn:"icon_save"}}}},function(t,e){t.exports=function(t){t.skins.terrace={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:90,_third_column_width:70}}},function(t,e){t.exports=function(t){t.skins.meadow={config:{grid_width:350,row_height:27,scale_height:30,link_line_width:2,link_arrow_size:6,lightbox_additional_height:72},_second_column_width:95,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.skyblue={config:{grid_width:350,row_height:27,scale_height:27,link_line_width:1,link_arrow_size:8,lightbox_additional_height:75},_second_column_width:95,_third_column_width:80}}},function(t,e){function i(t,e){var i=e.skin;if(!i||t)for(var n=document.getElementsByTagName("link"),r=0;rl.width?l.min_width:l.width,l.width=l.max_width&&l.max_width",a=[];for(var o in t.config.constraint_types)a.push({key:t.config.constraint_types[o],label:t.locale.labels[t.config.constraint_types[o]]});return e.options=e.options||a,n+=""+r.getHtmlSelect(e.options,[{key:"data-type",value:"constraint-type"}])+"",n+="",n+=""},a.prototype.set_value=function(e,i,n,r){var a=e.querySelector("[data-constraint-type-select] select"),o=e.querySelectorAll("[data-constraint-time-select] select"),l=r._time_format_order,c=t._resolve_default_mapping(r);a._eventsInitialized||(a.addEventListener("input",function(t){s(o,t.target.value)}),a._eventsInitialized=!0);var u=n[c.constraint_date]||new Date;t.form_blocks._fill_lightbox_select(o,0,u,l,r);var d=n[c.constraint_type]||t.getConstraintType(n);a.value=d,s(o,d)},a.prototype.get_value=function(e,i,n){var r=e.querySelector("[data-constraint-type-select] select"),a=e.querySelectorAll("[data-constraint-time-select] select"),s=r.value,l=null;return o(s)||(l=t.form_blocks.getTimePickerValue(a,n)),{constraint_type:s,constraint_date:l}},a.prototype.focus=function(e){t._focus(e.querySelector("select"))},a}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(8)(t);function r(){return e.apply(this,arguments)||this}function a(e,i){var n=[],r=[];i&&(n=t.getTaskByTime(),e.allow_root&&n.unshift({id:t.config.root_id,text:e.root_label||""}),n=function(e,i,n){var r=i.filter||function(){return!0};e=e.slice(0);for(var a=0;a",n=t.locale.labels[t.config.duration_unit+"s"],r=e.single_date?" style='display:none'":"",a=e.readonly?" disabled='disabled'":"",o="
"+n+"
";return"
"+i+" "+o+"
"},r.prototype.set_value=function(e,i,n,r){var s,l,c,u,d=r,h=e.getElementsByTagName("select"),f=e.getElementsByTagName("input"),_=f[1],g=[f[0],f[2]],p=e.getElementsByTagName("span")[0],v=r._time_format_order;function m(){var i=a.call(t,e,r),s=o.call(t,e,r),l=t.calculateEndDate({start_date:i,duration:s,task:n});p.innerHTML=t.templates.task_date(l)}function y(t){var e=_.value;e=parseInt(e,10),window.isNaN(e)&&(e=0),(e+=t)<1&&(e=1),_.value=e,m()}g[0].onclick=t.bind(function(){y(-1*t.config.duration_step)},this),g[1].onclick=t.bind(function(){y(1*t.config.duration_step)},this),h[0].onchange=m,h[1].onchange=m,h[2].onchange=m,h[3]&&(h[3].onchange=m),_.onkeydown=t.bind(function(e){var i;return(i=(e=e||window.event).charCode||e.keyCode||e.which)==t.constants.KEY_CODES.DOWN?(y(-1*t.config.duration_step),!1):i==t.constants.KEY_CODES.UP?(y(1*t.config.duration_step),!1):void window.setTimeout(m,1)},this),_.onchange=t.bind(m,this),"string"==typeof(s=t._resolve_default_mapping(r))&&(s={start_date:s}),l=n[s.start_date]||new Date,c=n[s.end_date]||t.calculateEndDate({start_date:l,duration:1,task:n}),u=Math.round(n[s.duration])||t.calculateDuration({start_date:l,end_date:c,task:n}),t.form_blocks._fill_lightbox_select(h,0,l,v,d),_.value=u,m()},r.prototype.get_value=function(e,i,n){var r=a(e,n),s=o(e),l=t.calculateEndDate({start_date:r,duration:s,task:i});return"string"==typeof t._resolve_default_mapping(n)?r:{start_date:r,end_date:l,duration:s}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){var e="
";if(t.options&&t.options.length)for(var i=0;i"+t.options[i].label+"";return e+="
"},r.prototype.set_value=function(t,e,i,n){var r;n.options&&n.options.length&&(r=t.querySelector("input[type=radio][value='"+e+"']")||t.querySelector("input[type=radio][value='"+n.default_value+"']"))&&(!t._dhx_onchange&&n.onchange&&(t.onchange=n.onchange,t._dhx_onchange=!0),r.checked=!0)},r.prototype.get_value=function(t,e){var i=t.querySelector("input[type=radio]:checked");return i?i.value:""},r.prototype.focus=function(e){t._focus(e.querySelector("input[type=radio]"))},r}},function(t,e,i){var n=i(3),r=i(2);t.exports=function(t){var e=i(5)(t);function a(){return e.apply(this,arguments)||this}return r(a,e),a.prototype.render=function(t){var e="
";if(t.options&&t.options.length)for(var i=0;i"+t.options[i].label+"";return e+="
"},a.prototype.set_value=function(t,e,i,r){var a=Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]"));!t._dhx_onchange&&r.onchange&&(t.onchange=r.onchange,t._dhx_onchange=!0),n.forEach(a,function(t){t.checked=!!e&&e.indexOf(t.value)>=0})},a.prototype.get_value=function(t){return n.arrayMap(Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]:checked")),function(t){return t.value})},a.prototype.focus=function(e){t._focus(e.querySelector("input[type=checkbox]"))},a}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(e){var i=t.form_blocks.getTimePicker.call(this,e),n="
";return n+=i,e.single_date?(i=t.form_blocks.getTimePicker.call(this,e,!0),n+=""):n+="  –  ",n+=i,n+="
"},r.prototype.set_value=function(e,i,n,r){var a=r,o=e.getElementsByTagName("select"),s=r._time_format_order;if(a.auto_end_date)for(var l=function(){d=new Date(o[s[2]].value,o[s[1]].value,o[s[0]].value,0,0),h=t.calculateEndDate({start_date:d,duration:1,task:n}),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},c=0;c<4;c++)o[c].onchange=l;var u=t._resolve_default_mapping(r);"string"==typeof u&&(u={start_date:u});var d=n[u.start_date]||new Date,h=n[u.end_date]||t.calculateEndDate({start_date:d,duration:1,task:n});t.form_blocks._fill_lightbox_select(o,0,d,s,a),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},r.prototype.get_value=function(e,i,n){var r,a=e.getElementsByTagName("select"),o=n._time_format_order;return r=t.form_blocks.getTimePickerValue(a,n),"string"==typeof t._resolve_default_mapping(n)?r:{start_date:r,end_date:function(e,i,r){var a=t.form_blocks.getTimePickerValue(e,n,i.size);return a<=r?t.date.add(r,t._get_timepicker_step(),"minute"):a}(a,o,r)}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){return"
"},r.prototype.set_value=function(e,i){t.form_blocks.textarea._get_input(e).value=i||""},r.prototype.get_value=function(e){return t.form_blocks.textarea._get_input(e).value},r.prototype.focus=function(e){var i=t.form_blocks.textarea._get_input(e);t._focus(i,!0)},r.prototype._get_input=function(t){return t.querySelector("textarea")},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){return"
"},r.prototype.set_value=function(t,e){t.innerHTML=e||""},r.prototype.get_value=function(t){return t.innerHTML||""},r.prototype.focus=function(){},r}},function(t,e,i){t.exports=function(t){var e=i(1),n=i(3),r=i(53)(t),a=i(52)(t),o=i(51)(t),s=i(8)(t),l=i(50)(t),c=i(49)(t),u=i(48)(t),d=i(47)(t),h=i(8)(t),f=i(46)(t);function _(e,i){var n,r,a="";for(r=0;r
"+t.locale.labels[n]+"
";return a}function g(e,i,n){var r,a,o,s,l,c,u="";switch(n.timeFormat[i]){case"%Y":for(e._time_format_order[2]=i,e._time_format_order.size++,e.year_range&&(isNaN(e.year_range)?e.year_range.push&&(o=e.year_range[0],s=e.year_range[1]):r=e.year_range),r=r||10,a=a||Math.floor(r/2),o=o||n.date.getFullYear()-a,s=s||o+r,l=o;l"+l+"";break;case"%m":for(e._time_format_order[1]=i,e._time_format_order.size++,l=0;l<12;l++)u+="";break;case"%d":for(e._time_format_order[0]=i,e._time_format_order.size++,l=1;l<32;l++)u+="";break;case"%H:%i":for(e._time_format_order[3]=i,e._time_format_order.size++,l=n.first,c=n.date.getDate(),e._time_values=[];l"+t.templates.time_picker(n.date)+"",e._time_values.push(l),n.date.setTime(n.date.valueOf()+60*t._get_timepicker_step()*1e3),l=24*(n.date.getDate()!=c?1:0)*60+60*n.date.getHours()+n.date.getMinutes()}return u}t._lightbox_methods={},t._lightbox_template="
 
",t.$services.getService("state").registerProvider("lightbox",function(){return{lightbox:t._lightbox_id}}),t.showLightbox=function(e){if(e&&!t.isReadonly(this.getTask(e))&&this.callEvent("onBeforeLightbox",[e])){var i=this.getTask(e),n=this.getLightbox(this.getTaskType(i.type));this._center_lightbox(n),this.showCover(),this._fill_lightbox(e,n),this._waiAria.lightboxVisibleAttr(n),this.callEvent("onLightbox",[e])}},t._get_timepicker_step=function(){if(this.config.round_dnd_dates){var e;if(function(t){var e=t.$ui.getView("timeline");return!(!e||!e.isVisible())}(this)){var i=t.getScale();e=n.getSecondsInUnit(i.unit)*i.step/60}return(!e||e>=1440)&&(e=this.config.time_step),e}return this.config.time_step},t.getLabel=function(t,e){for(var i=this._get_typed_lightbox_config(),n=0;n
"+this.locale.labels["button_"+t[i].button]+"
"),this.config.wide_form&&(e+="
"),e+="
"+n.render.call(this,t[i]),e+="
"}}return e},t.resizeLightbox=function(){if(this._lightbox){var t=this._lightbox.childNodes[1];t.style.height="0px",t.style.height=t.scrollHeight+"px",this._lightbox.style.height=t.scrollHeight+this.config.lightbox_additional_height+"px",t.style.height=t.scrollHeight+"px"}},t._center_lightbox=function(t){if(t){t.style.display="block";var e=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,i=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft,n=window.innerHeight||document.documentElement.clientHeight;t.style.top=e?Math.round(e+Math.max((n-t.offsetHeight)/2,0))+"px":Math.round(Math.max((n-t.offsetHeight)/2,0)+9)+"px",document.documentElement.scrollWidth>document.body.offsetWidth?t.style.left=Math.round(i+(document.body.offsetWidth-t.offsetWidth)/2)+"px":t.style.left=Math.round((document.body.offsetWidth-t.offsetWidth)/2)+"px"}},t.showCover=function(){if(!this._cover){this._cover=document.createElement("DIV"),this._cover.className="gantt_cal_cover";var t=void 0!==document.height?document.height:document.body.offsetHeight,e=document.documentElement?document.documentElement.scrollHeight:0;this._cover.style.height=Math.max(t,e)+"px",document.body.appendChild(this._cover)}},t._init_lightbox_events=function(){t.lightbox_events={},t.lightbox_events.gantt_save_btn=function(){t._save_lightbox()},t.lightbox_events.gantt_delete_btn=function(){t.callEvent("onLightboxDelete",[t._lightbox_id])&&(t.isTaskExists(t._lightbox_id)?t.$click.buttons.delete(t._lightbox_id):t.hideLightbox())},t.lightbox_events.gantt_cancel_btn=function(){t._cancel_lightbox()},t.lightbox_events.default=function(i,n){if(n.getAttribute("data-dhx-button"))t.callEvent("onLightboxButton",[n.className,n,i]);else{var r,a,o=e.getClassName(n);if(-1!=o.indexOf("gantt_custom_button"))if(-1!=o.indexOf("gantt_custom_button_"))for(r=n.parentNode.getAttribute("data-index"),a=n;a&&-1==e.getClassName(a).indexOf("gantt_cal_lsection");)a=a.parentNode;else r=n.getAttribute("data-index"),a=n.parentNode,n=n.firstChild;var s=t._get_typed_lightbox_config();r&&(r*=1,t.form_blocks[s[1*r].type].button_click(r,n,a,a.nextSibling))}},this.event(t.getLightbox(),"click",function(i){var n=(i=i||window.event).target?i.target:i.srcElement,r=e.getClassName(n);return r||(n=n.previousSibling,r=e.getClassName(n)),n&&r&&0===r.indexOf("gantt_btn_set")&&(n=n.firstChild,r=e.getClassName(n)),!(!n||!r)&&(t.defined(t.lightbox_events[n.className])?t.lightbox_events[n.className]:t.lightbox_events.default)(i,n)}),t.getLightbox().onkeydown=function(i){var n=i||window.event,r=i.target||i.srcElement,a=e.getClassName(r).indexOf("gantt_btn_set")>-1;switch((i||n).keyCode){case t.constants.KEY_CODES.SPACE:if((i||n).shiftKey)return;a&&r.click&&r.click();break;case t.keys.edit_save:if((i||n).shiftKey)return;a&&r.click?r.click():t._save_lightbox();break;case t.keys.edit_cancel:t._cancel_lightbox()}}},t._cancel_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxCancel",[this._lightbox_id,e.$new]),t.isTaskExists(e.id)&&e.$new&&this.silent(function(){t.$data.tasksStore.removeItem(e.id),t._update_flags(e.id,null)}),this.refreshData(),this.hideLightbox()},t._save_lightbox=function(){var t=this.getLightboxValues();this.callEvent("onLightboxSave",[this._lightbox_id,t,!!t.$new])&&(t.$new?(delete t.$new,this.addTask(t)):this.isTaskExists(t.id)&&(this.mixin(this.getTask(t.id),t,!0),this.refreshTask(t.id),this.updateTask(t.id)),this.refreshData(),this.hideLightbox())},t._resolve_default_mapping=function(t){var e=t.map_to;return!{time:!0,time_optional:!0,duration:!0,duration_optional:!0}[t.type]?"constraint"===t.type&&(t.map_to&&"string"!=typeof t.map_to||(e={constraint_type:"constraint_type",constraint_date:"constraint_date"})):"auto"==t.map_to?e={start_date:"start_date",end_date:"end_date",duration:"duration"}:"string"==typeof t.map_to&&(e={start_date:t.map_to}),e},t.getLightboxValues=function(){var e={};t.isTaskExists(this._lightbox_id)&&(e=this.mixin({},this.getTask(this._lightbox_id)));for(var i=this._get_typed_lightbox_config(),n=0;n0&&(s+=" "),(a=g(e,r,c))&&(o=t._waiAria.lightboxSelectAttrString(c.timeFormat[r]),s+="");return s},getTimePickerValue:function(e,i,n){var r,a=i._time_format_order,o=t.defined(a[3]),s=0,l=0,c=n||0;return o&&(r=parseInt(e[a[3]+c].value,10),s=Math.floor(r/60),l=r%60),new Date(e[a[2]+c].value,e[a[1]+c].value,e[a[0]+c].value,s,l)},_fill_lightbox_select:function(e,i,n,r){if(e[i+r[0]].value=n.getDate(),e[i+r[1]].value=n.getMonth(),e[i+r[2]].value=n.getFullYear(),t.defined(r[3])){var a=60*n.getHours()+n.getMinutes();a=Math.round(a/t._get_timepicker_step())*t._get_timepicker_step();var o=e[i+r[3]];o.value=a,o.setAttribute("data-value",a)}},template:new r,textarea:new a,select:new s,time:new o,duration:new u,parent:new d,radio:new c,checkbox:new l,resources:new h,constraint:new f},t._is_lightbox_timepicker=function(){for(var t=this._get_typed_lightbox_config(),e=0;etask="+e+" of gantt.isUnscheduledTask. Task object was expected"),!!e.unscheduled||!e.start_date},t._isAllowedUnscheduledTask=function(e){return!(!e.unscheduled||!t.config.show_unscheduled)},t.isTaskVisible=function(e){if(!this.isTaskExists(e))return!1;var i=this.getTask(e),n=i.start_date?i.start_date.valueOf():null,r=i.end_date?i.end_date.valueOf():null;return!!(t._isAllowedUnscheduledTask(i)||n&&r&&n<=this._max_date.valueOf()&&r>=this._min_date.valueOf())&&!!(t.getGlobalTaskIndex(e)>=0)},t._getProjectEnd=function(){if(t.config.project_end)return t.config.project_end;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.end_date>+e.end_date?1:-1})).length?e[e.length-1].end_date:null},t._getProjectStart=function(){if(t.config.project_start)return t.config.project_start;if(t.config.start_date)return t.config.start_date;if(t.getState().min_date)return t.getState().min_date;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.start_date>+e.start_date?1:-1})).length?e[0].start_date:null},t._defaultTaskDate=function(e,i){var n=!(!i||i==t.config.root_id)&&t.getTask(i),r=null;if(n)r=t.config.schedule_from_end?t.calculateEndDate({start_date:n.end_date,duration:-t.config.duration_step,task:e}):n.start_date;else if(t.config.schedule_from_end)r=t.calculateEndDate({start_date:t._getProjectEnd(),duration:-t.config.duration_step,task:e});else{var a=t.getTaskByIndex(0);r=a?a.start_date?a.start_date:a.end_date?t.calculateEndDate({start_date:a.end_date,duration:-t.config.duration_step,task:e}):null:t.config.start_date||t.getState().min_date}return t.assert(r,"Invalid dates"),new Date(r)},t._set_default_task_timing=function(e){e.start_date=e.start_date||t._defaultTaskDate(e,t.getParent(e)),e.duration=e.duration||t.config.duration_step,e.end_date=e.end_date||t.calculateEndDate(e)},t.createTask=function(e,i,n){(e=e||{},t.defined(e.id)||(e.id=t.uid()),e.start_date||(e.start_date=t._defaultTaskDate(e,i)),void 0===e.text&&(e.text=t.locale.labels.new_task),void 0===e.duration&&(e.duration=1),this.isTaskExists(i))&&(this.setParent(e,i,!0),this.getTask(i).$open=!0);return this.callEvent("onTaskCreated",[e])?(this.config.details_on_create?(e.$new=!0,this.silent(function(){t.$data.tasksStore.addItem(e,n)}),this.selectTask(e.id),this.refreshData(),this.showLightbox(e.id)):this.addTask(e,i,n)&&(this.showTask(e.id),this.selectTask(e.id)),e.id):null},t._update_flags=function(e,i){var n=t.$data.tasksStore;void 0===e?(this._lightbox_id=null,n.silent(function(){n.unselect()}),this._tasks_dnd&&this._tasks_dnd.drag&&(this._tasks_dnd.drag.id=null)):(this._lightbox_id==e&&(this._lightbox_id=i),n.getSelectedId()==e&&n.silent(function(){n.unselect(e),n.select(i)}),this._tasks_dnd&&this._tasks_dnd.drag&&this._tasks_dnd.drag.id==e&&(this._tasks_dnd.drag.id=i))},t._get_task_timing_mode=function(t,e){var i=this.getTaskType(t.type),n={type:i,$no_start:!1,$no_end:!1};return e||i!=t.$rendered_type?(i==this.config.types.project?n.$no_end=n.$no_start=!0:i!=this.config.types.milestone&&(n.$no_end=!(t.end_date||t.duration),n.$no_start=!t.start_date,this._isAllowedUnscheduledTask(t)&&(n.$no_end=n.$no_start=!1)),n):(n.$no_start=t.$no_start,n.$no_end=t.$no_end,n)},t._init_task_timing=function(e){var i=t._get_task_timing_mode(e,!0),n=e.$rendered_type!=i.type,r=i.type;n&&(e.$no_start=i.$no_start,e.$no_end=i.$no_end,e.$rendered_type=i.type),n&&r!=this.config.types.milestone&&r==this.config.types.project&&this._set_default_task_timing(e),r==this.config.types.milestone&&(e.end_date=e.start_date),e.start_date&&e.end_date&&(e.duration=this.calculateDuration(e)),e.end_date||(e.end_date=e.start_date),e.duration=e.duration||0},t.isSummaryTask=function(e){t.assert(e&&e instanceof Object,"Invalid argument task="+e+" of gantt.isSummaryTask. Task object was expected");var i=t._get_task_timing_mode(e);return!(!i.$no_end&&!i.$no_start)},t.resetProjectDates=function(t){var e=this._get_task_timing_mode(t);if(e.$no_end||e.$no_start){var i=this.getSubtaskDates(t.id);this._assign_project_dates(t,i.start_date,i.end_date)}},t.getSubtaskDuration=function(e){var i=0,n=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(i+=e.duration)},n),i},t.getSubtaskDates=function(e){var i=null,n=null,r=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(e.start_date&&!e.$no_start&&(!i||i>e.start_date.valueOf())&&(i=e.start_date.valueOf()),e.end_date&&!e.$no_end&&(!n||n=+i.min_date&&+s<=+i.max_date)o=Math.floor(t.columnIndexByDate(s)),i.trace_x[o]||(o-=1,i.rtl&&(o=0)),a=new Date(i.trace_x[o]),r=t.date.add(a,l,c);else{for(o=Math.floor(t.columnIndexByDate(s)),r=t.date[c+"_start"](new Date(i.min_date)),i.trace_x[o]&&(r=t.date[c+"_start"](i.trace_x[o]));+r<+s;){var u=(r=t.date[c+"_start"](t.date.add(r,l,c))).getTimezoneOffset();r=t._correct_dst_change(r,u,r,c),t.date[c+"_start"]&&(r=t.date[c+"_start"](r))}a=t.date.add(r,-1*l,c)}return e.dir&&"future"==e.dir?r:e.dir&&"past"==e.dir?a:Math.abs(s-a)0},_is_work_hour:function(t){for(var e=this._getWorkHours(t),i=t.getHours(),n=0;n=e[n]&&io.valueOf(),this._isWorkTime(a,i)&&((d||h&&f)&&(s=r[i+"_start"](new Date(a)),l=r.add(s,n,i)),d?(d=!1,u=this._nextDate(s,i,n),c+=(l.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):h&&f?(h=!1,c+=(o.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):c++),a=u;return c},_getMinutesPerDay:function(t){return 60*this._getHoursPerDay(t)},_getHoursPerDay:function(t){for(var e=this._getWorkHours(t),i=0,n=0;n=0?1:-1;return i=Math.abs(1*i),this._calculateEndDate(e,i,n,r*a)},_calculateEndDate:function(t,e,i,n){return!!i&&(1==n&&"minute"==i?this._calculateMinuteEndDate(t,e,n):1==n&&"hour"==i?this._calculateHourEndDate(t,e,n):this._addInterval(t,e,i,n,null).end)},_addInterval:function(t,e,i,n,r){for(var a=0,o=t;a0?new Date(s.valueOf()-1):new Date(s.valueOf()+1),i)&&a++,o=s}return{end:o,satrt:t,added:a}},_calculateHourEndDate:function(t,e,i){var n=new Date(t),r=0;i=i||1,e=Math.abs(1*e);var a=this._addInterval(n,e,"hour",i,function(t){return!(t.getHours()||t.getMinutes()||t.getSeconds()||t.getMilliseconds())});if(r=a.added,n=a.end,(c=e-r)&&c>24){for(var o=n;r0?new Date(s.valueOf()-1):new Date(s.valueOf()+1),"day")){var l=this._getHoursPerDay(o);if(r+l>=e)break;r+=l}o=s}n=o}if(r0?1:-1),r+=60*s)}if(r3e3)return this.$gantt.assert(!1,"Invalid working time check"),!1;var s=a.getTimezoneOffset();a=this.$gantt.date.add(a,i,e),a=this.$gantt._correct_dst_change(a,s,i,e),this.$gantt.date[e+"_start"]&&(a=this.$gantt.date[e+"_start"](a))}return a}},t.exports=a},function(t,e,i){var n=i(0),r=i(18),a=i(62);function o(t){this.$gantt=t,this._calendars={}}o.prototype={_calendars:{},_getDayHoursForMultiple:function(t,e){for(var i=[],n=!0,r=0,a=this.$gantt.date.day_start(new Date(e)),o=0;o<24;o++)t.reduce(function(t,e){return t&&e._is_work_hour(a)},!0)?(n?(i[r]=o,i[r+1]=o+1,r+=2):i[r-1]+=1,n=!1):n||(n=!0),a=this.$gantt.date.add(a,1,"hour");return i.length||(i=!1),i},mergeCalendars:function(){var t,e=this.createCalendar(),i=[],n=Array.prototype.slice.call(arguments,0);e.worktime.hours=[0,24],e.worktime.dates={};var r=this.$gantt.date.day_start(new Date(2592e5));for(t=0;t<7;t++)i=this._getDayHoursForMultiple(n,r),e.worktime.dates[t]=i,r=this.$gantt.date.add(r,1,"day");for(var a=0;a1e4&&(i=this._getDayHoursForMultiple(n,new Date(+o)),e.worktime.dates[o]=i);return e},_convertWorktimeSettings:function(t){var e=t.days;if(e){t.dates=t.dates||{};for(var i=0;i=3?(r=i,a=n):"string"==typeof arguments[1]?r=arguments[1]:"function"==typeof arguments[1]&&(a=arguments[1]),this._load_type=r,this.callEvent("onLoadStart",[e,r]),this.ajax.get(e,t.bind(function(t){this.on_load(t,r),this.callEvent("onLoadEnd",[e,r]),"function"==typeof a&&a.call(this)},this))},t.parse=function(t,e){this.on_load({xmlDoc:{responseText:t}},e)},t.serialize=function(t){return this[t=t||"json"].serialize()},t.on_load=function(t,e){this.callEvent("onBeforeParse",[]),e||(e="json"),this.assert(this[e],"Invalid data type:'"+e+"'");var i=t.xmlDoc.responseText,n=this[e].parse(i,t);this._process_loading(n)},t._process_loading=function(t){t.collections&&this._load_collections(t.collections),this.$data.tasksStore.parse(t.data);var e=t.links||(t.collections?t.collections.links:[]);if(this.$data.linksStore.parse(e),this.callEvent("onParse",[]),this.render(),this.config.initial_scroll){var i=this.getTaskByIndex(0),n=i?i.id:this.config.root_id;this.isTaskExists(n)&&this.showTask(n)}},t._load_collections=function(t){var e=!1;for(var i in t)if(t.hasOwnProperty(i)){e=!0;var n=t[i],r=this.serverList[i];if(!r)continue;r.splice(0,r.length);for(var a=0;a"},_copyObject:function(t){return""},serialize:function(){for(var e=[],i=[],n=t.json.serialize(),r=0,a=n.data.length;r"+e.join("")+""+i.join("")+""}},t.oldxml={parse:function(e,i){i=t.xml._getXML(e,i,"projects");for(var n={collections:{links:[]}},r=n.data=[],a=t.ajax.xpath("//task",i),o=0;o","gm"),i=new RegExp(" +","gm");function n(t){return(t+"").replace(e," ").replace(i," ")}var r=new RegExp("'","gm");function a(t){return(t+"").replace(r,"'")}for(var o in t._waiAria={getAttributeString:function(t){var e=[" "];for(var i in t){var r=a(n(t[i]));e.push(i+"='"+r+"'")}return e.push(" "),e.join(" ")},getTimelineCellAttr:function(e){return t._waiAria.getAttributeString({"aria-label":e})},_taskCommonAttr:function(e,i){e.start_date&&e.end_date&&(i.setAttribute("aria-label",n(t.templates.tooltip_text(e.start_date,e.end_date,e))),t.isReadonly(e)&&i.setAttribute("aria-readonly",!0),e.$dataprocessor_class&&i.setAttribute("aria-busy",!0),i.setAttribute("aria-selected",t.getState().selected_task==e.id||t.isSelectedTask&&t.isSelectedTask(e.id)?"true":"false"))},setTaskBarAttr:function(e,i){this._taskCommonAttr(e,i),!t.isReadonly(e)&&t.config.drag_move&&(e.id!=t.getState().drag_id?i.setAttribute("aria-grabbed",!1):i.setAttribute("aria-grabbed",!0))},taskRowAttr:function(e,i){this._taskCommonAttr(e,i),!t.isReadonly(e)&&t.config.order_branch&&i.setAttribute("aria-grabbed",!1),i.setAttribute("role","row"),i.setAttribute("aria-level",e.$level),t.hasChild(e.id)&&i.setAttribute("aria-expanded",e.$open?"true":"false")},linkAttr:function(e,i){var r=t.config.links,a=e.type==r.finish_to_start||e.type==r.start_to_start,o=e.type==r.start_to_start||e.type==r.start_to_finish,s=t.locale.labels.link+" "+t.templates.drag_link(e.source,o,e.target,a);i.setAttribute("aria-label",n(s)),t.isReadonly(e)&&i.setAttribute("aria-readonly",!0)},gridSeparatorAttr:function(t){t.setAttribute("role","separator")},lightboxHiddenAttr:function(t){t.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},lightboxAttr:function(t){t.setAttribute("role","dialog"),t.setAttribute("aria-hidden","true"),t.firstChild.setAttribute("role","heading")},lightboxButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels[e],tabindex:"0"})},lightboxHeader:function(t,e){t.setAttribute("aria-label",e)},lightboxSelectAttrString:function(e){var i="";switch(e){case"%Y":i=t.locale.labels.years;break;case"%m":i=t.locale.labels.months;break;case"%d":i=t.locale.labels.days;break;case"%H:%i":i=t.locale.labels.hours+t.locale.labels.minutes}return t._waiAria.getAttributeString({"aria-label":i})},lightboxDurationInputAttrString:function(e){return this.getAttributeString({"aria-label":t.locale.labels.column_duration,"aria-valuemin":"0"})},gridAttrString:function(){return[" role='treegrid'",t.config.multiselect?"aria-multiselectable='true'":"aria-multiselectable='false'"," "].join(" ")},gridScaleRowAttrString:function(){return"role='row'"},gridScaleCellAttrString:function(e,i){var n="";if("add"==e.name)n=this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task});else{var r={role:"columnheader","aria-label":i};t._sort&&t._sort.name==e.name&&("asc"==t._sort.direction?r["aria-sort"]="ascending":r["aria-sort"]="descending"),n=this.getAttributeString(r)}return n},gridDataAttrString:function(){return"role='rowgroup'"},gridCellAttrString:function(t,e){return this.getAttributeString({role:"gridcell","aria-label":e})},gridAddButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task})},messageButtonAttrString:function(t){return"tabindex='0' role='button' aria-label='"+t+"'"},messageInfoAttr:function(t){t.setAttribute("role","alert")},messageModalAttr:function(t,e){t.setAttribute("role","dialog"),e&&t.setAttribute("aria-labelledby",e)},quickInfoAttr:function(t){t.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' "},quickInfoHeader:function(t,e){t.setAttribute("aria-label",e)},quickInfoButtonAttrString:function(e){return t._waiAria.getAttributeString({role:"button","aria-label":e,tabindex:"0"})},tooltipAttr:function(t){t.setAttribute("role","tooltip")},tooltipVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(t){t.setAttribute("aria-hidden","true")}},t._waiAria)t._waiAria[o]=function(e){return function(){return t.config.wai_aria_attributes?e.apply(this,arguments):""}}(t._waiAria[o])}},function(t,e){t.exports=function(t){t.getGridColumn=function(e){for(var i=t.config.columns,n=0;n"+g+""),p&&(g="
"+g),g&&(y.innerHTML=g),c.push(y)}}var b=null;if(c.length){for(b=document.createElement("div"),h=0;h0&&_+g>=v+2&&(l=0),o&&!y?o=0:o<0&&!m?o=0:o>0&&m+y>=b&&(o=0);var k=t.config.autoscroll_step;k&&k<2&&(k=2),o*=k||i,l*=k||i,(o||l)&&function(e,i){var n=t.getScrollState(),r=null,a=null;e&&(r=n.x+e,r=Math.min(n.width,r),r=Math.max(0,r));i&&(a=n.y+i,a=Math.min(n.height,a),a=Math.max(0,a));t.scrollTo(r,a)}(o,l)}function p(t,i,n){return t-e<0&&ti-e&&t>n?1:0}t.attachEvent("onGanttReady",function(){t.eventRemove(document.body,"mousemove",_),t.event(document.body,"mousemove",_)})}},function(t,e,i){t.exports=function(t){for(var e=[i(77),i(76),i(75),i(74),i(73),i(72),i(71),i(70)],n=0;n-1?t.indexOf("?"):t.length),this.serverProcessor=t+("/"===t.slice(-1)?"":"/")+i}else{var n=this._ganttMode+"s";this.serverProcessor=t+e.ajax.urlSeparator(t)+"gantt_mode="+n}return!0}),t.attachEvent("insertCallback",function(t,i,n,r){var a=t.data||e.xml._xmlNodeToJSON(t.firstChild),o={add:e.addTask,isExist:e.isTaskExists};"links"===r&&(o.add=e.addLink,o.isExist=e.isLinkExists),o.isExist.call(e,i)||(a.id=i,o.add.call(e,a))}),t.attachEvent("updateCallback",function(t,i){var n=t.data||e.xml._xmlNodeToJSON(t.firstChild);if(e.isTaskExists(i)){var r=e.getTask(i);for(var a in n){var o=n[a];switch(a){case"id":continue;case"start_date":case"end_date":o=e.templates.xml_date(o);break;case"duration":r.end_date=e.calculateEndDate({start_date:r.start_date,duration:o,task:r})}r[a]=o}e.updateTask(i),e.refreshData()}}),t.attachEvent("deleteCallback",function(t,i,n,r){var a={delete:e.deleteTask,isExist:e.isTaskExists};"links"===r&&(a.delete=e.deleteLink,a.isExist=e.isLinkExists),a.isExist.call(e,i)&&a.delete.call(e,i)})},t.prototype.detach=function(){var t=this;n.forEach(this._dataProcessorHandlers,function(e){t.$gantt.detachEvent(e)}),this._dataProcessorHandlers=[]},t}();e.default=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(4),r=i(3),a=i(0),o=i(80),s=i(79);e.createDataProcessor=function(t){var e,i;t instanceof Function?e=t:t.hasOwnProperty("router")?e=t.router:t.hasOwnProperty("link")&&t.hasOwnProperty("task")&&(e=t),i=e?"CUSTOM":t.mode||"REST-JSON";var n=new l(t.url);return n.init(this),n.setTransactionMode({mode:i,router:e},t.batchUpdate),n};var l=function(){function t(t){this.serverProcessor=t,this.action_param="!nativeeditor_status",this.object=null,this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._headers=null,this._payload=null,this._postDelim="_",this._waitMode=0,this._in_progress={},this._invalid={},this.mandatoryFields=[],this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),n(this)}return t.prototype.setTransactionMode=function(t,e){"object"==typeof t?(this._tMode=t.mode||this._tMode,a.defined(t.headers)&&(this._headers=t.headers),a.defined(t.payload)&&(this._payload=t.payload)):(this._tMode=t,this._tSend=e),"REST"===this._tMode&&(this._tSend=!1,this._endnm=!0),"JSON"!==this._tMode&&"REST-JSON"!==this._tMode||(this._tSend=!1,this._endnm=!0,this._serializeAsJson=!0,this._headers=this._headers||{},this._headers["Content-type"]="application/json"),"CUSTOM"===this._tMode&&(this._tSend=!1,this._endnm=!0,this._router=t.router)},t.prototype.escape=function(t){return this._utf?encodeURIComponent(t):escape(t)},t.prototype.enableUTFencoding=function(t){this._utf=!!t},t.prototype.setDataColumns=function(t){this._columns="string"==typeof t?t.split(","):t},t.prototype.getSyncState=function(){return!this.updatedRows.length},t.prototype.enableDataNames=function(t){this._endnm=!!t},t.prototype.enablePartialDataSend=function(t){this._changed=!!t},t.prototype.setUpdateMode=function(t,e){this.autoUpdate="cell"===t,this.updateMode=t,this.dnd=e},t.prototype.ignore=function(t,e){this._silent_mode=!0,t.call(e||window),this._silent_mode=!1},t.prototype.setUpdated=function(t,e,i){if(!this._silent_mode){var n=this.findRow(t);i=i||"updated";var r=this.$gantt.getUserData(t,this.action_param);r&&"updated"===i&&(i=r),e?(this.set_invalid(t,!1),this.updatedRows[n]=t,this.$gantt.setUserData(t,this.action_param,i),this._in_progress[t]&&(this._in_progress[t]="wait")):this.is_invalid(t)||(this.updatedRows.splice(n,1),this.$gantt.setUserData(t,this.action_param,"")),this.markRow(t,e,i),e&&this.autoUpdate&&this.sendData(t)}},t.prototype.markRow=function(t,e,i){var n="",r=this.is_invalid(t);if(r&&(n=this.styles[r],e=!0),this.callEvent("onRowMark",[t,e,i,r])&&(n=this.styles[e?i:"clear"]+n,this.$gantt[this._methods[0]](t,n),r&&r.details)){n+=this.styles[r+"_cell"];for(var a=0;aa.indexOf("/task")?"link":"task",this.setGanttMode(r);var o=this.$gantt.ajax;if(window.JSON){var s=void 0;try{s=JSON.parse(e.xmlDoc.responseText)}catch(t){e.xmlDoc.responseText.length||(s={})}if(s){var l=s.action||this.getState(i)||"updated",c=s.sid||i[0],u=s.tid||i[0];return t.afterUpdateCallback(c,u,l,s),t.finalizeUpdate(),void this.setGanttMode(r)}}var d=o.xmltop("data",e.xmlDoc);if(!d)return this.cleanUpdate(i);var h=o.xpath("//data/action",d);if(!h.length)return this.cleanUpdate(i);for(var f=0;f=i.$level)return!1;for(;i&&this.exists(n);){if((i=this.getItem(n))&&i.id==e)return!0;n=this.getParent(i)}return!1},getSiblings:function(t){if(!this.exists(t))return n.$create();var e=this.getParent(t);return this.getChildren(e)},getNextSibling:function(t){for(var e=this.getSiblings(t),i=0,n=e.length;ii[t]?1:-1}:t;if(e){var r=n;n=function(t,e){return r(e,t)}}var a=this.getChildren(i);if(a){for(var o=[],s=a.length-1;s>=0;s--)o[s]=this.getItem(a[s]);o.sort(n);for(s=0;sr||+i.end_date<+n)return!1}return!0}),o.attachEvent("onIdChange",function(e,i){t._update_flags(e,i)}),o.attachEvent("onAfterUpdate",function(e){if(t._update_parents(e),t.getState("batchUpdate").batch_update)return!0;for(var i=o.getItem(e),n=0;nl[1]&&(t.config.grid_width=l[1]),r&&t.config.show_chart)if(a.$config.width=t.config.grid_width-1,i)a.$parent.$config.width=t.config.grid_width,a.$parent.$config.group&&t.$layout._syncCellSizes(a.$parent.$config.group,a.$parent.$config.width);else if(r&&!n.isChildOf(r.$task,e.$view)){if(!a.$config.original_grid_width){var c=t.skins[t.skin];c&&c.config&&c.config.grid_width?a.$config.original_grid_width=c.config.grid_width:a.$config.original_grid_width=0}t.config.grid_width=a.$config.original_grid_width,a.$parent.$config.width=t.config.grid_width}else a.$parent._setContentSize(a.$config.width,a.$config.height),t.$layout._syncCellSizes(a.$parent.$config.group,t.config.grid_width);else r&&n.isChildOf(r.$task,e.$view)&&(a.$config.original_grid_width=t.config.grid_width),i||(a.$parent.$config.width=0)}i=!1}}),this._initScrollStateEvents(e)},_initScrollStateEvents:function(e){t._getVerticalScrollbar=this.getVerticalScrollbar,t._getHorizontalScrollbar=this.getHorizontalScrollbar;var i=this.getVerticalScrollbar(),n=this.getHorizontalScrollbar();i&&i.attachEvent("onScroll",function(e,i,n){var r=t.getScrollState();t.callEvent("onGanttScroll",[r.x,e,r.x,i])}),n&&n.attachEvent("onScroll",function(e,i,n){var r=t.getScrollState();t.callEvent("onGanttScroll",[e,r.y,i,r.y])}),e.attachEvent("onResize",function(){i&&!t.$scroll_ver&&(t.$scroll_ver=i.$scroll_ver),n&&!t.$scroll_hor&&(t.$scroll_hor=n.$scroll_hor)})},_findGridResizer:function(t,e){for(var i,n=t.getCellsByType("resizer"),r=!0,a=0;a"+e.templates.drag_link(i.link_source_id,i.link_from_start,i.link_target_id,i.link_to_start)+"";t.innerHTML=a}function g(){o=s=r=null,a=!0}function p(t,e,i,n){return e>=t?n<=i?1:4:n<=i?2:3}h.attachEvent("onBeforeDragStart",e.bind(function(i,r){var a=r.target||r.srcElement;if(g(),e.getState().drag_id)return!1;if(n.locateClassName(a,"gantt_link_point")){n.locateClassName(a,"task_start_date")&&(s=!0);var l=e.locate(r);o=l;var c=e.getTask(l);if(e.isReadonly(c))return g(),!1;return this._dir_start=f(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),h.attachEvent("onAfterDragStart",e.bind(function(t,i){e.config.touch&&e.refreshData(),_(h.config.marker)},this)),h.attachEvent("onDragMove",e.bind(function(o,s){var c=h.config,u=h.getPosition(s);!function(t,e){t.style.left=e.x+5+"px",t.style.top=e.y+5+"px"}(c.marker,u);var d=!!n.locateClassName(s,"gantt_link_control"),g=r,v=i,m=a,y=e.locate(s),b=!0;if(n.isChildOf(s.target||s.srcElement,e.$root)||(d=!1,y=null),d&&(b=!n.locateClassName(s,"task_end_date"),d=!!y),r=y,i=d,a=b,d){var k=e.getTask(y),w=t.$getConfig(),x=n.locateClassName(s,"gantt_link_control"),$=0;x&&($=Math.floor(x.offsetWidth/2)),this._dir_end=f(k,!!a,$,w)}else this._dir_end=n.getRelativeEventPosition(s,t.$task_data);var T=!(v==d&&g==y&&m==b);return T&&(g&&e.refreshTask(g,!1),y&&e.refreshTask(y,!1)),T&&_(c.marker),function(i,n,r,a){var o=function(){h._direction||(h._direction=document.createElement("div"),t.$task_links.appendChild(h._direction));return h._direction}(),s=l(),c=["gantt_link_direction"];e.templates.link_direction_class&&c.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var u=Math.sqrt(Math.pow(r-i,2)+Math.pow(a-n,2));if(!(u=Math.max(0,u-3)))return;o.className=c.join(" ");var d=(a-n)/(r-i),f=Math.atan(d);2==p(i,r,n,a)?f+=Math.PI:3==p(i,r,n,a)&&(f-=Math.PI);var _=Math.sin(f),g=Math.cos(f),v=Math.round(n),m=Math.round(i),y=["-webkit-transform: rotate("+f+"rad)","-moz-transform: rotate("+f+"rad)","-ms-transform: rotate("+f+"rad)","-o-transform: rotate("+f+"rad)","transform: rotate("+f+"rad)","width:"+Math.round(u)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){y.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(_,g)+'"');var b=Math.abs(Math.round(i-r)),k=Math.abs(Math.round(a-n));switch(p(i,r,n,a)){case 1:v-=k;break;case 2:m-=b,v-=k;break;case 3:m-=b}}y.push("top:"+v+"px"),y.push("left:"+m+"px"),o.style.cssText=y.join(";")}(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),h.attachEvent("onDragEnd",e.bind(function(){var t=l();if(t.link_source_id&&t.link_target_id&&t.link_source_id!=t.link_target_id){var i=e._get_link_type(t.link_from_start,t.link_to_start),n={source:t.link_source_id,target:t.link_target_id,type:i};n.type&&e.isLinkAllowed(n)&&e.addLink(n)}g(),e.config.touch?e.refreshData():(t.link_source_id&&e.refreshTask(t.link_source_id,!1),t.link_target_id&&e.refreshTask(t.link_target_id,!1)),h._direction&&(h._direction.parentNode&&h._direction.parentNode.removeChild(h._direction),h._direction=null)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,i){var n=i(1),r=i(0),a=i(29);t.exports={createTaskDND:function(){var t;return{extend:function(e){e.roundTaskDates=function(e){t.round_task_dates(e)}},init:function(e,i){return t=function(t,e){var i=e.$services;return{drag:null,dragMultiple:{},_events:{before_start:{},before_finish:{},after_finish:{}},_handlers:{},init:function(){this._domEvents=e._createDomEventScope(),this.clear_drag_state();var t=e.config.drag_mode;this.set_actions(),i.getService("state").registerProvider("tasksDnd",r.bind(function(){return{drag_id:this.drag?this.drag.id:void 0,drag_mode:this.drag?this.drag.mode:void 0,drag_from_start:this.drag?this.drag.left:void 0}},this));var n={before_start:"onBeforeTaskDrag",before_finish:"onBeforeTaskChanged",after_finish:"onAfterTaskDrag"};for(var a in this._events)for(var o in t)this._events[a][o]=n[a];this._handlers[t.move]=this._move,this._handlers[t.resize]=this._resize,this._handlers[t.progress]=this._resize_progress},set_actions:function(){var i=t.$task_data;this._domEvents.attach(i,"mousemove",e.bind(function(t){this.on_mouse_move(t||event)},this)),this._domEvents.attach(i,"mousedown",e.bind(function(t){this.on_mouse_down(t||event)},this)),this._domEvents.attach(i,"mouseup",e.bind(function(t){this.on_mouse_up(t||event)},this))},clear_drag_state:function(){this.drag={id:null,mode:null,pos:null,start_x:null,start_y:null,obj:null,left:null},this.dragMultiple={}},_resize:function(i,n,r){var a=t.$getConfig(),o=this._drag_task_coords(i,r);r.left?(i.start_date=e.dateFromPos(o.start+n),i.start_date||(i.start_date=new Date(e.getState().min_date))):(i.end_date=e.dateFromPos(o.end+n),i.end_date||(i.end_date=new Date(e.getState().max_date))),i.end_date-i.start_datec){var u=c-s.end;(u50||this._is_number(r)&&this._is_number(o)&&this._mouse_position_change({x:r,y:o},i)>20)&&this._start_dnd(t)}if(this.drag.mode){if(!a(this,40))return;this._update_on_move(t)}},_update_item_on_move:function(t,i,n,r,a){var o=e.getTask(i),s=e.mixin({},o),l=e.mixin({},o);this._handlers[n].apply(this,[l,t,r]),e.mixin(o,l,!0),e.callEvent("onTaskDrag",[o.id,n,l,s,a]),e.mixin(o,l,!0),e.refreshTask(i)},_update_on_move:function(i){var a=this.drag,o=t.$getConfig();if(a.mode){var s=n.getRelativeEventPosition(i,t.$task_data);if(a.pos&&a.pos.x==s.x)return;a.pos=s;var l=e.dateFromPos(s.x);if(!l||isNaN(l.getTime()))return;var c=s.x-a.start_x,u=e.getTask(a.id);if(this._handlers[a.mode]){if(e.isSummaryTask(u)&&e.config.drag_project&&a.mode==o.drag_mode.move){var d={};d[a.id]=r.copy(a);var h=this._find_max_shift(r.mixin(d,this.dragMultiple),c);for(var f in void 0!==h&&(c=h),this._update_item_on_move(c,a.id,a.mode,a,i),this.dragMultiple){var _=this.dragMultiple[f];this._update_item_on_move(c,_.id,_.mode,_,i)}}else this._update_item_on_move(c,a.id,a.mode,a,i);e._update_parents(a.id)}}},on_mouse_down:function(i,r){if(2!=i.button||void 0===i.button){var a=t.$getConfig(),o=e.locate(i),s=null;if(e.isTaskExists(o)&&(s=e.getTask(o)),!e.isReadonly(s)&&!this.drag.mode){this.clear_drag_state(),r=r||i.target||i.srcElement;var l=n.getClassName(r),c=this._get_drag_mode(l,r);if(!l||!c)return r.parentNode?this.on_mouse_down(i,r.parentNode):void 0;if(c)if(c.mode&&c.mode!=a.drag_mode.ignore&&a["drag_"+c.mode]){if(o=e.locate(r),s=e.copy(e.getTask(o)||{}),e.isReadonly(s))return this.clear_drag_state(),!1;if(e.isSummaryTask(s)&&!a.drag_project&&c.mode!=a.drag_mode.progress)return void this.clear_drag_state();c.id=o;var u=n.getRelativeEventPosition(i,e.$task_data);c.start_x=u.x,c.start_y=u.y,c.obj=s,this.drag.start_drag=c,this.drag.timestamp=Date.now()}else this.clear_drag_state();else if(e.checkEvent("onMouseDown")&&e.callEvent("onMouseDown",[l.split(" ")[0]])&&r.parentNode)return this.on_mouse_down(i,r.parentNode)}}},_fix_dnd_scale_time:function(i,n){var r=t.$getConfig(),a=e.getScale().unit,o=e.getScale().step;function s(i){if(e.config.correct_work_time){var n=t.$getConfig();e.isWorkTime(i.start_date,void 0,i)||(i.start_date=e.calculateEndDate({start_date:i.start_date,duration:-1,unit:n.duration_unit,task:i}))}}r.round_dnd_dates||(a="minute",o=r.time_step),n.mode==r.drag_mode.resize?n.left?(i.start_date=e.roundDate({date:i.start_date,unit:a,step:o}),s(i)):(i.end_date=e.roundDate({date:i.end_date,unit:a,step:o}),function(i){if(e.config.correct_work_time){var n=t.$getConfig();e.isWorkTime(new Date(i.end_date-1),void 0,i)||(i.end_date=e.calculateEndDate({start_date:i.end_date,duration:1,unit:n.duration_unit,task:i}))}}(i)):n.mode==r.drag_mode.move&&(i.start_date=e.roundDate({date:i.start_date,unit:a,step:o}),s(i),i.end_date=e.calculateEndDate(i))},_fix_working_times:function(i,n){var r=t.$getConfig();(n=n||{mode:r.drag_mode.move}).mode==r.drag_mode.resize?n.left?i.start_date=e.getClosestWorkTime({date:i.start_date,dir:"future",task:i}):i.end_date=e.getClosestWorkTime({date:i.end_date,dir:"past",task:i}):n.mode==r.drag_mode.move&&e.correctTaskWorkTime(i)},_finalize_mouse_up:function(t,i,n,r){var a=e.getTask(t);if(i.work_time&&i.correct_work_time&&this._fix_working_times(a,n),this._fix_dnd_scale_time(a,n),this._fireEvent("before_finish",n.mode,[t,n.mode,e.copy(n.obj),r])){var o=t;e._init_task_timing(a),this.clear_drag_state(),e.updateTask(a.id),this._fireEvent("after_finish",n.mode,[o,n.mode,r])}else this.clear_drag_state(),t==n.id&&(n.obj._dhx_changed=!1,e.mixin(a,n.obj,!0)),e.refreshTask(a.id)},on_mouse_up:function(i){var n=this.drag;if(n.mode&&n.id){var r=t.$getConfig(),a=e.getTask(n.id),o=this.dragMultiple;if(e.isSummaryTask(a)&&r.drag_project&&n.mode==r.drag_mode.move)for(var s in o)this._finalize_mouse_up(o[s].id,r,o[s],i);this._finalize_mouse_up(n.id,r,n,i)}this.clear_drag_state()},_get_drag_mode:function(e,i){var n=t.$getConfig().drag_mode,r={mode:null,left:null};switch((e||"").split(" ")[0]){case"gantt_task_line":case"gantt_task_content":r.mode=n.move;break;case"gantt_task_drag":r.mode=n.resize;var a=i.getAttribute("data-bind-property");r.left="start_date"==a;break;case"gantt_task_progress_drag":r.mode=n.progress;break;case"gantt_link_control":case"gantt_link_point":r.mode=n.ignore;break;default:r=null}return r},_start_dnd:function(i){var n=this.drag=this.drag.start_drag;delete n.start_drag;var r=t.$getConfig(),a=n.id;if(r["drag_"+n.mode]&&e.callEvent("onBeforeDrag",[a,n.mode,i])&&this._fireEvent("before_start",n.mode,[a,n.mode,i])){delete n.start_drag;var o=e.getTask(a);e.isSummaryTask(o)&&e.config.drag_project&&n.mode==r.drag_mode.move&&e.eachTask(function(t){this.dragMultiple[t.id]=e.mixin({id:t.id,obj:t},this.drag)},o.id,this),e.callEvent("onTaskDragStart",[])}else this.clear_drag_state()},_fireEvent:function(t,i,n){e.assert(this._events[t],"Invalid stage:{"+t+"}");var r=this._events[t][i];return e.assert(r,"Unknown after drop mode:{"+i+"}"),e.assert(n,"Invalid event arguments"),!e.checkEvent(r)||e.callEvent(r,n)},round_task_dates:function(e){var i=this.drag,n=t.$getConfig();i||(i={mode:n.drag_mode.move}),this._fix_dnd_scale_time(e,i)},destructor:function(){this._domEvents.detachAll()}}}(e,i),e._tasks_dnd=t,t.init(i)},destructor:function(){t&&(t.destructor(),t=null)}}}}},function(t,e,i){var n=i(0),r=i(94),a=i(93),o=i(1),s=function(t){var e=t.$services;return{onCreated:function(e){var o=e.$config;o.bind=n.defined(o.bind)?o.bind:"task",o.bindLinks=n.defined(o.bindLinks)?o.bindLinks:"link",e._linksDnD=a.createLinkDND(),e._tasksDnD=r.createTaskDND(),e._tasksDnD.extend(e),this._mouseDelegates=i(10)(t)},onInitialized:function(e){this._attachDomEvents(t),this._attachStateProvider(t,e),e._tasksDnD.init(e,t),e._linksDnD.init(e,t),"timeline"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){this._clearDomEvents(t),this._clearStateProvider(t),e._tasksDnD&&e._tasksDnD.destructor()},extendDom:function(e){t.$task=e.$task,t.$task_scale=e.$task_scale,t.$task_data=e.$task_data,t.$task_bg=e.$task_bg,t.$task_links=e.$task_links,t.$task_bars=e.$task_bars},_clearDomEvents:function(){this._mouseDelegates.destructor(),this._mouseDelegates=null},_attachDomEvents:function(t){function e(e,i){if(e&&this.callEvent("onLinkDblClick",[e,i])){var n=this.getLink(e);if(this.isReadonly(n))return;var r=this.locale.labels.link+" "+this.templates.link_description(this.getLink(e))+" "+this.locale.labels.confirm_link_deleting;window.setTimeout(function(){t._dhtmlx_confirm(r,"",function(){t.deleteLink(e)})},this.config.touch?300:1)}}this._mouseDelegates.delegate("click","gantt_task_link",t.bind(function(t,e){var i=this.locate(t,this.config.link_attribute);i&&this.callEvent("onLinkClick",[i,t])},t),this.$task),this._mouseDelegates.delegate("click","gantt_scale_cell",t.bind(function(e,i){var n=o.getRelativeEventPosition(e,t.$task_data),r=t.dateFromPos(n.x),a=Math.floor(t.columnIndexByDate(r)),s=t.getScale().trace_x[a];t.callEvent("onScaleClick",[e,s])},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_task_link",t.bind(function(i,n,r){n=this.locate(i,t.config.link_attribute),e.call(this,n,i)},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_link_point",t.bind(function(t,i,n){i=this.locate(t);var r=this.getTask(i),a=null;return n.parentNode&&o.getClassName(n.parentNode)&&(a=o.getClassName(n.parentNode).indexOf("_left")>-1?r.$target[0]:r.$source[0]),a&&e.call(this,a,t),!1},t),this.$task)},_attachStateProvider:function(t,i){var n=i;e.getService("state").registerProvider("tasksTimeline",function(){return{scale_unit:n._tasks?n._tasks.unit:void 0,scale_step:n._tasks?n._tasks.step:void 0}})},_clearStateProvider:function(){e.getService("state").unregisterProvider("tasksTimeline")}}};t.exports=s},function(t,e,i){var n=i(1);function r(t,e){var i=n.getNodePosition(e.$grid_data);return t.x+=i.x-e.$grid.scrollLeft,t.y+=i.y-e.$grid_data.scrollTop,t}t.exports={removeLineHighlight:function(t){t.markerLine&&t.markerLine.parentNode&&t.markerLine.parentNode.removeChild(t.markerLine),t.markerLine=null},highlightPosition:function(t,e,i){var a=function(t,e){var i=n.getNodePosition(e.$grid_data),r=n.getRelativeEventPosition(t,e.$grid_data),a=e.$config.rowStore,o=i.x,s=r.y-10,l=e.$getConfig();si.y+c-l.row_height&&(s=i.y+c-l.row_height),i.x=o,i.y=s,i}(t,i);e.marker.style.left=a.x+9+"px",e.marker.style.top=a.y+"px";var o=e.markerLine;o||((o=document.createElement("div")).className="gantt_drag_marker gantt_grid_dnd_marker",o.innerHTML="
",o.style.pointerEvents="none",document.body.appendChild(o),e.markerLine=o),t.child?function(t,e,i){var n=t.targetParent,a=r({x:0,y:i.getItemTop(n)},i);e.innerHTML="
",e.style.width=i.$grid_data.offsetWidth+"px",e.style.top=a.y+"px",e.style.left=a.x+"px",e.style.height=i.getItemHeight(n)+"px"}(t,o,i):function(t,e,i){var n=function(t,e){var i=e.$config.rowStore,n={x:0,y:0},a=e.$grid_data.querySelector(".gantt_tree_indent"),o=15,s=0;if(a&&(o=a.offsetWidth),t.targetId!==i.$getRootId()){var l=e.getItemTop(t.targetId),c=e.getItemHeight(t.targetId);if(s=i.exists(t.targetId)?i.calculateItemLevel(i.getItem(t.targetId)):0,t.prevSibling)n.y=l;else if(t.nextSibling){var u=0;i.eachItem(function(t){-1!==i.getIndexById(t.id)&&u++},t.targetId),n.y=l+c+u*c}else n.y=l+c,s+=1}return n.x=40+s*o,n.width=Math.max(e.$grid_data.offsetWidth-n.x,0),r(n,e)}(t,i);e.innerHTML="
",e.style.left=n.x+"px",e.style.height="4px",e.style.top=n.y-2+"px",e.style.width=n.width+"px"}(t,o,i)}}},function(t,e,i){var n=i(9);t.exports=function(t,e,i,r,a){var o;if(e!==a.$getRootId())o=i<.25?n.prevSiblingTarget(t,e,a):!(i>.6)||a.hasChild(e)&&a.getItem(e).$open?n.firstChildTarget(t,e,a):n.nextSiblingTarget(t,e,a);else{var s=a.$getRootId();o=a.hasChild(s)&&r>=0?n.lastChildTarget(t,s,a):n.firstChildTarget(t,s,a)}return o}},function(t,e,i){var n=i(9);function r(t,e,i,r,a){for(var o=e;r.exists(o);){var s=r.calculateItemLevel(r.getItem(o));if((s===i||s===i-1)&&r.getBranchIndex(o)>-1)break;o=a?r.getPrev(o):r.getNext(o)}return r.exists(o)?r.calculateItemLevel(r.getItem(o))===i?a?n.nextSiblingTarget(t,o,r):n.prevSiblingTarget(t,o,r):n.firstChildTarget(t,o,r):null}function a(t,e,i,n){return r(t,e,i,n,!0)}function o(t,e,i,n){return r(t,e,i,n,!1)}t.exports=function(t,e,i,r,s,l){var c;if(e!==s.$getRootId())i<.5?s.calculateItemLevel(s.getItem(e))===l?c=s.getPrevSibling(e)?n.nextSiblingTarget(t,s.getPrevSibling(e),s):n.prevSiblingTarget(t,e,s):(c=a(t,e,l,s))&&(c=o(t,e,l,s)):s.calculateItemLevel(s.getItem(e))===l?c=n.nextSiblingTarget(t,e,s):(c=o(t,e,l,s))&&(c=a(t,e,l,s));else{var u=s.$getRootId(),d=s.getChildren(u);c=n.createDropTargetObject(),c=d.length&&r>=0?a(t,function(t){for(var e=t.getNext();t.exists(e);){var i=t.getNext(e);if(!t.exists(i))return e;e=i}return null}(s),l,s):o(t,u,l,s)}return c}},function(t,e,i){var n=i(1),r=i(9),a=i(98),o=i(97),s=i(96);t.exports={init:function(t,e){var i=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var l=new i(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(l.config.sensitivity=e.$getConfig().dnd_sensitivity),l.attachEvent("onBeforeDragStart",t.bind(function(i,r){var a=c(r);if(!a)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),n.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var o=a.getAttribute(e.$config.item_attribute),s=e.$config.rowStore.getItem(o);return!t.isReadonly(s)&&(l.config.initial_open_state=s.$open,!!t.callEvent("onRowDragStart",[o,r.target||r.srcElement,r])&&void 0)},t)),l.attachEvent("onAfterDragStart",t.bind(function(t,i){var n=c(i);l.config.marker.innerHTML=n.outerHTML;var a=l.config.marker.firstChild;a&&(l.config.marker.style.opacity=.4,a.style.position="static",a.style.pointerEvents="none"),l.config.id=n.getAttribute(e.$config.item_attribute);var o=e.$config.rowStore,s=o.getItem(l.config.id);l.config.level=o.calculateItemLevel(s),l.config.drop_target=r.createDropTargetObject({targetParent:o.getParent(s.id),targetIndex:o.getBranchIndex(s.id),targetId:s.id,nextSibling:!0}),s.$open=!1,s.$transparent=!0,this.refreshData()},t)),l.attachEvent("onDragMove",t.bind(function(i,n){var a=u(n);return a&&!1!==t.callEvent("onBeforeRowDragMove",[l.config.id,a.targetParent,a.targetIndex])||(a=r.createDropTargetObject(l.config.drop_target)),s.highlightPosition(a,l.config,e),l.config.drop_target=a,this.callEvent("onRowDragMove",[l.config.id,a.targetParent,a.targetIndex]),!0},t)),l.attachEvent("onDragEnd",t.bind(function(){var t=e.$config.rowStore,i=t.getItem(l.config.id);s.removeLineHighlight(l.config),i.$transparent=!1,i.$open=l.config.initial_open_state;var n=l.config.drop_target;!1===this.callEvent("onBeforeRowDragEnd",[l.config.id,n.targetParent,n.targetIndex])?i.$drop_target=null:(t.move(l.config.id,n.targetIndex,n.targetParent),this.callEvent("onRowDragEnd",[l.config.id,n.targetParent,n.targetIndex])),t.refresh(i.id)},t))}function c(t){return n.locateAttribute(t,e.$config.item_attribute)}function u(t){var i=function(t){var i=n.getRelativeEventPosition(t,e.$grid_data).y,r=e.$config.rowStore;if((i=i||0)<0)return r.$getRootId();var a=Math.floor(i/e.getItemHeight());return a>r.countVisible()-1?r.$getRootId():r.getIdByIndex(a)}(t),r=null,s=e.$config.rowStore,c=!e.$getConfig().order_branch_free,u=n.getRelativeEventPosition(t,e.$grid_data).y;return i!==s.$getRootId()&&(r=(u-e.getItemTop(i))/e.getItemHeight()),c?a(l.config.id,i,r,u,s,l.config.level):o(l.config.id,i,r,u,s)}}}},function(t,e,i){var n=i(1);t.exports={init:function(t,e){var i=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var r=new i(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(r.config.sensitivity=e.$getConfig().dnd_sensitivity),r.attachEvent("onBeforeDragStart",t.bind(function(i,s){var l=a(s);if(!l)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),n.closest(s.target,".gantt_grid_editor_placeholder"))return!1;var c=l.getAttribute(e.$config.item_attribute),u=o().getItem(c);return!t.isReadonly(u)&&(r.config.initial_open_state=u.$open,!!t.callEvent("onRowDragStart",[c,s.target||s.srcElement,s])&&void 0)},t)),r.attachEvent("onAfterDragStart",t.bind(function(t,i){var n=a(i);r.config.marker.innerHTML=n.outerHTML;var s=r.config.marker.firstChild;s&&(s.style.position="static"),r.config.id=n.getAttribute(e.$config.item_attribute);var l=o(),c=l.getItem(r.config.id);r.config.index=l.getBranchIndex(r.config.id),r.config.parent=c.parent,c.$open=!1,c.$transparent=!0,this.refreshData()},t)),r.lastTaskOfLevel=function(t){for(var e=null,i=o().getItems(),n=0,r=i.length;ni.y+c-l.row_height&&(s=i.y+c-l.row_height),i.x=a,i.y=s,i},t),r._getTargetY=t.bind(function(t){var i=n.getNodePosition(e.$grid_data),r=t.pageY-i.y+(e.$state.scrollTop||0);return r<0&&(r=0),r},t),r._getTaskByY=t.bind(function(t,i){var n=e.$getConfig(),r=o();t=t||0;var a=Math.floor(t/n.row_height);return(a=ir.countVisible()-1?null:r.getIdByIndex(a)},t),r.attachEvent("onDragMove",t.bind(function(t,i){var n=r.config,a=r._getGridPos(i),s=e.$getConfig(),l=o();n.marker.style.left=a.x+10+"px",n.marker.style.top=a.y+"px";var c=l.getItem(r.config.id),u=r._getTargetY(i),d=r._getTaskByY(u,l.getIndexById(c.id));function h(t,e){return!l.isChildOf(f.id,e.id)&&(t.$level==e.$level||s.order_branch_free)}if(l.exists(d)||(d=r.lastTaskOfLevel(s.order_branch_free?c.$level:0))==r.config.id&&(d=null),l.exists(d)){var f=l.getItem(d);if(l.getIndexById(f.id)*s.row_height+s.row_height/2=0;)v=l.getIdByIndex(_-y),m=l.getItem(v),y++;if(c.id==f.id)return;h(f,c)&&c.id!=f.id?l.move(c.id,0,0,f.id):f.$level!=c.$level-1||l.getChildren(f.id).length?m&&h(m,c)&&c.id!=m.id&&l.move(c.id,-1,l.getParent(m.id)):l.move(c.id,0,f.id)}return!0},t)),r.attachEvent("onDragEnd",t.bind(function(){var t=o(),e=t.getItem(r.config.id);e.$transparent=!1,e.$open=r.config.initial_open_state,!1===this.callEvent("onBeforeRowDragEnd",[r.config.id,r.config.parent,r.config.index])?(t.move(r.config.id,r.config.index,r.config.parent),e.$drop_target=null):this.callEvent("onRowDragEnd",[r.config.id,e.$drop_target]),this.refreshData()},t))}function a(t){return n.locateAttribute(t,e.$config.item_attribute)}function o(){return t.getDatastore(e.$config.bind)}}}},function(t,e,i){var n=i(0),r=i(100),a=i(99),o=function(t){return{onCreated:function(e){e.$config=n.mixin(e.$config,{bind:"task"}),"grid"==e.$config.id&&(this.extendGantt(e),t.ext.inlineEditors=t.ext._inlineEditors.createEditors(e),t.ext.inlineEditors.init()),this._mouseDelegates=i(10)(t)},onInitialized:function(e){var i=e.$getConfig();i.order_branch&&("marker"==i.order_branch?a.init(e.$gantt,e):r.init(e.$gantt,e)),this.initEvents(e,t),"grid"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){"grid"==e.$config.id&&t.ext.inlineEditors.destructor(),this.clearEvents(e,t)},initEvents:function(t,e){this._mouseDelegates.delegate("click","gantt_row",e.bind(function(i,n,r){var a=t.$getConfig();if(null!==n){var o=this.getTask(n);a.scroll_on_click&&!e._is_icon_open_click(i)&&this.showDate(o.start_date),e.callEvent("onTaskRowClick",[n,r])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_grid_head_cell",e.bind(function(i,n,r){var a=r.getAttribute("data-column-id");if(e.callEvent("onGridHeaderClick",[a,i])){var o=t.$getConfig();if("add"!=a){if(o.sort){for(var s,l=a,c=0;c",h=""):(d=_.template?_.template(e):e[_.name],n.isDate(d)&&(d=o.date_grid(d,e)),h=d,d="
"+d+"
");var g="gantt_cell"+(f?" gantt_last_cell":""),p=[];if(_.tree){for(var v=0;v"+p.join("")+"",l.push(u)}if(g=t.getGlobalTaskIndex(e.id)%2==0?"":" odd",g+=e.$transparent?" gantt_transparent":"",g+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",o.grid_row_class){var b=o.grid_row_class.call(t,e.start_date,e.end_date,e);b&&(g+=" "+b)}s.getSelectedId()==e.id&&(g+=" gantt_selected");var k=document.createElement("div");k.className="gantt_row"+g+" gantt_row_"+t.getTaskType(e.type);var w=i.getItemHeight();return k.style.height=w+"px",k.style.lineHeight=w+"px",a.smart_rendering&&(k.style.position="absolute",k.style.left="0px",k.style.top=i.getItemTop(e.id)+"px"),i.$config.item_attribute&&k.setAttribute(i.$config.item_attribute,e.id),t._waiAria.taskRowAttr(e,k),k.innerHTML=l.join(""),k}}},function(t,e){t.exports=function(t){var e={current_pos:null,dirs:{left:"left",right:"right",up:"up",down:"down"},path:[],clear:function(){this.current_pos=null,this.path=[]},point:function(e){this.current_pos=t.copy(e)},get_lines:function(t){this.clear(),this.point(t[0]);for(var e=1;et.x?this.dirs.right:e.y>t.y?this.dirs.down:this.dirs.up}},i={path:[],clear:function(){this.path=[]},current:function(){return this.path[this.path.length-1]},point:function(e){return e?(this.path.push(t.copy(e)),e):this.current()},point_to:function(i,n,r){r=r?{x:r.x,y:r.y}:t.copy(this.point());var a=e.dirs;switch(i){case a.left:r.x-=n;break;case a.right:r.x+=n;break;case a.up:r.y-=n;break;case a.down:r.y+=n}return this.point(r)},get_points:function(i,n){var r=this.get_endpoint(i,n),a=t.config,o=r.e_y-r.y,s=r.e_x-r.x,l=e.dirs;this.clear(),this.point({x:r.x,y:r.y});var c=2*a.link_arrow_size,u=this.get_line_type(i,n.$getConfig()),d=r.e_x>r.x;if(u.from_start&&u.to_start)this.point_to(l.left,c),d?(this.point_to(l.down,o),this.point_to(l.right,s)):(this.point_to(l.right,s),this.point_to(l.down,o)),this.point_to(l.right,c);else if(!u.from_start&&u.to_start)if(d=r.e_x>r.x+2*c,this.point_to(l.right,c),d)s-=c,this.point_to(l.down,o),this.point_to(l.right,s);else{s-=2*c;var h=o>0?1:-1;this.point_to(l.down,h*(a.row_height/2)),this.point_to(l.right,s),this.point_to(l.down,h*(Math.abs(o)-a.row_height/2)),this.point_to(l.right,c)}else u.from_start||u.to_start?u.from_start&&!u.to_start&&(d=r.e_x>r.x-2*c,this.point_to(l.left,c),d?(s+=2*c,h=o>0?1:-1,this.point_to(l.down,h*(a.row_height/2)),this.point_to(l.right,s),this.point_to(l.down,h*(Math.abs(o)-a.row_height/2)),this.point_to(l.left,c)):(s+=c,this.point_to(l.down,o),this.point_to(l.right,s))):(this.point_to(l.right,c),d?(this.point_to(l.right,s),this.point_to(l.down,o)):(this.point_to(l.down,o),this.point_to(l.right,s)),this.point_to(l.left,c));return this.path},get_line_type:function(e,i){var n=i.links,r=!1,a=!1;return e.type==n.start_to_start?r=a=!0:e.type==n.finish_to_finish?r=a=!1:e.type==n.finish_to_start?(r=!1,a=!0):e.type==n.start_to_finish?(r=!0,a=!1):t.assert(!1,"Invalid link type"),i.rtl&&(r=!r,a=!a),{from_start:r,to_start:a}},get_endpoint:function(e,i){var r=i.$getConfig(),a=this.get_line_type(e,r),o=a.from_start,s=a.to_start,l=t.getTask(e.source),c=t.getTask(e.target),u=n(l,i),d=n(c,i);return{x:o?u.left:u.left+u.width,e_x:s?d.left:d.left+d.width,y:u.top,e_y:d.top}}};function n(e,i){var n=i.$getConfig(),r=i.getItemPosition(e);if(t.getTaskType(e.type)==n.types.milestone){var a=t.getTaskHeight(),o=Math.sqrt(2*a*a);r.left-=o/2,r.width=o}return r}return function(n,r){var a=r.$getConfig(),o=i.get_endpoint(n,r),s=o.e_y-o.y;if(!(o.e_x-o.x||s))return null;var l=i.get_points(n,r),c=e.get_lines(l,r),u=document.createElement("div"),d="gantt_task_link";n.color&&(d+=" gantt_link_inline_color");var h=t.templates.link_class?t.templates.link_class(n):"";h&&(d+=" "+h),a.highlight_critical_path&&t.isCriticalLink&&t.isCriticalLink(n)&&(d+=" gantt_critical_link"),u.className=d,r.$config.link_attribute&&u.setAttribute(r.$config.link_attribute,n.id);for(var f=0;f0){var d=document.createElement("div");d.style.width=c+"px",u="gantt_task_cell"+(l==o-1?" gantt_last_cell":""),(f=r.task_cell_class(e,a.trace_x[l]))&&(u+=" "+f),d.className=u,s.appendChild(d)}}var h=t.getGlobalTaskIndex(e.id)%2!=0,f=r.task_row_class(e.start_date,e.end_date,e),_="gantt_task_row"+(h?" odd":"")+(f?" "+f:"");return i.$config.rowStore.getSelectedId()==e.id&&(_+=" gantt_selected"),s.className=_,n.smart_rendering&&(s.style.position="absolute",s.style.top=i.getItemTop(e.id)+"px",s.style.width="100%"),s.style.height=n.row_height+"px",i.$config.item_attribute&&s.setAttribute(i.$config.item_attribute,e.id),s}}},function(t,e,i){t.exports=function(t){var e=i(23)(t);return function(i,n){if(t.isSplitTask(i)){for(var r=document.createElement("div"),a=t.getTaskPosition(i),o=t.getChildren(i.id),s=0;s";n.innerHTML=r},hide:function(){},set_value:function(e,i,n,r){this.get_input(r).value=o(e,n.editor,t)},get_value:function(t,e,i){return a(this.get_input(i).value||"",e.editor)},save:function(e,i,n){var r=s(t.getTask(e),this.get_value(e,i,n));(r.add.length||r.remove.length)&&t.batchUpdate(function(){r.add.forEach(function(e){t.addLink(e)}),r.remove.forEach(function(e){t.deleteLink(e)}),t.autoSchedule&&t.autoSchedule()})},is_changed:function(e,i,n,r){var s=this.get_value(i,n,r),l=a(o(e,n.editor,t),n.editor);return s.join()!==l.join()}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0),r="%Y-%m-%d",a=null,o=null;function s(){return e.apply(this,arguments)||this}return i(2)(s,e),n.mixin(s.prototype,{show:function(e,i,n,s){a||(a=t.date.date_to_str(r)),o||(o=t.date.str_to_date(r));var l="
";s.innerHTML=l},set_value:function(t,e,i,n){t&&t.getFullYear?this.get_input(n).value=a(t):this.get_input(n).value=t},is_valid:function(t,e,i,n){return!(!t||isNaN(t.getTime()))},get_value:function(t,e,i){var n;try{n=o(this.get_input(i).value||"")}catch(t){n=null}return n}},!0),s}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){for(var r="
",n.innerHTML=r},get_input:function(t){return t.querySelector("select")}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){var r="
";n.innerHTML=r},get_value:function(t,e,i){return this.get_input(i).value||""},is_valid:function(t,e,i,n){return!isNaN(parseInt(t,10))}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){var r="
";n.innerHTML=r}},!0),r}},function(t,e){t.exports={init:function(t,e){var i=t,n=e.$gantt,r=null,a=n.ext.keyboardNavigation;a.attachEvent("onBeforeFocus",function(e){var n=t.locateCell(e);if(clearTimeout(r),n){var a=n.columnName,o=n.id,s=i.getState();if(i.isVisible()&&s.id==o&&s.columnName===a)return!1}return!0}),a.attachEvent("onFocus",function(e){var n=t.locateCell(e),a=t.getState();return clearTimeout(r),!n||n.id==a.id&&n.columnName==a.columnName||i.isVisible()&&i.save(),!0}),t.attachEvent("onHide",function(){clearTimeout(r)}),a.attachEvent("onBlur",function(){return r=setTimeout(function(){i.save()}),!0}),n.attachEvent("onTaskDblClick",function(e,i){var n=t.getState(),r=t.locateCell(i.target);return!r||!t.isVisible()||r.columnName!=n.columnName}),n.attachEvent("onTaskClick",function(e,i){if(n._is_icon_open_click(i))return!0;var r=t.getState(),a=t.locateCell(i.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),n.attachEvent("onEmptyClick",function(){return i.save(),!0}),a.attachEvent("onKeyDown",function(e,r){var o=t.locateCell(r.target),s=!!o&&t.getEditorConfig(o.columnName),l=t.getState(),c=n.constants.KEY_CODES,u=r.keyCode,d=!1;switch(u){case c.ENTER:t.isVisible()?(t.save(),r.preventDefault(),d=!0):s&&!(r.ctrlKey||r.metaKey||r.shiftKey)&&(i.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.ESC:t.isVisible()&&(t.hide(),r.preventDefault(),d=!0);break;case c.UP:case c.DOWN:break;case c.LEFT:case c.RIGHT:"date"===l.editorType&&(d=!0);break;case c.SPACE:t.isVisible()&&(d=!0),s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.DELETE:s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),d=!0);break;case c.TAB:if(t.isVisible()){r.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);var h=t.getState();h.id&&a.focus({type:"taskCell",id:h.id,column:h.columnName}),r.preventDefault(),d=!0}break;default:if(t.isVisible())d=!0;else if(u>=48&&u<=57||u>95&&u<112||u>=64&&u<=91||u>185&&u<193||u>218&&u<223){var f=e.modifiers,_=f.alt||f.ctrl||f.meta||f.shift;f.alt||_&&a.getCommandHandler(e,"taskCell")||s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),d=!0)}}return!d})},onShow:function(t,e,i){},onHide:function(t,e,i){i.$gantt.focus()},destroy:function(){}}},function(t,e){t.exports={init:function(t,e){var i=e.$gantt;i.attachEvent("onTaskClick",function(e,n){if(i._is_icon_open_click(n))return!0;var r=t.getState(),a=t.locateCell(n.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),i.attachEvent("onEmptyClick",function(){return t.isVisible()&&t.isChanged()?t.save():t.hide(),!0}),i.attachEvent("onTaskDblClick",function(e,i){var n=t.getState(),r=t.locateCell(i.target);return!r||!t.isVisible()||r.columnName!=n.columnName})},onShow:function(t,e,i){if(!i.$getConfig().keyboard_navigation){var n=i.$gantt;e.onkeydown=function(e){e=e||window.event;var i=n.constants.KEY_CODES;if(!(e.defaultPrevented||e.shiftKey&&e.keyCode!=i.TAB)){var r=!0;switch(e.keyCode){case n.keys.edit_save:t.save();break;case n.keys.edit_cancel:t.hide();break;case i.TAB:e.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);break;default:r=!1}r&&e.preventDefault()}}}},onHide:function(){},destroy:function(){}}},function(t,e,i){var n=i(112),r=i(111);t.exports=function(t){var e=null;return{setMapping:function(t){e=t},getMapping:function(){return e||(t.config.keyboard_navigation_cells?r:n)}}}},function(t,e,i){var n=i(113),r=i(110),a=i(109),o=i(108),s=i(107),l=i(106),c=i(0),u=i(1),d=i(4);function h(t){t.config.editor_types={text:new(r(t)),number:new(a(t)),select:new(o(t)),date:new(s(t)),predecessor:new(l(t))}}t.exports=function(t){var e=n(t),i={};d(i);var r={init:h,createEditors:function(n){function r(t,e){var i=function(t,e){for(var i=n.getItemTop(t),r=n.getItemHeight(t),a=n.getGridColumns(),o=0,s=0,l=0;l0?t.getNext:t.getPrev,n=(i=t.bind(i,t))(this._itemId);t.isTaskExists(n)&&t.isReadonly(t.getTask(n));)n=i(n);return n},editNextRow:function(){var t=this.getNextCell(1);t&&this.startEdit(t,this._columnName)},editPrevRow:function(){var t=this.getNextCell(-1);t&&this.startEdit(t,this._columnName)},destructor:function(){a.forEach(function(t){o.detachEvent(t)}),o=null,this.hide(),this.detachAllEvents()}};return c.mixin(s,e),c.mixin(s,i),s}};return c.mixin(r,e),c.mixin(r,i),r}},function(t,e){t.exports=function(t,e){return{init:function(){},doOnRender:function(){}}}},function(t,e){t.exports={create:function(){return{render:function(){},destroy:function(){}}}}},function(t,e,i){var n=i(2),r=i(1),a=i(0),o=i(13),s=function(t){"use strict";function e(e,i,n,r){var o=t.apply(this,arguments)||this;this.$config=a.mixin(i,{scroll:"x"}),o._scrollHorizontalHandler=a.bind(o._scrollHorizontalHandler,o),o._scrollVerticalHandler=a.bind(o._scrollVerticalHandler,o),o._outerScrollVerticalHandler=a.bind(o._outerScrollVerticalHandler,o),o._outerScrollHorizontalHandler=a.bind(o._outerScrollHorizontalHandler,o),o._mouseWheelHandler=a.bind(o._mouseWheelHandler,o),this.$config.hidden=!0;var s=r.config.scroll_size;return r.env.isIE&&(s+=1),this._isHorizontal()?(o.$config.height=s,o.$parent.$config.height=s):(o.$config.width=s,o.$parent.$config.width=s),this.$config.scrollPosition=0,o.$name="scroller",o}return n(e,t),e.prototype.init=function(t){t.innerHTML=this.$toHTML(),this.$view=t.firstChild,this.$view||this.init(),this._isVertical()?this._initVertical():this._initHorizontal(),this._initMouseWheel(),this._initLinkedViews()},e.prototype.$toHTML=function(){return"
"},e.prototype._getRootParent=function(){for(var t=this.$parent;t&&t.$parent;)t=t.$parent;if(t)return t},e.prototype._eachView=function(){var t=[];return function t(e,i){if(i.push(e),e.$cells)for(var n=0;nd[s]&&d[o]>e&&u>d[s]-l+2&&(e=u+(n?0:2),i=d[s]);else{var h=Math.max(d[o]-u,0);(u+=h)>Math.max(d[s]-h,0)&&u>e&&(e=u,i=d[s])}}return{outerScroll:i,innerScroll:e}},e.prototype.scroll=function(t){this._isHorizontal()?this.scrollHorizontally(t):this.scrollVertically(t)},e.prototype.getScrollState=function(){return{visible:this.isVisible(),direction:this.$config.scroll,size:this.$config.outerSize,scrollSize:this.$config.scrollSize||0,position:this.$config.scrollPosition||0}},e.prototype.setSize=function(e,i){t.prototype.setSize.apply(this,arguments);var n=this._getScrollSize(),r=(this._isVertical()?i:e)-this._getScrollOffset()+(this._isHorizontal()?1:0);n.innerScroll&&r>n.outerScroll&&(n.innerScroll+=r-n.outerScroll),this.$config.scrollSize=n.innerScroll,this.$config.width=e,this.$config.height=i,this._setScrollSize(n.innerScroll)},e.prototype.isVisible=function(){return!(!this.$parent||!this.$parent.$view.parentNode)},e.prototype.shouldShow=function(){var t=this._getScrollSize();return!(!t.innerScroll&&this.$parent&&this.$parent.$view.parentNode)&&!(!t.innerScroll||this.$parent&&this.$parent.$view.parentNode)},e.prototype.shouldHide=function(){return!(this._getScrollSize().innerScroll||!this.$parent||!this.$parent.$view.parentNode)},e.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},e.prototype._getScaleOffset=function(t){var e=0;return!t||"timeline"!=t.$config.view&&"grid"!=t.$config.view||(e=t.$content.$getConfig().scale_height),e},e.prototype._getScrollOffset=function(){var t=0;if(this._isVertical()){var e=this.$parent.$parent;t=Math.max(this._getScaleOffset(e.getPrevSibling(this.$parent.$id)),this._getScaleOffset(e.getNextSibling(this.$parent.$id)))}else for(var i=this._getLinkedViews(),n=0;nMath.abs(a)){if(this._isVertical())return;if(i.x)return!0;if(!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var s=r/-40,l=this._oldLeft,c=l+30*s;if(this.scrollHorizontally(c),this.$scroll_hor.scrollLeft=c,l==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(i.y)return!0;if(!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;s=a/-40;void 0===a&&(s=t.detail);var u=this._oldTop,d=this.$scroll_ver.scrollTop+30*s;if(this.scrollVertically(d),this.$scroll_ver.scrollTop=d,u==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}},e}(i(7));t.exports=s},function(t,e){t.exports=null},function(t,e,i){var n=i(2),r=i(0),a=function(t){"use strict";function e(e,i,n){var a=t.apply(this,arguments)||this;if(i.view){i.id&&(this.$id=r.uid());var o=r.copy(i);if(delete o.config,delete o.templates,this.$content=this.$factory.createView(i.view,this,o,this),!this.$content)return!1}return a.$name="viewCell",a}return n(e,t),e.prototype.destructor=function(){this.clear(),t.prototype.destructor.call(this)},e.prototype.clear=function(){if(this.$initialized=!1,this.$content){var e=this.$content.unload||this.$content.destructor;e&&e.call(this.$content)}t.prototype.clear.call(this)},e.prototype.scrollTo=function(e,i){this.$content&&this.$content.scrollTo?this.$content.scrollTo(e,i):t.prototype.scrollTo.call(this,e,i)},e.prototype._setContentSize=function(t,e){var i=this._getBorderSizes(),n=t+i.horizontal,r=e+i.vertical;this.$config.width=n,this.$config.height=r},e.prototype.setSize=function(e,i){if(t.prototype.setSize.call(this,e,i),!this.$preResize&&this.$content&&!this.$initialized){this.$initialized=!0;var n=this.$view.childNodes[0],r=this.$view.childNodes[1];r||(r=n),this.$content.init(r)}},e.prototype.setContentSize=function(){!this.$preResize&&this.$content&&this.$initialized&&this.$content.setSize(this.$lastSize.contentX,this.$lastSize.contentY)},e.prototype.getContentSize=function(){var e=t.prototype.getContentSize.call(this);if(this.$content&&this.$initialized){var i=this.$content.getSize();e.width=void 0===i.contentX?i.width:i.contentX,e.height=void 0===i.contentY?i.height:i.contentY}var n=this._getBorderSizes();return e.width+=n.horizontal,e.height+=n.vertical,e},e}(i(7));t.exports=a},function(t,e,i){var n=i(2),r=i(27),a=i(7),o=function(t){"use strict";function e(e,i,n){for(var r=t.apply(this,arguments)||this,a=0;a-1&&o.click?o.click():(a(i,!0),n=!0)}27==e&&(a(i,!1),n=!0)}return n?(t.preventDefault&&t.preventDefault(),!(t.cancelBubble=!0)):void 0}}function s(t){s.cover||(s.cover=document.createElement("div"),s.cover.onkeydown=o,s.cover.className="dhx_modal_cover",document.body.appendChild(s.cover)),s.cover.style.display=t?"inline-block":"none"}function l(e,i,n){var r=t._waiAria.messageButtonAttrString(e),a=i.toLowerCase().replace(/ /g,"_");return"
"+e+"
"}function c(){for(var t=[].slice.apply(arguments,[0]),e=0;e'+r.title+""),h+='
'+(r.content?"":r.text)+'
',o&&(h+=l(c(r.ok,t.locale.labels.message_ok,"OK"),"ok",!0)),s&&(h+=l(c(r.cancel,t.locale.labels.message_cancel,"Cancel"),"cancel",!1)),r.buttons)for(var f=0;f",i.className="gantt-info dhtmlx-info gantt-"+e.type+" dhtmlx-"+e.type,i.onclick=function(){p.hide(e.id),e=null},t._waiAria.messageInfoAttr(i),"bottom"==p.position&&p.area.firstChild?p.area.insertBefore(i,p.area.firstChild):p.area.appendChild(i),e.expire>0&&(p.timers[e.id]=window.setTimeout(function(){p.hide(e.id)},e.expire)),p.pull[e.id]=i,i=null,e.id}(e)}};p.seed=(new Date).valueOf(),p.uid=n.uid,p.expire=4e3,p.keyboard=!0,p.position="top",p.pull={},p.timers={},p.hideAll=function(){for(var t in p.pull)p.hide(t)},p.hide=function(t){var e=p.pull[t];e&&e.parentNode&&(window.setTimeout(function(){e.parentNode.removeChild(e),e=null},2e3),e.className+=" hidden",p.timers[t]&&window.clearTimeout(p.timers[t]),delete p.pull[t])};var v=[];return t.attachEvent("onMessagePopup",function(t){v.push(t)}),t.attachEvent("onAfterMessagePopup",function(t){for(var e=0;e=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},i(129),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,i(12))},function(t,e,i){(function(e,i,n){t.exports=function(){var t,r,a;return function t(e,i,n){function r(o,s){if(!i[o]){if(!e[o]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=i[o]={exports:{}};e[o][0].call(u.exports,function(t){var i=e[o][1][t];return r(i||t)},u,u.exports,t,e,i,n)}return i[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o0;)f(t)}function f(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var i=t.shift(),n=t.shift();e.call(i,n)}}l.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(t,i){i?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},l.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(t,e,i){this._trampolineEnabled?c.call(this,t,e,i):this._schedule(function(){setTimeout(function(){t.call(e,i)},100)})},l.prototype.invoke=function(t,e,i){this._trampolineEnabled?u.call(this,t,e,i):this._schedule(function(){t.call(e,i)})},l.prototype.settlePromises=function(t){this._trampolineEnabled?d.call(this,t):this._schedule(function(){t._settlePromises()})}):(l.prototype.invokeLater=c,l.prototype.invoke=u,l.prototype.settlePromises=d),l.prototype._drainQueues=function(){h(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,h(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},i.exports=l,i.exports.firstLineError=r},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,i){"use strict";e.exports=function(t,e,i,n){var r=!1,a=function(t,e){this._reject(e)},o=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(a,a,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},l=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(a){r||(r=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=i(a),u=new t(e);u._propagateFrom(this,1);var d=this._target();if(u._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:d,bindingPromise:c};d._then(e,o,void 0,u,h),c._then(s,l,void 0,u,h),u._setOnCancel(c)}else u._resolveCallback(d);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,i){return t.resolve(i).bind(e)}}},{}],4:[function(t,e,i){"use strict";var n;"undefined"!=typeof Promise&&(n=Promise);var r=t("./promise")();r.noConflict=function(){try{Promise===r&&(Promise=n)}catch(t){}return r},e.exports=r},{"./promise":22}],5:[function(t,e,i){"use strict";var n=Object.create;if(n){var r=n(null),a=n(null);r[" size"]=a[" size"]=0}e.exports=function(e){var i=t("./util"),n=i.canEvaluate;function r(t){var n=this.pop(),r=function(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var a="Object "+i.classString(t)+" has no method '"+i.toString(n)+"'";throw new e.TypeError(a)}return r}(t,n);return r.apply(t,this)}function a(t){return t[this]}function o(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}i.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,i="number"==typeof t;if(i)e=o;else if(n){var r=(void 0)(t);e=null!==r?r:a}else e=a;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,i){"use strict";e.exports=function(e,i,n,r){var a=t("./util"),o=a.tryCatch,s=a.errorObj,l=e._async;e.prototype.break=e.prototype.cancel=function(){if(!r.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var i=t._cancellationParent;if(null==i||!i._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=i}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(a.isArray(t))for(var i=0;i=0)return i[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,i.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=i.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var i=t.prototype._pushContext,a=t.prototype._popContext,o=t._peekContext,s=t.prototype._peekContext,l=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=i,t.prototype._popContext=a,t._peekContext=o,t.prototype._peekContext=s,t.prototype._promiseCreated=l,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,i,n){"use strict";i.exports=function(i,n){var r,a,o,s=i._getDomain,l=i._async,c=t("./errors").Warning,u=t("./util"),d=t("./es5"),h=u.canAttachTrace,f=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,_=/\((?:timers\.js):\d+:\d+\)/,g=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,p=null,v=null,m=!1,y=!(0==u.env("BLUEBIRD_DEBUG")),b=!(0==u.env("BLUEBIRD_WARNINGS")||!y&&!u.env("BLUEBIRD_WARNINGS")),k=!(0==u.env("BLUEBIRD_LONG_STACK_TRACES")||!y&&!u.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=u.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!u.env("BLUEBIRD_W_FORGOTTEN_RETURN"));i.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},i.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},i.prototype._notifyUnhandledRejectionIsHandled=function(){W("rejectionHandled",r,void 0,this)},i.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},i.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},i.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),W("unhandledRejection",a,t,this)}},i.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},i.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},i.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},i.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},i.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},i.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},i.prototype._warn=function(t,e,i){return F(t,e,i||this)},i.onPossiblyUnhandledRejection=function(t){var e=s();a="function"==typeof t?null===e?t:u.domainBind(e,t):void 0},i.onUnhandledRejectionHandled=function(t){var e=s();r="function"==typeof t?null===e?t:u.domainBind(e,t):void 0};var x=function(){};i.longStackTraces=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&Y()){var t=i.prototype._captureStackTrace,e=i.prototype._attachExtraTrace,r=i.prototype._dereferenceTrace;Z.longStackTraces=!0,x=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");i.prototype._captureStackTrace=t,i.prototype._attachExtraTrace=e,i.prototype._dereferenceTrace=r,n.deactivateLongStackTraces(),l.enableTrampoline(),Z.longStackTraces=!1},i.prototype._captureStackTrace=R,i.prototype._attachExtraTrace=H,i.prototype._dereferenceTrace=z,n.activateLongStackTraces(),l.disableTrampolineIfNecessary()}},i.hasLongStackTraces=function(){return Z.longStackTraces&&Y()};var $=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return u.global.dispatchEvent(t),function(t,e){var i={detail:e,cancelable:!0};d.defineProperty(i,"promise",{value:e.promise}),d.defineProperty(i,"reason",{value:e.reason});var n=new CustomEvent(t.toLowerCase(),i);return!u.global.dispatchEvent(n)}}if("function"==typeof Event){var t=new Event("CustomEvent");return u.global.dispatchEvent(t),function(t,e){var i=new Event(t.toLowerCase(),{cancelable:!0});return i.detail=e,d.defineProperty(i,"promise",{value:e.promise}),d.defineProperty(i,"reason",{value:e.reason}),!u.global.dispatchEvent(i)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),u.global.dispatchEvent(t),function(t,e){var i=document.createEvent("CustomEvent");return i.initCustomEvent(t.toLowerCase(),!1,!0,e),!u.global.dispatchEvent(i)}}catch(t){}return function(){return!1}}(),T=u.isNode?function(){return e.emit.apply(e,arguments)}:u.global?function(t){var e="on"+t.toLowerCase(),i=u.global[e];return!!i&&(i.apply(u.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function S(t,e){return{promise:e}}var C={promiseCreated:S,promiseFulfilled:S,promiseRejected:S,promiseResolved:S,promiseCancelled:S,promiseChained:function(t,e,i){return{promise:e,child:i}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,i){return{reason:e,promise:i}},rejectionHandled:S},E=function(t){var e=!1;try{e=T.apply(null,arguments)}catch(t){l.throwLater(t),e=!0}var i=!1;try{i=$(t,C[t].apply(null,arguments))}catch(t){l.throwLater(t),i=!0}return i||e};function D(){return!1}function I(t,e,i){var n=this;try{t(e,i,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+u.toString(t));n._attachCancellationCallback(t)})}catch(t){return t}}function A(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?u.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function P(){return this._onCancelField}function O(t){this._onCancelField=t}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var i=t._branchesRemainingToCancel;void 0===i&&(i=0),t._branchesRemainingToCancel=i+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}i.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?i.longStackTraces():!t.longStackTraces&&i.hasLongStackTraces()&&x()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,w=Z.warnings,u.isObject(e)&&"wForgottenReturn"in e&&(w=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");i.prototype._clearCancellationData=M,i.prototype._propagateFrom=L,i.prototype._onCancel=P,i.prototype._setOnCancel=O,i.prototype._attachCancellationCallback=A,i.prototype._execute=I,N=L,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,i.prototype._fireEvent=E):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,i.prototype._fireEvent=D)),i},i.prototype._fireEvent=D,i.prototype._execute=function(t,e,i){try{t(e,i)}catch(t){return t}},i.prototype._onCancel=function(){},i.prototype._setOnCancel=function(t){},i.prototype._attachCancellationCallback=function(t){},i.prototype._captureStackTrace=function(){},i.prototype._attachExtraTrace=function(){},i.prototype._dereferenceTrace=function(){},i.prototype._clearCancellationData=function(){},i.prototype._propagateFrom=function(t,e){};var N=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function j(){var t=this._boundTo;return void 0!==t&&t instanceof i?t.isFulfilled()?t.value():void 0:t}function R(){this._trace=new K(this._peekContext())}function H(t,e){if(h(t)){var i=this._trace;if(void 0!==i&&e&&(i=i._parent),void 0!==i)i.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=V(t);u.notEnumerableProp(t,"stack",n.message+"\n"+n.stack.join("\n")),u.notEnumerableProp(t,"__stackCleaned__",!0)}}}function z(){this._trace=void 0}function F(t,e,n){if(Z.warnings){var r,a=new c(t);if(e)n._attachExtraTrace(a);else if(Z.longStackTraces&&(r=i._peekContext()))r.attachExtraTrace(a);else{var o=V(a);a.stack=o.message+"\n"+o.stack.join("\n")}E("warning",a)||U(a,"",!0)}}function B(t){for(var e=[],i=0;i0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),i=0;i0&&"SyntaxError"!=t.name&&(e=e.slice(i)),e}(t):[" (No stack trace)"],{message:i,stack:"SyntaxError"==t.name?e:B(e)}}function U(t,e,i){if("undefined"!=typeof console){var n;if(u.isObject(t)){var r=t.stack;n=e+v(r,t)}else n=e+String(t);"function"==typeof o?o(n,i):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function W(t,e,i,n){var r=!1;try{"function"==typeof e&&(r=!0,"rejectionHandled"===t?e(n):e(i,n))}catch(t){l.throwLater(t)}"unhandledRejection"===t?E(t,i,n)||r||U(i,"Unhandled rejection "):E(t,n)}function G(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():u.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var i=JSON.stringify(t);e=i}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof Q}var q=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function J(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function K(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Q(this,K),e>32&&this.uncycle()}u.inherits(K,Error),n.CapturedTrace=K,K.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],i={},n=0,r=this;void 0!==r;++n)e.push(r),r=r._parent;for(var n=(t=this._length=n)-1;n>=0;--n){var a=e[n].stack;void 0===i[a]&&(i[a]=n)}for(var n=0;n0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var l=n>0?e[n-1]:this;s=0;--u)e[u]._length=c,c++;return}}}},K.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=V(t),i=e.message,n=[e.stack],r=this;void 0!==r;)n.push(B(r.stack.split("\n"))),r=r._parent;!function(t){for(var e=t[0],i=1;i=0;--s)if(n[s]===a){o=s;break}for(var s=o;s>=0;--s){var l=n[s];if(e[r]!==l)break;e.pop(),r--}e=n}}(n),function(t){for(var e=0;e=0)return p=/@/,v=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n="stack"in t}return"stack"in r||!n||"number"!=typeof Error.stackTraceLimit?(v=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?G(e):e.toString()},null):(p=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(o=function(t){console.warn(t)},u.isNode&&e.stderr.isTTY?o=function(t,e){var i=e?"":"";console.warn(i+t+"\n")}:u.isNode||"string"!=typeof(new Error).stack||(o=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return k&&i.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return N},boundValueFunction:function(){return j},checkForgottenReturns:function(t,e,i,n,r){if(void 0===t&&null!==e&&w){if(void 0!==r&&r._returnedNonUndefined())return;if(0==(65535&n._bitField))return;i&&(i+=" ");var a="",o="";if(e._trace){for(var s=e._trace.stack.split("\n"),l=B(s),c=l.length-1;c>=0;--c){var u=l[c];if(!_.test(u)){var d=u.match(g);d&&(a="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(l.length>0)for(var h=l[0],c=0;c0&&(o="\n"+s[c-1]);break}}var f="a promise was created in a "+i+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;n._warn(f,!0,e)}},setBounds:function(t,e){if(Y()){for(var i,n,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l=s||(q=function(t){if(f.test(t))return!0;var e=J(t);return!!(e&&e.fileName===i&&o<=e.line&&e.line<=s)})}},warn:F,deprecated:function(t,e){var i=t+" is deprecated and will be removed in a future version.";return e&&(i+=" Use "+e+" instead."),F(i)},CapturedTrace:K,fireDomEvent:$,fireGlobalEvent:T}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,i){"use strict";e.exports=function(t){function e(){return this.value}function i(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(i){return i instanceof t&&i.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:i},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(i,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,i,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(i){if(arguments.length<=1)return i instanceof t&&i.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:i},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(i,function(){return n})}}},{}],11:[function(t,e,i){"use strict";e.exports=function(t,e){var i=t.reduce,n=t.all;function r(){return n(this)}t.prototype.each=function(t){return i(this,t,e,0)._then(r,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,n){return i(t,n,e,0)._then(r,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return i(t,n,e,e)}}},{}],12:[function(t,e,i){"use strict";var n,r,a=t("./es5"),o=a.freeze,s=t("./util"),l=s.inherits,c=s.notEnumerableProp;function u(t,e){function i(n){if(!(this instanceof i))return new i(n);c(this,"message","string"==typeof n?n:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(i,Error),i}var d=u("Warning","warning"),h=u("CancellationError","cancellation error"),f=u("TimeoutError","timeout error"),_=u("AggregateError","aggregate error");try{n=TypeError,r=RangeError}catch(t){n=u("TypeError","type error"),r=u("RangeError","range error")}for(var g="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),p=0;p1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function d(){return f.call(this,this.promise._target()._settledValue())}function h(t){if(!u(this,t))return o.e=t,o}function f(t){var r=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(r._boundValue()):s.call(r._boundValue(),t);if(l===n)return l;if(void 0!==l){r._setReturnedNonUndefined();var f=i(l,r);if(f instanceof e){if(null!=this.cancelPromise){if(f._isCancelled()){var _=new a("late cancellation observer");return r._attachExtraTrace(_),o.e=_,o}f.isPending()&&f._attachCancellationCallback(new c(this))}return f._then(d,h,void 0,this,void 0)}}}return r.isRejected()?(u(this),o.e=t,o):(u(this),t)}return l.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){u(this.finallyHandler)},e.prototype._passThrough=function(t,e,i,n){return"function"!=typeof t?this.then():this._then(i,n,void 0,new l(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,f,f)},e.prototype.tap=function(t){return this._passThrough(t,1,f)},e.prototype.tapCatch=function(t){var i=arguments.length;if(1===i)return this._passThrough(t,1,void 0,f);var n,a=new Array(i-1),o=0;for(n=0;n0&&"function"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var r=new i(n).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a,o){var s=e._getDomain,l=t("./util"),c=l.tryCatch,u=l.errorObj,d=e._async;function h(t,e,i,n){this.constructor$(t),this._promise._captureStackTrace();var r=s();this._callback=null===r?e:l.domainBind(r,e),this._preservedValues=n===a?new Array(this.length()):null,this._limit=i,this._inFlight=0,this._queue=[],d.invoke(this._asyncInit,this,void 0)}function f(t,i,r,a){if("function"!=typeof i)return n("expecting a function but got "+l.classString(i));var o=0;if(void 0!==r){if("object"!=typeof r||null===r)return e.reject(new TypeError("options argument must be an object but it is "+l.classString(r)));if("number"!=typeof r.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(r.concurrency)));o=r.concurrency}return o="number"==typeof o&&isFinite(o)&&o>=1?o:0,new h(t,i,o,a).promise()}l.inherits(h,i),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,i){var n=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(i<0){if(n[i=-1*i-1]=t,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return n[i]=t,this._queue.push(i),!1;null!==s&&(s[i]=t);var d=this._promise,h=this._callback,f=d._boundValue();d._pushContext();var _=c(h).call(f,t,i,a),g=d._popContext();if(o.checkForgottenReturns(_,g,null!==s?"Promise.filter":"Promise.map",d),_===u)return this._reject(_.e),!0;var p=r(_,this._promise);if(p instanceof e){var v=(p=p._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,n[i]=p,p._proxy(this,-1*(i+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(p._reason()),!0):(this._cancel(),!0);_=p._value()}n[i]=_}var m=++this._totalResolved;return m>=a&&(null!==s?this._filter(n,s):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,i=this._values;t.length>0&&this._inFlight1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],u=arguments[2];n=o.isArray(c)?s(t).apply(u,c):s(t).call(u,c)}else n=s(t)();var d=l._popContext();return a.checkForgottenReturns(n,d,"Promise.try",l),l._resolveFromSyncValue(n),l},e.prototype._resolveFromSyncValue=function(t){t===o.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,i){"use strict";var n=t("./util"),r=n.maybeWrapAsError,a=t("./errors"),o=a.OperationalError,s=t("./es5"),l=/^(?:name|message|stack|cause)$/;function c(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var i=s.keys(t),r=0;r1){var i,n=new Array(e-1),r=0;for(i=0;i0&&"function"!=typeof t&&"function"!=typeof e){var i=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(i+=", "+c.classString(e)),this._warn(i)}return this._then(t,e,void 0,void 0,void 0)},D.prototype.done=function(t,e){var i=this._then(t,e,void 0,void 0,void 0);i._setIsFinal()},D.prototype.spread=function(t){return"function"!=typeof t?a("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,v,void 0)},D.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},D.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},D.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},D.getNewLibraryCopy=i.exports,D.is=function(t){return t instanceof D},D.fromNode=D.fromCallback=function(t){var e=new D(p);e._captureStackTrace();var i=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=E(t)(S(e,i));return n===C&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},D.all=function(t){return new b(t).promise()},D.cast=function(t){var e=y(t);return e instanceof D||((e=new D(p))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},D.resolve=D.fulfilled=D.cast,D.reject=D.rejected=function(t){var e=new D(p);return e._captureStackTrace(),e._rejectCallback(t,!0),e},D.setScheduler=function(t){if("function"!=typeof t)throw new _("expecting a function but got "+c.classString(t));return h.setScheduler(t)},D.prototype._then=function(t,e,i,n,r){var a=void 0!==r,o=a?r:new D(p),l=this._target(),u=l._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var d=s();if(0!=(50397184&u)){var f,_,v=l._settlePromiseCtx;0!=(33554432&u)?(_=l._rejectionHandler0,f=t):0!=(16777216&u)?(_=l._fulfillmentHandler0,f=e,l._unsetRejectionIsUnhandled()):(v=l._settlePromiseLateCancellationObserver,_=new g("late cancellation observer"),l._attachExtraTrace(_),f=e),h.invoke(v,l,{handler:null===d?f:"function"==typeof f&&c.domainBind(d,f),promise:o,receiver:n,value:_})}else l._addCallbacks(t,e,o,n,d);return o},D.prototype._length=function(){return 65535&this._bitField},D.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},D.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},D.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},D.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},D.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},D.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},D.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},D.prototype._isFinal=function(){return(4194304&this._bitField)>0},D.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},D.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},D.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},D.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},D.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==l)return void 0===e&&this._isBound()?this._boundValue():e},D.prototype._promiseAt=function(t){return this[4*t-4+2]},D.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},D.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},D.prototype._boundValue=function(){},D.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,i=t._rejectionHandler0,n=t._promise0,r=t._receiverAt(0);void 0===r&&(r=l),this._addCallbacks(e,i,n,r,null)},D.prototype._migrateCallbackAt=function(t,e){var i=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),r=t._promiseAt(e),a=t._receiverAt(e);void 0===a&&(a=l),this._addCallbacks(i,n,r,a,null)},D.prototype._addCallbacks=function(t,e,i,n,r){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=i,this._receiver0=n,"function"==typeof t&&(this._fulfillmentHandler0=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this._rejectionHandler0=null===r?e:c.domainBind(r,e));else{var o=4*a-4;this[o+2]=i,this[o+3]=n,"function"==typeof t&&(this[o+0]=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this[o+1]=null===r?e:c.domainBind(r,e))}return this._setLength(a+1),a},D.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},D.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var i=y(t,this);if(!(i instanceof D))return this._fulfill(t);e&&this._propagateFrom(i,2);var r=i._target();if(r!==this){var a=r._bitField;if(0==(50397184&a)){var o=this._length();o>0&&r._migrateCallback0(this);for(var s=1;s>>16)){if(t===this){var i=n();return this._attachExtraTrace(i),this._reject(i)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this),this._dereferenceTrace())}},D.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},D.prototype._fulfillPromises=function(t,e){for(var i=1;i0){if(0!=(16842752&t)){var i=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,i,t),this._rejectPromises(e,i)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},D.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},D.defer=D.pending=function(){x.deprecated("Promise.defer","new Promise");var t=new D(p);return{promise:t,resolve:I,reject:A}},c.notEnumerableProp(D,"_makeSelfResolutionError",n),t("./method")(D,p,y,a,x),t("./bind")(D,p,y,x),t("./cancel")(D,b,a,x),t("./direct_resolve")(D),t("./synchronous_inspection")(D),t("./join")(D,b,y,p,h,s),D.Promise=D,D.version="3.5.4",t("./map.js")(D,b,a,y,p,x),t("./call_get.js")(D),t("./using.js")(D,a,y,w,p,x),t("./timers.js")(D,p,x),t("./generators.js")(D,a,p,y,o,x),t("./nodeify.js")(D),t("./promisify.js")(D,p),t("./props.js")(D,b,y,a),t("./race.js")(D,p,y,a),t("./reduce.js")(D,b,a,y,p,x),t("./settle.js")(D,b,x),t("./some.js")(D,b,a),t("./filter.js")(D,p),t("./each.js")(D,p),t("./any.js")(D),c.toFastProperties(D),c.toFastProperties(D.prototype),P({a:1}),P({b:2}),P({c:3}),P(1),P(function(){}),P(void 0),P(!1),P(new D(p)),x.setBounds(d.firstLineError,c.lastLineError),D}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a){var o=t("./util");function s(t){var n=this._promise=new e(i);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.isArray,o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(i,a){var s=n(this._values,this._promise);if(s instanceof e){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,a);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=r("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(t){var i=this.getActualLength(t.length);this._length=i,this._values=this.shouldCopyValues()?new Array(i):this._values;for(var r=this._promise,a=!1,o=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var i=0;i=this._length){var n;if(this._isMap)n=function(t){for(var e=new a,i=t.length/2|0,n=0;n>1},e.prototype.props=function(){return d(this)},e.props=function(t){return d(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,i){"use strict";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var i=new r;return i._bitField=33554432,i._settledValueField=t,this._promiseResolved(e,i)},o.prototype._promiseRejected=function(t,e){var i=new r;return i._bitField=16777216,i._settledValueField=t,this._promiseResolved(e,i)},e.settle=function(t){return n.deprecated(".settle()",".reflect()"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,i){"use strict";e.exports=function(e,i,n){var r=t("./util"),a=t("./errors").RangeError,o=t("./errors").AggregateError,s=r.isArray,l={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function u(t,e){if((0|e)!==e||e<0)return n("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var i=new c(t),r=i.promise();return i.setHowMany(e),i.init(),r}r.inherits(c,i),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new o,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return u(t,e)},e.prototype.some=function(t){return u(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,i){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var i=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return o.call(this._target())},t.prototype.isRejected=function(){return a.call(this._target())},t.prototype.isFulfilled=function(){return r.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return i.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,i){"use strict";e.exports=function(e,i){var n=t("./util"),r=n.errorObj,a=n.isObject,o={}.hasOwnProperty;return function(t,s){if(a(t)){if(t instanceof e)return t;var l=function(t){try{return function(t){return t.then}(t)}catch(t){return r.e=t,r}}(t);if(l===r){s&&s._pushContext();var c=e.reject(l.e);return s&&s._popContext(),c}if("function"==typeof l){if(function(t){try{return o.call(t,"_promise0")}catch(t){return!1}}(t)){var c=new e(i);return t._then(c._fulfill,c._reject,void 0,c,null),c}return function(t,a,o){var s=new e(i),l=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,u=n.tryCatch(a).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,c,!0),s=null)});return c=!1,s&&u===r&&(s._rejectCallback(u.e,!0,!0),s=null),l}(t,l,s)}}return t}}},{"./util":36}],34:[function(t,e,i){"use strict";e.exports=function(e,i,n){var r=t("./util"),a=e.TimeoutError;function o(t){this.handle=t}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,r){var a,l;return void 0!==r?(a=e.resolve(r)._then(s,null,null,t,void 0),n.cancellation()&&r instanceof e&&a._setOnCancel(r)):(a=new e(i),l=setTimeout(function(){a._fulfill()},+t),n.cancellation()&&a._setOnCancel(new o(l)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};function c(t){return clearTimeout(this.handle),t}function u(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return l(t,this)},e.prototype.timeout=function(t,e){var i,s;t=+t;var l=new o(setTimeout(function(){i.isPending()&&function(t,e,i){var n;n="string"!=typeof e?e instanceof Error?e:new a("operation timed out"):new a(e),r.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=i&&i.cancel()}(i,e,s)},t));return n.cancellation()?(s=this.then(),(i=s._then(c,u,void 0,l,void 0))._setOnCancel(l)):i=this._then(c,u,void 0,l,void 0),i}}},{"./util":36}],35:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a,o){var s=t("./util"),l=t("./errors").TypeError,c=t("./util").inherits,u=s.errorObj,d=s.tryCatch,h={};function f(t){setTimeout(function(){throw t},0)}function _(t,i){var r=0,o=t.length,s=new e(a);return function a(){if(r>=o)return s._fulfill();var l=function(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[r++]);if(l instanceof e&&l._isDisposable()){try{l=n(l._getDisposer().tryDispose(i),t.promise)}catch(t){return f(t)}if(l instanceof e)return l._then(a,f,null,null,null)}a()}(),s}function g(t,e,i){this._data=t,this._promise=e,this._context=i}function p(t,e,i){this.constructor$(t,e,i)}function v(t){return g.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}g.prototype.data=function(){return this._data},g.prototype.promise=function(){return this._promise},g.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},g.prototype.tryDispose=function(t){var e=this.resource(),i=this._context;void 0!==i&&i._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==i&&i._popContext(),this._promise._unsetDisposable(),this._data=null,n},g.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(p,g),p.prototype.doDispose=function(t,e){var i=this.data();return i.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,i=0;i0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,r());throw new l}}},{"./errors":12,"./util":36}],36:[function(t,n,r){"use strict";var a=t("./es5"),o="undefined"==typeof navigator,s={e:{}},l,c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==i?i:void 0!==this?this:null;function u(){try{var t=l;return l=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function d(t){return l=t,u}var h=function(t,e){var i={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)i.call(e.prototype,n)&&"$"!==n.charAt(n.length-1)&&(this[n+"$"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype};function f(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function _(t){return"function"==typeof t||"object"==typeof t&&null!==t}function g(t){return f(t)?new Error(C(t)):t}function p(t,e){var i,n=t.length,r=new Array(n+1);for(i=0;i1,n=e.length>0&&!(1===e.length&&"constructor"===e[0]),r=k.test(t+"")&&a.names(t).length>0;if(i||n||r)return!0}return!1}catch(t){return!1}}function x(t){function e(){}e.prototype=t;var i=new e;function n(){return typeof i.foo}return n(),n(),t}var $=/^[a-z$_][a-z$_0-9]*$/i;function T(t){return $.test(t)}function S(t,e,i){for(var n=new Array(t),r=0;r10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(t){B.lastLineError=t}n.exports=B},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,i(28),i(12),i(130).setImmediate)},function(t,e,i){t.exports=i(131)},function(t,e,i){var n=i(0);t.exports=function(){var t={};return{getState:function(e){if(e)return t[e].method();var i={};for(var r in t)t[r].internal||n.mixin(i,t[r].method(),!0);return i},registerProvider:function(e,i,n){t[e]={method:i,internal:n}},unregisterProvider:function(e){delete t[e]}}}},function(t,e){t.exports=function(t){var e={};function i(i,n,r){r=r||i;var a=t.config,o=t.templates;t.config[i]&&e[r]!=a[i]&&(n&&o[r]||(o[r]=t.date.date_to_str(a[i]),e[r]=a[i]))}return{initTemplates:function(){var e=t.locale.labels;e.gantt_save_btn=e.icon_save,e.gantt_cancel_btn=e.icon_cancel,e.gantt_delete_btn=e.icon_delete;var n=t.date,r=n.date_to_str,a=t.config;i("date_scale",!0,void 0,t.config,t.templates),i("date_grid",!0,"grid_date_format",t.config,t.templates),i("task_date",!0,void 0,t.config,t.templates),t.mixin(t.templates,{xml_date:n.str_to_date(a.xml_date,a.server_utc),xml_format:r(a.xml_date,a.server_utc),api_date:n.str_to_date(a.api_date),progress_text:function(t,e,i){return""},grid_header_class:function(t,e){return""},task_text:function(t,e,i){return i.text},task_class:function(t,e,i){return""},grid_row_class:function(t,e,i){return""},task_row_class:function(t,e,i){return""},task_cell_class:function(t,e){return""},scale_cell_class:function(t){return""},scale_row_class:function(t){return""},grid_indent:function(t){return"
"},grid_folder:function(t){return"
"},grid_file:function(t){return"
"},grid_open:function(t){return"
"},grid_blank:function(t){return"
"},date_grid:function(e,i){return i&&t.isUnscheduledTask(i)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(i):t.templates.grid_date_format(e)},task_time:function(e,i,n){return t.isUnscheduledTask(n)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(n):t.templates.task_date(e)+" - "+t.templates.task_date(i)},task_unscheduled_time:function(t){return""},time_picker:r(a.time_picker),link_class:function(t){return""},link_description:function(e){var i=t.getTask(e.source),n=t.getTask(e.target);return""+i.text+""+n.text+""},drag_link:function(e,i,n,r){e=t.getTask(e);var a=t.locale.labels,o=""+e.text+" "+(i?a.link_start:a.link_end)+"
";return n&&(o+=" "+(n=t.getTask(n)).text+" "+(r?a.link_start:a.link_end)+"
"),o},drag_link_class:function(e,i,n,r){var a="";return e&&n&&(a=" "+(t.isLinkAllowed(e,n,i,r)?"gantt_link_allow":"gantt_link_deny")),"gantt_link_tooltip"+a},tooltip_date_format:n.date_to_str("%Y-%m-%d"),tooltip_text:function(e,i,n){return"Task: "+n.text+"
Start date: "+t.templates.tooltip_date_format(e)+"
End date: "+t.templates.tooltip_date_format(i)}})},initTemplate:i}}},function(t,e,i){var n=i(4),r=i(0),a=i(29);t.exports=function(t){function e(t){return{target:t.target||t.srcElement,pageX:t.pageX,pageY:t.pageY,clientX:t.clientX,clientY:t.clientY,metaKey:t.metaKey,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey}}function i(i,a){this._obj=i,this._settings=a||{},n(this);var o=this.getInputMethods();this._drag_start_timer=null,t.attachEvent("onGanttScroll",r.bind(function(t,e){this.clearDragTimer()},this));for(var s=0;sthis.config.sensitivity},initDnDMarker:function(){var t=this.config.marker=document.createElement("div");t.className="gantt_drag_marker",t.innerHTML="Dragging object",document.body.appendChild(t)},backupEventTarget:function(i,n){if(t.config.touch){var r=n(i),a=r.target||r.srcElement,o=a.cloneNode(!0);this.config.original_target=e(r),this.config.original_target.target=o,this.config.backup_element=a,a.parentNode.appendChild(o),a.style.display="none",document.body.appendChild(a)}},getInputMethods:function(){var e=[];if(e.push({move:"mousemove",down:"mousedown",up:"mouseup",accessor:function(t){return t}}),t.config.touch){var i=!0;try{document.createEvent("TouchEvent")}catch(t){i=!1}i?e.push({move:"touchmove",down:"touchstart",up:"touchend",accessor:function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:document.elementFromPoint(t.touches[0].clientX,t.touches[0].clientY),pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t}}):window.navigator.pointerEnabled?e.push({move:"pointermove",down:"pointerdown",up:"pointerup",accessor:function(t){return"mouse"==t.pointerType?null:t}}):window.navigator.msPointerEnabled&&e.push({move:"MSPointerMove",down:"MSPointerDown",up:"MSPointerUp",accessor:function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t}})}return e},clearDragTimer:function(){this._drag_start_timer&&(clearTimeout(this._drag_start_timer),this._drag_start_timer=null)},dragStart:function(e,i,n){this.config&&this.config.started||(this.config={obj:e,marker:null,started:!1,pos:this.getPosition(i),sensitivity:4},this._settings&&r.mixin(this.config,this._settings,!0),this.traceDragEvents(e,n),t._prevent_touch_scroll=!0,document.body.className+=" gantt_noselect",t.config.touch&&this.dragMove(e,i,n.accessor))},dragMove:function(e,i,n){var r=n(i);if(!r)return!1;if(!this.config.marker&&!this.config.started){var a=this.getPosition(r);if(t.config.touch||this.checkPositionChange(a)){if(this.config.started=!0,this.config.ignore=!1,!1===this.callEvent("onBeforeDragStart",[e,this.config.original_target]))return this.config.ignore=!0,!1;this.backupEventTarget(i,n),this.initDnDMarker(),t._touch_feedback(),this.callEvent("onAfterDragStart",[e,this.config.original_target])}else this.config.ignore=!0}return!this.config.ignore&&(r.pos=this.getPosition(r),this.config.marker.style.left=r.pos.x+"px",this.config.marker.style.top=r.pos.y+"px",this.callEvent("onDragMove",[e,r]),!0)},dragEnd:function(e){var i=this.config.backup_element;i&&i.parentNode&&i.parentNode.removeChild(i),t._prevent_touch_scroll=!1,this.config.marker&&(this.config.marker.parentNode.removeChild(this.config.marker),this.config.marker=null,this.callEvent("onDragEnd",[])),this.config.started=!1,document.body.className=document.body.className.replace(" gantt_noselect","")},getPosition:function(t){var e=0,i=0;return(t=t||window.event).pageX||t.pageY?(e=t.pageX,i=t.pageY):(t.clientX||t.clientY)&&(e=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,i=t.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:e,y:i}}},i}},function(t,e){t.exports=function(t){var e={init:function(){for(var e=t.locale,i=e.date.month_short,n=e.date.month_short_hash={},r=0;r=9?9:i>=6?6:i>=3?3:0,t.setMonth(e),t},year_start:function(t){return t.setMonth(0),this.month_start(t)},day_start:function(t){return this.date_part(t)},hour_start:function(t){return t.getMinutes()&&t.setMinutes(0),this.minute_start(t),t},minute_start:function(t){return t.getSeconds()&&t.setSeconds(0),t.getMilliseconds()&&t.setMilliseconds(0),t},_add_days:function(t,e){var i=new Date(t.valueOf());return i.setDate(i.getDate()+e),e>=0&&!t.getHours()&&i.getHours()&&(i.getDate()<=t.getDate()||i.getMonth()11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+to_fixed(date.getSeconds())+"';case"%W":return'"+to_fixed(getISOWeek(date))+"';case"%w":return'"+to_fixed(getWeek(date))+"';default:return t}}),n&&(i=i.replace(/date\.get/g,"date.getUTC"));var r=new Function("date","to_fixed","locale","getISOWeek","getWeek",'return "'+i+'";');return function(i){return r(i,e.to_fixed,t.locale,e.getISOWeek,e.getWeek)}},str_to_date:function(e,i){for(var n="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",r=e.match(/%[a-zA-Z]/g),a=0;a50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":n+="set[3]=temp["+a+"]||0;";break;case"%i":n+="set[4]=temp["+a+"]||0;";break;case"%Y":n+="set[0]=temp["+a+"]||0;";break;case"%a":case"%A":n+="set[3]=set[3]%12+((temp["+a+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":n+="set[5]=temp["+a+"]||0;";break;case"%M":n+="set[1]=locale.date.month_short_hash[temp["+a+"]]||0;";break;case"%F":n+="set[1]=locale.date.month_full_hash[temp["+a+"]]||0;"}var o="set[0],set[1],set[2],set[3],set[4],set[5]";i&&(o=" Date.UTC("+o+")");var s=new Function("date","locale","var set=[0,0,1,0,0,0]; "+n+" return new Date("+o+");");return function(e){return s(e,t.locale)}},getISOWeek:function(e){return t.date._getWeekNumber(e,!0)},_getWeekNumber:function(t,e){if(!t)return!1;var i=t.getDay();e&&0===i&&(i=7);var n=new Date(t.valueOf());n.setDate(t.getDate()+(4-i));var r=n.getFullYear(),a=Math.round((n.getTime()-new Date(r,0,1).getTime())/864e5);return 1+Math.floor(a/7)},getWeek:function(e){return t.date._getWeekNumber(e,t.config.start_on_monday)},getUTCISOWeek:function(e){return t.date.getISOWeek(e)},convert_to_utc:function(t){return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())},parseDate:function(e,i){return e&&!e.getFullYear&&("function"!=typeof i&&(i="string"==typeof i?t.defined(t.templates[i])?t.templates[i]:t.date.str_to_date(i):t.templates.xml_date),e=e?i(e):null),e}};return e}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if("string"==typeof t||"number"==typeof t)return t;var e="";for(var i in t){var n="";t.hasOwnProperty(i)&&(n=i+"="+(n="string"==typeof t[i]?encodeURIComponent(t[i]):"number"==typeof t[i]?t[i]:encodeURIComponent(JSON.stringify(t[i]))),e.length&&(n="&"+n),e+=n)}return e}},function(t,e,i){var n=i(13),r=i(137).default;function a(t,e){var i={method:t};if(0===e.length)throw new Error("Arguments list of query is wrong.");if(1===e.length)return"string"==typeof e[0]?(i.url=e[0],i.async=!0):(i.url=e[0].url,i.async=e[0].async||!0,i.callback=e[0].callback,i.headers=e[0].headers),e[0].data?"string"!=typeof e[0].data?i.data=r(e[0].data):i.data=e[0].data:i.data="",i;switch(i.url=e[0],t){case"GET":case"DELETE":i.callback=e[1],i.headers=e[2];break;case"POST":case"PUT":e[1]?"string"!=typeof e[1]?i.data=r(e[1]):i.data=e[1]:i.data="",i.callback=e[2],i.headers=e[3]}return i}t.exports=function(t){return{cache:!0,method:"get",parse:function(t){return"string"!=typeof t?t:(t=t.replace(/^[\s]+/,""),window.DOMParser&&!n.isIE?e=(new window.DOMParser).parseFromString(t,"text/xml"):window.ActiveXObject!==window.undefined&&((e=new window.ActiveXObject("Microsoft.XMLDOM")).async="false",e.loadXML(t)),e);var e},xmltop:function(e,i,n){if(void 0===i.status||i.status<400){var r=i.responseXML?i.responseXML||i:this.parse(i.responseText||i);if(r&&null!==r.documentElement&&!r.getElementsByTagName("parsererror").length)return r.getElementsByTagName(e)[0]}return-1!==n&&t.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],n]),document.createElement("DIV")},xpath:function(t,e){if(e.nodeName||(e=e.responseXML||e),n.isIE)return e.selectNodes(t)||[];for(var i,r=[],a=(e.ownerDocument||e).evaluate(t,e,null,XPathResult.ANY_TYPE,null);i=a.iterateNext();)r.push(i);return r},query:function(t){return this._call(t.method||"GET",t.url,t.data||"",t.async||!0,t.callback,t.headers)},get:function(t,e,i){var n=a("GET",arguments);return this.query(n)},getSync:function(t,e){var i=a("GET",arguments);return i.async=!1,this.query(i)},put:function(t,e,i,n){var r=a("PUT",arguments);return this.query(r)},del:function(t,e,i){var n=a("DELETE",arguments);return this.query(n)},post:function(t,e,i,n){1==arguments.length?e="":2!=arguments.length||"function"!=typeof e&&"function"!=typeof window[e]||(e,e="");var r=a("POST",arguments);return this.query(r)},postSync:function(t,e,i){e=null===e?"":String(e);var n=a("POST",arguments);return n.async=!1,this.query(n)},_call:function(e,i,r,a,o,s){return new t.Promise(function(l,c){var u=window.XMLHttpRequest&&!n.isIE?new XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP"),d=null!==navigator.userAgent.match(/AppleWebKit/)&&null!==navigator.userAgent.match(/Qt/)&&null!==navigator.userAgent.match(/Safari/);if(a&&(u.onreadystatechange=function(){if(4==u.readyState||d&&3==u.readyState){if((200!=u.status||""===u.responseText)&&!t.callEvent("onAjaxError",[u]))return;window.setTimeout(function(){"function"==typeof o&&o.apply(window,[{xmlDoc:u,filePath:i}]),l(u),"function"==typeof o&&(o=null,u=null)},0)}}),"GET"!=e||this.cache||(i+=(i.indexOf("?")>=0?"&":"?")+"dhxr"+(new Date).getTime()+"=1"),u.open(e,i,a),s)for(var h in s)u.setRequestHeader(h,s[h]);else"POST"==e.toUpperCase()||"PUT"==e||"DELETE"==e?u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):"GET"==e&&(r=null);if(u.setRequestHeader("X-Requested-With","XMLHttpRequest"),u.send(r),!a)return{xmlDoc:u,filePath:i}})},urlSeparator:function(t){return-1!=t.indexOf("?")?"&":"?"}}}},function(t,e){t.exports=function(){return{layout:{css:"gantt_container",rows:[{cols:[{view:"grid",scrollX:"scrollHor",scrollY:"scrollVer"},{resizer:!0,width:1},{view:"timeline",scrollX:"scrollHor",scrollY:"scrollVer"},{view:"scrollbar",id:"scrollVer"}]},{view:"scrollbar",id:"scrollHor",height:20}]},links:{finish_to_start:"0",start_to_start:"1",finish_to_finish:"2",start_to_finish:"3"},types:{task:"task",project:"project",milestone:"milestone"},auto_types:!1,duration_unit:"day",work_time:!1,correct_work_time:!1,skip_off_time:!1,cascade_delete:!0,autosize:!1,autosize_min_width:0,autoscroll:!0,autoscroll_speed:30,show_links:!0,show_task_cells:!0,static_background:!1,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,xml_date:"%d-%m-%Y %H:%i",api_date:"%d-%m-%Y %H:%i",start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,preserve_scroll:!0,readonly:!1,date_grid:"%Y-%m-%d",drag_links:!0,drag_progress:!0,drag_resize:!0,drag_project:!1,drag_move:!0,drag_mode:{resize:"resize",progress:"progress",move:"move",ignore:"ignore"},round_dnd_dates:!0,link_wrapper_width:20,root_id:0,autofit:!1,columns:[{name:"text",tree:!0,width:"*",resize:!0},{name:"start_date",align:"center",resize:!0},{name:"duration",align:"center"},{name:"add",width:44}],step:1,scale_unit:"day",scale_offset_minimal:!0,subscales:[],inherit_scale_class:!1,time_step:60,duration_step:1,date_scale:"%d %M",task_date:"%d %F %Y",time_picker:"%H:%i",task_attribute:"task_id",link_attribute:"link_id",layer_attribute:"data-layer",buttons_left:["gantt_save_btn","gantt_cancel_btn"],_migrate_buttons:{dhx_save_btn:"gantt_save_btn",dhx_cancel_btn:"gantt_cancel_btn",dhx_delete_btn:"gantt_delete_btn"},buttons_right:["gantt_delete_btn"],lightbox:{sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"time",type:"duration",map_to:"auto"}],project_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",readonly:!0,map_to:"auto"}],milestone_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",single_date:!0,map_to:"auto"}]},drag_lightbox:!0,sort:!1,details_on_create:!0,details_on_dblclick:!0,initial_scroll:!0,task_scroll_offset:100,order_branch:!1,order_branch_free:!1,task_height:"full",min_column_width:70,min_grid_column_width:70,grid_resizer_column_attribute:"column_index",grid_resizer_attribute:"grid_resizer",keep_grid_width:!1,grid_resize:!1,show_unscheduled:!0,readonly_property:"readonly",editable_property:"editable",calendar_property:"calendar_id",resource_calendars:{},inherit_calendar:!1,type_renderers:{},open_tree_initially:!1,optimize_render:!0,prevent_default_scroll:!1,show_errors:!0,wai_aria_attributes:!0,smart_scales:!0,rtl:!1,placeholder_task:!1}}},function(t,e){t.exports=function(){var t={};return{services:{config:"config",templates:"templates",locale:"locale"},setService:function(e,i){t[e]=i},getService:function(e){return t[e]?t[e]():null},dropService:function(e){t[e]&&delete t[e]},config:function(){return this.getService("config")},templates:function(){return this.getService("templates")},locale:function(){return this.getService("locale")},destructor:function(){for(var e in t)if(t[e]){var i=t[e];i&&i.destructor&&i.destructor()}t=null}}}},function(t,e){t.exports=function(t){t.$inject=function(t){return t(this.$services)}}},function(t,e){t.exports={KEY_CODES:{UP:38,DOWN:40,LEFT:37,RIGHT:39,SPACE:32,ENTER:13,DELETE:46,ESC:27,TAB:9}}},function(t,e,i){i(15),t.exports=function(){var t=new function(){this.constants=i(142),this.version="6.1.5",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}};i(141)(t),t.$services=t.$inject(i(140)),t.config=t.$inject(i(139)),t.ajax=i(138)(t),t.date=i(136)(t);var e=i(135)(t);t.$services.setService("dnd",function(){return e}),t.$services.setService("config",function(){return t.config}),t.$services.setService("date",function(){return t.date}),t.$services.setService("locale",function(){return t.locale}),t.$services.setService("templates",function(){return t.templates});var n=i(134)(t);t.$services.setService("templateLoader",function(){return n}),i(4)(t);var r=new(i(133));r.registerProvider("global",function(){return{min_date:t._min_date,max_date:t._max_date,selected_task:t.$data.tasksStore.getSelectedId()}}),t.getState=r.getState,t.$services.setService("state",function(){return r});var a=i(0);a.mixin(t,a),t.Promise=i(132),t.env=i(13);var o=i(1);t.utils={dom:{getNodePosition:o.getNodePosition,getRelativeEventPosition:o.getRelativeEventPosition,isChildOf:o.isChildOf,hasClass:o.hasClass,closest:o.closest}};var s=i(16)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,a.mixin(t,i(128)(t));var l=i(127).init(t);t.$ui=l.factory,t.$ui.layers=l.render,t.$mouseEvents=l.mouseEvents,t.$services.setService("mouseEvents",function(){return t.$mouseEvents}),t.mixin(t,l.layersApi),i(91)(t),t.$services.setService("layers",function(){return l.layersService});var c=i(90);t.mixin(t,c()),i(89)(t);var u=i(82);return t.dataProcessor=u.DEPRECATED_api,t.createDataProcessor=u.createDataProcessor,i(78)(t),i(69)(t),i(68)(t),i(67)(t),i(66)(t),i(65)(t),i(64)(t),i(55)(t),i(54)(t),i(45)(t),i(44)(t),i(43)(t),i(42)(t),i(41)(t),i(40)(t),i(39)(t),i(38)(t),i(37)(t),i(36)(t),i(35)(t),i(34)(t),i(33)(t),i(32)(t),i(30)(t),t}},function(t,e){t.exports=function(t){}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(144),r=i(143),a=window.gantt=r();e.gantt=a,n(a),e.default=a}])}); +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)("object"==typeof exports?exports:t)[n]=i[n]}}(window,function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/codebase/",i(i.s=145)}([function(t,e,i){var n,r=i(3);t.exports={copy:function t(e){var i,n;if(e&&"object"==typeof e)switch(!0){case r.isDate(e):n=new Date(e);break;case r.isArray(e):for(n=new Array(e.length),i=0;i=0}function a(t){return!{a:!0,area:!0}[t.nodeName.loLowerCase()]||!!t.getAttribute("href")}function o(t){return!{input:!0,select:!0,textarea:!0,button:!0,object:!0}[t.nodeName.toLowerCase()]||!t.hasAttribute("disabled")}function s(t){if(!t)return"";var e=t.className||"";return e.baseVal&&(e=e.baseVal),e.indexOf||(e=""),u(e)}var l=document.createElement("div");function c(t){return t.tagName?t:(t=t||window.event).target||t.srcElement}function u(t){return(String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")}).apply(t)}t.exports={getNodePosition:i,getFocusableNodes:function(t){for(var e=t.querySelectorAll(["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"].join(", ")),i=Array.prototype.slice.call(e,0),s=0;s=0){if(!i)return n;var o=0===a||!u(r.charAt(a-1)),l=a+e.length>=r.length||!u(r.charAt(a+e.length));if(o&&l)return n}}n=n.parentNode}return null},locateAttribute:function(t,e){if(e){for(var i=c(t);i;){if(i.getAttribute&&i.getAttribute(e))return i;i=i.parentNode}return null}},getTargetNode:c,getRelativeEventPosition:function(t,e){var n=document.documentElement,r=i(e);return{x:t.clientX+n.scrollLeft-n.clientLeft-r.x+e.scrollLeft,y:t.clientY+n.scrollTop-n.clientTop-r.y+e.scrollTop}},isChildOf:function(t,e){if(!t||!e)return!1;for(;t&&t!=e;)t=t.parentNode;return t===e},hasClass:function(t,e){return"classList"in t?t.classList.contains(e):new RegExp("\\b"+e+"\\b").test(t.className)},closest:function(t,e){if(t.closest)return t.closest(e);if(t.matches||t.msMatchesSelector||t.webkitMatchesSelector){var i=t;if(!document.documentElement.contains(i))return null;do{if((i.matches||i.msMatchesSelector||i.webkitMatchesSelector).call(i,e))return i;i=i.parentElement||i.parentNode}while(null!==i&&1===i.nodeType);return null}return console.error("Your browser is not supported"),null}}},function(t,e){t.exports=function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);function n(){this.constructor=t}t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}},function(t,e){var i={second:1,minute:60,hour:3600,day:86400,week:604800,month:2592e3,quarter:7776e3,year:31536e3};function n(t,e){var i=[];if(t.filter)return t.filter(e);for(var n=0;nr.maxWidth&&(i=r.maxWidth),nr.maxHeight&&(n=r.maxHeight),this.setSize(i,n),this.$preResize,this.$preResize=!1},t.prototype.hide=function(){this._hide(!0),this.resize()},t.prototype.show=function(t){this._hide(!1),t&&this.$parent&&this.$parent.show(),this.resize()},t.prototype._hide=function(t){if(!0===t&&this.$view.parentNode)this.$view.parentNode.removeChild(this.$view);else if(!1===t&&!this.$view.parentNode){var e=this.$parent.cellIndex(this.$id);this.$parent.moveView(this,e)}this.$config.hidden=t},t.prototype.$toHTML=function(t,e){void 0===t&&(t=""),e=[e||"",this.$config.css||""].join(" ");var i=this.$config,n="";i.raw?t="string"==typeof i.raw?i.raw:"":(t||(t="
"+(i.html||"")+"
"),i.header&&(n="
"+(i.canCollapse?"
":"")+"
"+i.header+"
"));return"
"+n+t+"
"},t.prototype.$fill=function(t,e){this.$view=t,this.$parent=e,this.init()},t.prototype.getNode=function(){return this.$view.querySelector("gantt_layout_cell")||this.$view},t.prototype.init=function(){var t=this;this._headerClickHandler=function(e){a.locateAttribute(e,"data-cell-id")==t.$id&&t.toggle()},this.$gantt.$services.getService("mouseEvents").delegate("click","gantt_header_arrow",this._headerClickHandler),this.callEvent("onReady",[])},t.prototype.toggle=function(){this.$config.collapsed=!this.$config.collapsed,this.resize()},t.prototype.getSize=function(){var t={height:this.$config.height||0,width:this.$config.width||0,gravity:this.$config.gravity||1,minHeight:this.$config.minHeight||0,minWidth:this.$config.minWidth||0,maxHeight:this.$config.maxHeight||1e5,maxWidth:this.$config.maxWidth||1e5};if(this.$config.collapsed){var e="x"===this.$config.mode;t[e?"width":"height"]=t[e?"maxWidth":"maxHeight"]=this.$config.headerHeight}return t},t.prototype.getContentSize=function(){var t=this.$lastSize.contentX;t!==1*t&&(t=this.$lastSize.width);var e=this.$lastSize.contentY;return e!==1*e&&(e=this.$lastSize.height),{width:t,height:e}},t.prototype._getBorderSizes=function(){var t={top:0,right:0,bottom:0,left:0,horizontal:0,vertical:0};return this._currentBorders&&(this._currentBorders[this._borders.left]&&(t.left=1,t.horizontal++),this._currentBorders[this._borders.right]&&(t.right=1,t.horizontal++),this._currentBorders[this._borders.top]&&(t.top=1,t.vertical++),this._currentBorders[this._borders.bottom]&&(t.bottom=1,t.vertical++)),t},t.prototype.setSize=function(t,e){this.$view.style.width=t+"px",this.$view.style.height=e+"px";var i=this._getBorderSizes(),n=e-i.vertical,r=t-i.horizontal;this.$lastSize={x:t,y:e,contentX:r,contentY:n},this.$config.header?this._sizeHeader():this._sizeContent()},t.prototype._borders={left:"gantt_layout_cell_border_left",right:"gantt_layout_cell_border_right",top:"gantt_layout_cell_border_top",bottom:"gantt_layout_cell_border_bottom"},t.prototype._setBorders=function(t,e){e||(e=this);var i=e.$view;for(var n in this._borders)a.removeClassName(i,this._borders[n]);"string"==typeof t&&(t=[t]);var r={};for(n=0;n";return e+=r.getHtmlSelect(t.options,[{key:"style",value:"width:100%;"}]),e+="
"},a.prototype.set_value=function(t,e,i,n){var r=t.firstChild;!r._dhx_onchange&&n.onchange&&(r.onchange=n.onchange,r._dhx_onchange=!0),void 0===e&&(e=(r.options[0]||{}).value),r.value=e||""},a.prototype.get_value=function(t){return t.firstChild.value},a.prototype.focus=function(e){var i=e.firstChild;t._focus(i,!0)},a}},function(t,e,i){var n=i(0);t.exports={createDropTargetObject:function(t){var e={targetParent:null,targetIndex:0,targetId:null,child:!1,nextSibling:!1,prevSibling:!1};return t&&n.mixin(e,t,!0),e},nextSiblingTarget:function(t,e,i){var n=this.createDropTargetObject();return n.targetId=e,n.nextSibling=!0,n.targetParent=i.getParent(n.targetId),n.targetIndex=i.getBranchIndex(n.targetId),(i.getParent(t)!=n.targetParent||n.targetIndexi.getBranchIndex(t)&&(n.targetIndex-=1),n},firstChildTarget:function(t,e,i){var n=this.createDropTargetObject();return n.targetId=e,n.targetParent=n.targetId,n.targetIndex=0,n.child=!0,n},lastChildTarget:function(t,e,i){var n=i.getChildren(e),r=this.createDropTargetObject();return r.targetId=n[n.length-1],r.targetParent=e,r.targetIndex=n.length,r.nextSibling=!0,r}}},function(t,e){t.exports=function(t){var e=[];return{delegate:function(i,n,r,a){e.push([i,n,r,a]),t.$services.getService("mouseEvents").delegate(i,n,r,a)},destructor:function(){for(var i=t.$services.getService("mouseEvents"),n=0;ne)){for(;+t[i]==+t[i+1];)i++;return i}if(!isNaN(r)&&r",this.$task=t.childNodes[0],this.$task.innerHTML="
",this.$task_scale=this.$task.childNodes[0],this.$task_data=this.$task.childNodes[1],this.$task_data.innerHTML="
",this.$task_bg=this.$task_data.childNodes[0],this.$task_links=this.$task_data.childNodes[1],this.$task_bars=this.$task_data.childNodes[2],this._tasks={col_width:0,width:[],full_width:0,trace_x:[],rendered:{}};var e=this.$getConfig(),i=e[this.$config.bind+"_attribute"],n=e[this.$config.bindLinks+"_attribute"];!i&&this.$config.bind&&(i=this.$config.bind+"_id"),!n&&this.$config.bindLinks&&(n=this.$config.bindLinks+"_id"),this.$config.item_attribute=i||null,this.$config.link_attribute=n||null;var r=this._createLayerConfig();this.$config.layers||(this.$config.layers=r.tasks),this.$config.linkLayers||(this.$config.linkLayers=r.links),this._attachLayers(this.$gantt),this.callEvent("onReady",[])},setSize:function(t,e){var i=this.$getConfig();if(1*t===t&&(this.$config.width=t),1*e===e){this.$config.height=e;var n=Math.max(this.$config.height-i.scale_height);this.$task_data.style.height=n+"px"}if(this.refresh(),this.$task_bg.style.backgroundImage="",i.smart_rendering&&this.$config.rowStore){var r=this.$config.rowStore;this.$task_bg.style.height=i.row_height*r.countVisible()+"px"}else this.$task_bg.style.height="";for(var a=this._tasks,o=this.$task_data.childNodes,s=0,l=o.length;s'+this._prepareScaleHtml(t[a],e,i)+"")}return n.join("")},_prepareScaleHtml:function(t,e,i){var n=this.$getConfig(),r=this.$gantt.$services.templates(),a=[],o=null,s=null,l=null;(t.template||t.date)&&(s=t.template||this.$gantt.date.date_to_str(t.date));var u=0,d=t.count;!n.smart_scales||isNaN(e)||isNaN(i)||(u=c(t.left,e),d=c(t.left,i)+1),l=t.css||function(){},!t.css&&n.inherit_scale_class&&(l=r.scale_cell_class);for(var h=u;h"+f+"";a.push(b)}}return a.join("")},dateFromPos:function(t){var e=this._tasks;if(t<0||t>e.full_width||!e.full_width)return null;var i=c(this._tasks.left,t),n=this._tasks.left[i],r=e.width[i]||e.col_width,a=0;r&&(a=(t-n)/r,e.rtl&&(a=1-a));var o=0;return a&&(o=this._getColumnDuration(e,e.trace_x[i])),new Date(e.trace_x[i].valueOf()+Math.round(a*o))},posFromDate:function(t){if(!this.isVisible())return 0;var e=this.columnIndexByDate(t);this.$gantt.assert(e>=0,"Invalid day index");var i=Math.floor(e),n=e%1,r=this._tasks.left[Math.min(i,this._tasks.width.length-1)];return i==this._tasks.width.length&&(r+=this._tasks.width[this._tasks.width.length-1]),n&&(i=r.max_date)return this._tasks.rtl?0:i.length;var a=c(i,e),o=this._getClosestVisibleColumn(a,i,n),s=i[o],l=this._tasks.trace_index_transition;if(!s)return l?l[0]:0;var u=(t-i[o])/this._getColumnDuration(this._tasks,i[o]);return l?l[o]+(1-u):o+u},getItemPosition:function(t,e,i){var n,r,a;return this._tasks.rtl?(r=this.posFromDate(e||t.start_date),n=this.posFromDate(i||t.end_date)):(n=this.posFromDate(e||t.start_date),r=this.posFromDate(i||t.end_date)),a=Math.max(r-n,0),{left:n,top:this.getItemTop(t.id),height:this.getItemHeight(),width:a}},getItemHeight:function(){var t=this.$getConfig(),e=t.task_height;if("full"==e){var i=t.task_height_offset||5;e=t.row_height-i}return e=Math.min(e,t.row_height),Math.max(e,0)},getScale:function(){return this._tasks},_getScales:function(){var t=this.$getConfig(),e=this.$scaleHelper,i=[e.primaryScale()].concat(t.subscales);return e.sortScales(i),i},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},refresh:function(){this.$config.bind&&(this.$config.rowStore=this.$gantt.getDatastore(this.$config.bind)),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this.$task=null,this.$task_scale=null,this.$task_data=null,this.$task_bg=null,this.$task_links=null,this.$task_bars=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.$config.linkStore&&(this.$config.linkStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},a.mixin(l.prototype,o()),t.exports=l},function(t,e){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e){var i={isIE:navigator.userAgent.indexOf("MSIE")>=0||navigator.userAgent.indexOf("Trident")>=0,isIE6:!window.XMLHttpRequest&&navigator.userAgent.indexOf("MSIE")>=0,isIE7:navigator.userAgent.indexOf("MSIE 7.0")>=0&&navigator.userAgent.indexOf("Trident")<0,isIE8:navigator.userAgent.indexOf("MSIE 8.0")>=0&&navigator.userAgent.indexOf("Trident")>=0,isOpera:navigator.userAgent.indexOf("Opera")>=0,isChrome:navigator.userAgent.indexOf("Chrome")>=0,isKHTML:navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0,isFF:navigator.userAgent.indexOf("Firefox")>=0,isIPad:navigator.userAgent.search(/iPad/gi)>=0,isEdge:-1!=navigator.userAgent.indexOf("Edge")};t.exports=i},,function(t,e,i){},function(t,e,i){var n=i(0);t.exports=function t(e,i){e=e||n.event,i=i||n.eventRemove;var r=[],a={attach:function(t,i,n,a){r.push({element:t,event:i,callback:n,capture:a}),e(t,i,n,a)},detach:function(t,e,n,a){i(t,e,n,a);for(var o=0;o"}};function a(t,e,i){return e=e||[],"<"+t+o(i||[])+">"+(e.innerHTML||"")+""}function o(t){var e="";return n.forEach(t,function(t){e+=" "+t.key+"='"+t.value+"'"}),e}t.exports=r},function(t,e,i){var n=i(0),r=i(3);function a(t,e,i,n,r){return this.date=t,this.unit=e,this.task=i,this.id=n,this.calendar=r,this}function o(t,e,i,n,r,a){return this.date=t,this.dir=e,this.unit=i,this.task=n,this.id=r,this.calendar=a,this}function s(t,e,i,n,r,a,o){return this.start_date=t,this.duration=e,this.unit=i,this.step=n,this.task=r,this.id=a,this.calendar=o,this}function l(t,e,i,n){return this.start_date=t,this.end_date=e,this.task=i,this.calendar=n,this.unit=null,this.step=null,this}t.exports=function(t){return{getWorkHoursArguments:function(){var t=arguments[0];return t=r.isDate(t)?{date:t}:n.mixin({},t)},setWorkTimeArguments:function(){return arguments[0]},unsetWorkTimeArguments:function(){return arguments[0]},isWorkTimeArguments:function(){var e,i=arguments[0];return i instanceof a?i:((e=i.date?new a(i.date,i.unit,i.task,null,i.calendar):new a(arguments[0],arguments[1],arguments[2],null,arguments[3])).unit=e.unit||t.config.duration_unit,e)},getClosestWorkTimeArguments:function(e){var i,n=arguments[0];return n instanceof o?n:(i=r.isDate(n)?new o(n):new o(n.date,n.dir,n.unit,n.task,null,n.calendar),n.id&&(i.task=n),i.dir=n.dir||"any",i.unit=n.unit||t.config.duration_unit,i)},_getStartEndConfig:function(e){var i,n=l;return e instanceof n?e:(r.isDate(e)?i=new n(arguments[0],arguments[1],arguments[2],arguments[3]):(i=new n(e.start_date,e.end_date,e.task),e.id&&(i.task=e)),i.unit=i.unit||t.config.duration_unit,i.step=i.step||t.config.duration_step,i.start_date=i.start_date||i.start||i.date,i)},getDurationArguments:function(t,e,i,n){return this._getStartEndConfig.apply(this,arguments)},hasDurationArguments:function(t,e,i,n){return this._getStartEndConfig.apply(this,arguments)},calculateEndDateArguments:function(e,i,n,a){var o,l=arguments[0];return l instanceof s?l:(o=r.isDate(l)?new s(arguments[0],arguments[1],arguments[2],void 0,arguments[3],void 0,arguments[4]):new s(l.start_date,l.duration,l.unit,l.step,l.task,null,l.calendar),l.id&&(o.task=l),o.unit=o.unit||t.config.duration_unit,o.step=o.step||t.config.duration_step,o)}}}},function(t,e){function i(t,e,i){for(var n=0;n=0&&this.splice(t,e||1)},$remove:function(t){this.$removeAt(this.$find(t))},$insertAt:function(t,e){if(e||0===e){var i=this.splice(e,this.length-e);this[e]=t,this.push.apply(this,i)}else this.push(t)},$find:function(t){for(var e=0;en&&(e=Math.min(i.length,e))}this.pull[t.id]=t,this._skip_refresh||this._updateOrder(function(){-1===this.$find(t.id)&&this.$insertAt(t.id,e)}),this.filter()},isVisible:function(t){return this.visibleOrder.$find(t)>-1},getVisibleItems:function(){return this.getIndexRange()},addItem:function(t,e){return r.defined(t.id)||(t.id=r.uid()),this.$initItem&&(t=this.$initItem(t)),!(!this._skip_refresh&&!1===this.callEvent("onBeforeAdd",[t.id,t]))&&(this._addItemInner(t,e),this._skip_refresh||(this.callEvent("onAfterAdd",[t.id,t]),this.callEvent("onStoreUpdated",[t.id,t,"add"])),t.id)},_changeIdInner:function(t,e){this.pull[t]&&(this.pull[e]=this.pull[t]);var i=this._searchVisibleOrder[t];this.pull[e].id=e,this._updateOrder(function(){this[this.$find(t)]=e}),this._searchVisibleOrder[e]=i,delete this._searchVisibleOrder[t],delete this.pull[t]},changeId:function(t,e){this._changeIdInner(t,e),this.callEvent("onIdChange",[t,e])},exists:function(t){return!!this.pull[t]},_moveInner:function(t,e){var i=this.getIdByIndex(t);this._updateOrder(function(){this.$removeAt(t),this.$insertAt(i,Math.min(this.length,e))})},move:function(t,e){var i=this.getIdByIndex(t),n=this.getItem(i);this._moveInner(t,e),this._skip_refresh||this.callEvent("onStoreUpdated",[n.id,n,"move"])},clearAll:function(){this.pull={},this.visibleOrder=n.$create(),this.fullOrder=n.$create(),this._skip_refresh||(this.callEvent("onClearAll",[]),this.refresh())},silent:function(t,e){this._skip_refresh=!0,t.call(e||this),this._skip_refresh=!1},arraysEqual:function(t,e){if(t.length!==e.length)return!1;for(var i=0;i1&&(d+=1),u==s.types.milestone&&(o.left-=Math.round(c/2),o.width=c);var h=document.createElement("div"),f=Math.round(o.width);a.$config.item_attribute&&h.setAttribute(a.$config.item_attribute,e.id),s.show_progress&&u!=s.types.milestone&&function(e,i,n,r,a){var o=1*e.progress||0;n=Math.max(n-2,0);var s=document.createElement("div"),l=Math.round(n*o);l=Math.min(n,l),e.progressColor&&(s.style.backgroundColor=e.progressColor,s.style.opacity=1),s.style.width=l+"px",s.className="gantt_task_progress",s.innerHTML=a.progress_text(e.start_date,e.end_date,e),r.rtl&&(s.style.position="absolute",s.style.right="0px");var c=document.createElement("div");if(c.className="gantt_task_progress_wrapper",c.appendChild(s),i.appendChild(c),t.config.drag_progress&&!t.isReadonly(e)){var u=document.createElement("div"),d=l;r.rtl&&(d=n-l),u.style.left=d+"px",u.className="gantt_task_progress_drag",s.appendChild(u),i.appendChild(u)}}(e,h,f,s,l);var _=function(e,i,n){var r=document.createElement("div");return t.getTaskType(e.type)!=t.config.types.milestone&&(r.innerHTML=n.task_text(e.start_date,e.end_date,e)),r.className="gantt_task_content",r}(e,0,l);e.textColor&&(_.style.color=e.textColor),h.appendChild(_);var g=function(e,i,n,r){var a=r.$getConfig(),o=[e];i&&o.push(i);var s=t.getState(),l=t.getTask(n);if(t.getTaskType(l.type)==a.types.milestone?o.push("gantt_milestone"):t.getTaskType(l.type)==a.types.project&&o.push("gantt_project"),o.push("gantt_bar_"+t.getTaskType(l.type)),t.isSummaryTask(l)&&o.push("gantt_dependent_task"),t.isSplitTask(l)&&o.push("gantt_split_parent"),a.select_task&&n==s.selected_task&&o.push("gantt_selected"),n==s.drag_id&&(o.push("gantt_drag_"+s.drag_mode),s.touch_drag&&o.push("gantt_touch_"+s.drag_mode)),s.link_source_id==n&&o.push("gantt_link_source"),s.link_target_id==n&&o.push("gantt_link_target"),a.highlight_critical_path&&t.isCriticalTask&&t.isCriticalTask(l)&&o.push("gantt_critical_task"),s.link_landing_area&&s.link_target_id&&s.link_source_id&&s.link_target_id!=s.link_source_id){var c=s.link_source_id,u=s.link_from_start,d=s.link_to_start,h=t.isLinkAllowed(c,n,u,d),f="";f=h?d?"link_start_allow":"link_finish_allow":d?"link_start_deny":"link_finish_deny",o.push(f)}return o.join(" ")}("gantt_task_line",l.task_class(e.start_date,e.end_date,e),e.id,a);(e.color||e.progressColor||e.textColor)&&(g+=" gantt_task_inline_color"),h.className=g;var p=["left:"+o.left+"px","top:"+(d+o.top)+"px","height:"+c+"px","line-height:"+Math.max(c<30?c-2:c,0)+"px","width:"+f+"px"];e.color&&p.push("background-color:"+e.color),e.textColor&&p.push("color:"+e.textColor),h.style.cssText=p.join(";");var v=function(t,e,r){var a="gantt_left "+n(!e.rtl,t);return i(t,r.leftside_text,a)}(e,s,l);v&&h.appendChild(v),(v=function(t,e,r){var a="gantt_right "+n(!!e.rtl,t);return i(t,r.rightside_text,a)}(e,s,l))&&h.appendChild(v),t._waiAria.setTaskBarAttr(e,h);var m=t.getState();return t.isReadonly(e)||(s.drag_resize&&!t.isSummaryTask(e)&&u!=s.types.milestone&&r(h,"gantt_task_drag",e,function(t){var e=document.createElement("div");return e.className=t,e},s),s.drag_links&&s.show_links&&r(h,"gantt_link_control",e,function(t){var e=document.createElement("div");e.className=t,e.style.cssText=["height:"+c+"px","line-height:"+c+"px"].join(";");var i=document.createElement("div");i.className="gantt_link_point";var n=!1;return m.link_source_id&&s.touch&&(n=!0),i.style.display=n?"block":"",e.appendChild(i),e},s)),h}}function i(t,e,i){if(!e)return null;var n=e(t.start_date,t.end_date,t);if(!n)return null;var r=document.createElement("div");return r.className="gantt_side_content "+i,r.innerHTML=n,r}function n(e,i){var n=function(e){return e?{$source:[t.config.links.start_to_start],$target:[t.config.links.start_to_start,t.config.links.finish_to_start]}:{$source:[t.config.links.finish_to_start,t.config.links.finish_to_finish],$target:[t.config.links.finish_to_finish]}}(e);for(var r in n)for(var a=i[r],o=0;o=+s.min_date&&((o=r([i,a.rtl?"task_right":"task_left","task_start_date"].join(" "))).setAttribute("data-bind-property","start_date"),e.appendChild(o)),+n.end_date<=+s.max_date&&((o=r([i,a.rtl?"task_left":"task_right","task_end_date"].join(" "))).setAttribute("data-bind-property","end_date"),e.appendChild(o))}return function(i,n){var r=n.$getConfig().type_renderers[t.getTaskType(i.type)],a=e;return r?r.call(t,i,function(e){return a.call(t,e,n)},n):a.call(t,i,n)}}},function(t,e,i){var n=i(1),r=i(0),a=i(4),o=i(115),s=i(25),l=function(t,e,i,n){this.$config=r.mixin({},e||{}),this.$gantt=n,this.$parent=t,a(this),this.$state={}};l.prototype={init:function(t){var e=this.$gantt,n=e._waiAria.gridAttrString(),r=e._waiAria.gridDataAttrString();t.innerHTML="
",this.$grid=t.childNodes[0],this.$grid.innerHTML="
",this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];var a=this.$getConfig()[this.$config.bind+"_attribute"];if(!a&&this.$config.bind&&(a=this.$config.bind+"_id"),this.$config.item_attribute=a||null,!this.$config.layers){var s=this._createLayerConfig();this.$config.layers=s}var l=o(e,this);l.init(),this._renderHeaderResizers=l.doOnRender,this._mouseDelegates=i(10)(e),this._addLayers(this.$gantt),this._initEvents(),this.callEvent("onReady",[])},_validateColumnWidth:function(t,e){var i=t[e];if(i&&"*"!=i){var n=this.$gantt,r=1*i;isNaN(r)?n.assert(!1,"Wrong "+e+" value of column "+t.name):t[e]=r}},setSize:function(t,e){this.$config.width=this.$state.width=t,this.$state.height=e;for(var i,n=this.getGridColumns(),r=0,a=0,o=n.length;au.max_width&&(d=u.max_width-u.width),r-=u.width,u.width+=d,l-=d}for(var h=l>0?1:-1;l>0&&1===h||l<0&&-1===h;){var f=l;for(o=e+1;o-1&&((_=n[e].width+l)==this._getColumnWidth(n[e],i,_)&&(n[e].width=_));return this._getColsTotalWidth()},_getColsTotalWidth:function(){for(var t=this.getGridColumns(),e=0,i=0;io+h&&(d.width=h=f-o),o+=h;var _=t._sort&&d.name==t._sort.name?"
":"",g=["gantt_grid_head_cell","gantt_grid_head_"+d.name,u?"gantt_last_cell":"",n.grid_header_class(d.name,d)].join(" "),p="width:"+(h-(u?1:0))+"px;",v=d.label||s["column_"+d.name]||s[d.name];v=v||"";var m="
"+v+_+"
";a.push(m)}this.$grid_scale.style.height=e.scale_height+"px",this.$grid_scale.style.lineHeight=l+"px",this.$grid_scale.innerHTML=a.join(""),this._renderHeaderResizers&&this._renderHeaderResizers()},_getGridWidth:function(){return this.$config.width},destructor:function(){this._clearLayers(this.$gantt),this._mouseDelegates&&(this._mouseDelegates.destructor(),this._mouseDelegates=null),this.$grid=null,this.$grid_scale=null,this.$grid_data=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},r.mixin(l.prototype,s()),t.exports=l},function(t,e){t.exports=function(){return{getRowTop:function(t){return t*this.$getConfig().row_height},getItemTop:function(t){if(this.$config.rowStore){var e=this.$config.rowStore;if(!e)return 0;var i=e.getIndexById(t);if(-1===i&&e.getParent&&e.exists(t)){var n=e.getParent(t);if(e.exists(n)){var r=e.getItem(n);if(this.$gantt.isSplitTask(r))return this.getRowTop(e.getIndexById(r.id))}}return this.getRowTop(i)}return 0}}}},function(t,e,i){var n=i(0);t.exports=function(t){var e=t.date,i=t.$services;return{getSum:function(t,e,i){void 0===i&&(i=t.length-1),void 0===e&&(e=0);for(var n=0,r=e;r<=i;r++)n+=t[r];return n},setSumWidth:function(t,e,i,n){var r=e.width;void 0===n&&(n=r.length-1),void 0===i&&(i=0);var a=n-i+1;if(!(i>r.length-1||a<=0||n>r.length-1)){var o=t-this.getSum(r,i,n);this.adjustSize(o,r,i,n),this.adjustSize(-o,r,n+1),e.full_width=this.getSum(r)}},splitSize:function(t,e){for(var i=[],n=0;ni(e.unit,e.step)?-1:0});for(var n=0;n=0;u--){var d=u==t.length-1,h=this.initScaleConfig(t[u],r,a);d&&this.processIgnores(h),this.initColSizes(h,e,l,s[u]),this.limitVisibleRange(h),d&&(l=h.full_width),c.unshift(h)}for(u=0;u=+l&&(l=e.add(c,n,i));+c<+l;){o.call(this,new Date(c));var u=c.getTimezoneOffset();c=e.add(c,n,i),c=t._correct_dst_change(c,u,n,i),e[i+"_start"]&&(c=e[i+"_start"](c))}},limitVisibleRange:function(t){var i=t.trace_x,n=t.width.length-1,r=0;if(+i[0]<+t.min_date&&0!=n){var a=Math.floor(t.width[0]*((i[1]-t.min_date)/(i[1]-i[0])));r+=t.width[0]-a,t.width[0]=a,i[0]=new Date(t.min_date)}var o=i.length-1,s=i[o],l=e.add(s,t.step,t.unit);if(+l>+t.max_date&&o>0&&(a=t.width[o]-Math.floor(t.width[o]*((l-t.max_date)/(l-s))),r+=t.width[o]-a,t.width[o]=a),r){for(var c=this.getSum(t.width),u=0,d=0;d0?t[r].$parent.getNextSibling(t[r].$id):t[r].$parent.getPrevSibling(t[r].$id);"resizer"==o.$name&&(o=n>0?o.$parent.getNextSibling(o.$id):o.$parent.getPrevSibling(o.$id));var s=o.getSize();if(o[i]){var l=a.gravity+s.gravity,c=a[i]+s[i],u=l/c;t[r].$config.gravity=u*e,o.$config[i]=c-e,o.$config.gravity=l-u*e}else t[r].$config[i]=e;var d=this.$gantt.$ui.getView("grid");d&&t[r].$content===d&&!d.$config.scrollable&&(this.$gantt.config.grid_width=e)}},e.prototype.resize=function(e){var i=!1;if(this.$root&&!this._resizeInProgress&&(this.callEvent("onBeforeResize",[]),i=!0,this._resizeInProgress=!0),t.prototype.resize.call(this,!0),t.prototype.resize.call(this,!1),i){var n=[];n=(n=(n=n.concat(this.getCellsByType("viewCell"))).concat(this.getCellsByType("viewLayout"))).concat(this.getCellsByType("hostCell"));for(var r=this.getCellsByType("scroller"),a=0;a=0&&this.$cells[e+1]?this.$cells[e+1]:null},e.prototype.getPrevSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e-1]?this.$cells[e-1]:null},e.prototype.cell=function(t){for(var e=0;e=i.childNodes.length?i.appendChild(t.$view):i.insertBefore(t.$view,i.childNodes[e])},e.prototype._parseConfig=function(t){this.$cells=[],this._xLayout=!t.rows;for(var e=t.rows||t.cols||t.views,i=0;i=0;n--){var a=this.$cells[n];a.$fill(i[n],this),a.$config.hidden&&a.$view.parentNode.removeChild(a.$view)}},e.prototype.$toHTML=function(){for(var e=this._xLayout?"x":"y",i=[],n=0;n=1e5&&(c.maxWidth=n),c.maxHeight>=1e5&&(c.maxHeight=a),c.minWidth=c.minWidth!=c.minWidth?0:c.minWidth,c.minHeight=c.minHeight!=c.minHeight?0:c.minHeight,this._xLayout?(c.minWidth+=this.$config.margin*this.$cells.length||0,c.minWidth+=2*this.$config.padding||0,c.minHeight+=2*this.$config.padding||0):(c.minHeight+=this.$config.margin*this.$cells.length||0,c.minHeight+=2*this.$config.padding||0),c},e.prototype._calcFreeSpace=function(t,e,i){var n=i?e.minWidth:e.minHeight,r=e.maxWidth,a=t;return a?(a>r&&(a=r),ar&&(a=r,this._free-=a,this._gravity-=e.gravity),aa&&(n=a),n=0;n--)if(!e[n].$config.hidden){i=n;break}for(n=0;n=i,a="";!r&&e[n+1]&&"scrollbar"==e[n+1].$config.view&&(this._xLayout?r=!0:a="gantt_layout_cell_border_transparent"),this._setBorders(r?[]:[t,a],e[n])}},e.prototype._updateCellVisibility=function(){for(var t,e=this._visibleCells||{},i=!this._visibleCells,n={},r=0;r1)for(var i=1;i=0)return null;var i=arguments[1]||this.config.task_attribute,r=n.locateAttribute(e,i);return r?r.getAttribute(i):null},t._locate_css=function(t,e,i){return n.locateClassName(t,e,i)},t._locateHTML=function(t,e){return n.locateAttribute(t,e||this.config.task_attribute)},t.getTaskRowNode=function(t){for(var e=this.$grid_data.childNodes,i=this.config.task_attribute,n=0;n3600&&o<86400){var s=e.getTimezoneOffset()-i;s&&(e=t.date.add(e,s,"minute"))}return e},t.isSplitTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument task="+e+" of gantt.isSplitTask. Task object was expected"),this.$data.tasksStore._isSplitItem(e)},t._is_icon_open_click=function(t){if(!t)return!1;var e=t.target||t.srcElement;if(!e||!e.className)return!1;var i=n.getClassName(e);return-1!==i.indexOf("gantt_tree_icon")&&(-1!==i.indexOf("gantt_close")||-1!==i.indexOf("gantt_open"))}}},function(t,e){t.exports=function(t){t.locale={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{new_task:"New task",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Task will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty"}}}},function(t,e){t.exports=function(t){function e(){var e;return t.$ui.getView("timeline")&&(e=t.$ui.getView("timeline")._tasks_dnd),e}t.config.touch_drag=500,t.config.touch=!0,t.config.touch_feedback=!0,t.config.touch_feedback_duration=1,t._prevent_touch_scroll=!1,t._touch_feedback=function(){t.config.touch_feedback&&navigator.vibrate&&navigator.vibrate(t.config.touch_feedback_duration)},t.attachEvent("onGanttReady",t.bind(function(){if("force"!=this.config.touch&&(this.config.touch=this.config.touch&&(-1!=navigator.userAgent.indexOf("Mobile")||-1!=navigator.userAgent.indexOf("iPad")||-1!=navigator.userAgent.indexOf("Android")||-1!=navigator.userAgent.indexOf("Touch"))),this.config.touch){var t=!0;try{document.createEvent("TouchEvent")}catch(e){t=!1}t?this._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.navigator.pointerEnabled?this._touch_events(["pointermove","pointerdown","pointerup"],function(t){return"mouse"==t.pointerType?null:t},function(t){return!t||"mouse"==t.pointerType}):window.navigator.msPointerEnabled&&this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}},t));var i=[];t._touch_events=function(n,r,a){for(var o,s=0,l=!1,c=!1,u=null,d=null,h=null,f=0;f5||Math.abs(g)>5)&&(t._touch_scroll_active=c=!0,s=0,o=t.getScrollState()),c){t.scrollTo(o.x+f,o.y+g);var p=t.getScrollState();if(o.x!=p.x&&g>2*f||o.y!=p.y&&f>2*g)return _(i)}}return _(i)}return!0}}]),i.push([this.$container,"contextmenu",function(t){if(l)return _(t)}]),i.push([this.$container,n[1],function(i){if(!a(i))if(i.touches&&i.touches.length>1)l=!1;else{u=r(i),t._locate_css(u,"gantt_hor_scroll")||t._locate_css(u,"gantt_ver_scroll")||(l=!0);var n=e();d=setTimeout(function(){var e=t.locate(u);n&&e&&!t._locate_css(u,"gantt_link_control")&&!t._locate_css(u,"gantt_grid_data")&&(n.on_mouse_down(u),n.drag&&n.drag.start_drag&&(!function(e){var i=t._getTaskLayers(),n=t.getTask(e);if(n&&t.isTaskVisible(e))for(var r=0;r-1&&(i.className=i.className.slice(0,t))},200))})}},function(t,e){t.exports=function(t){t.skins.broadway={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:1,link_arrow_size:7,lightbox_additional_height:86},_second_column_width:90,_third_column_width:80,_lightbox_template:"
 
",_config_buttons_left:{},_config_buttons_right:{gantt_delete_btn:"icon_delete",gantt_save_btn:"icon_save"}}}},function(t,e){t.exports=function(t){t.skins.terrace={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:90,_third_column_width:70}}},function(t,e){t.exports=function(t){t.skins.meadow={config:{grid_width:350,row_height:27,scale_height:30,link_line_width:2,link_arrow_size:6,lightbox_additional_height:72},_second_column_width:95,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.skyblue={config:{grid_width:350,row_height:27,scale_height:27,link_line_width:1,link_arrow_size:8,lightbox_additional_height:75},_second_column_width:95,_third_column_width:80}}},function(t,e){function i(t,e){var i=e.skin;if(!i||t)for(var n=document.getElementsByTagName("link"),r=0;rl.width?l.min_width:l.width,l.width=l.max_width&&l.max_width",a=[];for(var o in t.config.constraint_types)a.push({key:t.config.constraint_types[o],label:t.locale.labels[t.config.constraint_types[o]]});return e.options=e.options||a,n+=""+r.getHtmlSelect(e.options,[{key:"data-type",value:"constraint-type"}])+"",n+="",n+=""},a.prototype.set_value=function(e,i,n,r){var a=e.querySelector("[data-constraint-type-select] select"),o=e.querySelectorAll("[data-constraint-time-select] select"),l=r._time_format_order,c=t._resolve_default_mapping(r);a._eventsInitialized||(a.addEventListener("input",function(t){s(o,t.target.value)}),a._eventsInitialized=!0);var u=n[c.constraint_date]||new Date;t.form_blocks._fill_lightbox_select(o,0,u,l,r);var d=n[c.constraint_type]||t.getConstraintType(n);a.value=d,s(o,d)},a.prototype.get_value=function(e,i,n){var r=e.querySelector("[data-constraint-type-select] select"),a=e.querySelectorAll("[data-constraint-time-select] select"),s=r.value,l=null;return o(s)||(l=t.form_blocks.getTimePickerValue(a,n)),{constraint_type:s,constraint_date:l}},a.prototype.focus=function(e){t._focus(e.querySelector("select"))},a}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(8)(t);function r(){return e.apply(this,arguments)||this}function a(e,i){var n=[],r=[];i&&(n=t.getTaskByTime(),e.allow_root&&n.unshift({id:t.config.root_id,text:e.root_label||""}),n=function(e,i,n){var r=i.filter||function(){return!0};e=e.slice(0);for(var a=0;a",n=t.locale.labels[t.config.duration_unit+"s"],r=e.single_date?" style='display:none'":"",a=e.readonly?" disabled='disabled'":"",o="
"+n+"
";return"
"+i+" "+o+"
"},r.prototype.set_value=function(e,i,n,r){var s,l,c,u,d=r,h=e.getElementsByTagName("select"),f=e.getElementsByTagName("input"),_=f[1],g=[f[0],f[2]],p=e.getElementsByTagName("span")[0],v=r._time_format_order;function m(){var i=a.call(t,e,r),s=o.call(t,e,r),l=t.calculateEndDate({start_date:i,duration:s,task:n});p.innerHTML=t.templates.task_date(l)}function y(t){var e=_.value;e=parseInt(e,10),window.isNaN(e)&&(e=0),(e+=t)<1&&(e=1),_.value=e,m()}g[0].onclick=t.bind(function(){y(-1*t.config.duration_step)},this),g[1].onclick=t.bind(function(){y(1*t.config.duration_step)},this),h[0].onchange=m,h[1].onchange=m,h[2].onchange=m,h[3]&&(h[3].onchange=m),_.onkeydown=t.bind(function(e){var i;return(i=(e=e||window.event).charCode||e.keyCode||e.which)==t.constants.KEY_CODES.DOWN?(y(-1*t.config.duration_step),!1):i==t.constants.KEY_CODES.UP?(y(1*t.config.duration_step),!1):void window.setTimeout(m,1)},this),_.onchange=t.bind(m,this),"string"==typeof(s=t._resolve_default_mapping(r))&&(s={start_date:s}),l=n[s.start_date]||new Date,c=n[s.end_date]||t.calculateEndDate({start_date:l,duration:1,task:n}),u=Math.round(n[s.duration])||t.calculateDuration({start_date:l,end_date:c,task:n}),t.form_blocks._fill_lightbox_select(h,0,l,v,d),_.value=u,m()},r.prototype.get_value=function(e,i,n){var r=a(e,n),s=o(e),l=t.calculateEndDate({start_date:r,duration:s,task:i});return"string"==typeof t._resolve_default_mapping(n)?r:{start_date:r,end_date:l,duration:s}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){var e="
";if(t.options&&t.options.length)for(var i=0;i"+t.options[i].label+"";return e+="
"},r.prototype.set_value=function(t,e,i,n){var r;n.options&&n.options.length&&(r=t.querySelector("input[type=radio][value='"+e+"']")||t.querySelector("input[type=radio][value='"+n.default_value+"']"))&&(!t._dhx_onchange&&n.onchange&&(t.onchange=n.onchange,t._dhx_onchange=!0),r.checked=!0)},r.prototype.get_value=function(t,e){var i=t.querySelector("input[type=radio]:checked");return i?i.value:""},r.prototype.focus=function(e){t._focus(e.querySelector("input[type=radio]"))},r}},function(t,e,i){var n=i(3),r=i(2);t.exports=function(t){var e=i(5)(t);function a(){return e.apply(this,arguments)||this}return r(a,e),a.prototype.render=function(t){var e="
";if(t.options&&t.options.length)for(var i=0;i"+t.options[i].label+"";return e+="
"},a.prototype.set_value=function(t,e,i,r){var a=Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]"));!t._dhx_onchange&&r.onchange&&(t.onchange=r.onchange,t._dhx_onchange=!0),n.forEach(a,function(t){t.checked=!!e&&e.indexOf(t.value)>=0})},a.prototype.get_value=function(t){return n.arrayMap(Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]:checked")),function(t){return t.value})},a.prototype.focus=function(e){t._focus(e.querySelector("input[type=checkbox]"))},a}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(e){var i=t.form_blocks.getTimePicker.call(this,e),n="
";return n+=i,e.single_date?(i=t.form_blocks.getTimePicker.call(this,e,!0),n+=""):n+="  –  ",n+=i,n+="
"},r.prototype.set_value=function(e,i,n,r){var a=r,o=e.getElementsByTagName("select"),s=r._time_format_order;if(a.auto_end_date)for(var l=function(){d=new Date(o[s[2]].value,o[s[1]].value,o[s[0]].value,0,0),h=t.calculateEndDate({start_date:d,duration:1,task:n}),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},c=0;c<4;c++)o[c].onchange=l;var u=t._resolve_default_mapping(r);"string"==typeof u&&(u={start_date:u});var d=n[u.start_date]||new Date,h=n[u.end_date]||t.calculateEndDate({start_date:d,duration:1,task:n});t.form_blocks._fill_lightbox_select(o,0,d,s,a),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},r.prototype.get_value=function(e,i,n){var r,a=e.getElementsByTagName("select"),o=n._time_format_order;return r=t.form_blocks.getTimePickerValue(a,n),"string"==typeof t._resolve_default_mapping(n)?r:{start_date:r,end_date:function(e,i,r){var a=t.form_blocks.getTimePickerValue(e,n,i.size);return a<=r?t.date.add(r,t._get_timepicker_step(),"minute"):a}(a,o,r)}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){return"
"},r.prototype.set_value=function(e,i){t.form_blocks.textarea._get_input(e).value=i||""},r.prototype.get_value=function(e){return t.form_blocks.textarea._get_input(e).value},r.prototype.focus=function(e){var i=t.form_blocks.textarea._get_input(e);t._focus(i,!0)},r.prototype._get_input=function(t){return t.querySelector("textarea")},r}},function(t,e,i){var n=i(2);t.exports=function(t){var e=i(5)(t);function r(){return e.apply(this,arguments)||this}return n(r,e),r.prototype.render=function(t){return"
"},r.prototype.set_value=function(t,e){t.innerHTML=e||""},r.prototype.get_value=function(t){return t.innerHTML||""},r.prototype.focus=function(){},r}},function(t,e,i){t.exports=function(t){var e=i(1),n=i(3),r=i(53)(t),a=i(52)(t),o=i(51)(t),s=i(8)(t),l=i(50)(t),c=i(49)(t),u=i(48)(t),d=i(47)(t),h=i(8)(t),f=i(46)(t);function _(e,i){var n,r,a="";for(r=0;r
"+t.locale.labels[n]+"
";return a}function g(e,i,n){var r,a,o,s,l,c,u="";switch(n.timeFormat[i]){case"%Y":for(e._time_format_order[2]=i,e._time_format_order.size++,e.year_range&&(isNaN(e.year_range)?e.year_range.push&&(o=e.year_range[0],s=e.year_range[1]):r=e.year_range),r=r||10,a=a||Math.floor(r/2),o=o||n.date.getFullYear()-a,s=s||o+r,l=o;l"+l+"";break;case"%m":for(e._time_format_order[1]=i,e._time_format_order.size++,l=0;l<12;l++)u+="";break;case"%d":for(e._time_format_order[0]=i,e._time_format_order.size++,l=1;l<32;l++)u+="";break;case"%H:%i":for(e._time_format_order[3]=i,e._time_format_order.size++,l=n.first,c=n.date.getDate(),e._time_values=[];l"+t.templates.time_picker(n.date)+"",e._time_values.push(l),n.date.setTime(n.date.valueOf()+60*t._get_timepicker_step()*1e3),l=24*(n.date.getDate()!=c?1:0)*60+60*n.date.getHours()+n.date.getMinutes()}return u}t._lightbox_methods={},t._lightbox_template="
 
",t.$services.getService("state").registerProvider("lightbox",function(){return{lightbox:t._lightbox_id}}),t.showLightbox=function(e){if(e&&!t.isReadonly(this.getTask(e))&&this.callEvent("onBeforeLightbox",[e])){var i=this.getTask(e),n=this.getLightbox(this.getTaskType(i.type));this._center_lightbox(n),this.showCover(),this._fill_lightbox(e,n),this._waiAria.lightboxVisibleAttr(n),this.callEvent("onLightbox",[e])}},t._get_timepicker_step=function(){if(this.config.round_dnd_dates){var e;if(function(t){var e=t.$ui.getView("timeline");return!(!e||!e.isVisible())}(this)){var i=t.getScale();e=n.getSecondsInUnit(i.unit)*i.step/60}return(!e||e>=1440)&&(e=this.config.time_step),e}return this.config.time_step},t.getLabel=function(t,e){for(var i=this._get_typed_lightbox_config(),n=0;n
"+this.locale.labels["button_"+t[i].button]+"
"),this.config.wide_form&&(e+="
"),e+="
"+n.render.call(this,t[i]),e+="
"}}return e},t.resizeLightbox=function(){if(this._lightbox){var t=this._lightbox.childNodes[1];t.style.height="0px",t.style.height=t.scrollHeight+"px",this._lightbox.style.height=t.scrollHeight+this.config.lightbox_additional_height+"px",t.style.height=t.scrollHeight+"px"}},t._center_lightbox=function(t){if(t){t.style.display="block";var e=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,i=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft,n=window.innerHeight||document.documentElement.clientHeight;t.style.top=e?Math.round(e+Math.max((n-t.offsetHeight)/2,0))+"px":Math.round(Math.max((n-t.offsetHeight)/2,0)+9)+"px",document.documentElement.scrollWidth>document.body.offsetWidth?t.style.left=Math.round(i+(document.body.offsetWidth-t.offsetWidth)/2)+"px":t.style.left=Math.round((document.body.offsetWidth-t.offsetWidth)/2)+"px"}},t.showCover=function(){if(!this._cover){this._cover=document.createElement("DIV"),this._cover.className="gantt_cal_cover";var t=void 0!==document.height?document.height:document.body.offsetHeight,e=document.documentElement?document.documentElement.scrollHeight:0;this._cover.style.height=Math.max(t,e)+"px",document.body.appendChild(this._cover)}},t._init_lightbox_events=function(){t.lightbox_events={},t.lightbox_events.gantt_save_btn=function(){t._save_lightbox()},t.lightbox_events.gantt_delete_btn=function(){t.callEvent("onLightboxDelete",[t._lightbox_id])&&(t.isTaskExists(t._lightbox_id)?t.$click.buttons.delete(t._lightbox_id):t.hideLightbox())},t.lightbox_events.gantt_cancel_btn=function(){t._cancel_lightbox()},t.lightbox_events.default=function(i,n){if(n.getAttribute("data-dhx-button"))t.callEvent("onLightboxButton",[n.className,n,i]);else{var r,a,o=e.getClassName(n);if(-1!=o.indexOf("gantt_custom_button"))if(-1!=o.indexOf("gantt_custom_button_"))for(r=n.parentNode.getAttribute("data-index"),a=n;a&&-1==e.getClassName(a).indexOf("gantt_cal_lsection");)a=a.parentNode;else r=n.getAttribute("data-index"),a=n.parentNode,n=n.firstChild;var s=t._get_typed_lightbox_config();r&&(r*=1,t.form_blocks[s[1*r].type].button_click(r,n,a,a.nextSibling))}},this.event(t.getLightbox(),"click",function(i){var n=(i=i||window.event).target?i.target:i.srcElement,r=e.getClassName(n);return r||(n=n.previousSibling,r=e.getClassName(n)),n&&r&&0===r.indexOf("gantt_btn_set")&&(n=n.firstChild,r=e.getClassName(n)),!(!n||!r)&&(t.defined(t.lightbox_events[n.className])?t.lightbox_events[n.className]:t.lightbox_events.default)(i,n)}),t.getLightbox().onkeydown=function(i){var n=i||window.event,r=i.target||i.srcElement,a=e.getClassName(r).indexOf("gantt_btn_set")>-1;switch((i||n).keyCode){case t.constants.KEY_CODES.SPACE:if((i||n).shiftKey)return;a&&r.click&&r.click();break;case t.keys.edit_save:if((i||n).shiftKey)return;a&&r.click?r.click():t._save_lightbox();break;case t.keys.edit_cancel:t._cancel_lightbox()}}},t._cancel_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxCancel",[this._lightbox_id,e.$new]),t.isTaskExists(e.id)&&e.$new&&this.silent(function(){t.$data.tasksStore.removeItem(e.id),t._update_flags(e.id,null)}),this.refreshData(),this.hideLightbox()},t._save_lightbox=function(){var t=this.getLightboxValues();this.callEvent("onLightboxSave",[this._lightbox_id,t,!!t.$new])&&(t.$new?(delete t.$new,this.addTask(t,t.parent,this.getTaskIndex(t.id))):this.isTaskExists(t.id)&&(this.mixin(this.getTask(t.id),t,!0),this.refreshTask(t.id),this.updateTask(t.id)),this.refreshData(),this.hideLightbox())},t._resolve_default_mapping=function(t){var e=t.map_to;return!{time:!0,time_optional:!0,duration:!0,duration_optional:!0}[t.type]?"constraint"===t.type&&(t.map_to&&"string"!=typeof t.map_to||(e={constraint_type:"constraint_type",constraint_date:"constraint_date"})):"auto"==t.map_to?e={start_date:"start_date",end_date:"end_date",duration:"duration"}:"string"==typeof t.map_to&&(e={start_date:t.map_to}),e},t.getLightboxValues=function(){var e={};t.isTaskExists(this._lightbox_id)&&(e=this.mixin({},this.getTask(this._lightbox_id)));for(var i=this._get_typed_lightbox_config(),n=0;n0&&(s+=" "),(a=g(e,r,c))&&(o=t._waiAria.lightboxSelectAttrString(c.timeFormat[r]),s+="");return s},getTimePickerValue:function(e,i,n){var r,a=i._time_format_order,o=t.defined(a[3]),s=0,l=0,c=n||0;return o&&(r=parseInt(e[a[3]+c].value,10),s=Math.floor(r/60),l=r%60),new Date(e[a[2]+c].value,e[a[1]+c].value,e[a[0]+c].value,s,l)},_fill_lightbox_select:function(e,i,n,r){if(e[i+r[0]].value=n.getDate(),e[i+r[1]].value=n.getMonth(),e[i+r[2]].value=n.getFullYear(),t.defined(r[3])){var a=60*n.getHours()+n.getMinutes();a=Math.round(a/t._get_timepicker_step())*t._get_timepicker_step();var o=e[i+r[3]];o.value=a,o.setAttribute("data-value",a)}},template:new r,textarea:new a,select:new s,time:new o,duration:new u,parent:new d,radio:new c,checkbox:new l,resources:new h,constraint:new f},t._is_lightbox_timepicker=function(){for(var t=this._get_typed_lightbox_config(),e=0;etask="+e+" of gantt.isUnscheduledTask. Task object was expected"),!!e.unscheduled||!e.start_date},t._isAllowedUnscheduledTask=function(e){return!(!e.unscheduled||!t.config.show_unscheduled)},t.isTaskVisible=function(e){if(!this.isTaskExists(e))return!1;var i=this.getTask(e),n=i.start_date?i.start_date.valueOf():null,r=i.end_date?i.end_date.valueOf():null;return!!(t._isAllowedUnscheduledTask(i)||n&&r&&n<=this._max_date.valueOf()&&r>=this._min_date.valueOf())&&!!(t.getGlobalTaskIndex(e)>=0)},t._getProjectEnd=function(){if(t.config.project_end)return t.config.project_end;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.end_date>+e.end_date?1:-1})).length?e[e.length-1].end_date:null},t._getProjectStart=function(){if(t.config.project_start)return t.config.project_start;if(t.config.start_date)return t.config.start_date;if(t.getState().min_date)return t.getState().min_date;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.start_date>+e.start_date?1:-1})).length?e[0].start_date:null},t._defaultTaskDate=function(e,i){var n=!(!i||i==t.config.root_id)&&t.getTask(i),r=null;if(n)r=t.config.schedule_from_end?t.calculateEndDate({start_date:n.end_date,duration:-t.config.duration_step,task:e}):n.start_date;else if(t.config.schedule_from_end)r=t.calculateEndDate({start_date:t._getProjectEnd(),duration:-t.config.duration_step,task:e});else{var a=t.getTaskByIndex(0);r=a?a.start_date?a.start_date:a.end_date?t.calculateEndDate({start_date:a.end_date,duration:-t.config.duration_step,task:e}):null:t.config.start_date||t.getState().min_date}return t.assert(r,"Invalid dates"),new Date(r)},t._set_default_task_timing=function(e){e.start_date=e.start_date||t._defaultTaskDate(e,t.getParent(e)),e.duration=e.duration||t.config.duration_step,e.end_date=e.end_date||t.calculateEndDate(e)},t.createTask=function(e,i,n){(e=e||{},t.defined(e.id)||(e.id=t.uid()),e.start_date||(e.start_date=t._defaultTaskDate(e,i)),void 0===e.text&&(e.text=t.locale.labels.new_task),void 0===e.duration&&(e.duration=1),this.isTaskExists(i))&&(this.setParent(e,i,!0),this.getTask(i).$open=!0);return this.callEvent("onTaskCreated",[e])?(this.config.details_on_create?(e.$new=!0,this.silent(function(){t.$data.tasksStore.addItem(e,n)}),this.selectTask(e.id),this.refreshData(),this.showLightbox(e.id)):this.addTask(e,i,n)&&(this.showTask(e.id),this.selectTask(e.id)),e.id):null},t._update_flags=function(e,i){var n=t.$data.tasksStore;void 0===e?(this._lightbox_id=null,n.silent(function(){n.unselect()}),this._tasks_dnd&&this._tasks_dnd.drag&&(this._tasks_dnd.drag.id=null)):(this._lightbox_id==e&&(this._lightbox_id=i),n.getSelectedId()==e&&n.silent(function(){n.unselect(e),n.select(i)}),this._tasks_dnd&&this._tasks_dnd.drag&&this._tasks_dnd.drag.id==e&&(this._tasks_dnd.drag.id=i))},t._get_task_timing_mode=function(t,e){var i=this.getTaskType(t.type),n={type:i,$no_start:!1,$no_end:!1};return e||i!=t.$rendered_type?(i==this.config.types.project?n.$no_end=n.$no_start=!0:i!=this.config.types.milestone&&(n.$no_end=!(t.end_date||t.duration),n.$no_start=!t.start_date,this._isAllowedUnscheduledTask(t)&&(n.$no_end=n.$no_start=!1)),n):(n.$no_start=t.$no_start,n.$no_end=t.$no_end,n)},t._init_task_timing=function(e){var i=t._get_task_timing_mode(e,!0),n=e.$rendered_type!=i.type,r=i.type;n&&(e.$no_start=i.$no_start,e.$no_end=i.$no_end,e.$rendered_type=i.type),n&&r!=this.config.types.milestone&&r==this.config.types.project&&this._set_default_task_timing(e),r==this.config.types.milestone&&(e.end_date=e.start_date),e.start_date&&e.end_date&&(e.duration=this.calculateDuration(e)),e.end_date||(e.end_date=e.start_date),e.duration=e.duration||0},t.isSummaryTask=function(e){t.assert(e&&e instanceof Object,"Invalid argument task="+e+" of gantt.isSummaryTask. Task object was expected");var i=t._get_task_timing_mode(e);return!(!i.$no_end&&!i.$no_start)},t.resetProjectDates=function(t){var e=this._get_task_timing_mode(t);if(e.$no_end||e.$no_start){var i=this.getSubtaskDates(t.id);this._assign_project_dates(t,i.start_date,i.end_date)}},t.getSubtaskDuration=function(e){var i=0,n=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(i+=e.duration)},n),i},t.getSubtaskDates=function(e){var i=null,n=null,r=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(e.start_date&&!e.$no_start&&(!i||i>e.start_date.valueOf())&&(i=e.start_date.valueOf()),e.end_date&&!e.$no_end&&(!n||n=+i.min_date&&+s<=+i.max_date)o=Math.floor(t.columnIndexByDate(s)),i.trace_x[o]||(o-=1,i.rtl&&(o=0)),a=new Date(i.trace_x[o]),r=t.date.add(a,l,c);else{for(o=Math.floor(t.columnIndexByDate(s)),r=t.date[c+"_start"](new Date(i.min_date)),i.trace_x[o]&&(r=t.date[c+"_start"](i.trace_x[o]));+r<+s;){var u=(r=t.date[c+"_start"](t.date.add(r,l,c))).getTimezoneOffset();r=t._correct_dst_change(r,u,r,c),t.date[c+"_start"]&&(r=t.date[c+"_start"](r))}a=t.date.add(r,-1*l,c)}return e.dir&&"future"==e.dir?r:e.dir&&"past"==e.dir?a:Math.abs(s-a)0},_is_work_hour:function(t){for(var e=this._getWorkHours(t),i=t.getHours(),n=0;n=e[n]&&io.valueOf(),this._isWorkTime(a,i)&&((d||h&&f)&&(s=r[i+"_start"](new Date(a)),l=r.add(s,n,i)),d?(d=!1,u=this._nextDate(s,i,n),c+=(l.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):h&&f?(h=!1,c+=(o.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):c++),a=u;return c},_getMinutesPerDay:function(t){return 60*this._getHoursPerDay(t)},_getHoursPerDay:function(t){for(var e=this._getWorkHours(t),i=0,n=0;n=0?1:-1;return i=Math.abs(1*i),this._calculateEndDate(e,i,n,r*a)},_calculateEndDate:function(t,e,i,n){return!!i&&(1==n&&"minute"==i?this._calculateMinuteEndDate(t,e,n):1==n&&"hour"==i?this._calculateHourEndDate(t,e,n):this._addInterval(t,e,i,n,null).end)},_addInterval:function(t,e,i,n,r){for(var a=0,o=t;a0?new Date(s.valueOf()-1):new Date(s.valueOf()+1),i)&&a++,o=s}return{end:o,satrt:t,added:a}},_calculateHourEndDate:function(t,e,i){var n=new Date(t),r=0;i=i||1,e=Math.abs(1*e);var a=this._addInterval(n,e,"hour",i,function(t){return!(t.getHours()||t.getMinutes()||t.getSeconds()||t.getMilliseconds())});if(r=a.added,n=a.end,(c=e-r)&&c>24){for(var o=n;r0?new Date(s.valueOf()-1):new Date(s.valueOf()+1),"day")){var l=this._getHoursPerDay(o);if(r+l>=e)break;r+=l}o=s}n=o}if(r0?1:-1),r+=60*s)}if(r3e3)return this.$gantt.assert(!1,"Invalid working time check"),!1;var s=a.getTimezoneOffset();a=this.$gantt.date.add(a,i,e),a=this.$gantt._correct_dst_change(a,s,i,e),this.$gantt.date[e+"_start"]&&(a=this.$gantt.date[e+"_start"](a))}return a}},t.exports=a},function(t,e,i){var n=i(0),r=i(18),a=i(62);function o(t){this.$gantt=t,this._calendars={}}o.prototype={_calendars:{},_getDayHoursForMultiple:function(t,e){for(var i=[],n=!0,r=0,a=this.$gantt.date.day_start(new Date(e)),o=0;o<24;o++)t.reduce(function(t,e){return t&&e._is_work_hour(a)},!0)?(n?(i[r]=o,i[r+1]=o+1,r+=2):i[r-1]+=1,n=!1):n||(n=!0),a=this.$gantt.date.add(a,1,"hour");return i.length||(i=!1),i},mergeCalendars:function(){var t,e=this.createCalendar(),i=[],n=Array.prototype.slice.call(arguments,0);e.worktime.hours=[0,24],e.worktime.dates={};var r=this.$gantt.date.day_start(new Date(2592e5));for(t=0;t<7;t++)i=this._getDayHoursForMultiple(n,r),e.worktime.dates[t]=i,r=this.$gantt.date.add(r,1,"day");for(var a=0;a1e4&&(i=this._getDayHoursForMultiple(n,new Date(+o)),e.worktime.dates[o]=i);return e},_convertWorktimeSettings:function(t){var e=t.days;if(e){t.dates=t.dates||{};for(var i=0;i=3?(r=i,a=n):"string"==typeof arguments[1]?r=arguments[1]:"function"==typeof arguments[1]&&(a=arguments[1]),this._load_type=r,this.callEvent("onLoadStart",[e,r]),this.ajax.get(e,t.bind(function(t){this.on_load(t,r),this.callEvent("onLoadEnd",[e,r]),"function"==typeof a&&a.call(this)},this))},t.parse=function(t,e){this.on_load({xmlDoc:{responseText:t}},e)},t.serialize=function(t){return this[t=t||"json"].serialize()},t.on_load=function(t,e){this.callEvent("onBeforeParse",[]),e||(e="json"),this.assert(this[e],"Invalid data type:'"+e+"'");var i=t.xmlDoc.responseText,n=this[e].parse(i,t);this._process_loading(n)},t._process_loading=function(t){t.collections&&this._load_collections(t.collections),this.$data.tasksStore.parse(t.data);var e=t.links||(t.collections?t.collections.links:[]);if(this.$data.linksStore.parse(e),this.callEvent("onParse",[]),this.render(),this.config.initial_scroll){var i=this.getTaskByIndex(0),n=i?i.id:this.config.root_id;this.isTaskExists(n)&&this.showTask(n)}},t._load_collections=function(t){var e=!1;for(var i in t)if(t.hasOwnProperty(i)){e=!0;var n=t[i],r=this.serverList[i];if(!r)continue;r.splice(0,r.length);for(var a=0;a"},_copyObject:function(t){return""},serialize:function(){for(var e=[],i=[],n=t.json.serialize(),r=0,a=n.data.length;r"+e.join("")+""+i.join("")+""}},t.oldxml={parse:function(e,i){i=t.xml._getXML(e,i,"projects");for(var n={collections:{links:[]}},r=n.data=[],a=t.ajax.xpath("//task",i),o=0;o","gm"),i=new RegExp(" +","gm");function n(t){return(t+"").replace(e," ").replace(i," ")}var r=new RegExp("'","gm");function a(t){return(t+"").replace(r,"'")}for(var o in t._waiAria={getAttributeString:function(t){var e=[" "];for(var i in t){var r=a(n(t[i]));e.push(i+"='"+r+"'")}return e.push(" "),e.join(" ")},getTimelineCellAttr:function(e){return t._waiAria.getAttributeString({"aria-label":e})},_taskCommonAttr:function(e,i){e.start_date&&e.end_date&&(i.setAttribute("aria-label",n(t.templates.tooltip_text(e.start_date,e.end_date,e))),t.isReadonly(e)&&i.setAttribute("aria-readonly",!0),e.$dataprocessor_class&&i.setAttribute("aria-busy",!0),i.setAttribute("aria-selected",t.getState().selected_task==e.id||t.isSelectedTask&&t.isSelectedTask(e.id)?"true":"false"))},setTaskBarAttr:function(e,i){this._taskCommonAttr(e,i),!t.isReadonly(e)&&t.config.drag_move&&(e.id!=t.getState().drag_id?i.setAttribute("aria-grabbed",!1):i.setAttribute("aria-grabbed",!0))},taskRowAttr:function(e,i){this._taskCommonAttr(e,i),!t.isReadonly(e)&&t.config.order_branch&&i.setAttribute("aria-grabbed",!1),i.setAttribute("role","row"),i.setAttribute("aria-level",e.$level),t.hasChild(e.id)&&i.setAttribute("aria-expanded",e.$open?"true":"false")},linkAttr:function(e,i){var r=t.config.links,a=e.type==r.finish_to_start||e.type==r.start_to_start,o=e.type==r.start_to_start||e.type==r.start_to_finish,s=t.locale.labels.link+" "+t.templates.drag_link(e.source,o,e.target,a);i.setAttribute("aria-label",n(s)),t.isReadonly(e)&&i.setAttribute("aria-readonly",!0)},gridSeparatorAttr:function(t){t.setAttribute("role","separator")},lightboxHiddenAttr:function(t){t.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},lightboxAttr:function(t){t.setAttribute("role","dialog"),t.setAttribute("aria-hidden","true"),t.firstChild.setAttribute("role","heading")},lightboxButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels[e],tabindex:"0"})},lightboxHeader:function(t,e){t.setAttribute("aria-label",e)},lightboxSelectAttrString:function(e){var i="";switch(e){case"%Y":i=t.locale.labels.years;break;case"%m":i=t.locale.labels.months;break;case"%d":i=t.locale.labels.days;break;case"%H:%i":i=t.locale.labels.hours+t.locale.labels.minutes}return t._waiAria.getAttributeString({"aria-label":i})},lightboxDurationInputAttrString:function(e){return this.getAttributeString({"aria-label":t.locale.labels.column_duration,"aria-valuemin":"0"})},gridAttrString:function(){return[" role='treegrid'",t.config.multiselect?"aria-multiselectable='true'":"aria-multiselectable='false'"," "].join(" ")},gridScaleRowAttrString:function(){return"role='row'"},gridScaleCellAttrString:function(e,i){var n="";if("add"==e.name)n=this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task});else{var r={role:"columnheader","aria-label":i};t._sort&&t._sort.name==e.name&&("asc"==t._sort.direction?r["aria-sort"]="ascending":r["aria-sort"]="descending"),n=this.getAttributeString(r)}return n},gridDataAttrString:function(){return"role='rowgroup'"},gridCellAttrString:function(t,e){return this.getAttributeString({role:"gridcell","aria-label":e})},gridAddButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task})},messageButtonAttrString:function(t){return"tabindex='0' role='button' aria-label='"+t+"'"},messageInfoAttr:function(t){t.setAttribute("role","alert")},messageModalAttr:function(t,e){t.setAttribute("role","dialog"),e&&t.setAttribute("aria-labelledby",e)},quickInfoAttr:function(t){t.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' "},quickInfoHeader:function(t,e){t.setAttribute("aria-label",e)},quickInfoButtonAttrString:function(e){return t._waiAria.getAttributeString({role:"button","aria-label":e,tabindex:"0"})},tooltipAttr:function(t){t.setAttribute("role","tooltip")},tooltipVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(t){t.setAttribute("aria-hidden","true")}},t._waiAria)t._waiAria[o]=function(e){return function(){return t.config.wai_aria_attributes?e.apply(this,arguments):""}}(t._waiAria[o])}},function(t,e){t.exports=function(t){t.getGridColumn=function(e){for(var i=t.config.columns,n=0;n"+g+""),p&&(g="
"+g),g&&(y.innerHTML=g),c.push(y)}}var b=null;if(c.length){for(b=document.createElement("div"),h=0;h0&&_+g>=v+2&&(l=0),o&&!y?o=0:o<0&&!m?o=0:o>0&&m+y>=b&&(o=0);var k=t.config.autoscroll_step;k&&k<2&&(k=2),o*=k||i,l*=k||i,(o||l)&&function(e,i){var n=t.getScrollState(),r=null,a=null;e&&(r=n.x+e,r=Math.min(n.width,r),r=Math.max(0,r));i&&(a=n.y+i,a=Math.min(n.height,a),a=Math.max(0,a));t.scrollTo(r,a)}(o,l)}function p(t,i,n){return t-e<0&&ti-e&&t>n?1:0}t.attachEvent("onGanttReady",function(){t.eventRemove(document.body,"mousemove",_),t.event(document.body,"mousemove",_)})}},function(t,e,i){t.exports=function(t){for(var e=[i(77),i(76),i(75),i(74),i(73),i(72),i(71),i(70)],n=0;n-1?t.indexOf("?"):t.length),this.serverProcessor=t+("/"===t.slice(-1)?"":"/")+i}else{var n=this._ganttMode+"s";this.serverProcessor=t+e.ajax.urlSeparator(t)+"gantt_mode="+n}return!0}),t.attachEvent("insertCallback",function(t,i,n,r){var a=t.data||e.xml._xmlNodeToJSON(t.firstChild),o={add:e.addTask,isExist:e.isTaskExists};"links"===r&&(o.add=e.addLink,o.isExist=e.isLinkExists),o.isExist.call(e,i)||(a.id=i,o.add.call(e,a))}),t.attachEvent("updateCallback",function(t,i){var n=t.data||e.xml._xmlNodeToJSON(t.firstChild);if(e.isTaskExists(i)){var r=e.getTask(i);for(var a in n){var o=n[a];switch(a){case"id":continue;case"start_date":case"end_date":o=e.templates.xml_date(o);break;case"duration":r.end_date=e.calculateEndDate({start_date:r.start_date,duration:o,task:r})}r[a]=o}e.updateTask(i),e.refreshData()}}),t.attachEvent("deleteCallback",function(t,i,n,r){var a={delete:e.deleteTask,isExist:e.isTaskExists};"links"===r&&(a.delete=e.deleteLink,a.isExist=e.isLinkExists),a.isExist.call(e,i)&&a.delete.call(e,i)})},t.prototype.detach=function(){var t=this;n.forEach(this._dataProcessorHandlers,function(e){t.$gantt.detachEvent(e)}),this._dataProcessorHandlers=[]},t}();e.default=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(4),r=i(3),a=i(0),o=i(80),s=i(79);e.createDataProcessor=function(t){var e,i;t instanceof Function?e=t:t.hasOwnProperty("router")?e=t.router:t.hasOwnProperty("link")&&t.hasOwnProperty("task")&&(e=t),i=e?"CUSTOM":t.mode||"REST-JSON";var n=new l(t.url);return n.init(this),n.setTransactionMode({mode:i,router:e},t.batchUpdate),n};var l=function(){function t(t){this.serverProcessor=t,this.action_param="!nativeeditor_status",this.object=null,this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._headers=null,this._payload=null,this._postDelim="_",this._waitMode=0,this._in_progress={},this._invalid={},this.mandatoryFields=[],this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),n(this)}return t.prototype.setTransactionMode=function(t,e){"object"==typeof t?(this._tMode=t.mode||this._tMode,a.defined(t.headers)&&(this._headers=t.headers),a.defined(t.payload)&&(this._payload=t.payload)):(this._tMode=t,this._tSend=e),"REST"===this._tMode&&(this._tSend=!1,this._endnm=!0),"JSON"!==this._tMode&&"REST-JSON"!==this._tMode||(this._tSend=!1,this._endnm=!0,this._serializeAsJson=!0,this._headers=this._headers||{},this._headers["Content-type"]="application/json"),"CUSTOM"===this._tMode&&(this._tSend=!1,this._endnm=!0,this._router=t.router)},t.prototype.escape=function(t){return this._utf?encodeURIComponent(t):escape(t)},t.prototype.enableUTFencoding=function(t){this._utf=!!t},t.prototype.setDataColumns=function(t){this._columns="string"==typeof t?t.split(","):t},t.prototype.getSyncState=function(){return!this.updatedRows.length},t.prototype.enableDataNames=function(t){this._endnm=!!t},t.prototype.enablePartialDataSend=function(t){this._changed=!!t},t.prototype.setUpdateMode=function(t,e){this.autoUpdate="cell"===t,this.updateMode=t,this.dnd=e},t.prototype.ignore=function(t,e){this._silent_mode=!0,t.call(e||window),this._silent_mode=!1},t.prototype.setUpdated=function(t,e,i){if(!this._silent_mode){var n=this.findRow(t);i=i||"updated";var r=this.$gantt.getUserData(t,this.action_param);r&&"updated"===i&&(i=r),e?(this.set_invalid(t,!1),this.updatedRows[n]=t,this.$gantt.setUserData(t,this.action_param,i),this._in_progress[t]&&(this._in_progress[t]="wait")):this.is_invalid(t)||(this.updatedRows.splice(n,1),this.$gantt.setUserData(t,this.action_param,"")),this.markRow(t,e,i),e&&this.autoUpdate&&this.sendData(t)}},t.prototype.markRow=function(t,e,i){var n="",r=this.is_invalid(t);if(r&&(n=this.styles[r],e=!0),this.callEvent("onRowMark",[t,e,i,r])&&(n=this.styles[e?i:"clear"]+n,this.$gantt[this._methods[0]](t,n),r&&r.details)){n+=this.styles[r+"_cell"];for(var a=0;aa.indexOf("/task")?"link":"task",this.setGanttMode(r);var o=this.$gantt.ajax;if(window.JSON){var s=void 0;try{s=JSON.parse(e.xmlDoc.responseText)}catch(t){e.xmlDoc.responseText.length||(s={})}if(s){var l=s.action||this.getState(i)||"updated",c=s.sid||i[0],u=s.tid||i[0];return t.afterUpdateCallback(c,u,l,s),t.finalizeUpdate(),void this.setGanttMode(r)}}var d=o.xmltop("data",e.xmlDoc);if(!d)return this.cleanUpdate(i);var h=o.xpath("//data/action",d);if(!h.length)return this.cleanUpdate(i);for(var f=0;f=i.$level)return!1;for(;i&&this.exists(n);){if((i=this.getItem(n))&&i.id==e)return!0;n=this.getParent(i)}return!1},getSiblings:function(t){if(!this.exists(t))return n.$create();var e=this.getParent(t);return this.getChildren(e)},getNextSibling:function(t){for(var e=this.getSiblings(t),i=0,n=e.length;ii[t]?1:-1}:t;if(e){var r=n;n=function(t,e){return r(e,t)}}var a=this.getChildren(i);if(a){for(var o=[],s=a.length-1;s>=0;s--)o[s]=this.getItem(a[s]);o.sort(n);for(s=0;sr||+i.end_date<+n)return!1}return!0}),o.attachEvent("onIdChange",function(e,i){t._update_flags(e,i)}),o.attachEvent("onAfterUpdate",function(e){if(t._update_parents(e),t.getState("batchUpdate").batch_update)return!0;for(var i=o.getItem(e),n=0;nl[1]&&(t.config.grid_width=l[1]),r&&t.config.show_chart)if(a.$config.width=t.config.grid_width-1,i)a.$parent.$config.width=t.config.grid_width,a.$parent.$config.group&&t.$layout._syncCellSizes(a.$parent.$config.group,a.$parent.$config.width);else if(r&&!n.isChildOf(r.$task,e.$view)){if(!a.$config.original_grid_width){var c=t.skins[t.skin];c&&c.config&&c.config.grid_width?a.$config.original_grid_width=c.config.grid_width:a.$config.original_grid_width=0}t.config.grid_width=a.$config.original_grid_width,a.$parent.$config.width=t.config.grid_width}else a.$parent._setContentSize(a.$config.width,a.$config.height),t.$layout._syncCellSizes(a.$parent.$config.group,t.config.grid_width);else r&&n.isChildOf(r.$task,e.$view)&&(a.$config.original_grid_width=t.config.grid_width),i||(a.$parent.$config.width=0)}i=!1}}),this._initScrollStateEvents(e)},_initScrollStateEvents:function(e){t._getVerticalScrollbar=this.getVerticalScrollbar,t._getHorizontalScrollbar=this.getHorizontalScrollbar;var i=this.getVerticalScrollbar(),n=this.getHorizontalScrollbar();i&&i.attachEvent("onScroll",function(e,i,n){var r=t.getScrollState();t.callEvent("onGanttScroll",[r.x,e,r.x,i])}),n&&n.attachEvent("onScroll",function(e,i,n){var r=t.getScrollState();t.callEvent("onGanttScroll",[e,r.y,i,r.y])}),e.attachEvent("onResize",function(){i&&!t.$scroll_ver&&(t.$scroll_ver=i.$scroll_ver),n&&!t.$scroll_hor&&(t.$scroll_hor=n.$scroll_hor)})},_findGridResizer:function(t,e){for(var i,n=t.getCellsByType("resizer"),r=!0,a=0;a"+e.templates.drag_link(i.link_source_id,i.link_from_start,i.link_target_id,i.link_to_start)+"";t.innerHTML=a}function g(){o=s=r=null,a=!0}function p(t,e,i,n){return e>=t?n<=i?1:4:n<=i?2:3}h.attachEvent("onBeforeDragStart",e.bind(function(i,r){var a=r.target||r.srcElement;if(g(),e.getState().drag_id)return!1;if(n.locateClassName(a,"gantt_link_point")){n.locateClassName(a,"task_start_date")&&(s=!0);var l=e.locate(r);o=l;var c=e.getTask(l);if(e.isReadonly(c))return g(),!1;return this._dir_start=f(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),h.attachEvent("onAfterDragStart",e.bind(function(t,i){e.config.touch&&e.refreshData(),_(h.config.marker)},this)),h.attachEvent("onDragMove",e.bind(function(o,s){var c=h.config,u=h.getPosition(s);!function(t,e){t.style.left=e.x+5+"px",t.style.top=e.y+5+"px"}(c.marker,u);var d=!!n.locateClassName(s,"gantt_link_control"),g=r,v=i,m=a,y=e.locate(s),b=!0;if(n.isChildOf(s.target||s.srcElement,e.$root)||(d=!1,y=null),d&&(b=!n.locateClassName(s,"task_end_date"),d=!!y),r=y,i=d,a=b,d){var k=e.getTask(y),w=t.$getConfig(),x=n.locateClassName(s,"gantt_link_control"),$=0;x&&($=Math.floor(x.offsetWidth/2)),this._dir_end=f(k,!!a,$,w)}else this._dir_end=n.getRelativeEventPosition(s,t.$task_data);var T=!(v==d&&g==y&&m==b);return T&&(g&&e.refreshTask(g,!1),y&&e.refreshTask(y,!1)),T&&_(c.marker),function(i,n,r,a){var o=function(){h._direction||(h._direction=document.createElement("div"),t.$task_links.appendChild(h._direction));return h._direction}(),s=l(),c=["gantt_link_direction"];e.templates.link_direction_class&&c.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var u=Math.sqrt(Math.pow(r-i,2)+Math.pow(a-n,2));if(!(u=Math.max(0,u-3)))return;o.className=c.join(" ");var d=(a-n)/(r-i),f=Math.atan(d);2==p(i,r,n,a)?f+=Math.PI:3==p(i,r,n,a)&&(f-=Math.PI);var _=Math.sin(f),g=Math.cos(f),v=Math.round(n),m=Math.round(i),y=["-webkit-transform: rotate("+f+"rad)","-moz-transform: rotate("+f+"rad)","-ms-transform: rotate("+f+"rad)","-o-transform: rotate("+f+"rad)","transform: rotate("+f+"rad)","width:"+Math.round(u)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){y.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(_,g)+'"');var b=Math.abs(Math.round(i-r)),k=Math.abs(Math.round(a-n));switch(p(i,r,n,a)){case 1:v-=k;break;case 2:m-=b,v-=k;break;case 3:m-=b}}y.push("top:"+v+"px"),y.push("left:"+m+"px"),o.style.cssText=y.join(";")}(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),h.attachEvent("onDragEnd",e.bind(function(){var t=l();if(t.link_source_id&&t.link_target_id&&t.link_source_id!=t.link_target_id){var i=e._get_link_type(t.link_from_start,t.link_to_start),n={source:t.link_source_id,target:t.link_target_id,type:i};n.type&&e.isLinkAllowed(n)&&e.addLink(n)}g(),e.config.touch?e.refreshData():(t.link_source_id&&e.refreshTask(t.link_source_id,!1),t.link_target_id&&e.refreshTask(t.link_target_id,!1)),h._direction&&(h._direction.parentNode&&h._direction.parentNode.removeChild(h._direction),h._direction=null)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,i){var n=i(1),r=i(0),a=i(29);t.exports={createTaskDND:function(){var t;return{extend:function(e){e.roundTaskDates=function(e){t.round_task_dates(e)}},init:function(e,i){return t=function(t,e){var i=e.$services;return{drag:null,dragMultiple:{},_events:{before_start:{},before_finish:{},after_finish:{}},_handlers:{},init:function(){this._domEvents=e._createDomEventScope(),this.clear_drag_state();var t=e.config.drag_mode;this.set_actions(),i.getService("state").registerProvider("tasksDnd",r.bind(function(){return{drag_id:this.drag?this.drag.id:void 0,drag_mode:this.drag?this.drag.mode:void 0,drag_from_start:this.drag?this.drag.left:void 0}},this));var n={before_start:"onBeforeTaskDrag",before_finish:"onBeforeTaskChanged",after_finish:"onAfterTaskDrag"};for(var a in this._events)for(var o in t)this._events[a][o]=n[a];this._handlers[t.move]=this._move,this._handlers[t.resize]=this._resize,this._handlers[t.progress]=this._resize_progress},set_actions:function(){var i=t.$task_data;this._domEvents.attach(i,"mousemove",e.bind(function(t){this.on_mouse_move(t||event)},this)),this._domEvents.attach(i,"mousedown",e.bind(function(t){this.on_mouse_down(t||event)},this)),this._domEvents.attach(i,"mouseup",e.bind(function(t){this.on_mouse_up(t||event)},this))},clear_drag_state:function(){this.drag={id:null,mode:null,pos:null,start_x:null,start_y:null,obj:null,left:null},this.dragMultiple={}},_resize:function(i,n,r){var a=t.$getConfig(),o=this._drag_task_coords(i,r);r.left?(i.start_date=e.dateFromPos(o.start+n),i.start_date||(i.start_date=new Date(e.getState().min_date))):(i.end_date=e.dateFromPos(o.end+n),i.end_date||(i.end_date=new Date(e.getState().max_date))),i.end_date-i.start_datec){var u=c-s.end;(u50||this._is_number(r)&&this._is_number(o)&&this._mouse_position_change({x:r,y:o},i)>20)&&this._start_dnd(t)}if(this.drag.mode){if(!a(this,40))return;this._update_on_move(t)}},_update_item_on_move:function(t,i,n,r,a){var o=e.getTask(i),s=e.mixin({},o),l=e.mixin({},o);this._handlers[n].apply(this,[l,t,r]),e.mixin(o,l,!0),e.callEvent("onTaskDrag",[o.id,n,l,s,a]),e.mixin(o,l,!0),e.refreshTask(i)},_update_on_move:function(i){var a=this.drag,o=t.$getConfig();if(a.mode){var s=n.getRelativeEventPosition(i,t.$task_data);if(a.pos&&a.pos.x==s.x)return;a.pos=s;var l=e.dateFromPos(s.x);if(!l||isNaN(l.getTime()))return;var c=s.x-a.start_x,u=e.getTask(a.id);if(this._handlers[a.mode]){if(e.isSummaryTask(u)&&e.config.drag_project&&a.mode==o.drag_mode.move){var d={};d[a.id]=r.copy(a);var h=this._find_max_shift(r.mixin(d,this.dragMultiple),c);for(var f in void 0!==h&&(c=h),this._update_item_on_move(c,a.id,a.mode,a,i),this.dragMultiple){var _=this.dragMultiple[f];this._update_item_on_move(c,_.id,_.mode,_,i)}}else this._update_item_on_move(c,a.id,a.mode,a,i);e._update_parents(a.id)}}},on_mouse_down:function(i,r){if(2!=i.button||void 0===i.button){var a=t.$getConfig(),o=e.locate(i),s=null;if(e.isTaskExists(o)&&(s=e.getTask(o)),!e.isReadonly(s)&&!this.drag.mode){this.clear_drag_state(),r=r||i.target||i.srcElement;var l=n.getClassName(r),c=this._get_drag_mode(l,r);if(!l||!c)return r.parentNode?this.on_mouse_down(i,r.parentNode):void 0;if(c)if(c.mode&&c.mode!=a.drag_mode.ignore&&a["drag_"+c.mode]){if(o=e.locate(r),s=e.copy(e.getTask(o)||{}),e.isReadonly(s))return this.clear_drag_state(),!1;if(e.isSummaryTask(s)&&!a.drag_project&&c.mode!=a.drag_mode.progress)return void this.clear_drag_state();c.id=o;var u=n.getRelativeEventPosition(i,e.$task_data);c.start_x=u.x,c.start_y=u.y,c.obj=s,this.drag.start_drag=c,this.drag.timestamp=Date.now()}else this.clear_drag_state();else if(e.checkEvent("onMouseDown")&&e.callEvent("onMouseDown",[l.split(" ")[0]])&&r.parentNode)return this.on_mouse_down(i,r.parentNode)}}},_fix_dnd_scale_time:function(i,n){var r=t.$getConfig(),a=e.getScale().unit,o=e.getScale().step;function s(i){if(e.config.correct_work_time){var n=t.$getConfig();e.isWorkTime(i.start_date,void 0,i)||(i.start_date=e.calculateEndDate({start_date:i.start_date,duration:-1,unit:n.duration_unit,task:i}))}}r.round_dnd_dates||(a="minute",o=r.time_step),n.mode==r.drag_mode.resize?n.left?(i.start_date=e.roundDate({date:i.start_date,unit:a,step:o}),s(i)):(i.end_date=e.roundDate({date:i.end_date,unit:a,step:o}),function(i){if(e.config.correct_work_time){var n=t.$getConfig();e.isWorkTime(new Date(i.end_date-1),void 0,i)||(i.end_date=e.calculateEndDate({start_date:i.end_date,duration:1,unit:n.duration_unit,task:i}))}}(i)):n.mode==r.drag_mode.move&&(i.start_date=e.roundDate({date:i.start_date,unit:a,step:o}),s(i),i.end_date=e.calculateEndDate(i))},_fix_working_times:function(i,n){var r=t.$getConfig();(n=n||{mode:r.drag_mode.move}).mode==r.drag_mode.resize?n.left?i.start_date=e.getClosestWorkTime({date:i.start_date,dir:"future",task:i}):i.end_date=e.getClosestWorkTime({date:i.end_date,dir:"past",task:i}):n.mode==r.drag_mode.move&&e.correctTaskWorkTime(i)},_finalize_mouse_up:function(t,i,n,r){var a=e.getTask(t);if(i.work_time&&i.correct_work_time&&this._fix_working_times(a,n),this._fix_dnd_scale_time(a,n),this._fireEvent("before_finish",n.mode,[t,n.mode,e.copy(n.obj),r])){var o=t;e._init_task_timing(a),this.clear_drag_state(),e.updateTask(a.id),this._fireEvent("after_finish",n.mode,[o,n.mode,r])}else this.clear_drag_state(),t==n.id&&(n.obj._dhx_changed=!1,e.mixin(a,n.obj,!0)),e.refreshTask(a.id)},on_mouse_up:function(i){var n=this.drag;if(n.mode&&n.id){var r=t.$getConfig(),a=e.getTask(n.id),o=this.dragMultiple;if(e.isSummaryTask(a)&&r.drag_project&&n.mode==r.drag_mode.move)for(var s in o)this._finalize_mouse_up(o[s].id,r,o[s],i);this._finalize_mouse_up(n.id,r,n,i)}this.clear_drag_state()},_get_drag_mode:function(e,i){var n=t.$getConfig().drag_mode,r={mode:null,left:null};switch((e||"").split(" ")[0]){case"gantt_task_line":case"gantt_task_content":r.mode=n.move;break;case"gantt_task_drag":r.mode=n.resize;var a=i.getAttribute("data-bind-property");r.left="start_date"==a;break;case"gantt_task_progress_drag":r.mode=n.progress;break;case"gantt_link_control":case"gantt_link_point":r.mode=n.ignore;break;default:r=null}return r},_start_dnd:function(i){var n=this.drag=this.drag.start_drag;delete n.start_drag;var r=t.$getConfig(),a=n.id;if(r["drag_"+n.mode]&&e.callEvent("onBeforeDrag",[a,n.mode,i])&&this._fireEvent("before_start",n.mode,[a,n.mode,i])){delete n.start_drag;var o=e.getTask(a);e.isSummaryTask(o)&&e.config.drag_project&&n.mode==r.drag_mode.move&&e.eachTask(function(t){this.dragMultiple[t.id]=e.mixin({id:t.id,obj:t},this.drag)},o.id,this),e.callEvent("onTaskDragStart",[])}else this.clear_drag_state()},_fireEvent:function(t,i,n){e.assert(this._events[t],"Invalid stage:{"+t+"}");var r=this._events[t][i];return e.assert(r,"Unknown after drop mode:{"+i+"}"),e.assert(n,"Invalid event arguments"),!e.checkEvent(r)||e.callEvent(r,n)},round_task_dates:function(e){var i=this.drag,n=t.$getConfig();i||(i={mode:n.drag_mode.move}),this._fix_dnd_scale_time(e,i)},destructor:function(){this._domEvents.detachAll()}}}(e,i),e._tasks_dnd=t,t.init(i)},destructor:function(){t&&(t.destructor(),t=null)}}}}},function(t,e,i){var n=i(0),r=i(94),a=i(93),o=i(1),s=function(t){var e=t.$services;return{onCreated:function(e){var o=e.$config;o.bind=n.defined(o.bind)?o.bind:"task",o.bindLinks=n.defined(o.bindLinks)?o.bindLinks:"link",e._linksDnD=a.createLinkDND(),e._tasksDnD=r.createTaskDND(),e._tasksDnD.extend(e),this._mouseDelegates=i(10)(t)},onInitialized:function(e){this._attachDomEvents(t),this._attachStateProvider(t,e),e._tasksDnD.init(e,t),e._linksDnD.init(e,t),"timeline"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){this._clearDomEvents(t),this._clearStateProvider(t),e._tasksDnD&&e._tasksDnD.destructor()},extendDom:function(e){t.$task=e.$task,t.$task_scale=e.$task_scale,t.$task_data=e.$task_data,t.$task_bg=e.$task_bg,t.$task_links=e.$task_links,t.$task_bars=e.$task_bars},_clearDomEvents:function(){this._mouseDelegates.destructor(),this._mouseDelegates=null},_attachDomEvents:function(t){function e(e,i){if(e&&this.callEvent("onLinkDblClick",[e,i])){var n=this.getLink(e);if(this.isReadonly(n))return;var r=this.locale.labels.link+" "+this.templates.link_description(this.getLink(e))+" "+this.locale.labels.confirm_link_deleting;window.setTimeout(function(){t._dhtmlx_confirm(r,"",function(){t.deleteLink(e)})},this.config.touch?300:1)}}this._mouseDelegates.delegate("click","gantt_task_link",t.bind(function(t,e){var i=this.locate(t,this.config.link_attribute);i&&this.callEvent("onLinkClick",[i,t])},t),this.$task),this._mouseDelegates.delegate("click","gantt_scale_cell",t.bind(function(e,i){var n=o.getRelativeEventPosition(e,t.$task_data),r=t.dateFromPos(n.x),a=Math.floor(t.columnIndexByDate(r)),s=t.getScale().trace_x[a];t.callEvent("onScaleClick",[e,s])},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_task_link",t.bind(function(i,n,r){n=this.locate(i,t.config.link_attribute),e.call(this,n,i)},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_link_point",t.bind(function(t,i,n){i=this.locate(t);var r=this.getTask(i),a=null;return n.parentNode&&o.getClassName(n.parentNode)&&(a=o.getClassName(n.parentNode).indexOf("_left")>-1?r.$target[0]:r.$source[0]),a&&e.call(this,a,t),!1},t),this.$task)},_attachStateProvider:function(t,i){var n=i;e.getService("state").registerProvider("tasksTimeline",function(){return{scale_unit:n._tasks?n._tasks.unit:void 0,scale_step:n._tasks?n._tasks.step:void 0}})},_clearStateProvider:function(){e.getService("state").unregisterProvider("tasksTimeline")}}};t.exports=s},function(t,e,i){var n=i(1);function r(t,e){var i=n.getNodePosition(e.$grid_data);return t.x+=i.x-e.$grid.scrollLeft,t.y+=i.y-e.$grid_data.scrollTop,t}t.exports={removeLineHighlight:function(t){t.markerLine&&t.markerLine.parentNode&&t.markerLine.parentNode.removeChild(t.markerLine),t.markerLine=null},highlightPosition:function(t,e,i){var a=function(t,e){var i=n.getNodePosition(e.$grid_data),r=n.getRelativeEventPosition(t,e.$grid_data),a=e.$config.rowStore,o=i.x,s=r.y-10,l=e.$getConfig();si.y+c-l.row_height&&(s=i.y+c-l.row_height),i.x=o,i.y=s,i}(t,i);e.marker.style.left=a.x+9+"px",e.marker.style.top=a.y+"px";var o=e.markerLine;o||((o=document.createElement("div")).className="gantt_drag_marker gantt_grid_dnd_marker",o.innerHTML="
",o.style.pointerEvents="none",document.body.appendChild(o),e.markerLine=o),t.child?function(t,e,i){var n=t.targetParent,a=r({x:0,y:i.getItemTop(n)},i);e.innerHTML="
",e.style.width=i.$grid_data.offsetWidth+"px",e.style.top=a.y+"px",e.style.left=a.x+"px",e.style.height=i.getItemHeight(n)+"px"}(t,o,i):function(t,e,i){var n=function(t,e){var i=e.$config.rowStore,n={x:0,y:0},a=e.$grid_data.querySelector(".gantt_tree_indent"),o=15,s=0;if(a&&(o=a.offsetWidth),t.targetId!==i.$getRootId()){var l=e.getItemTop(t.targetId),c=e.getItemHeight(t.targetId);if(s=i.exists(t.targetId)?i.calculateItemLevel(i.getItem(t.targetId)):0,t.prevSibling)n.y=l;else if(t.nextSibling){var u=0;i.eachItem(function(t){-1!==i.getIndexById(t.id)&&u++},t.targetId),n.y=l+c+u*c}else n.y=l+c,s+=1}return n.x=40+s*o,n.width=Math.max(e.$grid_data.offsetWidth-n.x,0),r(n,e)}(t,i);e.innerHTML="
",e.style.left=n.x+"px",e.style.height="4px",e.style.top=n.y-2+"px",e.style.width=n.width+"px"}(t,o,i)}}},function(t,e,i){var n=i(9);t.exports=function(t,e,i,r,a){var o;if(e!==a.$getRootId())o=i<.25?n.prevSiblingTarget(t,e,a):!(i>.6)||a.hasChild(e)&&a.getItem(e).$open?n.firstChildTarget(t,e,a):n.nextSiblingTarget(t,e,a);else{var s=a.$getRootId();o=a.hasChild(s)&&r>=0?n.lastChildTarget(t,s,a):n.firstChildTarget(t,s,a)}return o}},function(t,e,i){var n=i(9);function r(t,e,i,r,a){for(var o=e;r.exists(o);){var s=r.calculateItemLevel(r.getItem(o));if((s===i||s===i-1)&&r.getBranchIndex(o)>-1)break;o=a?r.getPrev(o):r.getNext(o)}return r.exists(o)?r.calculateItemLevel(r.getItem(o))===i?a?n.nextSiblingTarget(t,o,r):n.prevSiblingTarget(t,o,r):n.firstChildTarget(t,o,r):null}function a(t,e,i,n){return r(t,e,i,n,!0)}function o(t,e,i,n){return r(t,e,i,n,!1)}t.exports=function(t,e,i,r,s,l){var c;if(e!==s.$getRootId())i<.5?s.calculateItemLevel(s.getItem(e))===l?c=s.getPrevSibling(e)?n.nextSiblingTarget(t,s.getPrevSibling(e),s):n.prevSiblingTarget(t,e,s):(c=a(t,e,l,s))&&(c=o(t,e,l,s)):s.calculateItemLevel(s.getItem(e))===l?c=n.nextSiblingTarget(t,e,s):(c=o(t,e,l,s))&&(c=a(t,e,l,s));else{var u=s.$getRootId(),d=s.getChildren(u);c=n.createDropTargetObject(),c=d.length&&r>=0?a(t,function(t){for(var e=t.getNext();t.exists(e);){var i=t.getNext(e);if(!t.exists(i))return e;e=i}return null}(s),l,s):o(t,u,l,s)}return c}},function(t,e,i){var n=i(1),r=i(9),a=i(98),o=i(97),s=i(96);t.exports={init:function(t,e){var i=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var l=new i(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(l.config.sensitivity=e.$getConfig().dnd_sensitivity),l.attachEvent("onBeforeDragStart",t.bind(function(i,r){var a=c(r);if(!a)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),n.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var o=a.getAttribute(e.$config.item_attribute),s=e.$config.rowStore.getItem(o);return!t.isReadonly(s)&&(l.config.initial_open_state=s.$open,!!t.callEvent("onRowDragStart",[o,r.target||r.srcElement,r])&&void 0)},t)),l.attachEvent("onAfterDragStart",t.bind(function(t,i){var n=c(i);l.config.marker.innerHTML=n.outerHTML;var a=l.config.marker.firstChild;a&&(l.config.marker.style.opacity=.4,a.style.position="static",a.style.pointerEvents="none"),l.config.id=n.getAttribute(e.$config.item_attribute);var o=e.$config.rowStore,s=o.getItem(l.config.id);l.config.level=o.calculateItemLevel(s),l.config.drop_target=r.createDropTargetObject({targetParent:o.getParent(s.id),targetIndex:o.getBranchIndex(s.id),targetId:s.id,nextSibling:!0}),s.$open=!1,s.$transparent=!0,this.refreshData()},t)),l.attachEvent("onDragMove",t.bind(function(i,n){var a=u(n);return a&&!1!==t.callEvent("onBeforeRowDragMove",[l.config.id,a.targetParent,a.targetIndex])||(a=r.createDropTargetObject(l.config.drop_target)),s.highlightPosition(a,l.config,e),l.config.drop_target=a,this.callEvent("onRowDragMove",[l.config.id,a.targetParent,a.targetIndex]),!0},t)),l.attachEvent("onDragEnd",t.bind(function(){var t=e.$config.rowStore,i=t.getItem(l.config.id);s.removeLineHighlight(l.config),i.$transparent=!1,i.$open=l.config.initial_open_state;var n=l.config.drop_target;!1===this.callEvent("onBeforeRowDragEnd",[l.config.id,n.targetParent,n.targetIndex])?i.$drop_target=null:(t.move(l.config.id,n.targetIndex,n.targetParent),this.callEvent("onRowDragEnd",[l.config.id,n.targetParent,n.targetIndex])),t.refresh(i.id)},t))}function c(t){return n.locateAttribute(t,e.$config.item_attribute)}function u(t){var i=function(t){var i=n.getRelativeEventPosition(t,e.$grid_data).y,r=e.$config.rowStore;if((i=i||0)<0)return r.$getRootId();var a=Math.floor(i/e.getItemHeight());return a>r.countVisible()-1?r.$getRootId():r.getIdByIndex(a)}(t),r=null,s=e.$config.rowStore,c=!e.$getConfig().order_branch_free,u=n.getRelativeEventPosition(t,e.$grid_data).y;return i!==s.$getRootId()&&(r=(u-e.getItemTop(i))/e.getItemHeight()),c?a(l.config.id,i,r,u,s,l.config.level):o(l.config.id,i,r,u,s)}}}},function(t,e,i){var n=i(1);t.exports={init:function(t,e){var i=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var r=new i(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(r.config.sensitivity=e.$getConfig().dnd_sensitivity),r.attachEvent("onBeforeDragStart",t.bind(function(i,s){var l=a(s);if(!l)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),n.closest(s.target,".gantt_grid_editor_placeholder"))return!1;var c=l.getAttribute(e.$config.item_attribute),u=o().getItem(c);return!t.isReadonly(u)&&(r.config.initial_open_state=u.$open,!!t.callEvent("onRowDragStart",[c,s.target||s.srcElement,s])&&void 0)},t)),r.attachEvent("onAfterDragStart",t.bind(function(t,i){var n=a(i);r.config.marker.innerHTML=n.outerHTML;var s=r.config.marker.firstChild;s&&(s.style.position="static"),r.config.id=n.getAttribute(e.$config.item_attribute);var l=o(),c=l.getItem(r.config.id);r.config.index=l.getBranchIndex(r.config.id),r.config.parent=c.parent,c.$open=!1,c.$transparent=!0,this.refreshData()},t)),r.lastTaskOfLevel=function(t){for(var e=null,i=o().getItems(),n=0,r=i.length;ni.y+c-l.row_height&&(s=i.y+c-l.row_height),i.x=a,i.y=s,i},t),r._getTargetY=t.bind(function(t){var i=n.getNodePosition(e.$grid_data),r=t.pageY-i.y+(e.$state.scrollTop||0);return r<0&&(r=0),r},t),r._getTaskByY=t.bind(function(t,i){var n=e.$getConfig(),r=o();t=t||0;var a=Math.floor(t/n.row_height);return(a=ir.countVisible()-1?null:r.getIdByIndex(a)},t),r.attachEvent("onDragMove",t.bind(function(t,i){var n=r.config,a=r._getGridPos(i),s=e.$getConfig(),l=o();n.marker.style.left=a.x+10+"px",n.marker.style.top=a.y+"px";var c=l.getItem(r.config.id),u=r._getTargetY(i),d=r._getTaskByY(u,l.getIndexById(c.id));function h(t,e){return!l.isChildOf(f.id,e.id)&&(t.$level==e.$level||s.order_branch_free)}if(l.exists(d)||(d=r.lastTaskOfLevel(s.order_branch_free?c.$level:0))==r.config.id&&(d=null),l.exists(d)){var f=l.getItem(d);if(l.getIndexById(f.id)*s.row_height+s.row_height/2=0;)v=l.getIdByIndex(_-y),m=l.getItem(v),y++;if(c.id==f.id)return;h(f,c)&&c.id!=f.id?l.move(c.id,0,0,f.id):f.$level!=c.$level-1||l.getChildren(f.id).length?m&&h(m,c)&&c.id!=m.id&&l.move(c.id,-1,l.getParent(m.id)):l.move(c.id,0,f.id)}return!0},t)),r.attachEvent("onDragEnd",t.bind(function(){var t=o(),e=t.getItem(r.config.id);e.$transparent=!1,e.$open=r.config.initial_open_state,!1===this.callEvent("onBeforeRowDragEnd",[r.config.id,r.config.parent,r.config.index])?(t.move(r.config.id,r.config.index,r.config.parent),e.$drop_target=null):this.callEvent("onRowDragEnd",[r.config.id,e.$drop_target]),this.refreshData()},t))}function a(t){return n.locateAttribute(t,e.$config.item_attribute)}function o(){return t.getDatastore(e.$config.bind)}}}},function(t,e,i){var n=i(0),r=i(100),a=i(99),o=function(t){return{onCreated:function(e){e.$config=n.mixin(e.$config,{bind:"task"}),"grid"==e.$config.id&&(this.extendGantt(e),t.ext.inlineEditors=t.ext._inlineEditors.createEditors(e),t.ext.inlineEditors.init()),this._mouseDelegates=i(10)(t)},onInitialized:function(e){var i=e.$getConfig();i.order_branch&&("marker"==i.order_branch?a.init(e.$gantt,e):r.init(e.$gantt,e)),this.initEvents(e,t),"grid"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){"grid"==e.$config.id&&t.ext.inlineEditors.destructor(),this.clearEvents(e,t)},initEvents:function(t,e){this._mouseDelegates.delegate("click","gantt_row",e.bind(function(i,n,r){var a=t.$getConfig();if(null!==n){var o=this.getTask(n);a.scroll_on_click&&!e._is_icon_open_click(i)&&this.showDate(o.start_date),e.callEvent("onTaskRowClick",[n,r])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_grid_head_cell",e.bind(function(i,n,r){var a=r.getAttribute("data-column-id");if(e.callEvent("onGridHeaderClick",[a,i])){var o=t.$getConfig();if("add"!=a){if(o.sort){for(var s,l=a,c=0;c",h=""):(d=_.template?_.template(e):e[_.name],n.isDate(d)&&(d=o.date_grid(d,e)),h=d,d="
"+d+"
");var g="gantt_cell"+(f?" gantt_last_cell":""),p=[];if(_.tree){for(var v=0;v"+p.join("")+"",l.push(u)}if(g=t.getGlobalTaskIndex(e.id)%2==0?"":" odd",g+=e.$transparent?" gantt_transparent":"",g+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",o.grid_row_class){var b=o.grid_row_class.call(t,e.start_date,e.end_date,e);b&&(g+=" "+b)}s.getSelectedId()==e.id&&(g+=" gantt_selected");var k=document.createElement("div");k.className="gantt_row"+g+" gantt_row_"+t.getTaskType(e.type);var w=i.getItemHeight();return k.style.height=w+"px",k.style.lineHeight=w+"px",a.smart_rendering&&(k.style.position="absolute",k.style.left="0px",k.style.top=i.getItemTop(e.id)+"px"),i.$config.item_attribute&&k.setAttribute(i.$config.item_attribute,e.id),t._waiAria.taskRowAttr(e,k),k.innerHTML=l.join(""),k}}},function(t,e){t.exports=function(t){var e={current_pos:null,dirs:{left:"left",right:"right",up:"up",down:"down"},path:[],clear:function(){this.current_pos=null,this.path=[]},point:function(e){this.current_pos=t.copy(e)},get_lines:function(t){this.clear(),this.point(t[0]);for(var e=1;et.x?this.dirs.right:e.y>t.y?this.dirs.down:this.dirs.up}},i={path:[],clear:function(){this.path=[]},current:function(){return this.path[this.path.length-1]},point:function(e){return e?(this.path.push(t.copy(e)),e):this.current()},point_to:function(i,n,r){r=r?{x:r.x,y:r.y}:t.copy(this.point());var a=e.dirs;switch(i){case a.left:r.x-=n;break;case a.right:r.x+=n;break;case a.up:r.y-=n;break;case a.down:r.y+=n}return this.point(r)},get_points:function(i,n){var r=this.get_endpoint(i,n),a=t.config,o=r.e_y-r.y,s=r.e_x-r.x,l=e.dirs;this.clear(),this.point({x:r.x,y:r.y});var c=2*a.link_arrow_size,u=this.get_line_type(i,n.$getConfig()),d=r.e_x>r.x;if(u.from_start&&u.to_start)this.point_to(l.left,c),d?(this.point_to(l.down,o),this.point_to(l.right,s)):(this.point_to(l.right,s),this.point_to(l.down,o)),this.point_to(l.right,c);else if(!u.from_start&&u.to_start)if(d=r.e_x>r.x+2*c,this.point_to(l.right,c),d)s-=c,this.point_to(l.down,o),this.point_to(l.right,s);else{s-=2*c;var h=o>0?1:-1;this.point_to(l.down,h*(a.row_height/2)),this.point_to(l.right,s),this.point_to(l.down,h*(Math.abs(o)-a.row_height/2)),this.point_to(l.right,c)}else u.from_start||u.to_start?u.from_start&&!u.to_start&&(d=r.e_x>r.x-2*c,this.point_to(l.left,c),d?(s+=2*c,h=o>0?1:-1,this.point_to(l.down,h*(a.row_height/2)),this.point_to(l.right,s),this.point_to(l.down,h*(Math.abs(o)-a.row_height/2)),this.point_to(l.left,c)):(s+=c,this.point_to(l.down,o),this.point_to(l.right,s))):(this.point_to(l.right,c),d?(this.point_to(l.right,s),this.point_to(l.down,o)):(this.point_to(l.down,o),this.point_to(l.right,s)),this.point_to(l.left,c));return this.path},get_line_type:function(e,i){var n=i.links,r=!1,a=!1;return e.type==n.start_to_start?r=a=!0:e.type==n.finish_to_finish?r=a=!1:e.type==n.finish_to_start?(r=!1,a=!0):e.type==n.start_to_finish?(r=!0,a=!1):t.assert(!1,"Invalid link type"),i.rtl&&(r=!r,a=!a),{from_start:r,to_start:a}},get_endpoint:function(e,i){var r=i.$getConfig(),a=this.get_line_type(e,r),o=a.from_start,s=a.to_start,l=t.getTask(e.source),c=t.getTask(e.target),u=n(l,i),d=n(c,i);return{x:o?u.left:u.left+u.width,e_x:s?d.left:d.left+d.width,y:u.top,e_y:d.top}}};function n(e,i){var n=i.$getConfig(),r=i.getItemPosition(e);if(t.getTaskType(e.type)==n.types.milestone){var a=t.getTaskHeight(),o=Math.sqrt(2*a*a);r.left-=o/2,r.width=o}return r}return function(n,r){var a=r.$getConfig(),o=i.get_endpoint(n,r),s=o.e_y-o.y;if(!(o.e_x-o.x||s))return null;var l=i.get_points(n,r),c=e.get_lines(l,r),u=document.createElement("div"),d="gantt_task_link";n.color&&(d+=" gantt_link_inline_color");var h=t.templates.link_class?t.templates.link_class(n):"";h&&(d+=" "+h),a.highlight_critical_path&&t.isCriticalLink&&t.isCriticalLink(n)&&(d+=" gantt_critical_link"),u.className=d,r.$config.link_attribute&&u.setAttribute(r.$config.link_attribute,n.id);for(var f=0;f0){var d=document.createElement("div");d.style.width=c+"px",u="gantt_task_cell"+(l==o-1?" gantt_last_cell":""),(f=r.task_cell_class(e,a.trace_x[l]))&&(u+=" "+f),d.className=u,s.appendChild(d)}}var h=t.getGlobalTaskIndex(e.id)%2!=0,f=r.task_row_class(e.start_date,e.end_date,e),_="gantt_task_row"+(h?" odd":"")+(f?" "+f:"");return i.$config.rowStore.getSelectedId()==e.id&&(_+=" gantt_selected"),s.className=_,n.smart_rendering&&(s.style.position="absolute",s.style.top=i.getItemTop(e.id)+"px",s.style.width="100%"),s.style.height=n.row_height+"px",i.$config.item_attribute&&s.setAttribute(i.$config.item_attribute,e.id),s}}},function(t,e,i){t.exports=function(t){var e=i(23)(t);return function(i,n){if(t.isSplitTask(i)){for(var r=document.createElement("div"),a=t.getTaskPosition(i),o=t.getChildren(i.id),s=0;s";n.innerHTML=r},hide:function(){},set_value:function(e,i,n,r){this.get_input(r).value=o(e,n.editor,t)},get_value:function(t,e,i){return a(this.get_input(i).value||"",e.editor)},save:function(e,i,n){var r=s(t.getTask(e),this.get_value(e,i,n));(r.add.length||r.remove.length)&&t.batchUpdate(function(){r.add.forEach(function(e){t.addLink(e)}),r.remove.forEach(function(e){t.deleteLink(e)}),t.autoSchedule&&t.autoSchedule()})},is_changed:function(e,i,n,r){var s=this.get_value(i,n,r),l=a(o(e,n.editor,t),n.editor);return s.join()!==l.join()}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0),r="%Y-%m-%d",a=null,o=null;function s(){return e.apply(this,arguments)||this}return i(2)(s,e),n.mixin(s.prototype,{show:function(e,i,n,s){a||(a=t.date.date_to_str(r)),o||(o=t.date.str_to_date(r));var l="
";s.innerHTML=l},set_value:function(t,e,i,n){t&&t.getFullYear?this.get_input(n).value=a(t):this.get_input(n).value=t},is_valid:function(t,e,i,n){return!(!t||isNaN(t.getTime()))},get_value:function(t,e,i){var n;try{n=o(this.get_input(i).value||"")}catch(t){n=null}return n}},!0),s}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){for(var r="
",n.innerHTML=r},get_input:function(t){return t.querySelector("select")}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){var r="
";n.innerHTML=r},get_value:function(t,e,i){return this.get_input(i).value||""},is_valid:function(t,e,i,n){return!isNaN(parseInt(t,10))}},!0),r}},function(t,e,i){t.exports=function(t){var e=i(6)(t),n=i(0);function r(){return e.apply(this,arguments)||this}return i(2)(r,e),n.mixin(r.prototype,{show:function(t,e,i,n){var r="
";n.innerHTML=r}},!0),r}},function(t,e){t.exports={init:function(t,e){var i=t,n=e.$gantt,r=null,a=n.ext.keyboardNavigation;a.attachEvent("onBeforeFocus",function(e){var n=t.locateCell(e);if(clearTimeout(r),n){var a=n.columnName,o=n.id,s=i.getState();if(i.isVisible()&&s.id==o&&s.columnName===a)return!1}return!0}),a.attachEvent("onFocus",function(e){var n=t.locateCell(e),a=t.getState();return clearTimeout(r),!n||n.id==a.id&&n.columnName==a.columnName||i.isVisible()&&i.save(),!0}),t.attachEvent("onHide",function(){clearTimeout(r)}),a.attachEvent("onBlur",function(){return r=setTimeout(function(){i.save()}),!0}),n.attachEvent("onTaskDblClick",function(e,i){var n=t.getState(),r=t.locateCell(i.target);return!r||!t.isVisible()||r.columnName!=n.columnName}),n.attachEvent("onTaskClick",function(e,i){if(n._is_icon_open_click(i))return!0;var r=t.getState(),a=t.locateCell(i.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),n.attachEvent("onEmptyClick",function(){return i.save(),!0}),a.attachEvent("onKeyDown",function(e,r){var o=t.locateCell(r.target),s=!!o&&t.getEditorConfig(o.columnName),l=t.getState(),c=n.constants.KEY_CODES,u=r.keyCode,d=!1;switch(u){case c.ENTER:t.isVisible()?(t.save(),r.preventDefault(),d=!0):s&&!(r.ctrlKey||r.metaKey||r.shiftKey)&&(i.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.ESC:t.isVisible()&&(t.hide(),r.preventDefault(),d=!0);break;case c.UP:case c.DOWN:break;case c.LEFT:case c.RIGHT:"date"===l.editorType&&(d=!0);break;case c.SPACE:t.isVisible()&&(d=!0),s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.DELETE:s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),d=!0);break;case c.TAB:if(t.isVisible()){r.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);var h=t.getState();h.id&&a.focus({type:"taskCell",id:h.id,column:h.columnName}),r.preventDefault(),d=!0}break;default:if(t.isVisible())d=!0;else if(u>=48&&u<=57||u>95&&u<112||u>=64&&u<=91||u>185&&u<193||u>218&&u<223){var f=e.modifiers,_=f.alt||f.ctrl||f.meta||f.shift;f.alt||_&&a.getCommandHandler(e,"taskCell")||s&&!t.isVisible()&&(i.startEdit(o.id,o.columnName),d=!0)}}return!d})},onShow:function(t,e,i){},onHide:function(t,e,i){i.$gantt.focus()},destroy:function(){}}},function(t,e){t.exports={init:function(t,e){var i=e.$gantt;i.attachEvent("onTaskClick",function(e,n){if(i._is_icon_open_click(n))return!0;var r=t.getState(),a=t.locateCell(n.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),i.attachEvent("onEmptyClick",function(){return t.isVisible()&&t.isChanged()?t.save():t.hide(),!0}),i.attachEvent("onTaskDblClick",function(e,i){var n=t.getState(),r=t.locateCell(i.target);return!r||!t.isVisible()||r.columnName!=n.columnName})},onShow:function(t,e,i){if(!i.$getConfig().keyboard_navigation){var n=i.$gantt;e.onkeydown=function(e){e=e||window.event;var i=n.constants.KEY_CODES;if(!(e.defaultPrevented||e.shiftKey&&e.keyCode!=i.TAB)){var r=!0;switch(e.keyCode){case n.keys.edit_save:t.save();break;case n.keys.edit_cancel:t.hide();break;case i.TAB:e.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);break;default:r=!1}r&&e.preventDefault()}}}},onHide:function(){},destroy:function(){}}},function(t,e,i){var n=i(112),r=i(111);t.exports=function(t){var e=null;return{setMapping:function(t){e=t},getMapping:function(){return e||(t.config.keyboard_navigation_cells?r:n)}}}},function(t,e,i){var n=i(113),r=i(110),a=i(109),o=i(108),s=i(107),l=i(106),c=i(0),u=i(1),d=i(4);function h(t){t.config.editor_types={text:new(r(t)),number:new(a(t)),select:new(o(t)),date:new(s(t)),predecessor:new(l(t))}}t.exports=function(t){var e=n(t),i={};d(i);var r={init:h,createEditors:function(n){function r(t,e){var i=function(t,e){for(var i=n.getItemTop(t),r=n.getItemHeight(t),a=n.getGridColumns(),o=0,s=0,l=0;l0?t.getNext:t.getPrev,n=(i=t.bind(i,t))(this._itemId);t.isTaskExists(n)&&t.isReadonly(t.getTask(n));)n=i(n);return n},editNextRow:function(){var t=this.getNextCell(1);t&&this.startEdit(t,this._columnName)},editPrevRow:function(){var t=this.getNextCell(-1);t&&this.startEdit(t,this._columnName)},destructor:function(){a.forEach(function(t){o.detachEvent(t)}),o=null,this.hide(),this.detachAllEvents()}};return c.mixin(s,e),c.mixin(s,i),s}};return c.mixin(r,e),c.mixin(r,i),r}},function(t,e){t.exports=function(t,e){return{init:function(){},doOnRender:function(){}}}},function(t,e){t.exports={create:function(){return{render:function(){},destroy:function(){}}}}},function(t,e,i){var n=i(2),r=i(1),a=i(0),o=i(13),s=function(t){"use strict";function e(e,i,n,r){var o=t.apply(this,arguments)||this;this.$config=a.mixin(i,{scroll:"x"}),o._scrollHorizontalHandler=a.bind(o._scrollHorizontalHandler,o),o._scrollVerticalHandler=a.bind(o._scrollVerticalHandler,o),o._outerScrollVerticalHandler=a.bind(o._outerScrollVerticalHandler,o),o._outerScrollHorizontalHandler=a.bind(o._outerScrollHorizontalHandler,o),o._mouseWheelHandler=a.bind(o._mouseWheelHandler,o),this.$config.hidden=!0;var s=r.config.scroll_size;return r.env.isIE&&(s+=1),this._isHorizontal()?(o.$config.height=s,o.$parent.$config.height=s):(o.$config.width=s,o.$parent.$config.width=s),this.$config.scrollPosition=0,o.$name="scroller",o}return n(e,t),e.prototype.init=function(t){t.innerHTML=this.$toHTML(),this.$view=t.firstChild,this.$view||this.init(),this._isVertical()?this._initVertical():this._initHorizontal(),this._initMouseWheel(),this._initLinkedViews()},e.prototype.$toHTML=function(){return"
"},e.prototype._getRootParent=function(){for(var t=this.$parent;t&&t.$parent;)t=t.$parent;if(t)return t},e.prototype._eachView=function(){var t=[];return function t(e,i){if(i.push(e),e.$cells)for(var n=0;nd[s]&&d[o]>e&&u>d[s]-l+2&&(e=u+(n?0:2),i=d[s]);else{var h=Math.max(d[o]-u,0);(u+=h)>Math.max(d[s]-h,0)&&u>e&&(e=u,i=d[s])}}return{outerScroll:i,innerScroll:e}},e.prototype.scroll=function(t){this._isHorizontal()?this.scrollHorizontally(t):this.scrollVertically(t)},e.prototype.getScrollState=function(){return{visible:this.isVisible(),direction:this.$config.scroll,size:this.$config.outerSize,scrollSize:this.$config.scrollSize||0,position:this.$config.scrollPosition||0}},e.prototype.setSize=function(e,i){t.prototype.setSize.apply(this,arguments);var n=this._getScrollSize(),r=(this._isVertical()?i:e)-this._getScrollOffset()+(this._isHorizontal()?1:0);n.innerScroll&&r>n.outerScroll&&(n.innerScroll+=r-n.outerScroll),this.$config.scrollSize=n.innerScroll,this.$config.width=e,this.$config.height=i,this._setScrollSize(n.innerScroll)},e.prototype.isVisible=function(){return!(!this.$parent||!this.$parent.$view.parentNode)},e.prototype.shouldShow=function(){var t=this._getScrollSize();return!(!t.innerScroll&&this.$parent&&this.$parent.$view.parentNode)&&!(!t.innerScroll||this.$parent&&this.$parent.$view.parentNode)},e.prototype.shouldHide=function(){return!(this._getScrollSize().innerScroll||!this.$parent||!this.$parent.$view.parentNode)},e.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},e.prototype._getScaleOffset=function(t){var e=0;return!t||"timeline"!=t.$config.view&&"grid"!=t.$config.view||(e=t.$content.$getConfig().scale_height),e},e.prototype._getScrollOffset=function(){var t=0;if(this._isVertical()){var e=this.$parent.$parent;t=Math.max(this._getScaleOffset(e.getPrevSibling(this.$parent.$id)),this._getScaleOffset(e.getNextSibling(this.$parent.$id)))}else for(var i=this._getLinkedViews(),n=0;nMath.abs(a)){if(this._isVertical())return;if(i.x)return!0;if(!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var s=r/-40,l=this._oldLeft,c=l+30*s;if(this.scrollHorizontally(c),this.$scroll_hor.scrollLeft=c,l==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(i.y)return!0;if(!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;s=a/-40;void 0===a&&(s=t.detail);var u=this._oldTop,d=this.$scroll_ver.scrollTop+30*s;if(this.scrollVertically(d),this.$scroll_ver.scrollTop=d,u==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}},e}(i(7));t.exports=s},function(t,e){t.exports=null},function(t,e,i){var n=i(2),r=i(0),a=function(t){"use strict";function e(e,i,n){var a=t.apply(this,arguments)||this;if(i.view){i.id&&(this.$id=r.uid());var o=r.copy(i);if(delete o.config,delete o.templates,this.$content=this.$factory.createView(i.view,this,o,this),!this.$content)return!1}return a.$name="viewCell",a}return n(e,t),e.prototype.destructor=function(){this.clear(),t.prototype.destructor.call(this)},e.prototype.clear=function(){if(this.$initialized=!1,this.$content){var e=this.$content.unload||this.$content.destructor;e&&e.call(this.$content)}t.prototype.clear.call(this)},e.prototype.scrollTo=function(e,i){this.$content&&this.$content.scrollTo?this.$content.scrollTo(e,i):t.prototype.scrollTo.call(this,e,i)},e.prototype._setContentSize=function(t,e){var i=this._getBorderSizes(),n=t+i.horizontal,r=e+i.vertical;this.$config.width=n,this.$config.height=r},e.prototype.setSize=function(e,i){if(t.prototype.setSize.call(this,e,i),!this.$preResize&&this.$content&&!this.$initialized){this.$initialized=!0;var n=this.$view.childNodes[0],r=this.$view.childNodes[1];r||(r=n),this.$content.init(r)}},e.prototype.setContentSize=function(){!this.$preResize&&this.$content&&this.$initialized&&this.$content.setSize(this.$lastSize.contentX,this.$lastSize.contentY)},e.prototype.getContentSize=function(){var e=t.prototype.getContentSize.call(this);if(this.$content&&this.$initialized){var i=this.$content.getSize();e.width=void 0===i.contentX?i.width:i.contentX,e.height=void 0===i.contentY?i.height:i.contentY}var n=this._getBorderSizes();return e.width+=n.horizontal,e.height+=n.vertical,e},e}(i(7));t.exports=a},function(t,e,i){var n=i(2),r=i(27),a=i(7),o=function(t){"use strict";function e(e,i,n){for(var r=t.apply(this,arguments)||this,a=0;a-1&&o.click?o.click():(a(i,!0),n=!0)}27==e&&(a(i,!1),n=!0)}return n?(t.preventDefault&&t.preventDefault(),!(t.cancelBubble=!0)):void 0}}function s(t){s.cover||(s.cover=document.createElement("div"),s.cover.onkeydown=o,s.cover.className="dhx_modal_cover",document.body.appendChild(s.cover)),s.cover.style.display=t?"inline-block":"none"}function l(e,i,n){var r=t._waiAria.messageButtonAttrString(e),a=i.toLowerCase().replace(/ /g,"_");return"
"+e+"
"}function c(){for(var t=[].slice.apply(arguments,[0]),e=0;e'+r.title+""),h+='
'+(r.content?"":r.text)+'
',o&&(h+=l(c(r.ok,t.locale.labels.message_ok,"OK"),"ok",!0)),s&&(h+=l(c(r.cancel,t.locale.labels.message_cancel,"Cancel"),"cancel",!1)),r.buttons)for(var f=0;f",i.className="gantt-info dhtmlx-info gantt-"+e.type+" dhtmlx-"+e.type,i.onclick=function(){p.hide(e.id),e=null},t._waiAria.messageInfoAttr(i),"bottom"==p.position&&p.area.firstChild?p.area.insertBefore(i,p.area.firstChild):p.area.appendChild(i),e.expire>0&&(p.timers[e.id]=window.setTimeout(function(){p.hide(e.id)},e.expire)),p.pull[e.id]=i,i=null,e.id}(e)}};p.seed=(new Date).valueOf(),p.uid=n.uid,p.expire=4e3,p.keyboard=!0,p.position="top",p.pull={},p.timers={},p.hideAll=function(){for(var t in p.pull)p.hide(t)},p.hide=function(t){var e=p.pull[t];e&&e.parentNode&&(window.setTimeout(function(){e.parentNode.removeChild(e),e=null},2e3),e.className+=" hidden",p.timers[t]&&window.clearTimeout(p.timers[t]),delete p.pull[t])};var v=[];return t.attachEvent("onMessagePopup",function(t){v.push(t)}),t.attachEvent("onAfterMessagePopup",function(t){for(var e=0;e=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},i(129),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,i(12))},function(t,e,i){(function(e,i,n){t.exports=function(){var t,r,a;return function t(e,i,n){function r(o,s){if(!i[o]){if(!e[o]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=i[o]={exports:{}};e[o][0].call(u.exports,function(t){var i=e[o][1][t];return r(i||t)},u,u.exports,t,e,i,n)}return i[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o0;)f(t)}function f(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var i=t.shift(),n=t.shift();e.call(i,n)}}l.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(t,i){i?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},l.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(t,e,i){this._trampolineEnabled?c.call(this,t,e,i):this._schedule(function(){setTimeout(function(){t.call(e,i)},100)})},l.prototype.invoke=function(t,e,i){this._trampolineEnabled?u.call(this,t,e,i):this._schedule(function(){t.call(e,i)})},l.prototype.settlePromises=function(t){this._trampolineEnabled?d.call(this,t):this._schedule(function(){t._settlePromises()})}):(l.prototype.invokeLater=c,l.prototype.invoke=u,l.prototype.settlePromises=d),l.prototype._drainQueues=function(){h(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,h(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},i.exports=l,i.exports.firstLineError=r},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,i){"use strict";e.exports=function(t,e,i,n){var r=!1,a=function(t,e){this._reject(e)},o=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(a,a,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},l=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(a){r||(r=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=i(a),u=new t(e);u._propagateFrom(this,1);var d=this._target();if(u._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:d,bindingPromise:c};d._then(e,o,void 0,u,h),c._then(s,l,void 0,u,h),u._setOnCancel(c)}else u._resolveCallback(d);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,i){return t.resolve(i).bind(e)}}},{}],4:[function(t,e,i){"use strict";var n;"undefined"!=typeof Promise&&(n=Promise);var r=t("./promise")();r.noConflict=function(){try{Promise===r&&(Promise=n)}catch(t){}return r},e.exports=r},{"./promise":22}],5:[function(t,e,i){"use strict";var n=Object.create;if(n){var r=n(null),a=n(null);r[" size"]=a[" size"]=0}e.exports=function(e){var i=t("./util"),n=i.canEvaluate;function r(t){var n=this.pop(),r=function(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var a="Object "+i.classString(t)+" has no method '"+i.toString(n)+"'";throw new e.TypeError(a)}return r}(t,n);return r.apply(t,this)}function a(t){return t[this]}function o(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}i.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,i="number"==typeof t;if(i)e=o;else if(n){var r=(void 0)(t);e=null!==r?r:a}else e=a;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,i){"use strict";e.exports=function(e,i,n,r){var a=t("./util"),o=a.tryCatch,s=a.errorObj,l=e._async;e.prototype.break=e.prototype.cancel=function(){if(!r.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var i=t._cancellationParent;if(null==i||!i._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=i}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(a.isArray(t))for(var i=0;i=0)return i[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,i.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=i.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var i=t.prototype._pushContext,a=t.prototype._popContext,o=t._peekContext,s=t.prototype._peekContext,l=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=i,t.prototype._popContext=a,t._peekContext=o,t.prototype._peekContext=s,t.prototype._promiseCreated=l,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,i,n){"use strict";i.exports=function(i,n){var r,a,o,s=i._getDomain,l=i._async,c=t("./errors").Warning,u=t("./util"),d=t("./es5"),h=u.canAttachTrace,f=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,_=/\((?:timers\.js):\d+:\d+\)/,g=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,p=null,v=null,m=!1,y=!(0==u.env("BLUEBIRD_DEBUG")),b=!(0==u.env("BLUEBIRD_WARNINGS")||!y&&!u.env("BLUEBIRD_WARNINGS")),k=!(0==u.env("BLUEBIRD_LONG_STACK_TRACES")||!y&&!u.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=u.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!u.env("BLUEBIRD_W_FORGOTTEN_RETURN"));i.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},i.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},i.prototype._notifyUnhandledRejectionIsHandled=function(){W("rejectionHandled",r,void 0,this)},i.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},i.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},i.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),W("unhandledRejection",a,t,this)}},i.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},i.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},i.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},i.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},i.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},i.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},i.prototype._warn=function(t,e,i){return F(t,e,i||this)},i.onPossiblyUnhandledRejection=function(t){var e=s();a="function"==typeof t?null===e?t:u.domainBind(e,t):void 0},i.onUnhandledRejectionHandled=function(t){var e=s();r="function"==typeof t?null===e?t:u.domainBind(e,t):void 0};var x=function(){};i.longStackTraces=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&Y()){var t=i.prototype._captureStackTrace,e=i.prototype._attachExtraTrace,r=i.prototype._dereferenceTrace;Z.longStackTraces=!0,x=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");i.prototype._captureStackTrace=t,i.prototype._attachExtraTrace=e,i.prototype._dereferenceTrace=r,n.deactivateLongStackTraces(),l.enableTrampoline(),Z.longStackTraces=!1},i.prototype._captureStackTrace=R,i.prototype._attachExtraTrace=H,i.prototype._dereferenceTrace=z,n.activateLongStackTraces(),l.disableTrampolineIfNecessary()}},i.hasLongStackTraces=function(){return Z.longStackTraces&&Y()};var $=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return u.global.dispatchEvent(t),function(t,e){var i={detail:e,cancelable:!0};d.defineProperty(i,"promise",{value:e.promise}),d.defineProperty(i,"reason",{value:e.reason});var n=new CustomEvent(t.toLowerCase(),i);return!u.global.dispatchEvent(n)}}if("function"==typeof Event){var t=new Event("CustomEvent");return u.global.dispatchEvent(t),function(t,e){var i=new Event(t.toLowerCase(),{cancelable:!0});return i.detail=e,d.defineProperty(i,"promise",{value:e.promise}),d.defineProperty(i,"reason",{value:e.reason}),!u.global.dispatchEvent(i)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),u.global.dispatchEvent(t),function(t,e){var i=document.createEvent("CustomEvent");return i.initCustomEvent(t.toLowerCase(),!1,!0,e),!u.global.dispatchEvent(i)}}catch(t){}return function(){return!1}}(),T=u.isNode?function(){return e.emit.apply(e,arguments)}:u.global?function(t){var e="on"+t.toLowerCase(),i=u.global[e];return!!i&&(i.apply(u.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function S(t,e){return{promise:e}}var C={promiseCreated:S,promiseFulfilled:S,promiseRejected:S,promiseResolved:S,promiseCancelled:S,promiseChained:function(t,e,i){return{promise:e,child:i}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,i){return{reason:e,promise:i}},rejectionHandled:S},E=function(t){var e=!1;try{e=T.apply(null,arguments)}catch(t){l.throwLater(t),e=!0}var i=!1;try{i=$(t,C[t].apply(null,arguments))}catch(t){l.throwLater(t),i=!0}return i||e};function D(){return!1}function I(t,e,i){var n=this;try{t(e,i,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+u.toString(t));n._attachCancellationCallback(t)})}catch(t){return t}}function A(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?u.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function P(){return this._onCancelField}function O(t){this._onCancelField=t}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var i=t._branchesRemainingToCancel;void 0===i&&(i=0),t._branchesRemainingToCancel=i+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}i.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?i.longStackTraces():!t.longStackTraces&&i.hasLongStackTraces()&&x()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,w=Z.warnings,u.isObject(e)&&"wForgottenReturn"in e&&(w=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");i.prototype._clearCancellationData=M,i.prototype._propagateFrom=L,i.prototype._onCancel=P,i.prototype._setOnCancel=O,i.prototype._attachCancellationCallback=A,i.prototype._execute=I,N=L,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,i.prototype._fireEvent=E):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,i.prototype._fireEvent=D)),i},i.prototype._fireEvent=D,i.prototype._execute=function(t,e,i){try{t(e,i)}catch(t){return t}},i.prototype._onCancel=function(){},i.prototype._setOnCancel=function(t){},i.prototype._attachCancellationCallback=function(t){},i.prototype._captureStackTrace=function(){},i.prototype._attachExtraTrace=function(){},i.prototype._dereferenceTrace=function(){},i.prototype._clearCancellationData=function(){},i.prototype._propagateFrom=function(t,e){};var N=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function j(){var t=this._boundTo;return void 0!==t&&t instanceof i?t.isFulfilled()?t.value():void 0:t}function R(){this._trace=new K(this._peekContext())}function H(t,e){if(h(t)){var i=this._trace;if(void 0!==i&&e&&(i=i._parent),void 0!==i)i.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=V(t);u.notEnumerableProp(t,"stack",n.message+"\n"+n.stack.join("\n")),u.notEnumerableProp(t,"__stackCleaned__",!0)}}}function z(){this._trace=void 0}function F(t,e,n){if(Z.warnings){var r,a=new c(t);if(e)n._attachExtraTrace(a);else if(Z.longStackTraces&&(r=i._peekContext()))r.attachExtraTrace(a);else{var o=V(a);a.stack=o.message+"\n"+o.stack.join("\n")}E("warning",a)||U(a,"",!0)}}function B(t){for(var e=[],i=0;i0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),i=0;i0&&"SyntaxError"!=t.name&&(e=e.slice(i)),e}(t):[" (No stack trace)"],{message:i,stack:"SyntaxError"==t.name?e:B(e)}}function U(t,e,i){if("undefined"!=typeof console){var n;if(u.isObject(t)){var r=t.stack;n=e+v(r,t)}else n=e+String(t);"function"==typeof o?o(n,i):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function W(t,e,i,n){var r=!1;try{"function"==typeof e&&(r=!0,"rejectionHandled"===t?e(n):e(i,n))}catch(t){l.throwLater(t)}"unhandledRejection"===t?E(t,i,n)||r||U(i,"Unhandled rejection "):E(t,n)}function G(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():u.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var i=JSON.stringify(t);e=i}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof Q}var q=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function J(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function K(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Q(this,K),e>32&&this.uncycle()}u.inherits(K,Error),n.CapturedTrace=K,K.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],i={},n=0,r=this;void 0!==r;++n)e.push(r),r=r._parent;for(var n=(t=this._length=n)-1;n>=0;--n){var a=e[n].stack;void 0===i[a]&&(i[a]=n)}for(var n=0;n0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var l=n>0?e[n-1]:this;s=0;--u)e[u]._length=c,c++;return}}}},K.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=V(t),i=e.message,n=[e.stack],r=this;void 0!==r;)n.push(B(r.stack.split("\n"))),r=r._parent;!function(t){for(var e=t[0],i=1;i=0;--s)if(n[s]===a){o=s;break}for(var s=o;s>=0;--s){var l=n[s];if(e[r]!==l)break;e.pop(),r--}e=n}}(n),function(t){for(var e=0;e=0)return p=/@/,v=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n="stack"in t}return"stack"in r||!n||"number"!=typeof Error.stackTraceLimit?(v=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?G(e):e.toString()},null):(p=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(o=function(t){console.warn(t)},u.isNode&&e.stderr.isTTY?o=function(t,e){var i=e?"":"";console.warn(i+t+"\n")}:u.isNode||"string"!=typeof(new Error).stack||(o=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return k&&i.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return N},boundValueFunction:function(){return j},checkForgottenReturns:function(t,e,i,n,r){if(void 0===t&&null!==e&&w){if(void 0!==r&&r._returnedNonUndefined())return;if(0==(65535&n._bitField))return;i&&(i+=" ");var a="",o="";if(e._trace){for(var s=e._trace.stack.split("\n"),l=B(s),c=l.length-1;c>=0;--c){var u=l[c];if(!_.test(u)){var d=u.match(g);d&&(a="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(l.length>0)for(var h=l[0],c=0;c0&&(o="\n"+s[c-1]);break}}var f="a promise was created in a "+i+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;n._warn(f,!0,e)}},setBounds:function(t,e){if(Y()){for(var i,n,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l=s||(q=function(t){if(f.test(t))return!0;var e=J(t);return!!(e&&e.fileName===i&&o<=e.line&&e.line<=s)})}},warn:F,deprecated:function(t,e){var i=t+" is deprecated and will be removed in a future version.";return e&&(i+=" Use "+e+" instead."),F(i)},CapturedTrace:K,fireDomEvent:$,fireGlobalEvent:T}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,i){"use strict";e.exports=function(t){function e(){return this.value}function i(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(i){return i instanceof t&&i.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:i},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(i,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,i,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(i){if(arguments.length<=1)return i instanceof t&&i.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:i},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(i,function(){return n})}}},{}],11:[function(t,e,i){"use strict";e.exports=function(t,e){var i=t.reduce,n=t.all;function r(){return n(this)}t.prototype.each=function(t){return i(this,t,e,0)._then(r,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,n){return i(t,n,e,0)._then(r,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return i(t,n,e,e)}}},{}],12:[function(t,e,i){"use strict";var n,r,a=t("./es5"),o=a.freeze,s=t("./util"),l=s.inherits,c=s.notEnumerableProp;function u(t,e){function i(n){if(!(this instanceof i))return new i(n);c(this,"message","string"==typeof n?n:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(i,Error),i}var d=u("Warning","warning"),h=u("CancellationError","cancellation error"),f=u("TimeoutError","timeout error"),_=u("AggregateError","aggregate error");try{n=TypeError,r=RangeError}catch(t){n=u("TypeError","type error"),r=u("RangeError","range error")}for(var g="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),p=0;p1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function d(){return f.call(this,this.promise._target()._settledValue())}function h(t){if(!u(this,t))return o.e=t,o}function f(t){var r=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(r._boundValue()):s.call(r._boundValue(),t);if(l===n)return l;if(void 0!==l){r._setReturnedNonUndefined();var f=i(l,r);if(f instanceof e){if(null!=this.cancelPromise){if(f._isCancelled()){var _=new a("late cancellation observer");return r._attachExtraTrace(_),o.e=_,o}f.isPending()&&f._attachCancellationCallback(new c(this))}return f._then(d,h,void 0,this,void 0)}}}return r.isRejected()?(u(this),o.e=t,o):(u(this),t)}return l.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){u(this.finallyHandler)},e.prototype._passThrough=function(t,e,i,n){return"function"!=typeof t?this.then():this._then(i,n,void 0,new l(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,f,f)},e.prototype.tap=function(t){return this._passThrough(t,1,f)},e.prototype.tapCatch=function(t){var i=arguments.length;if(1===i)return this._passThrough(t,1,void 0,f);var n,a=new Array(i-1),o=0;for(n=0;n0&&"function"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var r=new i(n).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a,o){var s=e._getDomain,l=t("./util"),c=l.tryCatch,u=l.errorObj,d=e._async;function h(t,e,i,n){this.constructor$(t),this._promise._captureStackTrace();var r=s();this._callback=null===r?e:l.domainBind(r,e),this._preservedValues=n===a?new Array(this.length()):null,this._limit=i,this._inFlight=0,this._queue=[],d.invoke(this._asyncInit,this,void 0)}function f(t,i,r,a){if("function"!=typeof i)return n("expecting a function but got "+l.classString(i));var o=0;if(void 0!==r){if("object"!=typeof r||null===r)return e.reject(new TypeError("options argument must be an object but it is "+l.classString(r)));if("number"!=typeof r.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(r.concurrency)));o=r.concurrency}return o="number"==typeof o&&isFinite(o)&&o>=1?o:0,new h(t,i,o,a).promise()}l.inherits(h,i),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,i){var n=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(i<0){if(n[i=-1*i-1]=t,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return n[i]=t,this._queue.push(i),!1;null!==s&&(s[i]=t);var d=this._promise,h=this._callback,f=d._boundValue();d._pushContext();var _=c(h).call(f,t,i,a),g=d._popContext();if(o.checkForgottenReturns(_,g,null!==s?"Promise.filter":"Promise.map",d),_===u)return this._reject(_.e),!0;var p=r(_,this._promise);if(p instanceof e){var v=(p=p._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,n[i]=p,p._proxy(this,-1*(i+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(p._reason()),!0):(this._cancel(),!0);_=p._value()}n[i]=_}var m=++this._totalResolved;return m>=a&&(null!==s?this._filter(n,s):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,i=this._values;t.length>0&&this._inFlight1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],u=arguments[2];n=o.isArray(c)?s(t).apply(u,c):s(t).call(u,c)}else n=s(t)();var d=l._popContext();return a.checkForgottenReturns(n,d,"Promise.try",l),l._resolveFromSyncValue(n),l},e.prototype._resolveFromSyncValue=function(t){t===o.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,i){"use strict";var n=t("./util"),r=n.maybeWrapAsError,a=t("./errors"),o=a.OperationalError,s=t("./es5"),l=/^(?:name|message|stack|cause)$/;function c(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var i=s.keys(t),r=0;r1){var i,n=new Array(e-1),r=0;for(i=0;i0&&"function"!=typeof t&&"function"!=typeof e){var i=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(i+=", "+c.classString(e)),this._warn(i)}return this._then(t,e,void 0,void 0,void 0)},D.prototype.done=function(t,e){var i=this._then(t,e,void 0,void 0,void 0);i._setIsFinal()},D.prototype.spread=function(t){return"function"!=typeof t?a("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,v,void 0)},D.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},D.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},D.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},D.getNewLibraryCopy=i.exports,D.is=function(t){return t instanceof D},D.fromNode=D.fromCallback=function(t){var e=new D(p);e._captureStackTrace();var i=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=E(t)(S(e,i));return n===C&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},D.all=function(t){return new b(t).promise()},D.cast=function(t){var e=y(t);return e instanceof D||((e=new D(p))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},D.resolve=D.fulfilled=D.cast,D.reject=D.rejected=function(t){var e=new D(p);return e._captureStackTrace(),e._rejectCallback(t,!0),e},D.setScheduler=function(t){if("function"!=typeof t)throw new _("expecting a function but got "+c.classString(t));return h.setScheduler(t)},D.prototype._then=function(t,e,i,n,r){var a=void 0!==r,o=a?r:new D(p),l=this._target(),u=l._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var d=s();if(0!=(50397184&u)){var f,_,v=l._settlePromiseCtx;0!=(33554432&u)?(_=l._rejectionHandler0,f=t):0!=(16777216&u)?(_=l._fulfillmentHandler0,f=e,l._unsetRejectionIsUnhandled()):(v=l._settlePromiseLateCancellationObserver,_=new g("late cancellation observer"),l._attachExtraTrace(_),f=e),h.invoke(v,l,{handler:null===d?f:"function"==typeof f&&c.domainBind(d,f),promise:o,receiver:n,value:_})}else l._addCallbacks(t,e,o,n,d);return o},D.prototype._length=function(){return 65535&this._bitField},D.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},D.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},D.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},D.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},D.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},D.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},D.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},D.prototype._isFinal=function(){return(4194304&this._bitField)>0},D.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},D.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},D.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},D.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},D.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==l)return void 0===e&&this._isBound()?this._boundValue():e},D.prototype._promiseAt=function(t){return this[4*t-4+2]},D.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},D.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},D.prototype._boundValue=function(){},D.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,i=t._rejectionHandler0,n=t._promise0,r=t._receiverAt(0);void 0===r&&(r=l),this._addCallbacks(e,i,n,r,null)},D.prototype._migrateCallbackAt=function(t,e){var i=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),r=t._promiseAt(e),a=t._receiverAt(e);void 0===a&&(a=l),this._addCallbacks(i,n,r,a,null)},D.prototype._addCallbacks=function(t,e,i,n,r){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=i,this._receiver0=n,"function"==typeof t&&(this._fulfillmentHandler0=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this._rejectionHandler0=null===r?e:c.domainBind(r,e));else{var o=4*a-4;this[o+2]=i,this[o+3]=n,"function"==typeof t&&(this[o+0]=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this[o+1]=null===r?e:c.domainBind(r,e))}return this._setLength(a+1),a},D.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},D.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var i=y(t,this);if(!(i instanceof D))return this._fulfill(t);e&&this._propagateFrom(i,2);var r=i._target();if(r!==this){var a=r._bitField;if(0==(50397184&a)){var o=this._length();o>0&&r._migrateCallback0(this);for(var s=1;s>>16)){if(t===this){var i=n();return this._attachExtraTrace(i),this._reject(i)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this),this._dereferenceTrace())}},D.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},D.prototype._fulfillPromises=function(t,e){for(var i=1;i0){if(0!=(16842752&t)){var i=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,i,t),this._rejectPromises(e,i)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},D.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},D.defer=D.pending=function(){x.deprecated("Promise.defer","new Promise");var t=new D(p);return{promise:t,resolve:I,reject:A}},c.notEnumerableProp(D,"_makeSelfResolutionError",n),t("./method")(D,p,y,a,x),t("./bind")(D,p,y,x),t("./cancel")(D,b,a,x),t("./direct_resolve")(D),t("./synchronous_inspection")(D),t("./join")(D,b,y,p,h,s),D.Promise=D,D.version="3.5.4",t("./map.js")(D,b,a,y,p,x),t("./call_get.js")(D),t("./using.js")(D,a,y,w,p,x),t("./timers.js")(D,p,x),t("./generators.js")(D,a,p,y,o,x),t("./nodeify.js")(D),t("./promisify.js")(D,p),t("./props.js")(D,b,y,a),t("./race.js")(D,p,y,a),t("./reduce.js")(D,b,a,y,p,x),t("./settle.js")(D,b,x),t("./some.js")(D,b,a),t("./filter.js")(D,p),t("./each.js")(D,p),t("./any.js")(D),c.toFastProperties(D),c.toFastProperties(D.prototype),P({a:1}),P({b:2}),P({c:3}),P(1),P(function(){}),P(void 0),P(!1),P(new D(p)),x.setBounds(d.firstLineError,c.lastLineError),D}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a){var o=t("./util");function s(t){var n=this._promise=new e(i);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.isArray,o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(i,a){var s=n(this._values,this._promise);if(s instanceof e){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,a);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=r("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(t){var i=this.getActualLength(t.length);this._length=i,this._values=this.shouldCopyValues()?new Array(i):this._values;for(var r=this._promise,a=!1,o=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var i=0;i=this._length){var n;if(this._isMap)n=function(t){for(var e=new a,i=t.length/2|0,n=0;n>1},e.prototype.props=function(){return d(this)},e.props=function(t){return d(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,i){"use strict";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var i=new r;return i._bitField=33554432,i._settledValueField=t,this._promiseResolved(e,i)},o.prototype._promiseRejected=function(t,e){var i=new r;return i._bitField=16777216,i._settledValueField=t,this._promiseResolved(e,i)},e.settle=function(t){return n.deprecated(".settle()",".reflect()"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,i){"use strict";e.exports=function(e,i,n){var r=t("./util"),a=t("./errors").RangeError,o=t("./errors").AggregateError,s=r.isArray,l={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function u(t,e){if((0|e)!==e||e<0)return n("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var i=new c(t),r=i.promise();return i.setHowMany(e),i.init(),r}r.inherits(c,i),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new o,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return u(t,e)},e.prototype.some=function(t){return u(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,i){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var i=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return o.call(this._target())},t.prototype.isRejected=function(){return a.call(this._target())},t.prototype.isFulfilled=function(){return r.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return i.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,i){"use strict";e.exports=function(e,i){var n=t("./util"),r=n.errorObj,a=n.isObject,o={}.hasOwnProperty;return function(t,s){if(a(t)){if(t instanceof e)return t;var l=function(t){try{return function(t){return t.then}(t)}catch(t){return r.e=t,r}}(t);if(l===r){s&&s._pushContext();var c=e.reject(l.e);return s&&s._popContext(),c}if("function"==typeof l){if(function(t){try{return o.call(t,"_promise0")}catch(t){return!1}}(t)){var c=new e(i);return t._then(c._fulfill,c._reject,void 0,c,null),c}return function(t,a,o){var s=new e(i),l=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,u=n.tryCatch(a).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,c,!0),s=null)});return c=!1,s&&u===r&&(s._rejectCallback(u.e,!0,!0),s=null),l}(t,l,s)}}return t}}},{"./util":36}],34:[function(t,e,i){"use strict";e.exports=function(e,i,n){var r=t("./util"),a=e.TimeoutError;function o(t){this.handle=t}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,r){var a,l;return void 0!==r?(a=e.resolve(r)._then(s,null,null,t,void 0),n.cancellation()&&r instanceof e&&a._setOnCancel(r)):(a=new e(i),l=setTimeout(function(){a._fulfill()},+t),n.cancellation()&&a._setOnCancel(new o(l)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};function c(t){return clearTimeout(this.handle),t}function u(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return l(t,this)},e.prototype.timeout=function(t,e){var i,s;t=+t;var l=new o(setTimeout(function(){i.isPending()&&function(t,e,i){var n;n="string"!=typeof e?e instanceof Error?e:new a("operation timed out"):new a(e),r.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=i&&i.cancel()}(i,e,s)},t));return n.cancellation()?(s=this.then(),(i=s._then(c,u,void 0,l,void 0))._setOnCancel(l)):i=this._then(c,u,void 0,l,void 0),i}}},{"./util":36}],35:[function(t,e,i){"use strict";e.exports=function(e,i,n,r,a,o){var s=t("./util"),l=t("./errors").TypeError,c=t("./util").inherits,u=s.errorObj,d=s.tryCatch,h={};function f(t){setTimeout(function(){throw t},0)}function _(t,i){var r=0,o=t.length,s=new e(a);return function a(){if(r>=o)return s._fulfill();var l=function(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[r++]);if(l instanceof e&&l._isDisposable()){try{l=n(l._getDisposer().tryDispose(i),t.promise)}catch(t){return f(t)}if(l instanceof e)return l._then(a,f,null,null,null)}a()}(),s}function g(t,e,i){this._data=t,this._promise=e,this._context=i}function p(t,e,i){this.constructor$(t,e,i)}function v(t){return g.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}g.prototype.data=function(){return this._data},g.prototype.promise=function(){return this._promise},g.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},g.prototype.tryDispose=function(t){var e=this.resource(),i=this._context;void 0!==i&&i._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==i&&i._popContext(),this._promise._unsetDisposable(),this._data=null,n},g.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(p,g),p.prototype.doDispose=function(t,e){var i=this.data();return i.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,i=0;i0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,r());throw new l}}},{"./errors":12,"./util":36}],36:[function(t,n,r){"use strict";var a=t("./es5"),o="undefined"==typeof navigator,s={e:{}},l,c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==i?i:void 0!==this?this:null;function u(){try{var t=l;return l=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function d(t){return l=t,u}var h=function(t,e){var i={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)i.call(e.prototype,n)&&"$"!==n.charAt(n.length-1)&&(this[n+"$"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype};function f(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function _(t){return"function"==typeof t||"object"==typeof t&&null!==t}function g(t){return f(t)?new Error(C(t)):t}function p(t,e){var i,n=t.length,r=new Array(n+1);for(i=0;i1,n=e.length>0&&!(1===e.length&&"constructor"===e[0]),r=k.test(t+"")&&a.names(t).length>0;if(i||n||r)return!0}return!1}catch(t){return!1}}function x(t){function e(){}e.prototype=t;var i=new e;function n(){return typeof i.foo}return n(),n(),t}var $=/^[a-z$_][a-z$_0-9]*$/i;function T(t){return $.test(t)}function S(t,e,i){for(var n=new Array(t),r=0;r10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(t){B.lastLineError=t}n.exports=B},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,i(28),i(12),i(130).setImmediate)},function(t,e,i){t.exports=i(131)},function(t,e,i){var n=i(0);t.exports=function(){var t={};return{getState:function(e){if(e)return t[e].method();var i={};for(var r in t)t[r].internal||n.mixin(i,t[r].method(),!0);return i},registerProvider:function(e,i,n){t[e]={method:i,internal:n}},unregisterProvider:function(e){delete t[e]}}}},function(t,e){t.exports=function(t){var e={};function i(i,n,r){r=r||i;var a=t.config,o=t.templates;t.config[i]&&e[r]!=a[i]&&(n&&o[r]||(o[r]=t.date.date_to_str(a[i]),e[r]=a[i]))}return{initTemplates:function(){var e=t.locale.labels;e.gantt_save_btn=e.icon_save,e.gantt_cancel_btn=e.icon_cancel,e.gantt_delete_btn=e.icon_delete;var n=t.date,r=n.date_to_str,a=t.config;i("date_scale",!0,void 0,t.config,t.templates),i("date_grid",!0,"grid_date_format",t.config,t.templates),i("task_date",!0,void 0,t.config,t.templates),t.mixin(t.templates,{xml_date:n.str_to_date(a.xml_date,a.server_utc),xml_format:r(a.xml_date,a.server_utc),api_date:n.str_to_date(a.api_date),progress_text:function(t,e,i){return""},grid_header_class:function(t,e){return""},task_text:function(t,e,i){return i.text},task_class:function(t,e,i){return""},grid_row_class:function(t,e,i){return""},task_row_class:function(t,e,i){return""},task_cell_class:function(t,e){return""},scale_cell_class:function(t){return""},scale_row_class:function(t){return""},grid_indent:function(t){return"
"},grid_folder:function(t){return"
"},grid_file:function(t){return"
"},grid_open:function(t){return"
"},grid_blank:function(t){return"
"},date_grid:function(e,i){return i&&t.isUnscheduledTask(i)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(i):t.templates.grid_date_format(e)},task_time:function(e,i,n){return t.isUnscheduledTask(n)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(n):t.templates.task_date(e)+" - "+t.templates.task_date(i)},task_unscheduled_time:function(t){return""},time_picker:r(a.time_picker),link_class:function(t){return""},link_description:function(e){var i=t.getTask(e.source),n=t.getTask(e.target);return""+i.text+""+n.text+""},drag_link:function(e,i,n,r){e=t.getTask(e);var a=t.locale.labels,o=""+e.text+" "+(i?a.link_start:a.link_end)+"
";return n&&(o+=" "+(n=t.getTask(n)).text+" "+(r?a.link_start:a.link_end)+"
"),o},drag_link_class:function(e,i,n,r){var a="";return e&&n&&(a=" "+(t.isLinkAllowed(e,n,i,r)?"gantt_link_allow":"gantt_link_deny")),"gantt_link_tooltip"+a},tooltip_date_format:n.date_to_str("%Y-%m-%d"),tooltip_text:function(e,i,n){return"Task: "+n.text+"
Start date: "+t.templates.tooltip_date_format(e)+"
End date: "+t.templates.tooltip_date_format(i)}})},initTemplate:i}}},function(t,e,i){var n=i(4),r=i(0),a=i(29);t.exports=function(t){function e(t){return{target:t.target||t.srcElement,pageX:t.pageX,pageY:t.pageY,clientX:t.clientX,clientY:t.clientY,metaKey:t.metaKey,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey}}function i(i,a){this._obj=i,this._settings=a||{},n(this);var o=this.getInputMethods();this._drag_start_timer=null,t.attachEvent("onGanttScroll",r.bind(function(t,e){this.clearDragTimer()},this));for(var s=0;sthis.config.sensitivity},initDnDMarker:function(){var t=this.config.marker=document.createElement("div");t.className="gantt_drag_marker",t.innerHTML="Dragging object",document.body.appendChild(t)},backupEventTarget:function(i,n){if(t.config.touch){var r=n(i),a=r.target||r.srcElement,o=a.cloneNode(!0);this.config.original_target=e(r),this.config.original_target.target=o,this.config.backup_element=a,a.parentNode.appendChild(o),a.style.display="none",document.body.appendChild(a)}},getInputMethods:function(){var e=[];if(e.push({move:"mousemove",down:"mousedown",up:"mouseup",accessor:function(t){return t}}),t.config.touch){var i=!0;try{document.createEvent("TouchEvent")}catch(t){i=!1}i?e.push({move:"touchmove",down:"touchstart",up:"touchend",accessor:function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:document.elementFromPoint(t.touches[0].clientX,t.touches[0].clientY),pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t}}):window.navigator.pointerEnabled?e.push({move:"pointermove",down:"pointerdown",up:"pointerup",accessor:function(t){return"mouse"==t.pointerType?null:t}}):window.navigator.msPointerEnabled&&e.push({move:"MSPointerMove",down:"MSPointerDown",up:"MSPointerUp",accessor:function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t}})}return e},clearDragTimer:function(){this._drag_start_timer&&(clearTimeout(this._drag_start_timer),this._drag_start_timer=null)},dragStart:function(e,i,n){this.config&&this.config.started||(this.config={obj:e,marker:null,started:!1,pos:this.getPosition(i),sensitivity:4},this._settings&&r.mixin(this.config,this._settings,!0),this.traceDragEvents(e,n),t._prevent_touch_scroll=!0,document.body.className+=" gantt_noselect",t.config.touch&&this.dragMove(e,i,n.accessor))},dragMove:function(e,i,n){var r=n(i);if(!r)return!1;if(!this.config.marker&&!this.config.started){var a=this.getPosition(r);if(t.config.touch||this.checkPositionChange(a)){if(this.config.started=!0,this.config.ignore=!1,!1===this.callEvent("onBeforeDragStart",[e,this.config.original_target]))return this.config.ignore=!0,!1;this.backupEventTarget(i,n),this.initDnDMarker(),t._touch_feedback(),this.callEvent("onAfterDragStart",[e,this.config.original_target])}else this.config.ignore=!0}return!this.config.ignore&&(r.pos=this.getPosition(r),this.config.marker.style.left=r.pos.x+"px",this.config.marker.style.top=r.pos.y+"px",this.callEvent("onDragMove",[e,r]),!0)},dragEnd:function(e){var i=this.config.backup_element;i&&i.parentNode&&i.parentNode.removeChild(i),t._prevent_touch_scroll=!1,this.config.marker&&(this.config.marker.parentNode.removeChild(this.config.marker),this.config.marker=null,this.callEvent("onDragEnd",[])),this.config.started=!1,document.body.className=document.body.className.replace(" gantt_noselect","")},getPosition:function(t){var e=0,i=0;return(t=t||window.event).pageX||t.pageY?(e=t.pageX,i=t.pageY):(t.clientX||t.clientY)&&(e=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,i=t.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:e,y:i}}},i}},function(t,e){t.exports=function(t){var e={init:function(){for(var e=t.locale,i=e.date.month_short,n=e.date.month_short_hash={},r=0;r=9?9:i>=6?6:i>=3?3:0,t.setMonth(e),t},year_start:function(t){return t.setMonth(0),this.month_start(t)},day_start:function(t){return this.date_part(t)},hour_start:function(t){return t.getMinutes()&&t.setMinutes(0),this.minute_start(t),t},minute_start:function(t){return t.getSeconds()&&t.setSeconds(0),t.getMilliseconds()&&t.setMilliseconds(0),t},_add_days:function(t,e){var i=new Date(t.valueOf());return i.setDate(i.getDate()+e),e>=0&&!t.getHours()&&i.getHours()&&(i.getDate()<=t.getDate()||i.getMonth()11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+to_fixed(date.getSeconds())+"';case"%W":return'"+to_fixed(getISOWeek(date))+"';case"%w":return'"+to_fixed(getWeek(date))+"';default:return t}}),n&&(i=i.replace(/date\.get/g,"date.getUTC"));var r=new Function("date","to_fixed","locale","getISOWeek","getWeek",'return "'+i+'";');return function(i){return r(i,e.to_fixed,t.locale,e.getISOWeek,e.getWeek)}},str_to_date:function(e,i){for(var n="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",r=e.match(/%[a-zA-Z]/g),a=0;a50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":n+="set[3]=temp["+a+"]||0;";break;case"%i":n+="set[4]=temp["+a+"]||0;";break;case"%Y":n+="set[0]=temp["+a+"]||0;";break;case"%a":case"%A":n+="set[3]=set[3]%12+((temp["+a+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":n+="set[5]=temp["+a+"]||0;";break;case"%M":n+="set[1]=locale.date.month_short_hash[temp["+a+"]]||0;";break;case"%F":n+="set[1]=locale.date.month_full_hash[temp["+a+"]]||0;"}var o="set[0],set[1],set[2],set[3],set[4],set[5]";i&&(o=" Date.UTC("+o+")");var s=new Function("date","locale","var set=[0,0,1,0,0,0]; "+n+" return new Date("+o+");");return function(e){return s(e,t.locale)}},getISOWeek:function(e){return t.date._getWeekNumber(e,!0)},_getWeekNumber:function(t,e){if(!t)return!1;var i=t.getDay();e&&0===i&&(i=7);var n=new Date(t.valueOf());n.setDate(t.getDate()+(4-i));var r=n.getFullYear(),a=Math.round((n.getTime()-new Date(r,0,1).getTime())/864e5);return 1+Math.floor(a/7)},getWeek:function(e){return t.date._getWeekNumber(e,t.config.start_on_monday)},getUTCISOWeek:function(e){return t.date.getISOWeek(e)},convert_to_utc:function(t){return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())},parseDate:function(e,i){return e&&!e.getFullYear&&("function"!=typeof i&&(i="string"==typeof i?t.defined(t.templates[i])?t.templates[i]:t.date.str_to_date(i):t.templates.xml_date),e=e?i(e):null),e}};return e}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if("string"==typeof t||"number"==typeof t)return t;var e="";for(var i in t){var n="";t.hasOwnProperty(i)&&(n=i+"="+(n="string"==typeof t[i]?encodeURIComponent(t[i]):"number"==typeof t[i]?t[i]:encodeURIComponent(JSON.stringify(t[i]))),e.length&&(n="&"+n),e+=n)}return e}},function(t,e,i){var n=i(13),r=i(137).default;function a(t,e){var i={method:t};if(0===e.length)throw new Error("Arguments list of query is wrong.");if(1===e.length)return"string"==typeof e[0]?(i.url=e[0],i.async=!0):(i.url=e[0].url,i.async=e[0].async||!0,i.callback=e[0].callback,i.headers=e[0].headers),e[0].data?"string"!=typeof e[0].data?i.data=r(e[0].data):i.data=e[0].data:i.data="",i;switch(i.url=e[0],t){case"GET":case"DELETE":i.callback=e[1],i.headers=e[2];break;case"POST":case"PUT":e[1]?"string"!=typeof e[1]?i.data=r(e[1]):i.data=e[1]:i.data="",i.callback=e[2],i.headers=e[3]}return i}t.exports=function(t){return{cache:!0,method:"get",parse:function(t){return"string"!=typeof t?t:(t=t.replace(/^[\s]+/,""),window.DOMParser&&!n.isIE?e=(new window.DOMParser).parseFromString(t,"text/xml"):window.ActiveXObject!==window.undefined&&((e=new window.ActiveXObject("Microsoft.XMLDOM")).async="false",e.loadXML(t)),e);var e},xmltop:function(e,i,n){if(void 0===i.status||i.status<400){var r=i.responseXML?i.responseXML||i:this.parse(i.responseText||i);if(r&&null!==r.documentElement&&!r.getElementsByTagName("parsererror").length)return r.getElementsByTagName(e)[0]}return-1!==n&&t.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],n]),document.createElement("DIV")},xpath:function(t,e){if(e.nodeName||(e=e.responseXML||e),n.isIE)return e.selectNodes(t)||[];for(var i,r=[],a=(e.ownerDocument||e).evaluate(t,e,null,XPathResult.ANY_TYPE,null);i=a.iterateNext();)r.push(i);return r},query:function(t){return this._call(t.method||"GET",t.url,t.data||"",t.async||!0,t.callback,t.headers)},get:function(t,e,i){var n=a("GET",arguments);return this.query(n)},getSync:function(t,e){var i=a("GET",arguments);return i.async=!1,this.query(i)},put:function(t,e,i,n){var r=a("PUT",arguments);return this.query(r)},del:function(t,e,i){var n=a("DELETE",arguments);return this.query(n)},post:function(t,e,i,n){1==arguments.length?e="":2!=arguments.length||"function"!=typeof e&&"function"!=typeof window[e]||(e,e="");var r=a("POST",arguments);return this.query(r)},postSync:function(t,e,i){e=null===e?"":String(e);var n=a("POST",arguments);return n.async=!1,this.query(n)},_call:function(e,i,r,a,o,s){return new t.Promise(function(l,c){var u=window.XMLHttpRequest&&!n.isIE?new XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP"),d=null!==navigator.userAgent.match(/AppleWebKit/)&&null!==navigator.userAgent.match(/Qt/)&&null!==navigator.userAgent.match(/Safari/);if(a&&(u.onreadystatechange=function(){if(4==u.readyState||d&&3==u.readyState){if((200!=u.status||""===u.responseText)&&!t.callEvent("onAjaxError",[u]))return;window.setTimeout(function(){"function"==typeof o&&o.apply(window,[{xmlDoc:u,filePath:i}]),l(u),"function"==typeof o&&(o=null,u=null)},0)}}),"GET"!=e||this.cache||(i+=(i.indexOf("?")>=0?"&":"?")+"dhxr"+(new Date).getTime()+"=1"),u.open(e,i,a),s)for(var h in s)u.setRequestHeader(h,s[h]);else"POST"==e.toUpperCase()||"PUT"==e||"DELETE"==e?u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):"GET"==e&&(r=null);if(u.setRequestHeader("X-Requested-With","XMLHttpRequest"),u.send(r),!a)return{xmlDoc:u,filePath:i}})},urlSeparator:function(t){return-1!=t.indexOf("?")?"&":"?"}}}},function(t,e){t.exports=function(){return{layout:{css:"gantt_container",rows:[{cols:[{view:"grid",scrollX:"scrollHor",scrollY:"scrollVer"},{resizer:!0,width:1},{view:"timeline",scrollX:"scrollHor",scrollY:"scrollVer"},{view:"scrollbar",id:"scrollVer"}]},{view:"scrollbar",id:"scrollHor",height:20}]},links:{finish_to_start:"0",start_to_start:"1",finish_to_finish:"2",start_to_finish:"3"},types:{task:"task",project:"project",milestone:"milestone"},auto_types:!1,duration_unit:"day",work_time:!1,correct_work_time:!1,skip_off_time:!1,cascade_delete:!0,autosize:!1,autosize_min_width:0,autoscroll:!0,autoscroll_speed:30,show_links:!0,show_task_cells:!0,static_background:!1,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,xml_date:"%d-%m-%Y %H:%i",api_date:"%d-%m-%Y %H:%i",start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,preserve_scroll:!0,readonly:!1,date_grid:"%Y-%m-%d",drag_links:!0,drag_progress:!0,drag_resize:!0,drag_project:!1,drag_move:!0,drag_mode:{resize:"resize",progress:"progress",move:"move",ignore:"ignore"},round_dnd_dates:!0,link_wrapper_width:20,root_id:0,autofit:!1,columns:[{name:"text",tree:!0,width:"*",resize:!0},{name:"start_date",align:"center",resize:!0},{name:"duration",align:"center"},{name:"add",width:44}],step:1,scale_unit:"day",scale_offset_minimal:!0,subscales:[],inherit_scale_class:!1,time_step:60,duration_step:1,date_scale:"%d %M",task_date:"%d %F %Y",time_picker:"%H:%i",task_attribute:"task_id",link_attribute:"link_id",layer_attribute:"data-layer",buttons_left:["gantt_save_btn","gantt_cancel_btn"],_migrate_buttons:{dhx_save_btn:"gantt_save_btn",dhx_cancel_btn:"gantt_cancel_btn",dhx_delete_btn:"gantt_delete_btn"},buttons_right:["gantt_delete_btn"],lightbox:{sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"time",type:"duration",map_to:"auto"}],project_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",readonly:!0,map_to:"auto"}],milestone_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",single_date:!0,map_to:"auto"}]},drag_lightbox:!0,sort:!1,details_on_create:!0,details_on_dblclick:!0,initial_scroll:!0,task_scroll_offset:100,order_branch:!1,order_branch_free:!1,task_height:"full",min_column_width:70,min_grid_column_width:70,grid_resizer_column_attribute:"column_index",grid_resizer_attribute:"grid_resizer",keep_grid_width:!1,grid_resize:!1,show_unscheduled:!0,readonly_property:"readonly",editable_property:"editable",calendar_property:"calendar_id",resource_calendars:{},inherit_calendar:!1,type_renderers:{},open_tree_initially:!1,optimize_render:!0,prevent_default_scroll:!1,show_errors:!0,wai_aria_attributes:!0,smart_scales:!0,rtl:!1,placeholder_task:!1}}},function(t,e){t.exports=function(){var t={};return{services:{config:"config",templates:"templates",locale:"locale"},setService:function(e,i){t[e]=i},getService:function(e){return t[e]?t[e]():null},dropService:function(e){t[e]&&delete t[e]},config:function(){return this.getService("config")},templates:function(){return this.getService("templates")},locale:function(){return this.getService("locale")},destructor:function(){for(var e in t)if(t[e]){var i=t[e];i&&i.destructor&&i.destructor()}t=null}}}},function(t,e){t.exports=function(t){t.$inject=function(t){return t(this.$services)}}},function(t,e){t.exports={KEY_CODES:{UP:38,DOWN:40,LEFT:37,RIGHT:39,SPACE:32,ENTER:13,DELETE:46,ESC:27,TAB:9}}},function(t,e,i){i(15),t.exports=function(){var t=new function(){this.constants=i(142),this.version="6.1.6",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}};i(141)(t),t.$services=t.$inject(i(140)),t.config=t.$inject(i(139)),t.ajax=i(138)(t),t.date=i(136)(t);var e=i(135)(t);t.$services.setService("dnd",function(){return e}),t.$services.setService("config",function(){return t.config}),t.$services.setService("date",function(){return t.date}),t.$services.setService("locale",function(){return t.locale}),t.$services.setService("templates",function(){return t.templates});var n=i(134)(t);t.$services.setService("templateLoader",function(){return n}),i(4)(t);var r=new(i(133));r.registerProvider("global",function(){return{min_date:t._min_date,max_date:t._max_date,selected_task:t.$data.tasksStore.getSelectedId()}}),t.getState=r.getState,t.$services.setService("state",function(){return r});var a=i(0);a.mixin(t,a),t.Promise=i(132),t.env=i(13);var o=i(1);t.utils={dom:{getNodePosition:o.getNodePosition,getRelativeEventPosition:o.getRelativeEventPosition,isChildOf:o.isChildOf,hasClass:o.hasClass,closest:o.closest}};var s=i(16)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,a.mixin(t,i(128)(t));var l=i(127).init(t);t.$ui=l.factory,t.$ui.layers=l.render,t.$mouseEvents=l.mouseEvents,t.$services.setService("mouseEvents",function(){return t.$mouseEvents}),t.mixin(t,l.layersApi),i(91)(t),t.$services.setService("layers",function(){return l.layersService});var c=i(90);t.mixin(t,c()),i(89)(t);var u=i(82);return t.dataProcessor=u.DEPRECATED_api,t.createDataProcessor=u.createDataProcessor,i(78)(t),i(69)(t),i(68)(t),i(67)(t),i(66)(t),i(65)(t),i(64)(t),i(55)(t),i(54)(t),i(45)(t),i(44)(t),i(43)(t),i(42)(t),i(41)(t),i(40)(t),i(39)(t),i(38)(t),i(37)(t),i(36)(t),i(35)(t),i(34)(t),i(33)(t),i(32)(t),i(30)(t),t}},function(t,e){t.exports=function(t){}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(144),r=i(143),a=window.gantt=r();e.gantt=a,n(a),e.default=a}])}); //# sourceMappingURL=dhtmlxgantt.js.map \ No newline at end of file diff --git a/codebase/dhtmlxgantt.js.map b/codebase/dhtmlxgantt.js.map index 1010245a..9426e181 100644 --- a/codebase/dhtmlxgantt.js.map +++ b/codebase/dhtmlxgantt.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./sources/utils/utils.js","webpack:///./sources/utils/dom_helpers.js","webpack:///./sources/utils/extends.js","webpack:///./sources/utils/helpers.js","webpack:///./sources/utils/eventable.js","webpack:///./sources/core/lightbox/controls/base_control.js","webpack:///./sources/core/ui/grid/editors/editors/base.js","webpack:///./sources/core/ui/layout/cell.js","webpack:///./sources/core/lightbox/controls/select_control.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack:///./sources/core/ui/mouse_event_container.js","webpack:///./sources/core/ui/timeline/timeline.js","webpack:///(webpack)/buildin/global.js","webpack:///./sources/utils/env.js","webpack:///./sources/utils/dom_event_scope.js","webpack:///./sources/utils/html_helpers.js","webpack:///./sources/core/worktime/calendar_arguments_helper.js","webpack:///./sources/utils/task_tree_helpers.js","webpack:///./sources/core/gantt_data_range.js","webpack:///./sources/core/datastore/power_array.js","webpack:///./sources/core/datastore/datastore.js","webpack:///./sources/core/ui/render/task_bar_render.js","webpack:///./sources/core/ui/grid/grid.js","webpack:///./sources/core/ui/row_position_mixin.js","webpack:///./sources/core/ui/timeline/scales.js","webpack:///./sources/core/ui/layout/layout.js","webpack:///./node_modules/process/browser.js","webpack:///./sources/utils/timeout.js","webpack:///./sources/core/destructor.js","webpack:///./sources/core/common/assert.js","webpack:///./sources/core/gantt_core.js","webpack:///./sources/locale/index.js","webpack:///./sources/core/touch.js","webpack:///./sources/css/skins/contrast_white.js","webpack:///./sources/css/skins/contrast_black.js","webpack:///./sources/css/skins/material.js","webpack:///./sources/css/skins/broadway.js","webpack:///./sources/css/skins/terrace.js","webpack:///./sources/css/skins/meadow.js","webpack:///./sources/css/skins/skyblue.js","webpack:///./sources/core/skin.js","webpack:///./sources/core/cached_functions.js","webpack:///./sources/core/data_task_types.gpl.js","webpack:///./sources/core/lightbox_optional_time.js","webpack:///./sources/core/lightbox/controls/constraint_control.js","webpack:///./sources/core/lightbox/controls/parent_control.js","webpack:///./sources/core/lightbox/controls/duration_control.js","webpack:///./sources/core/lightbox/controls/radio_control.js","webpack:///./sources/core/lightbox/controls/checkbox_control.js","webpack:///./sources/core/lightbox/controls/time_control.js","webpack:///./sources/core/lightbox/controls/textarea_control.js","webpack:///./sources/core/lightbox/controls/template_control.js","webpack:///./sources/core/lightbox/index.js","webpack:///./sources/core/data.js","webpack:///./sources/core/facades/worktime_calendars.js","webpack:///./sources/core/worktime/strategy/no_work_time.js","webpack:///./sources/core/worktime/time_calculator.js","webpack:///./sources/core/worktime/strategy/work_unit_cache/workunit_object_cache.ts","webpack:///./sources/core/worktime/strategy/work_unit_cache/workunit_map_cache.ts","webpack:///./sources/core/worktime/strategy/work_unit_cache/index.ts","webpack:///./sources/core/worktime/strategy/calendar_strategy.js","webpack:///./sources/core/worktime/calendar_manager.js","webpack:///./sources/core/worktime/work_time.js","webpack:///./sources/core/load.js","webpack:///./sources/core/tasks.js","webpack:///./sources/core/wai_aria.js","webpack:///./sources/core/grid_column_api.gpl.js","webpack:///./sources/core/dynamic_loading.gpl.js","webpack:///./sources/core/plugins/auto_task_types.js","webpack:///./sources/core/plugins/new_task_placeholder.js","webpack:///./sources/core/plugins/resources.js","webpack:///./sources/core/plugins/dhtmlx_hooks.js","webpack:///./sources/core/plugins/jquery_hooks.js","webpack:///./sources/core/plugins/wbs.js","webpack:///./sources/core/plugins/batch_update.js","webpack:///./sources/core/plugins/autoscroll.js","webpack:///./sources/core/plugins/index.js","webpack:///./sources/core/dataprocessor/extend_gantt.ts","webpack:///./sources/core/dataprocessor/data_processor_events.ts","webpack:///./sources/core/dataprocessor/data_processor.ts","webpack:///./sources/core/dataprocessor/index.js","webpack:///./sources/core/datastore/datastore_render.js","webpack:///./sources/core/datastore/select.js","webpack:///./sources/core/datastore/treedatastore.js","webpack:///./sources/core/facades/datastore_links.js","webpack:///./sources/core/facades/datastore_tasks.js","webpack:///./sources/core/facades/datastore.js","webpack:///./sources/core/datastore/datastore_hooks.js","webpack:///./sources/core/facades/layout.js","webpack:///./sources/core/data_task_layers.gpl.js","webpack:///./sources/core/ui/main_layout_initializer.js","webpack:///./sources/core/ui/timeline/links_dnd.js","webpack:///./sources/core/ui/timeline/tasks_dnd.js","webpack:///./sources/core/ui/timeline/main_timeline_initializer.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/highlight.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd.js","webpack:///./sources/core/ui/grid/main_grid_initializer.js","webpack:///./sources/core/ui/render/task_grid_line_render.js","webpack:///./sources/core/ui/render/link_render.js","webpack:///./sources/core/ui/render/task_bg_render.js","webpack:///./sources/core/ui/render/task_split_render.js","webpack:///./sources/core/ui/grid/editors/editors/predecessor.js","webpack:///./sources/core/ui/grid/editors/editors/date.js","webpack:///./sources/core/ui/grid/editors/editors/select.js","webpack:///./sources/core/ui/grid/editors/editors/number.js","webpack:///./sources/core/ui/grid/editors/editors/text.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings.js","webpack:///./sources/core/ui/grid/editors/controller.js","webpack:///./sources/core/ui/grid/grid_resize.gpl.js","webpack:///./sources/core/ui/timeline/tasks_canvas_render.gpl.js","webpack:///./sources/core/ui/layout/scrollbar_cell.js","webpack:///./sources/core/ui/layout/resizer_cell.gpl.js","webpack:///./sources/core/ui/layout/view_cell.js","webpack:///./sources/core/ui/layout/view_layout.js","webpack:///./sources/core/ui/render/render_factory.js","webpack:///./sources/core/ui/render/layer_engine.js","webpack:///./sources/core/ui/gantt_layers.js","webpack:///./sources/core/ui/mouse.js","webpack:///./sources/core/ui/configurable.js","webpack:///./sources/core/ui/ui_factory.js","webpack:///./sources/core/ui/index.js","webpack:///./sources/core/message.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./sources/utils/promise.js","webpack:///./sources/core/common/state.js","webpack:///./sources/core/common/templates.js","webpack:///./sources/core/common/dnd.js","webpack:///./sources/core/common/date.js","webpack:///./sources/core/common/serialize.ts","webpack:///./sources/core/common/ajax.js","webpack:///./sources/core/common/config.js","webpack:///./sources/core/common/services.js","webpack:///./sources/core/common/import.js","webpack:///./sources/constants/index.js","webpack:///./sources/core/gantt.js","webpack:///./sources/core/deprecated_warnings.js","webpack:///./sources/dhtmlxgantt.gpl.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","seed","helpers","copy","result","isDate","Date","isArray","Array","length","isStringObject","String","isNumberObject","Number","isBooleanObject","Boolean","apply","defined","obj","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","createElement","getTargetNode","e","tagName","srcElement","str","trim","this","replace","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","splice","getScrollSize","div","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","trg","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","element","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","b","__","constructor","units","second","minute","hour","day","week","month","quarter","year","arrayFilter","arr","callback","filter","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayFind","find","arrayDifference","item","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","sort","throttle","timeout","wait","setTimeout","pop","getFullYear","getMonth","getDate","Function","toString","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","EventHost","_connected","_silent_mode","_silentStart","_silentEnd","createEventStorage","dhx_catch","z","res","zr","addEvent","removeEvent","id","eventHost","catcher","callObj","attachAll","callEvent","arg0","handlerName","concat","checkEvent","list","detachAllEvents","dummy","log","BaseControl","render","set_value","get_value","focus","gantt","BaseEditor","show","column","config","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","utils","eventable","domHelpers","Cell","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","clear","getNode","padding","resize","final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","index","cellIndex","moveView","hidden","$toHTML","content","header","raw","html","canCollapse","$fill","init","self","toggle","delegate","collapsed","size","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","view","cssHash","xLayout","floor","transform","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","options","_dhx_onchange","onchange","_focus","createDropTargetObject","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","store","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","events","mouseEvents","h","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_findBinary","array","prev","low","high","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","col_width","full_width","trace_x","rendered","$getConfig","attr","linksAttr","bindLinks","item_attribute","link_attribute","layers","_createLayerConfig","tasks","linkLayers","links","_attachLayers","dataHeight","max","scale_height","refresh","backgroundImage","smart_rendering","rowStore","row_height","countVisible","scale","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","_refreshScales","smart_scales","scales","_scales","_getScaleChunkHtml","taskFilter","expose","renderer","$ui","taskBar","taskSplitBar","append","taskBg","static_background","link","_taskLayers","_linkLayers","getDatastore","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","host","bar_layer","addLayer","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","linkRenderer","linkLayer","_linkRenderer","staticRender","_staticBgHandler","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","state","getState","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","min_date","max_date","rtl","cfg","fromPos","toPos","templates","scale_row_class","cssClass","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","date","template","date_to_str","startIndex","endIndex","count","inherit_scale_class","scale_cell_class","cssclass","_waiAria","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","posFromDate","columnIndexByDate","assert","wholeCells","partCell","pos","min","_getNextVisibleColumn","columns","ignores","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","trace_x_ascending","ignore_x","dateIndex","visibleIndex","visibleDate","transition","trace_index_transition","getItemPosition","task","start_date","end_date","xLeft","xRight","getItemTop","getItemHeight","task_height","offset","task_height_offset","primaryScale","subscales","sortScales","add","step","g","eval","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","createScope","handlers","eventScope","attach","staticArray","extend","scopes","attributes","_this","entry","_attributes","getHtmlOption","label","_getHtmlContainer","getHtmlButton","getHtmlDiv","getHtmlLabel","getHtmlInput","_getHtmlAttributes","tag","IsWorkTimeArgument","calendar","ClosestWorkTimeArgument","dir","CalculateEndDateArgument","duration","GetDurationArgument","start","end","getWorkHoursArguments","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","arg","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","copyLinkIdsArray","linkIds","targetHash","isLinkExists","getLink","copyLinkIds","$source","$target","getSubtreeLinks","rootId","isTaskExists","getTask","eachTask","getSubtreeTasks","_init_tasks_range","scale_unit","scale_offset_minimal","helper","_scale_range_unit","range","start_interval","resolveConfigRange","getSubtaskDates","dateRangeResolver","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","$powerArray","$create","$removeAt","$remove","$find","$insertAt","data","$each","master","$map","$filter","powerArray","DataStore","pull","$initItem","initItem","visibleOrder","fullOrder","_skip_refresh","_filterRule","_searchVisibleOrder","_parseInner","loaded","parse","getItem","_updateOrder","code","updateItem","_removeItemInner","removeItem","_addItemInner","exists","silent","order","data_size","getVisibleItems","getIndexRange","addItem","_changeIdInner","oldId","newId","changeId","_moveInner","sindex","tindex","getIdByIndex","move","clearAll","arraysEqual","arr1","arr2","quick","oldOrder","serialize","eachItem","rule","filteredOrder","from","to","Infinity","ret","getItems","getIndexById","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","_task_default_render","_isAllowedUnscheduledTask","$getTemplates","taskType","getTaskType","type","padd","types","milestone","link_line_width","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","itemId","project","isSummaryTask","isSplitTask","select_task","selected_task","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","_get_link_crossing_css","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","text","cond","leftside","start_to_start","finish_to_start","finish_to_finish","_get_conditions","ln","tp","type_renderers","defaultRenderer","gridResize","Grid","$state","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_validateColumnWidth","numericWidth","outerWidth","getGridColumns","innerWidth","scrollable","_setColumnsWidth","grid_width","_getGridWidth","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","getColumn","gridLine","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","close","open","_getColumnWidth","min_width","min_grid_column_width","new_width","max_width","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","col","share","iterator","curExtra","_getColsTotalWidth","cols_width","v","parseFloat","unknown","gridWidth","autofit","diff","delta","changed","_setContentSize","locale","reverse","labels","lineHeigth","last","colWidth","_sort","direction","grid_header_class","gridScaleCellAttrString","lineHeight","getRowTop","taskId","itemIndex","parentId","dateHelper","services","getSum","sizes","setSumWidth","sum_width","parts","adjustSize","splitSize","full","cellSize","initTemplate","date_scale","min_coll_width","container_width","minDate","maxDate","heights","configs","main_scale","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","indexes","trace_indexes","_ignore_time_config","skip_off_time","skip","probe","isWorkTime","display_count","min_col_width","line_height","cont_width","column_count","eachColumn","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prevUpper","up","target_index","upper_start","upper_end","lower_start","lower_end","targetWidth","curr","tzOffset","getTimezoneOffset","_correct_dst_change","dates","lastDate","outDate","shared","Layout","$root","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenSrollbars","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","isChild","cellId","sub","alert","insertBefore","rows","cols","views","initUI","getCells","_cleanElSize","_getBoxStyles","computed","properties","boxSizing","clientHeight","MozBoxSizing","horPaddings","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","vertPaddings","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderBox","innerHeight","outerHeight","boxSizes","contentSizes","_sizes","margin","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","cellView","marginSide","dx","dy","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","updPerSecond","_on_timeout","ceil","_eventRemoveAll","$layout","resetLightbox","_dp","check","message","show_errors","expire","calculateScaleRange","listenWindowResize","resizeDelay","scroll_size","_reinit","$mouseEvents","reset","_update_flags","initTemplates","_clearTaskLayers","_clearLinkLayers","layout","createView","storeNames","refreshData","getPropertyValue","resizeWatcher","tabIndex","contentWindow","addResizeListener","$click","buttons","edit","showLightbox","delete","question","confirm_deleting","confirm_deleting_title","_dhtmlx_confirm","$new","deleteTask","hideLightbox","posX","_getHorizontalScrollbar","codeScrollLeft","visible_date","task_scroll_offset","preserve_scroll","new_pos","showDate","setSizes","locate","targetAttribute","task_attribute","_locate_css","_locateHTML","getTaskRowNode","els","changeLightboxType","getLightboxType","_silent_redraw_lightbox","_get_link_type","start_to_finish","prevOffset","time_unit","offsetChanged","$data","tasksStore","_isSplitItem","_is_icon_open_click","month_full","month_short","day_full","day_short","new_task","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_duration","column_add","confirm_link_deleting","link_start","link_end","type_task","type_project","type_milestone","minutes","hours","weeks","months","years","message_ok","message_cancel","section_constraint","constraint_type","constraint_date","asap","alap","snet","snlt","fnet","fnlt","mso","mfo","resources_filter_placeholder","resources_filter_label","getTaskDND","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","touchHandlers","names","accessor","ignore","scroll_state","dblclicktime","action_mode","scroll_mode","action_start","long_tap_timer","current_target","start_drag","on_mouse_move","preventDefault","cancelBubble","abs","_touch_scroll_active","new_scroll_state","block_action","on_mouse_down","renders","_getTaskLayers","isTaskVisible","cloneNode","cloneTaskRendered","_start_dnd","_touch_drag","refreshTask","on_mouse_up","now","onDoubleClick","skins","link_arrow_size","lightbox_additional_height","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","buttons_left","buttons_right","getTaskNode","indx","broadway","_lightbox_template","_config_buttons_left","_config_buttons_right","gantt_delete_btn","gantt_save_btn","terrace","meadow","skyblue","_get_skin","skin","getElementsByTagName","href","match","skinset","_configure","resetSkin","activate","_cached_functions","update_if_changed","active","cache","critical_path_mode","wrap_methods","methods","_prefetch_originals","prefetch","methodname","original","optimizer","argumentsArray","get_arguments_hash","cached_values","has_cached_value","get_cached_value","cache_value","arguments_hash","is_date","getUTCDate","values","stringify_argument","deactivate","setup","override_gantt","gantt_methods","optimize_render","deactivTimeout","_extend_to_optional","lightbox_block","optional_time","section","mapping","_resolve_default_mapping","disable","val","enable","disabled","update_block","_lightbox_id","previousSibling","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","typeValue","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","_fill_lightbox_select","constraintType","getConstraintType","getTimePickerValue","ParentControl","_display","item_id","getTaskByTime","allow_root","root_id","root_label","_filter","map_to","tmpDom","newOptions","onselect","replaceChild","DurationControl","_getStartDate","_getDuration","singleDate","single_date","readonly","lightboxDurationInputAttrString","duration_val","inps","btns","endspan","_calc_date","task_date","_change_duration","onclick","onkeydown","charCode","keyCode","which","constants","KEY_CODES","DOWN","UP","calculateDuration","startDate","endDate","RadioControl","radio","default_value","checked","CheckboxControl","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","ResourcesControl","getHtmlButtons","floatRight","_migrate_buttons","lightboxButtonAttrString","getHtmlTimePickerOptions","settings","start_year","end_year","tdate","timeFormat","year_range","first","_time_values","time_picker","setTime","getHours","getMinutes","_lightbox_methods","registerProvider","lightbox","getLightbox","_center_lightbox","showCover","_fill_lightbox","lightboxVisibleAttr","round_dnd_dates","timeline","_is_chart_visible","time_step","getLabel","sections","j","updateCollection","list_name","collection","serverList","_lightbox_type","lightboxDiv","fullWidth","classNames","_lightbox","_is_lightbox_timepicker","wide_form","lightboxAttr","drag_lightbox","onmousedown","_ready_to_dnd","onselectstart","cursor","_init_dnd_events","_render_sections","labelBlock","inputBlock","inputId","bindLabelsToInputs","_init_lightbox_events","block","con","scroll_top","scroll_left","view_height","_cover","_document_height","_scroll_height","lightbox_events","_save_lightbox","gantt_cancel_btn","_cancel_lightbox","src","sec","buttonTarget","SPACE","shiftKey","click","edit_save","edit_cancel","getLightboxValues","addTask","updateTask","lightboxHiddenAttr","hideCover","_custom_lightbox","_set_lightbox_values","lightboxHeader","lightbox_header","task_time","substr","getLightboxSection","getValue","setValue","get_template_control","control","get_select_control","get_textarea_control","get_time_control","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","lightboxSelectAttrString","needSetTime","mapOffset","checkbox","resources","constraint","ok","opts","confirm","type_value","oldType","formData","updTask","isUnscheduledTask","unscheduled","show_unscheduled","taskStart","taskEnd","getGlobalTaskIndex","_getProjectEnd","project_end","_getProjectStart","project_start","_defaultTaskDate","parent_id","schedule_from_end","getTaskByIndex","_set_default_task_timing","createTask","setParent","$open","details_on_create","selectTask","showTask","oldid","newid","unselect","getSelectedId","_get_task_timing_mode","task_type","$no_start","$no_end","$rendered_type","_init_task_timing","task_mode","dirty","resetProjectDates","taskMode","_assign_project_dates","getSubtaskDuration","task_id","taskTiming","_update_parents","pid","has_changed","oldStart","oldEnd","roundDate","upper","lower","colIndex","steps","correctTaskWorkTime","work_time","correct_work_time","getClosestWorkTime","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","createCalendar","addCalendar","getCalendar","getCalendars","getTaskCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","createArgumentsHelper","NoWorkTimeCalendar","TimeCalculator","$disabledCalendar","_getCalendar","manager","WorkUnitsObjectCache","timestamp","_cache","setItem","WorkUnitsMapCache","has","unitCache","Map","set","workunit_map_cache_1","workunit_object_cache_1","createCacheObject","cacheFactory","CalendarWorkTimeStrategy","_workingUnitsCache","_getUnitOrder","_timestamp","UTC","_checkIfWorkingUnit","_isWorkTime","_is_work_day","_getWorkHours","_is_work_hour","_internDatesPull","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","next","checkFirst","checkLast","isLastStep","_getMinutesPerDay","_getHoursPerDay","_getWorkUnitsForRange","getUnitsPerDay","total","_getWorkUnitsBetweenQuick","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","worktime","_setCalendar","_tryChangeCalendarSettings","payload","backup","JSON","stringify","_isEmptyCalendar","datesArray","isFullWeekSet","checkFullArray","getDay","reset_calendar","dateKey","is_work_unit","mult","_calculateEndDate","_calculateMinuteEndDate","_calculateHourEndDate","_addInterval","stopAction","added","current","satrt","interval","getSeconds","getMilliseconds","durationLeft","_getClosestWorkTime","inputDate","_getClosestWorkTimePast","_getClosestWorkTimeFuture","closestFuture","closestPast","_getClosestWorkTimeGeneric","increment","unitOrder","biggerTimeUnit","CalendarWorktimeStrategy","CalendarManager","_calendars","_getDayHoursForMultiple","calendars","tick","currPos","reduce","acc","mergeCalendars","newCalendar","_convertWorktimeSettings","parentCalendar","defaults","fulltime","apiCore","createDefaultCalendars","_getOwnCalendar","calendar_property","resource_calendars","resource","calendarId","inherit_calendar","stop","eachParent","worktimes","restoreConfigCalendars","global","worktimeFacadeFactory","facade","load","url","_load_url","cl","_load_type","ajax","on_load","xmlDoc","responseText","resp","_process_loading","collections","_load_collections","linksStore","initial_scroll","firstTask","collections_loaded","option","option_key","$ignore","json","dhx_security","security_key","serializeTask","_copyObject","serializeLink","_copyLink","xml_format","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","nodeValue","_getCollections","loader","xpath","itms","attrs","_getXML","toptag","getXMLTopNode","xmltop","skey","evs","oldxml","startdate","est","enddate","predecessortasks","editable_property","readonly_property","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","dateString","aria-label","_taskCommonAttr","tooltip_text","$dataprocessor_class","isSelectedTask","drag_move","taskRowAttr","order_branch","$level","hasChild","linkAttr","linkTypes","toStart","fromStart","drag_link","gridSeparatorAttr","buttonName","role","tabindex","headerText","time_option","aria-valuemin","multiselect","gridCellAttrString","textValue","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","wai_aria_attributes","getGridColumn","callIfEnabled","auto_types","updateParents","childId","batchUpdate","checkParent","targetType","getTaskTypeToUpdate","updateTaskType","setTaskType","delTaskParent","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","sid","placeholder_task","insertPlaceholder","placeholders","getTaskBy","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","action","commands","command","entity","createResourceMethods","resourceTaskCache","propertyName","propertyValue","filterResourceTasks","getResourceTasks","resourceIds","cacheKey","resourceHash","resourceValue","resource_id","getResourceLoad","resourceProperty","$role","timegrid","currDate","timetable","resource_render_empty_cells","calculateResourceLoad","renderBar","level","renderConnection","prevLevel","nextLevel","selectAssignments","resourceId","resource_property","owners","renderLine","resource_cell_class","resource_cell_value","row","renderHistogram","capacityMatrix","maxCapacity","capacity","histogram_cell_class","histogram_cell_label","fill","histogram_cell_allocated","histogram_cell_capacity","capacityElement","colStart","colEnd","bar","connection","renderHistogramLine","filterTasks","getResourceAssignments","assignments","resourceRow","resourceHistogram","resource_store","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","that","vs","av","grid","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","fn","dhx_gantt","each","newgantt","Gantt","getGanttInstance","wbs","_needRecalc","_isRecalcNeeded","_isGroupSort","_groups","is_active","_getWBSCode","_calcWBS","$virtual","$wbs","_setWBSCode","getWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","resetCache","getTaskByWBSCode","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","batch_update","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","scrollRange","scrollStep","scrollDelay","scrollSpeed","isMove","delayTimeout","startPos","started","eventPos","isScrollState","dragMarker","isResize","isLink","defineDelayTimeout","speed","autoscroll_speed","setInterval","autoscroll_delay","defineScrollInterval","clearInterval","autoscrollInterval","isScroll","autoscroll","posY","need_scroll","scrollState","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","startCoord","default","dp","getUserData","userdata","setUserData","_change_id","_ganttMode","changeLinkId","changeTaskId","_row_style","rowId","_delete_task","_sendTaskOrder","$drop_target","setDp","DataProcessorEvents","$dp","_dataProcessorHandlers","treeHelper","cascadeDelete","clientSideDelete","updated","updatedRows","clientOnly","_in_progress","cascade_delete","dpMode","cascade","sendAllData","_tSend","_waitMode","itemLinks","_links","getTaskLinks","updateLink","_tMode","_serverProcessor","substring","serverProcessor","pluralizedMode","urlSeparator","upd","isExist","addLink","objData","xml_date","deleteLink","data_processor_events_1","extend_gantt_1","createDataProcessor","router","tMode","DataProcessor","setTransactionMode","serverProcessorURL","action_param","autoUpdate","_headers","_payload","_postDelim","_invalid","mandatoryFields","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","headers","_endnm","_serializeAsJson","_router","escape","_utf","encodeURIComponent","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","dnd","findRow","existing","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","mytype","_h2","editStop","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","pref","serialized","_applyPayload","dataToSend","queryParams","ids","afterUpdate","urlParams","_user","method","query","taskState_1","taskAction","ganttMode","getGanttMode","_onResolvedCreateUpdate","tid","afterUpdateCallback","actionPromise","update","then","_forEachUpdatedRow","valid","_getAllData","stop_1","hasOne","setVerificator","verifFunction","clearVerificator","pattern","defineAction","_uActions","btag","correct","originalSid","_xml","reqUrl","filePath","finalizeUpdate","cleanUpdate","atag","anObj","_initialized","_dp_init","_setDefaultTransactionMode","dataProcessorEvents","setOnAfterUpdate","enableDebug","setOnBeforeUpdateHandler","setAutoUpdate","user","_needUpdate","_updateBusy","afterAutoUpdate","fullSync","loadUpdate","xml_node","getUpdates","_v","_a","vers","upds","status_1","parent_1","modes","newState","_isFetchResult","ReadableStream","setSerializeAsJSON","flag","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","getLayers","render_item","renderers","render_items","skipRepaint","change_id","refreshId","selectedId","deleteItem","subItem","TreeDataStore","_branches","$parentProperty","parentProperty","$getRootId","$openInitially","openInitially","_buildTree","_add_branch","calculateItemLevel","_move_branch","$rendered_parent","_replace_branch_child","_traverseBranches","branch","items","source_pid","tbranch","getSiblings","siblings","_setParentInner","new_pid","startItem","parentsHash","added_already","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","temp","getLinkCount","getTaskCount","getVisibleTaskCount","getTaskIndex","startTask","calculateTaskLevel","moveTask","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","createDatastore","$StoreType","open_tree_initially","dropService","setService","storeList","stores","refresh_links","linkId","_clear_data","unselectTask","facadeFactory","parseDate","checkLinkedTaskVisibility","sync_link","sourceTask","targetTask","sync_link_delete","sync_links","mapEvents","conf","mapFrom","mapTo","sourceEvent","targetEvent","$index","oldState","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","getTimeline","getGrid","getVerticalScrollbar","getHorizontalScrollbar","DEFAULT_VALUE","tryCall","fallback","getTaskTop","getTaskPosition","getTaskHeight","roundTaskDates","getLinkNode","oldH","oldV","newV","newH","date_x","scroll_to","_scroll_state","x_pos","y_pos","x_inner","y_inner","scrollVer","scrollHor","horState","visible","verState","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","resizers","gridResizer","onCreated","mainTimeline","show_chart","showGrid","show_grid","colsWidth","grid_limits","original_grid_width","skinSettings","_initScrollStateEvents","_getVerticalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","getDndState","DnD","sensitivity","updates_per_second","getLinePos","shift","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","sqrt","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","updateMarkedHtml","drag_link_class","resetDndState","coordinateCircleQuarter","sX","eX","sY","eY","_dir_start","dd","getPosition","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","_dir_end","targetChanged","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","pow","tan","angle","atan","PI","sin","cos","ieTransform","shiftLeft","shiftTop","showDirectingLine","createLinkDND","createTaskDND","round_task_dates","dragMultiple","_events","before_start","before_finish","after_finish","_handlers","_domEvents","clear_drag_state","set_actions","drag_from_start","stage","_move","_resize","_resize_progress","start_x","start_y","coords_x","_drag_task_coords","min_duration","diffValue","_find_max_shift","dragItems","correctShift","minX","maxX","maxShift","minShift","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","isFinite","_update_on_move","_update_item_on_move","curr_date","getTime","drag_project","initialDrag","childDrag","_get_drag_mode","_fix_dnd_scale_time","fixStart","fixEnd","_fix_working_times","_finalize_mouse_up","_fireEvent","_dhx_changed","dragProperty","params","trigger","drag_state","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","link_description","coll","coll_date","scale_step","unregisterProvider","gridToPageCoordinates","gridPos","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","highlightRow","dropTarget","relTargetPos","eventTop","findClosesTarget","allowedLevel","targetLevel","findTargetAbove","findTargetBelow","rootLevel","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","targetY","over","nextId","prevId","rowDnd","rowDndMarker","extendGantt","ext","inlineEditors","_inlineEditors","createEditors","initEvents","clearEvents","scroll_on_click","sorting_method","callHandler","totalWidth","aria","date_grid","tree","grid_indent","grid_open","grid_folder","grid_blank","grid_file","align","grid_row_class","css_template","drawer","current_pos","dirs","down","path","point","get_lines","dots","line_to","get_path","line","_get_line","get_wrapper_sizes","wrapper_size","link_wrapper_width","get_line_sizes","line_size","marginTop","marginLeft","render_line","innerPos","get_direction","vect","path_builder","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","line_width","_render_link_arrow","borderColor","show_task_cells","task_cell_class","odd","task_row_class","defaultRender","sub_tasks","PredecessorEditor","parseInputString","predecessors","delimiter","formatPredecessors","pred","getLinksDiff","predecessorCodes","selectedLinks","predecessor","lag","getSelectedLinks","existingLinksSearch","linksToAdd","linkKey","linksToDelete","remove","editor","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","parsed","SelectEditor","optionsHtml","NumberEditor","TextEditor","controller","onBlurDelay","keyNav","keyboardNavigation","activeCell","locateCell","columnName","editorState","getEditorConfig","startEdit","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","editorType","DELETE","TAB","editPrevCell","editNextCell","modifiers","anyModifier","alt","ctrl","meta","getCommandHandler","onShow","onHide","isChanged","keyboard_navigation","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","initConfigs","editor_types","number","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","_itemId","_columnName","_editor","_editorType","_placeholder","editorConfig","_getItemValue","newValue","oldValue","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","nextItem","editNextRow","editPrevRow","handlerId","ScrollbarCell","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_getLinkedViews","scrollX","_updateLinkedViews","scrollHorizontally","_scrolling","scrollVertically","_wheel_time","_oldLeft","_getScrollSize","outerSize","isHorizontal","linked","scrollProperty","innerSizeProperty","outerProperty","_getScrollOffset","cellScrollSize","nonScrollableSize","outerScroll","innerScroll","scrollSizes","_setScrollSize","toggleVisibility","_getScaleOffset","parentLayout","_oldTop","_checkWheelTarget","targetNode","connectedViews","ff","wx","deltaX","wheelDeltaX","wy","deltaY","wheelDelta","oldLeft","detail","oldTop","ViewCell","childConfig","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","task_area_pulls","task_area_renderers","getRenderer","layer_attribute","dom","remove_item","clear_container","buffer","createDocumentFragment","vis","replace_item","newNode","restore","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","get_container","rel_root","defaultFilters","renderGroup","tempCollection","filters","_add","pending","topmost","rel","eachLayer","createLayerFactory","previusSiblingContainer","defaultContainerSibling","removeTaskLayer","_getLinkLayers","removeLinkLayer","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","onContextMenu","returnValue","delegateHandlers","handlerResult","details_on_dblclick","onMouseMove","_last_move_event","domEvents","eventName","elementHandlers","ViewSettings","extendSettings","parentSettings","own","parentView","parentConfig","parentTemplates","configurable","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","ResourceHistogram","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderTaskBg","renderLink","gridRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","buttonAriaAttrs","getFirstDefined","_createBox","cancel","contentId","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","timers","info","hideAll","popups","modalbox","setImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","clearImmediate","scope","Timeout","clearFn","_id","_clearFn","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","u","_dereq_","1","Promise","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","resolve","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","classString","TypeError","ensureMethod","namedGetter","indexedGetter","isIdentifier","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","matchesPredicate","isObject","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","cancelable","domEvent","Event","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","newStr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","inherits","stackToIndex","currentStack","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","err","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","PromiseAll","all","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","writable","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","descriptor","proto","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","limit","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","_capacity","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","toggleScheduled","div2","o2","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ArrayFrom","itResult","it","hasEnvVariables","chrome","loadTimes","P","stateProviders","provider","regTemplates","initial","template_name","server_utc","api_date","task_unscheduled_time","grid_date_format","tooltip_date_format","copyDomEvent","altKey","_obj","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","original_target","dragStart","traceDragEvents","domElement","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","dndActive","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","getEvent","backup_element","elementFromPoint","month_short_hash","month_full_hash","hour_start","time_part","week_start","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","setMinutes","minute_start","setSeconds","setMilliseconds","_add_days","inc","ndate","setYear","add_quarter","to_fixed","num","format","utc","getISOWeek","getWeek","splt","mask","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","getUTCISOWeek","convert_to_utc","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","createConfig","DOMParser","parseFromString","ActiveXObject","loadXML","tagname","xhr","status","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","isQt","readyState","setRequestHeader","toUpperCase","send","branch_loading","branch_loading_property","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resizer_column_attribute","grid_resizer_attribute","keep_grid_width","grid_resize","prevent_default_scroll","service","$inject","templatesLoader","stateService","uiApi","createLayoutFacade"],"mappings":"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,KAEA,MACA,QACA,OAAAhiH,KAAA,OAAAnH,GAAAgf,EAAAmqG,EAAAnpH,GAEA,OAAAopH,GAGAE,YAAA,SAAAtqG,EAAAmqG,GACA,OAAAhiH,KAAA+a,IAAAlD,EAAA,EAAAmqG,EAAA,UAGAI,SAAA,SAAAC,GACA,OAAAA,EAAA,OAAAA,EACAA,GAEAzoH,KAAA,SAAAie,GACA,WAAA9d,KAAA8d,EAAA1c,YAEA4c,YAAA,SAAAuqG,EAAAC,GACAD,IAAAriH,QAAA,sBAAA5I,GACA,OAAAA,GACA,SACA,qCACA,SACA,0CACA,SACA,2BACA,SACA,gCACA,SACA,6CACA,SACA,+BACA,SACA,iDACA,SACA,gDACA,SACA,qDACA,SACA,oDACA,SACA,gDACA,SACA,wCACA,SACA,4BACA,SACA,sCACA,SACA,wCACA,SACA,2CACA,SACA,2CACA,SACA,wCACA,SACA,uCACA,SACA,oCACA,QACA,OAAAA,KAGAkrH,IAAAD,IAAAriH,QAAA,6BACA,IAAA07E,EAAA,IAAA/0E,SAAA,6DAAA07G,EAAA,MAEA,gBAAAzqG,GACA,OAAA8jE,EAAA9jE,EAAA4X,EAAA2yF,SAAA94G,EAAAolB,OAAAe,EAAA+yF,WAAA/yF,EAAAgzF,WAGA3mC,YAAA,SAAAwmC,EAAAC,GAGA,IAFA,IAAAG,EAAA,4CACAC,EAAAL,EAAAh7E,MAAA,cACAhwC,EAAA,EAAkBA,EAAAqrH,EAAAzoH,OAAiB5C,IACnC,OAAAqrH,EAAArrH,IACA,SACA,SACAorH,GAAA,eAAAprH,EAAA,QACA,MACA,SACA,SACAorH,GAAA,gBAAAprH,EAAA,WACA,MACA,SACAorH,GAAA,eAAAprH,EAAA,aAAAA,EAAA,mBACA,MACA,SACA,SACA,SACA,SACAorH,GAAA,eAAAprH,EAAA,QACA,MACA,SACAorH,GAAA,eAAAprH,EAAA,QACA,MACA,SACAorH,GAAA,eAAAprH,EAAA,QACA,MACA,SACA,SACAorH,GAAA,2BAAAprH,EAAA,oCACA,MACA,SACAorH,GAAA,eAAAprH,EAAA,QACA,MACA,SACAorH,GAAA,4CAAA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","file":"dhtmlxgantt.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/codebase/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 145);\n","var helpers = require(\"./helpers\");\n\nfunction copy(object) {\n\tvar i, result; // iterator, types array, result\n\n\tif (object && typeof object == \"object\") {\n\n\t\tswitch (true){\n\t\t\tcase (helpers.isDate(object)):\n\t\t\t\tresult = new Date(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isArray(object)):\n\t\t\t\tresult = new Array(object.length);\n\t\t\t\tfor(i = 0; i < object.length; i++){\n\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isStringObject(object)):\n\t\t\t\tresult = new String(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isNumberObject(object)):\n\t\t\t\tresult = new Number(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isBooleanObject(object)):\n\t\t\t\tresult = new Boolean(object);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresult = {};\n\t\t\t\tfor (i in object) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\n\t\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn result || object;\n}\n\nfunction mixin (target, source, force){\n\tfor (var f in source)\n\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\n\treturn target;\n}\n\nfunction defined(obj) {\n\treturn typeof(obj) != \"undefined\";\n}\n\nvar seed;\nfunction uid() {\n\tif (!seed)\n\t\tseed = (new Date()).valueOf();\n\n\tseed++;\n\treturn seed;\n}\n\n//creates function with specified \"this\" pointer\nfunction bind(functor, object){\n\tif(functor.bind)\n\t\treturn functor.bind(object);\n\telse\n\t\treturn function(){ return functor.apply(object,arguments); };\n}\n\nfunction event(el, event, handler, capture){\n\tif (el.addEventListener)\n\t\tel.addEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.attachEvent)\n\t\tel.attachEvent(\"on\"+event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture){\n\tif (el.removeEventListener)\n\t\tel.removeEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.detachEvent)\n\t\tel.detachEvent(\"on\"+event, handler);\n}\n\nmodule.exports = {\n\tcopy: copy,\n\tdefined: defined,\n\tmixin: mixin,\n\tuid: uid,\n\tbind: bind,\n\tevent: event,\n\teventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n\tvar top=0, left=0, right=0, bottom=0;\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tvar box = elem.getBoundingClientRect();\n\t\tvar body = document.body;\n\t\tvar docElem = (document.documentElement ||\n\t\t\tdocument.body.parentNode ||\n\t\t\tdocument.body);\n\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\ttop = box.top + scrollTop - clientTop;\n\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\tright = document.body.offsetWidth - box.right;\n\t\tbottom = document.body.offsetHeight - box.bottom;\n\t} else { //fallback to naive approach\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\n\t}\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\n}\n\nfunction isVisible(node){\n\tvar display = false,\n\t\tvisibility = false;\n\tif(window.getComputedStyle){\n\t\tvar style = window.getComputedStyle(node, null);\n\t\tdisplay = style[\"display\"];\n\t\tvisibility = style[\"visibility\"];\n\t}else if(node.currentStyle){\n\t\tdisplay = node.currentStyle[\"display\"];\n\t\tvisibility = node.currentStyle[\"visibility\"];\n\t}\n\treturn (display != \"none\" && visibility != \"hidden\");\n}\n\nfunction hasNonNegativeTabIndex(node){\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\n}\n\nfunction hasHref(node){\n\tvar canHaveHref = {\"a\": true, \"area\": true};\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\n\t\treturn !!node.getAttribute(\"href\");\n\t}\n\treturn true;\n}\n\nfunction isEnabled(node){\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\n\tif(canDisable[node.nodeName.toLowerCase()]){\n\t\treturn !node.hasAttribute(\"disabled\");\n\t}\n\n\treturn true;\n}\n\nfunction getFocusableNodes(root){\n\tvar nodes = root.querySelectorAll([\n\t\t\"a[href]\",\n\t\t\"area[href]\",\n\t\t\"input\",\n\t\t\"select\",\n\t\t\"textarea\",\n\t\t\"button\",\n\t\t\"iframe\",\n\t\t\"object\",\n\t\t\"embed\",\n\t\t\"[tabindex]\",\n\t\t\"[contenteditable]\"\n\t].join(\", \"));\n\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\n\tfor(var i = 0; i < nodesArray.length; i++){\n\t\tvar node = nodesArray[i];\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\t\tif(!isValid){\n\t\t\tnodesArray.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\treturn nodesArray;\n}\n\nfunction getScrollSize(){\n\tvar div = document.createElement(\"div\");\n\tdiv.style.cssText=\"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n\n\tdocument.body.appendChild(div);\n\tvar width = div.offsetWidth-div.clientWidth;\n\tdocument.body.removeChild(div);\n\n\treturn width;\n}\n\nfunction getClassName(node){\n\tif(!node) return \"\";\n\n\tvar className = node.className || \"\";\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\n\t\tclassName = className.baseVal;\n\n\tif(!className.indexOf)\n\t\tclassName = \"\";\n\n\treturn _trimString(className);\n}\n\nfunction addClassName(node, className){\n\tif (className && node.className.indexOf(className) === -1) {\n\t\tnode.className += \" \" + className;\n\t}\n}\n\nfunction removeClassName(node, name) {\n\tname = name.split(\" \");\n\tfor (var i = 0; i < name.length; i++) {\n\t\tvar regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\n\t\tnode.className = node.className.replace(regEx, \"\");\n\t}\n}\n\nfunction hasClass(element, className){\n\tif ('classList' in element) {\n\t\treturn element.classList.contains(className);\n\t} else { \n\t\treturn new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\n\t}\n}\n\nfunction toNode(node) {\n\tif (typeof node === \"string\") {\n\t\treturn (document.getElementById(node) || document.querySelector(node) || document.body);\n\t}\n\treturn node || document.body;\n}\n\nvar _slave = document.createElement(\"div\");\nfunction insert(node, newone) {\n\t_slave.innerHTML = newone;\n\tvar child = _slave.firstChild;\n\tnode.appendChild(child);\n\treturn child;\n}\n\nfunction remove(node) {\n\tif (node && node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\nfunction getChildren(node, css) {\n\tvar ch = node.childNodes;\n\tvar len = ch.length;\n\tvar out = [];\n\tfor (var i = 0; i < len; i++) {\n\t\tvar obj = ch[i];\n\t\tif (obj.className && obj.className.indexOf(css) !== -1) {\n\t\t\tout.push(obj);\n\t\t}\n\t}\n\treturn out;\n}\n\nfunction getTargetNode(e){\n\tvar trg;\n\tif (e.tagName)\n\t\ttrg = e;\n\telse {\n\t\te=e||window.event;\n\t\ttrg=e.target||e.srcElement;\n\t}\n\treturn trg;\n}\n\nfunction locateAttribute(e, attribute) {\n\tif(!attribute) return;\n\n\tvar trg = getTargetNode(e);\n\n\twhile (trg){\n\t\tif (trg.getAttribute){\t//text nodes has not getAttribute\n\t\t\tvar test = trg.getAttribute(attribute);\n\t\t\tif (test) return trg;\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\nfunction _trimString(str){\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\n\treturn func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict){\n\tvar trg = getTargetNode(e);\n\tvar css = \"\";\n\n\tif(strict === undefined)\n\t\tstrict = true;\n\n\twhile (trg){\n\t\tcss = getClassName(trg);\n\t\tif(css){\n\t\t\tvar ind = css.indexOf(classname);\n\t\t\tif (ind >= 0){\n\t\t\t\tif (!strict)\n\t\t\t\t\treturn trg;\n\n\t\t\t\t//check that we have exact match\n\t\t\t\tvar left = (ind === 0) || (!_trimString(css.charAt(ind - 1)));\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!_trimString(css.charAt(ind + classname.length)));\n\n\t\t\t\tif (left && right)\n\t\t\t\t\treturn trg;\n\t\t\t}\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\n/*\nevent position relatively to DOM element\n */\nfunction getRelativeEventPosition(ev, node){\n\tvar d = document.documentElement;\n\tvar box = elementPosition(node);\n\n\treturn {\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n\t};\n}\n\nfunction isChildOf(child, parent){\n\tif(!child || !parent){\n\t\treturn false;\n\t}\n\n\twhile(child && child != parent) {\n\t\tchild = child.parentNode;\n\t}\n\n\treturn child === parent;\n}\n\nfunction closest(element, selector){\n\tif(element.closest){\n\t\treturn element.closest(selector);\n\t}else if(element.matches || element.msMatchesSelector || element.webkitMatchesSelector){\n\t\tvar el = element;\n\t\tif (!document.documentElement.contains(el)) return null;\n\t\tdo {\n\t\t\tvar method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\n\n\t\t\tif (method.call(el, selector)) return el;\n\t\t\tel = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1); \n\t\treturn null;\n\t}else{\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\"Your browser is not supported\");\n\t\treturn null;\n\t}\n}\n\nmodule.exports = {\n\tgetNodePosition: elementPosition,\n\tgetFocusableNodes: getFocusableNodes,\n\tgetScrollSize: getScrollSize,\n\tgetClassName: getClassName,\n\taddClassName: addClassName,\n\tremoveClassName: removeClassName,\n\tinsertNode: insert,\n\tremoveNode: remove,\n\tgetChildNodes: getChildren,\n\ttoNode: toNode,\n\tlocateClassName:locateClassName,\n\tlocateAttribute: locateAttribute,\n\tgetTargetNode: getTargetNode,\n\tgetRelativeEventPosition: getRelativeEventPosition,\n\tisChildOf: isChildOf,\n\thasClass: hasClass,\n\tclosest: closest\n};","module.exports = function (d, b) {\n\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\tfunction __() { this.constructor = d; }\n\td.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};","var units = {\n\t\"second\": 1,\n\t\"minute\": 60,\n\t\"hour\": 60 * 60,\n\t\"day\": 60 * 60 * 24,\n\t\"week\": 60 * 60 * 24 * 7,\n\t\"month\": 60 * 60 * 24 * 30,\n\t\"quarter\": 60 * 60 * 24 * 30 * 3,\n\t\"year\": 60 * 60 * 24 * 365\n};\nfunction getSecondsInUnit(unit){\n\treturn units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback) {\n\tif (arr.forEach) {\n\t\tarr.forEach(callback);\n\t} else {\n\t\tvar workArray = arr.slice();\n\t\tfor (var i = 0; i < workArray.length; i++) {\n\t\t\tcallback(workArray[i], i);\n\t\t}\n\t}\n}\n\nfunction arrayMap(arr, callback) {\n\tif (arr.map) {\n\t\treturn arr.map(callback);\n\t} else {\n\t\tvar workArray = arr.slice();\n\t\tvar resArray = [];\n\n\t\tfor (var i = 0; i < workArray.length; i++) {\n\t\t\tresArray.push(callback(workArray[i], i));\n\t\t}\n\t\treturn resArray;\n\t}\n}\n\n\nfunction arrayFind(arr, callback) {\n\tif (arr.find) {\n\t\treturn arr.find(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\treturn arr[i];\n\t\t\t}\n\t\t}\n\t}\n}\n\n// iframe-safe array type check instead of using instanceof\nfunction isArray(obj){\n\tif(Array.isArray){\n\t\treturn Array.isArray(obj);\n\t}else{\n\t\t// close enough\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\n\t}\n}\n\n// non-primitive string object, e.g. new String(\"abc\")\nfunction isStringObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Number(5)\nfunction isNumberObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Boolean(true)\nfunction isBooleanObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n\tif (obj && typeof obj === \"object\") {\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\n\t} else {\n\t\treturn false;\n\t}\n}\n\nfunction arrayFilter(arr, callback) {\n\tvar result = [];\n\n\tif (arr.filter) {\n\t\treturn arr.filter(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\tresult[result.length] = arr[i];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nfunction hashToArray(hash) {\n\tvar result = [];\n\n\tfor (var key in hash) {\n\t\tif (hash.hasOwnProperty(key)) {\n\t\t\tresult.push(hash[key]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction arraySome(arr, callback) {\n\tif (arr.length === 0) return false;\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (callback(arr[i], i, arr)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction arrayDifference(arr, callback) {\n\treturn arrayFilter(arr, function(item, i) {\n\t\treturn !callback(item, i);\n\t});\n}\n\nfunction throttle (callback, timeout) {\n\tvar wait = false;\n\n\treturn function () {\n\t\tif (!wait) {\n\t\t\tcallback.apply(null, arguments);\n\t\t\twait = true;\n\t\t\tsetTimeout(function () {\n\t\t\t\twait = false;\n\t\t\t}, timeout);\n\t\t}\n\t};\n}\n\nfunction delay (callback, timeout){\n\tvar timer;\n\n\tvar result = function() {\n\t\tresult.$cancelTimeout();\n\t\tcallback.$pending = true;\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\ttimer = setTimeout(function(){\n\t\t\tcallback.apply(this, args);\n\t\t\tresult.$pending = false;\n\t\t}, timeout);\n\t};\n\t\n\tresult.$pending = false;\n\tresult.$cancelTimeout = function(){\n\t\tclearTimeout(timer);\n\t\tcallback.$pending = false;\n\t};\n\tresult.$execute = function(){\n\t\tcallback();\n\t\tcallback.$cancelTimeout();\n\t};\n\n\treturn result;\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n\tvar compare = function(a, b) {\n\t\treturn a < b;\n\t};\n\n\tarr.sort(function(a, b) {\n\t\tif (a[field] === b[field]) return 0;\n\n\t\treturn desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n\t});\n}\n\nfunction objectKeys(obj) {\n\tif (Object.keys) {\n\t\treturn Object.keys(obj);\n\t}\n\tvar result = [];\n\tvar key;\n\tfor (key in obj) {\n\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\tresult.push(key);\n\t\t}\n\t}\n\treturn result;\n}\n\nmodule.exports = {\n\tgetSecondsInUnit: getSecondsInUnit,\n\tforEach: forEach,\n\tarrayMap: arrayMap,\n\tarrayFind: arrayFind,\n\tarrayFilter: arrayFilter,\n\tarrayDifference: arrayDifference,\n\tarraySome: arraySome,\n\thashToArray: hashToArray,\n\tsortArrayOfHash: sortArrayOfHash,\n\tthrottle: throttle,\n\tisArray: isArray,\n\tisDate: isDate,\n\tisStringObject: isStringObject,\n\tisNumberObject: isNumberObject,\n\tisBooleanObject: isBooleanObject,\n\tdelay: delay,\n\tobjectKeys: objectKeys\n};","var EventHost = function(){\n\tthis._connected = [];\n\tthis._silent_mode = false;\n};\n\nEventHost.prototype = {\n\t_silentStart: function() {\n\t\tthis._silent_mode = true;\n\t},\n\t_silentEnd: function() {\n\t\tthis._silent_mode = false;\n\t}\n};\n\nvar\tcreateEventStorage = function(obj) {\n\tvar dhx_catch = [];\n\tvar z = function(){\n\t\tvar res = true;\n\t\tfor (var i = 0; i < dhx_catch.length; i++){\n\t\t\tif (dhx_catch[i]){\n\t\t\t\tvar zr = dhx_catch[i].apply(obj, arguments);\n\t\t\t\tres=res&&zr;\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\tz.addEvent=function(ev){\n\t\tif (typeof (ev) == \"function\")\n\t\t\treturn dhx_catch.push(ev)-1;\n\t\treturn false;\n\t};\n\tz.removeEvent=function(id){\n\t\tdhx_catch[id]=null;\n\t};\n\treturn z;\n};\n\nfunction makeEventable(obj){\n\n\tvar eventHost = new EventHost();\n\tobj.attachEvent=function(name, catcher, callObj){\n\t\tname='ev_'+name.toLowerCase();\n\t\tif (!eventHost[name])\n\t\t\teventHost[name] = createEventStorage(callObj||this);\n\n\t\treturn(name+':'+eventHost[name].addEvent(catcher)); //return ID (event name & event ID)\n\t};\n\tobj.attachAll = function(callback, callObj){\n\t\tthis.attachEvent('listen_all', callback, callObj);\n\t};\n\n\tobj.callEvent=function(name, arg0, callObj){\n\t\tif (eventHost._silent_mode) return true;\n\n\t\tvar handlerName = 'ev_'+name.toLowerCase();\n\n\t\tif (eventHost['ev_listen_all']){\n\t\t\teventHost['ev_listen_all'].apply(callObj || this, [name].concat(arg0));\n\t\t}\n\n\t\tif (eventHost[handlerName])\n\t\t\treturn eventHost[handlerName].apply(callObj || this, arg0);\n\t\treturn true;\n\t};\n\tobj.checkEvent=function(name){\n\t\treturn (!!eventHost['ev_'+name.toLowerCase()]);\n\t};\n\tobj.detachEvent=function(id){\n\t\tif (id){\n\t\t\tvar list = id.split(':'); //get EventName and ID\n\t\t\teventHost[list[0]].removeEvent(list[1]); //remove event\n\t\t}\n\t};\n\tobj.detachAllEvents = function(){\n\t\tfor (var name in eventHost){\n\t\t\tif (name.indexOf(\"ev_\") === 0)\n\t\t\t\tdelete eventHost[name];\n\t\t}\n\t};\n\n}\n\nmodule.exports = makeEventable;","function dummy() {\n\t// eslint-disable-next-line\n\tconsole.log(\"Method is not implemented.\"); \n}\nfunction BaseControl() {\n}\n\n// base methods will be runned in gantt context\nBaseControl.prototype.render = dummy; // arguments: sns\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function(gantt) { // we could send current instance of gantt to module\n\treturn BaseControl;\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = function () {\n\t};\n\n\tBaseEditor.prototype = {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = value;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar currentValue = this.get_value(id, column, node);\n\t\t\tif (currentValue && value && currentValue.valueOf && value.valueOf) {\n\t\t\t\treturn currentValue.valueOf() != value.valueOf();\n\t\t\t} else {\n\t\t\t\treturn currentValue != value;\n\t\t\t}\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn true;\n\t\t},\n\n\t\tsave: function (id, column, node) {\n\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"input\");\n\t\t},\n\t\tfocus: function (node) {\n\t\t\tvar input = this.get_input(node);\n\t\t\tif (!input) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (input.focus) {\n\t\t\t\tinput.focus();\n\t\t\t}\n\n\t\t\tif (input.select) {\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t};\n\treturn BaseEditor;\n};","var utils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar Cell = (function () {\n\t\"use strict\";\n\n\tfunction Cell(parent, config, factory, gantt) {\n\t\tif (parent) {\n\t\t\tthis.$container = domHelpers.toNode(parent);\n\t\t\tthis.$parent = parent;\n\t\t}\n\t\t// save config\n\t\tthis.$config = utils.mixin(config, {\n\t\t\theaderHeight: 33\n\t\t});\n\t\tthis.$gantt = gantt;\n\t\tthis.$domEvents = gantt._createDomEventScope();\n\t\t// set id\n\t\tthis.$id = config.id || \"c\" + utils.uid();\n\n\t\tthis.$name = \"cell\";\n\t\tthis.$factory = factory;\n\n\t\teventable(this);\n\n\t}\n\n\tCell.prototype.destructor = function () {\n\t\tthis.$parent = this.$container = this.$view = null;\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\t\tthis.$domEvents.detachAll();\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t};\n\tCell.prototype.cell = function (id) {\n\t\treturn null;\n\t};\n\n\tCell.prototype.scrollTo = function(left, top){\n\n\t\tif (left*1 == left){\n\t\t\tthis.$view.scrollLeft = left;\n\t\t}\n\t\tif(top*1 == top){\n\t\t\tthis.$view.scrollTop = top;\n\t\t}\n\t};\n\n\tCell.prototype.clear = function(){\n\t\tthis.getNode().innerHTML = \"\";\n\t\tthis.getNode().className = \"gantt_layout_content\";\n\t\tthis.getNode().style.padding = \"0\";\n\t};\n\n\tCell.prototype.resize = function (final) {\n\t\tif (this.$parent) {\n\t\t\treturn this.$parent.resize(final);\n\t\t}\n\n\t\tif(final === false){\n\t\t\tthis.$preResize = true;\n\t\t}\n\n\t\tvar topCont = this.$container;\n\t\tvar x = topCont.offsetWidth;\n\t\tvar y = topCont.offsetHeight;\n\t\tvar topSize = this.getSize();\n\t\tif (topCont === document.body) {\n\t\t\tx = document.body.offsetWidth;\n\t\t\ty = document.body.offsetHeight;\n\t\t}\n\t\tif (x < topSize.minWidth) {\n\t\t\tx = topSize.minWidth;\n\t\t}\n\t\tif (x > topSize.maxWidth) {\n\t\t\tx = topSize.maxWidth;\n\t\t}\n\t\tif (y < topSize.minHeight) {\n\t\t\ty = topSize.minHeight;\n\t\t}\n\t\tif (y > topSize.maxHeight) {\n\t\t\ty = topSize.maxHeight;\n\t\t}\n\t\tthis.setSize(x, y);\n\n\t\tif(!this.$preResize){\n\t\t//\tself.callEvent(\"onResize\", [x, y]);\n\t\t}\n\t\tthis.$preResize = false;\n\t};\n\n\tCell.prototype.hide = function () {\n\t\tthis._hide(true);\n\t\tthis.resize();\n\t};\n\tCell.prototype.show = function (force) {\n\t\tthis._hide(false);\n\t\tif (force && this.$parent) {\n\t\t\tthis.$parent.show();\n\t\t}\n\t\tthis.resize();\n\t};\n\tCell.prototype._hide = function (mode) {\n\t\tif (mode === true && this.$view.parentNode) {\n\t\t\tthis.$view.parentNode.removeChild(this.$view);\n\t\t}\n\t\telse if (mode === false && !this.$view.parentNode) {\n\t\t\tvar index = this.$parent.cellIndex(this.$id);\n\t\t\tthis.$parent.moveView(this, index);\n\t\t}\n\t\tthis.$config.hidden = mode;\n\t};\n\tCell.prototype.$toHTML = function (content, css) {\n\t\tif (content === void 0) { content = \"\"; }\n\t\tcss = [(css || \"\"), (this.$config.css || \"\")].join(\" \");\n\t\tvar obj = this.$config;\n\t\tvar header = \"\";\n\t\tif (obj.raw) {\n\t\t\tcontent = typeof obj.raw === \"string\" ? obj.raw : \"\";\n\t\t}\n\t\telse {\n\t\t\tif (!content) {\n\t\t\t\tcontent = \"
\" + (obj.html || \"\") + \"
\";\n\t\t\t}\n\t\t\tif (obj.header) {\n\t\t\t\tvar collapseIcon = obj.canCollapse ? \"
\" : \"\";\n\t\t\t\theader = \"
\" + collapseIcon + \"
\" + obj.header + \"
\";\n\t\t\t}\n\t\t}\n\t\treturn \"
\" + header + content + \"
\";\n\t};\n\tCell.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tthis.init();\n\t};\n\tCell.prototype.getNode = function () {\n\t\treturn (this.$view.querySelector(\"gantt_layout_cell\") || this.$view);\n\t};\n\tCell.prototype.init = function () {\n\t\t// [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n\n\t\tvar self = this;\n\n\t\tthis._headerClickHandler = function(e){\n\t\t\tvar cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\t\t\tif(cellId == self.$id){\n\t\t\t\tself.toggle();\n\t\t\t}\n\t\t};\n\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\n\t\tthis.callEvent(\"onReady\", []);\n\t};\n\tCell.prototype.toggle = function () {\n\t\tthis.$config.collapsed = !this.$config.collapsed;\n\t\tthis.resize();\n\t};\n\tCell.prototype.getSize = function () {\n\t\tvar size = {\n\t\t\theight: this.$config.height || 0,\n\t\t\twidth: this.$config.width || 0,\n\t\t\tgravity: this.$config.gravity || 1,\n\t\t\tminHeight: this.$config.minHeight || 0,\n\t\t\tminWidth: this.$config.minWidth || 0,\n\t\t\tmaxHeight: this.$config.maxHeight || 100000,\n\t\t\tmaxWidth: this.$config.maxWidth || 100000\n\t\t};\n\t\tif (this.$config.collapsed) {\n\t\t\tvar mode = this.$config.mode === \"x\";\n\t\t\tsize[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n\t\t}\n\t\treturn size;\n\t};\n\n\tCell.prototype.getContentSize = function(){\n\n\t\tvar width = this.$lastSize.contentX;\n\t\tif(width !== width*1){\n\t\t\twidth = this.$lastSize.width;\n\t\t}\n\n\t\tvar height = this.$lastSize.contentY;\n\t\tif(height !== height*1){\n\t\t\theight = this.$lastSize.height;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t};\n\n\tCell.prototype._getBorderSizes = function(){\n\t\tvar borders = {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\thorizontal: 0,\n\t\t\tvertical: 0\n\t\t};\n\t\tif(this._currentBorders){\n\t\t\tif(this._currentBorders[this._borders.left]){\n\t\t\t\tborders.left = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.right]){\n\t\t\t\tborders.right = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.top]){\n\t\t\t\tborders.top = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.bottom]){\n\t\t\t\tborders.bottom = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\t\t}\n\n\t\treturn borders;\n\n\t};\n\n\tCell.prototype.setSize = function (x, y) {\n\t\tthis.$view.style.width = x + \"px\";\n\t\tthis.$view.style.height = y + \"px\";\n\n\t\tvar borders = this._getBorderSizes();\n\t\tvar contentY = y - borders.vertical;\n\t\tvar contentX = x - borders.horizontal;\n\n\t\tthis.$lastSize = { x: x, y: y, contentX: contentX, contentY: contentY };\n\t\tif (this.$config.header) {\n\t\t\tthis._sizeHeader();\n\t\t}else{\n\t\t\tthis._sizeContent();\n\t\t}\n\t};\n\n\tCell.prototype._borders = {\n\t\t\"left\":\"gantt_layout_cell_border_left\",\n\t\t\"right\":\"gantt_layout_cell_border_right\",\n\t\t\"top\":\"gantt_layout_cell_border_top\",\n\t\t\"bottom\":\"gantt_layout_cell_border_bottom\"\n\t};\n\n\tCell.prototype._setBorders = function(css, view){\n\t\tif(!view) {\n\t\t\tview = this;\n\t\t}\n\t\tvar node = view.$view;\n\n\t\tfor( var i in this._borders){\n\t\t\tdomHelpers.removeClassName(node, this._borders[i]);\n\t\t}\n\n\t\tif(typeof css == \"string\"){\n\t\t\tcss = [css];\n\t\t}\n\n\t\tvar cssHash = {};\n\n\t\tfor(var i = 0; i < css.length; i++){\n\t\t\tdomHelpers.addClassName(node, css[i]);\n\t\t\tcssHash[css[i]] = true;\n\t\t}\n\n\t\tview._currentBorders = cssHash;\n\t};\n\n\n\tCell.prototype._sizeContent = function(){\n\t\tvar content = this.$view.childNodes[0];\n\t\tif(content && content.className == \"gantt_layout_content\"){\n\t\t\tcontent.style.height = this.$lastSize.contentY + \"px\";\n\t\t}\n\t};\n\n\tCell.prototype._sizeHeader = function () {\n\t\tvar size = this.$lastSize;\n\t\tsize.contentY -= this.$config.headerHeight;\n\t\tvar header = this.$view.childNodes[0];\n\t\tvar content = this.$view.childNodes[1];\n\t\tvar xLayout = this.$config.mode === \"x\";\n\t\tif (this.$config.collapsed) {\n\t\t\tcontent.style.display = \"none\";\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_x\";\n\t\t\t\theader.style.width = size.y + \"px\";\n\t\t\t\tvar d = Math.floor(size.y / 2 - size.x / 2);\n\t\t\t\theader.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n\t\t\t\tcontent.style.display = \"none\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_y\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header vertical\";\n\t\t\t}\n\t\t\theader.style.width = 'auto';\n\t\t\theader.style.transform = '';\n\t\t\tcontent.style.display = \"\";\n\t\t\tcontent.style.height = size.contentY + \"px\";\n\t\t}\n\t\theader.style.height = this.$config.headerHeight + \"px\";\n\t};\n\treturn Cell;\n}());\n\nmodule.exports = Cell;\n","var __extends = require(\"../../../utils/extends\");\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction SelectControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\n\t\treturn self; \n\t}\n\t\n\t__extends(SelectControl, _super);\n\t\n\tSelectControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\n\t\thtml += htmlHelpers.getHtmlSelect(sns.options, [{ key: \"style\", value: \"width:100%;\" }]);\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tSelectControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar select = node.firstChild;\n\t\tif (!select._dhx_onchange && sns.onchange) {\n\t\t\tselect.onchange = sns.onchange;\n\t\t\tselect._dhx_onchange = true;\n\t\t}\n\t\tif (typeof value === \"undefined\")\n\t\t\tvalue = (select.options[0] || {}).value;\n\t\tselect.value = value || \"\";\n\t};\n\t\n\tSelectControl.prototype.get_value = function(node) {\n\t\treturn node.firstChild.value;\n\t};\n\t\n\tSelectControl.prototype.focus = function(node) {\n\t\tvar a = node.firstChild;\n\t\tgantt._focus(a, true);\n\t};\n\t\n\treturn SelectControl;\n};","/**\n * The state object for order branch drag and drop\n */\n\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n\tcreateDropTargetObject: function createDropTargetObject(parent) {\n\t\tvar res = {\n\t\t\ttargetParent: null,\n\t\t\ttargetIndex: 0,\n\t\t\ttargetId: null,\n\t\t\tchild: false,\n\t\t\tnextSibling: false,\n\t\t\tprevSibling: false\n\t\t};\n\n\t\tif (parent) {\n\t\t\tutils.mixin(res, parent, true);\n\t\t}\n\t\treturn res;\n\t},\n\tnextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.nextSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\n\t\tif(store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)){\n\t\t\tresult.targetIndex += 1;\n\t\t}\n\t\treturn result;\n\t},\n\tprevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.prevSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\n\t\tif(store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)){\n\t\t\tresult.targetIndex -= 1;\n\t\t}\n\t\treturn result;\n\t},\n\tfirstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.targetParent = result.targetId;\n\t\tresult.targetIndex = 0;\n\t\tresult.child = true;\n\t\treturn result;\n\t},\n\tlastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\n\t\tvar children = store.getChildren(targetTaskId);\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = children[children.length - 1];\n\t\tresult.targetParent = targetTaskId;\n\t\tresult.targetIndex = children.length;\n\t\tresult.nextSibling = true;\n\t\treturn result;\n\t}\n};","function create(gantt){\n\tvar events = [];\n\n\treturn {\n\t\tdelegate:function(event, className, handler, root) {\n\t\t\tevents.push([event, className, handler, root]);\n\n\t\t\tvar helper = gantt.$services.getService(\"mouseEvents\");\n\t\t\thelper.delegate(event, className, handler, root);\n\t\t},\n\t\tdestructor: function(){\n\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\tfor(var i = 0; i < events.length; i++){\n\t\t\t\tvar h = events[i];\n\t\t\t\tmouseEvents.detach(h[0], h[1], h[2], h[3]);\n\t\t\t}\n\t\t\tevents = [];\n\t\t}\n\t};\n}\n\nmodule.exports = create;","var ScaleHelper = require(\"./scales_ignore\");\nvar eventable = require(\"../../../utils/eventable\");\nvar utils = require(\"../../../utils/utils\");\nvar topPositionMixin = require(\"../row_position_mixin\");\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function(parent, config, factory, gantt){\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$scaleHelper = new ScaleHelper(gantt);\n\tthis.$gantt = gantt;\n\teventable(this);\n};\n\nTimeline.prototype = {\n\tinit: function(container){\n\t\tcontainer.innerHTML += \"
\";\n\t\tthis.$task = container.childNodes[0];\n\n\t\tthis.$task.innerHTML = \"
\";\n\t\tthis.$task_scale = this.$task.childNodes[0];\n\n\t\tthis.$task_data = this.$task.childNodes[1];\n\t\tthis.$task_data.innerHTML = \"
\";\n\t\tthis.$task_bg = this.$task_data.childNodes[0];\n\t\tthis.$task_links = this.$task_data.childNodes[1];\n\t\tthis.$task_bars = this.$task_data.childNodes[2];\n\n\t\tthis._tasks = {\n\t\t\tcol_width: 0,\n\t\t\twidth: [], // width of each column\n\t\t\tfull_width: 0, // width of all columns\n\t\t\ttrace_x: [],\n\t\t\trendered: {}\n\t\t};\n\n\t\tvar config = this.$getConfig();\n\t\tvar attr = config[this.$config.bind + \"_attribute\"];\n\t\tvar linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\t\tif(!attr && this.$config.bind){\n\t\t\tattr = this.$config.bind + \"_id\";\n\t\t}\n\t\tif(!linksAttr && this.$config.bindLinks){\n\t\t\tlinksAttr = this.$config.bindLinks + \"_id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\t\tthis.$config.link_attribute = linksAttr || null;\n\n\t\tvar layers = this._createLayerConfig();\n\t\tif(!this.$config.layers){\n\t\t\tthis.$config.layers = layers.tasks;\n\t\t}\n\t\tif(!this.$config.linkLayers){\n\t\t\tthis.$config.linkLayers = layers.links;\n\t\t}\n\n\t\tthis._attachLayers(this.$gantt);\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t},\n\n\tsetSize: function(width, height){\n\t\tvar config = this.$getConfig();\n\n\t\tif(width*1 === width){\n\t\t\tthis.$config.width = width;\n\t\t}\n\t\tif(height*1 === height){\n\n\t\t\tthis.$config.height = height;\n\t\t\tvar dataHeight = Math.max(this.$config.height - config.scale_height);\n\t\t\tthis.$task_data.style.height = dataHeight + 'px';\n\t\t}\n\n\t\tthis.refresh();\n\t\tthis.$task_bg.style.backgroundImage = \"\";\n\n\t\tif(config.smart_rendering && this.$config.rowStore){\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tthis.$task_bg.style.height = config.row_height * store.countVisible() +\"px\";\n\t\t}else{\n\t\t\tthis.$task_bg.style.height = \"\";\n\t\t}\n\n\t\tvar scale = this._tasks;\n\t\t//timeline area layers\n\t\tvar data_els = this.$task_data.childNodes;\n\t\tfor(var i= 0, len = data_els.length; i < len; i++){\n\t\t\tvar el = data_els[i];\n\t\t\tif(el.hasAttribute(\"data-layer\") && el.style)\n\t\t\t\tel.style.width = scale.full_width + \"px\";\n\t\t}\n\t},\n\n\tisVisible: function(){\n\t\tif(this.$parent && this.$parent.$config){\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t}else{\n\t\t\treturn this.$task.offsetWidth;\n\t\t}\n\t},\n\n\tgetSize: function(){\n\t\tvar config = this.$getConfig();\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this._tasks.full_width;\n\n\t\treturn {\n\t\t\tx: this.$config.width,\n\t\t\ty: this.$config.height,\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\t},\n\n\tscrollTo: function(left, top){\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tif(top*1 === top){\n\t\t\tthis.$config.scrollTop = top;\n\t\t\tthis.$task_data.scrollTop = this.$config.scrollTop;\n\t\t}\n\t\tif (left*1 === left){\n\t\t\tthis.$task.scrollLeft = left;\n\t\t\tthis.$config.scrollLeft = this.$task.scrollLeft;\n\t\t\tthis._refreshScales();\n\t\t}\n\t},\n\n\t_refreshScales: function _refreshScales() {\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tvar config = this.$getConfig();\n\t\tif (!config.smart_scales) return;\n\n\t\tvar x = this.$config.scrollLeft;\n\t\tvar width = this.$config.width;\n\n\t\tvar scales = this._scales;\n\t\tthis.$task_scale.innerHTML = this._getScaleChunkHtml(scales, x, x + width);\n\t},\n\t_createLayerConfig: function(){\n\t\tvar self = this;\n\t\tvar taskFilter = function(){\n\t\t\treturn self.isVisible();\n\t\t};\n\n\t\tvar taskLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBar,\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskSplitBar,\n\t\t\t\tfilter: [taskFilter],\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tappend: true\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg,\n\t\t\t\tcontainer: this.$task_bg,\n\t\t\t\tfilter: [\n\t\t\t\t\tfunction(){\n\t\t\t\t\t\treturn !self.$getConfig().static_background;\n\t\t\t\t\t},\n\t\t\t\t\ttaskFilter\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\n\t\tvar linkLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.link,\n\t\t\t\tcontainer: this.$task_links,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t}\n\t\t];\n\n\t\treturn {\n\t\t\ttasks: taskLayers,\n\t\t\tlinks: linkLayers\n\t\t};\n\n\t},\n\n\t_attachLayers: function(gantt){\n\t\tthis._taskLayers = [];\n\t\tthis._linkLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\n\t\tif(this.$config.bind){\n\n\t\t\tself.$config.rowStore = self.$gantt.getDatastore(self.$config.bind);\n\n\t\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\t\tif(!taskRenderer){\n\t\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bind,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttaskRenderer.container = function(){ return self.$task_data;};\n\n\t\t\tvar taskLayers = this.$config.layers;\n\t\t\tfor(var i = 0; taskLayers && i < taskLayers.length; i++){\n\t\t\t\tvar layer = taskLayers[i];\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer];\n\t\t\t\t}\n\n\t\t\t\tif(typeof layer == \"function\"){\n\t\t\t\t\tlayer = {renderer: layer};\n\t\t\t\t}\n\n\t\t\t\tlayer.host = this;\n\t\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(bar_layer);\n\t\t\t\tif(layer.expose){\n\t\t\t\t\tthis._taskRenderer = taskRenderer.getLayer(bar_layer);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._initStaticBackgroundRender();\n\t\t}\n\n\t\tif(this.$config.bindLinks){\n\t\t\tself.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n\n\t\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\t\tif(!linkRenderer){\n\t\t\t\tlinkRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bindLinks,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar linkLayers = this.$config.linkLayers;\n\t\t\tfor(var i = 0; linkLayers && i < linkLayers.length; i++){\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer];\n\t\t\t\t}\n\n\t\t\t\tvar layer = linkLayers[i];\n\t\t\t\tlayer.host = this;\n\t\t\t\tvar linkLayer = linkRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(linkLayer);\n\t\t\t\tif(linkLayers[i].expose){\n\t\t\t\t\tthis._linkRenderer = linkRenderer.getLayer(linkLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_initStaticBackgroundRender: function(){\n\t\tvar self = this;\n\t\tvar staticRender = canvasRender.create();\n\t\tvar store = self.$config.rowStore;\n\t\tif(!store) return;\n\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function(id, item, mode){\n\t\t\tif(id !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!self.isVisible())\n\t\t\t\treturn;\n\t\t\tvar config = self.$getConfig();\n\t\t\tif(config.static_background) {\n\t\t\t\tvar store = self.$gantt.getDatastore(self.$config.bind);\n\t\t\t\tif (store) {\n\t\t\t\t\tstaticRender.render(self.$task_bg, config, self.getScale(), config.row_height * store.countVisible());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.attachEvent(\"onDestroy\", function () {\n\t\t\tstaticRender.destroy();\n\t\t});\n\t\tthis._initStaticBackgroundRender = function(){};//init once\n\t},\n\n\t_clearLayers: function(gantt){\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\tif (this._taskLayers) {\n\t\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\n\t\t}\n\t\tif (this._linkLayers) {\n\t\t\tfor(var i = 0; i < this._linkLayers.length; i++){\n\t\t\t\tlinkRenderer.removeLayer(this._linkLayers[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._linkLayers = [];\n\t\tthis._taskLayers = [];\n\t},\n\n\t_render_tasks_scales: function _render_tasks_scales() {\n\t\tvar config = this.$getConfig();\n\n\t\tvar scales_html = \"\",\n\t\t\touter_width = 0,\n\t\t\tscale_height = 0;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (this.isVisible()) {\n\t\t\tvar helpers = this.$scaleHelper;\n\t\t\tvar scales = this._getScales();\n\t\t\tscale_height = config.scale_height;\n\n\t\t\tvar availWidth = this.$config.width;\n\t\t\tif(config.autosize == \"x\" || config.autosize == \"xy\"){\n\t\t\t\tavailWidth = Math.max(config.autosize_min_width, 0);\n\t\t\t}\n\n\t\t\tvar cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n\t\t\tvar cfg = this._tasks = cfgs[cfgs.length - 1];\n\t\t\tthis._scales = cfgs;\n\n\t\t\tscales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n\n\t\t\touter_width = cfg.full_width + \"px\";//cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\t\t\tscale_height += \"px\";\n\t\t}\n\n\t\tthis.$task_scale.style.height = scale_height;\n\n\t\tthis.$task_data.style.width =\n\t\t\tthis.$task_scale.style.width = outer_width;\n\n\t\tthis.$task_scale.innerHTML = scales_html;\n\n\t},\n\n\t_getScaleChunkHtml: function _get_scale_chunk_html (scales, fromPos, toPos) {\n\t\tvar templates = this.$gantt.$services.templates();\n\t\tvar html = [];\n\n\t\tvar css = templates.scale_row_class;\n\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\tvar cssClass = \"gantt_scale_line\";\n\t\t\tvar tplClass = css(scales[i]);\n\t\t\tif (tplClass) {\n\t\t\t\tcssClass += \" \" + tplClass;\n\t\t\t}\n\n\t\t\thtml.push(\"
\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"
\");\n\t\t}\n\n\t\treturn html.join(\"\");\n\t},\n\t_prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n\t\tvar globalConfig = this.$getConfig();\n\t\tvar globalTemplates = this.$gantt.$services.templates();\n\n\t\tvar cells = [];\n\t\tvar date = null, content = null, css = null;\n\n\t\tif (config.template || config.date) {\n\t\t\tcontent = config.template || this.$gantt.date.date_to_str(config.date);\n\t\t}\n\n\t\tvar startIndex = 0,\n\t\t\tendIndex = config.count;\n\n\t\tif (globalConfig.smart_scales && (!isNaN(fromPos) && !isNaN(toPos))) {\n\t\t\tstartIndex = _findBinary(config.left, fromPos);\n\t\t\tendIndex = _findBinary(config.left, toPos) + 1;\n\t\t}\n\n\t\tcss = config.css || function () {\n\t\t\t};\n\t\tif (!config.css && globalConfig.inherit_scale_class) {\n\t\t\tcss = globalTemplates.scale_cell_class;\n\t\t}\n\n\t\tfor (var i = startIndex; i < endIndex; i++) {\n\t\t\tif (!config.trace_x[i]) break;\n\n\t\t\tdate = new Date(config.trace_x[i]);\n\t\t\tvar value = content.call(this, date),\n\t\t\t\twidth = config.width[i],\n\t\t\t\theight = config.height,\n\t\t\t\tleft = config.left[i],\n\t\t\t\tstyle = \"\",\n\t\t\t\ttemplate = \"\",\n\t\t\t\tcssclass = \"\";\n\n\t\t\tif (width) {\n\t\t\t\tvar position = globalConfig.smart_scales ? (\"position:absolute;left:\" + left + \"px\") : \"\";\n\n\t\t\t\tstyle = \"width:\" + (width) + \"px;height:\" + height + \"px;\" + position;\n\t\t\t\tcssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n\n\t\t\t\ttemplate = css.call(this, date);\n\t\t\t\tif (template) cssclass += \" \" + template;\n\n\t\t\t\tvar ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\t\t\t\tvar cell = \"
\" + value + \"
\";\n\t\t\t\tcells.push(cell);\n\t\t\t} else {\n\t\t\t\t//do not render ignored cells\n\t\t\t}\n\n\t\t}\n\t\treturn cells.join(\"\");\n\t},\n\tdateFromPos: function dateFromPos(x) {\n\t\tvar scale = this._tasks;\n\t\tif (x < 0 || x > scale.full_width || !scale.full_width) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar ind = _findBinary(this._tasks.left, x);\n\t\tvar summ = this._tasks.left[ind];\n\n\t\tvar col_width = scale.width[ind] || scale.col_width;\n\t\tvar part = 0;\n\t\tif (col_width) {\n\t\t\tpart = (x - summ) / col_width;\n\t\t\tif(scale.rtl){\n\t\t\t\tpart = 1 - part;\n\t\t\t}\n\n\t\t}\n\n\t\tvar unit = 0;\n\t\tif (part) {\n\t\t\tunit = this._getColumnDuration(scale, scale.trace_x[ind]);\n\t\t}\n\n\t\tvar date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n\t\treturn date;\n\t},\n\tposFromDate: function posFromDate(date) {\n\t\tif (!this.isVisible())\n\t\t\treturn 0;\n\n\t\tvar ind = this.columnIndexByDate(date);\n\t\tthis.$gantt.assert(ind >= 0, \"Invalid day index\");\n\n\t\tvar wholeCells = Math.floor(ind);\n\t\tvar partCell = ind % 1;\n\n\t\tvar pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\t\tif (wholeCells == this._tasks.width.length)\n\t\t\tpos += this._tasks.width[this._tasks.width.length - 1];\n\t\t//for(var i=1; i <= wholeCells; i++)\n\t\t//\tpos += gantt._tasks.width[i-1];\n\n\t\tif (partCell) {\n\t\t\tif (wholeCells < this._tasks.width.length) {\n\t\t\t\tpos += this._tasks.width[wholeCells] * (partCell % 1);\n\t\t\t} else {\n\t\t\t\tpos += 1;\n\t\t\t}\n\n\t\t}\n\t\treturn Math.round(pos);\n\t},\n\n\t_getNextVisibleColumn: function (startIndex, columns, ignores) {\n\t\t// iterate columns to the right\n\t\tvar date = +columns[startIndex];\n\t\tvar visibleDateIndex = startIndex;\n\t\twhile (ignores[date]) {\n\t\t\tvisibleDateIndex++;\n\t\t\tdate = +columns[visibleDateIndex];\n\t\t}\n\n\t\treturn visibleDateIndex;\n\t},\n\t_getPrevVisibleColumn: function (startIndex, columns, ignores) {\n\t\t// iterate columns to the left\n\t\tvar date = +columns[startIndex];\n\t\tvar visibleDateIndex = startIndex;\n\t\twhile (ignores[date]) {\n\t\t\tvisibleDateIndex--;\n\t\t\tdate = +columns[visibleDateIndex];\n\t\t}\n\t\treturn visibleDateIndex;\n\t},\n\t_getClosestVisibleColumn: function (startIndex, columns, ignores) {\n\t\tvar visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\n\t\tif (!columns[visibleDateIndex]) {\n\t\t\tvisibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\n\t\t}\n\t\treturn visibleDateIndex;\n\t},\n\tcolumnIndexByDate: function columnIndexByDate(date) {\n\t\tvar pos = new Date(date).valueOf();\n\t\tvar days = this._tasks.trace_x_ascending,\n\t\t\tignores = this._tasks.ignore_x;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (pos <= state.min_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn days.length;\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\n\t\tif (pos >= state.max_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn days.length;\n\t\t\t}\n\t\t}\n\n\t\tvar dateIndex = _findBinary(days, pos);\n\n\t\tvar visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\n\t\tvar visibleDate = days[visibleIndex];\n\t\tvar transition = this._tasks.trace_index_transition;\n\n\t\tif(!visibleDate){\n\t\t\tif(transition){\n\t\t\t\treturn transition[0];\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tvar part = ((date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]));\n\t\tif(transition){\n\t\t\treturn transition[visibleIndex] + (1 - part);\n\t\t}else{\n\t\t\treturn visibleIndex + part;\n\t\t}\n\t},\n\tgetItemPosition:function (task, start_date, end_date) {\n\t\tvar xLeft, xRight, width;\n\t\tif(this._tasks.rtl){\n\t\t\txRight = this.posFromDate(start_date || task.start_date);\n\t\t\txLeft = this.posFromDate(end_date || task.end_date);\n\t\t}else{\n\t\t\txLeft = this.posFromDate(start_date || task.start_date);\n\t\t\txRight = this.posFromDate(end_date || task.end_date);\n\t\t}\n\t\twidth = Math.max((xRight - xLeft), 0);\n\n\t\tvar y = this.getItemTop(task.id);\n\t\tvar height = this.getItemHeight();\n\t\treturn {\n\t\t\tleft: xLeft,\n\t\t\ttop: y,\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\tgetItemHeight: function(){\n\t\tvar config = this.$getConfig();\n\n\t\t// height of the bar item\n\t\tvar height = config.task_height;\n\n\t\tif (height == \"full\") {\n\t\t\tvar offset = config.task_height_offset || 5;\n\t\t\theight = config.row_height - offset;\n\t\t}\n\t\t//item height cannot be bigger than row height\n\t\theight = Math.min(height, config.row_height);\n\t\treturn Math.max(height, 0);\n\t},\n\n\tgetScale: function(){\n\t\treturn this._tasks;\n\t},\n\n\t_getScales: function _get_scales() {\n\t\tvar config = this.$getConfig();\n\t\tvar helpers = this.$scaleHelper;\n\t\tvar scales = [helpers.primaryScale()].concat(config.subscales);\n\n\t\thelpers.sortScales(scales);\n\t\treturn scales;\n\t},\n\n\t_getColumnDuration: function _get_coll_duration(scale, date) {\n\t\treturn this.$gantt.date.add(date, scale.step, scale.unit) - date;\n\t},\n\n\trefresh: function(){\n\t\tif(this.$config.bind) {\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t}\n\n\t\tif(this.$config.bindLinks) {\n\t\t\tthis.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n\t\t}\n\n\t\tthis._initStaticBackgroundRender();\n\t\tthis._render_tasks_scales();\n\t},\n\n\tdestructor: function(){\n\t\tvar gantt = this.$gantt;\n\t\tthis._clearLayers(gantt);\n\n\t\tthis.$task = null;\n\t\tthis.$task_scale = null;\n\t\tthis.$task_data = null;\n\t\tthis.$task_bg = null;\n\t\tthis.$task_links = null;\n\t\tthis.$task_bars = null;\n\n\t\tthis.$gantt = null;\n\n\t\tif(this.$config.rowStore){\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\t\tif(this.$config.linkStore){\n\t\t\tthis.$config.linkStore = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t}\n};\n\nutils.mixin(Timeline.prototype, topPositionMixin());\n\nmodule.exports = Timeline;\n\nfunction _findBinary(array, target) {\n\t// modified binary search, target value not exactly match array elements, looking for closest one\n\n\tvar low = 0, high = array.length - 1, i, item, prev;\n\twhile (low <= high) {\n\n\t\ti = Math.floor((low + high) / 2);\n\t\titem = +array[i];\n\t\tprev = +array[i - 1];\n\t\tif (item < target) {\n\t\t\tlow = i + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item > target) {\n\t\t\tif (!(!isNaN(prev) && prev < target)) {\n\t\t\t\thigh = i - 1;\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\t// if target is between 'i' and 'i-1' return 'i - 1'\n\t\t\t\treturn i - 1;\n\t\t\t}\n\n\t\t}\n\t\twhile (+array[i] == +array[i + 1]) i++;\n\n\t\treturn i;\n\t}\n\treturn array.length - 1;\n}\n\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","var env = {\n\tisIE: (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisIE6: (!window.XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\n\tisIE7: (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\n\tisIE8: (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisOpera: (navigator.userAgent.indexOf(\"Opera\") >= 0),\n\tisChrome: (navigator.userAgent.indexOf(\"Chrome\") >= 0),\n\tisKHTML: (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n\tisFF: (navigator.userAgent.indexOf(\"Firefox\") >= 0),\n\tisIPad: (navigator.userAgent.search(/iPad/gi) >= 0),\n\tisEdge: (navigator.userAgent.indexOf(\"Edge\")!=-1)\n};\n\nmodule.exports = env;","var utils = require(\"./utils\");\n\nfunction createScope(addEvent, removeEvent) {\n\taddEvent = addEvent || utils.event;\n\tremoveEvent = removeEvent || utils.eventRemove;\n\n\tvar handlers = [];\n\n\tvar eventScope = {\n\t\tattach: function(el, event, callback, capture){\n\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\n\t\t\taddEvent(el, event, callback, capture);\n\t\t},\n\t\tdetach: function(el, event, callback, capture){\n\t\t\tremoveEvent(el, event, callback, capture);\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handler = handlers[i];\n\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n\t\t\t\t\thandlers.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdetachAll: function () {\n\t\t\tvar staticArray = handlers.slice();\n\t\t\t// original handlers array can be spliced on every iteration\n\t\t\tfor (var i = 0; i < staticArray.length; i++){\n\t\t\t\tvar handler = staticArray[i];\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\n\t\t\t}\n\t\t\thandlers.splice(0, handlers.length);\n\t\t},\n\t\textend: function(){\n\t\t\treturn createScope(this.event, this.eventRemove);\n\t\t}\n\t};\n\n\tif (!window.scopes) {\n\t\twindow.scopes = [];\n\t}\n\twindow.scopes.push(handlers);\n\treturn eventScope;\n}\n\nmodule.exports = createScope;","var helpers = require(\"./helpers\");\n\nvar htmlHelpers = {\n\tgetHtmlSelect: function(options, attributes, value) {\n\t\tvar innerHTML = \"\";\n\t\tvar _this = this;\n\n\t\toptions = options || [];\n\t\t\n\t\thelpers.forEach(options, function(entry) {\n\t\t\tvar _attributes = [{ key: \"value\", value: entry.key }];\n\n\t\t\tif (value == entry.key) {\n\t\t\t\t_attributes[_attributes.length] = { key: \"selected\", value: \"selected\" };\n\t\t\t}\n\t\t\tif (entry.attributes) {\n\t\t\t\t_attributes = _attributes.concat(entry.attributes);\n\t\t\t}\n\t\t\tinnerHTML += _this.getHtmlOption({ innerHTML: entry.label }, _attributes);\n\t\t});\n\n\t\treturn _getHtmlContainer(\"select\", { innerHTML: innerHTML }, attributes);\n\t},\n\tgetHtmlOption: function(options, attributes) { return _getHtmlContainer(\"option\", options, attributes); },\n\tgetHtmlButton: function(options, attributes) { return _getHtmlContainer(\"button\", options, attributes); },\n\tgetHtmlDiv: function(options, attributes) { return _getHtmlContainer(\"div\", options, attributes); },\n\tgetHtmlLabel: function(options, attributes) { return _getHtmlContainer(\"label\", options, attributes); },\n\tgetHtmlInput: function(attributes) {\n\t\treturn \"\";\n\t}\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n\tvar html;\n\n\toptions = options || [];\n\t\n\thtml = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"\";\n\treturn html;\n\n}\n\nfunction _getHtmlAttributes(attributes) {\n\tvar html = \"\";\n\n\thelpers.forEach(attributes, function(entry) {\n\t\thtml += \" \" + entry.key + \"='\" + entry.value + \"'\";\n\t});\n\treturn html;\n}\n\nmodule.exports = htmlHelpers;","var utils = require(\"../../utils/utils\");\nvar helpers = require(\"../../utils/helpers\");\n\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.dir = dir;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar){\n\tthis.start_date = start_date;\n\tthis.duration = duration;\n\tthis.unit = unit;\n\tthis.step = step;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n\tthis.start_date = start;\n\tthis.end_date = end;\n\tthis.task = task;\n\tthis.calendar = calendar;\n\tthis.unit = null;\n\tthis.step = null;\n\treturn this;\n}\n\nvar calendarArgumentsHelper = function(gantt){\n\treturn {\n\t\tgetWorkHoursArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tconfig = {\n\t\t\t\t\tdate: config\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconfig = utils.mixin({}, config);\n\t\t\t}\n\t\t\treturn config;\n\t\t},\n\t\tsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tunsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tisWorkTimeArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif(config instanceof IsWorkTimeArgument){\n\t\t\t\treturn config;\n\t\t\t}\n\n\t\t\tvar processedConfig;\n\t\t\tif (!config.date) {\n\t\t\t\t//IsWorkTimeArgument(date, unit, task, id, calendar)\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n\t\t\treturn processedConfig;\n\t\t},\n\t\tgetClosestWorkTimeArguments: function (arg) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof ClosestWorkTimeArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(config);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(\n\t\t\t\t\tconfig.date,\n\t\t\t\t\tconfig.dir,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\t\t\t}\n\t\t\tprocessedConfig.dir = config.dir || 'any';\n\t\t\tprocessedConfig.unit = config.unit || gantt.config.duration_unit;\n\n\t\t\treturn processedConfig;\n\t\t},\n\n\t\t_getStartEndConfig: function (param) {\n\t\t\tvar argumentType = GetDurationArgument;\n\t\t\tvar config;\n\t\t\tif (param instanceof argumentType)\n\t\t\t\treturn param;\n\n\t\t\tif (helpers.isDate(param)) {\n\t\t\t\tconfig = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n\t\t\t} else {\n\t\t\t\tconfig = new argumentType(param.start_date, param.end_date, param.task);\n\t\t\t\tif (param.id) {\n\t\t\t\t\tconfig.task = param;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.unit = config.unit || gantt.config.duration_unit;\n\t\t\tconfig.step = config.step || gantt.config.duration_step;\n\t\t\tconfig.start_date = config.start_date || config.start || config.date;\n\n\t\t\treturn config;\n\t\t},\n\n\t\tgetDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\thasDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\tcalculateEndDateArguments: function (start, duration, unit, step) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof CalculateEndDateArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\t//CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\targuments[0],\n\t\t\t\t\targuments[1],\n\t\t\t\t\targuments[2],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[3],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[4]\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\tconfig.start_date,\n\t\t\t\t\tconfig.duration,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.step,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\t\t\tprocessedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n\t\t\treturn processedConfig;\n\t\t}\n\t};\n};\n\n\nmodule.exports = calendarArgumentsHelper;","function copyLinkIdsArray(gantt, linkIds, targetHash){\n\tfor(var i = 0; i < linkIds.length; i++) {\n\t\tif(gantt.isLinkExists(linkIds[i])){\n\t\t\ttargetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n\t\t}\n\t}\n}\n\nfunction copyLinkIds(gantt, task, targetHash){\n\tcopyLinkIdsArray(gantt, task.$source, targetHash);\n\tcopyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId){\n\tvar res = {};\n\n\tif(gantt.isTaskExists(rootId)){\n\t\tcopyLinkIds(gantt, gantt.getTask(rootId), res);\n\t}\n\n\tgantt.eachTask(function(child){\n\t\tcopyLinkIds(gantt, child, res);\n\t}, rootId);\n\n\treturn res;\n}\n\nfunction getSubtreeTasks(gantt, rootId){\n\tvar res = {};\n\n\tgantt.eachTask(function(child){\n\t\tres[child.id] = child;\n\t}, rootId);\n\n\treturn res;\n}\n\nmodule.exports = {\n\tgetSubtreeLinks: getSubtreeLinks,\n\tgetSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\n\nfunction dateRangeResolver(gantt){\n\t//reset project timing\n\t//_get_tasks_data(gantt);\n\treturn gantt.getSubtaskDates();\n}\n\nfunction defaultRangeResolver(){\n\treturn {\n\t\tstart_date: new Date(),\n\t\tend_date: new Date()\n\t};\n}\n\nfunction resolveConfigRange(unit, gantt){\n\tvar range = {\n\t\tstart_date:null,\n\t\tend_date:null\n\t};\n\n\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\trange.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n\n\t\tvar end = new Date(gantt.config.end_date);\n\t\tvar start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\t\tif (+end != +start_interval) {\n\t\t\tend = gantt.date.add(start_interval, 1, unit);\n\t\t} else {\n\t\t\tend = start_interval;\n\t\t}\n\n\t\trange.end_date = end;\n\t}\n\treturn range;\n}\n\nfunction _scale_range_unit(gantt) {\n\tvar unit = gantt.config.scale_unit;\n\tvar step = gantt.config.step;\n\tif (gantt.config.scale_offset_minimal) {\n\n\t\tvar helper = new ScaleHelper(gantt);\n\t\tvar scales = [helper.primaryScale()].concat(gantt.config.subscales);\n\n\t\thelper.sortScales(scales);\n\t\tunit = scales[scales.length - 1].unit;\n\t\tstep = scales[scales.length - 1].step || 1;\n\t}\n\treturn { unit:unit, step:step };\n}\n\nfunction _init_tasks_range(gantt) {\n\tvar cfg = _scale_range_unit(gantt);\n\tvar unit = cfg.unit,\n\t\tstep = cfg.step;\n\tvar range = resolveConfigRange(unit, gantt);\n\n\tif(!(range.start_date && range.end_date)){\n\t\trange = dateRangeResolver(gantt);\n\t\tif(!range.start_date || !range.end_date){\n\t\t\trange = defaultRangeResolver(gantt);\n\t\t}\n\n\t\trange.start_date = gantt.date[unit + \"_start\"](range.start_date);\n\t\trange.start_date = gantt.calculateEndDate({\n\t\t\tstart_date: gantt.date[unit + \"_start\"](range.start_date),\n\t\t\tduration: -1,\n\t\t\tunit: unit,\n\t\t\tstep:step\n\t\t});//one free column before first task\n\n\t\trange.end_date = gantt.date[unit + \"_start\"](range.end_date);\n\t\trange.end_date = gantt.calculateEndDate({start_date: range.end_date, duration: 2, unit: unit, step:step});//one free column after last task\n\t}\n\n\tgantt._min_date = range.start_date;\n\tgantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n\tif (gantt.config.fit_tasks) {\n\t\tvar old_min = +gantt._min_date,\n\t\t\told_max = +gantt._max_date;\n\t\t//this._init_tasks_range();\n\t\tif (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n\t\t\tgantt.render();\n\n\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nmodule.exports = function updateTasksRange(gantt){\n\t_init_tasks_range(gantt);\n\t_adjust_scales(gantt);\n};\n","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n\t$create: function(array){\n\t\treturn utils.mixin(array || [], this);\n\t},\n\t//remove element at specified position\n\t$removeAt:function(pos,len){\n\t\tif (pos>=0) this.splice(pos,(len||1));\n\t},\n\t//find element in collection and remove it\n\t$remove:function(value){\n\t\tthis.$removeAt(this.$find(value));\n\t},\n\t//add element to collection at specific position\n\t$insertAt:function(data,pos){\n\t\tif (!pos && pos!==0) \t//add to the end by default\n\t\t\tthis.push(data);\n\t\telse {\n\t\t\tvar b = this.splice(pos,(this.length-pos));\n\t\t\tthis[pos] = data;\n\t\t\tthis.push.apply(this,b); //reconstruct array without loosing this pointer\n\t\t}\n\t},\n\t//return index of element, -1 if it doesn't exists\n\t$find:function(data){\n\t\tfor (var i=0; i data_size){\n\t\t\t\t//dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n\t\t\t\tindex = Math.min(order.length,index);\n\t\t\t}\n\t\t}\n\n\n\t\t//gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\t\tthis.pull[item.id]=item;\n\t\tif (!this._skip_refresh){\n\t\t\tthis._updateOrder(function(){\n\t\t\t\tif(this.$find(item.id) === -1)\n\t\t\t\t\tthis.$insertAt(item.id,index);\n\t\t\t});\n\t\t}\n\t\tthis.filter();\n\t\t//order.$insertAt(item.id,index);\n\t},\n\n\n\tisVisible: function(id){\n\t\treturn this.visibleOrder.$find(id) > -1;\n\t},\n\tgetVisibleItems: function(){\n\t\treturn this.getIndexRange();\n\t},\n\n\taddItem: function(item, index){\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif(this.$initItem){\n\t\t\titem = this.$initItem(item);\n\t\t}\n\n\t\tif (!this._skip_refresh){\n\t\t\tif (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n\t\t}\n\n\n\t\tthis._addItemInner(item, index);\n\n\t\tif (!this._skip_refresh){\n\t\t\tthis.callEvent(\"onAfterAdd\",[item.id, item]);\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\",[item.id,item,\"add\"]);\n\t\t}\n\t\treturn item.id;\n\t},\n\n\t_changeIdInner: function(oldId, newId){\n\t\tif(this.pull[oldId])\n\t\t\tthis.pull[newId] = this.pull[oldId];\n\n\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\t\tthis.pull[newId].id = newId;\n\t\tthis._updateOrder(function(){\n\t\t\tthis[this.$find(oldId)] = newId;\n\t\t});\n\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\tdelete this._searchVisibleOrder[oldId];\n\n\t\t//this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\t\tdelete this.pull[oldId];\n\t},\n\tchangeId: function(oldId, newId){\n\t\tthis._changeIdInner(oldId, newId);\n\n\t\tthis.callEvent(\"onIdChange\", [oldId, newId]);\n\n\t},\n\texists: function(id){\n\t\treturn !!(this.pull[id]);\n\t},\n\n\t_moveInner: function(sindex, tindex){\n\t\tvar id = this.getIdByIndex(sindex);\n\n\t\tthis._updateOrder(function(){\n\t\t\tthis.$removeAt(sindex);\n\t\t\tthis.$insertAt(id,Math.min(this.length, tindex));\n\t\t});\n\t\t//this.visibleOrder.$removeAt(sindex);\t//remove at old position\n\t\t//if (sindex=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n\n\t\tvar id = this.getIdByIndex(sindex);\n\t\tvar obj = this.getItem(id);\n\t\tthis._moveInner(sindex, tindex);\n\n\n\t\tif (!this._skip_refresh) {\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n\t\t}\n\t},\n\tclearAll: function(){\n\t\tthis.pull = {};\n\t\tthis.visibleOrder = powerArray.$create();\n\t\tthis.fullOrder = powerArray.$create();\n\t\tif (this._skip_refresh) return;\n\t\tthis.callEvent(\"onClearAll\",[]);\n\t\tthis.refresh();\n\t},\n\n\tsilent:function(code, master){\n\t\tthis._skip_refresh = true;\n\t\tcode.call(master||this);\n\t\tthis._skip_refresh = false;\n\t},\n\n\tarraysEqual: function (arr1, arr2) {\n\t\tif(arr1.length !== arr2.length)\n\t\t\treturn false;\n\t\tfor(var i = 0; i < arr1.length; i++) {\n\t\t\tif(arr1[i] !== arr2[i])\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\trefresh: function(id, quick){\n\t\tif (this._skip_refresh) return;\n\n\t\tvar args;\n\t\tif (id){\n\t\t\targs = [id, this.pull[id], \"paint\"];\n\t\t}else{\n\t\t\targs = [null,null,null];\n\t\t}\n\n\t\tif(this.callEvent(\"onBeforeStoreUpdate\", args) === false){\n\t\t\treturn;\n\t\t}\n\n\t\tif(id){\n\t\t\t// if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n\t\t\tif(!quick){\n\t\t\t\tvar oldOrder = this.visibleOrder;\n\t\t\t\tthis.filter();\n\t\t\t\tif(!this.arraysEqual(oldOrder, this.visibleOrder)){\n\t\t\t\t\tid = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else{\n\t\t\tthis.filter();\n\t\t}\n\n\t\tif (id){\n\t\t\targs = [id, this.pull[id], \"paint\"];\n\t\t}else{\n\t\t\targs = [null,null,null];\n\t\t}\n\n\t\tthis.callEvent(\"onStoreUpdated\",args);\n\t},\n\n\tcount: function(){\n\t\treturn this.fullOrder.length;\n\t},\n\tcountVisible: function(){\n\t\treturn this.visibleOrder.length;\n\t},\n\n\tsort: function(sort){},\n\n\tserialize: function(){},\n\n\teachItem: function(code){\n\t\tfor (var i=0; i 1) {\n\t\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n\t\t\tpadd += 1;\n\t\t}\n\n\t\tif (taskType == cfg.types.milestone){\n\t\t\tpos.left -= Math.round(height / 2);\n\t\t\tpos.width = height;\n\t\t}\n\n\t\tvar div = document.createElement(\"div\");\n\n\t\tvar width = Math.round(pos.width);\n\n\t\tif(view.$config.item_attribute){\n\t\t\tdiv.setAttribute(view.$config.item_attribute, task.id);\n\t\t}\n\n\t\tif (cfg.show_progress && taskType != cfg.types.milestone) {\n\t\t\t_render_task_progress(task, div, width, cfg, templates);\n\t\t}\n\n\t\t//use separate div to display content above progress bar\n\t\tvar content = _render_task_content(task, width, templates);\n\t\tif (task.textColor) {\n\t\t\tcontent.style.color = task.textColor;\n\t\t}\n\t\tdiv.appendChild(content);\n\n\t\tvar css = _combine_item_class(\"gantt_task_line\",\n\t\t\ttemplates.task_class(task.start_date, task.end_date, task),\n\t\t\ttask.id,\n\t\t\tview);\n\t\tif (task.color || task.progressColor || task.textColor) {\n\t\t\tcss += \" gantt_task_inline_color\";\n\t\t}\n\t\tdiv.className = css;\n\n\t\tvar styles = [\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"top:\" + (padd + pos.top) + 'px',\n\t\t\t\"height:\" + height + 'px',\n\t\t\t\"line-height:\" + (Math.max(height < 30 ? height - 2 : height, 0)) + 'px',\n\t\t\t\"width:\" + width + 'px'\n\t\t];\n\t\tif (task.color) {\n\t\t\tstyles.push(\"background-color:\" + task.color);\n\t\t}\n\t\tif (task.textColor) {\n\t\t\tstyles.push(\"color:\" + task.textColor);\n\t\t}\n\n\t\tdiv.style.cssText = styles.join(\";\");\n\t\tvar side = _render_leftside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tside = _render_rightside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tgantt._waiAria.setTaskBarAttr(task, div);\n\n\t\tvar state = gantt.getState();\n\n\t\tif (!gantt.isReadonly(task)) {\n\t\t\tif (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n\t\t\t\t_render_pair(div, \"gantt_task_drag\", task, function (css) {\n\t\t\t\t\tvar el = document.createElement(\"div\");\n\t\t\t\t\tel.className = css;\n\t\t\t\t\treturn el;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t\tif (cfg.drag_links && cfg.show_links) {\n\t\t\t\t_render_pair(div, \"gantt_link_control\", task, function (css) {\n\t\t\t\t\tvar outer = document.createElement(\"div\");\n\t\t\t\t\touter.className = css;\n\t\t\t\t\touter.style.cssText = [\n\t\t\t\t\t\t\"height:\" + height + 'px',\n\t\t\t\t\t\t\"line-height:\" + height + 'px'\n\t\t\t\t\t].join(\";\");\n\t\t\t\t\tvar inner = document.createElement(\"div\");\n\t\t\t\t\tinner.className = \"gantt_link_point\";\n\n\t\t\t\t\tvar showLinkPoints = false;\n\t\t\t\t\tif(state.link_source_id && cfg.touch){\n\t\t\t\t\t\tshowLinkPoints = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tinner.style.display = showLinkPoints ? \"block\" : \"\";\n\t\t\t\t\touter.appendChild(inner);\n\t\t\t\t\treturn outer;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t}\n\t\treturn div;\n\t}\n\n\tfunction _render_side_content(task, template, cssClass) {\n\t\tif (!template) return null;\n\n\t\tvar text = template(task.start_date, task.end_date, task);\n\t\tif (!text) return null;\n\t\tvar content = document.createElement(\"div\");\n\t\tcontent.className = \"gantt_side_content \" + cssClass;\n\t\tcontent.innerHTML = text;\n\t\treturn content;\n\t}\n\n\tfunction _render_leftside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\t\treturn _render_side_content(task, templates.leftside_text, css);\n\t}\n\n\tfunction _render_rightside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\t\treturn _render_side_content(task, templates.rightside_text, css);\n\t}\n\n\tfunction _get_link_crossing_css(left, task) {\n\t\tvar cond = _get_conditions(left);\n\n\t\tfor (var i in cond) {\n\t\t\tvar links = task[i];\n\t\t\tfor (var ln = 0; ln < links.length; ln++) {\n\t\t\t\tvar link = gantt.getLink(links[ln]);\n\n\t\t\t\tfor (var tp = 0; tp < cond[i].length; tp++) {\n\t\t\t\t\tif (link.type == cond[i][tp]) {\n\t\t\t\t\t\treturn \"gantt_link_crossing\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\n\tfunction _render_task_content(task, width, templates) {\n\t\tvar content = document.createElement(\"div\");\n\t\tif (gantt.getTaskType(task.type) != gantt.config.types.milestone)\n\t\t\tcontent.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n\t\tcontent.className = \"gantt_task_content\";\n\t\t//content.style.width = width + 'px';\n\t\treturn content;\n\t}\n\n\tfunction _render_task_progress(task, element, maxWidth, cfg, templates) {\n\t\tvar done = task.progress * 1 || 0;\n\n\t\tmaxWidth = Math.max(maxWidth - 2, 0);//2px for borders\n\t\tvar pr = document.createElement(\"div\");\n\t\tvar width = Math.round(maxWidth * done);\n\n\t\twidth = Math.min(maxWidth, width);\n\t\tif (task.progressColor) {\n\t\t\tpr.style.backgroundColor = task.progressColor;\n\t\t\tpr.style.opacity = 1;\n\t\t}\n\t\tpr.style.width = width + 'px';\n\t\tpr.className = \"gantt_task_progress\";\n\t\tpr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n\t\tif(cfg.rtl){\n\t\t\tpr.style.position = \"absolute\";\n\t\t\tpr.style.right = \"0px\";\n\t\t}\n\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.className = \"gantt_task_progress_wrapper\";\n\t\twrapper.appendChild(pr);\n\t\telement.appendChild(wrapper);\n\n\t\tif (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n\t\t\tvar drag = document.createElement(\"div\");\n\n\t\t\tvar markerPos = width;\n\t\t\tif(cfg.rtl){\n\t\t\t\tmarkerPos = maxWidth - width;\n\t\t\t}\n\n\t\t\tdrag.style.left = markerPos + 'px';\n\t\t\tdrag.className = \"gantt_task_progress_drag\";\n\t\t\tpr.appendChild(drag);\n\t\t\telement.appendChild(drag);\n\t\t}\n\t}\n\n\tfunction _get_conditions(leftside) {\n\t\tif (leftside) {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.start_to_start\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.start_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_start\n\t\t\t\t]\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.finish_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction _combine_item_class(basic, template, itemId, view) {\n\t\tvar cfg = view.$getConfig();\n\t\tvar css = [basic];\n\t\tif (template)\n\t\t\tcss.push(template);\n\n\t\tvar state = gantt.getState();\n\n\t\tvar task = gantt.getTask(itemId);\n\n\t\tif (gantt.getTaskType(task.type) == cfg.types.milestone) {\n\t\t\tcss.push(\"gantt_milestone\");\n\t\t}else if (gantt.getTaskType(task.type) == cfg.types.project) {\n\t\t\tcss.push(\"gantt_project\");\n\t\t}\n\n\t\tcss.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n\n\n\t\tif (gantt.isSummaryTask(task))\n\t\t\tcss.push(\"gantt_dependent_task\");\n\n\t\tif (gantt.isSplitTask(task)) {\n\t\t\tcss.push(\"gantt_split_parent\");\n\t\t}\n\n\t\tif (cfg.select_task && itemId == state.selected_task)\n\t\t\tcss.push(\"gantt_selected\");\n\n\t\tif (itemId == state.drag_id) {\n\t\t\tcss.push(\"gantt_drag_\" + state.drag_mode);\n\t\t\tif (state.touch_drag) {\n\t\t\t\tcss.push(\"gantt_touch_\" + state.drag_mode);\n\t\t\t}\n\t\t}\n\n\t\tif (state.link_source_id == itemId)\n\t\t\tcss.push(\"gantt_link_source\");\n\n\t\tif (state.link_target_id == itemId)\n\t\t\tcss.push(\"gantt_link_target\");\n\n\n\t\tif (cfg.highlight_critical_path && gantt.isCriticalTask) {\n\t\t\tif (gantt.isCriticalTask(task))\n\t\t\t\tcss.push(\"gantt_critical_task\");\n\t\t}\n\n\t\tif (state.link_landing_area &&\n\t\t\t(state.link_target_id && state.link_source_id) &&\n\t\t\t(state.link_target_id != state.link_source_id)) {\n\n\t\t\tvar from_id = state.link_source_id;\n\t\t\tvar from_start = state.link_from_start;\n\t\t\tvar to_start = state.link_to_start;\n\n\t\t\tvar allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n\n\t\t\tvar dragClass = \"\";\n\t\t\tif (allowDrag) {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_allow\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_allow\";\n\t\t\t} else {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_deny\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_deny\";\n\t\t\t}\n\t\t\tcss.push(dragClass);\n\t\t}\n\t\treturn css.join(\" \");\n\t}\n\n\tfunction _render_pair(parent, css, task, content, config) {\n\t\tvar state = gantt.getState();\n\t\tvar className, element;\n\t\tif (+task.start_date >= +state.min_date) {\n\t\t\tclassName = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"start_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t\tif (+task.end_date <= +state.max_date){\n\t\t\tclassName = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"end_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t}\n\n\treturn _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","var domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tgridResize = require(\"./grid_resize\"),\n\ttopPositionMixin = require(\"../row_position_mixin\");\n\nvar Grid = function (parent, config, factory, gantt) {\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$gantt = gantt;\n\tthis.$parent = parent;\n\teventable(this);\n\tthis.$state = {};\n};\n\n\nGrid.prototype = {\n\tinit: function (container) {\n\t\tvar gantt = this.$gantt;\n\t\tvar gridAriaAttr = gantt._waiAria.gridAttrString();\n\t\tvar gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\n\n\t\tcontainer.innerHTML = \"
\";\n\t\tthis.$grid = container.childNodes[0];\n\n\t\tthis.$grid.innerHTML = \"
\";\n\n\t\tthis.$grid_scale = this.$grid.childNodes[0];\n\t\tthis.$grid_data = this.$grid.childNodes[1];\n\n\t\tvar attr = this.$getConfig()[this.$config.bind + \"_attribute\"];\n\t\tif (!attr && this.$config.bind) {\n\t\t\tattr = this.$config.bind + \"_id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\n\t\tif (!this.$config.layers) {\n\t\t\tvar layers = this._createLayerConfig();\n\t\t\tthis.$config.layers = layers;\n\t\t}\n\n\t\tvar resizer = gridResize(gantt, this);\n\t\tresizer.init();\n\t\tthis._renderHeaderResizers = resizer.doOnRender;\n\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\n\t\tthis._addLayers(this.$gantt);\n\t\tthis._initEvents();\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t},\n\n\t_validateColumnWidth: function (column, property) {\n\t\t// user can set {name:\"text\", width:\"200\",...} for some reason,\n\t\t// check and convert it to number when possible\n\t\tvar value = column[property];\n\t\tif (value && value != \"*\") {\n\t\t\tvar gantt = this.$gantt;\n\t\t\tvar numericWidth = value * 1;\n\t\t\tif (isNaN(numericWidth)) {\n\t\t\t\tgantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n\t\t\t} else {\n\t\t\t\tcolumn[property] = numericWidth;\n\t\t\t}\n\t\t}\n\t},\n\n\tsetSize: function (width, height) {\n\t\tthis.$config.width = this.$state.width = width;\n\t\tthis.$state.height = height;\n\n\t\t// TODO: maybe inherit and override in a subclass instead of extending here\n\n\t\tvar columns = this.getGridColumns(),\n\t\t\tinnerWidth = 0;\n\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tthis._validateColumnWidth(columns[i], \"min_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"max_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"width\");\n\n\t\t\tinnerWidth += columns[i].width * 1;\n\t\t}\n\n\t\tvar outerWidth;\n\t\tif (isNaN(innerWidth) || !this.$config.scrollable) {\n\t\t\touterWidth = this._setColumnsWidth(width + 1);\n\t\t\tinnerWidth = outerWidth;\n\t\t}\n\n\t\tif (this.$config.scrollable) {\n\t\t\tthis.$grid_scale.style.width = innerWidth + \"px\";\n\t\t\tthis.$grid_data.style.width = innerWidth + \"px\";\n\t\t} else {\n\t\t\tthis.$grid_scale.style.width = \"inherit\";\n\t\t\tthis.$grid_data.style.width = \"inherit\";\n\t\t}\n\t\tthis.$config.width -= 1;\n\n\t\tvar config = this.$getConfig();\n\t\tif (outerWidth !== width) {\n\t\t\tconfig.grid_width = outerWidth;\n\t\t\tthis.$config.width = outerWidth - 1;\n\t\t}\n\n\t\tvar dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n\t\tthis.$grid_data.style.height = dataHeight + \"px\";\n\t\tthis.refresh();\n\t},\n\tgetSize: function () {\n\n\t\tvar config = this.$getConfig();\n\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this._getGridWidth();\n\n\t\tvar size = {\n\t\t\tx: this.$state.width,\n\t\t\ty: this.$state.height,\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\n\t\treturn size;\n\t},\n\trefresh: function () {\n\n\t\tif (this.$config.bind)\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n\t\tthis._initSmartRenderingPlaceholder();\n\n\t\tthis._calculateGridWidth();\n\t\tthis._renderGridHeader();\n\t},\n\tscrollTo: function (left, top) {\n\t\tif (!this.isVisible())\n\t\t\treturn;\n\n\t\tif (left * 1 == left) {\n\t\t\tthis.$state.scrollLeft = this.$grid.scrollLeft = left;\n\t\t}\n\n\t\t// var config = this.$getConfig();\n\t\tif (top * 1 == top) {\n\t\t\tthis.$state.scrollTop = this.$grid_data.scrollTop = top;\n\t\t}\n\t},\n\n\tgetColumnIndex: function (name) {\n\t\tvar columns = this.$getConfig().columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetColumn: function (name) {\n\t\tvar index = this.getColumnIndex(name);\n\t\tif (index === null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.$getConfig().columns[index];\n\t},\n\n\tgetGridColumns: function () {\n\t\tvar config = this.$getConfig();\n\t\treturn config.columns.slice();\n\t},\n\tisVisible: function () {\n\t\tif (this.$parent && this.$parent.$config) {\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t} else {\n\t\t\treturn this.$grid.offsetWidth;\n\t\t}\n\t},\n\n\tgetItemHeight: function () {\n\t\tvar config = this.$getConfig();\n\t\treturn config.row_height;\n\t},\n\n\t_createLayerConfig: function () {\n\t\tvar gantt = this.$gantt;\n\t\tvar self = this;\n\t\tvar layers = [\n\t\t\t{\n\t\t\t\trenderer: gantt.$ui.layers.gridLine,\n\t\t\t\tcontainer: this.$grid_data,\n\t\t\t\tfilter: [function () {\n\t\t\t\t\treturn self.isVisible();\n\t\t\t\t}]\n\t\t\t}\n\t\t];\n\t\treturn layers;\n\t},\n\n\t_addLayers: function (gantt) {\n\t\tif (!this.$config.bind)\n\t\t\treturn;\n\n\t\tthis._taskLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tif (!taskRenderer) {\n\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\tname: this.$config.bind,\n\t\t\t\tdefaultContainer: function () { return self.$grid_data; }\n\t\t\t});\n\t\t}\n\n\t\tvar taskLayers = this.$config.layers;\n\t\tfor (var i = 0; taskLayers && i < taskLayers.length; i++) {\n\t\t\tvar layer = taskLayers[i];\n\t\t\tlayer.host = this;\n\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\tthis._taskLayers.push(bar_layer);\n\t\t}\n\n\t\tif (this.$config.bind)\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n\t\tthis._initSmartRenderingPlaceholder();\n\t},\n\n\t_refreshPlaceholderOnStoreUpdate: function (id) {\n\t\tvar config = this.$getConfig(),\n\t\t\tstore = this.$config.rowStore;\n\n\t\tif (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar contentHeight;\n\t\tif (this.$config.scrollY) {\n\t\t\tvar scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n\t\t\tif (scroll)\n\t\t\t\tcontentHeight = scroll.getScrollState().scrollSize;\n\t\t}\n\n\t\tif (!contentHeight) {\n\t\t\tcontentHeight = store ? config.row_height * store.countVisible() : 0;\n\t\t}\n\n\t\tif (contentHeight) {\n\t\t\tif (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n\t\t\t\tthis.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n\t\t\t}\n\n\t\t\tvar placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n\t\t\tplaceholder.style.visibility = \"hidden\";\n\t\t\tplaceholder.style.height = contentHeight + \"px\";\n\t\t\tplaceholder.style.width = \"1px\";\n\t\t\tthis.$grid_data.appendChild(placeholder);\n\t\t}\n\t},\n\n\t_initSmartRenderingPlaceholder: function () {\n\t\tvar store = this.$config.rowStore;\n\t\tif (!store) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initSmartRenderingPlaceholder = function () { };\n\t\t}\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n\t},\n\n\t_initEvents: function () {\n\t\tvar gantt = this.$gantt;\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif (!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif (target) {\n\t\t\t\tstore.close(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif (!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif (target) {\n\t\t\t\tstore.open(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\t},\n\n\t_clearLayers: function (gantt) {\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tif (this._taskLayers) {\n\t\t\tfor (var i = 0; i < this._taskLayers.length; i++) {\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._taskLayers = [];\n\t},\n\n\t_getColumnWidth: function (column, config, width) {\n\t\tvar min_width = column.min_width || config.min_grid_column_width;\n\t\tvar new_width = Math.max(width, min_width || 10);\n\t\tif (column.max_width)\n\t\t\tnew_width = Math.min(new_width, column.max_width);\n\t\treturn new_width;\n\t},\n\t// return min and max possible grid width according to restricts\n\t_getGridWidthLimits: function () {\n\t\tvar config = this.$getConfig(),\n\t\t\tcolumns = this.getGridColumns(),\n\t\t\tmin_limit = 0,\n\t\t\tmax_limit = 0;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tmin_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\t\t\tif (max_limit !== undefined) {\n\t\t\t\tmax_limit = columns[i].max_width ? (max_limit + columns[i].max_width) : undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn [min_limit, max_limit];\n\t},\n\t// resize columns to get total newWidth, starting from columns[start_index]\n\t_setColumnsWidth: function (newWidth, start_index) {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = this.getGridColumns(),\n\t\t\tcolumns_width = 0,\n\t\t\tfinal_width = newWidth;\n\n\t\tstart_index = !window.isNaN(start_index) ? start_index : -1;\n\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tcolumns_width += columns[i].width * 1;\n\t\t}\n\n\t\tif (window.isNaN(columns_width)) {\n\t\t\tthis._calculateGridWidth();\n\t\t\tcolumns_width = 0;\n\t\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\t\tcolumns_width += columns[i].width * 1;\n\t\t\t}\n\t\t}\n\n\t\tvar extra_width = final_width - columns_width;\n\n\t\tvar start_width = 0;\n\t\tfor (var i = 0; i < start_index + 1; i++) {\n\t\t\tstart_width += columns[i].width;\n\t\t}\n\n\t\tcolumns_width -= start_width;\n\n\t\tfor (var i = start_index + 1; i < columns.length; i++) {\n\n\t\t\tvar col = columns[i];\n\t\t\tvar share = Math.round(extra_width * (col.width / columns_width));\n\n\t\t\t// columns have 2 additional restrict fields - min_width & max_width that are set by user\n\t\t\tif (extra_width < 0) {\n\t\t\t\tif (col.min_width && col.width + share < col.min_width)\n\t\t\t\t\tshare = col.min_width - col.width;\n\t\t\t\telse if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width)\n\t\t\t\t\tshare = config.min_grid_column_width - col.width;\n\t\t\t} else if (col.max_width && col.width + share > col.max_width)\n\t\t\t\tshare = col.max_width - col.width;\n\n\t\t\tcolumns_width -= col.width;\n\t\t\tcol.width += share;\n\t\t\textra_width -= share;\n\n\t\t}\n\n\t\tvar iterator = extra_width > 0 ? 1 : -1;\n\t\twhile ((extra_width > 0 && iterator === 1) || (extra_width < 0 && iterator === -1)) {\n\t\t\tvar curExtra = extra_width;\n\t\t\tfor (i = start_index + 1; i < columns.length; i++) {\n\t\t\t\tvar new_width = columns[i].width + iterator;\n\n\t\t\t\tif (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n\t\t\t\t\textra_width -= iterator;\n\t\t\t\t\tcolumns[i].width = new_width;\n\t\t\t\t}\n\n\t\t\t\tif (!extra_width)\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (curExtra == extra_width)\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// if impossible to resize the right-side columns, resize the start column\n\t\tif (extra_width && start_index > -1) {\n\t\t\tvar new_width = columns[start_index].width + extra_width;\n\t\t\tif (new_width == this._getColumnWidth(columns[start_index], config, new_width))\n\t\t\t\tcolumns[start_index].width = new_width;\n\t\t}\n\n\t\t//if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n\t\t//\treturn;\n\n\t\treturn this._getColsTotalWidth();\n\t},\n\n\t_getColsTotalWidth: function () {\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcols_width += v;\n\t\t}\n\t\treturn cols_width;\n\t},\n\t_calculateGridWidth: function () {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\t\tvar unknown = [];\n\t\tvar width = [];\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\tv = config.min_grid_column_width || 10;\n\t\t\t\tunknown.push(i);\n\t\t\t}\n\t\t\twidth[i] = v;\n\t\t\tcols_width += v;\n\t\t}\n\t\tvar gridWidth = this._getGridWidth() + 1;\n\t\tif (config.autofit || unknown.length) {\n\t\t\tvar diff = gridWidth - cols_width;\n\t\t\t// TODO: logic may be improved for proportional changing of width\n\t\t\tif (config.autofit) {\n\t\t\t\t// delta must be added for all columns\n\t\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (width.length - i));\n\t\t\t\t\twidth[i] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n\t\t\t\t\tif (new_width != width[i]) {\n\t\t\t\t\t\tdelta = new_width - width[i];\n\t\t\t\t\t\twidth[i] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t} else if (unknown.length) {\n\t\t\t\t// there are several columns with undefined width\n\t\t\t\tfor (var i = 0; i < unknown.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\t\t\t\t\tvar index = unknown[i];\n\t\t\t\t\twidth[index] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[index], config, width[index]);\n\t\t\t\t\tif (new_width != width[index]) {\n\t\t\t\t\t\tdelta = new_width - width[index];\n\t\t\t\t\t\twidth[index] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\tcolumns[i].width = width[i];\n\t\t\t}\n\t\t} else {\n\t\t\tvar changed = (gridWidth != cols_width);\n\t\t\tthis.$config.width = cols_width - 1;\n\t\t\tconfig.grid_width = cols_width;\n\t\t\tif (changed) {\n\t\t\t\tthis.$parent._setContentSize(this.$config.width, this.$config.height);\n\t\t\t\t//\t\t\t\tthis.$parent.$config.width = cols_width;\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_renderGridHeader: function () {\n\t\tvar gantt = this.$gantt;\n\t\tvar config = this.$getConfig();\n\t\tvar locale = this.$gantt.locale;\n\t\tvar templates = this.$gantt.templates;\n\n\t\tvar columns = this.getGridColumns();\n\t\tif (config.rtl) {\n\t\t\tcolumns = columns.reverse();\n\t\t}\n\t\tvar cells = [];\n\t\tvar width = 0,\n\t\t\tlabels = locale.labels;\n\n\t\tvar lineHeigth = config.scale_height - 1;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\n\t\t\t// ensure columns have non-empty names\n\t\t\tif (!col.name) {\n\t\t\t\tcol.name = gantt.uid() + \"\";\n\t\t\t}\n\n\t\t\tvar colWidth = col.width * 1;\n\n\t\t\tvar gridWidth = this._getGridWidth();\n\t\t\tif (last && gridWidth > width + colWidth)\n\t\t\t\tcol.width = colWidth = gridWidth - width;\n\t\t\twidth += colWidth;\n\t\t\tvar sort = (gantt._sort && col.name == gantt._sort.name) ? (\"
\") : \"\";\n\t\t\tvar cssClass = [\"gantt_grid_head_cell\",\n\t\t\t\t(\"gantt_grid_head_\" + col.name),\n\t\t\t\t(last ? \"gantt_last_cell\" : \"\"),\n\t\t\t\ttemplates.grid_header_class(col.name, col)].join(\" \");\n\n\t\t\tvar style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n\t\t\tvar label = (col.label || labels[\"column_\" + col.name] || labels[col.name]);\n\t\t\tlabel = label || \"\";\n\n\t\t\tvar ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n\t\t\tvar cell = \"
\" + label + sort + \"
\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tthis.$grid_scale.style.height = (config.scale_height) + \"px\";\n\t\tthis.$grid_scale.style.lineHeight = lineHeigth + \"px\";\n\t\t//this.$grid_scale.style.width = \"inherit\";\n\t\tthis.$grid_scale.innerHTML = cells.join(\"\");\n\n\t\tif (this._renderHeaderResizers) {\n\t\t\tthis._renderHeaderResizers();\n\t\t}\n\t},\n\n\t_getGridWidth: function () {\n\t\t// TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n\t\treturn this.$config.width;\n\t},\n\n\tdestructor: function () {\n\t\tthis._clearLayers(this.$gantt);\n\t\tif (this._mouseDelegates) {\n\t\t\tthis._mouseDelegates.destructor();\n\t\t\tthis._mouseDelegates = null;\n\t\t}\n\t\tthis.$grid = null;\n\t\tthis.$grid_scale = null;\n\t\tthis.$grid_data = null;\n\t\tthis.$gantt = null;\n\n\t\tif (this.$config.rowStore) {\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t}\n};\n\nutils.mixin(Grid.prototype, topPositionMixin());\n\nmodule.exports = Grid;\n","function createMixin(){\n\treturn {\n\t\t/**\n\t\t * Get top coordinate by row index (order)\n\t\t * @param {number} index\n\t\t */\n\t\tgetRowTop: function(index){\n\t\t\treturn index * this.$getConfig().row_height;\n\t\t},\n\n\t\t/**\n\t\t * Get top coordinate by item id\n\t\t * @param {*} task_id\n\t\t */\n\t\tgetItemTop: function (taskId) {\n\t\t\tif(this.$config.rowStore){\n\t\t\t\tvar store = this.$config.rowStore;\n\t\t\t\tif(!store) return 0;\n\n\t\t\t\tvar itemIndex = store.getIndexById(taskId);\n\n\t\t\t\tif (itemIndex === -1 && store.getParent && store.exists(taskId)) {\n\t\t\t\t\tvar parentId = store.getParent(taskId);\n\t\t\t\t\tif (store.exists(parentId)) {\n\t\t\t\t\t\t// if task is not found in list - maybe it's parent is a split task and we should use parents index instead\n\t\t\t\t\t\tvar parent = store.getItem(parentId);\n\t\t\t\t\t\tif (this.$gantt.isSplitTask(parent)) {\n\t\t\t\t\t\t\treturn this.getRowTop(store.getIndexById(parent.id));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.getRowTop(itemIndex);\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = createMixin;","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt){\n\tvar dateHelper = gantt.date;\n\tvar services = gantt.$services;\n\n\treturn {\n\t\tgetSum: function (sizes, from, to) {\n\t\t\tif (to === undefined)\n\t\t\t\tto = sizes.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\n\t\t\tvar summ = 0;\n\t\t\tfor (var i = from; i <= to; i++)\n\t\t\t\tsumm += sizes[i];\n\n\t\t\treturn summ;\n\t\t},\n\t\tsetSumWidth: function (sum_width, scale, from, to) {\n\t\t\tvar parts = scale.width;\n\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\t\t\tvar length = to - from + 1;\n\n\t\t\tif (from > parts.length - 1 || length <= 0 || to > parts.length - 1)\n\t\t\t\treturn;\n\n\t\t\tvar oldWidth = this.getSum(parts, from, to);\n\n\t\t\tvar diff = sum_width - oldWidth;\n\n\t\t\tthis.adjustSize(diff, parts, from, to);\n\t\t\tthis.adjustSize(-diff, parts, to + 1);\n\n\t\t\tscale.full_width = this.getSum(parts);\n\t\t},\n\t\tsplitSize: function (width, count) {\n\t\t\tvar arr = [];\n\t\t\tfor (var i = 0; i < count; i++) arr[i] = 0;\n\n\t\t\tthis.adjustSize(width, arr);\n\t\t\treturn arr;\n\n\t\t},\n\t\tadjustSize: function (width, parts, from, to) {\n\t\t\tif (!from)\n\t\t\t\tfrom = 0;\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\n\t\t\tvar length = to - from + 1;\n\n\t\t\tvar full = this.getSum(parts, from, to);\n\n\t\t\tfor (var i = from; i <= to; i++) {\n\t\t\t\tvar share = Math.floor(width * (full ? (parts[i] / full) : (1 / length)));\n\n\t\t\t\tfull -= parts[i];\n\t\t\t\twidth -= share;\n\t\t\t\tlength--;\n\n\t\t\t\tparts[i] += share;\n\t\t\t}\n\t\t\tparts[parts.length - 1] += width;\n\t\t},\n\t\tsortScales: function (scales) {\n\t\t\tfunction cellSize(unit, step) {\n\t\t\t\tvar d = new Date(1970, 0, 1);\n\t\t\t\treturn dateHelper.add(d, step, unit) - d;\n\t\t\t}\n\n\t\t\tscales.sort(function (a, b) {\n\t\t\t\tif (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\t\tscales[i].index = i;\n\t\t\t}\n\t\t},\n\t\tprimaryScale: function () {\n\n\t\t\tvar config = services.getService(\"templateLoader\");\n\t\t\tconfig.initTemplate(\"date_scale\", undefined, undefined, services.config(), services.templates());\n\n\t\t\treturn {\n\t\t\t\tunit: services.config().scale_unit,\n\t\t\t\tstep: services.config().step,\n\t\t\t\ttemplate: services.templates().date_scale,\n\t\t\t\tdate: services.config().date_scale,\n\t\t\t\tcss: services.templates().scale_cell_class\n\t\t\t};\n\t\t},\n\n\t\tprepareConfigs: function (scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n\t\t\tvar heights = this.splitSize(scale_height, scales.length);\n\t\t\tvar full_width = container_width;\n\n\t\t\tvar configs = [];\n\t\t\tfor (var i = scales.length - 1; i >= 0; i--) {\n\t\t\t\tvar main_scale = (i == scales.length - 1);\n\t\t\t\tvar cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tthis.processIgnores(cfg);\n\t\t\t\t}\n\n\t\t\t\tthis.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n\t\t\t\tthis.limitVisibleRange(cfg);\n\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tfull_width = cfg.full_width;\n\t\t\t\t}\n\n\t\t\t\tconfigs.unshift(cfg);\n\t\t\t}\n\n\n\t\t\tfor (var i = 0; i < configs.length - 1; i++) {\n\t\t\t\tthis.alineScaleColumns(configs[configs.length - 1], configs[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < configs.length; i++) {\n\n\t\t\t\tif(rtl){\n\t\t\t\t\tthis.reverseScale(configs[i]);\n\t\t\t\t}\n\t\t\t\tthis.setPosSettings(configs[i]);\n\t\t\t}\n\t\t\treturn configs;\n\n\t\t},\n\n\t\treverseScale: function(scale){\n\t\t\tscale.width = scale.width.reverse();\n\t\t\tscale.trace_x = scale.trace_x.reverse();\n\n\t\t\tvar indexes = scale.trace_indexes;\n\t\t\tscale.trace_indexes = {};\n\t\t\tscale.trace_index_transition = {};\n\t\t\tscale.rtl = true;\n\t\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\t\tscale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n\t\t\t\tscale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n\t\t\t}\n\t\t\treturn scale;\n\t\t},\n\n\t\tsetPosSettings: function (config) {\n\t\t\tfor (var i = 0, len = config.trace_x.length; i < len; i++) {\n\t\t\t\tconfig.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n\t\t\t}\n\t\t},\n\n\t\t_ignore_time_config: function (date, scale) {\n\n\t\t\tif (services.config().skip_off_time) {\n\t\t\t\tvar skip = true;\n\t\t\t\tvar probe = date;\n\n\t\t\t\t// check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\t\t\t\tfor (var i = 0; i < scale.step; i++) {\n\t\t\t\t\tif (i) {\n\t\t\t\t\t\tprobe = dateHelper.add(date, i, scale.unit);\n\t\t\t\t\t}\n\n\t\t\t\t\tskip = skip && !this.isWorkTime(probe, scale.unit);\n\t\t\t\t}\n\n\t\t\t\treturn skip;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t//defined in an extension\n\t\tprocessIgnores: function (config) {\n\t\t\tconfig.ignore_x = {};\n\t\t\tconfig.display_count = config.count;\n\t\t},\n\t\tinitColSizes: function (config, min_col_width, full_width, line_height) {\n\t\t\tvar cont_width = full_width;\n\n\t\t\tconfig.height = line_height;\n\n\t\t\tvar column_count = config.display_count === undefined ? config.count : config.display_count;\n\n\t\t\tif (!column_count)\n\t\t\t\tcolumn_count = 1;\n\n\t\t\tconfig.col_width = Math.floor(cont_width / column_count);\n\n\t\t\tif (min_col_width) {\n\t\t\t\tif (config.col_width < min_col_width) {\n\t\t\t\t\tconfig.col_width = min_col_width;\n\t\t\t\t\tcont_width = config.col_width * column_count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconfig.width = [];\n\t\t\tvar ignores = config.ignore_x || {};\n\t\t\tfor (var i = 0; i < config.trace_x.length; i++) {\n\t\t\t\tif (ignores[config.trace_x[i].valueOf()] || (config.display_count == config.count)) {\n\t\t\t\t\tconfig.width[i] = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// width of month columns should be proportional month duration\n\t\t\t\t\tvar width = 1;\n\t\t\t\t\tif (config.unit == \"month\") {\n\t\t\t\t\t\tvar days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n\t\t\t\t\t\twidth = days;\n\t\t\t\t\t}\n\t\t\t\t\tconfig.width[i] = width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.adjustSize(cont_width - this.getSum(config.width)/* 1 width per column from the code above */, config.width);\n\t\t\tconfig.full_width = this.getSum(config.width);\n\t\t},\n\t\tinitScaleConfig: function (config, min_date, max_date) {\n\t\t\tvar cfg = utils.mixin({\n\t\t\t\tcount: 0,\n\t\t\t\tcol_width: 0,\n\t\t\t\tfull_width: 0,\n\t\t\t\theight: 0,\n\t\t\t\twidth: [],\n\t\t\t\tleft: [],\n\t\t\t\ttrace_x: [],\n\t\t\t\ttrace_indexes: {},\n\t\t\t\tmin_date: new Date(min_date),\n\t\t\t\tmax_date: new Date(max_date)\n\t\t\t}, config);\n\n\t\t\tthis.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n\t\t\t\tcfg.count++;\n\t\t\t\tcfg.trace_x.push(new Date(date));\n\t\t\t\tcfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n\t\t\t});\n\n\t\t\tcfg.trace_x_ascending = cfg.trace_x.slice();\n\t\t\treturn cfg;\n\t\t},\n\t\titerateScales: function (lower_scale, upper_scale, from, to, callback) {\n\t\t\tvar upper_dates = upper_scale.trace_x;\n\t\t\tvar lower_dates = lower_scale.trace_x;\n\n\t\t\tvar prev = from || 0;\n\t\t\tvar end = to || (lower_dates.length - 1);\n\t\t\tvar prevUpper = 0;\n\n\n\t\t\tfor (var up = 1; up < upper_dates.length; up++) {\n\t\t\t\tvar target_index = (lower_scale.trace_indexes[+upper_dates[up]]);\n\t\t\t\tif (target_index !== undefined && target_index <= end) {\n\t\t\t\t\tif (callback) {\n\t\t\t\t\t\tcallback.apply(this, [prevUpper, up, prev, target_index]);\n\t\t\t\t\t}\n\t\t\t\t\tprev = target_index;\n\t\t\t\t\tprevUpper = up;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\talineScaleColumns: function (lower_scale, upper_scale, from, to) {\n\t\t\tthis.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n\t\t\t\tvar targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n\t\t\t\tvar actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\t\t\t\tif (actualWidth != targetWidth) {\n\t\t\t\t\tthis.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n\t\t\t\t}\n\n\t\t\t});\n\t\t},\n\n\t\teachColumn: function (unit, step, min_date, max_date, callback) {\n\t\t\tvar start = new Date(min_date),\n\t\t\t\tend = new Date(max_date);\n\t\t\tif (dateHelper[unit + \"_start\"]) {\n\t\t\t\tstart = dateHelper[unit + \"_start\"](start);\n\t\t\t}\n\n\t\t\tvar curr = new Date(start);\n\t\t\tif (+curr >= +end) {\n\t\t\t\tend = dateHelper.add(curr, step, unit);\n\t\t\t}\n\t\t\twhile (+curr < +end) {\n\t\t\t\tcallback.call(this, new Date(curr));\n\t\t\t\tvar tzOffset = curr.getTimezoneOffset();\n\t\t\t\tcurr = dateHelper.add(curr, step, unit);\n\t\t\t\tcurr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n\t\t\t\tif (dateHelper[unit + '_start'])\n\t\t\t\t\tcurr = dateHelper[unit + \"_start\"](curr);\n\t\t\t}\n\t\t},\n\t\tlimitVisibleRange: function (cfg) {\n\t\t\tvar dates = cfg.trace_x;\n\n\t\t\tvar left = 0, right = cfg.width.length - 1;\n\t\t\tvar diff = 0;\n\t\t\tif (+dates[0] < +cfg.min_date && left != right) {\n\t\t\t\tvar width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n\t\t\t\tdiff += cfg.width[0] - width;\n\t\t\t\tcfg.width[0] = width;\n\n\t\t\t\tdates[0] = new Date(cfg.min_date);\n\t\t\t}\n\n\t\t\tvar last = dates.length - 1;\n\t\t\tvar lastDate = dates[last];\n\t\t\tvar outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\t\t\tif (+outDate > +cfg.max_date && last > 0) {\n\t\t\t\tvar width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n\t\t\t\tdiff += cfg.width[last] - width;\n\t\t\t\tcfg.width[last] = width;\n\t\t\t}\n\n\t\t\tif (diff) {\n\t\t\t\tvar full = this.getSum(cfg.width);\n\t\t\t\tvar shared = 0;\n\t\t\t\tfor (var i = 0; i < cfg.width.length; i++) {\n\t\t\t\t\tvar share = Math.floor(diff * (cfg.width[i] / full));\n\t\t\t\t\tcfg.width[i] += share;\n\t\t\t\t\tshared += share;\n\t\t\t\t}\n\t\t\t\tthis.adjustSize(diff - shared, cfg.width);\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = ScaleHelper;\n","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tCell = require(\"./cell\");\n\nvar Layout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(Layout, _super);\n\tfunction Layout(parent, config, factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(parent)\n\t\t\t_this.$root = true;\n\n\t\t_this._parseConfig(config);\n\t\t_this.$name = \"layout\";\n\t\treturn _this;\n\t}\n\n\tLayout.prototype.destructor = function () {\n\t\tif (this.$container && this.$view) {\n\t\t\tdomHelpers.removeNode(this.$view);\n\t\t}\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tchild.destructor();\n\t\t}\n\t\tthis.$cells = [];\n\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tLayout.prototype._resizeScrollbars = function(autosize, scrollbars){\n\t\tvar scrollChanged = false;\n\t\tvar visibleScrollbars = [],\n\t\t\thiddenSrollbars = [];\n\n\t\tfunction showScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.show();\n\t\t\tscrollChanged = true;\n\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t}\n\t\tfunction hideScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.hide();\n\t\t\tscrollChanged = true;\n\t\t\thiddenSrollbars.push(scrollbar);\n\t\t}\n\n\t\tvar scrollbar;\n\t\tfor(var i = 0; i < scrollbars.length; i++){\n\t\t\tscrollbar = scrollbars[i];\n\n\t\t\tif(autosize[scrollbar.$config.scroll]) {\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldHide()){\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldShow()){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t}else{\n\t\t\t\tif(scrollbar.isVisible()){\n\t\t\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t\t\t}else{\n\t\t\t\t\thiddenSrollbars.push(scrollbar);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar visibleGroups = {};\n\t\tfor(var i = 0; i < visibleScrollbars.length; i++){\n\t\t\tif(visibleScrollbars[i].$config.group){\n\t\t\t\tvisibleGroups[visibleScrollbars[i].$config.group] = true;\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0; i < hiddenSrollbars.length; i++){\n\t\t\tscrollbar = hiddenSrollbars[i];\n\n\t\t\tif(scrollbar.$config.group && visibleGroups[scrollbar.$config.group]){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t}\n\t\t}\n\n\t\treturn scrollChanged;\n\t};\n\n\tLayout.prototype._syncCellSizes = function(groupName, newSize){\n\t\tif(!groupName)\n\t\t\treturn;\n\n\t\tvar groups = {};\n\n\t\tthis._eachChild(function(cell){\n\t\t\tif(cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\"){\n\t\t\t\tif(!groups[cell.$config.group]){\n\t\t\t\t\tgroups[cell.$config.group] = [];\n\t\t\t\t}\n\t\t\t\tgroups[cell.$config.group].push(cell);\n\t\t\t}\n\t\t});\n\n\t\tif(groups[groupName]){\n\t\t\tthis._syncGroupSize(groups[groupName], newSize);\n\t\t}\n\t\treturn groups[groupName];\n\t};\n\n\tLayout.prototype._syncGroupSize = function(cells, newSize){\n\t\tif(!cells.length) return;\n\n\t\tvar property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n\t\tvar direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tvar ownSize = cells[i].getSize();\n\n\t\t\tvar resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\t\t\tif(resizeSibling.$name == \"resizer\"){\n\t\t\t\tresizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n\t\t\t}\n\t\t\tvar siblingSize = resizeSibling.getSize();\n\n\t\t\tif(resizeSibling[property]){\n\t\t\t\tvar totalGravity = ownSize.gravity + siblingSize.gravity;\n\t\t\t\tvar totalSize = ownSize[property] + siblingSize[property];\n\t\t\t\tvar k = totalGravity / totalSize;\n\t\t\t\tcells[i].$config.gravity = k * newSize;\n\n\t\t\t\tresizeSibling.$config[property] = totalSize - newSize;\n\t\t\t\tresizeSibling.$config.gravity = totalGravity - k * newSize;\n\t\t\t}else{\n\n\n\t\t\t\tcells[i].$config[property] = newSize;\n\t\t\t}\n\n\t\t\tvar mainGrid = this.$gantt.$ui.getView(\"grid\");\n\t\t\tif(mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable){\n\t\t\t\tthis.$gantt.config.grid_width = newSize;\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.resize = function(startStage){\n\t\tvar mainCall = false;\n\t\tif(this.$root && !this._resizeInProgress){\n\t\t\tthis.callEvent(\"onBeforeResize\", []);\n\t\t\tmainCall = true;\n\t\t\tthis._resizeInProgress = true;\n\t\t}\n\n\t\t_super.prototype.resize.call(this, true);\n\t\t_super.prototype.resize.call(this, false);\n\n\t\tif(mainCall){\n\n\t\t\tvar contentViews = [];\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n\n\t\t\tvar scrollbars = this.getCellsByType(\"scroller\");\n\n\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t}\n\n\t\t\tvar autosize = this._getAutosizeMode(this.$config.autosize);\n\n\t\t\tvar scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n\t\t\tif(this.$config.autosize){\n\t\t\t\tthis.autosize(this.$config.autosize);\n\t\t\t\tscrollChanged = true;\n\t\t\t}\n\n\t\t\tif(scrollChanged){\n\t\t\t\tthis.resize();\n\t\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onResize\", []);\n\t\t}\n\t\tif(mainCall){\n\t\t\tthis._resizeInProgress = false;\n\t\t}\n\t};\n\n\tLayout.prototype._eachChild = function(code, cell){\n\t\tcell = cell || this;\n\t\tcode(cell);\n\t\tif(cell.$cells){\n\t\t\tfor(var i = 0; i < cell.$cells.length; i++){\n\t\t\t\tthis._eachChild(code, cell.$cells[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.isChild = function(view){\n\t\tvar res = false;\n\t\tthis._eachChild(function(child){\n\t\t\tif(child === view || child.$content === view){\n\t\t\t\tres = true;\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getCellsByType = function(type){\n\t\tvar res = [];\n\t\tif(type === this.$name){\n\t\t\tres.push(this);\n\t\t}\n\n\t\tif(this.$content && this.$content.$name == type){\n\t\t\tres.push(this.$content);\n\t\t}\n\n\t\tif(this.$cells){\n\t\t\tfor(var i = 0; i < this.$cells.length; i++){\n\t\t\t\tvar children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\t\t\t\tif(children.length){\n\t\t\t\t\tres.push.apply(res, children);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getNextSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index + 1]){\n\t\t\treturn this.$cells[index + 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tLayout.prototype.getPrevSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index - 1]){\n\t\t\treturn this.$cells[index - 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\n\tLayout.prototype.cell = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tif (child.$id === id) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t\tvar sub = child.cell(id);\n\t\t\tif (sub) {\n\t\t\t\treturn sub;\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.cellIndex = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tif (this.$cells[i].$id === id) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t};\n\tLayout.prototype.moveView = function (view, ind) {\n\t\tif (this.$cells[ind] !== view) {\n\t\t\treturn window.alert(\"Not implemented\");\n\t\t}\n\t\telse {\n\t\t\tind += this.$config.header ? 1 : 0;\n\t\t\tvar node = this.$view;\n\t\t\tif (ind >= node.childNodes.length) {\n\t\t\t\tnode.appendChild(view.$view);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.insertBefore(view.$view, node.childNodes[ind]);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype._parseConfig = function (config) {\n\t\tthis.$cells = [];\n\t\tthis._xLayout = !config.rows;\n\t\tvar cells = config.rows || config.cols || config.views;\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tvar cell = cells[i];\n\t\t\tcell.mode = this._xLayout ? \"x\" : \"y\";\n\t\t\tvar $content = this.$factory.initUI(cell, this);\n\t\t\tif(!$content){\n\t\t\t\tcells.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}else{\n\t\t\t\t$content.$parent = this;\n\t\t\t\tthis.$cells.push($content);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.getCells = function () {\n\t\treturn this.$cells;\n\t};\n\tLayout.prototype.render = function () {\n\t\tvar view = domHelpers.insertNode(this.$container, this.$toHTML());\n\t\tthis.$fill(view, null);\n\t\tthis.callEvent(\"onReady\", []);\n\t\tthis.resize();\n\n\t\t// do simple repaint after the first call\n\t\tthis.render = this.resize;\n\t};\n\tLayout.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tvar cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\t\tfor (var i = cells.length - 1; i >= 0; i--) {\n\t\t\tvar sub = this.$cells[i];\n\t\t\tsub.$fill(cells[i], this);\n\t\t\t// initially hidden cell\n\t\t\tif (sub.$config.hidden) {\n\t\t\t\tsub.$view.parentNode.removeChild(sub.$view);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.$toHTML = function () {\n\t\tvar mode = this._xLayout ? \"x\" : \"y\";\n\t\tvar html = [];\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\thtml.push(this.$cells[i].$toHTML());\n\t\t}\n\t\treturn _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n\t};\n\n\tLayout.prototype.getContentSize = function(mode){\n\t\tvar contentWidth = 0,\n\t\t\tcontentHeight = 0;\n\n\t\tvar cellSize, cell, borders;\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\t\t\tif(cell.$config.hidden)\n\t\t\t\tcontinue;\n\n\t\t\tcellSize = cell.getContentSize(mode);\n\n\t\t\tif(cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]){\n\t\t\t\tcellSize.height = 0;\n\t\t\t\tcellSize.width = 0;\n\t\t\t}\n\n\t\t\tif(cell.$config.resizer){\n\t\t\t\tif(this._xLayout){\n\t\t\t\t\tcellSize.height = 0;\n\t\t\t\t}else{\n\t\t\t\t\tcellSize.width = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tborders = cell._getBorderSizes();\n\n\t\t\tif(this._xLayout){\n\t\t\t\tcontentWidth += (cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight = Math.max(contentHeight, (cellSize.height + borders.vertical));\n\t\t\t}else{\n\t\t\t\tcontentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight += cellSize.height + borders.vertical;\n\t\t\t}\n\t\t}\n\n\t\tborders = this._getBorderSizes();\n\t\tcontentWidth += borders.horizontal;\n\t\tcontentHeight += borders.vertical;\n\n\t\tif(this.$root){\n\t\t\tcontentWidth += 1;\n\t\t\tcontentHeight += 1;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: contentWidth,\n\t\t\theight: contentHeight\n\t\t};\n\t};\n\n\tLayout.prototype._cleanElSize = function(value){\n\t\treturn ((value || \"\").toString().replace(\"px\", \"\") * 1 || 0);\n\t};\n\tLayout.prototype._getBoxStyles = function(div){\n\t\tvar computed = null;\n\t\tif(window.getComputedStyle){\n\t\t\tcomputed = window.getComputedStyle(div, null);\n\t\t}else{\n\t\t\t//IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n\t\t\tcomputed = {\n\t\t\t\t\"width\":div.clientWidth,\n\t\t\t\t\"height\":div.clientHeight\n\t\t\t};\n\t\t}\n\t\tvar properties = [\n\t\t\t\"width\",\n\t\t\t\"height\",\n\n\t\t\t\"paddingTop\",\n\t\t\t\"paddingBottom\",\n\t\t\t\"paddingLeft\",\n\t\t\t\"paddingRight\",\n\n\t\t\t\"borderLeftWidth\",\n\t\t\t\"borderRightWidth\",\n\t\t\t\"borderTopWidth\",\n\t\t\t\"borderBottomWidth\"\n\t\t];\n\t\tvar styles = {\n\t\t\tboxSizing:(computed.boxSizing == \"border-box\")\n\t\t};\n\n\t\tif(computed.MozBoxSizing){\n\t\t\tstyles.boxSizing = (computed.MozBoxSizing == \"border-box\");\n\t\t}\n\t\tfor(var i =0; i < properties.length; i++){\n\t\t\tstyles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n\t\t}\n\n\n\t\tvar box = {\n\t\t\thorPaddings : (styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth),\n\t\t\tvertPaddings : (styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth),\n\t\t\tborderBox: styles.boxSizing,\n\t\t\tinnerWidth : styles.width,\n\t\t\tinnerHeight : styles.height,\n\t\t\touterWidth : styles.width,\n\t\t\touterHeight : styles.height\n\t\t};\n\n\n\t\tif(box.borderBox){\n\t\t\tbox.innerWidth -= box.horPaddings;\n\t\t\tbox.innerHeight -= box.vertPaddings;\n\t\t}else{\n\t\t\tbox.outerWidth += box.horPaddings;\n\t\t\tbox.outerHeight += box.vertPaddings;\n\t\t}\n\n\t\treturn box;\n\t};\n\n\tLayout.prototype._getAutosizeMode = function(config){\n\t\tvar res = {x:false, y:false};\n\t\tif(config === \"xy\"){\n\t\t\tres.x = res.y = true;\n\t\t}else if(config === \"y\" || config === true){\n\t\t\tres.y = true;\n\t\t}else if(config === \"x\"){\n\t\t\tres.x = true;\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.autosize = function(mode) {\n\t\tvar res = this._getAutosizeMode(mode);\n\t\tvar boxSizes = this._getBoxStyles(this.$container);\n\t\tvar contentSizes = this.getContentSize(mode);\n\n\t\tvar node = this.$container;\n\t\tif(res.x){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.width += boxSizes.horPaddings;\n\t\t\t}\n\t\t\tnode.style.width = contentSizes.width + \"px\";\n\t\t}\n\t\tif(res.y){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.height += boxSizes.vertPaddings;\n\t\t\t}\n\t\t\tnode.style.height = contentSizes.height + \"px\";\n\t\t}\n\t};\n\n\tLayout.prototype.getSize = function () {\n\t\tthis._sizes = [];\n\t\tvar width = 0;\n\t\tvar minWidth = 0;\n\t\tvar maxWidth = 100000;\n\t\tvar height = 0;\n\t\tvar maxHeight = 100000;\n\t\tvar minHeight = 0;\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\n\t\t\tvar size = this._sizes[i] = this.$cells[i].getSize();\n\t\t\tif (this.$cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width && size.minWidth) {\n\t\t\t\t\twidth += size.minWidth;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twidth += size.width;\n\t\t\t\t}\n\t\t\t\tmaxWidth += size.maxWidth;\n\t\t\t\tminWidth += size.minWidth;\n\t\t\t\theight = Math.max(height, size.height);\n\t\t\t\tmaxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\t\t\t\tminHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height && size.minHeight) {\n\t\t\t\t\theight += size.minHeight;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\theight += size.height;\n\t\t\t\t}\n\t\t\t\tmaxHeight += size.maxHeight;\n\t\t\t\tminHeight += size.minHeight;\n\t\t\t\twidth = Math.max(width, size.width);\n\t\t\t\tmaxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\t\t\t\tminWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n\t\t\t}\n\t\t}\n\t\tvar self = _super.prototype.getSize.call(this);\n\t\t// maxWidth\n\t\tif (self.maxWidth >= 100000) {\n\t\t\tself.maxWidth = maxWidth;\n\t\t}\n\t\t// maxHeight\n\t\tif (self.maxHeight >= 100000) {\n\t\t\tself.maxHeight = maxHeight;\n\t\t}\n\t\t// minWidth\n\t\tself.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth;// || self.width || Math.max(minWidth, width);\n\t\t// minHeight\n\t\tself.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight;//self.minHeight || self.height || Math.max(minHeight, height);\n\t\t// sizes with paddings and margins\n\t\tif (this._xLayout) {\n\t\t\tself.minWidth += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minWidth += this.$config.padding * 2 || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\telse {\n\t\t\tself.minHeight += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\t\n\t\treturn self;\n\t};\n\t// calc total gravity and free space\n\tLayout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n\t\tvar min = xLayout ? cell.minWidth : cell.minHeight;\n\t\tvar max = xLayout ? cell.maxWidth : cell.maxWidth;\n\t\tvar side = s;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * cell.gravity);\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t}\n\t\t\tthis._free -= side;\n\t\t}\n\t\treturn side;\n\t};\n\tLayout.prototype._calcSize = function (s, size, xLayout) {\n\t\tvar side = s;\n\t\tvar min = xLayout ? size.minWidth : size.minHeight;\n\t\tvar max = xLayout ? size.maxWidth : size.maxHeight;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * size.gravity);\n\t\t}\n\t\tif (side > max) {\n\t\t\tside = max;\n\t\t}\n\t\tif (side < min) {\n\t\t\tside = min;\n\t\t}\n\t\treturn side;\n\t};\n\n\tLayout.prototype._configureBorders = function(){\n\t\tif(this.$root){\n\t\t\tthis._setBorders([\n\t\t\t\tthis._borders.left,\n\t\t\t\tthis._borders.top,\n\t\t\t\tthis._borders.right,\n\t\t\t\tthis._borders.bottom\n\t\t\t],\n\t\t\tthis);\n\t\t}\n\n\t\tvar borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n\n\t\tvar cells = this.$cells;\n\n\t\tvar lastVisibleIndex = cells.length - 1;\n\t\tfor(var i = lastVisibleIndex; i >= 0; i--){\n\t\t\tif (!cells[i].$config.hidden) {\n\t\t\t\tlastVisibleIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tif (cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar lastCell = i >= lastVisibleIndex;\n\t\t\tvar borderColorClass = \"\";\n\t\t\tif(!lastCell && cells[i + 1]){\n\t\t\t\tif(cells[i + 1].$config.view == \"scrollbar\"){\n\t\t\t\t\tif(this._xLayout){\n\t\t\t\t\t\tlastCell = true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tborderColorClass = \"gantt_layout_cell_border_transparent\";\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tthis._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n\t\t}\n\t};\n\n\tLayout.prototype._updateCellVisibility = function(){\n\t\tvar oldVisibleCells = this._visibleCells || {};\n\t\tvar firstCall = !this._visibleCells;\n\t\tvar visibleCells = {};\n\t\tvar cell;\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n\t\t\t\tcell._hide(true);\n\t\t\t}else if(!cell.$config.hidden && !oldVisibleCells[cell.$id]){\n\t\t\t\tcell._hide(false);\n\t\t\t}\n\n\t\t\tif(!cell.$config.hidden){\n\t\t\t\tvisibleCells[cell.$id] = true;\n\t\t\t}\n\t\t}\n\t\tthis._visibleCells = visibleCells;\n\t};\n\n\tLayout.prototype.setSize = function (x, y) {\n\t\tthis._configureBorders();\n\t\t_super.prototype.setSize.call(this, x, y);\n\t\ty = this.$lastSize.contentY;\n\t\tx = this.$lastSize.contentX;\n\n\t\tvar padding = (this.$config.padding || 0);\n\t\tthis.$view.style.padding = padding + \"px\";\n\t\tthis._gravity = 0;\n\t\tthis._free = this._xLayout ? x : y;\n\t\tthis._free -= padding * 2;\n\t\t// calc all gravity\n\n\t\tvar cell,\n\t\t\tsize;\n\n\t\tthis._updateCellVisibility();\n\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar margin = (this.$config.margin || 0);\n\t\t\tif(cell.$name == \"resizer\" && !margin){\n\t\t\t\tmargin = -1;\n\t\t\t}\n\n\t\t\t// set margins to child cell\n\t\t\tvar cellView = cell.$view;\n\n\t\t\tvar marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\t\t\tif (i !== this.$cells.length - 1) {\n\t\t\t\tcellView.style[marginSide] = margin + \"px\";\n\t\t\t\tthis._free -= margin; // calc free space without margin\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar width = size.width;\n\t\t\tvar height = size.height;\n\t\t\tif (this._xLayout) {\n\t\t\t\tthis._calcFreeSpace(width, size, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._calcFreeSpace(height, size, false);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar dx = void 0;\n\t\t\tvar dy = void 0;\n\t\t\tif (this._xLayout) {\n\t\t\t\tdx = this._calcSize(size.width, size, true);\n\t\t\t\tdy = y - padding * 2; // layout height without paddings\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdx = x - padding * 2; // layout width without paddings\n\t\t\t\tdy = this._calcSize(size.height, size, false);\n\t\t\t}\n\n\t\t\tcell.setSize(dx, dy);\n\t\t}\n\n\t};\n\n\treturn Layout;\n}(Cell));\n\nmodule.exports = Layout;","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function checkTimeout(host, updPerSecond){\n\tif (!updPerSecond)\n\t\treturn true;\n\t\n\tif (host._on_timeout)\n\t\treturn false;\n\t\n\tvar timeout = Math.ceil(1000/updPerSecond);\n\tif (timeout < 2) return true;\n\n\tsetTimeout(function(){\n\t\tdelete host._on_timeout;\n\t}, timeout);\n\n\thost._on_timeout = true;\n\treturn true;\n}\n\nmodule.exports = checkTimeout;","function extend(gantt){\n\n\tgantt.destructor = function(){\n\t\tgantt.callEvent(\"onDestroy\", []);\n\n\t\tthis.clearAll();\n\n\t\tif(this.$root){\n\t\t\tdelete this.$root.gantt;\n\t\t}\n\n\t\tthis._eventRemoveAll();\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t}\n\n\t\tthis.resetLightbox();\n\n\t\tif(this._dp && this._dp.destructor){\n\t\t\tthis._dp.destructor();\n\t\t}\n\t\tthis.$services.destructor();\n\n\t\t// detachAllEvents should be called last, because in components may be attached events\n\t\tthis.detachAllEvents();\n\n\t\tfor(var i in this){\n\t\t\tif(i.indexOf(\"$\") === 0){\n\t\t\t\tdelete this[i];\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = extend;\n","/*\n \tasserts will be removed in final code, so you can place them anythere\n\twithout caring about performance impacts\n*/\n\nmodule.exports = function(gantt){\n\treturn function assert(check, message){\n\t\tif (!check){\n\t\t\tif(gantt.config.show_errors && gantt.callEvent(\"onError\",[message]) !== false) {\n\t\t\t\tgantt.message({type: \"error\", text: message, expire: -1});\n\n\t\t\t\t// eslint-disable-next-line no-debugger\n\t\t\t\tdebugger;\n\t\t\t}\n\t\t}\n\t};\n};","var domHelpers = require(\"../utils/dom_helpers\"),\n\thelpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt){\n\tvar calculateScaleRange = require(\"./gantt_data_range\");\n\n\tgantt.assert = require(\"./common/assert\")(gantt);\n\n//initial initialization\n\tgantt.init = function(node, from, to){\n\t\tif(from && to){\n\t\t\tthis.config.start_date = this._min_date = new Date(from);\n\t\t\tthis.config.end_date = this._max_date = new Date(to);\n\t\t}\n\t\tthis.date.init();\n\n\t\tif (!this.config.scroll_size)\n\t\t\tthis.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n\t\t//can be called only once\n\t\tthis.init = function(node){\n\t\t\tif (this.$container && this.$container.parentNode){\n\t\t\t\tthis.$container.parentNode.removeChild(this.$container);\n\t\t\t\tthis.$container = null;\n\t\t\t}\n\n\t\t\tif(this.$layout){\n\t\t\t\tthis.$layout.clear();\n\t\t\t}\n\t\t\tthis._reinit(node);\n\t\t};\n\n\t\tthis._reinit(node);\n\t};\n\n\tgantt._reinit = function(node){\n\t\tthis.callEvent(\"onBeforeGanttReady\", []);\n\n\t\t// detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n\t\tthis._eventRemoveAll();\n\t\tthis.$mouseEvents.reset();\n\n\t\tthis.resetLightbox();\n\t\tthis._update_flags();\n\n\n\t\tvar config = this.$services.getService(\"templateLoader\");\n\t\tconfig.initTemplates(this);\n\n\t\tthis._clearTaskLayers();\n\t\tthis._clearLinkLayers();\n\n\t\t//this.clear\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t\tthis.$ui.reset();\n\t\t}\n\n\t\tthis.$root = domHelpers.toNode(node);\n\t\tif(this.$root){\n\t\t\tthis.$root.innerHTML = \"\";\n\t\t}\n\t\tthis.$root.gantt = this;\n\t\tcalculateScaleRange(this);\n\t\tthis.config.layout.id = \"main\";\n\t\tthis.$layout = this.$ui.createView(\"layout\", node, this.config.layout);\n\n\t\tthis.$layout.attachEvent(\"onBeforeResize\", function(){\n\t\t\tvar storeNames = gantt.$services.getService(\"datastores\");\n\t\t\tfor(var i = 0; i < storeNames.length; i++){\n\t\t\t\tgantt.getDatastore(storeNames[i]).filter();\n\t\t\t}\n\t\t});\n\n\t\tthis.$layout.attachEvent(\"onResize\", function(){\n\t\t\tgantt.refreshData();\n\t\t});\n\n\t\tthis.callEvent(\"onGanttLayoutReady\", []);\n\t\tthis.$layout.render();\n\n\t\tgantt.$container = this.$layout.$container.firstChild;\n\n\t\taddResizeListener(gantt);\n\n\t\tthis.callEvent(\"onTemplatesReady\",[]);\n\t\tthis.$mouseEvents.reset(this.$root);\n\t\tthis.callEvent(\"onGanttReady\", []);\n\n\t\tthis.render();\n\t};\n\n\tfunction addResizeListener(gantt){\n\t\tvar containerStyles = window.getComputedStyle(gantt.$root);\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\n\t\t\tgantt.$root.style.position = \"relative\";\n\t\t}\n\n\t\tvar resizeWatcher = document.createElement('iframe');\n\t\tresizeWatcher.className = \"gantt_container_resize_watcher\";\n\t\tresizeWatcher.tabIndex = -1;\n\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\t\tgantt.$root.appendChild(resizeWatcher);\n\t\tif (resizeWatcher.contentWindow) {\n\t\t\tlistenWindowResize(gantt, resizeWatcher.contentWindow);\n\t\t} else {\n\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\n\t\t\tgantt.$root.removeChild(resizeWatcher);\n\t\t\tlistenWindowResize(gantt, window);\n\t\t}\n\t}\n\n\tfunction listenWindowResize(gantt, window){\n\t\tvar resizeDelay;\n\t\tgantt.event(window, \"resize\", function(){\n\t\t\tclearTimeout(resizeDelay);\n\t\t\tresizeDelay = setTimeout(function(){\n\t\t\t\tgantt.render();\n\t\t\t}, 300);\n\t\t});\n\t}\n\n\tgantt.$click={\n\t\tbuttons:{\n\t\t\t\"edit\":function(id){\n\t\t\t\tgantt.showLightbox(id);\n\t\t\t},\n\t\t\t\"delete\":function(id){\n\t\t\t\tvar question = gantt.locale.labels.confirm_deleting;\n\t\t\t\tvar title = gantt.locale.labels.confirm_deleting_title;\n\n\t\t\t\tgantt._dhtmlx_confirm(question, title, function(){\n\t\t\t\t\tif(!gantt.isTaskExists(id)){\n\t\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\t\tif(task.$new){\n\t\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\t\tgantt.deleteTask(id, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tgantt.refreshData();\n\t\t\t\t\t}else{\n\t\t\t\t\t\tgantt.deleteTask(id);\n\t\t\t\t\t}\n\n\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n//renders self\n\tgantt.render = function(){\n\t\tthis.callEvent(\"onBeforeGanttRender\", []);\n\n\t\tif (!this.config.sort && this._sort) {\n\t\t\tthis._sort = undefined;\n\t\t}\n\n\t\tvar pos = this.getScrollState();\n\t\tvar posX = pos ? pos.x : 0;\n\t\tif(this._getHorizontalScrollbar()){\n\t\t\tvar scrollbar = this._getHorizontalScrollbar();\n\t\t\tposX = scrollbar.$config.codeScrollLeft || posX || 0;\n\t\t}\n\n\n\t\tvar visible_date = null;\n\t\tif(posX){\n\t\t\tvisible_date = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n\t\t}\n\t\tcalculateScaleRange(this);\n\n\t\tthis.$layout.$config.autosize = this.config.autosize;\n\t\tthis.$layout.resize();\n\n\t\tif(this.config.preserve_scroll && pos){\n\n\t\t\tif(posX){\n\t\t\t\tvar new_pos = gantt.getScrollState();\n\t\t\t\tvar new_date = gantt.dateFromPos(new_pos.x);\n\t\t\t\tif(!(+visible_date == +new_date && new_pos.y == pos.y)){\n\t\t\t\t\tif(visible_date){\n\t\t\t\t\t\tthis.showDate(visible_date);\n\t\t\t\t\t}\n\t\t\t\t\tif(pos.y)\n\t\t\t\t\t\tgantt.scrollTo(undefined, pos.y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.callEvent(\"onGanttRender\", []);\n\t};\n\n\t//TODO: add layout.resize method that wouldn't trigger data repaint\n\tgantt.setSizes = gantt.render;\n\n\tgantt.locate = function(e) {\n\t\tvar trg = domHelpers.getTargetNode(e);\n\n\t\t//ignore empty cells\n\t\tvar className = domHelpers.getClassName(trg);\n\t\tif ((className || \"\").indexOf(\"gantt_task_cell\") >= 0) return null;\n\n\t\tvar targetAttribute = arguments[1] || this.config.task_attribute;\n\n\t\tvar node = domHelpers.locateAttribute(trg, targetAttribute);\n\t\tif(node){\n\t\t\treturn node.getAttribute(targetAttribute);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tgantt._locate_css = function(e, classname, strict){\n\t\treturn domHelpers.locateClassName(e, classname, strict);\n\t};\n\n\tgantt._locateHTML = function(e, attribute) {\n\t\treturn domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n\t};\n\n\tgantt.getTaskRowNode = function(id) {\n\t\tvar els = this.$grid_data.childNodes;\n\t\tvar attribute = this.config.task_attribute;\n\t\tfor (var i = 0; i < els.length; i++) {\n\t\t\tif (els[i].getAttribute) {\n\t\t\t\tvar value = els[i].getAttribute(attribute);\n\t\t\t\tif (value == id) return els[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tgantt.changeLightboxType = function(type){\n\t\tif(this.getLightboxType() == type)\n\t\t\treturn true;\n\t\tgantt._silent_redraw_lightbox(type);\n\t};\n\n\n\tgantt._get_link_type = function (from_start, to_start) {\n\t\tvar type = null;\n\t\tif (from_start && to_start) {\n\t\t\ttype = gantt.config.links.start_to_start;\n\t\t} else if (!from_start && to_start) {\n\t\t\ttype = gantt.config.links.finish_to_start;\n\t\t} else if (!from_start && !to_start) {\n\t\t\ttype = gantt.config.links.finish_to_finish;\n\t\t} else if (from_start && !to_start) {\n\t\t\ttype = gantt.config.links.start_to_finish;\n\t\t}\n\t\treturn type;\n\t};\n\n\tgantt.isLinkAllowed = function (from, to, from_start, to_start) {\n\t\tvar link = null;\n\t\tif (typeof(from) == \"object\") {\n\t\t\tlink = from;\n\t\t} else {\n\t\t\tlink = {source: from, target: to, type: this._get_link_type(from_start, to_start)};\n\t\t}\n\n\t\tif (!link) return false;\n\t\tif (!(link.source && link.target && link.type)) return false;\n\t\tif (link.source == link.target) return false;\n\n\t\tvar res = true;\n\t\t//any custom rules\n\t\tif (this.checkEvent(\"onLinkValidation\"))\n\t\t\tres = this.callEvent(\"onLinkValidation\", [link]);\n\n\t\treturn res;\n\t};\n\n\n\tgantt._correct_dst_change = function(date, prevOffset, step, unit){\n\t\tvar time_unit = helpers.getSecondsInUnit(unit) * step;\n\t\tif(time_unit > 60*60 && time_unit < 60*60*24){\n\t\t\t//correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n\t\t\tvar offsetChanged = date.getTimezoneOffset() - prevOffset;\n\t\t\tif(offsetChanged){\n\t\t\t\tdate = gantt.date.add(date, offsetChanged, \"minute\");\n\t\t\t}\n\t\t}\n\t\treturn date;\n\t};\n\n\tgantt.isSplitTask = function(task){\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSplitTask. Task object was expected\");\n\t\treturn this.$data.tasksStore._isSplitItem(task);\n\t};\n\n\tgantt._is_icon_open_click = function(e) {\n\t\tif (!e)\n\t\t\treturn false;\n\t\tvar target = e.target || e.srcElement;\n\t\tif (!(target && target.className))\n\t\t\treturn false;\n\t\tvar className = domHelpers.getClassName(target);\n\t\tif (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1))\n\t\t\treturn true;\n\t\treturn false;\n\t};\n\n};","// default locale\n// load locale definition and wrap it into module build-time\nmodule.exports = function (gantt) {\n\tgantt.locale = {\n\tdate: {\n\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"New task\",\n\t\ticon_save: \"Save\",\n\t\ticon_cancel: \"Cancel\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Edit\",\n\t\ticon_delete: \"Delete\",\n\t\tconfirm_closing: \"\",//Your changes will be lost, are you sure?\n\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\n\t\tsection_description: \"Description\",\n\t\tsection_time: \"Time period\",\n\t\tsection_type: \"Type\",\n\n\t\t/* grid columns */\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancel\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n};","module.exports = function(gantt) {\n\n\tgantt.config.touch_drag = 500; //nearly immediate dnd\n\tgantt.config.touch = true;\n\tgantt.config.touch_feedback = true;\n\tgantt.config.touch_feedback_duration = 1;\n\tgantt._prevent_touch_scroll = false;\n\n\n\tgantt._touch_feedback = function () {\n\t\tif (gantt.config.touch_feedback) {\n\t\t\tif (navigator.vibrate)\n\t\t\t\tnavigator.vibrate(gantt.config.touch_feedback_duration);\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onGanttReady\", gantt.bind(function(){\n\t\tif (this.config.touch != \"force\")\n\t\t\tthis.config.touch = this.config.touch &&\n\t\t\t\t((navigator.userAgent.indexOf(\"Mobile\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"iPad\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Android\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Touch\") != -1));\n\n\t\tif (this.config.touch) {\n\n\t\t\tvar touchEventsSupported = true;\n\t\t\ttry {\n\t\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t\t} catch (e) {\n\t\t\t\ttouchEventsSupported = false;\n\t\t\t}\n\n\t\t\tif (touchEventsSupported) {\n\t\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\t\tif (ev.touches[0])\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttarget: ev.target,\n\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t\t};\n\t\t\t\t\telse\n\t\t\t\t\t\treturn ev;\n\t\t\t\t}, function () {\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t} else if (window.navigator.pointerEnabled) {\n\t\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\n\t\t\t\t});\n\t\t\t} else if (window.navigator.msPointerEnabled) {\n\t\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\t}, gantt));\n\n\n\tfunction getTaskDND(){\n\t\tvar _tasks_dnd;\n\t\tif(gantt.$ui.getView(\"timeline\")){\n\t\t\t_tasks_dnd = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n\t\t}\n\t\treturn _tasks_dnd;\n\t}\n\n\tvar touchHandlers = [];\n\n//we can't use native scrolling, as we need to sync momentum between different parts\n//so we will block native scroll and use the custom one\n//in future we can add custom momentum\n\tgantt._touch_events = function (names, accessor, ignore) {\n\t\t//webkit on android need to be handled separately\n\t\tvar dblclicktime = 0;\n\t\tvar action_mode = false;\n\t\tvar scroll_mode = false;\n\t\tvar action_start = null;\n\t\tvar scroll_state;\n\t\tvar long_tap_timer = null;\n\t\tvar current_target = null;\n\n\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\t\ttouchHandlers = [];\n\n\t\t//touch move\n\t\ttouchHandlers.push([gantt.$container, names[0], function (e) {\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\t\tif (ignore(e)) return;\n\n\t\t\t\t//ignore common and scrolling moves\n\t\t\t\tif (!action_mode) return;\n\n\t\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\n\n\t\t\t\tvar source = accessor(e);\n\t\t\t\tif (_tasks_dnd && (_tasks_dnd.drag.id || _tasks_dnd.drag.start_drag)) {\n\t\t\t\t\t_tasks_dnd.on_mouse_move(source);\n\t\t\t\t\tif (e.preventDefault)\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.cancelBubble = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!gantt._prevent_touch_scroll) {\n\t\t\t\t\tif (source && action_start) {\n\t\t\t\t\t\tvar dx = action_start.pageX - source.pageX;\n\t\t\t\t\t\tvar dy = action_start.pageY - source.pageY;\n\t\t\t\t\t\tif (!scroll_mode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n\t\t\t\t\t\t\tgantt._touch_scroll_active = scroll_mode = true;\n\t\t\t\t\t\t\tdblclicktime = 0;\n\t\t\t\t\t\t\tscroll_state = gantt.getScrollState();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (scroll_mode) {\n\t\t\t\t\t\t\tgantt.scrollTo(scroll_state.x + dx, scroll_state.y + dy);\n\t\t\t\t\t\t\tvar new_scroll_state = gantt.getScrollState();\n\n\t\t\t\t\t\t\tif ((scroll_state.x != new_scroll_state.x && dy > 2 * dx) ||\n\t\t\t\t\t\t\t\t(scroll_state.y != new_scroll_state.y && dx > 2 * dy )) {\n\t\t\t\t\t\t\t\treturn block_action(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn block_action(e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}]);\n\n\n\t\t//block touch context menu in IE10\n\t\ttouchHandlers.push([this.$container, \"contextmenu\", function (e) {\n\t\t\tif (action_mode)\n\t\t\t\treturn block_action(e);\n\t\t}]);\n\n\t\t//touch start\n\t\ttouchHandlers.push([this.$container, names[1], function (e) {\n\t\t\tif (ignore(e)) return;\n\t\t\tif (e.touches && e.touches.length > 1) {\n\t\t\t\taction_mode = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taction_start = accessor(e);\n\t\t\tif (!gantt._locate_css(action_start, \"gantt_hor_scroll\") && !gantt._locate_css(action_start, \"gantt_ver_scroll\")) {\n\t\t\t\taction_mode = true;\n\t\t\t}\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\t//long tap\n\t\t\tlong_tap_timer = setTimeout(function () {\n\t\t\t\tvar taskId = gantt.locate(action_start);\n\t\t\t\tif (_tasks_dnd && (taskId && !gantt._locate_css(action_start, \"gantt_link_control\") && !gantt._locate_css(action_start, \"gantt_grid_data\"))) {\n\t\t\t\t\t_tasks_dnd.on_mouse_down(action_start);\n\n\t\t\t\t\tif (_tasks_dnd.drag && _tasks_dnd.drag.start_drag) {\n\t\t\t\t\t\tcloneTaskRendered(taskId);\n\t\t\t\t\t\t_tasks_dnd._start_dnd(action_start);\n\t\t\t\t\t\tgantt._touch_drag = true;\n\n\t\t\t\t\t\tgantt.refreshTask(taskId);\n\n\t\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlong_tap_timer = null;\n\t\t\t}, gantt.config.touch_drag);\n\t\t}]);\n\n\t\t//touch end\n\t\ttouchHandlers.push([this.$container, names[2], function (e) {\n\t\t\tif (ignore(e)) return;\n\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\n\t\t\tgantt._touch_drag = false;\n\t\t\taction_mode = false;\n\t\t\tvar source = accessor(e);\n\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\tif(_tasks_dnd)\n\t\t\t\t_tasks_dnd.on_mouse_up(source);\n\n\t\t\tif (current_target) {\n\t\t\t\tgantt.refreshTask(gantt.locate(current_target));\n\t\t\t\tif (current_target.parentNode) {\n\t\t\t\t\tcurrent_target.parentNode.removeChild(current_target);\n\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgantt._touch_scroll_active = action_mode = scroll_mode = false;\n\t\t\tcurrent_target = null;\n\n\t\t\t//dbl-tap handling\n\t\t\tif (action_start && dblclicktime) {\n\t\t\t\tvar now = new Date();\n\t\t\t\tif ((now - dblclicktime) < 500) {\n\n\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\tmouseEvents.onDoubleClick(action_start);\n\t\t\t\t\tblock_action(e);\n\t\t\t\t} else\n\t\t\t\t\tdblclicktime = now;\n\t\t\t} else {\n\t\t\t\tdblclicktime = new Date();\n\t\t\t}\n\t\t}]);\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\n\t\t//common helper, prevents event\n\t\tfunction block_action(e) {\n\t\t\tif (e && e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\t(e || event).cancelBubble = true;\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction cloneTaskRendered(taskId) {\n\t\t\tvar renders = gantt._getTaskLayers();\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\tif (task && gantt.isTaskVisible(taskId)) {\n\t\t\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\t\t\ttask = renders[i].rendered[taskId];\n\t\t\t\t\tif (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n\t\t\t\t\t\tvar copy = task.cloneNode(true);\n\t\t\t\t\t\tcurrent_target = task;\n\t\t\t\t\t\trenders[i].rendered[taskId] = copy;\n\t\t\t\t\t\ttask.style.display = \"none\";\n\t\t\t\t\t\tcopy.className += \" gantt_drag_move \";\n\t\t\t\t\t\ttask.parentNode.appendChild(copy);\n\t\t\t\t\t\t//return copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_white\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_black\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\n\tgantt.skins.material = {\n\t\tconfig: {\n\t\t\tgrid_width: 411,\n\t\t\trow_height: 34,\n\t\t\ttask_height_offset: 6,\n\t\t\tscale_height: 36,\n\t\t\tlink_line_width: 2,\n\t\t\tlink_arrow_size: 6,\n\t\t\tlightbox_additional_height: 80\n\t\t},\n\t\t_second_column_width: 110,\n\t\t_third_column_width: 75,\n\t\t_redefine_lightbox_buttons: {\n\t\t\t\"buttons_left\": [\"dhx_delete_btn\"],\n\t\t\t\"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n\t\tvar t = gantt.getTaskNode(id);\n\t\tif (t) {\n\t\t\tt.className += \" gantt_drag_animation\";\n\t\t\tsetTimeout(function () {\n\t\t\t\tvar indx = t.className.indexOf(\" gantt_drag_animation\");\n\t\t\t\tif (indx > -1) {\n\t\t\t\t\tt.className = t.className.slice(0, indx);\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t}\n\t});\n\n};","module.exports = function(gantt) {\n\tgantt.skins.broadway = {\n\t\tconfig: {\n\t\t\tgrid_width: 360,\n\t\t\trow_height: 35,\n\t\t\tscale_height: 35,\n\t\t\tlink_line_width: 1,\n\t\t\tlink_arrow_size: 7,\n\t\t\tlightbox_additional_height: 86\n\t\t},\n\t\t_second_column_width: 90,\n\t\t_third_column_width: 80,\n\n\t\t_lightbox_template: \"
 
\",\n\t\t_config_buttons_left: {},\n\t\t_config_buttons_right: {\n\t\t\t\"gantt_delete_btn\": \"icon_delete\",\n\t\t\t\"gantt_save_btn\": \"icon_save\"\n\t\t}\n\t};\n};","module.exports = function(gantt) {\ngantt.skins.terrace = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:90,\n\t_third_column_width:70\t\t\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.meadow = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 30,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:72\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.skyblue = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 27,\n\t\tlink_line_width:1,\n\t\tlink_arrow_size:8,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","function _configure(col, data, force) {\n\tfor (var key in data)\n\t\tif (typeof col[key] == \"undefined\" || force)\n\t\t\tcol[key] = data[key];\n}\n\nfunction _get_skin(force, gantt) {\n\tvar skin = gantt.skin;\n\tif (!skin || force) {\n\t\tvar links = document.getElementsByTagName(\"link\");\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\t\t\tif (res) {\n\t\t\t\tif (gantt.skins[res[1]] || !skin) {\n\t\t\t\t\tskin = res[1];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgantt.skin = skin || \"terrace\";\n\tvar skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"];\n\n\t//apply skin related settings\n\t_configure(gantt.config, skinset.config, force);\n\n\tvar config = gantt.getGridColumns();\n\tif (config[1] && !gantt.defined(config[1].width))\n\t\tconfig[1].width = skinset._second_column_width;\n\tif (config[2] && !gantt.defined(config[2].width))\n\t\tconfig[2].width = skinset._third_column_width;\n\t\n\tfor (var i=0; i column.width) ? column.min_width : column.width;\n\t\t\t\tcolumn.width = (column.max_width && column.max_width < column.width) ? column.max_width : column.width;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (skinset.config.task_height)\n\t\tgantt.config.task_height = skinset.config.task_height || \"full\"; \n\n\tif (skinset._lightbox_template)\n\t\tgantt._lightbox_template = skinset._lightbox_template;\n\n\tif (skinset._redefine_lightbox_buttons) {\n\t\tgantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n\t\tgantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n\t}\n\n\n\tgantt.resetLightbox();\n}\n\nmodule.exports = function(gantt) {\n\tif(!gantt.resetSkin){\n\t\tgantt.resetSkin = function () {\n\t\t\tthis.skin = \"\";\n\t\t\t_get_skin(true, this);\n\t\t};\n\t\tgantt.skins = {};\n\n\t\tgantt.attachEvent(\"onGanttLayoutReady\", function(){\n\t\t\t_get_skin(false, this);\n\t\t});\n\t}\n};","/*\n reuse results of functions that can be recalculated during rendering\n greatly increases the rendering speed when critical path enabled\n Sample - 94_dev/critical_path.html\n\n */\nmodule.exports = function(gantt){\n\ngantt._cached_functions = {\n\tcache: {},\n\tmode: false,\n\tcritical_path_mode: false,\n\twrap_methods : function(methods, object){\n\t\tif(object._prefetch_originals){\n\t\t\tfor(var i in object._prefetch_originals){\n\t\t\t\tobject[i] = object._prefetch_originals[i];\n\t\t\t}\n\t\t}\n\t\tobject._prefetch_originals = {};\n\t\tfor(var i = 0; i < methods.length; i++)\n\t\t\tthis.prefetch(methods[i], object);\n\n\t},\n\tprefetch : function(methodname, host){\n\t\tvar original = host[methodname];\n\t\tif(original){\n\t\t\tvar optimizer = this;\n\n\t\t\thost._prefetch_originals[methodname] = original;\n\t\t\thost[methodname] = function get_prefetched_value(){\n\n\t\t\t\tvar argumentsArray = new Array(arguments.length);\n\t\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\t\t\targumentsArray[i] = arguments[i];\n\t\t\t\t}\n\n\t\t\t\tif(optimizer.active){\n\t\t\t\t\tvar args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\t\t\t\t\tif(!optimizer.cache[methodname]){\n\t\t\t\t\t\toptimizer.cache[methodname] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tvar cached_values = optimizer.cache[methodname];\n\n\t\t\t\t\tif(optimizer.has_cached_value(cached_values, args)){\n\t\t\t\t\t\treturn optimizer.get_cached_value(cached_values, args);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar value = original.apply(this, argumentsArray);\n\t\t\t\t\t\toptimizer.cache_value(cached_values, args, value);\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn original.apply(this, argumentsArray);\n\t\t\t};\n\t\t}\n\t\treturn original;\n\t},\n\tcache_value: function(cache, arguments_hash, value){\n\t\tif(this.is_date(value))\n\t\t\tvalue = new Date(value);\n\t\tcache[arguments_hash] = value;\n\t},\n\thas_cached_value: function(cache, arguments_hash){\n\t\treturn cache.hasOwnProperty(arguments_hash);\n\t},\n\tget_cached_value: function(cache, arguments_hash){\n\t\tvar data = cache[arguments_hash];\n\n\t\t//for cached dates - return copy\n\t\tif(this.is_date(data)){\n\t\t\tdata = new Date(data);\n\t\t}\n\t\treturn data;\n\t},\n\tis_date: function(value){\n\t\treturn (value && value.getUTCDate);\n\t},\n\tget_arguments_hash:function(args){\n\t\tvar values = [];\n\t\tfor(var i = 0; i < args.length; i++){\n\t\t\tvalues.push(this.stringify_argument(args[i]));\n\t\t}\n\t\treturn \"(\" + values.join(\";\") + \")\";\n\t},\n\tstringify_argument: function(value){\n\t\t//expecting task or link, or any other data entries, dates and primitive values\n\t\tvar ret = \"\";\n\t\tif(value.id){\n\t\t\tret = value.id;\n\t\t}else if(this.is_date(value)){\n\t\t\tret = value.valueOf();\n\t\t}else{\n\t\t\tret = value;\n\t\t}\n\t\treturn ret + \"\";\n\t},\n\tactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = true;\n\t},\n\tdeactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = false;\n\t},\n\tclear: function(){\n\t\tthis.cache = {};\n\t},\n\n\tsetup: function(gantt){\n\t\tvar override_gantt = [];\n\n\t\tvar gantt_methods = [\n\t\t\t'_isProjectEnd',\n\t\t\t'_getProjectEnd',\n\t\t\t'_getSlack'\n\t\t];\n\n\n\n\t\tif(this.mode == 'auto'){\n\t\t\tif(gantt.config.highlight_critical_path){\n\t\t\t\toverride_gantt = gantt_methods;\n\t\t\t}\n\t\t}else if(this.mode === true){\n\t\t\toverride_gantt = gantt_methods;\n\t\t}\n\n\t\tthis.wrap_methods(override_gantt, gantt);\n\n\t},\n\tupdate_if_changed: function(gantt){\n\t\tvar changed = (this.critical_path_mode != gantt.config.highlight_critical_path ||\n\t\t\t\t\t\tthis.mode !== gantt.config.optimize_render);\n\t\tif(changed){\n\t\t\tthis.critical_path_mode = gantt.config.highlight_critical_path;\n\t\t\tthis.mode = gantt.config.optimize_render;\n\t\t\tthis.setup(gantt);\n\t\t}\n\t}\n};\n\nfunction activate(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\tif(!gantt._cached_functions.active){\n\t\tgantt._cached_functions.activate();\n\t}\n\treturn true;\n}\ngantt.attachEvent(\"onBeforeGanttRender\", activate);\ngantt.attachEvent(\"onBeforeDataRender\", activate);\ngantt.attachEvent(\"onBeforeSmartRender\", function(){\n\tactivate();\n});\ngantt.attachEvent(\"onBeforeParse\", activate);\ngantt.attachEvent(\"onDataRender\", function(){\n\tgantt._cached_functions.deactivate();\n});\nvar deactivTimeout = null;\ngantt.attachEvent(\"onSmartRender\", function(){\n\tif(deactivTimeout)\n\t\tclearTimeout(deactivTimeout);\n\tdeactivTimeout = setTimeout(function(){\n\t\tgantt._cached_functions.deactivate();\n\t}, 1000);\n});\n\ngantt.attachEvent(\"onBeforeGanttReady\", function(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\treturn true;\n});\n\n};","module.exports = function(gantt) {\n\n\tgantt.getTaskType = function (type) {\n\t\treturn \"task\";\n\t};\n};","module.exports = function(gantt) {\n\n\tgantt._extend_to_optional = function (lightbox_block) {\n\n\t\tvar duration = lightbox_block;\n\t\tvar optional_time = {\n\t\t\trender: duration.render,\n\t\t\tfocus: duration.focus,\n\t\t\tset_value: function (node, value, task, section) {\n\t\t\t\tvar mapping = gantt._resolve_default_mapping(section);\n\t\t\t\tif (!task[mapping.start_date] || (mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task))) {\n\t\t\t\t\toptional_time.disable(node, section);\n\t\t\t\t\tvar val = {};\n\n\t\t\t\t\tfor (var i in mapping) {\n\t\t\t\t\t\t//take default values from the time control from task start/end dates\n\t\t\t\t\t\tval[mapping[i]] = task[i];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, val, section);//set default value\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.enable(node, section);\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget_value: function (node, task, section) {\n\t\t\t\tif (section.disabled) {\n\t\t\t\t\treturn {start_date: null};\n\t\t\t\t} else {\n\t\t\t\t\treturn duration.get_value.call(gantt, node, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate_block: function (node, section) {\n\t\t\t\tgantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n\t\t\t\tnode.style.display = section.disabled ? \"none\" : \"block\";\n\n\t\t\t\tif (section.button) {\n\t\t\t\t\tvar button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n\t\t\t\t\t\tlabels = gantt.locale.labels;\n\n\t\t\t\t\tvar button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n\n\t\t\t\t\tbutton.innerHTML = button_text;\n\t\t\t\t}\n\t\t\t\tgantt.resizeLightbox();\n\t\t\t},\n\t\t\tdisable: function (node, section) {\n\t\t\t\tsection.disabled = true;\n\t\t\t\toptional_time.update_block(node, section);\n\n\t\t\t},\n\t\t\tenable: function (node, section) {\n\t\t\t\tsection.disabled = false;\n\t\t\t\toptional_time.update_block(node, section);\n\t\t\t},\n\t\t\tbutton_click: function (index, el, section, container) {\n\t\t\t\tif (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar config = gantt._get_typed_lightbox_config()[index];\n\t\t\t\tif (config.disabled) {\n\t\t\t\t\toptional_time.enable(container, config);\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.disable(container, config);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn optional_time;\n\t};\n\n\tgantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n\tgantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n\n};","var __extends = require(\"../../../utils/extends\");\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction ConstraintControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(ConstraintControl, _super);\n\n\tfunction isNonTimedConstraint(value) {\n\t\tif (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction toggleTimeSelect(timeSelects, typeValue) {\n\t\tvar isNonTimed = isNonTimedConstraint(typeValue);\n\t\tfor (var i = 0; i < timeSelects.length; i++) {\n\t\t\ttimeSelects[i].disabled = isNonTimed;\n\t\t}\n\t}\n\n\tConstraintControl.prototype.render = function (sns) {\n\t\tvar height = (sns.height || 30) + \"px\";\n\t\tvar html = \"
\";\n\n\t\tvar options = [];\n\t\tfor (var i in gantt.config.constraint_types) {\n\t\t\toptions.push({ key: gantt.config.constraint_types[i], label: gantt.locale.labels[gantt.config.constraint_types[i]] });\n\t\t}\n\n\t\tsns.options = sns.options || options;\n\n\t\thtml += \"\" + htmlHelpers.getHtmlSelect(sns.options, [{ key: \"data-type\", value: \"constraint-type\" }]) + \"\";\n\n\t\tvar timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n\t\thtml += \"\";\n\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tConstraintControl.prototype.set_value = function (node, value, task, config) {\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n\t\tvar map = config._time_format_order;\n\n\t\tvar mapping = gantt._resolve_default_mapping(config);\n\n\t\tif (!typeSelect._eventsInitialized) {\n\t\t\ttypeSelect.addEventListener(\"input\", function (e) {\n\t\t\t\ttoggleTimeSelect(timeSelects, e.target.value);\n\t\t\t});\n\t\t\ttypeSelect._eventsInitialized = true;\n\t\t}\n\n\t\tvar constraintDate = task[mapping.constraint_date] || new Date();\n\t\tgantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\n\n\t\tvar constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\n\t\ttypeSelect.value = constraintType;\n\t\ttoggleTimeSelect(timeSelects, constraintType);\n\t};\n\n\tConstraintControl.prototype.get_value = function (node, task, config) {\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n\n\t\tvar constraintType = typeSelect.value;\n\t\tvar constraintDate = null;\n\t\tif (!isNonTimedConstraint(constraintType)) {\n\t\t\tconstraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\n\t\t}\n\n\t\treturn {\n\t\t\tconstraint_type: constraintType,\n\t\t\tconstraint_date: constraintDate\n\t\t};\n\t};\n\n\tConstraintControl.prototype.focus = function (node) {\n\t\tgantt._focus(node.querySelector(\"select\"));\n\t};\n\n\treturn ConstraintControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./select_control\")(gantt);\n\n\tfunction ParentControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\t__extends(ParentControl, _super);\n\n\n\tParentControl.prototype.render = function(sns) {\n\t\treturn _display(sns, false);\n\t};\n\n\tParentControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar tmpDom = document.createElement(\"div\");\n\t\ttmpDom.innerHTML = _display(config, ev.id);\n\t\tvar newOptions = tmpDom.removeChild(tmpDom.firstChild);\n\t\tnode.onselect = null;\n\t\tnode.parentNode.replaceChild(newOptions, node);\n\n\t\treturn gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n\t};\n\n\tfunction _display(config, item_id) {\n\t\tvar tasks = [],\n\t\t\toptions = [];\n\t\tif (item_id) {\n\t\t\ttasks = gantt.getTaskByTime();\n\t\t\tif (config.allow_root) {\n\t\t\t\ttasks.unshift({id: gantt.config.root_id, text: config.root_label || \"\"});\n\t\t\t}\n\t\t\ttasks = _filter(tasks, config, item_id);\n\t\t\tif (config.sort) {\n\t\t\t\ttasks.sort(config.sort);\n\t\t\t}\n\t\t}\n\t\tvar text = config.template || gantt.templates.task_text;\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\t\t\tif (label === undefined) {\n\t\t\t\tlabel = \"\";\n\t\t\t}\n\t\t\toptions.push({\n\t\t\t\tkey: tasks[i].id,\n\t\t\t\tlabel: label\n\t\t\t});\n\t\t}\n\t\tconfig.options = options;\n\t\tconfig.map_to = config.map_to || \"parent\";\n\t\treturn gantt.form_blocks.select.render.apply(this, arguments);\n\t}\n\n\tfunction _filter(options, config, item_id) {\n\t\tvar filter = config.filter || function() {\n\t\t\treturn true;\n\t\t};\n\n\t\toptions = options.slice(0);\n\n\t\tfor (var i = 0; i < options.length; i++) {\n\t\t\tvar task = options[i];\n\t\t\tif (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n\t\t\t\toptions.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\treturn ParentControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction DurationControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\t__extends(DurationControl, _super);\n\n\tDurationControl.prototype.render = function(sns) {\n\t\tvar time = \"
\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"
\";\n\t\tvar label = gantt.locale.labels[gantt.config.duration_unit + \"s\"];\n\t\tvar singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n\t\tvar readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\t\tvar ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\t\tvar duration = \"
\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\" \" + label + \" \" +\n\t\t\t\"
\";\n\t\tvar html = \"
\" + time + \" \" + duration + \"
\";\n\t\treturn html;\n\t};\n\n\tDurationControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar cfg = config;\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar inps = node.getElementsByTagName(\"input\");\n\t\tvar duration = inps[1];\n\t\tvar btns = [inps[0], inps[2]];\n\t\tvar endspan = node.getElementsByTagName(\"span\")[0];\n\t\tvar map = config._time_format_order;\n\t\tvar mapping;\n\t\tvar start_date;\n\t\tvar end_date;\n\t\tvar duration_val;\n\n\t\tfunction _calc_date() {\n\t\t\tvar start_date = _getStartDate.call(gantt, node, config);\n\t\t\tvar duration = _getDuration.call(gantt, node, config);\n\t\t\tvar end_date = gantt.calculateEndDate({start_date: start_date, duration: duration, task: ev});\n\n\t\t\tendspan.innerHTML = gantt.templates.task_date(end_date);\n\t\t}\n\n\t\tfunction _change_duration(step) {\n\t\t\tvar value = duration.value;\n\n\t\t\tvalue = parseInt(value, 10);\n\t\t\tif (window.isNaN(value))\n\t\t\t\tvalue = 0;\n\t\t\tvalue += step;\n\t\t\tif (value < 1) value = 1;\n\t\t\tduration.value = value;\n\t\t\t_calc_date();\n\t\t}\n\n\t\tbtns[0].onclick = gantt.bind(function() {\n\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t}, this);\n\t\tbtns[1].onclick = gantt.bind(function() {\n\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t}, this);\n\t\ts[0].onchange = _calc_date;\n\t\ts[1].onchange = _calc_date;\n\t\ts[2].onchange = _calc_date;\n\t\tif (s[3]) s[3].onchange = _calc_date;\n\n\t\tduration.onkeydown = gantt.bind(function(e) {\n\t\t\tvar code; \n\n\t\t\te = e || window.event;\n\t\t\tcode = (e.charCode || e.keyCode || e.which);\n\t\t\t\n\t\t\tif (code == gantt.constants.KEY_CODES.DOWN) {\n\t\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (code == gantt.constants.KEY_CODES.UP) {\n\t\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\twindow.setTimeout(_calc_date, 1);\n\t\t}, this);\n\n\t\tduration.onchange = gantt.bind(_calc_date, this);\n\n\t\tmapping = gantt._resolve_default_mapping(config);\n\t\tif (typeof(mapping) === \"string\") mapping = {start_date: mapping};\n\n\t\tstart_date = ev[mapping.start_date] || new Date();\n\t\tend_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\t\tduration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n\t\t\tstart_date: start_date,\n\t\t\tend_date: end_date,\n\t\t\ttask: ev\n\t\t});\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\t\tduration.value = duration_val;\n\t\t_calc_date();\n\t};\n\n\tDurationControl.prototype.get_value = function(node, ev, config) {\n\t\tvar startDate = _getStartDate(node, config);\n\t\tvar duration = _getDuration(node, config);\n\t\tvar endDate = gantt.calculateEndDate({start_date: startDate, duration: duration, task: ev});\n\n\t\tif (typeof gantt._resolve_default_mapping(config) == \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: endDate,\n\t\t\tduration: duration\n\t\t};\n\t};\n\n\tDurationControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\n\tfunction _getStartDate(node, config) {\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\t\tvar hours = 0;\n\t\tvar minutes = 0;\n\n\t\tif (gantt.defined(map[3])) {\n\t\t\tvar input = s[map[3]];\n\t\t\tvar time = parseInt(input.value, 10);\n\t\t\tif (isNaN(time) && input.hasAttribute(\"data-value\")) {\n\t\t\t\ttime = parseInt(input.getAttribute(\"data-value\"), 10);\n\t\t\t}\n\n\t\t\thours = Math.floor(time / 60);\n\t\t\tminutes = time % 60;\n\t\t}\n\t\treturn new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n\t}\n\n\tfunction _getDuration(node) {\n\t\tvar duration = node.getElementsByTagName(\"input\")[1];\n\n\t\tduration = parseInt(duration.value, 10);\n\t\tif (!duration || window.isNaN(duration)) duration = 1;\n\t\tif (duration < 0) duration *= -1;\n\t\treturn duration;\n\t}\n\n\n\treturn DurationControl; \n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction RadioControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(RadioControl, _super);\n\n\tRadioControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"\";\n\t\t\t}\n\t\t}\n\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tRadioControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar radio;\n\n\t\tif (!sns.options || !sns.options.length) return;\n\n\t\tradio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") ||\n\t\t\t\tnode.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n\n\t\tif (!radio) return;\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\tradio.checked = true;\n\t};\n\n\tRadioControl.prototype.get_value = function(node, ev) {\n\t\tvar result = node.querySelector(\"input[type=radio]:checked\");\n\n\t\treturn result ? result.value : \"\";\n\t};\n\n\tRadioControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=radio]\"));\n\t};\n\n\treturn RadioControl;\n};","var helpers = require(\"../../../utils/helpers\");\nvar __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction CheckboxControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(CheckboxControl, _super);\n\n\tCheckboxControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"\";\n\t\t\t}\n\t\t}\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tCheckboxControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\thelpers.forEach(checkboxes, function(entry) {\n\t\t\tentry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.get_value = function(node) {\n\t\treturn helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function(entry) {\n\t\t\treturn entry.value;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=checkbox]\"));\n\t};\n\n\treturn CheckboxControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TimeControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(TimeControl, _super);\n\n\tTimeControl.prototype.render = function (sns) {\n\t\tvar time = gantt.form_blocks.getTimePicker.call(this, sns);\n\t\tvar html = \"
\";\n\t\thtml += time;\n\n\t\tif (sns.single_date) {\n\t\t\ttime = gantt.form_blocks.getTimePicker.call(this, sns, true);\n\t\t\thtml += \"\";\n\t\t} else {\n\t\t\thtml += \"  –  \";\n\t\t}\n\n\t\thtml += time;\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tTimeControl.prototype.set_value = function (node, value, ev, config) {\n\t\tvar cfg = config;\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\n\t\tif (cfg.auto_end_date) {\n\t\t\tvar _update_lightbox_select = function () {\n\t\t\t\tstart_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n\t\t\t\tend_date = gantt.calculateEndDate({ start_date: start_date, duration: 1, task: ev });\n\t\t\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t\t\t};\n\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\ts[i].onchange = _update_lightbox_select;\n\t\t\t}\n\t\t}\n\n\t\tvar mapping = gantt._resolve_default_mapping(config);\n\n\t\tif (typeof (mapping) === \"string\") mapping = { start_date: mapping };\n\n\t\tvar start_date = ev[mapping.start_date] || new Date();\n\t\tvar end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t};\n\n\tTimeControl.prototype.get_value = function (node, ev, config) {\n\t\tvar selects = node.getElementsByTagName(\"select\");\n\t\tvar startDate;\n\t\tvar map = config._time_format_order;\n\t\tfunction _getEndDate(selects, map, startDate) {\n\t\t\tvar endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size);\n\n\t\t\tif (endDate <= startDate) {\n\t\t\t\treturn gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n\t\t\t}\n\t\t\treturn endDate;\n\t\t}\n\n\t\tstartDate = gantt.form_blocks.getTimePickerValue(selects, config);\n\n\t\tif (typeof gantt._resolve_default_mapping(config) === \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: _getEndDate(selects, map, startDate)\n\t\t};\n\t};\n\n\tTimeControl.prototype.focus = function (node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\treturn TimeControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TextareaControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(TextareaControl, _super);\n\n\tTextareaControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"130\") + \"px\";\n\t\treturn \"
\";\n\t};\n\n\tTextareaControl.prototype.set_value = function(node, value) {\n\t\tgantt.form_blocks.textarea._get_input(node).value = value || \"\";\n\t};\n\n\tTextareaControl.prototype.get_value = function(node) {\n\t\treturn gantt.form_blocks.textarea._get_input(node).value;\n\t};\n\n\tTextareaControl.prototype.focus = function(node) {\n\t\tvar a = gantt.form_blocks.textarea._get_input(node);\n\t\tgantt._focus(a, true);\n\t};\n\n\tTextareaControl.prototype._get_input = function(node) {\n\t\treturn node.querySelector(\"textarea\");\n\t};\n\n\treturn TextareaControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TemplateControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\t\treturn self; \n\t}\n\n\t__extends(TemplateControl, _super);\n\n\n\tTemplateControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"30\") + \"px\";\n\t\treturn \"
\";\n\t};\n\n\tTemplateControl.prototype.set_value = function(node, value) {\n\t\tnode.innerHTML = value || \"\";\n\t};\n\n\tTemplateControl.prototype.get_value = function(node) {\n\t\treturn node.innerHTML || \"\";\n\t};\n\n\tTemplateControl.prototype.focus = function() {};\n\n\treturn TemplateControl;\n};","module.exports = function (gantt) {\n\tvar domHelpers = require(\"../../utils/dom_helpers\");\n\tvar helpers = require(\"../../utils/helpers\");\n\n\tvar TemplateControl = require(\"./controls/template_control\")(gantt);\n\tvar TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\tvar TimeControl = require(\"./controls/time_control\")(gantt);\n\tvar SelectControl = require(\"./controls/select_control\")(gantt);\n\tvar CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\tvar RadioControl = require(\"./controls/radio_control\")(gantt);\n\tvar DurationControl = require(\"./controls/duration_control\")(gantt);\n\tvar ParentControl = require(\"./controls/parent_control\")(gantt);\n\tvar ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\tvar ConstraintControl = require(\"./controls/constraint_control\")(gantt);\n\n\n\tgantt._lightbox_methods = {};\n\tgantt._lightbox_template = \"
 
\";\n\n\n\t//TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"lightbox\", function () {\n\t\treturn {\n\t\t\tlightbox: gantt._lightbox_id\n\t\t};\n\t});\n\n\tgantt.showLightbox = function (id) {\n\t\tif (!id || gantt.isReadonly(this.getTask(id))) return;\n\t\tif (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n\n\t\tvar task = this.getTask(id);\n\n\t\tvar box = this.getLightbox(this.getTaskType(task.type));\n\t\tthis._center_lightbox(box);\n\t\tthis.showCover();\n\t\tthis._fill_lightbox(id, box);\n\n\t\tthis._waiAria.lightboxVisibleAttr(box);\n\n\t\tthis.callEvent(\"onLightbox\", [id]);\n\t};\n\n\tfunction _is_chart_visible(gantt) {\n\t\tvar timeline = gantt.$ui.getView(\"timeline\");\n\t\tif (timeline && timeline.isVisible()) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tgantt._get_timepicker_step = function () {\n\t\tif (this.config.round_dnd_dates) {\n\t\t\tvar step;\n\t\t\tif (_is_chart_visible(this)) {\n\t\t\t\tvar scale = gantt.getScale();\n\t\t\t\tstep = (helpers.getSecondsInUnit(scale.unit) * scale.step) / 60;//timepicker step is measured in minutes\n\t\t\t}\n\n\t\t\tif (!step || step >= 60 * 24) {\n\t\t\t\tstep = this.config.time_step;\n\t\t\t}\n\t\t\treturn step;\n\t\t}\n\t\treturn this.config.time_step;\n\t};\n\tgantt.getLabel = function (property, key) {\n\t\tvar sections = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sections.length; i++) {\n\t\t\tif (sections[i].map_to == property) {\n\t\t\t\tvar options = sections[i].options;\n\t\t\t\tfor (var j = 0; j < options.length; j++) {\n\t\t\t\t\tif (options[j].key == key) {\n\t\t\t\t\t\treturn options[j].label;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tgantt.updateCollection = function (list_name, collection) {\n\t\tcollection = collection.slice(0);\n\t\tvar list = gantt.serverList(list_name);\n\t\tif (!list) return false;\n\t\tlist.splice(0, list.length);\n\t\tlist.push.apply(list, collection || []);\n\t\tgantt.resetLightbox();\n\t};\n\tgantt.getLightboxType = function () {\n\t\treturn this.getTaskType(this._lightbox_type);\n\t};\n\tgantt.getLightbox = function (type) {\n\t\tvar lightboxDiv;\n\t\tvar fullWidth;\n\t\tvar html;\n\t\tvar sns;\n\t\tvar ds;\n\t\tvar classNames = \"\";\n\n\t\tif (type === undefined)\n\t\t\ttype = this.getLightboxType();\n\n\t\tif (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n\t\t\tthis._lightbox_type = this.getTaskType(type);\n\t\t\tlightboxDiv = document.createElement(\"div\");\n\t\t\tclassNames = \"gantt_cal_light\";\n\t\t\tfullWidth = this._is_lightbox_timepicker();\n\n\t\t\tif (gantt.config.wide_form || fullWidth)\n\t\t\t\tclassNames += \" gantt_cal_light_wide\";\n\n\t\t\tif (fullWidth) {\n\t\t\t\tgantt.config.wide_form = true;\n\t\t\t\tclassNames += \" gantt_cal_light_full\";\n\t\t\t}\n\n\t\t\tlightboxDiv.className = classNames;\n\n\t\t\tlightboxDiv.style.visibility = \"hidden\";\n\t\t\thtml = this._lightbox_template;\n\n\t\t\thtml += getHtmlButtons(this.config.buttons_left);\n\t\t\thtml += getHtmlButtons(this.config.buttons_right, true);\n\n\t\t\tlightboxDiv.innerHTML = html;\n\n\t\t\tgantt._waiAria.lightboxAttr(lightboxDiv);\n\n\t\t\tif (gantt.config.drag_lightbox) {\n\t\t\t\tlightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\t\t\t\tlightboxDiv.firstChild.onselectstart = function () {\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t\tlightboxDiv.firstChild.style.cursor = \"pointer\";\n\t\t\t\tgantt._init_dnd_events();\n\t\t\t}\n\n\t\t\tdocument.body.insertBefore(lightboxDiv, document.body.firstChild);\n\t\t\tthis._lightbox = lightboxDiv;\n\n\t\t\tsns = this._get_typed_lightbox_config(type);\n\t\t\thtml = this._render_sections(sns);\n\n\t\t\tds = lightboxDiv.querySelector(\"div.gantt_cal_larea\");\n\t\t\tds.innerHTML = html;\n\n\t\t\tbindLabelsToInputs(sns);\n\n\t\t\t//sizes\n\t\t\tthis.resizeLightbox();\n\n\t\t\tthis._init_lightbox_events(this);\n\t\t\tlightboxDiv.style.display = \"none\";\n\t\t\tlightboxDiv.style.visibility = \"visible\";\n\t\t}\n\t\treturn this._lightbox;\n\t};\n\n\tgantt._render_sections = function (sns) {\n\t\tvar html = \"\";\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue; //ignore incorrect blocks\n\t\t\tsns[i].id = \"area_\" + this.uid();\n\n\t\t\tvar display = sns[i].hidden ? \" style='display:none'\" : \"\";\n\t\t\tvar button = \"\";\n\t\t\tif (sns[i].button) {\n\t\t\t\tbutton = \"
\" + this.locale.labels[\"button_\" + sns[i].button] + \"
\";\n\t\t\t}\n\t\t\tif (this.config.wide_form) {\n\t\t\t\thtml += \"
\";\n\t\t\t}\n\t\t\thtml += \"
\" + block.render.call(this, sns[i]);\n\t\t\thtml += \"
\";\n\t\t}\n\t\treturn html;\n\t};\n\n\n\tgantt.resizeLightbox = function () {\n\t\tif (!this._lightbox) return;\n\n\t\tvar con = this._lightbox.childNodes[1];\n\t\tcon.style.height = \"0px\";\n\t\tcon.style.height = con.scrollHeight + \"px\";\n\t\tthis._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n\t\tcon.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n\t};\n\n\tgantt._center_lightbox = function (box) {\n\t\tif (box) {\n\t\t\tbox.style.display = \"block\";\n\n\t\t\tvar scroll_top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tvar scroll_left = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\n\n\t\t\tvar view_height = window.innerHeight || document.documentElement.clientHeight;\n\n\t\t\tif (scroll_top) // if vertical scroll on window\n\t\t\t\tbox.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";\n\t\t\telse // vertical scroll on body\n\t\t\t\tbox.style.top = Math.round(Math.max(((view_height - box.offsetHeight) / 2), 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n\n\t\t\t// not quite accurate but used for compatibility reasons\n\t\t\tif (document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window\n\t\t\t\tbox.style.left = Math.round(scroll_left + (document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t\telse // horizontal scroll on the body\n\t\t\t\tbox.style.left = Math.round((document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t}\n\t};\n\tgantt.showCover = function () {\n\t\tif (this._cover) return;\n\n\t\tthis._cover = document.createElement(\"DIV\");\n\t\tthis._cover.className = \"gantt_cal_cover\";\n\t\tvar _document_height = ((document.height !== undefined) ? document.height : document.body.offsetHeight);\n\t\tvar _scroll_height = ((document.documentElement) ? document.documentElement.scrollHeight : 0);\n\t\tthis._cover.style.height = Math.max(_document_height, _scroll_height) + \"px\";\n\t\tdocument.body.appendChild(this._cover);\n\t};\n\n\n\tgantt._init_lightbox_events = function () {\n\t\tgantt.lightbox_events = {};\n\n\n\t\tgantt.lightbox_events.gantt_save_btn = function () {\n\t\t\tgantt._save_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_delete_btn = function () {\n\t\t\tif (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id]))\n\t\t\t\treturn;\n\n\t\t\tif (gantt.isTaskExists(gantt._lightbox_id)) {\n\t\t\t\tgantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n\t\t\t} else {\n\t\t\t\tgantt.hideLightbox();\n\t\t\t}\n\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_cancel_btn = function () {\n\t\t\tgantt._cancel_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events[\"default\"] = function (e, src) {\n\t\t\tif (src.getAttribute(\"data-dhx-button\")) {\n\t\t\t\tgantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n\t\t\t} else {\n\t\t\t\tvar index, block, sec;\n\n\t\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\t\tif (className.indexOf(\"gantt_custom_button\") != -1) {\n\t\t\t\t\tif (className.indexOf(\"gantt_custom_button_\") != -1) {\n\t\t\t\t\t\tindex = src.parentNode.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src;\n\t\t\t\t\t\twhile (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n\t\t\t\t\t\t\tsec = sec.parentNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex = src.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src.parentNode;\n\t\t\t\t\t\tsrc = src.firstChild;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar sections = gantt._get_typed_lightbox_config();\n\n\t\t\t\tif (index) {\n\t\t\t\t\tindex = index * 1;\n\t\t\t\t\tblock = gantt.form_blocks[sections[index * 1].type];\n\t\t\t\t\tblock.button_click(index, src, sec, sec.nextSibling);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.event(gantt.getLightbox(), \"click\", function (e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target ? e.target : e.srcElement;\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tif (!className) {\n\t\t\t\tsrc = src.previousSibling;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n\t\t\t\tsrc = src.firstChild;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className) {\n\t\t\t\tvar func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n\t\t\t\treturn func(e, src);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tgantt.getLightbox().onkeydown = function (e) {\n\t\t\tvar event = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\t\t\tvar buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n\t\t\tswitch ((e || event).keyCode) {\n\t\t\t\tcase gantt.constants.KEY_CODES.SPACE: {\n\t\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase gantt.keys.edit_save:\n\t\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgantt._save_lightbox();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\t\tgantt._cancel_lightbox();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t};\n\n\tgantt._cancel_lightbox = function () {\n\t\tvar task = this.getLightboxValues();\n\t\tthis.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\t\tif (gantt.isTaskExists(task.id) && task.$new) {\n\t\t\tthis.silent(function () {\n\t\t\t\tgantt.$data.tasksStore.removeItem(task.id);\n\t\t\t\tgantt._update_flags(task.id, null);\n\t\t\t});\n\t\t}\n\n\t\tthis.refreshData();\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._save_lightbox = function () {\n\t\tvar task = this.getLightboxValues();\n\t\tif (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new]))\n\t\t\treturn;\n\n\t\tif (task.$new) {\n\t\t\tdelete task.$new;\n\t\t\tthis.addTask(task);\n\t\t} else if (this.isTaskExists(task.id)) {\n\t\t\tthis.mixin(this.getTask(task.id), task, true);\n\t\t\tthis.refreshTask(task.id);\n\t\t\tthis.updateTask(task.id);\n\t\t}\n\t\tthis.refreshData();\n\n\t\t// TODO: do we need any blockable events here to prevent closing lightbox?\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._resolve_default_mapping = function (section) {\n\t\tvar mapping = section.map_to;\n\t\tvar time_controls = { \"time\": true, \"time_optional\": true, \"duration\": true, \"duration_optional\": true };\n\t\tif (time_controls[section.type]) {\n\t\t\tif (section.map_to == \"auto\") {\n\t\t\t\tmapping = { start_date: \"start_date\", end_date: \"end_date\", duration: \"duration\" };\n\t\t\t} else if (typeof (section.map_to) === \"string\") {\n\t\t\t\tmapping = { start_date: section.map_to };\n\t\t\t}\n\t\t} else if (section.type === \"constraint\") {\n\t\t\tif (!section.map_to || typeof (section.map_to) === \"string\") {\n\t\t\t\tmapping = { constraint_type: \"constraint_type\", constraint_date: \"constraint_date\" };\n\t\t\t}\n\t\t}\n\n\t\treturn mapping;\n\t};\n\n\tgantt.getLightboxValues = function () {\n\t\tvar task = {};\n\n\t\tif (gantt.isTaskExists(this._lightbox_id)) {\n\t\t\ttask = this.mixin({}, this.getTask(this._lightbox_id));\n\t\t}\n\n\t\tvar sns = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar node = document.getElementById(sns[i].id);\n\t\t\tnode = (node ? node.nextSibling : node);\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue;\n\t\t\tvar res = block.get_value.call(this, node, task, sns[i]);\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tif (typeof map_to == \"string\" && map_to != \"auto\") {\n\t\t\t\ttask[map_to] = res;\n\t\t\t} else if (typeof map_to == \"object\") {\n\t\t\t\tfor (var property in map_to) {\n\t\t\t\t\tif (map_to[property])\n\t\t\t\t\t\ttask[map_to[property]] = res[property];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn task;\n\t};\n\n\n\tgantt.hideLightbox = function () {\n\t\tvar box = this.getLightbox();\n\t\tif (box) box.style.display = \"none\";\n\n\t\tthis._waiAria.lightboxHiddenAttr(box);\n\t\tthis._lightbox_id = null;\n\n\t\tthis.hideCover();\n\t\tthis.callEvent(\"onAfterLightbox\", []);\n\t};\n\tgantt.hideCover = function () {\n\t\tif (this._cover)\n\t\t\tthis._cover.parentNode.removeChild(this._cover);\n\t\tthis._cover = null;\n\t};\n\n\tgantt.resetLightbox = function () {\n\t\tif (gantt._lightbox && !gantt._custom_lightbox)\n\t\t\tgantt._lightbox.parentNode.removeChild(gantt._lightbox);\n\t\tgantt._lightbox = null;\n\t\tgantt.hideCover();\n\t};\n\tgantt._set_lightbox_values = function (data, box) {\n\t\tvar task = data;\n\t\tvar s = box.getElementsByTagName(\"span\");\n\t\tvar lightboxHeader = [];\n\t\tif (gantt.templates.lightbox_header) {\n\t\t\tlightboxHeader.push(\"\");\n\t\t\tlightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n\t\t\ts[1].innerHTML = \"\";\n\t\t\ts[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n\t\t} else {\n\t\t\tlightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n\t\t\tlightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\t\t\ts[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n\t\t\ts[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n\t\t}\n\t\ts[1].innerHTML = lightboxHeader[0];\n\t\ts[2].innerHTML = lightboxHeader[1];\n\n\t\tgantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n\t\tvar sns = this._get_typed_lightbox_config(this.getLightboxType());\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar section = sns[i];\n\n\t\t\tif (!this.form_blocks[section.type]) {\n\t\t\t\tcontinue;//skip incorrect sections, same check is done during rendering\n\t\t\t}\n\n\n\t\t\tvar node = document.getElementById(section.id).nextSibling;\n\t\t\tvar block = this.form_blocks[section.type];\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tvar value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n\t\t\tblock.set_value.call(gantt, node, value, task, section);\n\n\t\t\tif (section.focus)\n\t\t\t\tblock.focus.call(gantt, node);\n\t\t}\n\t\tif (data.id)\n\t\t\tgantt._lightbox_id = data.id;\n\t};\n\tgantt._fill_lightbox = function (id, box) {\n\t\tvar task = this.getTask(id);\n\t\tthis._set_lightbox_values(task, box);\n\t};\n\n\n\tgantt.getLightboxSection = function (name) {\n\t\tvar config = this._get_typed_lightbox_config();\n\t\tvar i = 0;\n\t\tfor (i; i < config.length; i++)\n\t\t\tif (config[i].name == name)\n\t\t\t\tbreak;\n\t\tvar section = config[i];\n\t\tif (!section)\n\t\t\treturn null;\n\n\t\tif (!this._lightbox)\n\t\t\tthis.getLightbox();\n\t\tvar header = document.getElementById(section.id);\n\t\tvar node = header.nextSibling;\n\n\t\tvar result = {\n\t\t\tsection: section,\n\t\t\theader: header,\n\t\t\tnode: node,\n\t\t\tgetValue: function (ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].get_value.call(gantt, node, (ev || {}), section);\n\t\t\t},\n\t\t\tsetValue: function (value, ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].set_value.call(gantt, node, value, (ev || {}), section);\n\t\t\t}\n\t\t};\n\n\t\tvar handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n\t\treturn handler ? handler(result) : result;\n\t};\n\n\tgantt._lightbox_methods.get_template_control = function (result) {\n\t\tresult.control = result.node;\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_select_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_textarea_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"textarea\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_time_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\"); // array\n\t\treturn result;\n\t};\n\n\n\tgantt._init_dnd_events = function () {\n\t\tthis.event(document.body, \"mousemove\", gantt._move_while_dnd);\n\t\tthis.event(document.body, \"mouseup\", gantt._finish_dnd);\n\t\tgantt._init_dnd_events = function () {\n\t\t};\n\t};\n\tgantt._move_while_dnd = function (e) {\n\t\tif (gantt._dnd_start_lb) {\n\t\t\tif (!document.gantt_unselectable) {\n\t\t\t\tdocument.body.className += \" gantt_unselectable\";\n\t\t\t\tdocument.gantt_unselectable = true;\n\t\t\t}\n\t\t\tvar lb = gantt.getLightbox();\n\t\t\tvar now = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\n\t\t\tlb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n\t\t\tlb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n\t\t}\n\t};\n\tgantt._ready_to_dnd = function (e) {\n\t\tvar lb = gantt.getLightbox();\n\t\tgantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n\t\tgantt._dnd_start_lb = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\n\t};\n\tgantt._finish_dnd = function () {\n\t\tif (gantt._lb_start) {\n\t\t\tgantt._lb_start = gantt._dnd_start_lb = false;\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_unselectable\", \"\");\n\t\t\tdocument.gantt_unselectable = false;\n\t\t}\n\t};\n\n\n\tgantt._focus = function (node, select) {\n\t\tif (node && node.focus) {\n\t\t\tif (gantt.config.touch) {\n\t\t\t\t//do not focus editor, to prevent auto-zoom\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tif (select && node.select) node.select();\n\t\t\t\t\tnode.focus();\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// silent errors\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\tgantt.form_blocks = {\n\t\tgetTimePicker: function (sns, hidden) {\n\t\t\tvar html = \"\";\n\t\t\tvar cfg = this.config;\n\t\t\tvar i;\n\t\t\tvar options;\n\t\t\tvar ariaAttrs;\n\t\t\tvar readonly;\n\t\t\tvar display;\n\t\t\tvar settings = {\n\t\t\t\tfirst: 0,\n\t\t\t\tlast: 24 * 60,\n\t\t\t\tdate: this.date.date_part(new Date(gantt._min_date.valueOf())),\n\t\t\t\ttimeFormat: getTimeFormat(sns)\n\t\t\t};\n\n\t\t\t// map: default order => real one\n\t\t\tsns._time_format_order = { size: 0 };\n\n\t\t\tif (gantt.config.limit_time_select) {\n\t\t\t\tsettings.first = 60 * cfg.first_hour;\n\t\t\t\tsettings.last = 60 * cfg.last_hour + 1;\n\t\t\t\tsettings.date.setHours(cfg.first_hour);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < settings.timeFormat.length; i++) {\n\t\t\t\t// adding spaces between selects\n\t\t\t\tif (i > 0) {\n\t\t\t\t\thtml += \" \";\n\t\t\t\t}\n\n\t\t\t\toptions = getHtmlTimePickerOptions(sns, i, settings);\n\n\t\t\t\tif (options) {\n\t\t\t\t\tariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n\t\t\t\t\treadonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n\t\t\t\t\tdisplay = hidden ? \" style='display:none' \" : \"\";\n\t\t\t\t\thtml += \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn html;\n\t\t},\n\t\tgetTimePickerValue: function (selects, config, offset) {\n\t\t\tvar map = config._time_format_order;\n\t\t\tvar needSetTime = gantt.defined(map[3]);\n\n\t\t\tvar time;\n\t\t\tvar hours = 0;\n\t\t\tvar minutes = 0;\n\n\t\t\tvar mapOffset = offset || 0;\n\n\t\t\tif (needSetTime) {\n\t\t\t\ttime = parseInt(selects[map[3] + mapOffset].value, 10);\n\t\t\t\thours = Math.floor(time / 60);\n\t\t\t\tminutes = time % 60;\n\t\t\t}\n\t\t\treturn new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n\t\t},\n\n\t\t_fill_lightbox_select: function (s, i, d, map) {\n\t\t\ts[i + map[0]].value = d.getDate();\n\t\t\ts[i + map[1]].value = d.getMonth();\n\t\t\ts[i + map[2]].value = d.getFullYear();\n\t\t\tif (gantt.defined(map[3])) {\n\t\t\t\tvar v = d.getHours() * 60 + d.getMinutes();\n\t\t\t\tv = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n\t\t\t\tvar input = s[i + map[3]];\n\t\t\t\tinput.value = v;\n\t\t\t\t//in case option not shown\n\t\t\t\tinput.setAttribute(\"data-value\", v);\n\t\t\t}\n\t\t},\n\t\ttemplate: new TemplateControl(),\n\t\ttextarea: new TextareaControl(),\n\t\tselect: new SelectControl(),\n\t\ttime: new TimeControl(),\n\t\tduration: new DurationControl(),\n\t\tparent: new ParentControl(),\n\t\tradio: new RadioControl(),\n\t\tcheckbox: new CheckboxControl(),\n\t\tresources: new ResourcesControl(),\n\t\tconstraint: new ConstraintControl()\n\t};\n\n\tgantt._is_lightbox_timepicker = function () {\n\t\tvar s = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < s.length; i++)\n\t\t\tif (s[i].name == \"time\" && s[i].type == \"time\")\n\t\t\t\treturn true;\n\t\treturn false;\n\t};\n\n\tgantt._dhtmlx_confirm = function (message, title, callback, ok) {\n\t\tif (!message)\n\t\t\treturn callback();\n\t\tvar opts = { text: message };\n\t\tif (title)\n\t\t\topts.title = title;\n\t\tif (ok) {\n\t\t\topts.ok = ok;\n\t\t}\n\t\tif (callback) {\n\t\t\topts.callback = function (result) {\n\t\t\t\tif (result)\n\t\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\tgantt.confirm(opts);\n\t};\n\n\tfunction _get_type_name(type_value) {\n\t\tfor (var i in this.config.types) {\n\t\t\tif (this.config.types[i] == type_value) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn \"task\";\n\t}\n\n\tgantt._get_typed_lightbox_config = function (type) {\n\t\tif (type === undefined) {\n\t\t\ttype = this.getLightboxType();\n\t\t}\n\n\t\tvar field = _get_type_name.call(this, type);\n\n\t\tif (gantt.config.lightbox[field + \"_sections\"]) {\n\t\t\treturn gantt.config.lightbox[field + \"_sections\"];\n\t\t} else {\n\t\t\treturn gantt.config.lightbox.sections;\n\t\t}\n\t};\n\n\tgantt._silent_redraw_lightbox = function (type) {\n\t\tvar oldType = this.getLightboxType();\n\n\t\tif (this.getState().lightbox) {\n\t\t\tvar taskId = this.getState().lightbox;\n\t\t\tvar formData = this.getLightboxValues(),\n\t\t\t\ttask = this.copy(this.getTask(taskId));\n\n\t\t\tthis.resetLightbox();\n\n\t\t\tvar updTask = this.mixin(task, formData, true);\n\t\t\tvar box = this.getLightbox(type ? type : undefined);\n\t\t\tthis._center_lightbox(this.getLightbox());\n\t\t\tthis._set_lightbox_values(updTask, box);\n\t\t} else {\n\t\t\tthis.resetLightbox();\n\t\t\tthis.getLightbox(type ? type : undefined);\n\t\t}\n\t\tthis.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n\t};\n\n\tfunction bindLabelsToInputs(sns) {\n\t\tvar section;\n\t\tvar label;\n\t\tvar labelBlock;\n\t\tvar inputBlock;\n\t\tvar input;\n\t\tvar i;\n\n\t\tfor (i = 0; i < sns.length; i++) {\n\t\t\tsection = sns[i];\n\t\t\tlabelBlock = document.getElementById(section.id);\n\n\t\t\tif (!section.id || !labelBlock) continue;\n\n\t\t\tlabel = labelBlock.querySelector(\"label\");\n\t\t\tinputBlock = labelBlock.nextSibling;\n\n\t\t\tif (!inputBlock) continue;\n\n\t\t\tinput = inputBlock.querySelector(\"input, select, textarea\");\n\t\t\tif (input) {\n\t\t\t\tinput.id = input.id || \"input_\" + gantt.uid();\n\t\t\t\tsection.inputId = input.id;\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getHtmlButtons(buttons, floatRight) {\n\t\tvar button;\n\t\tvar ariaAttr;\n\t\tvar html = \"\";\n\t\tvar i;\n\n\t\tfor (i = 0; i < buttons.length; i++) {\n\t\t\t// needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n\t\t\tbutton = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n\n\t\t\tariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n\t\t\thtml += \"
\" + gantt.locale.labels[button] + \"
\";\n\t\t}\n\t\treturn html;\n\t}\n\n\tfunction getTimeFormat(sns) {\n\t\tvar scale;\n\t\tvar unit;\n\t\tvar result;\n\n\t\tif (sns.time_format) return sns.time_format;\n\n\t\t// default order\n\t\tresult = [\"%d\", \"%m\", \"%Y\"];\n\t\tscale = gantt.getScale();\n\t\tunit = scale ? scale.unit : gantt.config.duration_unit;\n\t\tif (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n\t\t\tresult.push(\"%H:%i\");\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction getHtmlTimePickerOptions(sns, index, settings) {\n\t\tvar range;\n\t\tvar offset;\n\t\tvar start_year;\n\t\tvar end_year;\n\t\tvar i;\n\t\tvar time;\n\t\tvar diff;\n\t\tvar tdate;\n\t\tvar html = \"\";\n\n\t\tswitch (settings.timeFormat[index]) {\n\t\t\tcase \"%Y\":\n\t\t\t\tsns._time_format_order[2] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//year\n\n\t\t\t\tif (sns.year_range) {\n\t\t\t\t\tif (!isNaN(sns.year_range)) {\n\t\t\t\t\t\trange = sns.year_range;\n\t\t\t\t\t} else if (sns.year_range.push) {\n\t\t\t\t\t\t// if\n\t\t\t\t\t\tstart_year = sns.year_range[0];\n\t\t\t\t\t\tend_year = sns.year_range[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trange = range || 10;\n\t\t\t\toffset = offset || Math.floor(range / 2);\n\t\t\t\tstart_year = start_year || settings.date.getFullYear() - offset;\n\t\t\t\tend_year = end_year || start_year + range;\n\n\t\t\t\tfor (i = start_year; i < end_year; i++)\n\t\t\t\t\thtml += \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"%m\":\n\t\t\t\tsns._time_format_order[1] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//month\n\t\t\t\tfor (i = 0; i < 12; i++)\n\t\t\t\t\thtml += \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"%d\":\n\t\t\t\tsns._time_format_order[0] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//days\n\t\t\t\tfor (i = 1; i < 32; i++)\n\t\t\t\t\thtml += \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"%H:%i\":\n\t\t\t\t// var last = 24*60, first = 0;\n\t\t\t\tsns._time_format_order[3] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//hours\n\t\t\t\ti = settings.first;\n\t\t\t\ttdate = settings.date.getDate();\n\t\t\t\tsns._time_values = [];\n\n\t\t\t\twhile (i < settings.last) {\n\t\t\t\t\ttime = gantt.templates.time_picker(settings.date);\n\t\t\t\t\thtml += \"\";\n\t\t\t\t\tsns._time_values.push(i);\n\t\t\t\t\tsettings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n\t\t\t\t\tdiff = (settings.date.getDate() != tdate) ? 1 : 0; // moved or not to the next day\n\t\t\t\t\ti = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn html;\n\t}\n};","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.isUnscheduledTask = function (task) {\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isUnscheduledTask. Task object was expected\");\n\t\treturn (!!task.unscheduled || !task.start_date);\n\t};\n\n\tgantt._isAllowedUnscheduledTask = function (task) {\n\t\treturn !!(task.unscheduled && gantt.config.show_unscheduled);\n\t};\n\n\tgantt.isTaskVisible = function (id) {\n\t\tif (!this.isTaskExists(id))\n\t\t\treturn false;\n\n\t\tvar task = this.getTask(id);\n\n\t\tvar taskStart = task.start_date ? task.start_date.valueOf() : null;\n\t\tvar taskEnd = task.end_date ? task.end_date.valueOf() : null;\n\n\t\tif (!(gantt._isAllowedUnscheduledTask(task) || (taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf()))){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!(gantt.getGlobalTaskIndex(id) >= 0);\n\t};\n\n\tgantt._getProjectEnd = function() {\n\t\tif(gantt.config.project_end){\n\t\t\treturn gantt.config.project_end;\n\t\t}else{\n\t\t\tvar tasks = gantt.getTaskByTime();\n\t\t\ttasks = tasks.sort(function (a, b) {\n\t\t\t\treturn +a.end_date > +b.end_date ? 1 : -1;\n\t\t\t});\n\t\t\treturn tasks.length ? tasks[tasks.length - 1].end_date : null;\n\t\t}\n\t};\n\tgantt._getProjectStart = function() {\n\t\tif (gantt.config.project_start) {\n\t\t\treturn gantt.config.project_start;\n\t\t}\n\n\t\t// use timeline start if project start is not specified\n\t\tif (gantt.config.start_date) {\n\t\t\treturn gantt.config.start_date;\n\t\t}\n\t\tif (gantt.getState().min_date) {\n\t\t\treturn gantt.getState().min_date;\n\t\t}\n\n\t\t// earliest task start if neither project start nor timeline are specified\n\t\tvar tasks = gantt.getTaskByTime();\n\t\ttasks = tasks.sort(function (a, b) {\n\t\t\treturn +a.start_date > +b.start_date ? 1 : -1;\n\t\t});\n\t\treturn tasks.length ? tasks[0].start_date : null;\n\t};\n\n\tgantt._defaultTaskDate = function (item, parent_id) {\n\t\tvar parent = (parent_id && parent_id != gantt.config.root_id) ? gantt.getTask(parent_id) : false,\n\t\t\tstartDate = null;\n\t\tif (parent) {\n\t\t\tif(gantt.config.schedule_from_end){\n\t\t\t\tstartDate = gantt.calculateEndDate({\n\t\t\t\t\tstart_date: parent.end_date,\n\t\t\t\t\tduration: - gantt.config.duration_step,\n\t\t\t\t\ttask:item\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tstartDate = parent.start_date;\n\t\t\t}\n\n\t\t} else if(gantt.config.schedule_from_end) {\n\t\t\tstartDate = gantt.calculateEndDate({\n\t\t\t\tstart_date: gantt._getProjectEnd(),\n\t\t\t\tduration: - gantt.config.duration_step,\n\t\t\t\ttask:item\n\t\t\t});\n\t\t} else {\n\t\t\tvar first = gantt.getTaskByIndex(0);\n\t\t\tstartDate = first ? (first.start_date ? first.start_date : (first.end_date ? gantt.calculateEndDate({\n\t\t\t\tstart_date: first.end_date,\n\t\t\t\tduration: -gantt.config.duration_step,\n\t\t\t\ttask:item\n\t\t\t}) : null)) : gantt.config.start_date || gantt.getState().min_date;\n\t\t}\n\t\tgantt.assert(startDate, \"Invalid dates\");\n\t\treturn new Date(startDate);\n\t};\n\n\tgantt._set_default_task_timing = function (task) {\n\t\ttask.start_date = task.start_date || gantt._defaultTaskDate(task, gantt.getParent(task));\n\t\ttask.duration = task.duration || gantt.config.duration_step;\n\t\ttask.end_date = task.end_date || gantt.calculateEndDate(task);\n\t};\n\n\tgantt.createTask = function (item, parent, index) {\n\t\titem = item || {};\n\t\tif (!gantt.defined(item.id))\n\t\t\titem.id = gantt.uid();\n\n\t\tif (!item.start_date) {\n\t\t\titem.start_date = gantt._defaultTaskDate(item, parent);\n\t\t}\n\t\tif (item.text === undefined) {\n\t\t\titem.text = gantt.locale.labels.new_task;\n\t\t}\n\t\tif (item.duration === undefined) {\n\t\t\titem.duration = 1;\n\t\t}\n\n\t\tif (this.isTaskExists(parent)) {\n\t\t\tthis.setParent(item, parent, true);\n\t\t\tvar parentObj = this.getTask(parent);\n\t\t\tparentObj.$open = true;\n\t\t}\n\n\t\tif (!this.callEvent(\"onTaskCreated\", [item])) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.config.details_on_create) {\n\t\t\titem.$new = true;\n\t\t\tthis.silent(function(){\n\t\t\t\tgantt.$data.tasksStore.addItem(item, index);\n\t\t\t});\n\t\t\tthis.selectTask(item.id);\n\t\t\tthis.refreshData();\n\t\t\tthis.showLightbox(item.id);\n\t\t} else {\n\t\t\tif (this.addTask(item, parent, index)) {\n\t\t\t\tthis.showTask(item.id);\n\t\t\t\tthis.selectTask(item.id);\n\t\t\t}\n\t\t}\n\t\treturn item.id;\n\t};\n\n\tgantt._update_flags = function (oldid, newid) {\n\t\t// TODO: need a proper way to update all possible flags\n\t\tvar store = gantt.$data.tasksStore;\n\t\tif (oldid === undefined) {\n\t\t\tthis._lightbox_id = null;\n\n\t\t\tstore.silent(function(){\n\t\t\t\tstore.unselect();\n\t\t\t});\n\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag) {\n\t\t\t\tthis._tasks_dnd.drag.id = null;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._lightbox_id == oldid)\n\t\t\t\tthis._lightbox_id = newid;\n\n\t\t\t// TODO: probably can be removed\n\t\t\tif (store.getSelectedId() == oldid) {\n\t\t\t\tstore.silent(function(){\n\t\t\t\t\tstore.unselect(oldid);\n\t\t\t\t\tstore.select(newid);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n\t\t\t\tthis._tasks_dnd.drag.id = newid;\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt._get_task_timing_mode = function (task, force) {\n\t\tvar task_type = this.getTaskType(task.type);\n\n\t\tvar state = {\n\t\t\ttype: task_type,\n\t\t\t$no_start: false,\n\t\t\t$no_end: false\n\t\t};\n\n\t\tif (!force && task_type == task.$rendered_type) {\n\t\t\tstate.$no_start = task.$no_start;\n\t\t\tstate.$no_end = task.$no_end;\n\t\t\treturn state;\n\t\t}\n\n\t\tif (task_type == this.config.types.project) {\n\t\t\t//project duration is always defined by children duration\n\t\t\tstate.$no_end = state.$no_start = true;\n\t\t} else if (task_type != this.config.types.milestone) {\n\t\t\t//tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n\t\t\tstate.$no_end = !(task.end_date || task.duration);\n\t\t\tstate.$no_start = !task.start_date;\n\n\t\t\tif (this._isAllowedUnscheduledTask(task)) {\n\t\t\t\tstate.$no_end = state.$no_start = false;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t};\n\n\tgantt._init_task_timing = function (task) {\n\t\tvar task_mode = gantt._get_task_timing_mode(task, true);\n\n\t\tvar dirty = task.$rendered_type != task_mode.type;\n\n\t\tvar task_type = task_mode.type;\n\n\t\tif (dirty) {\n\t\t\ttask.$no_start = task_mode.$no_start;\n\t\t\ttask.$no_end = task_mode.$no_end;\n\t\t\ttask.$rendered_type = task_mode.type;\n\t\t}\n\n\t\tif (dirty && task_type != this.config.types.milestone) {\n\t\t\tif (task_type == this.config.types.project) {\n\t\t\t\t//project duration is always defined by children duration\n\t\t\t\tthis._set_default_task_timing(task);\n\t\t\t}\n\t\t}\n\n\t\tif (task_type == this.config.types.milestone) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\t\tif (task.start_date && task.end_date) {\n\t\t\ttask.duration = this.calculateDuration(task);\n\t\t}\n\n\t\tif (!task.end_date) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\n\t\ttask.duration = task.duration || 0;\n\t};\n\n\tgantt.isSummaryTask = function (task) {\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSummaryTask. Task object was expected\");\n\n\t\tvar mode = gantt._get_task_timing_mode(task);\n\n\t\treturn !!(mode.$no_end || mode.$no_start);\n\t};\n\n// downward calculation of project duration\n\tgantt.resetProjectDates = function (task) {\n\t\tvar taskMode = this._get_task_timing_mode(task);\n\t\tif (taskMode.$no_end || taskMode.$no_start) {\n\t\t\tvar dates = this.getSubtaskDates(task.id);\n\t\t\tthis._assign_project_dates(task, dates.start_date, dates.end_date);\n\t\t}\n\t};\n\n\tgantt.getSubtaskDuration = function (task_id) {\n\t\tvar res = 0,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tres += child.duration;\n\t\t}, root);\n\n\t\treturn res;\n\t};\n\n\tgantt.getSubtaskDates = function (task_id) {\n\t\tvar min = null,\n\t\t\tmax = null,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tif ((child.start_date && !child.$no_start) && (!min || min > child.start_date.valueOf()))\n\t\t\t\tmin = child.start_date.valueOf();\n\t\t\tif ((child.end_date && !child.$no_end) && (!max || max < child.end_date.valueOf()))\n\t\t\t\tmax = child.end_date.valueOf();\n\t\t}, root);\n\n\t\treturn {\n\t\t\tstart_date: min ? new Date(min) : null,\n\t\t\tend_date: max ? new Date(max) : null\n\t\t};\n\t};\n\n\tgantt._assign_project_dates = function (task, from, to) {\n\t\tvar taskTiming = this._get_task_timing_mode(task);\n\t\tif (taskTiming.$no_start) {\n\t\t\tif (from && from != Infinity) {\n\t\t\t\ttask.start_date = new Date(from);\n\t\t\t} else {\n\t\t\t\ttask.start_date = this._defaultTaskDate(task, this.getParent(task));\n\t\t\t}\n\t\t}\n\n\t\tif (taskTiming.$no_end) {\n\t\t\tif (to && to != -Infinity) {\n\t\t\t\ttask.end_date = new Date(to);\n\t\t\t} else {\n\t\t\t\ttask.end_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\tduration: this.config.duration_step,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tthis._init_task_timing(task);\n\t\t}\n\t};\n\n// upward calculation of project duration\n\tgantt._update_parents = function (taskId, silent) {\n\t\tif (!taskId) return;\n\n\t\tvar task = this.getTask(taskId);\n\t\tvar pid = this.getParent(task);\n\n\t\tvar taskTiming = this._get_task_timing_mode(task);\n\n\t\tvar has_changed = true;\n\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tvar oldStart = task.start_date.valueOf(),\n\t\t\t\toldEnd = task.end_date.valueOf();\n\n\t\t\tgantt.resetProjectDates(task);\n\n\t\t\t// not refresh parent projects if dates hasn't changed\n\t\t\tif (oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n\t\t\t\thas_changed = false;\n\t\t\t}\n\n\t\t\tif (has_changed && !silent) {\n\t\t\t\tthis.refreshTask(task.id, true);\n\t\t\t}\n\t\t}\n\n\n\t\tif (has_changed && pid && this.isTaskExists(pid)) {\n\t\t\tthis._update_parents(pid, silent);\n\t\t}\n\t};\n\n\tgantt.roundDate = function (config) {\n\t\tvar scale = gantt.getScale();\n\n\t\tif (helpers.isDate(config)) {\n\t\t\tconfig = {\n\t\t\t\tdate: config,\n\t\t\t\tunit: scale ? scale.unit : gantt.config.duration_unit,\n\t\t\t\tstep: scale ? scale.step : gantt.config.duration_step\n\t\t\t};\n\t\t}\n\t\tvar date = config.date,\n\t\t\tsteps = config.step,\n\t\t\tunit = config.unit;\n\n\t\tif(!scale){\n\t\t\treturn date;\n\t\t}\n\n\t\tvar upper, lower, colIndex;\n\t\tif (unit == scale.unit && steps == scale.step &&\n\t\t\t+date >= +scale.min_date && +date <= +scale.max_date) {\n\t\t\t//find date in time scale config\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tif (!scale.trace_x[colIndex]) {\n\t\t\t\tcolIndex -= 1;// end of time scale\n\t\t\t\tif(scale.rtl){\n\t\t\t\t\tcolIndex = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlower = new Date(scale.trace_x[colIndex]);\n\t\t\tupper = gantt.date.add(lower, steps, unit);\n\t\t} else {\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tupper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\t\t\tif (scale.trace_x[colIndex]) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]);// end of time scale\n\t\t\t}\n\n\t\t\twhile (+upper < +date) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n\n\t\t\t\tvar tzOffset = upper.getTimezoneOffset();\n\n\t\t\t\tupper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n\t\t\t\tif (gantt.date[unit + '_start'])\n\t\t\t\t\tupper = gantt.date[unit + '_start'](upper);\n\t\t\t}\n\n\t\t\tlower = gantt.date.add(upper, -1 * steps, unit);\n\n\t\t}\n\t\tif (config.dir && config.dir == 'future')\n\t\t\treturn upper;\n\t\tif (config.dir && config.dir == 'past')\n\t\t\treturn lower;\n\n\t\tif (Math.abs(date - lower) < Math.abs(upper - date)) {\n\t\t\treturn lower;\n\t\t} else {\n\t\t\treturn upper;\n\t\t}\n\n\t};\n\n\tgantt.correctTaskWorkTime = function (task) {\n\t\tif (gantt.config.work_time && gantt.config.correct_work_time) {\n\t\t\tif (!this.isWorkTime(task.start_date, undefined, task)) {\n\t\t\t\ttask.start_date = this.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\tgantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorktimeFacade = function(calendarManager, timeCalculator){\n\treturn {\n\t\tgetWorkHours: function (date) {\n\t\t\treturn timeCalculator.getWorkHours(date);\n\t\t},\n\n\t\tsetWorkTime: function (config) {\n\t\t\treturn timeCalculator.setWorkTime(config);\n\t\t},\n\n\t\tunsetWorkTime: function (config) {\n\t\t\ttimeCalculator.unsetWorkTime(config);\n\t\t},\n\n\t\tisWorkTime: function (date, unit, task) {\n\t\t\treturn timeCalculator.isWorkTime(date, unit, task);\n\t\t},\n\n\t\tgetClosestWorkTime: function (config) {\n\t\t\treturn timeCalculator.getClosestWorkTime(config);\n\t\t},\n\n\t\tcalculateDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.calculateDuration(start_date, end_date, task);\n\t\t},\n\t\t_hasDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.hasDuration(start_date, end_date, task);\n\t\t},\n\n\t\tcalculateEndDate: function (start, duration, unit, task) {\n\t\t\treturn timeCalculator.calculateEndDate(start, duration, unit, task);\n\t\t},\n\n\t\tcreateCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n\t\taddCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n\t\tgetCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n\t\tgetCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n\t\tgetTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n\t\tdeleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n\t};\n};\n\n\nmodule.exports = { create: createWorktimeFacade };\n","function CalendarDisabledTimeStrategy(gantt, argumentsHelper){\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n\tgetWorkHours: function () {\n\t\treturn [0, 24];\n\t},\n\tsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tunsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tisWorkTime: function () {\n\t\treturn true;\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tvar config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\t\treturn config.date;\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this._calculateDuration(from, to, unit, step);\n\t},\n\t_calculateDuration: function (start, end, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar fixedUnits = {\n\t\t\t\"week\": 1000 * 60 * 60 * 24 * 7,\n\t\t\t\"day\": 1000 * 60 * 60 * 24,\n\t\t\t\"hour\": 1000 * 60 * 60,\n\t\t\t\"minute\": 1000 * 60\n\t\t};\n\n\t\tvar res = 0;\n\t\tif (fixedUnits[unit]) {\n\t\t\tres = Math.round((end - start) / (step * fixedUnits[unit]));\n\t\t} else {\n\t\t\tvar from = new Date(start),\n\t\t\t\tto = new Date(end);\n\t\t\twhile (from.valueOf() < to.valueOf()) {\n\t\t\t\tres += 1;\n\t\t\t\tfrom = dateHelper.add(from, step, unit);\n\t\t\t}\n\n\t\t\tif (from.valueOf() != end.valueOf()) {\n\t\t\t\tres += (to - from) / (dateHelper.add(from, step, unit) - from);\n\t\t\t}\n\t\t}\n\n\t\treturn Math.round(res);\n\t},\n\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tfrom = new Date(from);\n\t\tto = new Date(to);\n\n\t\treturn (from.valueOf() < to.valueOf());\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar start = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this.$gantt.date.add(start, step * duration, unit);\n\t}\n};\n\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n\tNoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager){\n\n\tthis.$gantt = calendarManager.$gantt;\n\tthis.argumentsHelper = createArgumentsHelper(this.$gantt);\n\tthis.calendarManager = calendarManager;\n\tthis.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n\t_getCalendar: function (config) {\n\t\tvar calendar;\n\t\tif (!this.$gantt.$services.config().work_time) {\n\t\t\tcalendar = this.$disabledCalendar;\n\t\t} else {\n\t\t\tvar manager = this.calendarManager;\n\t\t\tif (config.task) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config.task);\n\t\t\t} else if (config.id) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config);\n\t\t\t} else if (config.calendar) {\n\t\t\t\tcalendar = config.calendar;\n\t\t\t}\n\t\t\tif (!calendar) {\n\t\t\t\tcalendar = manager.getTaskCalendar();\n\t\t\t}\n\t\t}\n\t\treturn calendar;\n\t},\n\n\tgetWorkHours: function (config) {\n\t\tconfig = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getWorkHours(config.date);\n\t},\n\n\tsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.setWorkTime(config);\n\t},\n\n\tunsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.unsetWorkTime(config);\n\t},\n\tisWorkTime: function (date, unit, task, calendar) {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tcalendar = this._getCalendar(config);\n\t\treturn calendar.isWorkTime(config);\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tconfig = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getClosestWorkTime(config);\n\t},\n\n\tcalculateDuration: function () { // start_date_date, end_date, task\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateDuration(config);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.hasDuration(config);\n\t},\n\tcalculateEndDate: function (config) { // start_date, duration, unit, task\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateEndDate(config);\n\t}\n};\n\nmodule.exports = TimeCalculator;\n\n","import { IWorkUnitCache } from \"./workunit_cache_interface\";\n\nexport class WorkUnitsObjectCache implements IWorkUnitCache {\n\tprivate _cache: any;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tgetItem(unit: string, timestamp: string): number|boolean {\n\t\tconst cache = this._cache;\n\t\tif (cache && cache[unit]) {\n\t\t\tconst units = cache[unit];\n\n\t\t\tif (units[timestamp] !== undefined) {\n\t\t\t\treturn units[timestamp];\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\n\t\tif (!unit || !timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this._cache;\n\n\t\tif (!cache) {\n\t\t\treturn;\n\t\t}\n\t\tif (!cache[unit]) {\n\t\t\tcache[unit] = {};\n\t\t}\n\t\tcache[unit][timestamp] = value;\n\t}\n\tclear(): void{\n\t\tthis._cache = {};\n\t}\n}","\n\nimport { IWorkUnitCache } from \"./workunit_cache_interface\";\n\nexport class WorkUnitsMapCache implements IWorkUnitCache {\n\tprivate _cache: Map>;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tgetItem(unit: string, timestamp: string): number|boolean {\n\t\tif (this._cache.has(unit)) {\n\t\t\tconst unitCache = this._cache.get(unit);\n\t\t\tif (unitCache.has(timestamp)) {\n\t\t\t\treturn unitCache.get(timestamp);\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\n\t\tif (!unit || !timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this._cache;\n\n\t\tlet unitCache;\n\t\tif (!cache.has(unit)) {\n\t\t\tunitCache = new Map();\n\t\t\tcache.set(unit, unitCache);\n\t\t} else {\n\t\t\tunitCache = cache.get(unit);\n\t\t}\n\t\tunitCache.set(timestamp, value);\n\t}\n\tclear(): void{\n\t\tthis._cache = new Map>();\n\t}\n}","import { IWorkUnitCache } from \"./workunit_cache_interface\";\nimport { WorkUnitsMapCache } from \"./workunit_map_cache\";\nimport { WorkUnitsObjectCache } from \"./workunit_object_cache\";\n\nexport function createCacheObject(): IWorkUnitCache {\n\n\t// worktime hash is on the hot path,\n\t// Map seems to work faster than plain array, use it whenever possible\n\tif (typeof Map !== \"undefined\") {\n\t\treturn new WorkUnitsMapCache();\n\t} else {\n\t\treturn new WorkUnitsObjectCache();\n\t}\n}","var cacheFactory = require(\"./work_unit_cache\"),\n\tutils = require(\"../../../utils/utils\");\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper){\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n\tthis._workingUnitsCache = cacheFactory.createCacheObject();\n}\n\nCalendarWorkTimeStrategy.prototype = {\n\tunits: [\n\t\t\"year\",\n\t\t\"month\",\n\t\t\"week\",\n\t\t\"day\",\n\t\t\"hour\",\n\t\t\"minute\"\n\t],\n\t// cache previously calculated worktime\n\t_getUnitOrder: function (unit) {\n\t\tfor (var i = 0, len = this.units.length; i < len; i++) {\n\t\t\tif (this.units[i] == unit)\n\t\t\t\treturn i;\n\t\t}\n\t},\n\t_timestamp: function (settings) {\n\n\t\tvar timestamp = null;\n\t\tif ((settings.day || settings.day === 0)) {\n\t\t\ttimestamp = settings.day;\n\t\t} else if (settings.date) {\n\t\t\t// store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n\t\t\ttimestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n\t\t}\n\t\treturn timestamp;\n\t},\n\t_checkIfWorkingUnit: function (date, unit, order) {\n\t\tif (order === undefined) {\n\t\t\torder = this._getUnitOrder(unit);\n\t\t}\n\n\t\t// disable worktime check for custom time units\n\t\tif (order === undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tif (order) {\n\t\t\t//check if bigger time unit is a work time (hour < day < month...)\n\t\t\t//i.e. don't check particular hour if the whole day is marked as not working\n\t\t\tif (!this._isWorkTime(date, this.units[order - 1], order - 1))\n\t\t\t\treturn false;\n\t\t}\n\t\tif (!this[\"_is_work_\" + unit])\n\t\t\treturn true;\n\t\treturn this[\"_is_work_\" + unit](date);\n\t},\n\t//checkings for particular time units\n\t//methods for month-year-week can be defined, otherwise always return 'true'\n\t_is_work_day: function (date) {\n\t\tvar val = this._getWorkHours(date);\n\n\t\tif (val instanceof Array) {\n\t\t\treturn val.length > 0;\n\t\t}\n\t\treturn false;\n\t},\n\t_is_work_hour: function (date) {\n\t\tvar hours = this._getWorkHours(date); // [7,12] or []\n\t\tvar hour = date.getHours();\n\t\tfor (var i = 0; i < hours.length; i += 2) {\n\t\t\tif (hours[i + 1] === undefined) {\n\t\t\t\treturn hours[i] == hour;\n\t\t\t} else {\n\t\t\t\tif (hour >= hours[i] && hour < hours[i + 1])\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t_internDatesPull: {},\n\t_nextDate: function (start, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\treturn dateHelper.add(start, step, unit);\n\n\t\t/*var start_value = +start,\n\t\t\tkey = unit + \"_\" + step;\n\t\tvar interned = this._internDatesPull[key];\n\t\tif(!interned){\n\t\t\tinterned = this._internDatesPull[key] = {};\n\t\t}\n\t\tvar calculated;\n\t\tif(!interned[start_value]){\n\t\t\tinterned[start_value] = calculated = dateHelper.add(start, step, unit);\n\t\t\t//interned[start_value] = dateHelper.add(start, step, unit);\n\t\t}\n\t\treturn calculated || interned[start_value];*/\n\t},\n\t_getWorkUnitsBetweenGeneric: function (from, to, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\t\tvar units = 0;\n\n\n\t\tvar next = null;\n\t\tvar stepStart,\n\t\t\tstepEnd;\n\n\t\t// calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n\t\t// and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n\t\t// durations must be rounded later\n\t\tvar checkFirst = false;\n\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\tif (stepStart.valueOf() != start.valueOf()) {\n\t\t\tcheckFirst = true;\n\t\t}\n\t\tvar checkLast = false;\n\t\tstepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\t\tif (stepEnd.valueOf() != to.valueOf()) {\n\t\t\tcheckLast = true;\n\t\t}\n\n\t\tvar isLastStep = false;\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tnext = this._nextDate(start, unit, step);\n\t\t\tisLastStep = (next.valueOf() > end.valueOf());\n\n\t\t\tif (this._isWorkTime(start, unit)) {\n\t\t\t\tif (checkFirst || (checkLast && isLastStep)) {\n\t\t\t\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\t\t\t\tstepEnd = dateHelper.add(stepStart, step, unit);\n\t\t\t\t}\n\n\t\t\t\tif (checkFirst) {\n\t\t\t\t\tcheckFirst = false;\n\t\t\t\t\tnext = this._nextDate(stepStart, unit, step);\n\t\t\t\t\tunits += ((stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\t\t\t\t} else if (checkLast && isLastStep) {\n\t\t\t\t\tcheckLast = false;\n\t\t\t\t\tunits += ((end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\n\t\t\t\t} else {\n\t\t\t\t\tunits++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart = next;\n\t\t}\n\t\treturn units;\n\t},\n\n\t_getMinutesPerDay: function (date) {\n\t\t// current api doesn't allow setting working minutes, so use hardcoded 60 minutes per hour\n\t\treturn this._getHoursPerDay(date) * 60;\n\t},\n\t_getHoursPerDay: function (date) {\n\t\tvar hours = this._getWorkHours(date);\n\t\tvar res = 0;\n\t\tfor (var i = 0; i < hours.length; i += 2) {\n\t\t\tres += ((hours[i + 1] - hours[i]) || 0);\n\t\t}\n\t\treturn res;\n\t},\n\t_getWorkUnitsForRange: function (from, to, unit, step) {\n\t\tvar total = 0;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\n\t\tvar getUnitsPerDay;\n\t\tif (unit == \"minute\") {\n\t\t\tgetUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n\t\t} else {\n\t\t\tgetUnitsPerDay = utils.bind(this._getHoursPerDay, this);\n\t\t}\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif (this._isWorkTime(start, \"day\")) {\n\t\t\t\ttotal += getUnitsPerDay(start);\n\t\t\t}\n\t\t\tstart = this._nextDate(start, \"day\", 1);\n\t\t}\n\n\t\treturn total / step;\n\t},\n\n\t// optimized method for calculating work units duration of large time spans\n\t// implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n\t_getWorkUnitsBetweenQuick: function (from, to, unit, step) {\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\tvar firstDayStart = new Date(start);\n\t\tvar firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n\t\tif (end.valueOf() <= firstDayEnd.valueOf()) {\n\t\t\treturn this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n\t\t} else {\n\n\t\t\tvar lastDayStart = this.$gantt.date.day_start(new Date(end));\n\t\t\tvar lastDayEnd = end;\n\n\t\t\tvar startPart = this._getWorkUnitsBetweenGeneric(firstDayStart, firstDayEnd, unit, step);\n\t\t\tvar endPart = this._getWorkUnitsBetweenGeneric(lastDayStart, lastDayEnd, unit, step);\n\n\t\t\tvar rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\t\t\tvar total = startPart + rangePart + endPart;\n\n\t\t\treturn total;\n\t\t}\n\t},\n\n\t_getCalendar: function () {\n\t\treturn this.worktime;\n\t},\n\t_setCalendar: function (settings) {\n\t\tthis.worktime = settings;\n\t},\n\n\t_tryChangeCalendarSettings: function (payload) {\n\t\tvar backup = JSON.stringify(this._getCalendar());\n\t\tpayload();\n\t\tif (this._isEmptyCalendar(this._getCalendar())) {\n\t\t\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n\t\t\tthis._setCalendar(JSON.parse(backup));\n\t\t\tthis._workingUnitsCache.clear();\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\n\t},\n\n\t_isEmptyCalendar: function (settings) {\n\t\tvar result = false,\n\t\t\tdatesArray = [],\n\t\t\tisFullWeekSet = true;\n\t\tfor (var i in settings.dates) {\n\t\t\tresult |= !!settings.dates[i];\n\t\t\tdatesArray.push(i);\n\t\t}\n\n\t\tvar checkFullArray = [];\n\t\tfor (var i = 0; i < datesArray.length; i++) {\n\t\t\tif (datesArray[i] < 10) {\n\t\t\t\tcheckFullArray.push(datesArray[i]);\n\t\t\t}\n\t\t}\n\t\tcheckFullArray.sort();\n\n\t\tfor (var i = 0; i < 7; i++) {\n\t\t\tif (checkFullArray[i] != i)\n\t\t\t\tisFullWeekSet = false;\n\t\t}\n\t\tif (isFullWeekSet)\n\t\t\treturn !result;\n\t\treturn !(result || !!settings.hours); // can still return false if separated dates are set to true\n\t},\n\n\tgetWorkHours: function () {\n\t\tvar config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\t\treturn this._getWorkHours(config.date);\n\t},\n\t_getWorkHours: function (date) {\n\t\tvar t = this._timestamp({date: date});\n\t\tvar hours = true;\n\t\tvar calendar = this._getCalendar();\n\t\tif (calendar.dates[t] !== undefined) {\n\t\t\thours = calendar.dates[t];//custom day\n\t\t} else if (calendar.dates[date.getDay()] !== undefined) {\n\t\t\thours = calendar.dates[date.getDay()];//week day\n\t\t}\n\t\tif (hours === true) {\n\t\t\treturn calendar.hours;\n\t\t} else if (hours) {\n\t\t\treturn hours;\n\t\t}\n\t\treturn [];\n\t},\n\n\tsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tvar hours = settings.hours !== undefined ? settings.hours : true;\n\t\t\tvar timestamp = this._timestamp(settings);\n\t\t\tif (timestamp !== null) {\n\t\t\t\tthis._getCalendar().dates[timestamp] = hours;\n\t\t\t} else {\n\t\t\t\tthis._getCalendar().hours = hours;\n\t\t\t}\n\t\t\tthis._workingUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\tunsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tif (!settings) {\n\t\t\t\tthis.reset_calendar();\n\t\t\t} else {\n\n\t\t\t\tvar timestamp = this._timestamp(settings);\n\n\t\t\t\tif (timestamp !== null) {\n\t\t\t\t\tdelete this._getCalendar().dates[timestamp];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Clear work units cache\n\t\t\tthis._workingUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\t_isWorkTime: function (date, unit, order) {\n\t\t// Check if this item has in the cache\n\n\t\t// use string keys\n\t\tvar dateKey = String(date.valueOf());\n\t\tvar is_work_unit = this._workingUnitsCache.getItem(unit, dateKey);\n\n\t\tif (is_work_unit == -1) {\n\t\t\t// calculate if not cached\n\t\t\tis_work_unit = this._checkIfWorkingUnit(date, unit, order);\n\t\t\tthis._workingUnitsCache.setItem(unit, dateKey, is_work_unit);\n\t\t}\n\n\t\treturn is_work_unit;\n\t},\n\n\tisWorkTime: function () {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._isWorkTime(config.date, config.unit);\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tif (!config.unit) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\t},\n\n\t_calculateDuration: function (from, to, unit, step) {\n\t\tvar res = 0;\n\t\tif (unit == \"hour\" || unit == \"minute\") {\n\t\t\tres = this._getWorkUnitsBetweenQuick(from, to, unit, step);\n\t\t} else {\n\t\t\tres = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n\t\t}\n\n\t\t// getWorkUnits.. returns decimal durations\n\t\treturn Math.round(res);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif (this._isWorkTime(start, unit))\n\t\t\t\treturn true;\n\t\t\tstart = this._nextDate(start, unit, step);\n\t\t}\n\t\treturn false;\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit)\n\t\t\treturn false;\n\n\t\tvar mult = (config.duration >= 0) ? 1 : -1;\n\t\tduration = Math.abs(duration * 1);\n\t\treturn this._calculateEndDate(from, duration, unit, step * mult);\n\t},\n\n\t_calculateEndDate: function (from, duration, unit, step) {\n\t\tif (!unit)\n\t\t\treturn false;\n\n\t\tif (step == 1 && unit == \"minute\") {\n\t\t\treturn this._calculateMinuteEndDate(from, duration, step);\n\t\t} else if (step == 1 && unit == \"hour\") {\n\t\t\treturn this._calculateHourEndDate(from, duration, step);\n\t\t} else {\n\t\t\tvar interval = this._addInterval(from, duration, unit, step, null);\n\t\t\treturn interval.end;\n\t\t}\n\t},\n\n\t_addInterval: function (start, duration, unit, step, stopAction) {\n\t\tvar added = 0;\n\t\tvar current = start;\n\t\twhile (added < duration && !(stopAction && stopAction(current))) {\n\t\t\tvar next = this._nextDate(current, unit, step);\n\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), unit)) {\n\t\t\t\tadded++;\n\t\t\t}\n\t\t\tcurrent = next;\n\t\t}\n\t\treturn {\n\t\t\tend: current,\n\t\t\tsatrt: start,\n\t\t\tadded: added\n\t\t};\n\t},\n\n\t_calculateHourEndDate: function (from, duration, step) {\n\t\tvar start = new Date(from),\n\t\tadded = 0;\n\t\tstep = step || 1;\n\t\tduration = Math.abs(duration * 1);\n\n\t\tvar interval = this._addInterval(start, duration, \"hour\", step, function (date) {\n\t\t\t// iterate until hour end\n\t\t\tif (!(date.getHours() || date.getMinutes() || date.getSeconds() || date.getMilliseconds())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tadded = interval.added;\n\t\tstart = interval.end;\n\n\t\tvar durationLeft = duration - added;\n\n\t\tif (durationLeft && durationLeft > 24) {\n\t\t\tvar current = start;\n\t\t\twhile (added < duration) {\n\t\t\t\tvar next = this._nextDate(current, \"day\", step);\n\t\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), \"day\")) {\n\t\t\t\t\tvar hours = this._getHoursPerDay(current);\n\t\t\t\t\tif (added + hours >= duration) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadded += hours;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcurrent = next;\n\t\t\t}\n\t\t\tstart = current;\n\t\t}\n\n\t\tif (added < duration) {\n\t\t\tvar durationLeft = duration - added;\n\t\t\tinterval = this._addInterval(start, durationLeft, \"hour\", step, null);\n\t\t\tstart = interval.end;\n\t\t}\n\n\t\treturn start;\n\t},\n\n\t_calculateMinuteEndDate: function (from, duration, step) {\n\n\t\tvar start = new Date(from),\n\t\t\tadded = 0;\n\t\tstep = step || 1;\n\t\tduration = Math.abs(duration * 1);\n\n\t\tvar interval = this._addInterval(start, duration, \"minute\", step, function (date) {\n\t\t\t// iterate until hour end\n\t\t\tif (!(date.getMinutes() || date.getSeconds() || date.getMilliseconds())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tadded = interval.added;\n\t\tstart = interval.end;\n\n\t\tif (added < duration) {\n\t\t\tvar left = duration - added;\n\t\t\tvar hours = Math.floor(left / 60);\n\t\t\tif (hours) {\n\t\t\t\tstart = this._calculateEndDate(start, hours, \"hour\", step > 0 ? 1 : -1);\n\t\t\t\tadded += hours * 60;\n\t\t\t}\n\t\t}\n\n\t\tif (added < duration) {\n\t\t\tvar durationLeft = duration - added;\n\t\t\tinterval = this._addInterval(start, durationLeft, \"minute\", step, null);\n\t\t\tstart = interval.end;\n\t\t}\n\n\t\treturn start;\n\t},\n\n\tgetClosestWorkTime: function () {\n\t\tvar settings = this.argumentsHelper.getClosestWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n\t},\n\n\t_getClosestWorkTime: function (inputDate, unit, direction) {\n\t\tvar result = new Date(inputDate);\n\n\t\tif (this._isWorkTime(result, unit)) {\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this.$gantt.date[unit + '_start'](result);\n\n\t\tif (direction == 'any' || !direction) {\n\t\t\tvar closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\t\t\tvar closestPast = this._getClosestWorkTimePast(result, unit);\n\t\t\tif (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n\t\t\t\tresult = closestFuture;\n\t\t\t} else {\n\t\t\t\tresult = closestPast;\n\t\t\t}\n\t\t} else if (direction == \"past\") {\n\t\t\tresult = this._getClosestWorkTimePast(result, unit);\n\t\t} else {\n\t\t\tresult = this._getClosestWorkTimeFuture(result, unit);\n\t\t}\n\t\treturn result;\n\t},\n\n\t_getClosestWorkTimeFuture: function (date, unit) {\n\t\treturn this._getClosestWorkTimeGeneric(date, unit, 1);\n\t},\n\n\t_getClosestWorkTimePast: function (date, unit) {\n\t\tvar result = this._getClosestWorkTimeGeneric(date, unit, -1);\n\t\t// should return the end of the closest work interval\n\t\treturn this.$gantt.date.add(result, 1, unit);\n\t},\n\n\t_getClosestWorkTimeGeneric: function (date, unit, increment) {\n\t\tvar unitOrder = this._getUnitOrder(unit),\n\t\t\tbiggerTimeUnit = this.units[unitOrder - 1];\n\n\t\tvar result = date;\n\n\n\n\t\t// be extra sure we won't fall into infinite loop, 3k seems big enough\n\t\tvar maximumLoop = 3000,\n\t\t\tcount = 0;\n\n\t\twhile (!this._isWorkTime(result, unit)) {\n\t\t\tif (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n\t\t\t\t// if we look for closest work hour and detect a week-end - first find the closest work day,\n\t\t\t\t// and continue iterations after that\n\t\t\t\tresult = this._getClosestWorkTimeGeneric(result, biggerTimeUnit, increment);\n\n\t\t\t\tif (this._isWorkTime(result, unit)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcount++;\n\t\t\tif (count > maximumLoop) {\n\t\t\t\tthis.$gantt.assert(false, \"Invalid working time check\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar tzOffset = result.getTimezoneOffset();\n\t\t\tresult = this.$gantt.date.add(result, increment, unit);\n\n\t\t\tresult = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\t\t\tif (this.$gantt.date[unit + '_start']) {\n\t\t\t\tresult = this.$gantt.date[unit + '_start'](result);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../utils/utils\");\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\nvar CalendarWorktimeStrategy = require(\"./strategy/calendar_strategy\");\n\nfunction CalendarManager (gantt){\n\tthis.$gantt = gantt;\n\tthis._calendars = {};\n}\n\nCalendarManager.prototype = {\n\t_calendars: {},\n\t_getDayHoursForMultiple: function (calendars, date) {\n\t\tvar units = [],\n\t\t\ttick = true,\n\t\t\tcurrPos = 0,\n\t\t\tis_work_hour = false,\n\t\t\tstart = this.$gantt.date.day_start(new Date(date));\n\t\tfor (var hour = 0; hour < 24; hour++) {\n\t\t\tis_work_hour = calendars.reduce(function (acc, calendar) {\n\t\t\t\treturn acc && calendar._is_work_hour(start);\n\t\t\t}, true);\n\t\t\tif (is_work_hour) {\n\t\t\t\tif (tick) {\n\t\t\t\t\tunits[currPos] = hour;\n\t\t\t\t\tunits[currPos + 1] = (hour + 1);\n\t\t\t\t\tcurrPos += 2;\n\t\t\t\t} else {\n\t\t\t\t\tunits[currPos - 1] += 1;\n\t\t\t\t}\n\t\t\t\ttick = false;\n\t\t\t} else if (!tick) {\n\t\t\t\ttick = true;\n\t\t\t}\n\t\t\tstart = this.$gantt.date.add(start, 1, \"hour\");\n\t\t}\n\t\tif (!units.length)\n\t\t\tunits = false;\n\t\treturn units;\n\t},\n\tmergeCalendars: function () {\n\t\tvar newCalendar = this.createCalendar(),\n\t\t\tday,\n\t\t\tunits = [];\n\t\tvar calendars = Array.prototype.slice.call(arguments, 0);\n\t\tnewCalendar.worktime.hours = [0, 24];\n\t\tnewCalendar.worktime.dates = {};\n\t\tvar start = this.$gantt.date.day_start(new Date(259200000)); // 1970 day=0\n\t\tfor (day = 0; day < 7; day++) {\n\t\t\tunits = this._getDayHoursForMultiple(calendars, start);\n\t\t\tnewCalendar.worktime.dates[day] = units;\n\t\t\tstart = this.$gantt.date.add(start, 1, \"day\");\n\t\t}\n\t\tfor (var i = 0; i < calendars.length; i++) {\n\t\t\tfor (var value in calendars[i].worktime.dates) if (+value > 10000) {\n\t\t\t\tunits = this._getDayHoursForMultiple(calendars, new Date(+value));\n\t\t\t\tnewCalendar.worktime.dates[value] = units;\n\t\t\t}\n\t\t}\n\t\treturn newCalendar;\n\t},\n\n\t_convertWorktimeSettings: function (settings) {\n\t\tvar days = settings.days;\n\t\tif (days) {\n\t\t\tsettings.dates = settings.dates || {};\n\t\t\tfor (var i = 0; i < days.length; i++) {\n\t\t\t\tsettings.dates[i] = days[i];\n\t\t\t\tif (!(days[i] instanceof Array)) {\n\t\t\t\t\tsettings.dates[i] = !!days[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete settings.days;\n\t\t}\n\t\treturn settings;\n\t},\n\n\tcreateCalendar: function (parentCalendar) {\n\t\tvar settings;\n\n\t\tif (!parentCalendar) {\n\t\t\tparentCalendar = {};\n\t\t}\n\n\t\tif (parentCalendar.worktime) {\n\t\t\tsettings = utils.copy(parentCalendar.worktime);\n\t\t} else {\n\t\t\tsettings = utils.copy(parentCalendar);\n\t\t}\n\n\t\tvar defaults = utils.copy(this.defaults.fulltime.worktime);\n\t\tutils.mixin(settings, defaults);\n\n\t\tvar id = utils.uid();\n\t\tvar calendar = {\n\t\t\tid: id + \"\",\n\t\t\tworktime: this._convertWorktimeSettings(settings)\n\t\t};\n\n\t\tvar apiCore = new CalendarWorktimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n\t\tutils.mixin(apiCore, calendar);\n\n\t\t// validate/check if empty calendar\n\t\tif (!apiCore._tryChangeCalendarSettings(function () {\n\t\t\t})) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn apiCore;\n\t\t}\n\t},\n\n\tgetCalendar: function (id) {\n\t\tid = id || \"global\";\n\t\tthis.createDefaultCalendars();\n\t\treturn this._calendars[id];\n\t},\n\n\tgetCalendars: function () {\n\t\tvar res = [];\n\t\tfor (var i in this._calendars) {\n\t\t\tres.push(this.getCalendar(i));\n\t\t}\n\t\treturn res;\n\t},\n\n\t_getOwnCalendar: function(task){\n\t\tvar config = this.$gantt.config;\n\t\tif (task[config.calendar_property]) {\n\t\t\treturn this.getCalendar(task[config.calendar_property]);\n\t\t}\n\n\t\tif (config.resource_calendars) {\n\t\t\tfor (var field in config.resource_calendars) {\n\t\t\t\tvar resource = config.resource_calendars[field];\n\t\t\t\tif (task[field]) {\n\t\t\t\t\tvar calendarId = resource[task[field]];\n\t\t\t\t\tif (calendarId) {\n\t\t\t\t\t\treturn this.getCalendar(calendarId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetTaskCalendar: function (task) {\n\t\tif (!task) {\n\t\t\treturn this.getCalendar();\n\t\t}\n\n\t\tvar calendar = this._getOwnCalendar(task);\n\t\tvar gantt = this.$gantt;\n\t\tif (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(task.parent)){\n\t\t\tvar stop = false;\n\t\t\tgantt.eachParent(function(parent){\n\t\t\t\tif(stop) return;\n\t\t\t\tif(gantt.isSummaryTask(parent)){\n\t\t\t\t\tcalendar = this._getOwnCalendar(parent);\n\t\t\t\t\tif(calendar){\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, task.id, this);\n\t\t}\n\n\t\treturn calendar || this.getCalendar();\n\t},\n\n\taddCalendar: function (calendar) { // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n\t\tif (!(calendar instanceof CalendarWorktimeStrategy)) {\n\t\t\tvar id = calendar.id;\n\t\t\tcalendar = this.createCalendar(calendar);\n\t\t\tcalendar.id = id;\n\t\t}\n\t\tvar config = this.$gantt.config;\n\n\t\tcalendar.id = calendar.id || utils.uid();\n\t\tthis._calendars[calendar.id] = calendar;\n\t\tif (!config.worktimes)\n\t\t\tconfig.worktimes = {};\n\t\tconfig.worktimes[calendar.id] = calendar.worktime;\n\t\treturn calendar.id;\n\t},\n\n\tdeleteCalendar: function (calendar) {\n\t\tvar config = this.$gantt.config;\n\t\tif (!calendar) return false;\n\t\tif (this._calendars[calendar]) {\n\t\t\tdelete this._calendars[calendar];\n\t\t\tif (config.worktimes && config.worktimes[calendar])\n\t\t\t\tdelete config.worktimes[calendar];\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\t},\n\n\trestoreConfigCalendars: function (configs) {\n\t\tfor (var i in configs) {\n\t\t\tif (this._calendars[i])\n\t\t\t\tcontinue;\n\n\t\t\tvar settings = configs[i];\n\t\t\tvar calendar = this.createCalendar(settings);\n\t\t\tcalendar.id = i;\n\t\t\tthis.addCalendar(calendar);\n\t\t}\n\t},\n\n\tdefaults: {\n\t\tglobal: {\n\t\t\tid: \"global\",\n\t\t\tworktime: {\n\t\t\t\thours: [8, 17],\n\t\t\t\tdays: [0, 1, 1, 1, 1, 1, 0]\n\t\t\t}\n\t\t},\n\t\tfulltime: {\n\t\t\tid: \"fulltime\",\n\t\t\tworktime: {\n\t\t\t\thours: [0, 24],\n\t\t\t\tdays: [1, 1, 1, 1, 1, 1, 1]\n\t\t\t}\n\t\t}\n\t},\n\n\tcreateDefaultCalendars: function () {\n\t\tvar config = this.$gantt.config;\n\t\tthis.restoreConfigCalendars(this.defaults);\n\t\tthis.restoreConfigCalendars(config.worktimes);\n\t}\n};\n\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n\tTimeCalculator = require(\"./time_calculator\"),\n\tworktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n\tutils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n\tvar manager = new CalendarManager(gantt),\n\ttimeCalculator = new TimeCalculator(manager);\n\tvar facade = worktimeFacadeFactory.create(manager, timeCalculator);\n\tutils.mixin(gantt, facade);\n};\n","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.load = function (url, type, callback) {\n\t\tthis._load_url = url;\n\t\tthis.assert(arguments.length, \"Invalid load arguments\");\n\n\t\tvar tp = 'json', cl = null;\n\t\tif (arguments.length >= 3) {\n\t\t\ttp = type;\n\t\t\tcl = callback;\n\t\t} else {\n\t\t\tif (typeof arguments[1] == \"string\")\n\t\t\t\ttp = arguments[1];\n\t\t\telse if (typeof arguments[1] == \"function\")\n\t\t\t\tcl = arguments[1];\n\t\t}\n\n\t\tthis._load_type = tp;\n\n\t\tthis.callEvent(\"onLoadStart\", [url, tp]);\n\n\t\treturn this.ajax.get(url, gantt.bind(function (l) {\n\t\t\tthis.on_load(l, tp);\n\t\t\tthis.callEvent(\"onLoadEnd\", [url, tp]);\n\t\t\tif (typeof cl == \"function\")\n\t\t\t\tcl.call(this);\n\t\t}, this));\n\t};\n\tgantt.parse = function (data, type) {\n\t\tthis.on_load({xmlDoc: {responseText: data}}, type);\n\t};\n\n\tgantt.serialize = function (type) {\n\t\ttype = type || \"json\";\n\t\treturn this[type].serialize();\n\t};\n\n\t/*\n\ttasks and relations\n\t{\n\tdata:[\n\t\t{\n\t\t\t\"id\":\"string\",\n\t\t\t\"text\":\"...\",\n\t\t\t\"start_date\":\"Date or string\",\n\t\t\t\"end_date\":\"Date or string\",\n\t\t\t\"duration\":\"number\",\n\t\t\t\"progress\":\"0..1\",\n\t\t\t\"parent_id\":\"string\",\n\t\t\t\"order\":\"number\"\n\t\t},...],\n\tlinks:[\n\t\t{\n\t\t\tid:\"string\",\n\t\t\tsource:\"string\",\n\t\t\ttarget:\"string\",\n\t\t\ttype:\"string\"\n\t\t},...],\n\tcollections:{\n\t\t\tcollectionName:[\n\t\t\t\t{key:, label:, optional:...},...\n\t\t\t],...\n\t\t}\n\t}\n\n\t* */\n\n\tgantt.on_load = function (resp, type) {\n\t\tthis.callEvent(\"onBeforeParse\", []);\n\t\tif (!type)\n\t\t\ttype = \"json\";\n\t\tthis.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n\n\t\tvar raw = resp.xmlDoc.responseText;\n\n\t\tvar data = this[type].parse(raw, resp);\n\t\tthis._process_loading(data);\n\t};\n\n\tgantt._process_loading = function (data) {\n\t\tif(data.collections)\n\t\t\tthis._load_collections(data.collections);\n\n\t\tthis.$data.tasksStore.parse(data.data);\n\t\tvar links = data.links || (data.collections ? data.collections.links : []);\n\t\tthis.$data.linksStore.parse(links);\n\n\t\t//this._sync_links();\n\t\tthis.callEvent(\"onParse\", []);\n\t\tthis.render();\n\t\tif(this.config.initial_scroll){\n\t\t\tvar firstTask = this.getTaskByIndex(0);\n\t\t\tvar id = firstTask ? firstTask.id : this.config.root_id;\n\t\t\tif(this.isTaskExists(id))\n\t\t\t\tthis.showTask(id);\n\t\t}\n\t};\n\n\n\tgantt._load_collections = function (collections) {\n\t\tvar collections_loaded = false;\n\t\tfor (var key in collections) {\n\t\t\tif (collections.hasOwnProperty(key)) {\n\t\t\t\tcollections_loaded = true;\n\t\t\t\tvar collection = collections[key];\n\t\t\t\tvar arr = this.serverList[key];\n\t\t\t\tif (!arr) continue;\n\t\t\t\tarr.splice(0, arr.length); //clear old options\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\n\t\t\t\t\tvar option = collection[j];\n\t\t\t\t\tvar obj = this.copy(option);\n\t\t\t\t\tobj.key = obj.value;// resulting option object\n\n\t\t\t\t\tfor (var option_key in option) {\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (collections_loaded)\n\t\t\tthis.callEvent(\"onOptionsLoad\", []);\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n\t\treturn !task.$ignore;\n\t});\n\n\tgantt.json = {\n\t\tparse: function (data) {\n\t\t\tgantt.assert(data, \"Invalid data\");\n\n\t\t\tif (typeof data == \"string\") {\n\t\t\t\tif (window.JSON)\n\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\telse {\n\t\t\t\t\tgantt.assert(false, \"JSON is not supported\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (data.dhx_security)\n\t\t\t\tgantt.security_key = data.dhx_security;\n\t\t\treturn data;\n\t\t},\n\t\tserializeTask: function (task) {\n\t\t\treturn this._copyObject(task);\n\t\t},\n\t\tserializeLink: function (link) {\n\t\t\treturn this._copyLink(link);\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj)\n\t\t\t\tcopy[key] = obj[key];\n\t\t\treturn copy;\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (key.charAt(0) == \"$\")\n\t\t\t\t\tcontinue;\n\t\t\t\tcopy[key] = obj[key];\n\n\t\t\t\tif (helpers.isDate(copy[key])) {\n\t\t\t\t\tcopy[key] = gantt.templates.xml_format(copy[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn copy;\n\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tgantt.eachTask(function (obj) {\n\t\t\t\tgantt.resetProjectDates(obj);\n\t\t\t\ttasks.push(this.serializeTask(obj));\n\t\t\t}, gantt.config.root_id, this);\n\n\t\t\tvar rawLinks = gantt.getLinks();\n\t\t\tfor (var i = 0; i < rawLinks.length; i++) {\n\t\t\t\tlinks.push(this.serializeLink(rawLinks[i]));\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: tasks,\n\t\t\t\tlinks: links\n\t\t\t};\n\t\t}\n\t};\n\n\t/*\n\t\n\t\t\n\t\t\tMy task 1\n\t\t\t16.08.2013\n\t\t\t22.08.2013\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\t*/\n\n\tgantt.xml = {\n\t\t_xmlNodeToJSON: function (node, attrs_only) {\n\t\t\tvar t = {};\n\t\t\tfor (var i = 0; i < node.attributes.length; i++)\n\t\t\t\tt[node.attributes[i].name] = node.attributes[i].value;\n\n\t\t\tif (!attrs_only) {\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar child = node.childNodes[i];\n\t\t\t\t\tif (child.nodeType == 1)\n\t\t\t\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n\t\t\t\t}\n\n\t\t\t\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n\t\t\t}\n\n\t\t\treturn t;\n\t\t},\n\t\t_getCollections: function (loader) {\n\t\t\tvar collection = {};\n\t\t\tvar opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\t\t\tfor (var i = 0; i < opts.length; i++) {\n\t\t\t\tvar bind = opts[i].getAttribute(\"for\");\n\t\t\t\tvar arr = collection[bind] = [];\n\t\t\t\tvar itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\t\t\t\tfor (var j = 0; j < itms.length; j++) {\n\t\t\t\t\tvar itm = itms[j];\n\t\t\t\t\tvar attrs = itm.attributes;\n\t\t\t\t\tvar obj = {key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\n\t\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\n\t\t\t\t\t\tvar attr = attrs[k];\n\t\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn collection;\n\t\t},\n\t\t_getXML: function (text, loader, toptag) {\n\t\t\ttoptag = toptag || \"data\";\n\t\t\tif (!loader.getXMLTopNode) {\n\t\t\t\tloader = gantt.ajax.parse(loader);\n\t\t\t}\n\n\t\t\tvar xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\t\t\tif (!xml || xml.tagName != toptag) throw \"Invalid XML data\";\n\n\t\t\tvar skey = xml.getAttribute(\"dhx_security\");\n\t\t\tif (skey)\n\t\t\t\tgantt.security_key = skey;\n\n\t\t\treturn xml;\n\t\t},\n\t\tparse: function (text, loader) {\n\t\t\tloader = this._getXML(text, loader);\n\t\t\tvar data = {};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++)\n\t\t\t\tevs[i] = this._xmlNodeToJSON(xml[i]);\n\n\t\t\tdata.collections = this._getCollections(loader);\n\t\t\treturn data;\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\treturn \"\";\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\treturn \"\";\n\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tvar json = gantt.json.serialize();\n\t\t\tfor (var i = 0, len = json.data.length; i < len; i++) {\n\t\t\t\ttasks.push(this._copyObject(json.data[i]));\n\t\t\t}\n\t\t\tfor (var i = 0, len = json.links.length; i < len; i++) {\n\t\t\t\tlinks.push(this._copyLink(json.links[i]));\n\t\t\t}\n\t\t\treturn \"\" + tasks.join(\"\") + \"\" + links.join(\"\") + \"\";\n\t\t}\n\t};\n\n\n\tgantt.oldxml = {\n\t\tparse: function (text, loader) {\n\t\t\tloader = gantt.xml._getXML(text, loader, \"projects\");\n\t\t\tvar data = {collections: {links: []}};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tevs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n\t\t\t\tvar parent = xml[i].parentNode;\n\n\t\t\t\tif (parent.tagName == \"project\")\n\t\t\t\t\tevs[i].parent = \"project-\" + parent.getAttribute(\"id\");\n\t\t\t\telse\n\t\t\t\t\tevs[i].parent = parent.parentNode.getAttribute(\"id\");\n\t\t\t}\n\n\t\t\txml = gantt.ajax.xpath(\"//project\", loader);\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tvar ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\t\t\t\tev.id = \"project-\" + ev.id;\n\t\t\t\tevs.push(ev);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar ev = evs[i];\n\t\t\t\tev.start_date = ev.startdate || ev.est;\n\t\t\t\tev.end_date = ev.enddate;\n\t\t\t\tev.text = ev.name;\n\t\t\t\tev.duration = ev.duration / 8;\n\t\t\t\tev.open = 1;\n\t\t\t\tif (!ev.duration && !ev.end_date) ev.duration = 1;\n\t\t\t\tif (ev.predecessortasks)\n\t\t\t\t\tdata.collections.links.push({\n\t\t\t\t\t\ttarget: ev.id,\n\t\t\t\t\t\tsource: ev.predecessortasks,\n\t\t\t\t\t\ttype: gantt.config.links.finish_to_start\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t\tserialize: function () {\n\t\t\tgantt.message(\"Serialization to 'old XML' is not implemented\");\n\t\t}\n\t};\n\n\tgantt.serverList = function (name, array) {\n\t\tif (array) {\n\t\t\tthis.serverList[name] = array.slice(0);\n\t\t} else if (!this.serverList[name]) {\n\t\t\tthis.serverList[name] = [];\n\t\t}\n\t\treturn this.serverList[name];\n\t};\n\n};","module.exports = function(gantt) {\n\tgantt.isReadonly = function (item) {\n\t\tif (item && item[this.config.editable_property]) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn (item && item[this.config.readonly_property]) || this.config.readonly;\n\t\t}\n\t};\n};","module.exports = function(gantt){\n\t// TODO: why eslint fails on regexp?\n\t// eslint-disable-next-line no-control-regex\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\n\n\tfunction stripHTMLLite(htmlText){\n\t\treturn (htmlText + \"\")\n\t\t\t.replace(htmlTags, \" \").\n\t\t\treplace(extraSpaces, \" \");\n\t}\n\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\n\tfunction escapeQuotes(text){\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\n\t}\n\n\tgantt._waiAria = {\n\t\tgetAttributeString: function(attr){\n\t\t\tvar attributes = [\" \"];\n\t\t\tfor(var i in attr){\n\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\n\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\n\t\t\t}\n\t\t\tattributes.push(\" \");\n\t\t\treturn attributes.join(\" \");\n\n\t\t},\n\n\t\tgetTimelineCellAttr:function(dateString){\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": dateString});\n\t\t},\n\n\n\t\t_taskCommonAttr: function(task, div){\n\n\t\t\tif(!(task.start_date && task.end_date))\n\t\t\t\treturn;\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n\t\t\tif(gantt.isReadonly(task)){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\n\n\t\t\t}\n\n\t\t\tif(task.$dataprocessor_class){\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\n\t\t\t}\n\n\n\t\t\tdiv.setAttribute(\"aria-selected\",\n\t\t\t\t(gantt.getState().selected_task == task.id || (gantt.isSelectedTask && gantt.isSelectedTask(task.id))) ? \"true\" : \"false\");\n\t\t},\n\n\t\tsetTaskBarAttr: function(task, div){\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.drag_move){\n\t\t\t\tif(task.id != gantt.getState().drag_id){\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t\t}else{\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttaskRowAttr: function(task, div){\n\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.order_branch){\n\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t}\n\n\t\t\tdiv.setAttribute(\"role\", \"row\");\n\n\t\t\tdiv.setAttribute(\"aria-level\", task.$level);\n\n\t\t\tif(gantt.hasChild(task.id)){\n\t\t\t\tdiv.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n\t\t\t}\n\t\t},\n\n\t\tlinkAttr: function(link, div){\n\n\t\t\tvar linkTypes = gantt.config.links;\n\n\t\t\tvar toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n\t\t\tvar fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n\n\t\t\tvar content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(content));\n\t\t\tif(gantt.isReadonly(link)){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\t\t\t}\n\t\t},\n\n\t\tgridSeparatorAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"separator\");\n\t\t},\n\n\t\tlightboxHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t},\n\n\t\tlightboxVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\tlightboxAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\n\t\t},\n\n\t\tlightboxButtonAttrString:function(buttonName){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":gantt.locale.labels[buttonName], \"tabindex\":\"0\"});\n\t\t},\n\n\t\tlightboxHeader: function(div, headerText){\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\n\t\t},\n\n\t\tlightboxSelectAttrString: function(time_option){\n\t\t\tvar label = \"\";\n\n\t\t\tswitch (time_option) {\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tlabel = gantt.locale.labels.years;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tlabel = gantt.locale.labels.months;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tlabel = gantt.locale.labels.days;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%H:%i\":\n\t\t\t\t\tlabel = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": label});\n\t\t},\n\n\t\tlightboxDurationInputAttrString: function(section){\n\t\t\treturn this.getAttributeString({\"aria-label\": gantt.locale.labels.column_duration, \"aria-valuemin\": \"0\"});\n\t\t},\n\n\t\tgridAttrString: function(){\n\t\t\treturn [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n\t\t},\n\n\n\t\tgridScaleRowAttrString: function(){\n\t\t\treturn \"role='row'\";\n\t\t},\n\n\t\tgridScaleCellAttrString: function(column, label){\n\t\t\tvar attrs = \"\";\n\t\t\tif(column.name == \"add\"){\n\t\t\t\tattrs = this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t\t}else{\n\n\t\t\t\tvar attributes = {\n\t\t\t\t\t\"role\":\"columnheader\",\n\t\t\t\t\t\"aria-label\": label\n\t\t\t\t};\n\n\t\t\t\tif(gantt._sort && gantt._sort.name == column.name){\n\t\t\t\t\tif(gantt._sort.direction == \"asc\"){\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"ascending\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"descending\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tattrs = this.getAttributeString(attributes);\n\t\t\t}\n\t\t\treturn attrs;\n\t\t},\n\n\t\tgridDataAttrString: function(){\n\t\t\treturn \"role='rowgroup'\";\n\t\t},\n\n\t\tgridCellAttrString: function(column, textValue){\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": textValue});\n\t\t},\n\n\t\tgridAddButtonAttrString: function(column){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t},\n\n\t\tmessageButtonAttrString: function(buttonLabel){\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\n\t\t},\n\n\t\tmessageInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tmessageModalAttr: function(div, uid){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tif(uid){\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\n\t\t\t}\n\n\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tquickInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t},\n\n\t\tquickInfoHeaderAttrString: function(){\n\t\t\treturn \" role='heading' \";\n\t\t},\n\n\t\tquickInfoHeader: function(div, header){\n\t\t\tdiv.setAttribute(\"aria-label\", header);\n\t\t},\n\n\t\tquickInfoButtonAttrString: function(label){\n\t\t\treturn gantt._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\n\t\t},\n\n\t\ttooltipAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\n\t\t},\n\n\t\ttooltipVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\ttooltipHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t}\n\t};\n\n\tfunction isDisabled(){\n\t\treturn !gantt.config.wai_aria_attributes;\n\t}\n\n\tfor(var i in gantt._waiAria){\n\t\tgantt._waiAria[i] = (function(payload){\n\t\t\treturn function(){\n\t\t\t\tif(isDisabled()){\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t\treturn payload.apply(this, arguments);\n\t\t\t};\n\t\t})(gantt._waiAria[i]);\n\t}\n\n\n};","module.exports = function(gantt) {\n\tgantt.getGridColumn = function(name) {\n\t\tvar columns = gantt.config.columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name)\n\t\t\t\treturn columns[i];\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tgantt.getGridColumns = function() {\n\t\treturn gantt.config.columns.slice();\n\t};\n};","module.exports = function(gantt) {\n};","module.exports = function(gantt) {\n\tfunction isEnabled() {\n\t\treturn gantt.config.auto_types && // if enabled\n\t\t\t(gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project);// and supported\n\t}\n\n\tfunction callIfEnabled(callback) {\n\t\treturn function() {\n\t\t\tif (!isEnabled()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction updateParents(childId) {\n\t\tgantt.batchUpdate(function() {\n\t\t\tcheckParent(childId);\n\t\t});\n\t}\n\n\tvar delTaskParent;\n\n\tfunction checkParent(id) {\n\t\tsetTaskType(id);\n\t\tvar parent = gantt.getParent(id);\n\n\t\tif (parent != gantt.config.root_id) {\n\t\t\tcheckParent(parent);\n\t\t}\n\t}\n\n\tfunction setTaskType(id) {\n\t\tid = id.id || id;\n\t\tvar task = gantt.getTask(id);\n\t\tvar targetType = getTaskTypeToUpdate(task);\n\n\t\tif (targetType !== false) {\n\t\t\tupdateTaskType(task, targetType);\n\t\t}\n\t}\n\n\tfunction updateTaskType(task, targetType) {\n\t\ttask.type = targetType;\n\t\tgantt.updateTask(task.id);\n\t}\n\n\tfunction getTaskTypeToUpdate(task) {\n\t\tvar allTypes = gantt.config.types;\n\t\tvar hasChildren = gantt.hasChild(task.id);\n\t\tvar taskType = gantt.getTaskType(task.type);\n\n\t\tif (hasChildren && taskType === allTypes.task) {\n\t\t\treturn allTypes.project;\n\t\t}\n\n\t\tif (!hasChildren && taskType === allTypes.project) {\n\t\t\treturn allTypes.task;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tvar isParsingDone = true;\n\n\tgantt.attachEvent(\"onParse\", callIfEnabled(function() {\n\t\tisParsingDone = false;\n\n\t\tgantt.batchUpdate(function() {\n\t\t\tgantt.eachTask(function(task) {\n\t\t\t\tvar targetType = getTaskTypeToUpdate(task);\n\t\t\t\tif (targetType !== false) {\n\t\t\t\t\tupdateTaskType(task, targetType);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tisParsingDone = true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id) {\n\t\tif (isParsingDone) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function(id) {\n\t\tif (isParsingDone) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}));\n\n\tfunction updateAfterRemoveChild(id){\n\t\tif (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}\n\n\tgantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function(id, task) {\n\t\tdelTaskParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function(id, task) {\n\t\tupdateAfterRemoveChild(delTaskParent);\n\t}));\n\n\n\tvar originalRowDndParent;\n\n\tgantt.attachEvent(\"onRowDragStart\", callIfEnabled(function(id, target, e) {\n\t\toriginalRowDndParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function(id, target) {\n\t\tupdateAfterRemoveChild(originalRowDndParent);\n\t\tupdateParents(id);\n\t}));\n\n\tvar originalMoveTaskParent;\n\n\tgantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function(sid, parent, tindex) {\n\t\toriginalMoveTaskParent = gantt.getParent(sid);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function(id, parent, tindex) {\n\t\tif (document.querySelector(\".gantt_drag_marker\")) {\n\t\t\t// vertical dnd in progress\n\t\t\treturn;\n\t\t}\n\t\tupdateAfterRemoveChild(originalMoveTaskParent);\n\t\tupdateParents(id);\n\t}));\n};","module.exports = function addPlaceholder(gantt){\n\tfunction isEnabled(){\n\t\treturn gantt.config.placeholder_task;\n\t}\n\n\tfunction callIfEnabled(callback){\n\t\treturn function(){\n\t\t\tif(!isEnabled()){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction silenceDataProcessor(dataProcessor){\n\t\tif(dataProcessor && !dataProcessor._silencedPlaceholder){\n\t\t\tdataProcessor._silencedPlaceholder = true;\n\t\t\tdataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function(id, state, data){\n\t\t\t\tif(data.type == gantt.config.types.placeholder){\n\t\t\t\t\tdataProcessor.setUpdated(id, false);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}));\n\t\t}\n\t}\n\n\tfunction insertPlaceholder(){\n\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\t\tif(!placeholders.length || !gantt.isTaskExists(placeholders[0].id)){\n\t\t\tvar placeholder = {\n\t\t\t\tunscheduled: true,\n\t\t\t\ttype: gantt.config.types.placeholder,\n\t\t\t\tduration:0,\n\t\t\t\ttext: gantt.locale.labels.new_task\n\t\t\t};\n\t\t\tif(gantt.callEvent(\"onTaskCreated\", [placeholder]) === false){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgantt.addTask(placeholder);\n\t\t\t\n\t\t}\n\t}\n\n\tfunction afterEdit(id){\n\t\tvar item = gantt.getTask(id);\n\t\tif(item.type == gantt.config.types.placeholder) {\n\t\t\tif(item.start_date && item.end_date && item.unscheduled){\n\t\t\t\titem.unscheduled = false;\n\t\t\t}\n\n\t\t\tgantt.batchUpdate(function(){\n\t\t\t\tvar newTask = gantt.copy(item);\n\t\t\t\tgantt.silent(function(){\n\t\t\t\t\tgantt.deleteTask(item.id);\n\t\t\t\t});\n\n\t\t\t\tdelete newTask[\"!nativeeditor_status\"];\n\t\t\t\tnewTask.type = gantt.config.types.task;\n\t\t\t\tnewTask.id = gantt.uid();\n\t\t\t\tgantt.addTask(newTask);\n\n\t\t\t\t//insertPlaceholder();\n\t\t\t});\n\n\t\t}\n\t}\n\n\tgantt.config.types.placeholder = \"placeholder\";\n\tgantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n\n\tvar ready = false;\n\tgantt.attachEvent(\"onGanttReady\", function(){\n\t\tif(ready){\n\t\t\treturn;\n\t\t}\n\t\tready = true;\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id, task){\n\t\t\tif(task.type != gantt.config.types.placeholder){\n\t\t\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\t\t\t\tplaceholders.forEach(function(p){\n\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\tif(gantt.isTaskExists(p.id))\n\t\t\t\t\t\t\tgantt.deleteTask(p.id);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tinsertPlaceholder();\n\t\t\t}\n\t\t}));\n\t\tgantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n\t});\n\n\tgantt.attachEvent(\"onBeforeUndoStack\", function(action){\n\t\tfor(var i = 0; i < action.commands.length; i++){\n\t\t\tvar command = action.commands[i];\n\t\t\tif(command.entity === \"task\" && command.value.type === gantt.config.types.placeholder){\n\t\t\t\taction.commands.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt){\n\n\tvar resourceTaskCache = {};\n\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\n\t\tresourceTaskCache = {};\n\t});\n\n\tfunction getTaskBy(propertyName, propertyValue) {\n\t\tif (typeof propertyName == \"function\") {\n\t\t\treturn filterResourceTasks(propertyName);\n\t\t} else {\n\t\t\tif (helpers.isArray(propertyValue)) {\n\t\t\t\treturn getResourceTasks(propertyName, propertyValue);\n\t\t\t} else {\n\t\t\t\treturn getResourceTasks(propertyName, [propertyValue]);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction filterResourceTasks(filter) {\n\t\tvar res = [];\n\t\tgantt.eachTask(function (task) {\n\t\t\tif (filter(task)) {\n\t\t\t\tres.push(task);\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t}\n\n\tfunction getResourceTasks(property, resourceIds) {\n\t\tvar res;\n\n\t\tvar cacheKey = resourceIds.join(\"_\") + \"_\" + property;\n\n\t\tvar resourceHash = {};\n\t\tfor (var i = 0; i < resourceIds.length; i++) {\n\t\t\tresourceHash[resourceIds[i]] = true;\n\t\t}\n\n\t\tif (!resourceTaskCache[cacheKey]) {\n\t\t\tres = resourceTaskCache[cacheKey] = [];\n\t\t\tgantt.eachTask(function (task) {\n\t\t\t\tif (task.type == gantt.config.types.project)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar resourceValue;\n\t\t\t\tif (!helpers.isArray(task[property])) {\n\t\t\t\t\tresourceValue = [task[property]];\n\t\t\t\t} else {\n\t\t\t\t\tresourceValue = task[property];\n\t\t\t\t}\n\n\t\t\t\thelpers.forEach(resourceValue, function(value) {\n\t\t\t\t\tif(value && (resourceHash[value] || resourceHash[value.resource_id])) {\n\t\t\t\t\t\tres.push(task);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tfunction getResourceLoad(resource, resourceProperty, scale, timeline){\n\t\tvar cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n\t\tvar res;\n\t\tif (!resourceTaskCache[cacheKey]) {\n\t\t\tres = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\n\n\t\t} else {\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction calculateResourceLoad(resource, resourceProperty, scale, timeline) {\n\n\t\tvar tasks;\n\t\tif(resource.$role == \"task\"){\n\t\t\ttasks = [];\n\t\t}else{\n\t\t\ttasks = getTaskBy(resourceProperty, resource.id);\n\t\t}\n\t\tvar step = scale.unit;\n\t\tvar timegrid = {};\n\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar task = tasks[i];\n\n\t\t\tvar currDate = gantt.date[step + \"_start\"](new Date(task.start_date));\n\n\t\t\twhile (currDate < task.end_date) {\n\n\t\t\t\tvar date = currDate;\n\t\t\t\tcurrDate = gantt.date.add(currDate, 1, step);\n\n\t\t\t\tif (!gantt.isWorkTime({date: date, task: task, unit: step})) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar timestamp = date.valueOf();\n\t\t\t\tif (!timegrid[timestamp]){\n\t\t\t\t\ttimegrid[timestamp] = [];\n\t\t\t\t}\n\n\t\t\t\ttimegrid[timestamp].push(task);\n\t\t\t}\n\t\t}\n\n\t\tvar timetable = [];\n\t\tvar start, end, tasks;\n\t\tvar config = timeline.$getConfig();\n\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\tstart = new Date(scale.trace_x[i]);\n\t\t\tend = gantt.date.add(start, 1, step);\n\t\t\ttasks = timegrid[start.valueOf()] || [];\n\t\t\tif(tasks.length || config.resource_render_empty_cells){\n\t\t\t\ttimetable.push({\n\t\t\t\t\tstart_date: start,\n\t\t\t\t\tend_date: end,\n\t\t\t\t\ttasks: tasks\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\n\t\treturn timetable;\n\t}\n\n\tfunction renderResourceLine(resource, timeline) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n\n\t\tvar cells = [];\n\t\tfor (var i = 0; i < timetable.length; i++) {\n\n\t\t\tvar day = timetable[i];\n\n\t\t\tvar css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks);\n\n\t\t\tif (css || content){\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\t\t\t\tvar el = document.createElement('div');\n\t\t\t\tel.className = [\"gantt_resource_marker\", css].join(\" \");\n\n\t\t\t\tel.style.cssText = [\n\t\t\t\t\t'left:' + sizes.left + 'px',\n\t\t\t\t\t'width:' + sizes.width + 'px',\n\t\t\t\t\t'height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'top:' + sizes.top + 'px'\n\t\t\t\t].join(\";\");\n\n\t\t\t\tif(content)\n\t\t\t\t\tel.innerHTML = content;\n\n\t\t\t\tcells.push(el);\n\t\t\t}\n\n\t\t}\n\n\t\tvar row = null;\n\t\tif(cells.length){\n\t\t\trow = document.createElement(\"div\");\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\trow.appendChild(cells[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn row;\n\t}\n\n\n\tfunction renderBar(level, start, end, timeline){\n\t\tvar top = (1 - (level*1||0))*100;\n\t\tvar left = timeline.posFromDate(start);\n\t\tvar right = timeline.posFromDate(end);\n\t\tvar element = document.createElement(\"div\");\n\t\telement.className = \"gantt_histogram_hor_bar\";\n\t\telement.style.top = top + '%';\n\t\telement.style.left = left + \"px\";\n\t\telement.style.width = (right - left + 1) + \"px\";\n\t\treturn element;\n\t}\n\tfunction renderConnection(prevLevel, nextLevel, left){\n\t\tif(prevLevel === nextLevel){\n\t\t\treturn null;\n\t\t}\n\n\t\tvar top = 1 - Math.max(prevLevel, nextLevel);\n\t\tvar height = Math.abs(prevLevel - nextLevel);\n\t\tvar element = document.createElement(\"div\");\n\t\telement.className = \"gantt_histogram_vert_bar\";\n\t\telement.style.top = top*100 + \"%\";\n\t\telement.style.height = height*100 + \"%\";\n\t\telement.style.left = left + \"px\";\n\n\t\treturn element;\n\t}\n\n\tfunction renderHistogramLine(capacity, timeline, maxCapacity){\n\t\tvar scale = timeline.getScale();\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\tvar colStart = scale.trace_x[i];\n\t\t\tvar colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n\t\t\tvar col = scale.trace_x[i].valueOf();\n\t\t\tvar level = Math.min(capacity[col]/maxCapacity, 1) || 0;\n\t\t\tif(level < 0){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar nextLevel = Math.min(capacity[colEnd.valueOf()]/maxCapacity, 1) || 0;\n\n\n\t\t\tvar bar = renderBar(level, colStart, colEnd, timeline);\n\t\t\tif(bar){\n\t\t\t\tel.appendChild(bar);\n\t\t\t}\n\t\t\tvar connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\t\t\tif(connection){\n\t\t\t\tel.appendChild(connection);\n\t\t\t}\n\n\t\t}\n\n\n\t\treturn el;\n\t}\n\n\tfunction renderResourceHistogram(resource, timeline) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n\n\t\tvar cells = [];\n\t\tvar capacityMatrix = {};\n\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n\t\tfor (var i = 0; i < timetable.length; i++) {\n\n\t\t\tvar day = timetable[i];\n\n\t\t\tvar css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\n\t\t\tif(css || content){\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\t\t\t\tvar el = document.createElement('div');\n\t\t\t\tel.className = [\"gantt_histogram_cell\", css].join(\" \");\n\n\t\t\t\tel.style.cssText = [\n\t\t\t\t\t'left:' + sizes.left + 'px',\n\t\t\t\t\t'width:' + sizes.width + 'px',\n\t\t\t\t\t'height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'top:' + (sizes.top + 1) + 'px'\n\t\t\t\t].join(\";\");\n\n\n\t\t\t\tif (content) {\n\t\t\t\t\tcontent = \"
\" + content +\"
\";\n\t\t\t\t}\n\n\t\t\t\tif (fill) {\n\n\t\t\t\t\tcontent = \"
\" + content;\n\t\t\t\t}\n\n\t\t\t\tif (content)\n\t\t\t\t\tel.innerHTML = content;\n\n\t\t\t\tcells.push(el);\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar row = null;\n\t\tif (cells.length) {\n\t\t\trow = document.createElement(\"div\");\n\t\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\t\trow.appendChild(cells[i]);\n\t\t\t}\n\n\t\t\tvar capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity);\n\n\t\t\tif (capacityElement) {\n\t\t\t\tcapacityElement.setAttribute(\"data-resource-id\", resource.id);\n\t\t\t\tcapacityElement.style.position = \"absolute\";\n\t\t\t\tcapacityElement.style.top = (sizes.top + 1) + \"px\";\n\t\t\t\tcapacityElement.style.height = (config.row_height - 1) + \"px\";\n\t\t\t\tcapacityElement.style.left = 0;\n\t\t\t\trow.appendChild(capacityElement);\n\t\t\t}\n\t\t}\n\n\t\treturn row;\n\t}\n\n\tfunction selectAssignments(resourceId, taskId, result){\n\t\tvar property = gantt.config.resource_property;\n\t\tvar owners = [];\n\t\tif (gantt.getDatastore(\"task\").exists(taskId)) {\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\towners = task[property] || [];\n\t\t}\n\n\t\tif (!Array.isArray(owners)) {\n\t\t\towners = [owners];\n\t\t}\n\t\tfor (var i = 0; i < owners.length; i++) {\n\t\t\tif (owners[i].resource_id == resourceId) {\n\t\t\t\tresult.push({task_id: task.id, resource_id:owners[i].resource_id, value:owners[i].value});\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getResourceAssignments(resourceId, taskId){\n\t\t// resource assignment as an independent module:\n\t\t// {taskId:, resourceId, value}\n\t\t// TODO: probably should add a separate datastore for these\n\t\tvar assignments = [];\n\t\tvar property = gantt.config.resource_property;\n\t\tif(taskId !== undefined){\n\t\t\tselectAssignments(resourceId, taskId, assignments);\n\t\t}else{\n\t\t\tvar tasks = gantt.getTaskBy(property, resourceId);\n\t\t\ttasks.forEach(function(task){\n\t\t\t\tselectAssignments(resourceId, task.id, assignments);\n\t\t\t});\n\t\t}\n\t\treturn assignments;\n\t}\n\n\treturn {\n\t\trenderLine: renderResourceLine,\n\t\trenderHistogram: renderResourceHistogram,\n\t\tfilterTasks: getTaskBy,\n\t\tgetResourceAssignments: getResourceAssignments\n\t};\n}\n\nmodule.exports = function(gantt){\n\tvar methods = createResourceMethods(gantt);\n\n\tgantt.getTaskBy = methods.filterTasks;\n\tgantt.getResourceAssignments = methods.getResourceAssignments;\n\tgantt.$ui.layers.resourceRow = methods.renderLine;\n\tgantt.$ui.layers.resourceHistogram = methods.renderHistogram;\n\tgantt.config.resource_property = \"owner_id\";\n\tgantt.config.resource_store = \"resource\";\n\tgantt.config.resource_render_empty_cells = false;\n\n\t/**\n\t * these are placeholder functions that should be redefined by the user\n\t*/\n\tgantt.templates.histogram_cell_class = function(start_date, end_date, resource, tasks) {};\n\tgantt.templates.histogram_cell_label = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length + \"/3\";\n\t};\n\tgantt.templates.histogram_cell_allocated = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length / 3;\n\t};\n\tgantt.templates.histogram_cell_capacity = function(start_date, end_date, resource, tasks) {\n\t\treturn 0;\n\t};\n\n\n\n\tgantt.templates.resource_cell_class = function(start, end, resource, tasks) {\n\t\tvar css = \"\";\n\t\tif (tasks.length <= 1) {\n\t\t\tcss = \"gantt_resource_marker_ok\";\n\t\t} else {\n\t\t\tcss = \"gantt_resource_marker_overtime\";\n\t\t}\n\t\treturn css;\n\t};\n\n\tgantt.templates.resource_cell_value = function(start, end, resource, tasks) {\n\t\treturn tasks.length * 8;\n\t};\n};\n\n\n","if (window.dhtmlx){\n\n\tif (!window.dhtmlx.attaches)\n\twindow.dhtmlx.attaches = {};\n\n\twindow.dhtmlx.attaches.attachGantt=function(start, end, gantt){\n\t\tvar obj = document.createElement(\"DIV\");\n\n\t\tgantt = gantt || window.gantt;\n\n\t\tobj.id = \"gantt_\"+ gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tvar that = this.vs[this.av];\n\t\tthat.grid = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\n\t\tthat.gridId = obj.id;\n\t\tthat.gridObj = obj;\n\n\t\tvar method_name=\"_viewRestore\";\n\t\treturn this.vs[this[method_name]()].grid;\n\t};\n\n}\nif (typeof(window.dhtmlXCellObject) != \"undefined\") {\n\n\twindow.dhtmlXCellObject.prototype.attachGantt=function(start, end, gantt){\n\t\tgantt = gantt || window.gantt;\n\n\t\tvar obj = document.createElement(\"DIV\");\n\t\tobj.id = \"gantt_\"+gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\n\t\tobj = null;\n\t\tthis.callEvent(\"_onContentAttach\",[]);\n\n\t\treturn this.dataObj;\n\t};\n}\n\nmodule.exports = null;","if (window.jQuery){\n\n\t(function( $ ){\n\n\t\tvar methods = [];\n\t\t$.fn.dhx_gantt = function(config){\n\t\t\tconfig = config || {};\n\t\t\tif (typeof(config) === 'string') {\n\t\t\t\tif (methods[config] ) {\n\t\t\t\t\treturn methods[config].apply(this, []);\n\t\t\t\t}else {\n\t\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar views = [];\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tif (this && this.getAttribute){\n\t\t\t\t\t\tif (!this.gantt && !(window.gantt.$root == this)){\n\n\t\t\t\t\t\t\tvar newgantt = (window.gantt.$container && window.Gantt) ? window.Gantt.getGanttInstance():window.gantt;\n\t\t\t\t\t\t\tfor (var key in config)\n\t\t\t\t\t\t\t\tif (key!=\"data\")\n\t\t\t\t\t\t\t\t\tnewgantt.config[key] = config[key];\n\n\t\t\t\t\t\t\tnewgantt.init(this);\n\t\t\t\t\t\t\tif (config.data)\n\t\t\t\t\t\t\t\tnewgantt.parse(config.data);\n\n\t\t\t\t\t\t\tviews.push(newgantt);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tviews.push(typeof this.gantt == \"object\" ? this.gantt : window.gantt);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\n\t\t\t\tif (views.length === 1) return views[0];\n\t\t\t\treturn views;\n\t\t\t}\n\t\t};\n\n\t})(window.jQuery);\n\n}\n\n\nmodule.exports = null;","var createWbs = (function(gantt){\n\treturn {\n\t_needRecalc: true,\n\treset: function(){\n\t\tthis._needRecalc = true;\n\t},\n\t_isRecalcNeeded: function(){\n\t\treturn (!this._isGroupSort() && this._needRecalc);\n\t},\n\t_isGroupSort: function() {\n\t\treturn !!(gantt._groups && gantt._groups.is_active());\n\t},\n\t_getWBSCode: function(task) {\n\t\tif(!task) return \"\";\n\n\t\tif(this._isRecalcNeeded()){\n\t\t\tthis._calcWBS();\n\t\t}\n\n\t\tif(task.$virtual) return \"\";\n\t\tif(this._isGroupSort()) return task.$wbs || \"\";\n\n\t\tif(!task.$wbs) {\n\t\t\tthis.reset();\n\t\t\tthis._calcWBS();\n\t\t}\n\t\treturn task.$wbs;\n\t},\n\t_setWBSCode: function(task, value) {\n\t\ttask.$wbs = value;\n\t},\n\tgetWBSCode: function(task) {\n\t\treturn this._getWBSCode(task);\n\t},\n\tgetByWBSCode: function(code){\n\t\tvar parts = code.split(\".\");\n\t\tvar currentNode = gantt.config.root_id;\n\t\tfor(var i = 0; i < parts.length; i++){\n\t\t\tvar children = gantt.getChildren(currentNode);\n\t\t\tvar index = parts[i]*1 - 1;\n\t\t\tif(gantt.isTaskExists(children[index])){\n\t\t\t\tcurrentNode = children[index];\n\t\t\t}else{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(currentNode)){\n\t\t\treturn gantt.getTask(currentNode);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\t_calcWBS: function() {\n\t\tif(!this._isRecalcNeeded()) return;\n\n\t\tvar _isFirst = true;\n\t\tgantt.eachTask(function(ch) {\n\t\t\tif(_isFirst) {\n\t\t\t\t_isFirst = false;\n\t\t\t\tthis._setWBSCode(ch, \"1\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar _prevSibling = gantt.getPrevSibling(ch.id);\n\t\t\tif (_prevSibling !== null) {\n\t\t\t\tvar _wbs = gantt.getTask(_prevSibling).$wbs;\n\t\t\t\tif(_wbs) {\n\t\t\t\t\t_wbs = _wbs.split(\".\");\n\t\t\t\t\t_wbs[_wbs.length-1]++;\n\t\t\t\t\tthis._setWBSCode(ch, _wbs.join(\".\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar _parent = gantt.getParent(ch.id);\n\t\t\t\tthis._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n\t\t\t}\n\t\t}, gantt.config.root_id, this);\n\n\t\tthis._needRecalc = false;\n\t}\n};\n});\n\nmodule.exports = function(gantt){\n\tvar wbs = createWbs(gantt);\n\tgantt.getWBSCode = function getWBSCode(task) {\n\t\treturn wbs.getWBSCode(task);\n\t};\n\n\tgantt.getTaskByWBSCode = function(code) {\n\t\treturn wbs.getByWBSCode(code);\n\t};\n\n\tfunction resetCache(){\n\t\twbs.reset();\n\t\treturn true;\n\t}\n\n\tgantt.attachEvent(\"onAfterTaskMove\", resetCache);\n\tgantt.attachEvent(\"onBeforeParse\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n\tgantt.attachEvent(\"onAfterSort\", resetCache);\n\n};\n","function createMethod(gantt){\n\tvar methods = {};\n\tvar isActive = false;\n\tfunction disableMethod(methodName, dummyMethod){\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\n\n\t\tif(!methods[methodName]){\n\t\t\tmethods[methodName] = this[methodName];\n\t\t\tthis[methodName] = dummyMethod;\n\t\t}\n\t}\n\tfunction restoreMethod(methodName){\n\t\tif(methods[methodName]){\n\t\t\tthis[methodName] = methods[methodName];\n\t\t\tmethods[methodName] = null;\n\t\t}\n\t}\n\tfunction disableMethods(methodsHash){\n\t\tfor(var i in methodsHash){\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\n\t\t}\n\t}\n\tfunction restoreMethods(){\n\t\tfor(var i in methods){\n\t\t\trestoreMethod.call(this, i);\n\t\t}\n\t}\n\n\tfunction batchUpdatePayload(callback){\n\t\ttry{\n\t\t\tcallback();\n\t\t}catch(e){\n\t\t\twindow.console.error(e);\n\t\t}\n\t}\n\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"batchUpdate\", function(){\n\t\treturn {\n\t\t\tbatch_update: isActive\n\t\t};\n\t}, true);\n\n\treturn function batchUpdate(callback, noRedraw) {\n\t\tif(isActive){\n\t\t\t// batch mode is already active\n\t\t\tbatchUpdatePayload(callback);\n\t\t\treturn;\n\t\t}\n\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\n\t\tvar dp_mode;\n\t\tif (call_dp){\n\t\t\tdp_mode = this._dp.updateMode;\n\t\t\tthis._dp.setUpdateMode(\"off\");\n\t\t}\n\n\t\t// temporary disable some methods while updating multiple tasks\n\t\tvar resetProjects = {};\n\t\tvar methods = {\n\t\t\t\"render\":true,\n\t\t\t\"refreshData\":true,\n\t\t\t\"refreshTask\":true,\n\t\t\t\"refreshLink\":true,\n\t\t\t\"resetProjectDates\":function(task){\n\t\t\t\tresetProjects[task.id] = task;\n\t\t\t}\n\t\t};\n\n\t\tdisableMethods.call(this, methods);\n\n\t\tisActive = true;\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\n\n\t\tbatchUpdatePayload(callback);\n\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\n\n\t\trestoreMethods.call(this);\n\n\t\t// do required updates after changes applied\n\t\tfor(var i in resetProjects){\n\t\t\tthis.resetProjectDates(resetProjects[i]);\n\t\t}\n\n\t\tisActive = false;\n\n\t\tif(!noRedraw){\n\t\t\tthis.render();\n\t\t}\n\n\t\tif (call_dp) {\n\t\t\tthis._dp.setUpdateMode(dp_mode);\n\t\t\tthis._dp.setGanttMode(\"task\");\n\t\t\tthis._dp.sendData();\n\t\t\tthis._dp.setGanttMode(\"link\");\n\t\t\tthis._dp.sendData();\n\t\t}\n\t};\n\n\n\n}\n\nmodule.exports = function(gantt){\n\tgantt.batchUpdate = createMethod(gantt);\n};","var domHelpers = require(\"../../utils/dom_helpers\");\n\nmodule.exports = function(gantt){\n\n\tvar scrollRange = 50,\n\t\tscrollStep = 30,\n\t\tscrollDelay = 10,\n\t\tscrollSpeed = 50;\n\n\tvar interval = null,\n\t\tisMove = false,\n\t\tdelayTimeout = null,\n\t\tstartPos = {\n\t\t\tstarted: false\n\t\t},\n\t\teventPos = {};\n\n\tfunction getAutoscrollContainer(){\n\t\treturn gantt.$task || gantt.$grid || gantt.$root;\n\t}\n\n\tfunction isScrollState() {\n\t\tvar dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n\t\tvar isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\");\n\t\tvar isLink = !!document.querySelector(\".gantt_link_direction\");\n\t\tisMove = dragMarker && !isResize && !isLink;\n\t\treturn !((!gantt.getState().drag_mode && !dragMarker) || isResize);\n\t}\n\n\tfunction defineDelayTimeout(state) {\n\t\tif (delayTimeout) {\n\t\t\tclearTimeout(delayTimeout);\n\t\t\tdelayTimeout = null;\n\t\t}\n\t\tif (state) {\n\t\t\tvar speed = gantt.config.autoscroll_speed;\n\t\t\tif (speed && speed < 10) // limit speed value to 10 \n\t\t\t\tspeed = 10;\n\n\t\t\tdelayTimeout = setTimeout(function() {\n\t\t\t\tinterval = setInterval(tick, speed || scrollSpeed);\n\t\t\t}, gantt.config.autoscroll_delay || scrollDelay);\n\t\t}\n\t}\n\n\tfunction defineScrollInterval(state) {\n\t\tif (state) {\n\t\t\tdefineDelayTimeout(true);\n\t\t\tif (!startPos.started) {\n\t\t\t\tstartPos.x = eventPos.x;\n\t\t\t\tstartPos.y = eventPos.y;\n\t\t\t\tstartPos.started = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (interval) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\tinterval = null;\n\t\t\t}\n\t\t\tdefineDelayTimeout(false);\n\t\t\tstartPos.started = false;\n\t\t}\n\t}\n\n\tfunction autoscrollInterval(event) {\n\n\t\tvar isScroll = isScrollState();\n\n\t\tif ((interval || delayTimeout) && !isScroll) { \n\t\t\tdefineScrollInterval(false);\n\t\t}\n\n\t\tif (!gantt.config.autoscroll || !isScroll) {\n\t\t\treturn false;\n\t\t}\n\n\t\teventPos = {\n\t\t\tx: event.clientX,\n\t\t\ty: event.clientY\n\t\t};\n\n\t\tif (!interval && isScroll) {\n\t\t\tdefineScrollInterval(true);\n\t\t}\n\t}\n\n\tfunction tick() {\n\n\t\tif (!isScrollState()) {\n\t\t\tdefineScrollInterval(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tvar box = domHelpers.getNodePosition(getAutoscrollContainer());\n\t\tvar posX = eventPos.x - box.x; \n\t\tvar posY = eventPos.y - box.y;\n\n\t\tvar scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n\t\tvar scrollTop = need_scroll(posY, box.height, startPos.y - box.y);\n\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar currentScrollTop = scrollState.y,\n\t\t\tscrollOuterHeight = scrollState.inner_height,\n\t\t\tscrollInnerHeight = scrollState.height,\n\t\t\tcurrentScrollLeft = scrollState.x,\n\t\t\tscrollOuterWidth = scrollState.inner_width,\n\t\t\tscrollInnerWidth = scrollState.width;\n\n\t\t// do scrolling only if we have scrollable area to do so\n\t\tif (scrollTop && !scrollOuterHeight) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop < 0 && !currentScrollTop) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n\t\t\tscrollTop = 0;\n\t\t}\n\n\t\tif (scrollLeft && !scrollOuterWidth) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft < 0 && !currentScrollLeft) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n\t\t\tscrollLeft = 0;\n\t\t}\n\n\t\tvar step = gantt.config.autoscroll_step;\n\n\t\tif (step && step < 2) // limit step value to 2\n\t\t\tstep = 2;\n\n\t\tscrollLeft = scrollLeft * (step || scrollStep);\n\t\tscrollTop = scrollTop * (step || scrollStep);\n\n\t\tif (scrollLeft || scrollTop) {\n\t\t\tscroll(scrollLeft, scrollTop);\n\t\t} \n\n\t}\n\n\tfunction need_scroll(pos, boxSize, startCoord) {\n\t\tif ((pos - scrollRange < 0) && (pos < startCoord))\n\t\t\treturn -1;\n\t\telse if ((pos > boxSize - scrollRange) && (pos > startCoord))\n\t\t\treturn 1;\n\t\treturn 0;\n\t}\n\n\tfunction scroll(left, top) {\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar scrollLeft = null,\n\t\t\tscrollTop = null;\n\n\t\tif (left) {\n\t\t\tscrollLeft = scrollState.x + left;\n\t\t\tscrollLeft = Math.min(scrollState.width, scrollLeft);\n\t\t\tscrollLeft = Math.max(0, scrollLeft);\n\t\t}\n\n\t\tif (top) {\n\t\t\tscrollTop = scrollState.y + top;\n\t\t\tscrollTop = Math.min(scrollState.height, scrollTop);\n\t\t\tscrollTop = Math.max(0, scrollTop);\n\t\t}\n\n\t\tgantt.scrollTo(scrollLeft, scrollTop);\n\t}\n\n\tgantt.attachEvent(\"onGanttReady\", function() {\n\t\tgantt.eventRemove(document.body, \"mousemove\", autoscrollInterval);\n\t\tgantt.event(document.body, \"mousemove\", autoscrollInterval);\n\t});\n\n};","module.exports = function(gantt){\n\tvar modules = [\n\t\trequire(\"./autoscroll\"),\n\t\trequire(\"./batch_update\"),\n\t\trequire(\"./wbs\"),\n\t\trequire(\"./jquery_hooks\"),\n\t\trequire(\"./dhtmlx_hooks\"),\n\t\trequire(\"./resources\"),\n\t\trequire(\"./new_task_placeholder\"),\n\t\trequire(\"./auto_task_types\")\n\t];\n\n\tfor(var i = 0; i < modules.length; i++){\n\t\tif(modules[i])\n\t\t\tmodules[i](gantt);\n\t}\n};","\nexport default function extendGantt(gantt: any, dp: any) {\n\tgantt.getUserData = function(id, name) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tif (this.userdata[id] && this.userdata[id][name]) {\n\t\t\treturn this.userdata[id][name];\n\t\t}\n\t\treturn \"\";\n\t};\n\tgantt.setUserData = function(id, name, value) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tif (!this.userdata[id]) {\n\t\t\tthis.userdata[id] = {};\n\t\t}\n\t\tthis.userdata[id][name] = value;\n\t};\n\n\tgantt._change_id = function(oldId, newId) {\n\t\tif (this._dp._ganttMode !== \"task\") {\n\t\t\tthis.changeLinkId(oldId, newId);\n\t\t} else {\n\t\t\tthis.changeTaskId(oldId, newId);\n\t\t}\n\t};\n\n\tgantt._row_style = function(rowId, classname){\n\t\tif (this._dp._ganttMode !== \"task\") {\n\t\t\treturn;\n\t\t}\n\t\tif (!gantt.isTaskExists(rowId)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst task = gantt.getTask(rowId);\n\t\ttask.$dataprocessor_class = classname;\n\t\tgantt.refreshTask(rowId);\n\t};\n\n\t// fake method for dataprocessor\n\tgantt._delete_task = function(rowId, node) {}; // tslint:disable-line\n\n\tgantt._sendTaskOrder = function(id, item){\n\t\tif (item.$drop_target) {\n\t\t\tthis._dp.setGanttMode(\"task\");\n\t\t\tthis.getTask(id).target = item.$drop_target;\n\t\t\tthis._dp.setUpdated(id, true,\"order\");\n\t\t\tdelete this.getTask(id).$drop_target;\n\t\t}\n\t};\n\n\tgantt.setDp = function() {\n\t\tthis._dp = dp;\n\t};\n\n\tgantt.setDp();\n}","import * as helpers from \"../../utils/helpers\";\n\nexport default class DataProcessorEvents {\n\tprotected _dataProcessorHandlers: any[];\n\tprotected $gantt: any;\n\tprotected $dp: any;\n\n\tconstructor(gantt: any, dp: any) {\n\t\tthis.$gantt = gantt;\n\t\tthis.$dp = dp;\n\t\tthis._dataProcessorHandlers = [];\n\t}\n\n\tattach() {\n\t\tconst dp = this.$dp;\n\t\tconst gantt = this.$gantt;\n\t\tconst treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tconst cascadeDelete = {};\n\n\t\tfunction clientSideDelete(id) {\n\t\t\tconst updated = dp.updatedRows.slice();\n\t\t\tlet clientOnly = false;\n\n\t\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\n\t\t\t\tif (updated[i] === id) {\n\t\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\") === \"inserted\") {\n\t\t\t\t\t\tclientOnly = true;\n\t\t\t\t\t}\n\t\t\t\t\tdp.setUpdated(id,false);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn clientOnly;\n\t\t}\n\n\t\tfunction getTaskLinks(task) {\n\t\t\tlet _links = [];\n\n\t\t\tif (task.$source) {\n\t\t\t\t_links = _links.concat(task.$source);\n\t\t\t}\n\t\t\tif (task.$target) {\n\t\t\t\t_links = _links.concat(task.$target);\n\t\t\t}\n\n\t\t\treturn _links;\n\t\t}\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskAdd\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id, true, \"inserted\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskUpdate\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id, true);\n\t\t\t\tgantt._sendTaskOrder(id, item);\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onBeforeTaskDelete\", function(id, item) { // tslint:disable-line\n\t\t\tif (!gantt.config.cascade_delete) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcascadeDelete[id] = {\n\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\n\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\n\t\t\t};\n\t\t\treturn true;\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskDelete\", function(id, item) { // tslint:disable-line\n\t\t\tdp.setGanttMode(\"tasks\");\n\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\n\t\t\tconst needDbDelete = !clientSideDelete(id);\n\t\t\tif (!needDbDelete) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gantt.config.cascade_delete && cascadeDelete[id]) {\n\t\t\t\tconst dpMode = dp.updateMode;\n\t\t\t\tdp.setUpdateMode(\"off\");\n\n\t\t\t\tconst cascade = cascadeDelete[id];\n\t\t\t\tfor (const i in cascade.tasks) {\n\t\t\t\t\tif (!clientSideDelete(i)) {\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tfor (const i in cascade.links) {\n\t\t\t\t\tif (!clientSideDelete(i)) {\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcascadeDelete[id] = null;\n\n\t\t\t\tif (dpMode !== \"off\") {\n\t\t\t\t\tdp.sendAllData();\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdateMode(dpMode);\n\t\t\t}\n\t\t\tdp.setUpdated(id, true, \"deleted\");\n\n\t\t\tif (dp.updateMode !== \"off\" && !dp._tSend) {\n\t\t\t\tdp.sendAllData();\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkUpdate\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isLinkExists(id)) {\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true);\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkAdd\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isLinkExists(id)) {\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkDelete\", function(id, item) { // tslint:disable-line\n\t\t\tdp.setGanttMode(\"links\");\n\n\t\t\tconst needDbDelete = !clientSideDelete(id);\n\t\t\tif (!needDbDelete) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdp.setUpdated(id, true,\"deleted\");\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onRowDragEnd\", function(id, target) { // tslint:disable-line\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\n\t\t}));\n\n\t\tlet tasks = null;\n\t\tlet links = null;\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onTaskIdChange\", function(oldId, newId) { // tslint:disable-line\n\t\t\tif (!dp._waitMode) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst children = gantt.getChildren(newId);\n\t\t\tif (children.length) {\n\t\t\t\ttasks = tasks || {};\n\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst ch = this.getTask(children[i]);\n\t\t\t\t\ttasks[ch.id] = ch;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst item = this.getTask(newId);\n\t\t\tconst itemLinks = getTaskLinks(item);\n\n\t\t\tif (itemLinks.length) {\n\t\t\t\tlinks = links || {};\n\n\t\t\t\tfor (let i = 0; i < itemLinks.length; i++) {\n\t\t\t\t\tconst link = this.getLink(itemLinks[i]);\n\t\t\t\t\tlinks[link.id] = link;\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function() {\n\t\t\tif (tasks || links) {\n\t\t\t\tgantt.batchUpdate(function() {\n\t\t\t\t\tfor (const id in tasks) {\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const id in links) {\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\n\t\t\t\t\t}\n\t\t\t\t\ttasks = null;\n\t\t\t\t\tlinks = null;\n\t\t\t\t});\n\t\t\t\tif (tasks) {\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\n\t\t\t\t} else {\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\n\t\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tlet url = this._serverProcessor;\n\t\t\tif (this._tMode === \"REST-JSON\" || this._tMode === \"REST\") {\n\t\t\t\tconst mode = this._ganttMode;\n\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\n\t\t\t\t// editing=true&\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + mode;\n\t\t\t} else {\n\t\t\t\tconst pluralizedMode = this._ganttMode + \"s\";\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + pluralizedMode;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tdp.attachEvent(\"insertCallback\", function insertCallback(upd, id, parent, mode) { // tslint:disable-line\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\n\t\t\tconst methods = {\n\t\t\t\tadd: gantt.addTask,\n\t\t\t\tisExist: gantt.isTaskExists\n\t\t\t};\n\t\t\tif (mode === \"links\") {\n\t\t\t\tmethods.add = gantt.addLink;\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\n\t\t\t}\n\t\t\tif (methods.isExist.call(gantt, id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdata.id = id;\n\t\t\tmethods.add.call(gantt, data);\n\t\t});\n\n\t\tdp.attachEvent(\"updateCallback\", function updateCallback(upd, id) {\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\n\t\t\tif (!gantt.isTaskExists(id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst objData = gantt.getTask(id);\n\t\t\tfor (const key in data) {\n\t\t\t\tlet property = data[key];\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"start_date\":\n\t\t\t\t\tcase \"end_date\":\n\t\t\t\t\t\tproperty = gantt.templates.xml_date(property);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"duration\":\n\t\t\t\t\t\tobjData.end_date = gantt.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tobjData[key] = property;\n\t\t\t}\n\t\t\tgantt.updateTask(id);\n\t\t\tgantt.refreshData();\n\t\t});\n\t\tdp.attachEvent(\"deleteCallback\", function deleteCallback(upd, id, parent, mode) { // tslint:disable-line\n\t\t\tconst methods = {\n\t\t\t\tdelete: gantt.deleteTask,\n\t\t\t\tisExist: gantt.isTaskExists\n\t\t\t};\n\t\t\tif (mode === \"links\") {\n\t\t\t\tmethods.delete = gantt.deleteLink;\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\n\t\t\t}\n\t\t\tif (methods.isExist.call(gantt, id)) {\n\t\t\t\tmethods.delete.call(gantt, id);\n\t\t\t}\n\t\t});\n\t}\n\n\tdetach() {\n\t\thelpers.forEach(this._dataProcessorHandlers, (e) => {\n\t\t\tthis.$gantt.detachEvent(e);\n\t\t});\n\t\tthis._dataProcessorHandlers = [];\n\t}\n}\n","import * as eventable from \"../../utils/eventable\";\nimport * as helpers from \"../../utils/helpers\";\nimport * as utils from \"../../utils/utils\";\nimport DataProcessorEvents from \"./data_processor_events\";\nimport extendGantt from \"./extend_gantt\";\n\nexport interface DataProcessor { // tslint:disable-line\n\t$gantt: any;\n\tdetachAllEvents: any;\n\tattachEvent: any;\n\tcallEvent: any;\n\n\tserverProcessor: string;\n\taction_param: string;\n\tobject: any;\n\tupdatedRows: any[];\n\tautoUpdate: boolean;\n\tupdateMode: string;\n\tmandatoryFields: any[];\n\tmessages: any[];\n\tstyles: object;\n\tdnd: any;\n}\n\nexport function createDataProcessor(config: any) {\n\tlet router;\n\tlet tMode;\n\tif (config instanceof Function) {\n\t\trouter = config;\n\t} else if (config.hasOwnProperty(\"router\")) {\n\t\trouter = config.router;\n\t} else if (config.hasOwnProperty(\"link\") && config.hasOwnProperty(\"task\")) {\n\t\trouter = config;\n\t}\n\tif (router) {\n\t\ttMode = \"CUSTOM\";\n\t} else {\n\t\ttMode = config.mode || \"REST-JSON\";\n\t}\n\tconst gantt = this; // tslint:disable-line\n\tconst dp = new DataProcessor(config.url);\n\tdp.init(gantt);\n\tdp.setTransactionMode({\n\t\tmode: tMode,\n\t\trouter\n\t}, config.batchUpdate);\n\treturn dp;\n}\n\nexport class DataProcessor {\n\tpublic modes: object;\n\tpublic serverProcessor: string;\n\tpublic action_param: string; // tslint:disable-line\n\tpublic object: any;\n\tpublic updatedRows: any[];\n\tpublic autoUpdate: boolean;\n\tpublic updateMode: string;\n\tpublic mandatoryFields: any[];\n\tpublic messages: any[];\n\tpublic styles: object;\n\tpublic dnd: any;\n\n\tprotected _tMode: string;\n\tprotected _headers: any;\n\tprotected _payload: any;\n\tprotected _postDelim: string;\n\tprotected _waitMode: number;\n\tprotected _in_progress: object; // tslint:disable-line\n\tprotected _invalid: object;\n\tprotected _tSend: boolean;\n\tprotected _endnm: boolean;\n\tprotected _serializeAsJson: boolean;\n\tprotected _router: any;\n\tprotected _utf: boolean;\n\tprotected obj: any;\n\tprotected _columns: any;\n\tprotected _changed: boolean;\n\tprotected _methods: any[];\n\tprotected _user: any;\n\tprotected _uActions: object;\n\tprotected _needUpdate: boolean;\n\tprotected _ganttMode: string;\n\n\tprotected _silent_mode: any; // tslint:disable-line\n\tprotected _updateBusy: any;\n\tprotected _serverProcessor: any;\n\tprotected _initialized: boolean;\n\n\tconstructor(serverProcessorURL?) {\n\t\tthis.serverProcessor = serverProcessorURL;\n\t\tthis.action_param = \"!nativeeditor_status\";\n\n\t\tthis.object = null;\n\t\tthis.updatedRows = []; // ids of updated rows\n\n\t\tthis.autoUpdate = true;\n\t\tthis.updateMode = \"cell\";\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tthis._postDelim = \"_\";\n\n\t\tthis._waitMode = 0;\n\t\tthis._in_progress = {}; // ?\n\t\tthis._invalid = {};\n\t\tthis.mandatoryFields = [];\n\t\tthis.messages = [];\n\n\t\tthis.styles = {\n\t\t\tupdated: \"font-weight:bold;\",\n\t\t\tinserted: \"font-weight:bold;\",\n\t\t\tdeleted: \"text-decoration : line-through;\",\n\t\t\tinvalid: \"background-color:FFE0E0;\",\n\t\t\tinvalid_cell: \"border-bottom:2px solid red;\",\n\t\t\terror: \"color:red;\",\n\t\t\tclear: \"font-weight:normal;text-decoration:none;\"\n\t\t};\n\t\tthis.enableUTFencoding(true);\n\t\teventable(this);\n\t}\n\n\tsetTransactionMode(mode:any, total?:any) {\n\t\tif (typeof mode === \"object\") {\n\t\t\tthis._tMode = mode.mode || this._tMode;\n\n\t\t\tif (utils.defined(mode.headers)) {\n\t\t\t\tthis._headers = mode.headers;\n\t\t\t}\n\n\t\t\tif (utils.defined(mode.payload)) {\n\t\t\t\tthis._payload = mode.payload;\n\t\t\t}\n\n\t\t} else {\n\t\t\tthis._tMode = mode;\n\t\t\tthis._tSend = total;\n\t\t}\n\n\t\tif (this._tMode === \"REST\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t}\n\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._serializeAsJson = true;\n\t\t\tthis._headers = this._headers || {};\n\t\t\tthis._headers[\"Content-type\"] = \"application/json\";\n\t\t}\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._router = mode.router;\n\t\t}\n\t}\n\n\tescape(data:any) {\n\t\tif (this._utf) {\n\t\t\treturn encodeURIComponent(data);\n\t\t} else {\n\t\t\treturn escape(data);\n\t\t}\n\t}\n\n\t/**\n\t * @desc: allows to set escaping mode\n\t * @param: true - utf based escaping, simple - use current page encoding\n\t * @type: public\n\t */\n\tenableUTFencoding(mode:boolean) {\n\t\tthis._utf = !!mode;\n\t}\n\n\n\t/**\n\t * @desc: allows to define, which column may trigger update\n\t * @param: val - array or list of true/false values\n\t * @type: public\n\t */\n\tsetDataColumns(val:string|any) {\n\t\tthis._columns = (typeof val === \"string\") ? val.split(\",\") : val;\n\t}\n\n\t/**\n\t * @desc: get state of updating\n\t * @returns: true - all in sync with server, false - some items not updated yet.\n\t * @type: public\n\t */\n\tgetSyncState() {\n\t\treturn !this.updatedRows.length;\n\t}\n\n\t/**\n\t * @desc: enable/disable named field for data syncing, will use column ids for grid\n\t * @param: mode - true/false\n\t * @type: public\n\t */\n\tenableDataNames(mode: boolean) {\n\t\tthis._endnm = !!mode;\n\t}\n\n\t/**\n\t * @desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\n\t * @param: mode - true/false\n\t * @type: public\n\t */\n\tenablePartialDataSend(mode: boolean) {\n\t\tthis._changed = !!mode;\n\t}\n\n\t/**\n\t * @desc: set if rows should be send to server automaticaly\n\t * @param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\n\t * @type: public\n\t */\n\tsetUpdateMode(mode: string, dnd: any) {\n\t\tthis.autoUpdate = (mode === \"cell\");\n\t\tthis.updateMode = mode;\n\t\tthis.dnd = dnd;\n\t}\n\n\tignore(code: any, master: any) {\n\t\tthis._silent_mode = true;\n\t\tcode.call(master || window);\n\t\tthis._silent_mode = false;\n\t}\n\n\t/**\n\t * @desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\n\t * @param: rowId - id of row to set update-status for\n\t * @param: state - true for \"updated\", false for \"not updated\"\n\t * @param: mode - update mode name\n\t * @type: public\n\t */\n\tsetUpdated(rowId:number|string, state: boolean, mode?: string) {\n\t\tif (this._silent_mode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ind = this.findRow(rowId);\n\n\t\tmode = mode || \"updated\";\n\t\tconst existing = this.$gantt.getUserData(rowId, this.action_param);\n\t\tif (existing && mode === \"updated\") {\n\t\t\tmode = existing;\n\t\t}\n\t\tif (state) {\n\t\t\tthis.set_invalid(rowId, false); // clear previous error flag\n\t\t\tthis.updatedRows[ind] = rowId;\n\t\t\tthis.$gantt.setUserData(rowId, this.action_param, mode);\n\t\t\tif (this._in_progress[rowId]) {\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.is_invalid(rowId)) {\n\t\t\t\tthis.updatedRows.splice(ind, 1);\n\t\t\t\tthis.$gantt.setUserData(rowId, this.action_param, \"\");\n\t\t\t}\n\t\t}\n\n\t\tthis.markRow(rowId, state, mode);\n\t\tif (state && this.autoUpdate) {\n\t\t\tthis.sendData(rowId);\n\t\t}\n\t}\n\n\tmarkRow(id: number | string, state: boolean, mode: string) {\n\t\tlet str = \"\";\n\t\tconst invalid = this.is_invalid(id);\n\t\tif (invalid) {\n\t\t\tstr = this.styles[invalid];\n\t\t\tstate = true;\n\t\t}\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\n\t\t\t// default logic\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\n\n\t\t\tthis.$gantt[this._methods[0]](id, str);\n\n\t\t\tif (invalid && invalid.details) {\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\n\t\t\t\tfor (let i = 0; i < invalid.details.length; i++) {\n\t\t\t\t\tif (invalid.details[i]) {\n\t\t\t\t\t\tthis.$gantt[this._methods[1]](id, i, str);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetActionByState(state: string):string {\n\t\tif (state === \"inserted\") {\n\t\t\treturn \"create\";\n\t\t}\n\n\t\tif (state === \"updated\") {\n\t\t\treturn \"update\";\n\t\t}\n\n\t\tif (state === \"deleted\") {\n\t\t\treturn \"delete\";\n\t\t}\n\t}\n\n\tgetState(id: number | string) {\n\t\treturn this.$gantt.getUserData(id, this.action_param);\n\t}\n\n\tis_invalid(id: number | string) {\n\t\treturn this._invalid[id];\n\t}\n\n\tset_invalid(id: number | string, mode: any, details?) {\n\t\tif (details) {\n\t\t\tmode = {\n\t\t\t\tvalue: mode,\n\t\t\t\tdetails,\n\t\t\t\ttoString: function() { // tslint:disable-line\n\t\t\t\t\treturn this.value.toString();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tthis._invalid[id] = mode;\n\t}\n\n\t/**\n\t * @desc: check mandatory fields and varify values of cells, initiate update (if specified)\n\t * @param: rowId - id of row to set update-status for\n\t * @type: public\n\t */\n\t// tslint:disable-next-line\n\tcheckBeforeUpdate(rowId: number | string) { // ???\n\t\treturn true;\n\t}\n\n\t/**\n\t * @desc: send row(s) values to server\n\t * @param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\n\t * @type: public\n\t */\n\tsendData(rowId?: any) {\n\t\tif (this._waitMode && (this.$gantt.mytype === \"tree\" || this.$gantt._h2)) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.$gantt.editStop) {\n\t\t\tthis.$gantt.editStop();\n\t\t}\n\n\n\t\tif (typeof rowId === \"undefined\" || this._tSend) {\n\t\t\treturn this.sendAllData();\n\t\t}\n\t\tif (this._in_progress[rowId]) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.messages = [];\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) {\n\t\t\treturn false; // ??? unreachable code, drop it?\n\t\t}\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t}\n\n\t_beforeSendData(data: any, rowId: any) {\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._sendData(data, rowId);\n\t}\n\n\tserialize(data: any, id: any) {\n\t\tif (this._serializeAsJson) {\n\t\t\treturn this._serializeAsJSON(data);\n\t\t}\n\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\t\tif (typeof id !== \"undefined\") {\n\t\t\treturn this.serialize_one(data, \"\");\n\t\t} else {\n\t\t\tconst stack = [];\n\t\t\tconst keys = [];\n\t\t\tfor (const key in data) {\n\t\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this._postDelim));\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\n\t\t\tif (this.$gantt.security_key) {\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\n\t\t\t}\n\t\t\treturn stack.join(\"&\");\n\t\t}\n\t}\n\n\t_serializeAsJSON(data: any) {\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst copy = utils.copy(data);\n\t\tif (this._tMode === \"REST-JSON\") {\n\t\t\tdelete copy.id;\n\t\t\tdelete copy[this.action_param];\n\t\t}\n\n\t\treturn JSON.stringify(copy);\n\t}\n\n\tserialize_one(data: any, pref: string) {\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\t\tconst stack = [];\n\t\tlet serialized = \"\";\n\t\tfor (const key in data)\n\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\tif ((key === \"id\" ||\n\t\t\t\t\tkey == this.action_param) && // tslint:disable-line\n\t\t\t\t\tthis._tMode === \"REST\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\n\t\t\t\t\tserialized = data[key];\n\t\t\t\t} else {\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\n\t\t\t\t}\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\n\t\t\t}\n\t\treturn stack.join(\"&\");\n\t}\n\n\t_applyPayload(url: string) {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tif (this._payload) {\n\t\t\tfor (const key in this._payload) {\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t}\n\n\t_sendData(dataToSend: any, rowId?: any) {\n\t\tif (!dataToSend) {\n\t\t\treturn; // nothing to send\n\t\t}\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (rowId) {\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\n\t\t}\n\n\t\tconst ajax = this.$gantt.ajax;\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tconst taskState = this.getState(rowId);\n\t\t\tconst taskAction = this.getActionByState(taskState);\n\t\t\tconst ganttMode = this.getGanttMode();\n\t\t\tconst _onResolvedCreateUpdate = (tag) => {\n\t\t\t\tlet action = taskState || \"updated\";\n\t\t\t\tlet sid = rowId;\n\t\t\t\tlet tid = rowId;\n\n\t\t\t\tif (tag) {\n\t\t\t\t\taction = tag.action || taskState;\n\t\t\t\t\tsid = tag.sid || sid;\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\n\t\t\t\t}\n\t\t\t\tthis.afterUpdateCallback(sid, tid, action, tag);\n\t\t\t};\n\n\t\t\tlet actionPromise;\n\t\t\tif (this._router instanceof Function) {\n\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\n\t\t\t} else if (this._router[ganttMode] instanceof Function) {\n\t\t\t\tactionPromise = this._router[ganttMode](taskAction, dataToSend, rowId);\n\t\t\t} else {\n\t\t\t\tswitch (taskState) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].create(dataToSend);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].delete(rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].update(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(actionPromise){\n\t\t\t\t// neither promise nor {tid: newId} response object\n\t\t\t\tif(!actionPromise.then &&\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined)){\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\n\t\t\t\t}\n\n\t\t\t\tif(actionPromise.then){\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate);\n\t\t\t\t}else{\n\t\t\t\t\t// custom method may return a response object in case of sync action\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t_onResolvedCreateUpdate(null);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tlet queryParams: any;\n\t\tqueryParams = {\n\t\t\tcallback: (xml) => {\n\t\t\t\tconst ids = [];\n\n\t\t\t\tif (rowId) {\n\t\t\t\t\tids.push(rowId);\n\t\t\t\t} else if (dataToSend) {\n\t\t\t\t\tfor (const key in dataToSend) {\n\t\t\t\t\t\tids.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.afterUpdate(this, xml, ids);\n\t\t\t},\n\t\t\theaders: this._headers\n\t\t};\n\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$gantt.getUserData(0, \"version\")].join(\"&\")) : \"\");\n\t\tlet url: any = this._applyPayload(urlParams);\n\t\tlet data;\n\n\t\tswitch (this._tMode) {\n\t\t\tcase \"GET\":\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(dataToSend, rowId);\n\t\t\t\tqueryParams.method = \"GET\";\n\t\t\t\tbreak;\n\t\t\tcase \"POST\":\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\tbreak;\n\t\t\tcase \"JSON\":\n\t\t\t\tdata = {};\n\t\t\t\tfor (const key in dataToSend) {\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdata[key] = dataToSend[key];\n\t\t\t\t}\n\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = JSON.stringify({\n\t\t\t\t\tid: rowId,\n\t\t\t\t\taction: dataToSend[this.action_param],\n\t\t\t\t\tdata\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"REST\":\n\t\t\tcase \"REST-JSON\":\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\n\t\t\t\tdata = \"\";\n\n\t\t\t\tswitch (this.getState(rowId)) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tqueryParams.url = this._applyPayload(url);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._waitMode++;\n\t\treturn ajax.query(queryParams);\n\t}\n\n\t_forEachUpdatedRow(code: any) {\n\t\tconst updatedRows = this.updatedRows.slice();\n\t\tfor (let i = 0; i < updatedRows.length; i++) {\n\t\t\tconst rowId = updatedRows[i];\n\t\t\tif (this.$gantt.getUserData(rowId, this.action_param)) {\n\t\t\t\tcode.call(this, rowId);\n\t\t\t}\n\t\t}\n\t}\n\n\tsendAllData() {\n\t\tif (!this.updatedRows.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.messages = [];\n\t\tlet valid: any = true;\n\n\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId); // ??? checkBeforeUpdate() always is true\n\t\t});\n\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._tSend) {\n\t\t\tthis._sendData(this._getAllData());\n\t\t} else {\n\t\t\tlet stop = false;\n\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\t\tif (stop) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this._in_progress[rowId]) {\n\t\t\t\t\tif (this.is_invalid(rowId)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t\t\t\t\tif (this._waitMode && (this.$gantt.mytype === \"tree\" || this.$gantt._h2)) {\n\t\t\t\t\t\tstop = true; // block send all for tree\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_getAllData() {\n\t\tconst out = {};\n\t\tlet hasOne = false;\n\n\t\tthis._forEachUpdatedRow(function(id) {\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst row = this._getRowData(id);\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tout[id] = row;\n\t\t\thasOne = true;\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\n\t\t});\n\n\t\treturn hasOne ? out : null;\n\t}\n\n\n\t/**\n\t * @desc: specify column which value should be verified before sending to server\n\t * @param: ind - column index (0 based)\n\t * @param: verifFunction - function(object) which should verify cell value (if not specified, then value will be compared to empty string). Two arguments will be passed into it: value and column name\n\t * @type: public\n\t */\n\tsetVerificator(ind: number, verifFunction: any) {\n\t\tthis.mandatoryFields[ind] = verifFunction || (function(value) { return (value !== \"\"); });\n\t}\n\n\t/**\n\t * @desc: remove column from list of those which should be verified\n\t * @param: ind - column Index (0 based)\n\t * @type: public\n\t */\n\tclearVerificator(ind: number) {\n\t\tthis.mandatoryFields[ind] = false;\n\t}\n\n\tfindRow(pattern: any) {\n\t\tlet i = 0;\n\t\tfor (i = 0; i < this.updatedRows.length; i++) {\n\t\t\tif (pattern == this.updatedRows[i]) { // tslint:disable-line\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * @desc: define custom actions\n\t * @param: name - name of action, same as value of action attribute\n\t * @param: handler - custom function, which receives a XMl response content for action\n\t * @type: private\n\t */\n\tdefineAction(name: string, handler: any) {\n\t\tif (!this._uActions) {\n\t\t\tthis._uActions = {};\n\t\t}\n\t\tthis._uActions[name] = handler;\n\t}\n\n\t/**\n\t * @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\n\t * @param: sid - id of item before update\n\t * @param: tid - id of item after up0ate\n\t * @param: action - action name\n\t * @type: public\n\t * @topic: 0\n\t */\n\tafterUpdateCallback(sid: number | string, tid: number | string, action: string, btag: any) {\n\t\tconst marker = sid;\n\t\tconst correct = (action !== \"error\" && action !== \"invalid\");\n\t\tif (!correct) {\n\t\t\tthis.set_invalid(sid, action);\n\t\t}\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\n\t\t\treturn (delete this._in_progress[marker]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tthis.setUpdated(sid, false);\n\t\t}\n\n\t\tconst originalSid = sid;\n\n\t\tswitch (action) {\n\t\t\tcase \"inserted\":\n\t\t\tcase \"insert\":\n\t\t\t\tif (tid != sid) { // tslint:disable-line\n\t\t\t\t\tthis.setUpdated(sid, false);\n\t\t\t\t\tthis.$gantt[this._methods[2]](sid, tid);\n\t\t\t\t\tsid = tid;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"delete\":\n\t\t\tcase \"deleted\":\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\");\n\t\t\t\tthis.$gantt[this._methods[3]](sid);\n\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tif (correct) {\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"\");\n\t\t\t}\n\t\t\tdelete this._in_progress[marker];\n\t\t} else {\n\t\t\tdelete this._in_progress[marker];\n\t\t\tthis.setUpdated(tid, true, this.$gantt.getUserData(sid, this.action_param));\n\t\t}\n\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\n\t}\n\n\t/**\n\t * @desc: response from server\n\t * @param: xml - XMLLoader object with response XML\n\t * @type: private\n\t */\n\tafterUpdate(that: any, xml: any, id?:any) {\n\t\tlet _xml;\n\t\tif (arguments.length === 3) {\n\t\t\t_xml = arguments[1];\n\t\t} else {\n\t\t\t// old dataprocessor\n\t\t\t_xml = arguments[4];\n\t\t}\n\t\tlet mode = this.getGanttMode();\n\t\tconst reqUrl = _xml.filePath || _xml.url;\n\n\t\tif (this._tMode !== \"REST\" && this._tMode !== \"REST-JSON\") {\n\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") !== -1) {\n\t\t\t\tmode = \"link\";\n\t\t\t} else {\n\t\t\t\tmode = \"task\";\n\t\t\t}\n\t\t} else {\n\t\t\tif (reqUrl.indexOf(\"/link\") > reqUrl.indexOf(\"/task\")) {\n\t\t\t\tmode = \"link\";\n\t\t\t} else {\n\t\t\t\tmode = \"task\";\n\t\t\t}\n\t\t}\n\t\tthis.setGanttMode(mode);\n\n\t\tconst ajax = this.$gantt.ajax;\n\t\t// try to use json first\n\t\tif ((window as any).JSON) {\n\t\t\tlet tag;\n\n\t\t\ttry {\n\t\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\n\t\t\t} catch (e) {\n\n\t\t\t\t// empty response also can be processed by json handler\n\t\t\t\tif (!xml.xmlDoc.responseText.length) {\n\t\t\t\t\ttag = {};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tag) {\n\t\t\t\tconst action = tag.action || this.getState(id) || \"updated\";\n\t\t\t\tconst sid = tag.sid || id[0];\n\t\t\t\tconst tid = tag.tid || id[0];\n\t\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\n\t\t\t\tthat.finalizeUpdate();\n\t\t\t\tthis.setGanttMode(mode);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// xml response\n\t\tconst top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\n\t\tif (!top) {\n\t\t\treturn this.cleanUpdate(id);\n\t\t}\n\t\tconst atag = ajax.xpath(\"//data/action\", top);\n\t\tif (!atag.length) {\n\t\t\treturn this.cleanUpdate(id);\n\t\t}\n\n\t\tfor (let i = 0; i < atag.length; i++) {\n\t\t\tconst btag = atag[i];\n\t\t\tconst action = btag.getAttribute(\"type\");\n\t\t\tconst sid = btag.getAttribute(\"sid\");\n\t\t\tconst tid = btag.getAttribute(\"tid\");\n\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\n\t\t}\n\t\tthat.finalizeUpdate();\n\t}\n\n\tcleanUpdate(id: any[]) {\n\t\tif (id) {\n\t\t\tfor (let i = 0; i < id.length; i++) {\n\t\t\t\tdelete this._in_progress[id[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalizeUpdate() {\n\t\tif (this._waitMode) {\n\t\t\tthis._waitMode--;\n\t\t}\n\n\t\tif ((this.$gantt.mytype === \"tree\" || this.$gantt._h2) && this.updatedRows.length) {\n\t\t\tthis.sendData();\n\t\t}\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\n\t\tif (!this.updatedRows.length) {\n\t\t\tthis.callEvent(\"onFullSync\", []);\n\t\t}\n\t}\n\n\t/**\n\t * @desc: initializes data-processor\n\t * @param: anObj - dhtmlxGrid object to attach this data-processor to\n\t * @type: public\n\t */\n\tinit(anObj: any) {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t}\n\t\tthis.$gantt = anObj;\n\t\tif (this.$gantt._dp_init) {\n\t\t\tthis.$gantt._dp_init(this);\n\t\t}\n\n\t\tthis._setDefaultTransactionMode();\n\n\t\tthis.styles = {\n\t\t\tupdated:\"gantt_updated\",\n\t\t\torder:\"gantt_updated\",\n\t\t\tinserted:\"gantt_inserted\",\n\t\t\tdeleted:\"gantt_deleted\",\n\t\t\tinvalid:\"gantt_invalid\",\n\t\t\terror:\"gantt_error\",\n\t\t\tclear:\"\"\n\t\t};\n\n\t\tthis._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\n\t\textendGantt(this.$gantt, this);\n\t\tconst dataProcessorEvents = new DataProcessorEvents(this.$gantt, this);\n\t\tdataProcessorEvents.attach();\n\t\tthis.attachEvent(\"onDestroy\", function() {\n\t\t\tdelete this.setGanttMode;\n\t\t\tdelete this._getRowData;\n\n\t\t\tdelete this.$gantt._dp;\n\t\t\tdelete this.$gantt._change_id;\n\t\t\tdelete this.$gantt._row_style;\n\t\t\tdelete this.$gantt._delete_task;\n\t\t\tdelete this.$gantt._sendTaskOrder;\n\t\t\tdelete this.$gantt;\n\n\t\t\tdataProcessorEvents.detach();\n\t\t});\n\t\tthis.$gantt.callEvent(\"onDataProcessorReady\", [this]);\n\t\tthis._initialized = true;\n\t}\n\n\t_setDefaultTransactionMode() {\n\t\tif (this.serverProcessor) {\n\t\t\tthis.setTransactionMode(\"POST\", true);\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\n\t\t\tthis._serverProcessor = this.serverProcessor;\n\t\t}\n\t}\n\n\tsetOnAfterUpdate(handler) {\n\t\tthis.attachEvent(\"onAfterUpdate\", handler);\n\t}\n\n\tenableDebug(mode) {} // tslint:disable-line\n\n\tsetOnBeforeUpdateHandler(handler) {\n\t\tthis.attachEvent(\"onBeforeDataSending\", handler);\n\t}\n\n\t/* starts autoupdate mode\n\t\t@param interval time interval for sending update requests\n\t*/\n\tsetAutoUpdate(interval, user) {\n\t\tinterval = interval || 2000;\n\n\t\tthis._user = user || (new Date()).valueOf();\n\t\tthis._needUpdate = false;\n\t\t// this._loader = null;\n\t\tthis._updateBusy = false;\n\n\t\tthis.attachEvent(\"onAfterUpdate\", this.afterAutoUpdate); // arguments sid, action, tid, xml_node;\n\n\t\tthis.attachEvent(\"onFullSync\", this.fullSync);\n\n\t\twindow.setInterval(() => {\n\t\t\tthis.loadUpdate();\n\t\t}, interval);\n\t}\n\n\t/* process updating request answer\n\t\tif status == collision version is depricated\n\t\tset flag for autoupdating immidiatly\n\t*/\n\tafterAutoUpdate(sid, action, tid, xml_node) { // tslint:disable-line\n\t\tif (action === \"collision\") {\n\t\t\tthis._needUpdate = true;\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/* callback function for onFillSync event\n\t\tcall update function if it's need\n\t*/\n\tfullSync() {\n\t\tif (this._needUpdate) {\n\t\t\tthis._needUpdate = false;\n\t\t\tthis.loadUpdate();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/* sends query to the server and call callback function\n\t*/\n\tgetUpdates(url, callback) {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tif (this._updateBusy) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis._updateBusy = true;\n\t\t}\n\n\t\t// this._loader = this._loader || new dtmlXMLLoaderObject(true);\n\n\t\t// this._loader.async=true;\n\t\t// this._loader.waitCall=callback;\n\t\t// this._loader.loadXML(url);\n\t\tajax.get(url, callback);\n\n\t}\n\n\t// I didn't found some use of _v and _a functions\n\n\t/* returns xml node value\n\t\t@param node\n\t\t\txml node\n\t*/\n\t_v(node) {\n\t\tif (node.firstChild) {\n\t\t\treturn node.firstChild.nodeValue;\n\t\t}\n\t\treturn \"\";\n\t}\n\n\n\t/* returns values array of xml nodes array\n\t\t@param arr\n\t\t\tarray of xml nodes\n\t*/\n\t_a(arr) {\n\t\tconst res = [];\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\tres[i] = this._v(arr[i]);\n\t\t}\n\t\treturn res;\n\t}\n\n\t/* loads updates and processes them\n\t*/\n\tloadUpdate() {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tconst version = this.$gantt.getUserData(0, \"version\");\n\t\tlet url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\n\t\turl = url.replace(\"editing=true&\", \"\");\n\t\tthis.getUpdates(url, (xml) => {\n\t\t\tconst vers = ajax.xpath(\"//userdata\", xml);\n\t\t\tthis.obj.setUserData(0, \"version\", this._v(vers[0]));\n\n\t\t\tconst upds = ajax.xpath(\"//update\", xml);\n\t\t\tif (upds.length) {\n\t\t\t\tthis._silent_mode = true;\n\n\t\t\t\tfor (let i = 0; i < upds.length; i++) {\n\t\t\t\t\tconst status = upds[i].getAttribute(\"status\");\n\t\t\t\t\tconst id = upds[i].getAttribute(\"id\");\n\t\t\t\t\tconst parent = upds[i].getAttribute(\"parent\");\n\t\t\t\t\tswitch (status) {\n\t\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"updated\":\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._silent_mode = false;\n\t\t\t}\n\n\t\t\tthis._updateBusy = false;\n\t\t});\n\t}\n\n\tdestructor() {\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t\tthis.updatedRows = [];\n\t\tthis._in_progress = {}; // ?\n\t\tthis._invalid = {};\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tdelete this._initialized;\n\t}\n\n\tsetGanttMode(mode) {\n\t\tif (mode === \"tasks\") {\n\t\t\tmode = \"task\";\n\t\t} else if (mode === \"links\") {\n\t\t\tmode = \"link\";\n\t\t}\n\n\t\tconst modes = this.modes || {};\n\t\tconst ganttMode = this.getGanttMode();\n\t\tif (ganttMode) {\n\t\t\tmodes[ganttMode] = {\n\t\t\t\t_in_progress : this._in_progress,\n\t\t\t\t_invalid: this._invalid,\n\t\t\t\tupdatedRows : this.updatedRows\n\t\t\t};\n\t\t}\n\n\t\tlet newState = modes[mode];\n\t\tif (!newState) {\n\t\t\tnewState = modes[mode] = {\n\t\t\t\t_in_progress : {},\n\t\t\t\t_invalid : {},\n\t\t\t\tupdatedRows : []\n\t\t\t};\n\t\t}\n\t\tthis._in_progress = newState._in_progress;\n\t\tthis._invalid = newState._invalid;\n\t\tthis.updatedRows = newState.updatedRows;\n\t\tthis.modes = modes;\n\t\tthis._ganttMode = mode;\n\t}\n\tgetGanttMode():string {\n\t\treturn this._ganttMode;\n\t}\n\n\t_getRowData(id) {\n\t\tlet task;\n\t\tif (this.getGanttMode() === \"task\") {\n\t\t\ttask = this.$gantt.isTaskExists(id) ? this.$gantt.getTask(id) : { id };\n\t\t} else {\n\t\t\ttask = this.$gantt.isLinkExists(id) ? this.$gantt.getLink(id) : { id };\n\t\t}\n\n\t\ttask = this.$gantt.copy(task);\n\n\t\tconst data = {};\n\t\tfor (const key in task) {\n\t\t\tif (key.substr(0, 1) === \"$\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst value = task[key];\n\t\t\tif (helpers.isDate(value)) {\n\t\t\t\tdata[key] = this.$gantt.templates.xml_format(value);\n\t\t\t} else if(value === null) {\n\t\t\t\tdata[key] = \"\";\n\t\t\t} else {\n\t\t\t\tdata[key] = value;\n\t\t\t}\n\t\t}\n\n\t\tconst taskTiming = this.$gantt._get_task_timing_mode(task);\n\t\tif(taskTiming.$no_start){\n\t\t\ttask.start_date = \"\";\n\t\t\ttask.duration = \"\";\n\t\t}\n\t\tif(taskTiming.$no_end){\n\t\t\ttask.end_date = \"\";\n\t\t\ttask.duration = \"\";\n\t\t}\n\t\tdata[this.action_param] = this.$gantt.getUserData(id, this.action_param);\n\t\treturn data;\n\t}\n\n\t_isFetchResult(result) {\n\t\treturn result.body instanceof ReadableStream;\n\t}\n\n\tsetSerializeAsJSON(flag: true) {\n\t\tthis._serializeAsJson = flag;\n\t}\n}","var DataProcessor = require(\"./data_processor\");\nmodule.exports = {\n\tDEPRECATED_api: function(server) {\n\t\treturn new (DataProcessor.DataProcessor)(server);\n\t},\n\tcreateDataProcessor: DataProcessor.createDataProcessor,\n\tgetDataProcessorModes: DataProcessor.getAvailableModes\n};","var storeRenderCreator = function(name, gantt){\n\tvar store = gantt.getDatastore(name);\n\n\tvar itemRepainter = {\n\t\trenderItem: function(id, renderer){\n\n\t\t\tvar renders = renderer.getLayers();\n\n\t\t\tvar item = store.getItem(id);\n\t\t\tif(item && store.isVisible(id)) {\n\t\t\t\tfor (var i = 0; i < renders.length; i++)\n\t\t\t\t\trenders[i].render_item(item);\n\t\t\t}\n\t\t},\n\t\trenderItems: function(renderer){\n\t\t\tvar renderers = renderer.getLayers();\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\trenderers[i].clear();\n\t\t\t}\n\n\t\t\tvar data = store.getVisibleItems();\n\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\trenderers[i].render_items(data);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction skipRepaint(gantt){\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n\t\tif(renderer){\n\t\t\tif(!id || action == \"move\" || action == \"delete\"){\n\t\t\t\tstore.callEvent(\"onBeforeRefreshAll\", []);\n\t\t\t\titemRepainter.renderItems(renderer);\n\t\t\t\tstore.callEvent(\"onAfterRefreshAll\", []);\n\t\t\t}else{\n\t\t\t\tstore.callEvent(\"onBeforeRefreshItem\", [item.id]);\n\t\t\t\titemRepainter.renderItem(item.id, renderer);\n\t\t\t\tstore.callEvent(\"onAfterRefreshItem\", [item.id]);\n\t\t\t}\n\t\t}\n\n\t});\n\n\t// TODO: probably can be done more in a more efficient way\n\tstore.attachEvent(\"onItemOpen\", function(){\n\t\tgantt.render();\n\t});\n\n\tstore.attachEvent(\"onItemClose\", function(){\n\t\tgantt.render();\n\t});\n\n\tfunction refreshId(renders, oldId, newId, item) {\n\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\trenders[i].change_id(oldId, newId);\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId){\n\n\t\t// in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n\t\t// use onBeforeIdChange for this hook.\n\t\t// TODO: use something more reasonable instead\n\t\tstore.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\t\trefreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n\t\titemRepainter.renderItem(newId, renderer);\n\t});\n\n};\n\nmodule.exports = {\n\tbindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store){\n\tvar selectedId = null;\n\n\tvar deleteItem = store._removeItemInner;\n\t\n\tfunction unselect(id){\n\t\tselectedId = null;\n\t\tthis.callEvent(\"onAfterUnselect\", [id]);\n\t}\n\n\tstore._removeItemInner = function(id){\n\t\tif(selectedId == id){\n\t\t\tunselect.call(this, id);\n\t\t}\n\n\t\tif(selectedId && this.eachItem){\n\t\t\tthis.eachItem(function(subItem){\n\t\t\t\tif(subItem.id == selectedId){\n\t\t\t\t\tunselect.call(this, subItem.id);\n\t\t\t\t}\n\t\t\t}, id);\n\t\t}\n\n\t\treturn deleteItem.apply(this, arguments);\n\t};\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId) {\n\t\tif (store.getSelectedId() == oldId) {\n\t\t\tstore.silent(function () {\n\t\t\t\tstore.unselect(oldId);\n\t\t\t\tstore.select(newId);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn {\n\t\tselect: function(id){\n\t\t\tif (id){\n\n\t\t\t\tif(selectedId == id)\n\t\t\t\t\treturn selectedId;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tif (!this.callEvent(\"onBeforeSelect\", [id])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.unselect();\n\n\t\t\t\tselectedId = id;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tthis.refresh(id);\n\t\t\t\t\tthis.callEvent(\"onAfterSelect\", [id]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn selectedId;\n\t\t},\n\t\tgetSelectedId: function(){\n\t\t\treturn selectedId;\n\t\t},\n\t\tunselect: function(id){\n\t\t\tvar id = id || selectedId;\n\t\t\tif(!id)\n\t\t\t\treturn;\n\t\t\tselectedId = null;\n\t\t\tif(!this._skip_refresh){\n\t\t\t\tthis.refresh(id);\n\t\t\t\tunselect.call(this, id);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = createDataStoreSelectMixin;","var powerArray = require(\"./power_array\");\nvar utils = require(\"../../utils/utils\");\nvar DataStore = require(\"./datastore\");\n\nvar TreeDataStore = function(config){\n\tDataStore.apply(this, [config]);\n\tthis._branches = {};\n\n\tthis.pull = {};\n\tthis.$initItem = config.initItem;\n\tthis.$parentProperty = config.parentProperty || \"parent\";\n\n\tif(typeof config.rootId !== \"function\"){\n\t\tthis.$getRootId = (function(val){\n\t\t\treturn function(){return val;};\n\t\t})(config.rootId || 0);\n\t}else{\n\t\tthis.$getRootId = config.rootId;\n\t}\n\n\t// TODO: replace with live reference to gantt config\n\tthis.$openInitially = config.openInitially;\n\n\tthis.visibleOrder = powerArray.$create();\n\tthis.fullOrder = powerArray.$create();\n\tthis._searchVisibleOrder = {};\n\tthis._skip_refresh = false;\n\n\tthis.attachEvent(\"onFilterItem\", function(id, item){\n\t\tvar open = true;\n\t\tthis.eachParent(function(parent){\n\t\t\topen = open && parent.$open && !(this._isSplitItem(parent));\n\t\t}, item);\n\t\treturn !!open;\n\t});\n\n\treturn this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n\n\t\t_buildTree: function(data){\n\t\t\tvar item = null;\n\t\t\tvar rootId = this.$getRootId();\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis.setParent(item, this.getParent(item) || rootId);\n\t\t\t}\n\n\t\t\t// calculating $level for each item\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis._add_branch(item);\n\t\t\t\titem.$level = this.calculateItemLevel(item);\n\n\t\t\t\tif (!utils.defined(item.$open)) {\n\t\t\t\t\titem.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis._updateOrder();\n\t\t},\n\t\t_isSplitItem: function(item){\n\t\t\treturn (item.render == \"split\" && this.hasChild(item.id));\n\t\t},\n\t\tparse: function(data){\n\t\t\tthis.callEvent(\"onBeforeParse\", [data]);\n\t\t\tvar loaded = this._parseInner(data);\n\t\t\tthis._buildTree(loaded);\n\t\t\tthis.filter();\n\t\t\tthis.callEvent(\"onParse\", [loaded]);\n\t\t},\n\n\t\t_addItemInner: function(item, index){\n\n\t\t\tvar parent = this.getParent(item);\n\n\t\t\tif(!utils.defined(parent)){\n\t\t\t\tparent = this.$getRootId();\n\t\t\t\tthis.setParent(item, parent);\n\t\t\t}\n\n\t\t\tvar parentIndex = this.getIndexById(parent);\n\t\t\tvar targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n\t\t\tif(targetIndex*1 !== targetIndex){\n\t\t\t\ttargetIndex = undefined;\n\t\t\t}\n\t\t\tDataStore.prototype._addItemInner.call(this, item, targetIndex);\n\t\t\tthis.setParent(item, parent);\n\n\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\tthis._move_branch(item, item.$rendered_parent);\n\t\t\t}\n\t\t\tthis._add_branch(item, index);\n\t\t},\n\t\t_changeIdInner: function(oldId, newId){\n\t\t\tvar children = this.getChildren(oldId);\n\t\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\n\t\t\tDataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n\t\t\tvar parent = this.getParent(newId);\n\n\t\t\tthis._replace_branch_child(parent, oldId, newId);\n\t\t\tfor(var i = 0; i < children.length; i++){\n\t\t\t\tthis.setParent(this.getItem(children[i]), newId);\n\t\t\t}\n\n\t\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\t\tdelete this._branches[oldId];\n\t\t},\n\n\t\t_traverseBranches: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar branch = this._branches[parent];\n\t\t\tif (branch) {\n\t\t\t\tfor (var i = 0; i < branch.length; i++) {\n\t\t\t\t\tvar itemId = branch[i];\n\t\t\t\t\tcode.call(this, itemId);\n\t\t\t\t\tif (this._branches[itemId])\n\t\t\t\t\t\tthis._traverseBranches(code, itemId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_updateOrder: function(code){\n\n\t\t\tthis.fullOrder = powerArray.$create();\n\t\t\tthis._traverseBranches(function(taskId){\n\t\t\t\tthis.fullOrder.push(taskId);\n\t\t\t});\n\n\t\t\tif(code)\n\t\t\t\tDataStore.prototype._updateOrder.call(this, code);\n\t\t},\n\n\t\t_removeItemInner: function(id){\n\n\t\t\tvar items = [];\n\t\t\tthis.eachItem(function(child){\n\t\t\t\titems.push(child);\n\t\t\t}, id);\n\n\t\t\titems.push(this.getItem(id));\n\n\t\t\tfor(var i = 0; i < items.length; i++){\n\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t\tDataStore.prototype._removeItemInner.call(this, items[i].id);\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t}\n\t\t},\n\n\t\tmove: function(sid, tindex, parent){\n\t\t\t//target id as 4th parameter\n\t\t\tvar id = arguments[3];\n\t\t\tif (id) {\n\t\t\t\tif (id === sid) return;\n\n\t\t\t\tparent = this.getParent(id);\n\t\t\t\ttindex = this.getBranchIndex(id);\n\t\t\t}\n\t\t\tif(sid == parent){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar source = this.getItem(sid);\n\t\t\tvar source_pid = this.getParent(source.id);\n\n\t\t\tvar tbranch = this.getChildren(parent);\n\n\t\t\tif (tindex == -1)\n\t\t\t\ttindex = tbranch.length + 1;\n\t\t\tif (source_pid == parent) {\n\t\t\t\tvar sindex = this.getBranchIndex(sid);\n\t\t\t\tif (sindex == tindex) return;\n\t\t\t}\n\n\t\t\tif(this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false)\n\t\t\t\treturn;\n\n\t\t\tthis._replace_branch_child(source_pid, sid);\n\t\t\ttbranch = this.getChildren(parent);\n\n\t\t\tvar tid = tbranch[tindex];\n\t\t\tif (!tid) //adding as last element\n\t\t\t\ttbranch.push(sid);\n\t\t\telse\n\t\t\t\ttbranch = tbranch.slice(0, tindex).concat([ sid ]).concat(tbranch.slice(tindex));\n\n\t\t\tthis.setParent(source, parent);\n\t\t\tthis._branches[parent] = tbranch;\n\n\t\t\tvar diff = this.calculateItemLevel(source) - source.$level;\n\t\t\tsource.$level += diff;\n\t\t\tthis.eachItem(function(item){\n\t\t\t\titem.$level += diff;\n\t\t\t}, source.id, this);\n\n\n\t\t\tthis._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n\t\t\tthis.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n\t\t\tthis.refresh();\n\t\t},\n\n\t\tgetBranchIndex: function(id){\n\t\t\tvar branch = this.getChildren(this.getParent(id));\n\t\t\tfor (var i = 0; i < branch.length; i++)\n\t\t\t\tif (branch[i] == id)\n\t\t\t\t\treturn i;\n\n\t\t\treturn -1;\n\t\t},\n\t\thasChild: function(id){\n\t\t\treturn (utils.defined(this._branches[id]) && this._branches[id].length);\n\t\t},\n\t\tgetChildren: function(id){\n\t\t\treturn utils.defined(this._branches[id]) ? this._branches[id] : powerArray.$create();\n\t\t},\n\n\t\tisChildOf: function(childId, parentId){\n\t\t\tif (!this.exists(childId))\n\t\t\t\treturn false;\n\t\t\tif (parentId === this.$getRootId())\n\t\t\t\treturn true;\n\n\t\t\tif (!this.hasChild(parentId))\n\t\t\t\treturn false;\n\n\t\t\tvar item = this.getItem(childId);\n\t\t\tvar pid = this.getParent(childId);\n\n\t\t\tvar parent = this.getItem(parentId);\n\t\t\tif(parent.$level >= item.$level){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twhile (item && this.exists(pid)) {\n\t\t\t\titem = this.getItem(pid);\n\n\t\t\t\tif (item && item.id == parentId)\n\t\t\t\t\treturn true;\n\t\t\t\tpid = this.getParent(item);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tgetSiblings: function(id){\n\t\t\tif(!this.exists(id)){\n\t\t\t\treturn powerArray.$create();\n\t\t\t}\n\t\t\tvar parent = this.getParent(id);\n\t\t\treturn this.getChildren(parent);\n\n\t\t},\n\t\tgetNextSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i+1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetPrevSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i-1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetParent: function(id){\n\t\t\tvar item = null;\n\t\t\tif(id.id !== undefined){\n\t\t\t\titem = id;\n\t\t\t}else{\n\t\t\t\titem = this.getItem(id);\n\t\t\t}\n\n\t\t\tvar parent;\n\t\t\tif(item){\n\t\t\t\tparent = item[this.$parentProperty];\n\t\t\t}else{\n\t\t\t\tparent = this.$getRootId();\n\t\t\t}\n\t\t\treturn parent;\n\n\t\t},\n\n\t\tclearAll: function(){\n\t\t\tthis._branches = {};\n\t\t\tDataStore.prototype.clearAll.call(this);\n\t\t},\n\n\t\tcalculateItemLevel: function(item){\n\t\t\tvar level = 0;\n\t\t\tthis.eachParent(function(){\n\t\t\t\tlevel++;\n\t\t\t}, item);\n\t\t\treturn level;\n\t\t},\n\n\t\t_setParentInner: function(item, new_pid, silent){\n\t\t\tif(!silent){\n\t\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\t\tthis._move_branch(item, item.$rendered_parent, new_pid);\n\t\t\t\t}else{\n\t\t\t\t\tthis._move_branch(item, item[this.$parentProperty], new_pid);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetParent: function(item, new_pid, silent){\n\t\t\tthis._setParentInner(item, new_pid, silent);\n\n\t\t\titem[this.$parentProperty] = new_pid;\n\t\t},\n\t\teachItem: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\n\n\t\t\tvar branch = this.getChildren(parent);\n\t\t\tif (branch)\n\t\t\t\tfor (var i=0; i b[field];\n\t\t\t\treturn result ? 1 : -1;\n\t\t\t}) : field;\n\n\t\t\tif (desc) {\n\t\t\t\tvar original_criteria = criteria;\n\t\t\t\tcriteria = function (a, b) {\n\t\t\t\t\treturn original_criteria(b, a);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar els = this.getChildren(parent);\n\n\t\t\tif (els){\n\t\t\t\tvar temp = [];\n\t\t\t\tfor (var i = els.length - 1; i >= 0; i--)\n\t\t\t\t\ttemp[i] = this.getItem(els[i]);\n\n\t\t\t\ttemp.sort(criteria);\n\n\t\t\t\tfor (var i = 0; i < temp.length; i++) {\n\t\t\t\t\tels[i] = temp[i].id;\n\t\t\t\t\tthis.sort(field, desc, els[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfilter: function(rule){\n\t\t\tfor(var i in this.pull){\n\t\t\t\tif(this.pull[i].$rendered_parent !== this.getParent(this.pull[i])){\n\t\t\t\t\tthis._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn DataStore.prototype.filter.apply(this, arguments);\n\t\t},\n\n\t\topen: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = true;\n\t\t\t\tthis.callEvent(\"onItemOpen\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tclose: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = false;\n\t\t\t\tthis.callEvent(\"onItemClose\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tdestructor: function(){\n\t\t\tDataStore.prototype.destructor.call(this);\n\t\t\tthis._branches = null;\n\t\t}\n\t},\n\tDataStore.prototype\n);\n\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\n\nvar createLinksStoreFacade = function(){\n\treturn {\n\tgetLinkCount: function () {\n\t\treturn this.$data.linksStore.count();\n\t},\n\n\tgetLink : function (id) {\n\t\treturn this.$data.linksStore.getItem(id);\n\t},\n\n\tgetLinks : function () {\n\t\treturn this.$data.linksStore.getItems();\n\t},\n\n\tisLinkExists : function (id) {\n\t\treturn this.$data.linksStore.exists(id);\n\t},\n\n\taddLink : function (link) {\n\t\treturn this.$data.linksStore.addItem(link);\n\t},\n\n\tupdateLink : function (id, data) {\n\t\tif (!utils.defined(data))\n\t\t\tdata = this.getLink(id);\n\t\tthis.$data.linksStore.updateItem(id, data);\n\t},\n\n\tdeleteLink : function (id) {\n\t\treturn this.$data.linksStore.removeItem(id);\n\t},\n\n\tchangeLinkId : function (oldid, newid) {\n\t\treturn this.$data.linksStore.changeId(oldid, newid);\n\t}\n};\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksDatastoreFacade = function(){\n\treturn {\n\tgetTask: function (id) {\n\t\tthis.assert(id, \"Invalid argument for gantt.getTask\");\n\t\tvar task = this.$data.tasksStore.getItem(id);\n\t\tthis.assert(task, \"Task not found id=\" + id);\n\t\treturn task;\n\t},\n\tgetTaskByTime: function (from, to) {\n\t\tvar p = this.$data.tasksStore.getItems();\n\n\t\tvar res = [];\n\n\t\tif (!(from || to)) {\n\t\t\tres = p;\n\t\t} else {\n\t\t\tfrom = +from || -Infinity;\n\t\t\tto = +to || Infinity;\n\t\t\tfor (var t = 0; t < p.length; t++){\n\t\t\t\tvar task = p[t];\n\t\t\t\tif (+task.start_date < to && +task.end_date > from)\n\t\t\t\t\tres.push(task);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\tisTaskExists: function (id) {\n\t\treturn this.$data.tasksStore.exists(id);\n\t},\n\tupdateTask: function (id, item) {\n\t\tif (!utils.defined(item)) item = this.getTask(id);\n\t\tthis.$data.tasksStore.updateItem(id, item);\n\t\tif(this.isTaskExists(id))\n\t\t\tthis.refreshTask(id);\n\t},\n\taddTask: function (item, parent, index) {\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif (!utils.defined(parent)) parent = this.getParent(item) || 0;\n\t\tif (!this.isTaskExists(parent)) parent = this.config.root_id;\n\t\tthis.setParent(item, parent);\n\n\t\treturn this.$data.tasksStore.addItem(item, index, parent);\n\t},\n\tdeleteTask: function (id) {\n\t\treturn this.$data.tasksStore.removeItem(id);\n\t},\n\tgetTaskCount: function () {\n\t\treturn this.$data.tasksStore.count();\n\t},\n\tgetVisibleTaskCount: function () {\n\t\treturn this.$data.tasksStore.countVisible();\n\t},\n\tgetTaskIndex: function (id) {\n\t\treturn this.$data.tasksStore.getBranchIndex(id);\n\t},\n\tgetGlobalTaskIndex: function (id) {\n\t\tthis.assert(id, \"Invalid argument\");\n\t\treturn this.$data.tasksStore.getIndexById(id);\n\t},\n\teachTask: function (code, parent, master) {\n\t\treturn this.$data.tasksStore.eachItem(utils.bind(code, master||this), parent);\n\t},\n\teachParent: function (callback, startTask, master) {\n\t\treturn this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n\t},\n\tchangeTaskId: function (oldid, newid) {\n\t\tthis.$data.tasksStore.changeId(oldid, newid);\n\t\tvar task = this.$data.tasksStore.getItem(newid);\n\n\t\tvar links = [];\n\n\t\tif (task.$source) {\n\t\t\tlinks = links.concat(task.$source);\n\t\t}\n\t\tif (task.$target) {\n\t\t\tlinks = links.concat(task.$target);\n\t\t}\n\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = this.getLink(links[i]);\n\t\t\tif (link.source == oldid) {\n\t\t\t\tlink.source = newid;\n\t\t\t}\n\t\t\tif (link.target == oldid) {\n\t\t\t\tlink.target = newid;\n\t\t\t}\n\t\t}\n\t},\n\tcalculateTaskLevel: function (item) {\n\t\treturn this.$data.tasksStore.calculateItemLevel(item);\n\t},\n\tgetNext: function (id) {\n\t\treturn this.$data.tasksStore.getNext(id);\n\t},\n\tgetPrev: function (id) {\n\t\treturn this.$data.tasksStore.getPrev(id);\n\t},\n\tgetParent: function (id) {\n\t\treturn this.$data.tasksStore.getParent(id);\n\t},\n\tsetParent: function (task, new_pid, silent) {\n\t\treturn this.$data.tasksStore.setParent(task, new_pid, silent);\n\t},\n\tgetSiblings: function (id) {\n\t\treturn this.$data.tasksStore.getSiblings(id).slice();\n\t},\n\tgetNextSibling: function (id) {\n\t\treturn this.$data.tasksStore.getNextSibling(id);\n\t},\n\tgetPrevSibling: function (id) {\n\t\treturn this.$data.tasksStore.getPrevSibling(id);\n\t},\n\tgetTaskByIndex: function(index){\n\t\tvar id = this.$data.tasksStore.getIdByIndex(index);\n\t\tif(this.isTaskExists(id)){\n\t\t\treturn this.getTask(id);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\tgetChildren: function (id) {\n\t\tif(!this.hasChild(id)){\n\t\t\treturn [];\n\t\t}else{\n\t\t\treturn this.$data.tasksStore.getChildren(id).slice();\n\t\t}\n\t},\n\thasChild: function (id) {\n\t\treturn this.$data.tasksStore.hasChild(id);\n\t},\n\topen: function (id) {\n\t\tthis.$data.tasksStore.open(id);\n\t},\n\tclose: function (id) {\n\t\tthis.$data.tasksStore.close(id);\n\t},\n\tmoveTask: function (sid, tindex, parent) {\n\t\tthis.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n\t},\n\tsort: function(field, desc, parent, silent) {\n\t\tvar render = !silent;//4th argument to cancel redraw after sorting\n\n\t\tthis.$data.tasksStore.sort(field, desc, parent);\n\t\tif (render) {\n\t\t\tthis.render();\n\t\t}\n\t\tthis.callEvent(\"onAfterSort\", [field, desc, parent]);\n\t}\n};\n};\n\nmodule.exports = createTasksDatastoreFacade;\n\n\n","var utils = require(\"../../utils/utils\");\nvar createTasksFacade = require(\"./datastore_tasks\"),\n\tcreateLinksFacade = require(\"./datastore_links\"),\n\tDataStore = require(\"../datastore/datastore\"),\n\tTreeDataStore = require(\"../datastore/treedatastore\"),\n\tcreateDatastoreSelect = require(\"../datastore/select\");\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nfunction getDatastores(){\n\tvar storeNames = this.$services.getService(\"datastores\");\n\tvar res = [];\n\tfor(var i = 0; i < storeNames.length; i++){\n\t\tres.push(this.getDatastore(storeNames[i]));\n\t}\n\treturn res;\n}\n\nvar createDatastoreFacade = function(){\n\treturn {\n\tcreateDatastore: function(config){\n\n\t\tvar $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n\t\tif (config) {\n\t\t\tvar self = this;\n\t\t\tconfig.openInitially = function(){ return self.config.open_tree_initially; };\n\t\t}\n\n\t\tvar store = new $StoreType(config);\n\t\tthis.mixin(store, createDatastoreSelect(store));\n\n\t\tif (config.name) {\n\t\t\tvar servicePrefix = \"datastore:\";\n\n\t\t\tthis.$services.dropService(servicePrefix + config.name);\n\t\t\tthis.$services.setService(servicePrefix + config.name, function() { return store; } );\n\n\t\t\tvar storeList = this.$services.getService(\"datastores\");\n\t\t\tif (!storeList) {\n\t\t\t\tstoreList = [];\n\t\t\t\tthis.$services.setService(\"datastores\", function() { return storeList; });\n\t\t\t\tstoreList.push(config.name);\n\t\t\t} else if (storeList.indexOf(config.name) < 0) {\n\t\t\t\tstoreList.push(config.name);\n\t\t\t}\n\n\t\t\tdatastoreRender.bindDataStore(config.name, this);\n\t\t}\n\n\t\treturn store;\n\t},\n\tgetDatastore: function(name){\n\t\treturn this.$services.getService(\"datastore:\" + name);\n\t},\n\n\trefreshData: function () {\n\t\tvar scrollState = this.getScrollState();\n\t\tthis.callEvent(\"onBeforeDataRender\", []);\n\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].refresh();\n\t\t}\n\n\t\tif(scrollState.x || scrollState.y){\n\t\t\tthis.scrollTo(scrollState.x, scrollState.y);\n\t\t}\n\t\tthis.callEvent(\"onDataRender\", []);\n\t},\n\n\tisChildOf: function(childId, parentId){\n\t\treturn this.$data.tasksStore.isChildOf(childId, parentId);\n\t},\n\n\trefreshTask: function (taskId, refresh_links) {\n\t\tvar task = this.getTask(taskId);\n\t\tif (task && this.isTaskVisible(taskId)) {\n\n\t\t\tthis.$data.tasksStore.refresh(taskId, !!this.getState().drag_id);// do quick refresh during drag and drop\n\n\t\t\tif (refresh_links !== undefined && !refresh_links)\n\t\t\t\treturn;\n\t\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\t\tthis.refreshLink(task.$source[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\t\tthis.refreshLink(task.$target[i]);\n\t\t\t}\n\t\t}else if(this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId))){\n\t\t\tthis.refreshTask(this.getParent(taskId));\n\t\t}\n\n\t},\n\trefreshLink: function (linkId) {\n\t\tthis.$data.linksStore.refresh(linkId, !!this.getState().drag_id);// do quick refresh during drag and drop\n\t},\n\n\tsilent: function(code){\n\t\tvar gantt = this;\n\t\tgantt.$data.tasksStore.silent(function(){\n\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\tcode();\n\t\t\t});\n\t\t});\n\t},\n\n\tclearAll: function () {\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].clearAll();\n\t\t}\n\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t\tthis.callEvent(\"onClear\", []);\n\t\tthis.render();\n\t},\n\t_clear_data: function () {\n\t\tthis.$data.tasksStore.clearAll();\n\t\tthis.$data.linksStore.clearAll();\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t},\n\n\tselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tif(!this.config.select_task)\n\t\t\treturn false;\n\t\tif (id){\n\n\t\t\tstore.select(id);\n\t\t}\n\t\treturn store.getSelectedId();\n\t},\n\tunselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tstore.unselect(id);\n\t},\n\tgetSelectedId: function() {\n\t\treturn this.$data.tasksStore.getSelectedId();\n\t}\n};\n};\n\nfunction createFacade(){\n\tvar res = utils.mixin({}, createDatastoreFacade());\n\tutils.mixin(res, createTasksFacade());\n\tutils.mixin(res, createLinksFacade());\n\treturn res;\n}\n\n\n\n\nmodule.exports = {create: createFacade};","var utils = require(\"../../utils/utils\");\nvar facadeFactory = require(\"./../facades/datastore\");\nvar calculateScaleRange = require(\"../gantt_data_range\");\nfunction initDataStores(gantt){\n\n\tvar facade = facadeFactory.create();\n\tutils.mixin(gantt, facade);\n\tvar tasksStore = gantt.createDatastore({\n\t\tname: \"task\",\n\t\ttype: \"treeDatastore\",\n\t\trootId: function(){return gantt.config.root_id;},\n\t\tinitItem: utils.bind(_init_task, gantt)\n\t});\n\n\tvar linksStore = gantt.createDatastore({\n\t\tname: \"link\",\n\t\tinitItem: utils.bind(_init_link, gantt)\n\t});\n\n\ttasksStore.attachEvent(\"onBeforeRefreshAll\", function(){\n\n\t\tvar order = tasksStore.getVisibleItems();\n\n\t\tfor(var i=0; i < order.length; i++){\n\t\t\tvar item = order[i];\n\t\t\titem.$index = i;\n\t\t\tgantt.resetProjectDates(item);\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onFilterItem\", function(id, task){\n\t\tvar min = null, max = null;\n\t\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\t\tif (gantt._isAllowedUnscheduledTask(task)) return true;\n\t\t\tmin = gantt.config.start_date.valueOf();\n\t\t\tmax = gantt.config.end_date.valueOf();\n\n\t\t\tif (+task.start_date > max || +task.end_date < +min)\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\ttasksStore.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\tgantt._update_flags(oldId, newId);\n\t});\n\n\ttasksStore.attachEvent(\"onAfterUpdate\", function(id){\n\t\tgantt._update_parents(id);\n\t\tif(gantt.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar task = tasksStore.getItem(id);\n\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\tlinksStore.refresh(task.$source[i]);\n\t\t}\n\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\tlinksStore.refresh(task.$target[i]);\n\t\t}\n\t});\n\n\ttasksStore.attachEvent(\"onAfterItemMove\", function(sid, parent, tindex){\n\t\tvar source = gantt.getTask(sid);\n\n\t\tif(this.getNextSibling(sid) !== null){\n\t\t\tsource.$drop_target = this.getNextSibling(sid);\n\t\t} else if(this.getPrevSibling(sid) !== null){\n\t\t\tsource.$drop_target = \"next:\" + this.getPrevSibling(sid);\n\t\t}else{\n\t\t\tsource.$drop_target = \"next:null\";\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(action == \"delete\"){\n\t\t\tgantt._update_flags(id, null);\n\t\t}\n\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn;\n\t\t}\n\n\t\tif(gantt.config.fit_tasks && action !== \"paint\"){\n\t\t\tvar oldState = gantt.getState();\n\t\t\tcalculateScaleRange(gantt);\n\t\t\tvar newState = gantt.getState();\n\n\t\t\t//this._init_tasks_range();\n\t\t\tif (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n\t\t\t\tgantt.render();\n\n\t\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\tif(action == \"add\" || action == \"move\" || action == \"delete\"){\n\t\t\tgantt.$layout.resize();\n\t\t}else if(!id){\n\t\t\tlinksStore.refresh();\n\t\t}\n\n\t});\n\n\tlinksStore.attachEvent(\"onAfterAdd\", function(id, link){\n\t\tsync_link(link);\n\t});\n\tlinksStore.attachEvent(\"onAfterUpdate\", function(id, link){\n\t\tsync_links();\n\t});\n\tlinksStore.attachEvent(\"onAfterDelete\", function(id, link){\n\t\tsync_link_delete(link);\n\t});\n\tlinksStore.attachEvent(\"onBeforeIdChange\", function(oldId, newId){\n\t\tsync_link_delete(gantt.mixin({id:oldId}, gantt.$data.linksStore.getItem(newId)));\n\t\tsync_link(gantt.$data.linksStore.getItem(newId));\n\t});\n\n\tfunction checkLinkedTaskVisibility(taskId){\n\t\tvar isVisible = gantt.isTaskVisible(taskId);\n\t\tif(!isVisible && gantt.isTaskExists(taskId)){\n\t\t\tvar parent = gantt.getParent(taskId);\n\t\t\tif(gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)){\n\t\t\t\tparent = gantt.getTask(parent);\n\t\t\t\tif(gantt.isSplitTask(parent)){\n\t\t\t\t\tisVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isVisible;\n\t}\n\n\tlinksStore.attachEvent(\"onFilterItem\", function(id, link){\n\t\tif (!gantt.config.show_links) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar sourceVisible = checkLinkedTaskVisibility(link.source);\n\t\tvar targetVisible = checkLinkedTaskVisibility(link.target);\n\n\t\tif (!(sourceVisible && targetVisible) ||\n\t\t\tgantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target)))\n\t\t\treturn false;\n\n\t\treturn gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n\t});\n\n\n\t(function(){\n\t\t// delete all connected links after task is deleted\n\t\tvar treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tvar deletedLinks = {};\n\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", function(id, item){\n\t\t\tdeletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", function(id, item) {\n\t\t\tif(deletedLinks[id]){\n\t\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\t\tfor(var i in deletedLinks[id]){\n\t\t\t\t\t\tgantt.$data.linksStore.removeItem(i);\n\t\t\t\t\t\tsync_link_delete(deletedLinks[id][i]);\n\t\t\t\t\t}\n\n\t\t\t\t\tdeletedLinks[id] = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t})();\n\n\tgantt.attachEvent(\"onAfterLinkDelete\", function(id, link) {\n\t\tgantt.refreshTask(link.source);\n\t\tgantt.refreshTask(link.target);\n\t});\n\n\tgantt.attachEvent(\"onParse\", sync_links);\n\n\tmapEvents({\n\t\tsource: linksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onLinkLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeLinkAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterLinkAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeLinkUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterLinkUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeLinkDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterLinkDelete\",\n\t\t\t\"onIdChange\":\"onLinkIdChange\"\n\t\t}\n\t});\n\n\tmapEvents({\n\t\tsource: tasksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onTaskLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeTaskAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterTaskAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeTaskUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterTaskUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeTaskDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterTaskDelete\",\n\t\t\t\"onIdChange\":\"onTaskIdChange\",\n\t\t\t\"onBeforeItemMove\":\"onBeforeTaskMove\",\n\t\t\t\"onAfterItemMove\":\"onAfterTaskMove\",\n\t\t\t\"onFilterItem\":\"onBeforeTaskDisplay\",\n\t\t\t\"onItemOpen\":\"onTaskOpened\",\n\t\t\t\"onItemClose\":\"onTaskClosed\",\n\t\t\t\"onBeforeSelect\":\"onBeforeTaskSelected\",\n\t\t\t\"onAfterSelect\":\"onTaskSelected\",\n\t\t\t\"onAfterUnselect\":\"onTaskUnselected\"\n\t\t}\n\t});\n\n\tgantt.$data = {\n\t\ttasksStore: tasksStore,\n\t\tlinksStore: linksStore\n\t};\n\n\tfunction sync_link(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tsourceTask.$source = sourceTask.$source || [];\n\t\t\tsourceTask.$source.push(link.id);\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\ttargetTask.$target = targetTask.$target || [];\n\t\t\ttargetTask.$target.push(link.id);\n\t\t}\n\t}\n\n\tfunction sync_link_delete(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tfor(var i = 0; i < sourceTask.$source.length; i++){\n\t\t\t\tif(sourceTask.$source[i] == link.id){\n\t\t\t\t\tsourceTask.$source.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\tfor(var i = 0; i < targetTask.$target.length; i++){\n\t\t\t\tif(targetTask.$target[i] == link.id){\n\t\t\t\t\ttargetTask.$target.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction sync_links() {\n\t\tvar task = null;\n\t\tvar tasks = gantt.$data.tasksStore.getItems();\n\n\t\tfor(var i = 0, len = tasks.length; i < len; i++){\n\t\t\ttask = tasks[i];\n\t\t\ttask.$source = [];\n\t\t\ttask.$target = [];\n\t\t}\n\n\t\tvar links = gantt.$data.linksStore.getItems();\n\t\tfor (var i = 0, len = links.length; i < len; i++) {\n\n\t\t\tvar link = links[i];\n\t\t\tsync_link(link);\n\t\t}\n\t}\n\n\tfunction mapEvents(conf){\n\t\tvar mapFrom = conf.source;\n\t\tvar mapTo = conf.target;\n\t\tfor(var i in conf.events){\n\t\t\t(function(sourceEvent, targetEvent){\n\t\t\t\tmapFrom.attachEvent(sourceEvent, function(){\n\t\t\t\t\treturn mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n\t\t\t\t}, targetEvent);\n\t\t\t})(i, conf.events[i]);\n\t\t}\n\t}\n\n\tfunction _init_task(task) {\n\t\tif (!this.defined(task.id))\n\t\t\ttask.id = this.uid();\n\n\t\tif (task.start_date)\n\t\t\ttask.start_date = gantt.date.parseDate(task.start_date, \"xml_date\");\n\t\tif (task.end_date)\n\t\t\ttask.end_date = gantt.date.parseDate(task.end_date, \"xml_date\");\n\n\n\t\tvar duration = null;\n\t\tif (task.duration || task.duration === 0) {\n\t\t\ttask.duration = duration = task.duration * 1;\n\t\t}\n\n\t\tif (duration) {\n\t\t\tif (task.start_date && !task.end_date) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!task.start_date && task.end_date) {\n\t\t\t\ttask.start_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\tduration: -task.duration,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\ttask.progress = Number(task.progress) || 0;\n\n\t\tif (this._isAllowedUnscheduledTask(task)) {\n\t\t\tthis._set_default_task_timing(task);\n\t\t}\n\t\tthis._init_task_timing(task);\n\t\tif (task.start_date && task.end_date)\n\t\t\tthis.correctTaskWorkTime(task);\n\n\t\ttask.$source = [];\n\t\ttask.$target = [];\n\t\tif (task.parent === undefined) {\n\t\t\tthis.setParent(task, this.config.root_id);\n\t\t}\n\n\t\treturn task;\n\t}\n\n\tfunction _init_link(link) {\n\t\tif (!this.defined(link.id))\n\t\t\tlink.id = this.uid();\n\t\treturn link;\n\t}\n}\n\n\nmodule.exports = initDataStores;\n","function createLayoutFacade(){\n\n\tfunction getTimeline(gantt){\n\t\treturn gantt.$ui.getView(\"timeline\");\n\t}\n\n\tfunction getGrid(gantt){\n\t\treturn gantt.$ui.getView(\"grid\");\n\t}\n\n\tfunction getVerticalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t}\n\n\tfunction getHorizontalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t}\n\n\tvar DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n\tfunction tryCall(getView, method, args, fallback){\n\t\tvar view = getView(this);\n\t\tif (!(view && view.isVisible())) {\n\t\t\tif(fallback){\n\t\t\t\treturn fallback();\n\t\t\t}else{\n\t\t\t\treturn DEFAULT_VALUE;\n\t\t\t}\n\t\t} else {\n\t\t\treturn view[method].apply(view, args);\n\t\t}\n\t}\n\n\treturn {\n\n\t\tgetColumnIndex: function(name) {\n\t\t\tvar res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tdateFromPos: function(x) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn this.getState().min_date;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tposFromDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetRowTop: function(index) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getRowTop\", [index],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getRowTop\", [index]);}\n\t\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskTop: function(id) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemTop\", [id],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemTop\", [id]);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tgetTaskPosition: function(task, start_date, end_date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\tvar top = this.getTaskTop(task.id);\n\t\t\t\tvar height = this.getTaskHeight();\n\n\t\t\t\treturn {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: top,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: 0\n\t\t\t\t};\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskHeight: function() {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemHeight\", [],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemHeight\", []);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tcolumnIndexByDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\troundTaskDates: function() {\n\t\t\ttryCall.call(this, getTimeline, \"roundTaskDates\", []);\n\t\t},\n\n\t\tgetScale: function() {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getScale\", []);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline || !timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn timeline._taskRenderer.rendered[id];\n\t\t\t}\n\t\t},\n\n\n\t\tgetLinkNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn timeline._linkRenderer.rendered[id];\n\t\t\t}\n\t\t},\n\n\t\tscrollTo: function(left, top){\n\t\t\tvar vertical = getVerticalScrollbar(this);\n\t\t\tvar horizontal = getHorizontalScrollbar(this);\n\n\t\t\tvar oldH = {position: 0},\n\t\t\t\toldV = {position: 0};\n\n\t\t\tif(vertical){\n\t\t\t\toldV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\toldH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tif (horizontal && left*1 == left){\n\t\t\t\thorizontal.scroll(left);\n\t\t\t}\n\t\t\tif(vertical && top*1 == top){\n\t\t\t\tvertical.scroll(top);\n\t\t\t}\n\n\t\t\tvar newV = {position: 0},\n\t\t\t\tnewH = {position: 0};\n\t\t\tif(vertical){\n\t\t\t\tnewV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\tnewH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n\t\t},\n\n\t\tshowDate: function(date){\n\t\t\tvar date_x = this.posFromDate(date);\n\t\t\tvar scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n\t\t\tthis.scrollTo(scroll_to);\n\t\t},\n\t\tshowTask: function(id) {\n\t\t\tvar pos = this.getTaskPosition(this.getTask(id));\n\n\t\t\tvar left = Math.max(pos.left - this.config.task_scroll_offset, 0);\n\n\t\t\tvar dataHeight = this._scroll_state().y;\n\t\t\tvar top;\n\t\t\tif(!dataHeight){\n\t\t\t\ttop = pos.top;\n\t\t\t}else{\n\t\t\t\ttop = pos.top - (dataHeight - this.config.row_height)/2;\n\t\t\t}\n\n\t\t\tthis.scrollTo(left, top);\n\t\t},\n\t\t_scroll_state: function(){\n\t\t\tvar result = {\n\t\t\t\tx: false,\n\t\t\t\ty: false,\n\t\t\t\tx_pos: 0,\n\t\t\t\ty_pos: 0,\n\t\t\t\tscroll_size: this.config.scroll_size + 1,//1px for inner content\n\t\t\t\tx_inner: 0,\n\t\t\t\ty_inner: 0\n\t\t\t};\n\n\t\t\tvar scrollVer = getVerticalScrollbar(this),\n\t\t\t\tscrollHor = getHorizontalScrollbar(this);\n\t\t\tif(scrollHor){\n\t\t\t\tvar horState = scrollHor.getScrollState();\n\t\t\t\tif(horState.visible){\n\t\t\t\t\tresult.x = horState.size;\n\t\t\t\t\tresult.x_inner = horState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.x_pos = horState.position || 0;\n\t\t\t}\n\n\t\t\tif(scrollVer){\n\t\t\t\tvar verState = scrollVer.getScrollState();\n\t\t\t\tif(verState.visible){\n\t\t\t\t\tresult.y = verState.size;\n\n\t\t\t\t\tresult.y_inner = verState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.y_pos = verState.position || 0;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\tgetScrollState: function(){\n\t\t\tvar state = this._scroll_state();\n\t\t\treturn { x:state.x_pos, y:state.y_pos, inner_width:state.x, inner_height:state.y, width: state.x_inner, height: state.y_inner };\n\t\t}\n\n\t};\n\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function(gantt) {\n\tdelete gantt.addTaskLayer;\n\tdelete gantt.addLinkLayer;\n};","var domHelpers = require(\"../../utils/dom_helpers\");\n\nvar initializer = (function() {\n\treturn function (gantt) {\n\t\treturn {\n\n\t\t\tgetVerticalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t\t\t},\n\t\t\tgetHorizontalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t\t\t},\n\n\t\t\t_legacyGridResizerClass: function(layout){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar r = resizers[i];\n\t\t\t\t\tvar gridResizer = false;\n\n\t\t\t\t\tvar prev = r.$parent.getPrevSibling(r.$id);\n\t\t\t\t\tif(prev && prev.$config && prev.$config.id === \"grid\"){\n\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar next = r.$parent.getNextSibling(r.$id);\n\t\t\t\t\t\tif(next && next.$config && next.$config.id === \"grid\"){\n\t\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(gridResizer){\n\t\t\t\t\t\tr.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCreated: function(layout) {\n\t\t\t\tvar first = true;\n\n\t\t\t\tthis._legacyGridResizerClass(layout);\n\n\t\t\t\tlayout.attachEvent(\"onBeforeResize\", function() {\n\t\t\t\t\tvar mainTimeline = gantt.$ui.getView(\"timeline\");\n\t\t\t\t\tif (mainTimeline)\n\t\t\t\t\t\tmainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n\n\t\t\t\t\tvar mainGrid = gantt.$ui.getView(\"grid\");\n\n\t\t\t\t\tif(!mainGrid)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar showGrid = gantt.config.show_grid;\n\t\t\t\t\tif (first) {\n\t\t\t\t\t\tvar colsWidth = mainGrid._getColsTotalWidth();\n\t\t\t\t\t\tif (colsWidth !== false){\n\t\t\t\t\t\t\tgantt.config.grid_width = colsWidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowGrid = showGrid && !!gantt.config.grid_width;\n\t\t\t\t\t\tgantt.config.show_grid = showGrid;\n\t\t\t\t\t}\n\t\t\t\t\tmainGrid.$config.hidden = mainGrid.$parent.$config.hidden = !showGrid;\n\n\t\t\t\t\tif (!mainGrid.$config.hidden) {\n\t\t\t\t\t\t/* restrict grid width due to min_width, max_width, min_grid_column_width */\n\t\t\t\t\t\tvar grid_limits = mainGrid._getGridWidthLimits();\n\t\t\t\t\t\tif (grid_limits[0] && gantt.config.grid_width < grid_limits[0])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[0];\n\t\t\t\t\t\tif (grid_limits[1] && gantt.config.grid_width > grid_limits[1])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[1];\n\t\t\t\t\t\tif (mainTimeline && gantt.config.show_chart){\n\n\t\t\t\t\t\t\tmainGrid.$config.width = gantt.config.grid_width - 1;\n\t\t\t\t\t\t\tif (!first) {\n\t\t\t\t\t\t\t\tif (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n\t\t\t\t\t\t\t\t\t// timeline is being displayed after being not visible, reset grid with from full screen\n\t\t\t\t\t\t\t\t\tif (!mainGrid.$config.original_grid_width) {\n\t\t\t\t\t\t\t\t\t\tvar skinSettings = gantt.skins[gantt.skin];\n\t\t\t\t\t\t\t\t\t\tif(skinSettings && skinSettings.config && skinSettings.config.grid_width){\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n\t\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgantt.config.grid_width = mainGrid.$config.original_grid_width;\n\t\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmainGrid.$parent._setContentSize(mainGrid.$config.width, mainGrid.$config.height);\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, gantt.config.grid_width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\tif (mainGrid.$parent.$config.group) {\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, mainGrid.$parent.$config.width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n\t\t\t\t\t\t\t\t// hiding timeline, remember grid with to restore it when timeline is displayed again\n\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = gantt.config.grid_width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!first) {\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfirst = false;\n\t\t\t\t});\n\t\t\t\tthis._initScrollStateEvents(layout);\n\t\t\t},\n\n\t\t\t_initScrollStateEvents: function(layout) {\n\t\t\t\tgantt._getVerticalScrollbar = this.getVerticalScrollbar;\n\t\t\t\tgantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n\n\t\t\t\tvar vertical = this.getVerticalScrollbar();\n\t\t\t\tvar horizontal = this.getHorizontalScrollbar();\n\t\t\t\tif (vertical) {\n\t\t\t\t\tvertical.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (horizontal) {\n\t\t\t\t\thorizontal.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tlayout.attachEvent(\"onResize\", function(){\n\t\t\t\t\tif (vertical && !gantt.$scroll_ver){\n\t\t\t\t\t\tgantt.$scroll_ver = vertical.$scroll_ver;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (horizontal && !gantt.$scroll_hor){\n\t\t\t\t\t\tgantt.$scroll_hor = horizontal.$scroll_hor;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_findGridResizer: function(layout, grid){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\n\t\t\t\tvar gridFirst = true;\n\t\t\t\tvar gridResizer;\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar res = resizers[i];\n\t\t\t\t\tres._getSiblings();\n\t\t\t\t\tvar prev = res._behind;\n\t\t\t\t\tvar next = res._front;\n\t\t\t\t\tif(prev && prev.$content === grid || (prev.isChild && prev.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}else if(next && next.$content === grid || (next.isChild && next.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tresizer: gridResizer,\n\t\t\t\t\tgridFirst: gridFirst\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tonInitialized: function (layout) {\n\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\n\t\t\t\tvar resizeInfo = this._findGridResizer(layout, grid);\n\n\t\t\t\t// expose grid resize events\n\t\t\t\tif(resizeInfo.resizer){\n\t\t\t\t\tvar gridFirst = resizeInfo.gridFirst,\n\t\t\t\t\t\tnext = resizeInfo.resizer;\n\t\t\t\t\tvar initialWidth;\n\t\t\t\t\tnext.attachEvent(\"onResizeStart\", function(prevCellWidth, nextCellWidth){\n\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tvar limits = grid._getGridWidthLimits();\n\n\t\t\t\t\t\t\t// min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\t\t\t\t\t\t\tif(!grid.$config.scrollable)\n\t\t\t\t\t\t\t\tviewCell.$config.minWidth = limits[0];\n\n\t\t\t\t\t\t\tviewCell.$config.maxWidth = limits[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinitialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResize\", function(newBehindSize, newFrontSize){\n\t\t\t\t\t\tvar newSize = gridFirst ? newBehindSize : newFrontSize;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResizeEnd\", function(oldBackSize, oldFrontSize, newBackSize, newFrontSize){\n\n\t\t\t\t\t\tvar oldSize = gridFirst ? oldBackSize : oldFrontSize;\n\t\t\t\t\t\tvar newSize = gridFirst ? newBackSize : newFrontSize;\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tviewCell.$config.minWidth = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\t\t\t\t\t\tif(res){\n\t\t\t\t\t\t\tgantt.config.grid_width = newSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\n\t\t\t}\n\t\t};\n\n\t};\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../../utils/dom_helpers\");\n\nvar initLinksDND = function(timeline, gantt) {\n\tvar _link_landing,\n\t\t_link_target_task,\n\t\t_link_target_task_start,\n\t\t_link_source_task,\n\t\t_link_source_task_start;\n\n\n\tfunction getVisibleMilestoneWidth() {\n\t\tvar origWidth = timeline.getItemHeight();//m-s have square shape\n\t\treturn Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n\t}\n\n\tfunction isMilestone(task) {\n\t\treturn gantt.getTaskType(task.type) == gantt.config.types.milestone;\n\t}\n\n\tfunction getDndState(){\n\t\treturn {\n\t\t\tlink_source_id : _link_source_task,\n\t\t\tlink_target_id : _link_target_task,\n\t\t\tlink_from_start : _link_source_task_start,\n\t\t\tlink_to_start : _link_target_task_start,\n\t\t\tlink_landing_area : _link_landing\n\t\t};\n\t}\n\n\tvar services = gantt.$services;\n\n\tvar state = services.getService(\"state\");\n\tvar DnD = services.getService(\"dnd\");\n\n\tstate.registerProvider(\"linksDnD\", getDndState);\n\n\tvar dnd = new DnD(timeline.$task_bars, { sensitivity : 0, updates_per_second : 60 }),\n\t\tstart_marker = \"task_start_date\",\n\t\tend_marker = \"task_end_date\",\n\t\tlink_edge_marker = \"gantt_link_point\",\n\t\tlink_landing_hover_area = \"gantt_link_control\";\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function(obj,e) {\n\t\tvar target = (e.target||e.srcElement);\n\t\tresetDndState();\n\t\tif(gantt.getState().drag_id)\n\t\t\treturn false;\n\n\t\tif(domHelpers.locateClassName(target, link_edge_marker)){\n\t\t\tif(domHelpers.locateClassName(target, start_marker))\n\t\t\t\t_link_source_task_start = true;\n\n\t\t\tvar sid = gantt.locate(e);\n\t\t\t_link_source_task = sid;\n\n\t\t\tvar t = gantt.getTask(sid);\n\t\t\tif(gantt.isReadonly(t)){\n\t\t\t\tresetDndState();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar shift = 0;\n\n\t\t\tthis._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\n\t}, this));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function(obj,e) {\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\tupdateMarkedHtml(dnd.config.marker);\n\t}, this));\n\n\tfunction getLinePos(task, to_start, shift, cfg, isStart){\n\t\tvar taskPos = getMilestonePosition(task, function(task){ return gantt.getTaskPosition(task);}, cfg);\n\n\t\tvar pos = {x: taskPos.x, y: taskPos.y};\n\t\tif(!to_start){\n\t\t\tpos.x = taskPos.xEnd;\n\t\t}\n\n\t\t//var pos = gantt._get_task_pos(task, !!to_start);\n\t\tpos.y += gantt.config.row_height/2;\n\n\t\tvar offset = isMilestone(task) && isStart ? 2 : 0;\n\n\t\tshift = shift || 0;\n\t\tif(cfg.rtl)\n\t\t\tshift = shift * -1;\n\n\t\tpos.x += (to_start ? -1 : 1)*shift - offset;\n\t\treturn pos;\n\t}\n\n\tfunction getMilestonePosition(task, getTaskPosition, cfg){\n\t\tvar pos = getTaskPosition(task);\n\n\t\tvar res = {\n\t\t\tx: pos.left,\n\t\t\ty: pos.top,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height\n\t\t};\n\n\t\tif(cfg.rtl){\n\t\t\tres.xEnd = res.x;\n\t\t\tres.x = res.xEnd + res.width;\n\t\t}else{\n\t\t\tres.xEnd = res.x + res.width;\n\t\t}\n\t\tres.yEnd = res.y + res.height;\n\n\t\tif(gantt.getTaskType(task.type) == gantt.config.types.milestone){\n\t\t\tvar milestoneWidth = getVisibleMilestoneWidth();\n\n\t\t\tres.x += (!cfg.rtl ? -1 : 1)*(milestoneWidth / 2);\n\t\t\tres.xEnd += (!cfg.rtl ? 1 : -1)*(milestoneWidth / 2);\n\n\t\t\t//pos.x -= milestoneWidth / 2;\n\t\t\t//pos.xEnd += milestoneWidth / 2;\n\t\t\tres.width = pos.xEnd - pos.x;\n\t\t}\n\n\n\t\treturn res;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function(obj,e) {\n\t\tvar dd = dnd.config;\n\t\tvar pos = dnd.getPosition(e);\n\t\tadvanceMarker(dd.marker, pos);\n\t\tvar landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n\n\t\tvar prevTarget = _link_target_task;\n\t\tvar prevLanding = _link_landing;\n\t\tvar prevToStart = _link_target_task_start;\n\n\t\tvar targ = gantt.locate(e),\n\t\t\tto_start = true;\n\t\t\n\t\t// can drag and drop link to another gantt on the page, such links are not supported\n\t\tvar sameGantt = domHelpers.isChildOf(e.target || e.srcElement, gantt.$root);\n\t\tif(!sameGantt){\n\t\t\tlanding = false;\n\t\t\ttarg = null;\n\t\t}\n\n\t\tif(landing){\n\t\t\t//refreshTask\n\t\t\tto_start = !domHelpers.locateClassName(e, end_marker);\n\t\t\tlanding = !!targ;\n\t\t}\n\n\t\t_link_target_task = targ;\n\t\t_link_landing = landing;\n\t\t_link_target_task_start = to_start;\n\n\t\tif(landing){\n\t\t\tvar t = gantt.getTask(targ);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar node = domHelpers.locateClassName(e, link_landing_hover_area);\n\t\t\tvar shift = 0;\n\t\t\tif(node){\n\t\t\t\tshift = Math.floor(node.offsetWidth / 2);\n\t\t\t}\n\n\t\t\tthis._dir_end = getLinePos(t, !!_link_target_task_start,shift, config);\n\t\t}else{\n\t\t\tthis._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t}\n\n\t\tvar targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\t\tif(targetChanged){\n\t\t\tif(prevTarget)\n\t\t\t\tgantt.refreshTask(prevTarget, false);\n\t\t\tif(targ)\n\t\t\t\tgantt.refreshTask(targ, false);\n\t\t}\n\n\t\tif(targetChanged){\n\t\t\tupdateMarkedHtml(dd.marker);\n\t\t}\n\n\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n\n\t\treturn true;\n\t}, this));\n\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function() {\n\t\tvar drag = getDndState();\n\n\t\tif(drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id){\n\t\t\tvar type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n\t\t\tvar link = {source : drag.link_source_id, target: drag.link_target_id, type:type};\n\t\t\tif(link.type && gantt.isLinkAllowed(link))\n\t\t\t\tgantt.addLink(link);\n\t\t}\n\n\t\tresetDndState();\n\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\telse {\n\t\t\tif (drag.link_source_id)\n\t\t\t\tgantt.refreshTask(drag.link_source_id, false);\n\t\t\tif (drag.link_target_id)\n\t\t\t\tgantt.refreshTask(drag.link_target_id, false);\n\t\t}\n\t\tremoveDirectionLine();\n\t}, this));\n\n\tfunction updateMarkedHtml(marker){\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_tooltip\"];\n\t\tif(link.link_source_id && link.link_target_id){\n\t\t\tif(gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)){\n\t\t\t\tcss.push(\"gantt_allowed_link\");\n\t\t\t}else{\n\t\t\t\tcss.push(\"gantt_invalid_link\");\n\t\t\t}\n\t\t}\n\n\t\tvar className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n\t\tif(className)\n\t\t\tcss.push(className);\n\n\t\tvar html = \"
\" +\n\t\t\tgantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) +\n\t\t\t\"
\";\n\t\tmarker.innerHTML = html;\n\t}\n\n\tfunction advanceMarker(marker, pos){\n\t\tmarker.style.left = pos.x + 5 + \"px\";\n\t\tmarker.style.top = pos.y + 5 + \"px\";\n\t}\n\n\tfunction resetDndState(){\n\t\t_link_source_task =\n\t\t\t_link_source_task_start =\n\t\t\t\t_link_target_task = null;\n\t\t_link_target_task_start = true;\n\t}\n\tfunction showDirectingLine(s_x, s_y, e_x, e_y){\n\t\tvar div = getDirectionLine();\n\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_direction\"];\n\t\tif(gantt.templates.link_direction_class){\n\t\t\tcss.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n\t\t}\n\n\t\tvar dist =Math.sqrt( (Math.pow(e_x - s_x, 2)) + (Math.pow(e_y - s_y, 2)) );\n\t\tdist = Math.max(0, dist - 3);\n\t\tif(!dist)\n\t\t\treturn;\n\n\t\tdiv.className = css.join(\" \");\n\t\tvar tan = (e_y - s_y)/(e_x - s_x),\n\t\t\tangle = Math.atan(tan);\n\n\t\tif(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2){\n\t\t\tangle += Math.PI;\n\t\t}else if(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3){\n\t\t\tangle -= Math.PI;\n\t\t}\n\n\n\n\t\tvar sin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle),\n\t\t\ttop = Math.round(s_y),\n\t\t\tleft = Math.round(s_x);\n\n\n\t\tvar style = [\n\t\t\t\"-webkit-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-moz-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-ms-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-o-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"width:\" + Math.round(dist) + \"px\"\n\t\t];\n\n\t\tif(window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1){\n\t\t\t//ms-filter breaks styles in ie9, so add it only for 8th\n\t\t\tstyle.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n\n\t\t\tvar shiftLeft = Math.abs(Math.round(s_x - e_x)),\n\t\t\t\tshiftTop = Math.abs(Math.round(e_y - s_y));\n\t\t\t//fix rotation axis\n\t\t\tswitch(coordinateCircleQuarter(s_x, e_x, s_y, e_y)){\n\t\t\t\tcase 1:\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\tstyle.push(\"top:\" + top + \"px\");\n\t\tstyle.push(\"left:\" + left + \"px\");\n\n\t\tdiv.style.cssText = style.join(\";\");\n\t}\n\n\tfunction ieTransform(sin, cos){\n\t\treturn \"progid:DXImageTransform.Microsoft.Matrix(\"+\n\t\t\t\"M11 = \"+cos+\",\"+\n\t\t\t\"M12 = -\"+sin+\",\"+\n\t\t\t\"M21 = \"+sin+\",\"+\n\t\t\t\"M22 = \"+cos+\",\"+\n\t\t\t\"SizingMethod = 'auto expand'\"+\n\t\t\")\";\n\t}\n\tfunction coordinateCircleQuarter(sX, eX, sY, eY){\n\t\tif(eX >= sX){\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 1;\n\t\t\t}else{\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t}else{\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 2;\n\t\t\t}else{\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t}\n\n\t}\n\tfunction getDirectionLine(){\n\t\tif(!dnd._direction){\n\t\t\tdnd._direction = document.createElement(\"div\");\n\t\t\ttimeline.$task_links.appendChild(dnd._direction);\n\t\t}\n\t\treturn dnd._direction;\n\t}\n\tfunction removeDirectionLine(){\n\t\tif(dnd._direction){\n\t\t\tif (dnd._direction.parentNode)\t//the event line can be detached because of data refresh\n\t\t\t\tdnd._direction.parentNode.removeChild(dnd._direction);\n\n\t\t\tdnd._direction = null;\n\t\t}\n\t}\n};\n\nmodule.exports = {\n\tcreateLinkDND: function(){\n\t\treturn {\n\t\t\tinit: initLinksDND\n\t\t};\n\t}\n};","var domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\");\nvar timeout = require(\"../../../utils/timeout\");\n\nfunction createTaskDND(timeline, gantt){\n\tvar services = gantt.$services;\n\treturn {\n\t\tdrag: null,\n\t\tdragMultiple: {},\n\t\t_events: {\n\t\t\tbefore_start: {},\n\t\t\tbefore_finish: {},\n\t\t\tafter_finish: {}\n\t\t},\n\t\t_handlers: {},\n\t\tinit: function () {\n\t\t\tthis._domEvents = gantt._createDomEventScope();\n\t\t\tthis.clear_drag_state();\n\t\t\tvar drag = gantt.config.drag_mode;\n\t\t\tthis.set_actions();\n\n\t\t\tvar stateService = services.getService(\"state\");\n\t\t\tstateService.registerProvider(\"tasksDnd\", utils.bind(function(){\n\t\t\t\treturn {\n\t\t\t\t\tdrag_id : this.drag ? this.drag.id : undefined,\n\t\t\t\t\tdrag_mode : this.drag ? this.drag.mode : undefined,\n\t\t\t\t\tdrag_from_start : this.drag ? this.drag.left : undefined\n\t\t\t\t};\n\t\t\t}, this));\n\n\t\t\tvar evs = {\n\t\t\t\t\"before_start\": \"onBeforeTaskDrag\",\n\t\t\t\t\"before_finish\": \"onBeforeTaskChanged\",\n\t\t\t\t\"after_finish\": \"onAfterTaskDrag\"\n\t\t\t};\n\t\t\t//for now, all drag operations will trigger the same events\n\t\t\tfor (var stage in this._events) {\n\t\t\t\tfor (var mode in drag) {\n\t\t\t\t\tthis._events[stage][mode] = evs[stage];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._handlers[drag.move] = this._move;\n\t\t\tthis._handlers[drag.resize] = this._resize;\n\t\t\tthis._handlers[drag.progress] = this._resize_progress;\n\t\t},\n\t\tset_actions: function () {\n\t\t\tvar data = timeline.$task_data;\n\t\t\tthis._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_move(e || event);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_down(e || event);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(data, \"mouseup\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_up(e || event);\n\t\t\t}, this));\n\t\t},\n\n\t\tclear_drag_state: function () {\n\t\t\tthis.drag = {\n\t\t\t\tid: null,\n\t\t\t\tmode: null,\n\t\t\t\tpos: null,\n\t\t\t\tstart_x: null,\n\t\t\t\tstart_y: null,\n\t\t\t\tobj: null,\n\t\t\t\tleft: null\n\t\t\t};\n\t\t\tthis.dragMultiple = {};\n\t\t},\n\t\t_resize: function (ev, shift, drag) {\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\tif (drag.left) {\n\t\t\t\tev.start_date = gantt.dateFromPos(coords_x.start + shift);\n\t\t\t\tif (!ev.start_date) {\n\t\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tev.end_date = gantt.dateFromPos(coords_x.end + shift);\n\t\t\t\tif (!ev.end_date) {\n\t\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ev.end_date - ev.start_date < cfg.min_duration) {\n\t\t\t\tif (drag.left)\n\t\t\t\t\tev.start_date = gantt.calculateEndDate({start_date: ev.end_date, duration: -1, task: ev});\n\t\t\t\telse\n\t\t\t\t\tev.end_date = gantt.calculateEndDate({start_date: ev.start_date, duration: 1, task: ev});\n\t\t\t}\n\t\t\tgantt._init_task_timing(ev);\n\t\t},\n\t\t_resize_progress: function (ev, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar diffValue = !config.rtl ? (drag.pos.x - coords_x.start) : (coords_x.start - drag.pos.x);\n\n\t\t\tvar diff = Math.max(0, diffValue);\n\t\t\tev.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n\t\t},\n\n\t\t_find_max_shift: function(dragItems, shift){\n\t\t\tvar correctShift;\n\t\t\tfor(var i in dragItems){\n\t\t\t\tvar drag = dragItems[i];\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\n\t\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\t\tvar minX = gantt.posFromDate( new Date(gantt.getState().min_date)),\n\t\t\t\t\tmaxX = gantt.posFromDate( new Date(gantt.getState().max_date));\n\n\t\t\t\tif(coords_x.end + shift > maxX){\n\t\t\t\t\tvar maxShift = maxX - coords_x.end;\n\t\t\t\t\tif(maxShift < correctShift || correctShift === undefined){\n\t\t\t\t\t\tcorrectShift = maxShift;\n\t\t\t\t\t}\n\t\t\t\t}else if(coords_x.start + shift < minX){\n\t\t\t\t\tvar minShift = minX - coords_x.start;\n\t\t\t\t\tif(minShift < correctShift || correctShift === undefined){\n\t\t\t\t\t\tcorrectShift = minShift;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn correctShift;\n\t\t},\n\t\t_move: function (ev, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\tvar new_start = gantt.dateFromPos(coords_x.start + shift),\n\t\t\t\tnew_end = gantt.dateFromPos(coords_x.end + shift);\n\t\t\tif (!new_start) {\n\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\n\t\t\t\tev.end_date = gantt.dateFromPos(gantt.posFromDate(ev.start_date) + (coords_x.end - coords_x.start));\n\t\t\t} else if (!new_end) {\n\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\n\t\t\t\tev.start_date = gantt.dateFromPos(gantt.posFromDate(ev.end_date) - (coords_x.end - coords_x.start));\n\t\t\t} else {\n\t\t\t\tev.start_date = new_start;\n\t\t\t\tev.end_date = new_end;\n\t\t\t}\n\t\t},\n\t\t_drag_task_coords: function (t, drag) {\n\t\t\tvar start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n\t\t\tvar end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n\t\t\treturn {\n\t\t\t\tstart: start,\n\t\t\t\tend: end\n\t\t\t};\n\t\t},\n\t\t_mouse_position_change: function (oldPos, newPos) {\n\t\t\tvar dx = oldPos.x - newPos.x,\n\t\t\t\tdy = oldPos.y - newPos.y;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t},\n\t\t_is_number: function (n) {\n\t\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t\t},\n\n\t\ton_mouse_move: function (e) {\n\t\t\tif (this.drag.start_drag) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\tvar sX = this.drag.start_drag.start_x,\n\t\t\t\t\tsY = this.drag.start_drag.start_y;\n\n\t\t\t\tif ((Date.now() - this.drag.timestamp > 50) ||\n\t\t\t\t\t(this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n\t\t\t\t\t\tx: sX,\n\t\t\t\t\t\ty: sY\n\t\t\t\t\t}, pos) > 20)) {\n\t\t\t\t\tthis._start_dnd(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar drag = this.drag;\n\n\t\t\tif (drag.mode) {\n\t\t\t\tif (!timeout(this, 40))//limit update frequency\n\t\t\t\t\treturn;\n\n\t\t\t\tthis._update_on_move(e);\n\n\t\t\t}\n\t\t},\n\n\t\t_update_item_on_move: function(shift, id, mode, drag, e){\n\t\t\tvar ev = gantt.getTask(id);\n\t\t\tvar original = gantt.mixin({}, ev);\n\t\t\tvar copy = gantt.mixin({}, ev);\n\t\t\tthis._handlers[mode].apply(this, [copy, shift, drag]);\n\t\t\tgantt.mixin(ev, copy, true);\n\t\t\t//gantt._update_parents(drag.id, true);\n\t\t\tgantt.callEvent(\"onTaskDrag\", [ev.id, mode, copy, original, e]);\n\t\t\tgantt.mixin(ev, copy, true);\n\t\t\tgantt.refreshTask(id);\n\t\t},\n\n\t\t_update_on_move: function (e) {\n\t\t\tvar drag = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (drag.mode) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t\t\tif (drag.pos && drag.pos.x == pos.x)\n\t\t\t\t\treturn;\n\n\t\t\t\tdrag.pos = pos;\n\n\t\t\t\tvar curr_date = gantt.dateFromPos(pos.x);\n\t\t\t\tif (!curr_date || isNaN(curr_date.getTime()))\n\t\t\t\t\treturn;\n\n\n\t\t\t\tvar shift = pos.x - drag.start_x;\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\n\t\t\t\tif (this._handlers[drag.mode]) {\n\n\t\t\t\t\tif(gantt.isSummaryTask(ev) && gantt.config.drag_project && drag.mode == config.drag_mode.move){\n\n\t\t\t\t\t\tvar initialDrag = {};\n\t\t\t\t\t\tinitialDrag[drag.id] = utils.copy(drag);\n\t\t\t\t\t\tvar maxShift = this._find_max_shift(utils.mixin(initialDrag, this.dragMultiple), shift);\n\t\t\t\t\t\tif(maxShift !== undefined){\n\t\t\t\t\t\t\tshift = maxShift;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t\tfor(var i in this.dragMultiple){\n\t\t\t\t\t\t\tvar childDrag = this.dragMultiple[i];\n\t\t\t\t\t\t\tthis._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t}\n\t\t\t\t\tgantt._update_parents(drag.id);\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\ton_mouse_down: function (e, src) {\n\t\t\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n\t\t\t// let's ignore right mouse button then\n\t\t\tif (e.button == 2 && e.button !== undefined)\n\t\t\t\treturn;\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar id = gantt.locate(e);\n\t\t\tvar task = null;\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\ttask = gantt.getTask(id);\n\t\t\t}\n\n\t\t\tif (gantt.isReadonly(task) || this.drag.mode) return;\n\n\t\t\tthis.clear_drag_state();\n\n\t\t\tsrc = src || (e.target || e.srcElement);\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tvar drag = this._get_drag_mode(className, src);\n\n\t\t\tif (!className || !drag) {\n\t\t\t\tif (src.parentNode)\n\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\t\t\t\telse\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!drag) {\n\t\t\t\tif (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n\t\t\t\t\tif (src.parentNode)\n\t\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n\t\t\t\t\tid = gantt.locate(src);\n\t\t\t\t\ttask = gantt.copy(gantt.getTask(id) || {});\n\n\t\t\t\t\tif (gantt.isReadonly(task)) {\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((gantt.isSummaryTask(task) && !config.drag_project) && drag.mode != config.drag_mode.progress) {//only progress drag is allowed for tasks with flexible duration\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdrag.id = id;\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\t\tdrag.start_x = pos.x;\n\t\t\t\t\tdrag.start_y = pos.y;\n\t\t\t\t\tdrag.obj = task;\n\t\t\t\t\tthis.drag.start_drag = drag;\n\t\t\t\t\tthis.drag.timestamp = Date.now();\n\n\t\t\t\t} else\n\t\t\t\t\tthis.clear_drag_state();\n\t\t\t}\n\t\t},\n\t\t_fix_dnd_scale_time: function (task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar unit = gantt.getScale().unit,\n\t\t\t\tstep = gantt.getScale().step;\n\t\t\tif (!config.round_dnd_dates) {\n\t\t\t\tunit = 'minute';\n\t\t\t\tstep = config.time_step;\n\t\t\t}\n\n\t\t\tfunction fixStart(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(task.start_date, undefined, task))\n\t\t\t\t\ttask.start_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\t\tduration: -1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction fixEnd(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task))\n\t\t\t\t\ttask.end_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\t\tduration: 1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\t\tfixStart(task);\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.roundDate({date: task.end_date, unit: unit, step: step});\n\t\t\t\t\tfixEnd(task);\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\tfixStart(task);\n\t\t\t\ttask.end_date = gantt.calculateEndDate(task);\n\t\t\t}\n\t\t},\n\t\t_fix_working_times: function (task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar drag = drag || {mode: config.drag_mode.move};\n\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.getClosestWorkTime({date: task.end_date, dir: 'past', task: task});\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\tgantt.correctTaskWorkTime(task);\n\t\t\t}\n\t\t},\n\n\t\t_finalize_mouse_up: function(taskId, config, drag, e){\n\t\t\tvar ev = gantt.getTask(taskId);\n\n\t\t\tif (config.work_time && config.correct_work_time) {\n\t\t\t\tthis._fix_working_times(ev, drag);\n\t\t\t}\n\n\t\t\tthis._fix_dnd_scale_time(ev, drag);\n\n\t\t\tif (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n\t\t\t\t//drag.obj._dhx_changed = false;\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tif(taskId == drag.id){\n\t\t\t\t\tdrag.obj._dhx_changed = false;\n\t\t\t\t\tgantt.mixin(ev, drag.obj, true);\n\t\t\t\t}\n\n\n\t\t\t\tgantt.refreshTask(ev.id);\n\t\t\t} else {\n\t\t\t\tvar drag_id = taskId;\n\n\t\t\t\tgantt._init_task_timing(ev);\n\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tgantt.updateTask(ev.id);\n\t\t\t\tthis._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n\t\t\t}\n\n\t\t},\n\n\t\ton_mouse_up: function (e) {\n\n\t\t\tvar drag = this.drag;\n\t\t\tif (drag.mode && drag.id) {\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\t//drop\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\t\t\t\tvar dragMultiple = this.dragMultiple;\n\n\t\t\t\tif(gantt.isSummaryTask(ev) && config.drag_project && drag.mode == config.drag_mode.move){\n\t\t\t\t\tfor(var i in dragMultiple){\n\t\t\t\t\t\tthis._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._finalize_mouse_up(drag.id, config, drag, e);\n\t\t\t}\n\t\t\tthis.clear_drag_state();\n\t\t},\n\t\t_get_drag_mode: function (className, el) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar modes = config.drag_mode;\n\t\t\tvar classes = (className || \"\").split(\" \");\n\t\t\tvar classname = classes[0];\n\t\t\tvar drag = {mode: null, left: null};\n\t\t\tswitch (classname) {\n\t\t\t\tcase \"gantt_task_line\":\n\t\t\t\tcase \"gantt_task_content\":\n\t\t\t\t\tdrag.mode = modes.move;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_drag\":\n\t\t\t\t\tdrag.mode = modes.resize;\n\n\t\t\t\t\tvar dragProperty = el.getAttribute(\"data-bind-property\");\n\n\t\t\t\t\tif (dragProperty == \"start_date\") {\n\t\t\t\t\t\tdrag.left = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdrag.left = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_progress_drag\":\n\t\t\t\t\tdrag.mode = modes.progress;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_link_control\":\n\t\t\t\tcase \"gantt_link_point\":\n\t\t\t\t\tdrag.mode = modes.ignore;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdrag = null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn drag;\n\n\t\t},\n\n\t\t_start_dnd: function (e) {\n\t\t\tvar drag = this.drag = this.drag.start_drag;\n\t\t\tdelete drag.start_drag;\n\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar id = drag.id;\n\t\t\tif (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n\t\t\t\tthis.clear_drag_state();\n\t\t\t} else {\n\t\t\t\tdelete drag.start_drag;\n\n\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\tif(gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move){\n\t\t\t\t\tgantt.eachTask(function(child){\n\t\t\t\t\t\tthis.dragMultiple[child.id] = gantt.mixin({\n\t\t\t\t\t\t\tid: child.id,\n\t\t\t\t\t\t\tobj: child\n\t\t\t\t\t\t}, this.drag);\n\t\t\t\t\t}, task.id, this);\n\t\t\t\t}\n\n\t\t\t\tgantt.callEvent(\"onTaskDragStart\", []);\n\t\t\t}\n\n\t\t},\n\t\t_fireEvent: function (stage, mode, params) {\n\t\t\tgantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n\n\t\t\tvar trigger = this._events[stage][mode];\n\n\t\t\tgantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n\t\t\tgantt.assert(params, \"Invalid event arguments\");\n\n\n\t\t\tif (!gantt.checkEvent(trigger))\n\t\t\t\treturn true;\n\n\t\t\treturn gantt.callEvent(trigger, params);\n\t\t},\n\n\t\tround_task_dates: function(task){\n\t\t\tvar drag_state = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (!drag_state) {\n\t\t\t\tdrag_state = {mode: config.drag_mode.move};\n\t\t\t}\n\t\t\tthis._fix_dnd_scale_time(task, drag_state);\n\t\t},\n\t\tdestructor: function(){\n\t\t\tthis._domEvents.detachAll();\n\t\t}\n\t};\n}\n\nfunction initTaskDND() {\n\tvar _tasks_dnd;\n\treturn {\n\t\textend: function(timeline){\n\t\t\ttimeline.roundTaskDates = function (task) {\n\t\t\t\t_tasks_dnd.round_task_dates(task);\n\t\t\t};\n\n\t\t},\n\t\tinit: function(timeline, gantt){\n\t\t\t_tasks_dnd = createTaskDND(timeline, gantt);\n\t\t\t// TODO: entry point for touch handlers, move touch to timeline\n\t\t\ttimeline._tasks_dnd = _tasks_dnd;\n\t\t\treturn _tasks_dnd.init(gantt);\n\t\t},\n\t\tdestructor: function () {\n\t\t\tif (_tasks_dnd) {\n\t\t\t\t_tasks_dnd.destructor();\n\t\t\t\t_tasks_dnd = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tcreateTaskDND: initTaskDND\n};\n","var utils = require(\"../../../utils/utils\"),\n\ttaskDnD = require(\"./tasks_dnd\"),\n\tlinkDnD = require(\"./links_dnd\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar initializer = (function(){\n\treturn function(gantt){\n\t\tvar services = gantt.$services;\n\t\treturn {\n\t\t\tonCreated: function (timeline) {\n\t\t\t\tvar config = timeline.$config;\n\t\t\t\tconfig.bind = utils.defined(config.bind) ? config.bind : \"task\";\n\t\t\t\tconfig.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n\n\t\t\t\ttimeline._linksDnD = linkDnD.createLinkDND();\n\t\t\t\ttimeline._tasksDnD = taskDnD.createTaskDND();\n\t\t\t\ttimeline._tasksDnD.extend(timeline);\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (timeline) {\n\t\t\t\tthis._attachDomEvents(gantt);\n\n\t\t\t\tthis._attachStateProvider(gantt, timeline);\n\n\t\t\t\ttimeline._tasksDnD.init(timeline, gantt);\n\t\t\t\ttimeline._linksDnD.init(timeline, gantt);\n\n\t\t\t\tif(timeline.$config.id == \"timeline\"){\n\t\t\t\t\tthis.extendDom(timeline);\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\t\t\t\tthis._clearDomEvents(gantt);\n\t\t\t\tthis._clearStateProvider(gantt);\n\t\t\t\tif (timeline._tasksDnD) {\n\t\t\t\t\ttimeline._tasksDnD.destructor();\n\t\t\t\t}\n\t\t\t},\n\t\t\textendDom: function(timeline){\n\t\t\t\tgantt.$task = timeline.$task;\n\t\t\t\tgantt.$task_scale = timeline.$task_scale;\n\t\t\t\tgantt.$task_data = timeline.$task_data;\n\t\t\t\tgantt.$task_bg = timeline.$task_bg;\n\t\t\t\tgantt.$task_links = timeline.$task_links;\n\t\t\t\tgantt.$task_bars = timeline.$task_bars;\n\t\t\t},\n\n\t\t\t_clearDomEvents: function(){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\t_attachDomEvents: function(gantt){\n\t\t\t\tfunction _delete_link_handler(id, e) {\n\t\t\t\t\tif (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n\n\t\t\t\t\t\tvar link = this.getLink(id);\n\t\t\t\t\t\tif (this.isReadonly(link)) return;\n\n\t\t\t\t\t\tvar title = \"\";\n\t\t\t\t\t\tvar question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n\n\t\t\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\t\tgantt._dhtmlx_confirm(question, title, function () {\n\t\t\t\t\t\t\t\tgantt.deleteLink(id);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, (this.config.touch ? 300 : 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar id = this.locate(e, this.config.link_attribute);\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tthis.callEvent(\"onLinkClick\", [id, e]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\t\t\t\t\tvar date = gantt.dateFromPos(pos.x);\n\t\t\t\t\tvar coll = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\t\t\tvar coll_date = gantt.getScale().trace_x[coll];\n\n\t\t\t\t\tgantt.callEvent(\"onScaleClick\", [e, coll_date]);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e, gantt.config.link_attribute);\n\t\t\t\t\t_delete_link_handler.call(this, id, e);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e),\n\t\t\t\t\t\ttask = this.getTask(id);\n\n\t\t\t\t\tvar link = null;\n\t\t\t\t\tif (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n\t\t\t\t\t\tif (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n\t\t\t\t\t\t\tlink = task.$target[0];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlink = task.$source[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (link)\n\t\t\t\t\t\t_delete_link_handler.call(this, link, e);\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), this.$task);\n\t\t\t},\n\n\t\t\t_attachStateProvider: function(gantt, timeline){\n\t\t\t\tvar self = timeline;\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.registerProvider(\"tasksTimeline\", function(){\n\t\t\t\t\treturn {\n\t\t\t\t\t\tscale_unit: self._tasks ? self._tasks.unit : undefined,\n\t\t\t\t\t\tscale_step: self._tasks ? self._tasks.step : undefined\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_clearStateProvider: function(){\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.unregisterProvider(\"tasksTimeline\");\n\t\t\t}\n\t\t};\n\t};\n\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../../../utils/dom_helpers\");\n\n/**\n * methods for highlighting current drag and drop position\n */\n\nfunction highlightPosition(target, root, grid){\n\tvar markerPos = getTaskMarkerPosition(target, grid);\n\t// setting position of row\n\troot.marker.style.left = markerPos.x + 9 + \"px\";\n\troot.marker.style.top = markerPos.y + \"px\";\n\tvar markerLine = root.markerLine;\n\tif(!markerLine){\n\t\tmarkerLine = document.createElement(\"div\");\n\t\tmarkerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n\t\tmarkerLine.innerHTML = \"
\";\n\t\tmarkerLine.style.pointerEvents = \"none\";\n\t\tdocument.body.appendChild(markerLine);\n\t\troot.markerLine = markerLine;\n\t}\n\tif(target.child){\n\t\thighlightFolder(target, markerLine, grid);\n\t}else{\n\t\thighlightRow(target, markerLine, grid);\n\t}\n}\n\nfunction removeLineHighlight(root){\n\tif(root.markerLine && root.markerLine.parentNode){\n\t\troot.markerLine.parentNode.removeChild(root.markerLine);\n\t}\n\troot.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid){\n\tvar linePos = getLineMarkerPosition(target, grid);\n\n\tmarkerLine.innerHTML = \"
\";\n\tmarkerLine.style.left = linePos.x + \"px\";\n\tmarkerLine.style.height = \"4px\";\n\n\tmarkerLine.style.top = (linePos.y - 2) + \"px\";\n\tmarkerLine.style.width = linePos.width + \"px\";\n\n\treturn markerLine;\n}\nfunction highlightFolder(target, markerFolder, grid){\n\tvar id = target.targetParent;\n\tvar pos = gridToPageCoordinates({x: 0, y: grid.getItemTop(id)}, grid);\n\n\tmarkerFolder.innerHTML = \"
\";\n\tmarkerFolder.style.width = grid.$grid_data.offsetWidth + \"px\";\n\tmarkerFolder.style.top = pos.y + \"px\";\n\tmarkerFolder.style.left = pos.x + \"px\";\n\tmarkerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\treturn markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid){\n\tvar store = grid.$config.rowStore;\n\tvar pos = {x:0, y:0};\n\tvar indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n\tvar indent = 15;\n\tvar level = 0;\n\tif(indentNode){\n\t\tindent = indentNode.offsetWidth;\n\t}\n\tvar iconWidth = 40;\n\tif(target.targetId !== store.$getRootId()){\n\t\tvar itemTop = grid.getItemTop(target.targetId);\n\t\tvar itemHeight = grid.getItemHeight(target.targetId);\n\t\tlevel = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n\t\tif(target.prevSibling){\n\t\t\tpos.y = itemTop;\n\t\t}else if(target.nextSibling){\n\t\t\tvar childCount = 0;\n\t\t\tstore.eachItem(function(child){\n\t\t\t\tif(store.getIndexById(child.id) !== -1)\n\t\t\t\t\tchildCount++;\n\t\t\t}, target.targetId);\n\n\t\t\tpos.y = itemTop + itemHeight + childCount*itemHeight;\n\t\t}else {\n\t\t\tpos.y = itemTop + itemHeight;\n\t\t\tlevel += 1;\n\t\t}\n\t}\n\tpos.x = iconWidth + level * indent;\n\tpos.width = Math.max(grid.$grid_data.offsetWidth - pos.x, 0);\n\treturn gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid){\n\tvar gridPos = domHelpers.getNodePosition(grid.$grid_data);\n\tpos.x += gridPos.x - grid.$grid.scrollLeft;\n\tpos.y += gridPos.y - grid.$grid_data.scrollTop;\n\treturn pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\tvar ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data);\n\tvar store = grid.$config.rowStore;\n\t// row offset\n\tvar x = pos.x;\n\tvar y = ePos.y - 10;\n\n\tvar config = grid.$getConfig();\n\t// prevent moving row out of grid_data container\n\tif (y < pos.y) y = pos.y;\n\tvar gridHeight = store.countVisible() * config.row_height;\n\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\tpos.x = x;\n\tpos.y = y;\n\treturn pos;\n}\n\nmodule.exports = {\n\tremoveLineHighlight: removeLineHighlight,\n\thighlightPosition: highlightPosition\n};\n","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = true\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store){\n\tvar result;\n\n\tif(targetTaskId !== store.$getRootId()){\n\t\tif(relTargetPos < 0.25){\n\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t}else if(relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)){\n\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t}else {\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tif(store.hasChild(rootId) && eventTop >= 0){\n\t\t\tresult = dropTarget.lastChildTarget(dndTaskId, rootId, store);\n\t\t}else{\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, rootId, store);\n\t\t}\n\t}\n\n\treturn result;\n};","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = false\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store){\n\tvar current = store.getNext();\n\twhile(store.exists(current)){\n\n\t\tvar next = store.getNext(current);\n\t\tif(!store.exists(next)){\n\t\t\treturn current;\n\t\t}else{\n\t\t\tcurrent = next;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up){\n\tvar prev = taskId;\n\twhile(store.exists(prev)){\n\t\tvar targetLevel = store.calculateItemLevel(store.getItem(prev));\n\t\tif((targetLevel === allowedLevel || targetLevel === (allowedLevel - 1)) && store.getBranchIndex(prev) > -1){\n\t\t\tbreak;\n\t\t}else {\n\t\t\tprev = up ? store.getPrev(prev) : store.getNext(prev);\n\t\t}\n\t}\n\n\tif(store.exists(prev)){\n\t\tif(store.calculateItemLevel(store.getItem(prev)) === allowedLevel){\n\t\t\treturn up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\n\t\t}else{\n\t\t\treturn dropTarget.firstChildTarget(dndTaskId, prev, store);\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store){\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\n}\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store){\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level){\n\tvar result;\n\tif(targetTaskId !== store.$getRootId()) {\n\t\tif (relTargetPos < 0.5) {\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\n\t\t\t\tif(store.getPrevSibling(targetTaskId)){\n\t\t\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, store.getPrevSibling(targetTaskId), store);\n\t\t\t\t}else{\n\t\t\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult = findTargetAbove(dndTaskId, targetTaskId, level, store);\n\t\t\t\tif (result) {\n\t\t\t\t\tresult = findTargetBelow(dndTaskId, targetTaskId, level, store);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\n\t\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t\t} else {\n\t\t\t\tresult = findTargetBelow(dndTaskId, targetTaskId, level, store);\n\t\t\t\tif (result) {\n\t\t\t\t\tresult = findTargetAbove(dndTaskId, targetTaskId, level, store);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tvar rootLevel = store.getChildren(rootId);\n\t\tresult = dropTarget.createDropTargetObject();\n\t\tif(rootLevel.length && eventTop >= 0){\n\t\t\tresult = findTargetAbove(dndTaskId, getLast(store), level, store);\n\t\t}else{\n\t\t\tresult = findTargetBelow(dndTaskId, rootId, level, store);\n\t\t}\n\t}\n\n\treturn result;\n};\n","var domHelpers = require(\"../../../utils/dom_helpers\");\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\n\nfunction _init_dnd(gantt, grid) {\n\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\n\t\treturn;\n\t}\n\n\tfunction locate(e){\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\n\t}\n\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tif (!el) return false;\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\n\t\t\treturn false;\n\t\t}\n\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\n\t\tvar datastore = grid.$config.rowStore;\n\t\tvar task = datastore.getItem(id);\n\n\t\tif (gantt.isReadonly(task))\n\t\t\treturn false;\n\n\t\tdnd.config.initial_open_state = task.$open;\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n\t\t\treturn false;\n\t\t}\n\n\t}, gantt));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\tdnd.config.marker.style.opacity = 0.4;\n\t\t\telement.style.position = \"static\";\n\t\t\telement.style.pointerEvents = \"none\";\n\t\t}\n\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = grid.$config.rowStore;\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.level = store.calculateItemLevel(task);\n\t\tdnd.config.drop_target = dropTarget.createDropTargetObject({\n\t\t\ttargetParent: store.getParent(task.id),\n\t\t\ttargetIndex: store.getBranchIndex(task.id),\n\t\t\ttargetId: task.id,\n\t\t\tnextSibling: true\n\t\t});\n\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tfunction getTargetTaskId(e){\n\t\tvar y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\t\tvar store = grid.$config.rowStore;\n\n\t\ty = y || 0;\n\n\t\tif(y < 0){\n\t\t\treturn store.$getRootId();\n\t\t}\n\n\t\tvar index = Math.floor(y / grid.getItemHeight());\n\n\t\tif (index > store.countVisible() - 1)\n\t\t\treturn store.$getRootId();\n\n\t\treturn store.getIdByIndex(index);\n\t}\n\n\tfunction getDropPosition(e){\n\t\tvar targetTaskId = getTargetTaskId(e);\n\t\tvar relTargetPos = null;\n\t\tvar store = grid.$config.rowStore;\n\t\tvar config = grid.$getConfig();\n\t\tvar lockLevel = !config.order_branch_free;\n\n\t\tvar eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n\t\tif(targetTaskId !== store.$getRootId()) {\n\t\t\tvar rowTop = grid.getItemTop(targetTaskId);\n\t\t\tvar rowHeight = grid.getItemHeight();\n\t\t\trelTargetPos = (eventTop - rowTop) / rowHeight;\n\t\t}\n\n\t\tvar result;\n\t\tif(!lockLevel){\n\t\t\tresult = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n\t\t}else{\n\t\t\tresult = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar target = getDropPosition(e);\n\n\t\tif(!target ||\n\t\t\tgantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false){\n\t\t\t\ttarget = dropTarget.createDropTargetObject(dnd.config.drop_target);\n\t\t\t}\n\n\t\thiglighter.highlightPosition(target, dnd.config, grid);\n\t\tdnd.config.drop_target = target;\n\n\t\tthis.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = grid.$config.rowStore;\n\t\tvar task = store.getItem(dnd.config.id);\n\n\t\thiglighter.removeLineHighlight(dnd.config);\n\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\t\tvar target = dnd.config.drop_target;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tstore.move(dnd.config.id, target.targetIndex, target.targetParent);\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\t}\n\t\tstore.refresh(task.id);\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","var domHelpers = require(\"../../../utils/dom_helpers\");\n\nfunction _init_dnd(gantt, grid) {\n\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\n\t\treturn;\n\t}\n\n\tfunction locate(e){\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\n\t}\n\n\tfunction getStore(){\n\t\treturn gantt.getDatastore(grid.$config.bind);\n\t}\n\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tif (!el) return false;\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\n\t\t\treturn false;\n\t\t}\n\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar datastore = getStore();\n\n\t\tvar task = datastore.getItem(id);\n\n\t\tif (gantt.isReadonly(task))\n\t\t\treturn false;\n\n\t\tdnd.config.initial_open_state = task.$open;\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n\t\t\treturn false;\n\t\t}\n\n\t}, gantt));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\telement.style.position = \"static\";\n\t\t}\n\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = getStore();\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.index = store.getBranchIndex(dnd.config.id);\n\t\tdnd.config.parent = task.parent;\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tdnd.lastTaskOfLevel = function (level) {\n\t\tvar last_item = null;\n\t\tvar store = getStore();\n\t\tvar tasks = store.getItems();\n\t\tfor (var i = 0, len = tasks.length; i < len; i++) {\n\t\t\tif (tasks[i].$level == level) {\n\t\t\t\tlast_item = tasks[i];\n\t\t\t}\n\t\t}\n\t\treturn last_item ? last_item.id : null;\n\t};\n\tdnd._getGridPos = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\t\tvar store = getStore();\n\t\t// row offset\n\t\tvar x = pos.x;\n\t\tvar y = e.pos.y - 10;\n\n\t\tvar config = grid.$getConfig();\n\t\t// prevent moving row out of grid_data container\n\t\tif (y < pos.y) y = pos.y;\n\t\tvar gridHeight = store.countVisible() * config.row_height;\n\t\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\t\tpos.x = x;\n\t\tpos.y = y;\n\t\treturn pos;\n\t}, gantt);\n\tdnd._getTargetY = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\n\t\tvar y = e.pageY - pos.y + (grid.$state.scrollTop || 0);\n\t\tif (y < 0)\n\t\t\ty = 0;\n\t\treturn y;\n\t}, gantt);\n\tdnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\ty = y || 0;\n\n\t\tvar index = Math.floor(y / config.row_height);\n\t\tindex = dropIndex < index ? index - 1 : index;\n\n\t\tif (index > store.countVisible() - 1)\n\t\t\treturn null;\n\n\t\treturn store.getIdByIndex(index);\n\t}, gantt);\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar dd = dnd.config;\n\t\tvar pos = dnd._getGridPos(e);\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\t// setting position of row\n\t\tdd.marker.style.left = pos.x + 10 + \"px\";\n\t\tdd.marker.style.top = pos.y + \"px\";\n\n\t\t// highlight row when mouseover\n\t\tvar item = store.getItem(dnd.config.id);\n\t\tvar targetY = dnd._getTargetY(e);\n\t\tvar el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n\t\tif (!store.exists(el)) {\n\t\t\tel = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\t\t\tif (el == dnd.config.id) {\n\t\t\t\tel = null;\n\t\t\t}\n\t\t}\n\n\t\tfunction allowedLevel(next, item) {\n\t\t\treturn (!(store.isChildOf(over.id, item.id)) && (next.$level == item.$level || config.order_branch_free));\n\t\t}\n\n\t\tif (store.exists(el)) {\n\t\t\tvar over = store.getItem(el);\n\n\t\t\tif (store.getIndexById(over.id) * config.row_height + config.row_height / 2 < targetY) {\n\t\t\t\t//hovering over bottom part of item, check can be drop to bottom\n\t\t\t\tvar index = store.getIndexById(over.id);\n\t\t\t\tvar nextId = store.getNext(over.id);//adds +1 when hovering over placeholder\n\t\t\t\tvar next = store.getItem(nextId);\n\t\t\t\tif (next) {\n\t\t\t\t\tif (next.id != item.id) {\n\t\t\t\t\t\tover = next; //there is a valid target\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (config.order_branch_free) {\n\t\t\t\t\t\t\tif (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstore.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//we at end of the list, check and drop at the end of list\n\t\t\t\t\tnextId = store.getIdByIndex(index);\n\t\t\t\t\tnext = store.getItem(nextId);\n\n\t\t\t\t\tif (allowedLevel(next, item) && next.id != item.id) {\n\t\t\t\t\t\tstore.move(item.id, -1, store.getParent(next.id));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (config.order_branch_free) {\n\t\t\t\tif (over.id != item.id && allowedLevel(over, item)) {\n\t\t\t\t\tif (!store.hasChild(over.id)) {\n\t\t\t\t\t\tover.$open = true;\n\t\t\t\t\t\tstore.move(item.id, -1, over.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (store.getIndexById(over.id) || config.row_height / 3 < targetY) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//if item is on different level, check the one before it\n\t\t\tvar index = store.getIndexById(over.id),\n\t\t\t\tprevId = store.getIdByIndex(index - 1);\n\n\t\t\tvar prev = store.getItem(prevId);\n\n\t\t\tvar shift = 1;\n\t\t\twhile ((!prev || prev.id == over.id) && index - shift >= 0) {\n\n\t\t\t\tprevId = store.getIdByIndex(index - shift);\n\t\t\t\tprev = store.getItem(prevId);\n\t\t\t\tshift++;\n\t\t\t}\n\n\t\t\tif (item.id == over.id) return;\n\t\t\t//replacing item under cursor\n\t\t\tif (allowedLevel(over, item) && item.id != over.id) {\n\t\t\t\tstore.move(item.id, 0, 0, over.id);\n\n\t\t\t} else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n\t\t\t\tstore.move(item.id, 0, over.id);\n\n\t\t\t} else if (prev && (allowedLevel(prev, item)) && (item.id != prev.id)) {\n\t\t\t\tstore.move(item.id, -1, store.getParent(prev.id));\n\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = getStore();\n\t\tvar task = store.getItem(dnd.config.id);\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n\t\t\tstore.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n\t\t}\n\n\t\tthis.refreshData();\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\nvar rowDnd = require(\"./tasks_grid_dnd\");\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = (function(){\n\treturn function(gantt){\n\t\treturn {\n\t\t\tonCreated: function (grid) {\n\t\t\t\tgrid.$config = utils.mixin(grid.$config, {\n\t\t\t\t\tbind: \"task\"\n\t\t\t\t});\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendGantt(grid);\n\t\t\t\t\tgantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n\t\t\t\t\tgantt.ext.inlineEditors.init();\n\t\t\t\t}\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (grid) {\n\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\tif (config.order_branch) {\n\t\t\t\t\tif(config.order_branch == \"marker\"){\n\t\t\t\t\t\trowDndMarker.init(grid.$gantt, grid);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trowDnd.init(grid.$gantt, grid);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.initEvents(grid, gantt);\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendDom(grid);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDestroyed: function (grid) {\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tgantt.ext.inlineEditors.destructor();\n\t\t\t\t}\n\t\t\t\tthis.clearEvents(grid, gantt);\n\t\t\t},\n\n\t\t\tinitEvents: function (grid, gantt) {\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (id !== null) {\n\t\t\t\t\t\tvar task = this.getTask(id);\n\t\t\t\t\t\tif (config.scroll_on_click && !gantt._is_icon_open_click(e))\n\t\t\t\t\t\t\tthis.showDate(task.start_date);\n\t\t\t\t\t\tgantt.callEvent(\"onTaskRowClick\", [id, trg]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar column = trg.getAttribute(\"data-column-id\");\n\n\t\t\t\t\tif (!gantt.callEvent(\"onGridHeaderClick\", [column, e]))\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar config = grid.$getConfig();\n\n\t\t\t\t\tif (column == \"add\") {\n\t\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\t\tmouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config.sort) {\n\t\t\t\t\t\tvar sorting_method = column,\n\t\t\t\t\t\t\tconf;\n\n\t\t\t\t\t\tfor (var i = 0; i < config.columns.length; i++) {\n\t\t\t\t\t\t\tif (config.columns[i].name == column) {\n\t\t\t\t\t\t\t\tconf = config.columns[i];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (conf && conf.sort !== undefined && conf.sort !== true) {\n\t\t\t\t\t\t\tsorting_method = conf.sort;\n\n\t\t\t\t\t\t\tif (!sorting_method) { // column sort property 'false', no sorting\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar sort = (this._sort && this._sort.direction && this._sort.name == column) ? this._sort.direction : \"desc\";\n\t\t\t\t\t\t// invert sort direction\n\t\t\t\t\t\tsort = (sort == \"desc\") ? \"asc\" : \"desc\";\n\t\t\t\t\t\tthis._sort = {\n\t\t\t\t\t\t\tname: column,\n\t\t\t\t\t\t\tdirection: sort\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.sort(sorting_method, sort == \"desc\");\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (config.readonly) return;\n\n\t\t\t\t\tvar item = {};\n\t\t\t\t\tthis.createTask(item, id ? id : gantt.config.root_id);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t},\n\n\t\t\tclearEvents: function(grid, gantt){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\textendDom: function(grid){\n\t\t\t\tgantt.$grid = grid.$grid;\n\t\t\t\tgantt.$grid_scale = grid.$grid_scale;\n\t\t\t\tgantt.$grid_data = grid.$grid_data;\n\t\t\t},\n\t\t\textendGantt: function(grid){\n\t\t\t\tgantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeStart\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeStart\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResize\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResize\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResizeEnd\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeEnd\", arguments);\n\t\t\t\t});\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeComplete\", function(columns, totalWidth){\n\t\t\t\t\tgantt.config.grid_width = totalWidth;\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t};\n})();\n\nmodule.exports = initializer;","var helpers = require(\"../../../utils/helpers\");\n\nfunction createGridLineRender(gantt){\n\tfunction _render_grid_item(item, view) {\n\t\t//if (!_is_grid_visible.call(this))\n\t\t//\treturn null;\n\n\t\tvar columns = view.getGridColumns();\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\n\t\tvar store = view.$config.rowStore;\n\n\t\tif(config.rtl){\n\t\t\tcolumns = columns.reverse();\n\t\t}\n\n\t\tvar cells = [];\n\t\tvar has_child;\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\t\t\tvar cell;\n\n\t\t\tvar value;\n\t\t\tvar textValue;\n\t\t\tif (col.name == \"add\") {\n\t\t\t\tvar aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n\t\t\t\tvalue = \"
\";\n\t\t\t\ttextValue = \"\";\n\t\t\t} else {\n\t\t\t\tif (col.template)\n\t\t\t\t\tvalue = col.template(item);\n\t\t\t\telse\n\t\t\t\t\tvalue = item[col.name];\n\n\t\t\t\tif (helpers.isDate(value))\n\t\t\t\t\tvalue = templates.date_grid(value, item);\n\t\t\t\ttextValue = value;\n\t\t\t\tvalue = \"
\" + value + \"
\";\n\t\t\t}\n\t\t\tvar css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n\n\t\t\tvar tree = [];\n\t\t\tif (col.tree) {\n\t\t\t\tfor (var j = 0; j < item.$level; j++)\n\t\t\t\t\ttree.push(templates.grid_indent(item));\n\n\t\t\t\thas_child = store.hasChild(item.id) && !(gantt.isSplitTask(item));\n\t\t\t\tif (has_child) {\n\t\t\t\t\ttree.push(templates.grid_open(item));\n\t\t\t\t\ttree.push(templates.grid_folder(item));\n\t\t\t\t} else {\n\t\t\t\t\ttree.push(templates.grid_blank(item));\n\t\t\t\t\ttree.push(templates.grid_file(item));\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\t\t\tif (this.defined(col.align))\n\t\t\t\tstyle += \"text-align:\" + col.align + \";\";\n\n\t\t\tvar aria = gantt._waiAria.gridCellAttrString(col, textValue);\n\n\t\t\ttree.push(value);\n\t\t\tif(config.rtl){\n\t\t\t\ttree = tree.reverse();\n\t\t\t}\n\t\t\tcell = \"
\" + tree.join(\"\") + \"
\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tvar css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n\t\tcss += (item.$transparent) ? \" gantt_transparent\" : \"\";\n\n\t\tcss += (item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\");\n\n\t\tif (templates.grid_row_class) {\n\t\t\tvar css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n\t\t\tif (css_template)\n\t\t\t\tcss += \" \" + css_template;\n\t\t}\n\n\t\tif(store.getSelectedId() == item.id) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\tvar el = document.createElement(\"div\");\n\t\tel.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n\t\tvar height = view.getItemHeight();\n\t\tel.style.height = height + \"px\";\n\t\tel.style.lineHeight = height + \"px\";\n\n\t\tif(config.smart_rendering){\n\t\t\tel.style.position = \"absolute\";\n\t\t\tel.style.left = \"0px\";\n\t\t\tel.style.top = view.getItemTop(item.id) + \"px\";\n\t\t}\n\n\t\tif(view.$config.item_attribute){\n\t\t\tel.setAttribute(view.$config.item_attribute, item.id);\n\t\t}\n\n\t\tgantt._waiAria.taskRowAttr(item, el);\n\n\t\tel.innerHTML = cells.join(\"\");\n\t\treturn el;\n\t}\n\n\treturn _render_grid_item;\n}\n\nmodule.exports = createGridLineRender;\n\n","\nfunction createLinkRender(gantt){\n\nfunction _render_link_element(link, view) {\n\tvar config = view.$getConfig();\n\n\tvar pt = path_builder.get_endpoint(link, view);\n\tvar dy = pt.e_y - pt.y;\n\tvar dx = pt.e_x - pt.x;\n\tif(!dx && !dy){\n\t\treturn null;\n\t}\n\n\n\tvar dots = path_builder.get_points(link, view);\n\tvar lines = drawer.get_lines(dots, view);\n\n\tvar div = document.createElement(\"div\");\n\n\tvar css = \"gantt_task_link\";\n\n\tif (link.color) {\n\t\tcss += \" gantt_link_inline_color\";\n\t}\n\tvar cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\tif (cssTemplate) {\n\t\tcss += \" \" + cssTemplate;\n\t}\n\n\tif (config.highlight_critical_path && gantt.isCriticalLink) {\n\t\tif (gantt.isCriticalLink(link))\n\t\t\tcss += \" gantt_critical_link\";\n\t}\n\n\tdiv.className = css;\n\n\tif(view.$config.link_attribute){\n\t\tdiv.setAttribute(view.$config.link_attribute, link.id);\n\t}\n\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tif (i == lines.length - 1) {\n\t\t\tlines[i].size -= config.link_arrow_size;\n\t\t}\n\t\tvar el = drawer.render_line(lines[i], lines[i + 1], view);\n\t\tif (link.color) {\n\t\t\tel.firstChild.style.backgroundColor = link.color;\n\t\t}\n\t\tdiv.appendChild(el);\n\t}\n\n\tvar direction = lines[lines.length - 1].direction;\n\tvar endpoint = _render_link_arrow(dots[dots.length - 1], direction, view);\n\tif (link.color) {\n\t\tendpoint.style.borderColor = link.color;\n\t}\n\tdiv.appendChild(endpoint);\n\n\tgantt._waiAria.linkAttr(link, div);\n\n\treturn div;\n}\n\nfunction _render_link_arrow(point, direction, view) {\n\tvar config = view.$getConfig();\n\tvar div = document.createElement(\"div\");\n\tvar top = point.y;\n\tvar left = point.x;\n\n\tvar size = config.link_arrow_size;\n\tvar line_width = config.row_height;\n\tvar className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\tswitch (direction) {\n\t\tcase drawer.dirs.right:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.left:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tbreak;\n\t\tcase drawer.dirs.up:\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.down:\n\t\t\ttop += size * 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tdiv.style.cssText = [\n\t\t\"top:\" + top + \"px\",\n\t\t\"left:\" + left + 'px'].join(';');\n\tdiv.className = className;\n\n\treturn div;\n}\n\n\nvar drawer = {\n\tcurrent_pos: null,\n\tdirs: {\"left\": 'left', \"right\": 'right', \"up\": 'up', \"down\": 'down'},\n\tpath: [],\n\tclear: function () {\n\t\tthis.current_pos = null;\n\t\tthis.path = [];\n\t},\n\tpoint: function (pos) {\n\t\tthis.current_pos = gantt.copy(pos);\n\t},\n\tget_lines: function (dots) {\n\t\tthis.clear();\n\t\tthis.point(dots[0]);\n\t\tfor (var i = 1; i < dots.length; i++) {\n\t\t\tthis.line_to(dots[i]);\n\t\t}\n\t\treturn this.get_path();\n\t},\n\tline_to: function (pos) {\n\t\tvar next = gantt.copy(pos);\n\t\tvar prev = this.current_pos;\n\n\t\tvar line = this._get_line(prev, next);\n\t\tthis.path.push(line);\n\t\tthis.current_pos = next;\n\t},\n\tget_path: function () {\n\t\treturn this.path;\n\t},\n\tget_wrapper_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\ty = v.y + (config.row_height - wrapper_size) / 2;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\tleft: v.x - v.size - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y - v.size,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y /*- wrapper_size/2*/,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn res;\n\t},\n\tget_line_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\tline_size = config.link_line_width,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\tsize = v.size + line_size;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\theight: line_size,\n\t\t\t\t\twidth: size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\theight: size,\n\t\t\t\t\twidth: line_size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\n\t\treturn res;\n\t},\n\trender_line: function (v, end, view) {\n\t\tvar pos = this.get_wrapper_sizes(v, view);\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.style.cssText = [\n\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"height:\" + pos.height + \"px\",\n\t\t\t\"width:\" + pos.width + \"px\"\n\t\t].join(';');\n\t\twrapper.className = \"gantt_line_wrapper\";\n\n\t\tvar innerPos = this.get_line_sizes(v, view);\n\t\tvar inner = document.createElement(\"div\");\n\t\tinner.style.cssText = [\n\t\t\t\"height:\" + innerPos.height + \"px\",\n\t\t\t\"width:\" + innerPos.width + \"px\",\n\t\t\t\"margin-top:\" + innerPos.marginTop + \"px\",\n\t\t\t\"margin-left:\" + innerPos.marginLeft + \"px\"\n\t\t].join(\";\");\n\n\t\tinner.className = \"gantt_link_line_\" + v.direction;\n\t\twrapper.appendChild(inner);\n\n\t\treturn wrapper;\n\t},\n\t_get_line: function (from, to) {\n\t\tvar direction = this.get_direction(from, to);\n\t\tvar vect = {\n\t\t\tx: from.x,\n\t\t\ty: from.y,\n\t\t\tdirection: this.get_direction(from, to)\n\t\t};\n\t\tif (direction == this.dirs.left || direction == this.dirs.right) {\n\t\t\tvect.size = Math.abs(from.x - to.x);\n\t\t} else {\n\t\t\tvect.size = Math.abs(from.y - to.y);\n\t\t}\n\t\treturn vect;\n\t},\n\tget_direction: function (from, to) {\n\t\tvar direction = 0;\n\t\tif (to.x < from.x) {\n\t\t\tdirection = this.dirs.left;\n\t\t} else if (to.x > from.x) {\n\t\t\tdirection = this.dirs.right;\n\t\t} else if (to.y > from.y) {\n\t\t\tdirection = this.dirs.down;\n\t\t} else {\n\t\t\tdirection = this.dirs.up;\n\t\t}\n\t\treturn direction;\n\t}\n\n};\n\nvar path_builder = {\n\n\tpath: [],\n\tclear: function () {\n\t\tthis.path = [];\n\t},\n\tcurrent: function () {\n\t\treturn this.path[this.path.length - 1];\n\t},\n\tpoint: function (next) {\n\t\tif (!next)\n\t\t\treturn this.current();\n\n\t\tthis.path.push(gantt.copy(next));\n\t\treturn next;\n\t},\n\tpoint_to: function (direction, diff, point) {\n\t\tif (!point)\n\t\t\tpoint = gantt.copy(this.point());\n\t\telse\n\t\t\tpoint = {x: point.x, y: point.y};\n\t\tvar dir = drawer.dirs;\n\t\tswitch (direction) {\n\t\t\tcase (dir.left):\n\t\t\t\tpoint.x -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.right):\n\t\t\t\tpoint.x += diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.up):\n\t\t\t\tpoint.y -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.down):\n\t\t\t\tpoint.y += diff;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this.point(point);\n\t},\n\tget_points: function (link, view) {\n\t\tvar pt = this.get_endpoint(link, view);\n\t\tvar xy = gantt.config;\n\n\t\tvar dy = pt.e_y - pt.y;\n\t\tvar dx = pt.e_x - pt.x;\n\n\t\tvar dir = drawer.dirs;\n\n\t\tthis.clear();\n\t\tthis.point({x: pt.x, y: pt.y});\n\n\t\tvar shiftX = 2 * xy.link_arrow_size;//just random size for first line\n\t\tvar lineType = this.get_line_type(link, view.$getConfig());\n\n\t\tvar forward = (pt.e_x > pt.x);\n\t\tif (lineType.from_start && lineType.to_start) {\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t}\n\t\t\tthis.point_to(dir.right, shiftX);\n\n\t\t} else if (!lineType.from_start && lineType.to_start) {\n\t\t\tforward = (pt.e_x > (pt.x + 2 * shiftX));\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tdx -= shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx -= 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\t}\n\n\t\t} else if (!lineType.from_start && !lineType.to_start) {\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t}\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t} else if (lineType.from_start && !lineType.to_start) {\n\n\t\t\tforward = (pt.e_x > (pt.x - 2 * shiftX));\n\t\t\tthis.point_to(dir.left, shiftX);\n\n\t\t\tif (!forward) {\n\t\t\t\tdx += shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx += 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.path;\n\t},\n\tget_line_type: function(link, config){\n\t\tvar types = config.links;\n\t\tvar from_start = false, to_start = false;\n\t\tif (link.type == types.start_to_start) {\n\t\t\tfrom_start = to_start = true;\n\t\t} else if (link.type == types.finish_to_finish) {\n\t\t\tfrom_start = to_start = false;\n\t\t} else if (link.type == types.finish_to_start) {\n\t\t\tfrom_start = false;\n\t\t\tto_start = true;\n\t\t} else if (link.type == types.start_to_finish) {\n\t\t\tfrom_start = true;\n\t\t\tto_start = false;\n\t\t} else {\n\t\t\tgantt.assert(false, \"Invalid link type\");\n\t\t}\n\n\t\tif(config.rtl){\n\t\t\tfrom_start = !from_start;\n\t\t\tto_start = !to_start;\n\t\t}\n\n\t\treturn {from_start: from_start, to_start: to_start};\n\t},\n\n\tget_endpoint: function (link, view) {\n\t\tvar config = view.$getConfig();\n\n\t\tvar lineType = this.get_line_type(link, config);\n\t\tvar from_start = lineType.from_start,\n\t\t\tto_start = lineType.to_start;\n\n\t\tvar source = gantt.getTask(link.source);\n\t\tvar target = gantt.getTask(link.target);\n\n\t\tvar from = getMilestonePosition(source, view),\n\t\t\tto = getMilestonePosition(target, view);\n\n\t\treturn {\n\t\t\tx: from_start ? from.left : (from.left + from.width),\n\t\t\te_x: to_start ? to.left : (to.left + to.width),\n\t\t\ty: from.top,\n\t\t\te_y: to.top\n\t\t};\n\t}\n};\n\nfunction getMilestonePosition(task, view){\n\tvar config = view.$getConfig();\n\tvar pos = view.getItemPosition(task);\n\tif(gantt.getTaskType(task.type) == config.types.milestone){\n\t\tvar milestoneHeight = gantt.getTaskHeight();\n\t\tvar milestoneWidth = Math.sqrt(2*milestoneHeight*milestoneHeight);\n\t\tpos.left -= milestoneWidth / 2;\n\t\tpos.width = milestoneWidth;\n\t}\n\treturn pos;\n}\n\nreturn _render_link_element;\n\n}\n\nmodule.exports = createLinkRender;","function createTaskBgRender(gantt){\n\t//this.getTaskTop\n\tfunction _render_bg_line(item, view) {\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\t\tvar cfg = view.getScale();\n\t\tvar count = cfg.count;\n\t\tvar row = document.createElement(\"div\");\n\t\tif (config.show_task_cells) {\n\t\t\tfor (var j = 0; j < count; j++) {\n\t\t\t\tvar width = cfg.width[j],\n\t\t\t\t\tcssclass = \"\";\n\n\t\t\t\tif (width > 0) {//do not render skipped columns\n\t\t\t\t\tvar cell = document.createElement(\"div\");\n\t\t\t\t\tcell.style.width = (width) + \"px\";\n\n\t\t\t\t\tcssclass = \"gantt_task_cell\" + (j == count - 1 ? \" gantt_last_cell\" : \"\");\n\t\t\t\t\tcssTemplate = templates.task_cell_class(item, cfg.trace_x[j]);\n\t\t\t\t\tif (cssTemplate)\n\t\t\t\t\t\tcssclass += \" \" + cssTemplate;\n\t\t\t\t\tcell.className = cssclass;\n\n\t\t\t\t\trow.appendChild(cell);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tvar odd = gantt.getGlobalTaskIndex(item.id) % 2 !== 0;\n\t\tvar cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n\t\tvar css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n\t\tvar store = view.$config.rowStore;\n\t\tif(store.getSelectedId() == item.id) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\t//var row = \"
\" + cells.join(\"\") + \"
\";\n\n\t\trow.className = css;\n\n\t\tif (config.smart_rendering) {\n\t\t\trow.style.position = \"absolute\";\n\t\t\trow.style.top = view.getItemTop(item.id) + \"px\";\n\t\t\trow.style.width = \"100%\";\n\t\t}\n\t\trow.style.height = (config.row_height) + \"px\";\n\n\t\tif(view.$config.item_attribute){\n\t\t\trow.setAttribute(view.$config.item_attribute, item.id);\n\t\t}\n\n\t\treturn row;\n\t}\n\n\treturn _render_bg_line;\n}\n\nmodule.exports = createTaskBgRender;","function createTaskRenderer(gantt){\n\tvar defaultRender = require(\"./task_bar_render\")(gantt);\n\n\treturn function show_children(task, timeline) {\n\t\tif (gantt.isSplitTask(task)) {\n\t\t\tvar el = document.createElement('div'),\n\t\t\t\tsizes = gantt.getTaskPosition(task);\n\n\t\t\tvar sub_tasks = gantt.getChildren(task.id);\n\n\n\t\t\tfor (var i = 0; i < sub_tasks.length; i++) {\n\t\t\t\tvar child = gantt.getTask(sub_tasks[i]);\n\n\t\t\t\tvar element = defaultRender(child, timeline);\n\t\t\t\tif(!element)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvar padding = Math.floor((gantt.config.row_height - sizes.height) / 2);\n\n\t\t\t\telement.style.top = (sizes.top + padding) + \"px\";\n\t\t\t\telement.className += \" gantt_split_child\";\n\n\t\t\t\tel.appendChild(element);\n\t\t\t}\n\t\t\treturn el;\n\t\t}\n\t\treturn false;\n\t};\n}\n\nmodule.exports = createTaskRenderer;","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction PredecessorEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(PredecessorEditor, BaseEditor);\n\n\tfunction parseInputString(value, config) {\n\t\tvar predecessors = (value || \"\").split(config.delimiter || \",\");\n\t\tfor (var i = 0; i < predecessors.length; i++) {\n\t\t\tvar val = predecessors[i].trim();\n\t\t\tif (val) {\n\t\t\t\tpredecessors[i] = val;\n\t\t\t} else {\n\t\t\t\tpredecessors.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\tpredecessors.sort();\n\t\treturn predecessors;\n\t}\n\n\tfunction formatPredecessors(task, config, gantt) {\n\t\tvar links = task.$target;\n\t\tvar labels = [];\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = gantt.getLink(links[i]);\n\t\t\tvar pred = gantt.getTask(link.source);\n\t\t\tlabels.push(gantt.getWBSCode(pred));\n\t\t}\n\t\treturn labels.join((config.delimiter || \",\") + \" \");\n\t}\n\n\tfunction getSelectedLinks(taskId, predecessorCodes) {\n\t\tvar links = [];\n\t\tpredecessorCodes.forEach(function (code) {\n\t\t\tvar predecessor = gantt.getTaskByWBSCode(code);\n\t\t\tif (predecessor) {\n\t\t\t\tvar link = {\n\t\t\t\t\tsource: predecessor.id,\n\t\t\t\t\ttarget: taskId,\n\t\t\t\t\ttype: gantt.config.links.finish_to_start,\n\t\t\t\t\tlag: 0\n\t\t\t\t};\n\t\t\t\tif (gantt.isLinkAllowed(link)) {\n\t\t\t\t\tlinks.push(link);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn links;\n\t}\n\n\tfunction getLinksDiff(task, predecessorCodes) {\n\t\tvar selectedLinks = getSelectedLinks(task.id, predecessorCodes);\n\t\tvar existingLinksSearch = {};\n\t\ttask.$target.forEach(function (linkId) {\n\t\t\tvar link = gantt.getLink(linkId);\n\t\t\texistingLinksSearch[link.source + \"_\" + link.target] = link.id;\n\t\t});\n\n\t\tvar linksToAdd = [];\n\t\tselectedLinks.forEach(function (link) {\n\t\t\tvar linkKey = link.source + \"_\" + link.target;\n\t\t\tif (!existingLinksSearch[linkKey]) {\n\t\t\t\tlinksToAdd.push(link);\n\t\t\t} else {\n\t\t\t\tdelete existingLinksSearch[linkKey];\n\t\t\t}\n\t\t});\n\n\t\tvar linksToDelete = [];\n\t\tfor (var i in existingLinksSearch) {\n\t\t\tlinksToDelete.push(existingLinksSearch[i]);\n\t\t}\n\n\t\treturn {\n\t\t\tadd: linksToAdd,\n\t\t\tremove: linksToDelete\n\t\t};\n\t}\n\n\tutils.mixin(PredecessorEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn parseInputString((this.get_input(node).value || \"\"), column.editor);\n\t\t},\n\t\tsave: function (id, column, node) {\n\t\t\tvar task = gantt.getTask(id);\n\n\t\t\tvar linksDiff = getLinksDiff(task, this.get_value(id, column, node));\n\n\t\t\tif (linksDiff.add.length || linksDiff.remove.length) {\n\t\t\t\tgantt.batchUpdate(function () {\n\t\t\t\t\tlinksDiff.add.forEach(function (link) {\n\t\t\t\t\t\tgantt.addLink(link);\n\t\t\t\t\t});\n\t\t\t\t\tlinksDiff.remove.forEach(function (linkId) {\n\t\t\t\t\t\tgantt.deleteLink(linkId);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (gantt.autoSchedule)\n\t\t\t\t\t\tgantt.autoSchedule();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar inputPredecessors = this.get_value(id, column, node);\n\t\t\tvar taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n\n\t\t\treturn inputPredecessors.join() !== taskPredecessors.join();\n\t\t}\n\t}, true);\n\n\treturn PredecessorEditor;\n};","module.exports = function (gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tvar html5DateFormat = \"%Y-%m-%d\";\n\n\tvar dateToStr = null;\n\tvar strToDate = null;\n\n\tfunction init() {\n\t\tif (!dateToStr) {\n\t\t\tdateToStr = gantt.date.date_to_str(html5DateFormat);\n\t\t}\n\t\tif (!strToDate) {\n\t\t\tstrToDate = gantt.date.str_to_date(html5DateFormat);\n\t\t}\n\t}\n\n\tfunction DateEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(DateEditor, BaseEditor);\n\n\tutils.mixin(DateEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\n\t\t\tinit();\n\t\t\tvar minValue = dateToStr(config.min || gantt.getState().min_date);\n\t\t\tvar maxValue = dateToStr(config.max || gantt.getState().max_date);\n\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tif (value && value.getFullYear) {\n\t\t\t\tthis.get_input(node).value = dateToStr(value);\n\t\t\t} else {\n\t\t\t\tthis.get_input(node).value = value;\n\t\t\t}\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\tif (!value || isNaN(value.getTime()))\n\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\tvar parsed;\n\t\t\ttry {\n\t\t\t\tparsed = strToDate(this.get_input(node).value || \"\");\n\t\t\t} catch (e) {\n\t\t\t\tparsed = null;// return null will cancel changes\n\t\t\t}\n\n\t\t\treturn parsed;\n\t\t}\n\t}, true);\n\n\treturn DateEditor;\n};\n","module.exports = function(gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction SelectEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(SelectEditor, BaseEditor);\n\n\tutils.mixin(SelectEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"select\");\n\t\t}\n\t}, true);\n\n\treturn SelectEditor;\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction NumberEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(NumberEditor, BaseEditor);\n\n\tutils.mixin(NumberEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar min = config.min || 0,\n\t\t\t\tmax = config.max || 100;\n\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn !isNaN(parseInt(value, 10));\n\t\t}\n\t}, true);\n\n\treturn NumberEditor;\n};","module.exports = function(gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction TextEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(TextEditor, BaseEditor);\n\n\tutils.mixin(TextEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t}\n\t}, true);\n\n\treturn TextEditor;\n};","module.exports = {\n\tinit: function(controller, grid){\n\t\tvar self = controller;\n\t\tvar gantt = grid.$gantt;\n\n\t\tvar onBlurDelay = null;\n\t\tvar keyNav = gantt.ext.keyboardNavigation;\n\t\tkeyNav.attachEvent(\"onBeforeFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell) {\n\t\t\t\tvar columnName = activeCell.columnName;\n\t\t\t\tvar id = activeCell.id;\n\n\t\t\t\tvar editorState = self.getState();\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tif(editorState.id == id && editorState.columnName === columnName) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tvar state = controller.getState();\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tself.save();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tcontroller.attachEvent(\"onHide\", function(){\n\t\t\tclearTimeout(onBlurDelay);\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onBlur\", function () {\n\t\t\tonBlurDelay = setTimeout(function(){\n\t\t\t\tself.save();\n\t\t\t});\n\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function(id,e){\n\t\t\t// block lightbox on double click inside editor\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif(cell && controller.isVisible() && cell.columnName == state.columnName){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif(gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif(controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName){\n\t\t\t\t\t// do nothing if editor is already active in this cell\n\t\t\t\t}else{\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tself.save();\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onKeyDown\", function(command, e){\n\t\t\tvar activeCell = controller.locateCell(e.target);\n\t\t\tvar hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tvar keyCode = e.keyCode;\n\t\t\tvar preventKeyNav = false;\n\n\t\t\tswitch (keyCode){\n\t\t\t\tcase keyboard.ENTER:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.save();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}else if(hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.ESC:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.hide();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.UP:\n\t\t\t\tcase keyboard.DOWN:\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.LEFT:\n\t\t\t\tcase keyboard.RIGHT:\n\t\t\t\t\tif(state.editorType === \"date\"){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.SPACE:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.DELETE:\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif(controller.isVisible()){\n\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar newState = controller.getState();\n\t\t\t\t\t\tif(newState.id){\n\t\t\t\t\t\t\tkeyNav.focus({type:\"taskCell\", id: newState.id, column:newState.columnName});\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(controller.isVisible())\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\telse{\n\n\t\t\t\t\t\t// start editing on character key\n\t\t\t\t\t\tif((keyCode >= 48 && keyCode <= 57) || // [0-9]\n\t\t\t\t\t\t\t(keyCode > 95 && keyCode < 112) || // numpad\n\t\t\t\t\t\t\t(keyCode >= 64 && keyCode <= 91) || // [a-z]\n\t\t\t\t\t\t\t(keyCode > 185 && keyCode < 193) || //;=-,etc\n\t\t\t\t\t\t\t(keyCode > 218 && keyCode < 223)\n\t\t\t\t\t\t){\n\t\t\t\t\t\t\tvar modifiers = command.modifiers;\n\n\t\t\t\t\t\t\tvar anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\t\t\t\t\t\t\tif(modifiers.alt){\n\t\t\t\t\t\t\t\t// don't start editing on alt+key\n\t\t\t\t\t\t\t}else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")){\n\t\t\t\t\t\t\t\t// don't start editing if command already have a keyboard shortcut\n\t\t\t\t\t\t\t}else if(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (preventKeyNav){\n\t\t\t\treturn false;\n\t\t\t} else{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t});\n\t},\n\tonShow: function(controller, placeholder, grid){},\n\tonHide: function(controller, placeholder, grid){\n\t\tvar gantt = grid.$gantt;\n\t\tgantt.focus();\n\n\t},\n\tdestroy: function(){}\n};\n\n","module.exports = {\n\tinit: function (controller, grid) {\n\t\tvar gantt = grid.$gantt;\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif (gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {\n\t\t\t\t\t// do nothing if editor is already active in this cell\n\t\t\t\t} else {\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tif (controller.isVisible() && controller.isChanged()) {\n\t\t\t\tcontroller.save();\n\t\t\t} else {\n\t\t\t\tcontroller.hide();\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif (cell && controller.isVisible() && cell.columnName == state.columnName) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tonShow: function (controller, placeholder, grid) {\n\t\tif (grid.$getConfig().keyboard_navigation) {\n\t\t\t// keyboard navigation extension will handle arrows if enabled\n\t\t\treturn;\n\t\t}\n\t\tvar gantt = grid.$gantt;\n\t\tplaceholder.onkeydown = function (e) {\n\t\t\te = e || window.event;\n\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tif (e.defaultPrevented || (e.shiftKey && e.keyCode != keyboard.TAB)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shouldPrevent = true;\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase gantt.keys.edit_save:\n\t\t\t\t\tcontroller.save();\n\t\t\t\t\tbreak;\n\t\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\t\tcontroller.hide();\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tshouldPrevent = false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (shouldPrevent) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t};\n\t},\n\tonHide: function () {\n\n\t},\n\n\tdestroy: function () {\n\n\t}\n};\n\n","var defaultMapping = require(\"./keyboard_mappings/default\");\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function(gantt){\n\n\tvar mapping = null;\n\n\treturn {\n\t\tsetMapping: function(map){\n\t\t\tmapping = map;\n\t\t},\n\t\tgetMapping: function(){\n\n\t\t\tif(mapping){\n\t\t\t\treturn mapping;\n\t\t\t}else if(gantt.config.keyboard_navigation_cells){\n\t\t\t\treturn keyNavMappings;\n\t\t\t}else{\n\t\t\t\treturn defaultMapping;\n\t\t\t}\n\t\t}\n\t};\n};\n","var getKeyboardMapping = require(\"./keyboard_mappings\");\nvar textEditorFactory = require(\"./editors/text\"),\n\tnumberEditorFactory = require(\"./editors/number\"),\n\tselectEditorFactory = require(\"./editors/select\"),\n\tdateEditorFactory = require(\"./editors/date\"),\n\tpredecessorEditorFactory = require(\"./editors/predecessor\");\nvar utils = require(\"../../../../utils/utils\");\nvar domHelpers = require(\"../../../../utils/dom_helpers\");\nvar eventable = require(\"../../../../utils/eventable\");\n\nfunction initConfigs(gantt){\n\tgantt.config.editor_types = {\n\t\ttext: new (textEditorFactory(gantt))(),\n\t\tnumber: new (numberEditorFactory(gantt))(),\n\t\tselect: new (selectEditorFactory(gantt))(),\n\t\tdate: new (dateEditorFactory(gantt))(),\n\t\tpredecessor: new (predecessorEditorFactory(gantt))()\n\t};\n}\n\nfunction create(gantt){\n\tvar keyboardMapping = getKeyboardMapping(gantt);\n\n\tvar eventBus = {};\n\teventable(eventBus);\n\n\tfunction createGridEditors(grid) {\n\n\t\tfunction _getGridCellFromNode(node){\n\t\t\tif(!domHelpers.isChildOf(node, grid.$grid)){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n\t\t\tvar cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\t\t\tif(cell){\n\t\t\t\tvar columnName = cell.getAttribute(\"data-column-name\");\n\t\t\t\tvar id = row.getAttribute(grid.$config.item_attribute);\n\t\t\t\treturn {\n\t\t\t\t\tid: id,\n\t\t\t\t\tcolumnName: columnName\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction _getEditorPosition(itemId, columnName) {\n\t\t\tvar top = grid.getItemTop(itemId);\n\t\t\tvar height = grid.getItemHeight(itemId);\n\t\t\tvar cols = grid.getGridColumns();\n\t\t\tvar left = 0,\n\t\t\t\twidth = 0;\n\n\t\t\tfor (var i = 0; i < cols.length; i++) {\n\t\t\t\tif (cols[i].name == columnName) {\n\t\t\t\t\twidth = cols[i].width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tleft += cols[i].width;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\theight: height,\n\t\t\t\twidth: width\n\t\t\t};\n\t\t}\n\n\t\tfunction findVisibleIndex(grid, columnName) {\n\t\t\tvar columns = grid.getGridColumns();\n\t\t\tfor (var i = 0; i < columns.length; i++){\n\t\t\t\tif(columns[i].name == columnName){\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\tfunction _createPlaceholder(itemId, columnName) {\n\t\t\tvar pos = _getEditorPosition(itemId, columnName);\n\t\t\tvar el = document.createElement(\"div\");\n\t\t\tel.className = \"gantt_grid_editor_placeholder\";\n\t\t\tel.setAttribute(grid.$config.item_attribute, itemId);\n\t\t\tel.setAttribute(\"data-column-name\", columnName);\n\n\t\t\tvar visibleIndex = findVisibleIndex(grid, columnName);\n\t\t\tel.setAttribute(\"data-column-index\", visibleIndex);\n\n\t\t\tel.style.cssText = [\n\t\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\t\"width:\" + pos.width + \"px\",\n\t\t\t\t\"height:\" + pos.height + \"px\"\n\t\t\t].join(\";\");\n\n\t\t\treturn el;\n\t\t}\n\n\n\t\tvar handlers = [];\n\t\tvar store = null;\n\t\tvar controller = {\n\t\t\t_itemId: null,\n\t\t\t_columnName: null,\n\t\t\t_editor: null,\n\t\t\t_editorType: null,\n\t\t\t_placeholder: null,\n\n\t\t\tlocateCell: _getGridCellFromNode,\n\t\t\tgetEditorConfig: function (columnName) {\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\treturn column.editor;\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.init){\n\t\t\t\t\tmapping.init(this, grid);\n\t\t\t\t}\n\n\t\t\t\tstore = grid.$gantt.getDatastore(grid.$config.bind);\n\n\t\t\t\tvar self = this;\n\n\t\t\t\thandlers.push(store.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\t\t\t\tif(self._itemId == oldId){\n\t\t\t\t\t\tself._itemId = newId;\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\thandlers.push(store.attachEvent(\"onStoreUpdated\", function(){\n\t\t\t\t\tif(grid.$gantt.getState(\"batchUpdate\").batch_update){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(self.isVisible() && !store.isVisible(self._itemId)){\n\t\t\t\t\t\tself.hide();\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tthis.init = function(){};\n\t\t\t},\n\n\t\t\tgetState: function(){\n\t\t\t\treturn {\n\t\t\t\t\teditor: this._editor,\n\t\t\t\t\teditorType: this._editorType,\n\t\t\t\t\tplaceholder: this._placeholder,\n\t\t\t\t\tid: this._itemId,\n\t\t\t\t\tcolumnName: this._columnName\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tstartEdit: function(itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\n\t\t\t\tif(!store.exists(itemId)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\t\t\t\tif (gantt.isReadonly(store.getItem(itemId))) {\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.show(editorState.id, editorState.columnName);\n\t\t\t\tthis.setValue();\n\n\t\t\t\tthis.callEvent(\"onEditStart\", [editorState]);\n\t\t\t},\n\t\t\tisVisible: function(){\n\t\t\t\treturn !!(this._editor && domHelpers.isChildOf(this._placeholder, document.body));\n\t\t\t},\n\t\t\tshow: function (itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\n\t\t\t\tvar column = grid.getColumn(editorState.columnName);\n\t\t\t\tvar editorConfig = this.getEditorConfig(column.name);\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar editor = grid.$getConfig().editor_types[editorConfig.type];\n\n\t\t\t\tvar placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\t\t\t\tgrid.$grid_data.appendChild(placeholder);\n\t\t\t\teditor.show(editorState.id, column, editorConfig, placeholder);\n\t\t\t\tthis._editor = editor;\n\t\t\t\tthis._placeholder = placeholder;\n\t\t\t\tthis._itemId = editorState.id;\n\t\t\t\tthis._columnName = editorState.columnName;\n\t\t\t\tthis._editorType = editorConfig.type;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onShow){\n\t\t\t\t\tmapping.onShow(this, placeholder, grid);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetValue: function () {\n\t\t\t\tvar state = this.getState();\n\t\t\t\tvar itemId = state.id,\n\t\t\t\t\tcolumnName = state.columnName;\n\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(itemId);\n\t\t\t\t}\n\n\t\t\t\tthis._editor.set_value(value, itemId, column, this._placeholder);\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tfocus: function(){\n\t\t\t\tthis._editor.focus(this._placeholder);\n\t\t\t},\n\n\t\t\tgetValue: function () {\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\t\t\t\treturn this._editor.get_value(this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\t_getItemValue: function() {\n\t\t\t\tvar editorConfig = this.getEditorConfig(this._columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar item = gantt.getTask(this._itemId);\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(this._itemId);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\n\t\t\tisChanged: function(){\n\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\n\t\t\t\tvar value = this._getItemValue();\n\n\t\t\t\treturn this._editor.is_changed(value, this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\thide: function () {\n\t\t\t\tif(!this._itemId)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onHide){\n\t\t\t\t\tmapping.onHide(this, this._placeholder, grid);\n\t\t\t\t}\n\n\t\t\t\tthis._itemId = null;\n\t\t\t\tthis._columnName = null;\n\t\t\t\tthis._editorType = null;\n\t\t\t\tif (!this._placeholder) return;\n\n\t\t\t\tif (this._editor) {\n\t\t\t\t\tthis._editor.hide(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._editor = null;\n\t\t\t\tif (this._placeholder.parentNode) {\n\t\t\t\t\tthis._placeholder.parentNode.removeChild(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._placeholder = null;\n\n\t\t\t\tthis.callEvent(\"onEditEnd\", [{id: itemId, columnName: columnName}]);\n\t\t\t},\n\t\t\tsave: function () {\n\t\t\t\tif(!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tif(!store.exists(itemId)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\t\t\t\tvar editorState = {\n\t\t\t\t\tid: itemId,\n\t\t\t\t\tcolumnName: columnName,\n\t\t\t\t\tnewValue: this.getValue(),\n\t\t\t\t\toldValue: this._getItemValue()\n\t\t\t\t};\n\t\t\t\tif(this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n\t\t\t\t\tif(this._editor.is_valid(editorState.newValue, editorState.id, editorState.columnName, this._placeholder)){\n\n\n\t\t\t\t\t\tvar mapTo = editorConfig.map_to;\n\t\t\t\t\t\tvar value = editorState.newValue;\n\t\t\t\t\t\tif (mapTo != \"auto\") {\n\t\t\t\t\t\t\titem[mapTo] = value;\n\t\t\t\t\t\t\tif (mapTo == \"duration\") {\n\t\t\t\t\t\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t\t\t\t\t\t} else if (mapTo == \"end_date\") {\n\t\t\t\t\t\t\t\titem.start_date = gantt.calculateEndDate({\n\t\t\t\t\t\t\t\t\tstart_date: item.end_date,\n\t\t\t\t\t\t\t\t\tduration: -item.duration,\n\t\t\t\t\t\t\t\t\ttask: item}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (mapTo == \"start_date\") {\n\t\t\t\t\t\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstore.updateItem(itemId);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.callEvent(\"onSave\", [editorState]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.hide();\n\t\t\t},\n\n\t\t\t_findEditableCell: function findEditableCell(start, direction){\n\t\t\t\tvar nextIndex = start;\n\t\t\t\tvar columns = grid.getGridColumns();\n\t\t\t\tvar nextColumn = columns[nextIndex];\n\n\t\t\t\tvar columnName = nextColumn ? nextColumn.name : null;\n\t\t\t\tif(columnName){\n\t\t\t\t\twhile(columnName && !this.getEditorConfig(columnName)){\n\t\t\t\t\t\tcolumnName = this._findEditableCell(start + direction, direction);\n\t\t\t\t\t}\n\t\t\t\t\treturn columnName;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\tgetNextCell: function moveCell(dir){\n\t\t\t\treturn this._findEditableCell(grid.getColumnIndex(this._columnName) + dir, dir);\n\t\t\t},\n\n\t\t\tgetFirstCell: function getFirstCell(){\n\t\t\t\treturn this._findEditableCell(0, 1);\n\t\t\t},\n\n\t\t\tgetLastCell: function getLastCell(){\n\t\t\t\treturn this._findEditableCell(grid.getGridColumns().length - 1, -1);\n\t\t\t},\n\n\t\t\teditNextCell: function nextCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(1)){\n\t\t\t\t\tvar task = this.moveRow(1);\n\t\t\t\t\tcell = this.getFirstCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevCell: function prevCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(-1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(-1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(-1)){\n\t\t\t\t\tvar task = this.moveRow(-1);\n\t\t\t\t\tcell = this.getLastCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveRow: function moveRow(dir) {\n\t\t\t\tvar moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n\t\t\t\tmoveTask = gantt.bind(moveTask, gantt);\n\n\t\t\t\tvar nextItem = moveTask(this._itemId);\n\t\t\t\t// skip readonly rows\n\t\t\t\twhile (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n\t\t\t\t\tnextItem = moveTask(nextItem);\n\t\t\t\t}\n\t\t\t\treturn nextItem;\n\t\t\t},\n\n\t\t\teditNextRow: function nextRow(){\n\t\t\t\tvar row = this.getNextCell(1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevRow: function prevRow(){\n\t\t\t\tvar row = this.getNextCell(-1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdestructor: function(){\n\t\t\t\thandlers.forEach(function(handlerId){\n\t\t\t\t\tstore.detachEvent(handlerId);\n\t\t\t\t});\n\t\t\t\tstore = null;\n\t\t\t\tthis.hide();\n\t\t\t\tthis.detachAllEvents();\n\t\t\t}\n\t\t};\n\n\t\tutils.mixin(controller, keyboardMapping);\n\t\tutils.mixin(controller, eventBus);\n\n\t\treturn controller;\n\t}\n\n\n\tvar inlineEditController = {\n\t\tinit: initConfigs,\n\t\tcreateEditors: createGridEditors\n\t};\n\n\tutils.mixin(inlineEditController, keyboardMapping);\n\tutils.mixin(inlineEditController, eventBus);\n\n\treturn inlineEditController;\n}\n\nmodule.exports = create;","function createResizer(gantt, grid){\n\treturn {\n\t\tinit: function(){},\n\t\tdoOnRender: function(){}\n\t};\n}\n\nmodule.exports = createResizer;","var createStaticBgHelper = function(){\n\treturn {\n\t\trender: function () { },\n\t\tdestroy: function () { }\n\t};\n};\n\nmodule.exports = {\n\tcreate: function(){\n\t\treturn createStaticBgHelper();\n\t}\n};\n\n","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tenv = require(\"../../../utils/env\"),\n\tCell = require(\"./cell\");\n\nvar ScrollbarCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ScrollbarCell, _super);\n\tfunction ScrollbarCell(parent, config, factory, gantt) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tthis.$config = utils.mixin(config, {scroll: \"x\"});\n\t\t_this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n\t\t_this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n\t\t_this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n\t\t_this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n\t\t_this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n\n\t\tthis.$config.hidden = true;\n\t\tvar size = gantt.config.scroll_size;\n\n\t\tif(gantt.env.isIE){\n\t\t\t// full element height/width must be bigger than just a browser scrollbar,\n\t\t\t// otherwise the scrollbar element won't be scrolled on click\n\t\t\tsize += 1;\n\t\t}\n\n\t\tif(this._isHorizontal()){\n\t\t\t_this.$config.height = size;\n\t\t\t_this.$parent.$config.height = size;\n\t\t}else{\n\t\t\t_this.$config.width = size;\n\t\t\t_this.$parent.$config.width = size;\n\t\t}\n\n\t\tthis.$config.scrollPosition = 0;\n\n\t\t_this.$name = \"scroller\";\n\t\treturn _this;\n\t}\n\n\tScrollbarCell.prototype.init = function(container){\n\t\tcontainer.innerHTML = this.$toHTML();\n\t\tthis.$view = container.firstChild;\n\n\t\tif(!this.$view){\n\t\t\tthis.init();\n\t\t}\n\t\tif(this._isVertical()){\n\t\t\tthis._initVertical();\n\t\t}else{\n\t\t\tthis._initHorizontal();\n\t\t}\n\t\tthis._initMouseWheel();\n\t\tthis._initLinkedViews();\n\t};\n\n\tScrollbarCell.prototype.$toHTML = function () {\n\t\tvar className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n\t\treturn \"
\";\n\t};\n\n\tScrollbarCell.prototype._getRootParent = function(){\n\t\tvar parent = this.$parent;\n\t\twhile(parent && parent.$parent){\n\t\t\tparent = parent.$parent;\n\t\t}\n\t\tif(parent){\n\t\t\treturn parent;\n\t\t}\n\t};\n\n\n\tfunction eachCell(root, res){\n\t\tres.push(root);\n\t\tif(root.$cells){\n\t\t\tfor(var i = 0; i < root.$cells.length; i++){\n\t\t\t\teachCell(root.$cells[i], res);\n\t\t\t}\n\t\t}\n\t}\n\tScrollbarCell.prototype._eachView = function(){\n\t\tvar res = [];\n\t\teachCell(this._getRootParent(), res);\n\t\treturn res;\n\t};\n\n\tScrollbarCell.prototype._getLinkedViews = function(){\n\t\tvar views = this._eachView();\n\t\tvar res = [];\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].$config && ((this._isVertical() && views[i].$config.scrollY == this.$id) || (this._isHorizontal() && views[i].$config.scrollX == this.$id)) ){\n\t\t\t\tres.push(views[i]);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\n\tScrollbarCell.prototype._initHorizontal = function(){\n\t\tthis.$scroll_hor = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n\n\t};\n\n\tScrollbarCell.prototype._initLinkedViews = function(){\n\t\tvar views = this._getLinkedViews();\n\t\tvar css = this._isVertical() ?\"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\t//views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n\t\t\tdomHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._initVertical = function(){\n\t\tthis.$scroll_ver = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n\t};\n\n\tScrollbarCell.prototype._updateLinkedViews = function(){\n\t};\n\n\tScrollbarCell.prototype._initMouseWheel = function(){\n\t\tvar ff = env.isFF;\n\t\tif (ff)\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler);\n\t\telse\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler);\n\t};\n\n\n\n\n\tScrollbarCell.prototype.scrollHorizontally = function(left){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_hor.scrollLeft = left;\n\t\tthis.$config.codeScrollLeft = left;\n\t\tleft = this.$scroll_hor.scrollLeft;\n\n\t\tvar views = this._getLinkedViews();\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(left, undefined);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = left;\n\t\tthis.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\tScrollbarCell.prototype.scrollVertically = function(top){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_ver.scrollTop = top;\n\t\ttop = this.$scroll_ver.scrollTop;\n\n\t\tvar views = this._getLinkedViews();\n\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(undefined, top);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = top;\n\t\tthis.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\n\tScrollbarCell.prototype._isVertical = function(){\n\t\treturn this.$config.scroll == \"y\";\n\t};\n\tScrollbarCell.prototype._isHorizontal = function(){\n\t\treturn this.$config.scroll == \"x\";\n\t};\n\tScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n\t\tif(this._isVertical() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\t//in safari we can catch previous onscroll after setting new value from mouse-wheel event\n\t\t//set delay to prevent value drifiting\n\t\tif ((new Date()) - ( this._wheel_time || 0 ) < 100) return true;\n\t\tif (this.$gantt._touch_scroll_active) return;\n\t\tvar left = this.$scroll_hor.scrollLeft;\n\n\t\tthis.scrollHorizontally(left);\n\n\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t};\n\tScrollbarCell.prototype._outerScrollHorizontalHandler = function(e){\n\t\tif(this._isVertical()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.show = function(){\n\t\tthis.$parent.show();\n\t};\n\tScrollbarCell.prototype.hide = function(){\n\t\tthis.$parent.hide();\n\t};\n\n\tScrollbarCell.prototype._getScrollSize = function(){\n\t\tvar scrollSize = 0;\n\t\tvar outerSize = 0;\n\t\tvar isHorizontal = this._isHorizontal();\n\n\t\tvar linked = this._getLinkedViews();\n\t\tvar view;\n\t\tvar scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n\t\t\tinnerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n\t\tvar outerProperty = isHorizontal ? \"x\" : \"y\";\n\t\tvar offset = this._getScrollOffset();\n\n\t\tfor(var i = 0; i < linked.length; i++){\n\t\t\tview = linked[i];\n\t\t\tif(!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n\n\t\t\tvar sizes = view.$content.getSize();\n\t\t\tvar cellScrollSize;\n\t\t\tif(sizes.hasOwnProperty(scrollProperty)){\n\t\t\t\tcellScrollSize = sizes[scrollProperty];\n\t\t\t}else{\n\t\t\t\tcellScrollSize = sizes[innerSizeProperty];\n\t\t\t}\n\n\t\t\tif(offset){\n\t\t\t\t// precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n\t\t\t\tif(sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && (cellScrollSize > (sizes[outerProperty] - offset + 2))){\n\t\t\t\t\tscrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tvar nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n\t\t\t\tvar scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n\t\t\t\tcellScrollSize = cellScrollSize + nonScrollableSize;\n\n\t\t\t\tif(cellScrollSize > scrollableViewPortSize && (cellScrollSize > scrollSize) ){\n\t\t\t\t\t//|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n\n\t\t\t\t\tscrollSize = cellScrollSize;\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\touterScroll: outerSize,\n\t\t\tinnerScroll: scrollSize\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.scroll = function(position){\n\t\tif(this._isHorizontal()){\n\t\t\tthis.scrollHorizontally(position);\n\t\t}else{\n\t\t\tthis.scrollVertically(position);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.getScrollState = function(){\n\t\treturn {\n\t\t\tvisible: this.isVisible(),\n\t\t\tdirection: this.$config.scroll,\n\t\t\tsize: this.$config.outerSize,\n\t\t\tscrollSize: this.$config.scrollSize || 0,\n\t\t\tposition: this.$config.scrollPosition || 0\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.setSize = function(width, height){\n\t\t_super.prototype.setSize.apply(this, arguments);\n\n\t\tvar scrollSizes = this._getScrollSize();\n\n\t\tvar ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n\t\tif(scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll){\n\t\t\tscrollSizes.innerScroll += (ownSize - scrollSizes.outerScroll);\n\t\t}\n\t\tthis.$config.scrollSize = scrollSizes.innerScroll;\n\n\t\tthis.$config.width = width;\n\t\tthis.$config.height = height;\n\t\tthis._setScrollSize(scrollSizes.innerScroll);\n\t};\n\n\tScrollbarCell.prototype.isVisible = function(){\n\t\treturn !!(this.$parent && this.$parent.$view.parentNode);\n\t};\n\n\tScrollbarCell.prototype.shouldShow = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn false;\n\t\t}else if(scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.shouldHide = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\n\tScrollbarCell.prototype.toggleVisibility = function(){\n\t\tif(this.shouldHide()){\n\t\t\tthis.hide();\n\t\t}else if(this.shouldShow()){\n\t\t\tthis.show();\n\t\t}\n\t};\n\t\n\tScrollbarCell.prototype._getScaleOffset = function(view){\n\t\tvar offset = 0;\n\t\tif(view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")){\n\t\t\toffset = view.$content.$getConfig().scale_height;\n\t\t}\n\t\treturn offset;\n\t};\n\n\tScrollbarCell.prototype._getScrollOffset = function(){\n\t\tvar offset = 0;\n\t\tif(this._isVertical()){\n\t\t\tvar parentLayout = this.$parent.$parent;\n\t\t\toffset = Math.max(\n\t\t\t\tthis._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)),\n\t\t\t\tthis._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id))\n\t\t\t\t);\n\t\t}else{\n\t\t\tvar linked = this._getLinkedViews();\n\n\t\t\tfor (var i = 0; i < linked.length; i++) {\n\t\t\t\tvar view = linked[i],\n\t\t\t\t\tvparent = view.$parent;\n\t\t\t\tvar cells = vparent.$cells;\n\n\t\t\t\tvar last = cells[cells.length - 1];\n\n\t\t\t\tif (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n\t\t\t\t\toffset = last.$config.width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\treturn offset || 0;\n\t};\n\n\tScrollbarCell.prototype._setScrollSize = function(size){\n\t\tvar property = this._isHorizontal() ? \"width\" : \"height\";\n\t\tvar scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n\t\tvar offset = this._getScrollOffset();\n\n\t\tvar node = scrollbar.firstChild;\n\n\t\tif(offset){\n\t\t\tif(this._isVertical()){\n\n\t\t\t\tthis.$config.outerSize = (this.$config.height - offset + 3);\n\t\t\t\tscrollbar.style.height = this.$config.outerSize + \"px\";\n\t\t\t\tscrollbar.style.top = (offset-1) + \"px\";\n\t\t\t\tdomHelpers.addClassName(scrollbar, this.$parent._borders.top);\n\t\t\t\tdomHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\t}else{\n\t\t\t\tthis.$config.outerSize = (this.$config.width - offset + 1);\n\t\t\t\tscrollbar.style.width = this.$config.outerSize + \"px\";\n\t\t\t\t//domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n\t\t\t}\n\t\t}else{\n\t\t\tscrollbar.style.top = \"auto\";\n\t\t\tdomHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n\t\t\tdomHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\tthis.$config.outerSize = this.$config.height;\n\t\t}\n\n\t\tnode.style[property] = size + \"px\";\n\t};\n\n\tScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n\t\tif(this._scrollHorizontalHandler() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.$gantt._touch_scroll_active) return;\n\t\tvar top = this.$scroll_ver.scrollTop;\n\t\tvar prev = this._oldTop;\n\t\tif(top == prev) return;\n\n\t\tthis.scrollVertically(top);\n\n\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\n\t};\n\tScrollbarCell.prototype._outerScrollVerticalHandler = function(e){\n\t\tif(this._scrollHorizontalHandler()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._checkWheelTarget = function(targetNode){\n\t\tvar connectedViews = this._getLinkedViews().concat(this);\n\n\t\tfor(var i = 0; i < connectedViews.length; i++){\n\t\t\tvar node = connectedViews[i].$view;\n\t\t\tif(domHelpers.isChildOf(targetNode, node)){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tScrollbarCell.prototype._mouseWheelHandler = function(e){\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(!this._checkWheelTarget(target))\n\t\t\treturn;\n\n\t\tthis._wheel_time = new Date();\n\n\t\tvar res = {};\n\t\tvar ff = env.isFF;\n\t\tvar wx = ff ? (e.deltaX*-20) : e.wheelDeltaX*2;\n\t\tvar wy = ff ? (e.deltaY*-40) : e.wheelDelta;\n\n\t\tif(e.shiftKey && !(e.deltaX || e.wheelDeltaX)){\n\t\t\t// shift+mousewheel for horizontal scroll\n\t\t\twx = wy*2;\n\t\t\twy = 0;\n\t\t}\n\n\t\tif (wx && Math.abs(wx) > Math.abs(wy)){\n\t\t\tif(this._isVertical()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.x) return true;//no horisontal scroll, must not block scrolling\n\t\t\tif(!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n\n\t\t\tvar dir = wx/-40;\n\t\t\tvar oldLeft = this._oldLeft;\n\t\t\tvar left = oldLeft+dir*30;\n\t\t\tthis.scrollHorizontally(left);\n\t\t\tthis.$scroll_hor.scrollLeft = left;\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldLeft == this.$scroll_hor.scrollLeft){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t\t} else {\n\t\t\tif(this._isHorizontal()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.y) return true;//no vertical scroll, must not block scrolling\n\t\t\tif(!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n\n\t\t\tvar dir = wy/-40;\n\t\t\tif (typeof wy == \"undefined\")\n\t\t\t\tdir = e.detail;\n\n\t\t\tvar oldTop = this._oldTop;\n\t\t\tvar top = this.$scroll_ver.scrollTop+dir*30;\n\n\t\t\t//if(!this.$gantt.config.prevent_default_scroll &&\n\t\t\t//\t(this.$gantt._cached_scroll_pos && ((this.$gantt._cached_scroll_pos.y == top) || (this.$gantt._cached_scroll_pos.y <= 0 && top <= 0)))) return true;\n\n\n\t\t\tthis.scrollVertically(top);\n\t\t\tthis.$scroll_ver.scrollTop = top;\n\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldTop == this.$scroll_ver.scrollTop){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\t\t}\n\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\te.cancelBubble=true;\n\t\treturn false;\n\t};\n\n\treturn ScrollbarCell;\n})(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n\tutils = require(\"../../../utils/utils\"),\n\tCell = require(\"./cell\");\n\nvar ViewCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewCell, _super);\n\tfunction ViewCell(parent, config, factory) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(config.view){\n\t\t\tif(config.id){\n\t\t\t\t// pass id to the nested view\n\t\t\t\tthis.$id = utils.uid();\n\t\t\t}\n\t\t\tvar childConfig = utils.copy(config);\n\t\t\tdelete childConfig.config;\n\t\t\tdelete childConfig.templates;\n\n\t\t\tthis.$content = this.$factory.createView(config.view, this, childConfig, this);\n\t\t\tif(!this.$content)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t_this.$name = \"viewCell\";\n\t\treturn _this;\n\t}\n\n\tViewCell.prototype.destructor = function(){\n\t\tthis.clear();\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tViewCell.prototype.clear = function(){\n\n\t\tthis.$initialized = false;\n\n\t\t// call destructor\n\t\tif (this.$content){\n\t\t\tvar method = this.$content.unload || this.$content.destructor;\n\t\t\tif (method){\n\t\t\t\tmethod.call(this.$content);\n\t\t\t}\n\t\t}\n\n\t\t_super.prototype.clear.call(this);\n\n\t};\n\n\tViewCell.prototype.scrollTo = function(left, top){\n\n\t\tif(this.$content && this.$content.scrollTo){\n\t\t\tthis.$content.scrollTo(left, top);\n\t\t}else{\n\t\t\t_super.prototype.scrollTo.call(this, left, top);\n\t\t}\n\t};\n\n\tViewCell.prototype._setContentSize = function(x, y){\n\t\tvar borders = this._getBorderSizes();\n\t\tvar outerX = x + borders.horizontal;\n\t\tvar outerY = y + borders.vertical;\n\t\tthis.$config.width = outerX;\n\t\tthis.$config.height = outerY;\n\t};\n\n\tViewCell.prototype.setSize = function(x, y){\n\t\t_super.prototype.setSize.call(this, x, y);\n\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (!this.$initialized) {\n\t\t\t\tthis.$initialized = true;\n\t\t\t\tvar header = this.$view.childNodes[0];\n\t\t\t\tvar content = this.$view.childNodes[1];\n\t\t\t\tif(!content) content = header;\n\n\t\t\t\t/*if(this.$content.$config){\n\t\t\t\t\tthis.$content.$config.width = this.$lastSize.contentX;\n\t\t\t\t\tthis.$content.$config.height = this.$lastSize.contentY;\n\t\t\t\t}*/\n\t\t\t\tthis.$content.init(content);\n\t\t\t}\n\t\t}\n\t};\n\n\tViewCell.prototype.setContentSize = function(){\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (this.$initialized) {\n\t\t\t\tthis.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tViewCell.prototype.getContentSize = function(){\n\t\tvar size = _super.prototype.getContentSize.call(this);\n\n\t\tif(this.$content && this.$initialized){\n\t\t\tvar childSize = this.$content.getSize();\n\t\t\tsize.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n\t\t\tsize.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n\t\t}\n\n\t\tvar borders = this._getBorderSizes();\n\t\tsize.width += borders.horizontal;\n\t\tsize.height += borders.vertical;\n\n\t\treturn size;\n\t};\n\n\treturn ViewCell;\n}(Cell));\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n\tLayout = require(\"./layout\"),\n\tCell = require(\"./cell\");\n\nvar ViewLayout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewLayout, _super);\n\tfunction ViewLayout(parent, config, factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tfor (var i = 0; i < _this.$cells.length; i++) {\n\t\t\t_this.$cells[i].$config.hidden = (i !== 0);\n\t\t}\n\t\t_this.$cell = _this.$cells[0];\n\t\t_this.$name = \"viewLayout\";\n\n\t\treturn _this;\n\t}\n\tViewLayout.prototype.cell = function (id) {\n\t\tvar cell = _super.prototype.cell.call(this, id);\n\t\tif (!cell.$view) {\n\t\t\tthis.$fill(null, this);\n\t\t}\n\t\treturn cell;\n\t};\n\tViewLayout.prototype.moveView = function (view) {\n\t\tvar body = this.$view;\n\t\tif (this.$cell) {\n\t\t\tthis.$cell.$config.hidden = true;\n\t\t\tbody.removeChild(this.$cell.$view);\n\t\t}\n\t\tthis.$cell = view;\n\t\tbody.appendChild(view.$view);\n\t};\n\tViewLayout.prototype.setSize = function (x, y) {\n\t\tCell.prototype.setSize.call(this, x, y);\n\t};\n\n\tViewLayout.prototype.setContentSize = function(){\n\t\tvar size = this.$lastSize;\n\t\tthis.$cell.setSize(size.contentX, size.contentY);\n\t};\n\n\tViewLayout.prototype.getSize = function () {\n\t\tvar sizes = _super.prototype.getSize.call(this);\n\t\tif (this.$cell) {\n\t\t\tvar cellSize = this.$cell.getSize();\n\t\t\tif (this.$config.byMaxSize) {\n\t\t\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\t\t\tvar otherCell = this.$cells[i].getSize();\n\t\t\t\t\tfor (var cell in cellSize) {\n\t\t\t\t\t\tcellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var size in sizes) {\n\t\t\t\tsizes[size] = sizes[size] || cellSize[size];\n\t\t\t}\n\t\t\tsizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n\t\t}\n\t\treturn sizes;\n\t};\n\treturn ViewLayout;\n}(Layout));\n\nmodule.exports = ViewLayout;","var rendererFactory = function(gantt){\n\tvar services = gantt.$services;\n\n\t//hash of dom elements is needed to redraw single bar/link\n\tvar task_area_pulls = {},\n\t\ttask_area_renderers = {};\n\n\tfunction getRenderer(id, layer, node) {\n\n\t\tif (task_area_renderers[id])\n\t\t\treturn task_area_renderers[id];\n\n\t\tif (!layer.renderer)\n\t\t\tgantt.assert(false, \"Invalid renderer call\");\n\n\t\tvar renderOne = function(item){\n\t\t\treturn layer.renderer.call(this, item, layer.host);\n\t\t} ;\n\n\t\tvar filter = layer.filter;\n\n\t\tif (node)\n\t\t\tnode.setAttribute(services.config().layer_attribute, true);\n\n\t\ttask_area_renderers[id] = {\n\t\t\trender_item: function (item, container) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tif (!filter(item)) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar dom = renderOne.call(gantt, item);\n\t\t\t\tthis.append(item, dom, container);\n\n\t\t\t},\n\n\t\t\tclear: function (container) {\n\n\t\t\t\tthis.rendered = task_area_pulls[id] = {};\n\t\t\t\tif(!layer.append)\n\t\t\t\t\tthis.clear_container(container);\n\t\t\t},\n\t\t\tclear_container: function (container) {\n\t\t\t\tcontainer = container || node;\n\t\t\t\tif (container)\n\t\t\t\t\tcontainer.innerHTML = \"\";\n\t\t\t},\n\t\t\trender_items: function (items, container) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tvar buffer = document.createDocumentFragment();\n\t\t\t\tthis.clear(container);\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\n\t\t\t\t\tthis.render_item(items[i], buffer);\n\t\t\t\t}\n\n\t\t\t\tcontainer.appendChild(buffer);\n\t\t\t},\n\t\t\tappend: function (item, node, container) {\n\t\t\t\tif (!node) {\n\t\t\t\t\tif (this.rendered[item.id]) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n\t\t\t\t\tthis.replace_item(item.id, node);\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item.id] = node;\n\n\t\t\t},\n\t\t\treplace_item: function (item_id, newNode) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.replaceChild(newNode, item);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item_id] = newNode;\n\t\t\t},\n\t\t\tremove_item: function (item_id) {\n\t\t\t\tthis.hide(item_id);\n\t\t\t\tdelete this.rendered[item_id];\n\t\t\t},\n\t\t\thide: function (item_id) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.removeChild(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: function (item) {\n\t\t\t\tvar dom = this.rendered[item.id];\n\t\t\t\tif (dom) {\n\t\t\t\t\tif (!dom.parentNode) {\n\t\t\t\t\t\tthis.append(item, dom, node);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.render_item(item, node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchange_id: function (oldid, newid) {\n\t\t\t\tthis.rendered[newid] = this.rendered[oldid];\n\t\t\t\tdelete this.rendered[oldid];\n\t\t\t},\n\t\t\trendered: task_area_pulls[id],\n\t\t\tnode: node,\n\t\t\tdestructor: function () {\n\t\t\t\tthis.clear();\n\t\t\t\tdelete task_area_renderers[id];\n\t\t\t\tdelete task_area_pulls[id];\n\t\t\t}\n\t\t};\n\n\t\treturn task_area_renderers[id];\n\t}\n\n\n\tfunction clearRenderers() {\n\t\tfor (var i in task_area_renderers) {\n\t\t\tgetRenderer(i).destructor();\n\t\t}\n\t}\n\n\treturn {\n\t\tgetRenderer: getRenderer,\n\t\tclearRenderers: clearRenderers\n\t};\n\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\nvar utils = require(\"../../../utils/utils\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar layerFactory = function(gantt){\n\n\tvar renderFactory = renderFactoryProvider(gantt);\n\treturn {\n\tcreateGroup: function (get_container, rel_root, defaultFilters) {\n\n\t\tvar renderGroup = {\n\t\t\ttempCollection: [],\n\t\t\trenderers: {},\n\t\t\tcontainer: get_container,\n\t\t\tfilters: [],\n\t\t\tgetLayers: function () {\n\t\t\t\tthis._add();// add pending layers\n\n\t\t\t\tvar res = [];\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tres.push(this.renderers[i]);\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\tgetLayer: function (id) {\n\t\t\t\treturn this.renderers[id];\n\t\t\t},\n\t\t\t_add: function (layer) {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.id = layer.id || utils.uid();\n\t\t\t\t\tthis.tempCollection.push(layer);\n\t\t\t\t}\n\n\t\t\t\tvar container = this.container();\n\n\t\t\t\tvar pending = this.tempCollection;\n\t\t\t\tfor (var i = 0; i < pending.length; i++) {\n\t\t\t\t\tlayer = pending[i];\n\n\t\t\t\t\tif (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n\n\t\t\t\t\tvar node = layer.container,\n\t\t\t\t\t\tid = layer.id,\n\t\t\t\t\t\ttopmost = layer.topmost;\n\t\t\t\t\tif (!node.parentNode) {\n\t\t\t\t\t\t//insert on top or below the tasks\n\t\t\t\t\t\tif (topmost) {\n\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar rel = rel_root ? rel_root() : container.firstChild;\n\t\t\t\t\t\t\tif (rel)\n\t\t\t\t\t\t\t\tcontainer.insertBefore(node, rel);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderers[id] = renderFactory.getRenderer(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlayer,\n\t\t\t\t\t\tnode\n\t\t\t\t\t);\n\t\t\t\t\tthis.tempCollection.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t},\n\t\t\taddLayer: function (config) {\n\t\t\t\t//config = prepareConfig(config);\n\t\t\t\tif(config){\n\t\t\t\t\tif(typeof config == \"function\"){\n\t\t\t\t\t\tconfig = {renderer: config};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(config.filter === undefined){\n\t\t\t\t\t\tconfig.filter = mergeFilters(defaultFilters || []);\n\t\t\t\t\t}else if(config.filter instanceof Array){\n\t\t\t\t\t\tconfig.filter.push(defaultFilters);\n\t\t\t\t\t\tconfig.filter = mergeFilters(config.filter);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!config.container){\n\t\t\t\t\t\tconfig.container = document.createElement(\"div\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._add(config);\n\t\t\t\treturn (config ? config.id : undefined);\n\t\t\t},\n\t\t\teachLayer: function(code){\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tcode(this.renderers[i]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tremoveLayer: function (id) {\n\t\t\t\tif(!this.renderers[id])\n\t\t\t\t\treturn;\n\t\t\t\tthis.renderers[id].destructor();\n\t\t\t\tdelete this.renderers[id];\n\t\t\t},\n\t\t\tclear: function () {\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tthis.renderers[i].destructor();\n\t\t\t\t}\n\t\t\t\tthis.renderers = {};\n\t\t\t}//,\n\t\t\t//prepareConfig: prepareConfig\n\t\t};\n\n\t\tgantt.attachEvent(\"onDestroy\", function(){\n\t\t\trenderGroup.clear();\n\t\t\trenderGroup = null;\n\t\t});\n\n\t\treturn renderGroup;\n\t}\n};};\n\n\nfunction mergeFilters(filter_methods){\n\tif(!(filter_methods instanceof Array)){\n\t\tfilter_methods = Array.prototype.slice.call(arguments, 0);\n\t}\n\n\treturn function(obj){\n\t\tvar res = true;\n\t\tfor(var i = 0, len = filter_methods.length; i < len; i++){\n\t\t\tvar filter_method = filter_methods[i];\n\t\t\tif(filter_method){\n\t\t\t\tres = res && (filter_method(obj.id, obj) !== false);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t};\n}\n\n\nmodule.exports = layerFactory;\n","var createLayerFactory = require(\"./render/layer_engine\");\n\nvar createLayerEngine = function(gantt){\n\tvar factory = createLayerFactory(gantt);\n\treturn {\n\t\tgetDataRender: function(name){\n\t\t\treturn gantt.$services.getService(\"layer:\" + name) || null;\n\t\t},\n\t\tcreateDataRender: function(config){\n\t\t\tvar name = config.name,\n\t\t\t\tdefaultContainer = config.defaultContainer,\n\t\t\t\tpreviusSiblingContainer = config.defaultContainerSibling;\n\n\t\t\tvar layers = factory.createGroup(\n\t\t\t\tdefaultContainer,\n\t\t\t\tpreviusSiblingContainer,\n\t\t\t\tfunction(itemId, item){\n\t\t\t\t\tif(layers.filters){\n\t\t\t\t\t\tfor(var i = 0; i < layers.filters.length; i++){\n\t\t\t\t\t\t\tif(layers.filters[i](itemId, item) === false){\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tgantt.$services.setService(\"layer:\" + name, function(){\n\t\t\t\treturn layers;\n\t\t\t});\n\n\t\t\tgantt.attachEvent(\"onGanttReady\", function () {\n\t\t\t\tlayers.addLayer();// init layers on start\n\t\t\t});\n\n\t\t\treturn layers;\n\t\t},\n\t\tinit: function(){\n\t\t\tvar taskLayers = this.createDataRender({\n\t\t\t\tname: \"task\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdefaultContainerSibling: function(){\n\t\t\t\t\tif(gantt.$task_links){\n\t\t\t\t\t\treturn gantt.$task_links;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_links;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfilter: function(item){\n\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\tvar linkLayers = this.createDataRender({\n\t\t\t\tname: \"link\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\treturn {\n\t\t\t\taddTaskLayer: function(config){\n\t\t\t\t\treturn taskLayers.addLayer(config);\n\t\t\t\t},\n\n\t\t\t\t/*getTaskLayer: function(id){\n\t\t\t\t\treturn taskLayers.getLayer(id);\n\t\t\t\t},*/\n\n\t\t\t\t_getTaskLayers: function(){\n\t\t\t\t\treturn taskLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveTaskLayer: function(id){\n\t\t\t\t\ttaskLayers.removeLayer(id);\n\t\t\t\t},\n\t\t\t\t/*eachTaskLayer: function(code){\n\t\t\t\t\ttaskLayers.eachLayer(code);\n\t\t\t\t},*/\n\t\t\t\t_clearTaskLayers: function(){\n\t\t\t\t\ttaskLayers.clear();\n\t\t\t\t},\n\t\t\t\taddLinkLayer: function(config){\n\t\t\t\t\treturn linkLayers.addLayer(config);\n\t\t\t\t},\n\t\t\t\t/*getLinkLayer: function(id){\n\t\t\t\t\treturn linkLayers.getLayer(id);\n\t\t\t\t},*/\n\t\t\t\t_getLinkLayers: function(){\n\t\t\t\t\treturn linkLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveLinkLayer: function(id){\n\t\t\t\t\tlinkLayers.removeLayer(id);\n\t\t\t\t},\n\t\t\t\t/*eachLinkLayer: function(code){\n\t\t\t\t\tlinkLayers.eachLayer(code);\n\t\t\t\t},*/\n\t\t\t\t_clearLinkLayers: function(){\n\t\t\t\t\tlinkLayers.clear();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"../../utils/dom_helpers\");\n\nvar createMouseHandler = (function(domHelpers) {\n\treturn function (gantt) {\n\t\tvar eventHandlers = {\n\t\t\t\"click\": {},\n\t\t\t\"doubleclick\": {},\n\t\t\t\"contextMenu\": {}\n\t\t};\n\n\t\tfunction addEventTarget(event, className, handler, root) {\n\t\t\tif(!eventHandlers[event][className]){\n\t\t\t\teventHandlers[event][className] = [];\n\t\t\t}\n\n\t\t\teventHandlers[event][className].push({\n\t\t\t\thandler: handler,\n\t\t\t\troot: root\n\t\t\t});\n\t\t}\n\n\t\tfunction callHandler(eventName, className, root, args) {\n\t\t\tvar handlers = eventHandlers[eventName][className];\n\t\t\tif(handlers){\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\t\tif(!(root || handlers[i].root) || handlers[i].root === root){\n\t\t\t\t\t\thandlers[i].handler.apply(this, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.click);\n\t\t\tvar res = true;\n\t\t\tif (id !== null) {\n\t\t\t\tres = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n\t\t\t} else {\n\t\t\t\tgantt.callEvent(\"onEmptyClick\", [e]);\n\t\t\t}\n\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (id && gantt.getTask(id) && gantt.config.select_task && !gantt.config.multiselect) {\n\t\t\t\t\tgantt.selectTask(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onContextMenu(e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target || e.srcElement,\n\t\t\t\ttaskId = gantt.locate(src),\n\t\t\t\tlinkId = gantt.locate(src, gantt.config.link_attribute);\n\n\t\t\tvar res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\t\t\tif (!res) {\n\t\t\t\tif (e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t\telse\n\t\t\t\t\te.returnValue = false;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tfunction findEventHandlers(e, hash){\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar handlers = [];\n\t\t\twhile (trg) {\n\t\t\t\tvar css = domHelpers.getClassName(trg);\n\t\t\t\tif (css) {\n\t\t\t\t\tcss = css.split(\" \");\n\t\t\t\t\tfor (var i = 0; i < css.length; i++) {\n\t\t\t\t\t\tif (!css[i]) continue;\n\t\t\t\t\t\tif (hash[css[i]]) {\n\t\t\t\t\t\t\tvar delegateHandlers = hash[css[i]];\n\n\t\t\t\t\t\t\tfor(var h = 0; h < delegateHandlers.length; h++){\n\t\t\t\t\t\t\t\tif(delegateHandlers[h].root){\n\t\t\t\t\t\t\t\t\tif(!domHelpers.isChildOf(trg, delegateHandlers[h].root)){\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thandlers.push(delegateHandlers[h].handler);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrg = trg.parentNode;\n\t\t\t}\n\t\t\treturn handlers;\n\t\t}\n\n\t\tfunction callEventHandlers(handlers, e, id){\n\t\t\tvar res = true;\n\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n\t\t\t\tres = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\n\n\t\tfunction onDoubleClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.doubleclick);\n\t\t\t// when doubleclick fired not on task, id === null\n\t\t\tvar res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (id !== null && gantt.getTask(id)) {\n\t\t\t\t\tif (res && gantt.config.details_on_dblclick) {\n\t\t\t\t\t\tgantt.showLightbox(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\tif (gantt.checkEvent(\"onMouseMove\")) {\n\t\t\t\tvar id = gantt.locate(e);\n\t\t\t\tgantt._last_move_event = e;\n\t\t\t\tgantt.callEvent(\"onMouseMove\", [id, e]);\n\t\t\t}\n\t\t}\n\n\t\tfunction detach(eventName, className, handler, root) {\n\t\t\tif (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n\t\t\t\tvar handlers = eventHandlers[eventName];\n\t\t\t\tvar elementHandlers = handlers[className];\n\t\t\t\tfor(var i = 0; i < elementHandlers.length; i++){\n\t\t\t\t\tif(elementHandlers[i].root == root){\n\t\t\t\t\t\telementHandlers.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!elementHandlers.length){\n\t\t\t\t\tdelete handlers[className];\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar domEvents = gantt._createDomEventScope();\n\n\t\tfunction reset(node){\n\n\t\t\tdomEvents.detachAll();\n\n\t\t\tif(node){\n\t\t\t\tdomEvents.attach(node, \"click\", onClick);\n\t\t\t\tdomEvents.attach(node, \"dblclick\", onDoubleClick);\n\t\t\t\tdomEvents.attach(node, \"mousemove\", onMouseMove);\n\t\t\t\tdomEvents.attach(node, \"contextmenu\", onContextMenu);\n\t\t\t}\n\t\t}\n\n\n\n\t\treturn {\n\t\t\treset: reset,\n\t\t\tglobal: function(event, classname, handler){\n\t\t\t\taddEventTarget(event, classname, handler, null);\n\t\t\t},\n\t\t\tdelegate: addEventTarget,\n\t\t\tdetach: detach,\n\t\t\tcallHandler: callHandler,\n\t\t\tonDoubleClick: onDoubleClick,\n\t\t\tonMouseMove: onMouseMove,\n\t\t\tonContextMenu: onContextMenu,\n\t\t\tonClick: onClick,\n\t\t\tdestructor: function(){\n\t\t\t\treset();\n\t\t\t\teventHandlers = null;\n\t\t\t\tdomEvents = null;\n\t\t\t}\n\n\t\t};\n\t};\n\n})(domHelpers);\n\n\nmodule.exports = {\n\tinit:createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction ViewSettings(config){\n\tutils.mixin(this, config, true);\n}\n\n\nfunction extendSettings (store, parentSettings){\n\tvar own = this.$config[store];\n\n\tif(own){\n\t\tif(own instanceof ViewSettings){\n\t\t\treturn own;\n\t\t}else{\n\t\t\tViewSettings.prototype = parentSettings;\n\t\t\tthis.$config[store] = new ViewSettings(own);\n\t\t\treturn this.$config[store];\n\t\t}\n\t}else{\n\t\treturn parentSettings;\n\t}\n}\n\nvar configurable = function(parentView){\n\tvar parentConfig,\n\t\tparentTemplates;\n\n\treturn {\n\t\t$getConfig: function(){\n\t\t\tif(!parentConfig){\n\t\t\t\tparentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n\t\t\t}\n\n\t\t\treturn extendSettings.call(this, \"config\", parentConfig);\n\t\t},\n\t\t$getTemplates: function(){\n\t\t\tif(!parentTemplates){\n\t\t\t\tparentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n\t\t\t}\n\n\t\t\treturn extendSettings.call(this, \"templates\", parentTemplates);\n\t\t}\n\t};\n};\n\nmodule.exports = function(obj, parent){\n\tutils.mixin(obj, configurable(parent));\n};","var utils = require(\"../../utils/utils\"),\n\tconfigurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt){\n\tvar views = {};\n\n\tfunction ui(cell, parentView) {\n\t\tvar content;\n\t\tvar view = \"cell\";\n\t\tif (cell.view){\n\t\t\tview = \"viewcell\";\n\t\t}else if (cell.resizer) {\n\t\t\tview = \"resizer\";\n\t\t}\n\t\telse if (cell.rows || cell.cols) {\n\t\t\tview = \"layout\";\n\t\t}\n\t\telse if (cell.views) {\n\t\t\tview = \"multiview\";\n\t\t}\n\n\t\tcontent = createView.call(this, view, null, cell, parentView);\n\t\treturn content;\n\t}\n\t\n\tvar createdViews = {};\n\n\tfunction createView(name, parent, config, parentView) {\n\t\tvar creator = views[name];\n\n\t\tif(!creator || !creator.create)\n\t\t\treturn false;\n\n\t\tif(name == \"resizer\" && !config.mode){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.mode = \"x\";\n\t\t\t}else{\n\t\t\t\tconfig.mode = \"y\";\n\t\t\t}\n\t\t}\n\n\t\tif(name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.scroll = \"y\";\n\t\t\t}else{\n\t\t\t\tconfig.scroll = \"x\";\n\t\t\t}\n\t\t}\n\n\t\tvar config = utils.copy(config);\n\n\t\tif(!config.id && !createdViews[config.view]){\n\t\t\tconfig.id = config.view;\n\t\t}\n\n\t\tif(config.id && !config.css){\n\t\t\tconfig.css = config.id+\"_cell\";\n\t\t}\n\n\t\tvar view = new creator.create(parent, config, this, gantt);\n\n\t\tif(creator.configure){\n\t\t\tcreator.configure(view);\n\t\t}\n\n\t\tconfigurable(view, parentView);\n\t\tif(!view.$id){\n\t\t\tview.$id = config.id || gantt.uid();\n\t\t}\n\n\t\tif(!view.$parent && typeof parent == \"object\"){\n\t\t\tview.$parent = parent;\n\t\t}\n\t\tif(!view.$config){\n\t\t\tview.$config = config;\n\t\t}\n\n\t\tif(createdViews[view.$id]){\n\t\t\tview.$id = gantt.uid();\n\t\t}\n\n\t\tcreatedViews[view.$id] = view;\n\n\t\treturn view;\n\t}\n\n\tfunction reset(){\n\t\tcreatedViews = {};\n\t}\n\n\tfunction register(name, viewConstructor, configure){\n\t\tviews[name] = {create: viewConstructor, configure: configure};\n\t}\n\n\tfunction getView(id){\n\t\treturn createdViews[id];\n\t}\n\n\tvar factory = {\n\t\tinitUI:ui,\n\t\treset: reset,\n\t\tregisterView: register,\n\t\tcreateView: createView,\n\t\tgetView: getView\n\t};\n\n\treturn factory;\n};\n\nmodule.exports = {\n\tcreateFactory: uiFactory\n};\n\n","var uiFactory = require(\"./ui_factory\"),\n\tmouseEvents = require(\"./mouse\"),\n\tcreateLayers = require(\"./gantt_layers\"),\n\tCell = require(\"./layout/cell\"),\n\tLayout = require(\"./layout/layout\"),\n\tViewLayout = require(\"./layout/view_layout\"),\n\tViewCell = require(\"./layout/view_cell\"),\n\tResizer = require(\"./layout/resizer_cell\"),\n\tScrollbar = require(\"./layout/scrollbar_cell\"),\n\tTimeline = require(\"./timeline/timeline\"),\n\tGrid = require(\"./grid/grid\"),\n\tResourceGrid = require(\"./grid/resource_grid\"),\n\tResourceTimeline = require(\"./timeline/resource_timeline\"),\n\tResourceHistogram = require(\"./timeline/resource_histogram\");\n\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\n\nvar renderTaskBar = require(\"./render/task_bar_render\"),\n\trenderSplitTaskBar = require(\"./render/task_split_render\"),\n\trenderTaskBg = require(\"./render/task_bg_render\"),\n\trenderLink = require(\"./render/link_render\"),\n\tgridRenderer = require(\"./render/task_grid_line_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt){\n\tfunction attachInitializer(view, initializer){\n\t\tvar ext = initializer(gantt);\n\t\tif(ext.onCreated)\n\t\t\text.onCreated(view);\n\t\tview.attachEvent(\"onReady\", function(){\n\t\t\tif(ext.onInitialized)\n\t\t\t\text.onInitialized(view);\n\t\t});\n\t\tview.attachEvent(\"onDestroy\", function(){\n\t\t\tif(ext.onDestroyed)\n\t\t\t\text.onDestroyed(view);\n\t\t});\n\t}\n\n\tvar factory = uiFactory.createFactory(gantt);\n\tfactory.registerView(\"cell\", Cell);\n\tfactory.registerView(\"resizer\", Resizer);\n\tfactory.registerView(\"scrollbar\", Scrollbar);\n\tfactory.registerView(\"layout\", Layout, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"main\"){\n\t\t\tattachInitializer(view, mainLayoutInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"viewcell\", ViewCell);\n\tfactory.registerView(\"multiview\", ViewLayout);\n\tfactory.registerView(\"timeline\", Timeline, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"timeline\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainTimelineInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"grid\", Grid, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"grid\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainGridInitializer);\n\t\t}\n\t});\n\n\tfactory.registerView(\"resourceGrid\", ResourceGrid);\n\tfactory.registerView(\"resourceTimeline\", ResourceTimeline);\n\tfactory.registerView(\"resourceHistogram\", ResourceHistogram);\n\n\tvar layersEngine = createLayers(gantt);\n\n\tvar inlineEditors = gridEditorsFactory(gantt);\n\n\tgantt.ext.inlineEditors = inlineEditors;\n\tgantt.ext._inlineEditors = inlineEditors;\n\tinlineEditors.init(gantt);\n\n\treturn {\n\t\tfactory:factory,\n\t\tmouseEvents: mouseEvents.init(gantt),\n\t\tlayersApi: layersEngine.init(),\n\t\trender:{\n\t\t\tgridLine: gridRenderer(gantt),\n\t\t\ttaskBg: renderTaskBg(gantt),\n\t\t\ttaskBar: renderTaskBar(gantt),\n\t\t\ttaskSplitBar: renderSplitTaskBar(gantt),\n\t\t\tlink: renderLink(gantt)\n\t\t},\n\t\tlayersService: {\n\t\t\tgetDataRender: function(name){\n\t\t\t\treturn layersEngine.getDataRender(name, gantt);\n\t\t\t},\n\t\t\tcreateDataRender: function(config){\n\t\t\t\treturn layersEngine.createDataRender(config, gantt);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tinit: initUI\n};","var utils = require(\"../utils/utils\");\nvar domHelpers = require(\"../utils/dom_helpers\");\n\nmodule.exports = function(gantt) {\n\n\tvar boxAttribute = \"data-dhxbox\";\n\n\tvar _dhx_msg_cfg = null;\n\n\tfunction callback(config, result) {\n\t\tvar usercall = config.callback;\n\t\tmodalBox.hide(config.box);\n\n\t\t_dhx_msg_cfg = config.box = null;\n\t\tif (usercall)\n\t\t\tusercall(result);\n\t}\n\n\tfunction modal_key(e) {\n\t\tif (_dhx_msg_cfg) {\n\t\t\te = e || event;\n\t\t\tvar code = e.which || event.keyCode;\n\t\t\tvar preventDefault = false;\n\n\t\t\tif (messageBox.keyboard) {\n\t\t\t\tif (code == 13 || code == 32) {\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\n\t\t\t\t\tvar target = e.target || e.srcElement;\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\n\t\t\t\t\t\tpreventDefault = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (code == 27) {\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\n\t\t\t\t\tpreventDefault = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (preventDefault) {\n\t\t\t\tif (e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t\treturn !(e.cancelBubble = true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tgantt.event(document, \"keydown\", modal_key, true);\n\n\tfunction modality(mode) {\n\t\tif (!modality.cover) {\n\t\t\tmodality.cover = document.createElement(\"div\");\n\t\t\t//necessary for IE only\n\t\t\tmodality.cover.onkeydown = modal_key;\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\n\t\t\tdocument.body.appendChild(modality.cover);\n\t\t}\n\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\n\t}\n\n\tfunction button(text, className, result) {\n\t\tvar buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\t\tvar name = className.toLowerCase().replace(/ /g, \"_\");\n\t\tvar button_css = \"gantt_\" + name + \"_button\" + \" dhtmlx_\" + name + \"_button\"; // dhtmlx_ok_button, dhtmlx_click_me_button\n\t\treturn \"
\" + text + \"
\";\n\t}\n\n\tfunction info(text) {\n\t\tif (!messageBox.area) {\n\t\t\tmessageBox.area = document.createElement(\"div\");\n\t\t\tmessageBox.area.className = \"gantt_message_area dhtmlx_message_area\";\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\n\t\t\tdocument.body.appendChild(messageBox.area);\n\t\t}\n\n\t\tmessageBox.hide(text.id);\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\n\t\tmessage.className = \"gantt-info dhtmlx-info gantt-\" + text.type + \" dhtmlx-\" + text.type;\n\t\tmessage.onclick = function () {\n\t\t\tmessageBox.hide(text.id);\n\t\t\ttext = null;\n\t\t};\n\n\t\tgantt._waiAria.messageInfoAttr(message);\n\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\n\t\telse\n\t\t\tmessageBox.area.appendChild(message);\n\n\t\tif (text.expire > 0)\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\n\t\t\t\tmessageBox.hide(text.id);\n\t\t\t}, text.expire);\n\n\t\tmessageBox.pull[text.id] = message;\n\t\tmessage = null;\n\n\t\treturn text.id;\n\t}\n\n\tfunction getFirstDefined() {\n\t\tvar values = [].slice.apply(arguments, [0]);\n\n\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\tif (values[i]) {\n\t\t\t\treturn values[i];\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction _boxStructure(config, ok, cancel) {\n\t\tvar box = document.createElement(\"div\");\n\n\t\tvar contentId = utils.uid();\n\t\tgantt._waiAria.messageModalAttr(box, contentId);\n\n\n\t\tbox.className = \" gantt_modal_box dhtmlx_modal_box gantt-\" + config.type + \" dhtmlx-\" + config.type;\n\t\tbox.setAttribute(boxAttribute, 1);\n\n\t\tvar inner = '';\n\n\t\tif (config.width)\n\t\t\tbox.style.width = config.width;\n\t\tif (config.height)\n\t\t\tbox.style.height = config.height;\n\t\tif (config.title)\n\t\t\tinner += '
' + config.title + '
';\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\n\t\tif (ok)\n\t\t\tinner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n\t\tif (cancel)\n\t\t\tinner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n\t\tif (config.buttons) {\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\n\t\t\t\tvar btn = config.buttons[i];\n\t\t\t\tif (typeof btn == \"object\") {\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n\t\t\t\t\tvar label = btn.label;\n\t\t\t\t\tvar css = btn.css || (\"gantt_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\n\t\t\t\t\tvar value = btn.value || i;\n\t\t\t\t\tinner += button(label, css, value);\n\t\t\t\t} else {\n\t\t\t\t\tinner += button(btn, btn, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner += '
';\n\t\tbox.innerHTML = inner;\n\n\t\tif (config.content) {\n\t\t\tvar node = config.content;\n\t\t\tif (typeof node == \"string\")\n\t\t\t\tnode = document.getElementById(node);\n\t\t\tif (node.style.display == 'none')\n\t\t\t\tnode.style.display = \"\";\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\n\t\t}\n\n\t\tbox.onclick = function (e) {\n\t\t\te = e || event;\n\t\t\tvar source = e.target || e.srcElement;\n\t\t\tif (!source.className) source = source.parentNode;\n\t\t\tif (source.className.split(\" \")[0] == \"gantt_popup_button\") {\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\n\t\t\t\tcallback(config, result);\n\t\t\t}\n\t\t};\n\t\tconfig.box = box;\n\t\tif (ok || cancel)\n\t\t\t_dhx_msg_cfg = config;\n\n\t\treturn box;\n\t}\n\n\tfunction _createBox(config, ok, cancel) {\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\n\n\t\tif (!config.hidden)\n\t\t\tmodality(true);\n\t\tdocument.body.appendChild(box);\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n\t\tif (config.position == \"top\")\n\t\t\tbox.style.top = \"-3px\";\n\t\telse\n\t\t\tbox.style.top = y + 'px';\n\t\tbox.style.left = x + 'px';\n\t\t//necessary for IE only\n\t\tbox.onkeydown = modal_key;\n\n\t\tmodalBox.focus(box);\n\n\t\tif (config.hidden)\n\t\t\tmodalBox.hide(box);\n\n\t\tgantt.callEvent(\"onMessagePopup\", [box]);\n\t\treturn box;\n\t}\n\n\tfunction alertPopup(config) {\n\t\treturn _createBox(config, true, false);\n\t}\n\n\tfunction confirmPopup(config) {\n\t\treturn _createBox(config, true, true);\n\t}\n\n\tfunction boxPopup(config) {\n\t\treturn _createBox(config);\n\t}\n\n\tfunction box_params(text, type, callback) {\n\t\tif (typeof text != \"object\") {\n\t\t\tif (typeof type == \"function\") {\n\t\t\t\tcallback = type;\n\t\t\t\ttype = \"\";\n\t\t\t}\n\t\t\ttext = {text: text, type: type, callback: callback};\n\t\t}\n\t\treturn text;\n\t}\n\n\tfunction params(text, type, expire, id) {\n\t\tif (typeof text != \"object\")\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\n\t\ttext.id = text.id || utils.uid();\n\t\ttext.expire = text.expire || messageBox.expire;\n\t\treturn text;\n\t}\n\n\tvar alertBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"confirm\";\n\t\treturn alertPopup(text);\n\t};\n\tvar confirmBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn confirmPopup(text);\n\t};\n\tvar modalBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn boxPopup(text);\n\t};\n\tmodalBox.hide = function (node) {\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\n\t\t\tnode = node.parentNode;\n\t\tif (node) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\tmodality(false);\n\n\t\t\tgantt.callEvent(\"onAfterMessagePopup\", [node]);\n\t\t}\n\t};\n\n\tmodalBox.focus = function (node) {\n\t\tsetTimeout(function () {\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\n\t\t\tif (focusable.length) {\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\n\t\t\t}\n\t\t}, 1);\n\t};\n\n\tvar messageBox = function (text, type, expire, id) {\n\t\ttext = params.apply(this, arguments);\n\t\ttext.type = text.type || \"info\";\n\n\t\tvar subtype = text.type.split(\"-\")[0];\n\t\tswitch (subtype) {\n\t\t\tcase \"alert\":\n\t\t\t\treturn alertPopup(text);\n\t\t\tcase \"confirm\":\n\t\t\t\treturn confirmPopup(text);\n\t\t\tcase \"modalbox\":\n\t\t\t\treturn boxPopup(text);\n\t\t\tdefault:\n\t\t\t\treturn info(text);\n\t\t}\n\t};\n\n\tmessageBox.seed = (new Date()).valueOf();\n\tmessageBox.uid = utils.uid;\n\tmessageBox.expire = 4000;\n\tmessageBox.keyboard = true;\n\tmessageBox.position = \"top\";\n\tmessageBox.pull = {};\n\tmessageBox.timers = {};\n\n\tmessageBox.hideAll = function () {\n\t\tfor (var key in messageBox.pull)\n\t\t\tmessageBox.hide(key);\n\t};\n\tmessageBox.hide = function (id) {\n\t\tvar obj = messageBox.pull[id];\n\t\tif (obj && obj.parentNode) {\n\t\t\twindow.setTimeout(function () {\n\t\t\t\tobj.parentNode.removeChild(obj);\n\t\t\t\tobj = null;\n\t\t\t}, 2000);\n\t\t\tobj.className += \" hidden\";\n\n\t\t\tif (messageBox.timers[id])\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\n\t\t\tdelete messageBox.pull[id];\n\t\t}\n\t};\n\n\tvar popups = [];\n\tgantt.attachEvent(\"onMessagePopup\", function(box){\n\t\tpopups.push(box);\n\t});\n\tgantt.attachEvent(\"onAfterMessagePopup\", function(box){\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i] === box){\n\t\t\t\tpopups.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\tif(modality.cover && modality.cover.parentNode){\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\n\t\t}\n\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i].parentNode){\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\n\t\t\t}\n\t\t}\n\t\tpopups = null;\n\n\t\tif(messageBox.area && messageBox.area.parentNode){\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\n\t\t}\n\t\tmessageBox = null;\n\t});\n\n\treturn {\n\t\talert: alertBox,\n\t\tconfirm: confirmBox,\n\t\tmessage: messageBox,\n\t\tmodalbox: modalBox\n\t};\n};","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a