diff --git a/README.md b/README.md index e3b6e234..682f2c04 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# dhtmlxGantt v.6.2.7 +# dhtmlxGantt v.6.3.0 dhtmlxGantt is an open source JavaScript Gantt chart that helps you illustrate a project schedule in a nice-looking chart. @@ -70,7 +70,7 @@ gantt.parse({ ## License -dhtmlxGantt v.6.2.7 Standard +dhtmlxGantt v.6.3.0 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/bower.json b/bower.json index dc64f92d..8897fcda 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "gantt", - "version": "6.2.7", + "version": "6.3.0", "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.css b/codebase/dhtmlxgantt.css index 4961a11f..9a88d65e 100644 --- a/codebase/dhtmlxgantt.css +++ b/codebase/dhtmlxgantt.css @@ -1 +1 @@ -.gridHoverStyle,.gridSelection,.timelineSelection{background-color:#fff3a1}.gantt_grid_scale .gantt_grid_head_cell{color:#a6a6a6;border-top:none!important;border-right:none!important}.gantt_grid_data .gantt_cell{border-right:none;color:#454545}.gantt_task_link .gantt_link_arrow_right{border-width:6px;margin-top:-3px}.gantt_task_link .gantt_link_arrow_left{border-width:6px;margin-left:-6px;margin-top:-3px}.gantt_task_link .gantt_link_arrow_down,.gantt_task_link .gantt_link_arrow_up{border-width:6px}.gantt_task_line .gantt_task_progress_drag{bottom:-4px;height:10px;margin-left:-8px;width:16px}.chartHeaderBg{background-color:#fff}.gantt_task .gantt_task_scale .gantt_scale_cell{color:#a6a6a6;border-right:1px solid #ebebeb}.gantt_row.gantt_project,.gantt_row.odd.gantt_project{background-color:#edffef}.gantt_task_row.gantt_project,.gantt_task_row.odd.gantt_project{background-color:#f5fff6}.gantt_task_line.gantt_project{background-color:#65c16f;border:1px solid #3c9445}.gantt_task_line.gantt_project .gantt_task_progress{background-color:#46ad51}.buttonBg{background:#fff}.gantt_cal_light .gantt_btn_set{margin:5px 10px}.gantt_btn_set.gantt_cancel_btn_set{background:#fff;color:#454545;border:1px solid #cecece}.gantt_btn_set.gantt_save_btn_set{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff}.gantt_btn_set.gantt_delete_btn_set{text-shadow:0 -1px 0 #6f6f6f;background:#ec8e00;text-shadow:0 -1px 0 #a60;color:#fff}.gantt_cal_light_wide{padding-left:0!important;padding-right:0!important}.gantt_cal_light_wide .gantt_cal_larea{border-left:none!important;border-right:none!important}.gantt_popup_button.gantt_ok_button{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff;font-weight:700;border-width:0}.gantt_popup_button.gantt_cancel_button{font-weight:700;color:#454544}.gantt_popup_title{background-color:#fff}.gantt_popup_shadow{box-shadow:3px 3px 3px rgba(0,0,0,.07)}.gantt_qi_big_icon.icon_edit{color:#454545;background:#fff}.gantt_qi_big_icon.icon_delete{text-shadow:0 -1px 0 #a60;background:#ec8e00;color:#fff;border-width:0}.gantt_tooltip{box-shadow:3px 3px 3px rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07);border-top:1px solid rgba(0,0,0,.07);font-size:8pt;color:#454545}.gantt_container,.gantt_tooltip{background-color:#fff;font-family:Arial}.gantt_container{font-size:13px;border:1px solid #cecece;position:relative;white-space:nowrap;overflow-x:hidden;overflow-y:hidden}.gantt_task_scroll{overflow-x:scroll}.gantt_grid,.gantt_task{position:relative;overflow-x:hidden;overflow-y:hidden;display:inline-block;vertical-align:top}.gantt_grid_scale,.gantt_task_scale{color:#6b6b6b;font-size:12px;border-bottom:1px solid #cecece;box-sizing:border-box}.gantt_grid_scale,.gantt_task_scale,.gantt_task_vscroll{background-color:#fff}.gantt_scale_line{box-sizing:border-box;-moz-box-sizing:border-box;border-top:1px solid #cecece}.gantt_scale_line:first-child{border-top:none}.gantt_grid_head_cell{display:inline-block;vertical-align:top;border-right:1px solid #cecece;text-align:center;position:relative;cursor:default;height:100%;box-sizing:border-box;-moz-box-sizing:border-box;line-height:33px;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none;overflow:hidden}.gantt_scale_line{clear:both}.gantt_grid_data{width:100%;overflow:hidden;position:relative}.gantt_row{position:relative;-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_add,.gantt_grid_head_add{width:100%;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ3MjMyMENDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ3MjMyMERDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NDcyMzIwQUM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDcyMzIwQkM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PshZT8UAAABbSURBVHjaYrTdeZmBEsCER+4wEP+H4sPkGGCDg020ARR7gb4GIAcYDKMDdPnDyAbYkGG5DVW9cIQMvUdBBAuUY4vDz8iAcZinA2zgCHqAYQMseAywJcYFAAEGAM+UFGuohFczAAAAAElFTkSuQmCC);background-position:50%;background-repeat:no-repeat;cursor:pointer;position:relative;-moz-opacity:.3;opacity:.3}.gantt_grid_head_cell.gantt_grid_head_add{-moz-opacity:.6;opacity:.6;top:0}.gantt_grid_head_cell.gantt_grid_head_add:hover{-moz-opacity:1;opacity:1}.gantt_grid_data .gantt_row.odd:hover,.gantt_grid_data .gantt_row:hover{background-color:#fff3a1}.gantt_grid_data .gantt_row.odd:hover .gantt_add,.gantt_grid_data .gantt_row:hover .gantt_add{-moz-opacity:1;opacity:1}.gantt_row,.gantt_task_row{border-bottom:1px solid #ebebeb;background-color:#fff}.gantt_row.odd,.gantt_task_row.odd{background-color:#fff}.gantt_cell,.gantt_grid_head_cell,.gantt_row,.gantt_scale_cell,.gantt_task_cell,.gantt_task_row{box-sizing:border-box;-moz-box-sizing:border-box}.gantt_grid_head_cell,.gantt_scale_cell{line-height:inherit}.gantt_grid_scale .gantt_grid_column_resize_wrap{cursor:col-resize;position:absolute;width:13px;margin-left:-7px}.gantt_grid_column_resize_wrap .gantt_grid_column_resize{background-color:#cecece;height:100%;width:1px;margin:0 auto}.gantt_drag_marker.gantt_grid_resize_area{background-color:hsla(0,0%,91%,.5);border-left:1px solid #cecece;border-right:1px solid #cecece;height:100%;width:100%;box-sizing:border-box}.gantt_cell{display:inline-block;vertical-align:top;border-right:1px solid #ebebeb;padding-left:6px;padding-right:6px;height:100%;overflow:hidden;white-space:nowrap;font-size:13px}.gantt_grid_data .gantt_last_cell,.gantt_grid_scale .gantt_last_cell,.gantt_task .gantt_task_scale .gantt_scale_cell.gantt_last_cell,.gantt_task_bg .gantt_last_cell{border-right-width:0}.gantt_task .gantt_task_scale .gantt_scale_cell.gantt_last_cell{border-right-width:1px}.gantt_task_bg{overflow:hidden}.gantt_scale_cell{display:inline-block;white-space:nowrap;overflow:hidden;border-right:1px solid #cecece;text-align:center;height:100%}.gantt_task_cell{display:inline-block;height:100%;border-right:1px solid #ebebeb}.gantt_layout_cell.gantt_ver_scroll{width:0;background-color:transparent;height:1px;overflow-x:hidden;overflow-y:scroll;position:absolute;right:0;z-index:1}.gantt_ver_scroll>div{width:1px;height:1px}.gantt_hor_scroll{height:0;background-color:transparent;width:100%;clear:both;overflow-x:scroll;overflow-y:hidden}.gantt_layout_cell .gantt_hor_scroll{position:absolute}.gantt_hor_scroll>div{width:5000px;height:1px}.gantt_tree_indent{width:15px;height:100%;display:inline-block}.gantt_tree_content,.gantt_tree_icon{vertical-align:top}.gantt_tree_icon{width:28px;background-repeat:no-repeat;background-position:50%}.gantt_tree_content,.gantt_tree_icon{height:100%;display:inline-block}.gantt_tree_icon.gantt_open{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAArklEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNUAGcXJyMnz//h3uQrJdRLFBIAPQAchlJLsIFuCMjIwM////B5sJMoRkg2CuIdtrQcHBDOxsbHBfCQgIMHz48AHO//nrF8O6tWsJR7+7uzsDIxMTznT0/98/hp07d+I3iGopm2DewKFg8OV+AJWkfRMrTobLAAAAAElFTkSuQmCC);width:18px;cursor:pointer}.gantt_tree_icon.gantt_close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAkUlEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNeIN4uTkxAin79+/M5AcRtgCHGQIyQbhijaiDQoKDmZgZ2PDGf0/f/1iWLd2LeHod3d3Z2BkYsJp0P9//xh27tyJ3yCqpWyCeQOHgsGX+wEZpW4T5LCxKwAAAABJRU5ErkJggg==);width:18px;cursor:pointer}.gantt_tree_icon.gantt_blank{width:18px}.gantt_tree_icon.gantt_folder_open{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAs0lEQVQ4T62T0Q2EIBBEpQlzuaaMsQoqooqLsSljbMLLmMxmUXBR4U+Qt7Mzi2sqLVeJ00SgEMKWAnvvzYLyAyHfT5sU2fXDJSwCAXK8MI0/UTkva7IIFJsg3NSwnKdFoKtAWOQ1CN7CEqeTotE5L7QyJhmBcklZM4ZgTiAr3iOU3kD93ppO5SkMjB1EeXdBWoSkRql3YeIRe+cGvktS056JR9wsmeBUkujCfNXWCPC8GugPqn5ii/hV+FoAAAAASUVORK5CYII=)}.gantt_tree_icon.gantt_folder_closed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAfElEQVQ4T2NkoBJgpJI5DCgGTZ8+/T82gzMzMwlaCFcAM0RKQgyrI/0Dg/EahmIQyBB0DRvXr4W78tmLV1gtAbmYoEEgnciG4QpTogzCFyEwSyg2CBS2oCAZNQh3cA+hMAJ5AlcKxuVBlOgnNgVjMwyUrQjmamKLGaoZBAAOTFyLnFFW4wAAAABJRU5ErkJggg==)}.gantt_tree_icon.gantt_file{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAeElEQVQ4T2NkoBJgRDZn+vTp/wmZm5mZiaIHph7DICkJMUJmMfgHBmMYhtUgbAo3rl+L4lp0NUQbBPI2umuRDaPIIFAYwAyjv0HoMQALM5JdhG4QLMxGDcKdyIdoGIE89OzFK4KZF5Rl8EY/QROQFGA1iBQD0NUCAJVjcxO0naAQAAAAAElFTkSuQmCC)}.gantt_grid_head_cell .gantt_sort{position:absolute;right:5px;top:8px;width:7px;height:13px;background-repeat:no-repeat;background-position:50%}.gantt_grid_head_cell .gantt_sort.gantt_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR4nGNgQAKGxib/GbABkIS7b8B/DAUwCRiGK0CXwFBAb1DfP/U/LszwHwi2X7qFgUEArBtdAVwCBmAKMCSQFSDzAWXXaOHsXeqkAAAAAElFTkSuQmCC)}.gantt_grid_head_cell .gantt_sort.gantt_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR42mNgQAL1/VP/M2ADIIntF2/9x1AAlrh0C47hCmA60DFYwX88gIFGwNDY5D8uDFbg7hvwHx2jmIBTAlkB0e4BAEjlaNtBWJPnAAAAAElFTkSuQmCC)}.gantt_inserted,.gantt_updated{font-weight:700}.gantt_deleted{text-decoration:line-through}.gantt_invalid{background-color:#ffe0e0}.gantt_error{color:red}.gantt_status{right:1px;padding:5px 10px;background:hsla(0,0%,61%,.1);position:absolute;top:1px;transition:opacity .2s;opacity:0}.gantt_status.gantt_status_visible{opacity:1}#gantt_ajax_dots span{transition:opacity .2s;background-repeat:no-repeat;opacity:0}#gantt_ajax_dots span.gantt_dot_visible{opacity:1}.gantt_message_area{position:fixed;right:5px;width:250px;z-index:1000}.gantt-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Arial;z-index:10000;margin:5px;margin-bottom:10px;transition:all .5s ease}.gantt-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.gantt_modal_box{overflow:hidden;display:inline-block;min-width:250px;width:250px;text-align:center;position:fixed;z-index:20000;box-shadow:3px 3px 3px rgba(0,0,0,.07);font-family:Arial;border-radius:6px;border:1px solid #cecece;background:#fff}.gantt_popup_title{border-top-left-radius:6px;border-top-right-radius:6px;border-width:0}.gantt_button,.gantt_popup_button{border:1px solid #cecece;height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:4px;background:#fff}.gantt-info,.gantt_button,.gantt_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.gantt_popup_text{overflow:hidden}.gantt_popup_controls{border-radius:6px;padding:10px}.gantt_popup_button{min-width:100px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.gantt-info img,.gantt_modal_box img{float:left;margin-right:20px}.gantt-alert-error,.gantt-confirm-error{border:1px solid red}.gantt_button input,.gantt_popup_button div{border-radius:4px;font-size:14px;box-sizing:content-box;padding:0;margin:0;vertical-align:top}.gantt_popup_title{border-bottom:1px solid #cecece;height:40px;line-height:40px;font-size:20px}.gantt_popup_text{margin:15px 15px 5px;font-size:14px;color:#000;min-height:30px;border-radius:6px}.gantt-error,.gantt-info{font-size:14px;color:#000;box-shadow:3px 3px 3px rgba(0,0,0,.07);padding:0;background-color:#fff;border-radius:3px;border:1px solid #fff}.gantt-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #cecece}.gantt-error{background-color:#d81b1b;border:1px solid #ff3c3c}.gantt-error div{background-color:#d81b1b;border:1px solid #940000;color:#fff}.gantt-warning{background-color:#ff9000;border:1px solid #ffa633}.gantt-warning div{background-color:#ff9000;border:1px solid #b36500;color:#fff}.gantt_data_area div,.gantt_grid div{-ms-touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.gantt_data_area{position:relative;overflow-x:hidden;overflow-y:hidden;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none}.gantt_links_area{position:absolute;left:0;top:0}.gantt_side_content,.gantt_task_content,.gantt_task_progress{line-height:inherit;overflow:hidden;height:100%}.gantt_task_content{font-size:12px;color:#fff;width:100%;top:0;cursor:pointer;position:absolute;white-space:nowrap;text-align:center}.gantt_task_progress{text-align:center;z-index:0;background:#299cb4}.gantt_task_progress_wrapper{border-radius:inherit;position:relative;width:100%;height:100%;overflow:hidden}.gantt_task_line{border-radius:2px;position:absolute;box-sizing:border-box;background-color:#3db9d3;border:1px solid #2898b0;-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_task_line.gantt_drag_move div{cursor:move}.gantt_touch_move,.gantt_touch_progress .gantt_touch_resize{transform:scale(1.02,1.1);transform-origin:50%}.gantt_touch_progress .gantt_task_progress_drag,.gantt_touch_resize .gantt_task_drag{transform:scaleY(1.3);transform-origin:50%}.gantt_side_content{position:absolute;white-space:nowrap;color:#6e6e6e;top:0;font-size:11px}.gantt_side_content.gantt_left{right:100%;padding-right:20px}.gantt_side_content.gantt_right{left:100%;padding-left:20px}.gantt_side_content.gantt_link_crossing{bottom:8.75px;top:auto}.gantt_link_arrow,.gantt_task_link .gantt_line_wrapper{position:absolute;cursor:pointer}.gantt_line_wrapper div{background-color:#ffa011}.gantt_task_link:hover .gantt_line_wrapper div{box-shadow:0 0 5px 0 #ffa011}.gantt_task_link div.gantt_link_arrow{background-color:transparent;border-style:solid;width:0;height:0}.gantt_link_control{position:absolute;width:20px;top:0}.gantt_link_control div{display:none;cursor:pointer;box-sizing:border-box;position:relative;top:50%;margin-top:-7.5px;vertical-align:middle;border:1px solid #929292;border-radius:6.5px;height:13px;width:13px;background-color:#f0f0f0}.gantt_link_control.task_right div.gantt_link_point{margin-left:7px}.gantt_link_control div:hover{background-color:#fff}.gantt_link_control.task_left{left:-20px}.gantt_link_control.task_right{right:-20px}.gantt_link_target .gantt_link_control div,.gantt_task_line.gantt_drag_move .gantt_link_control div,.gantt_task_line.gantt_drag_move .gantt_task_drag,.gantt_task_line.gantt_drag_move .gantt_task_progress_drag,.gantt_task_line.gantt_drag_progress .gantt_link_control div,.gantt_task_line.gantt_drag_progress .gantt_task_drag,.gantt_task_line.gantt_drag_progress .gantt_task_progress_drag,.gantt_task_line.gantt_drag_resize .gantt_link_control div,.gantt_task_line.gantt_drag_resize .gantt_task_drag,.gantt_task_line.gantt_drag_resize .gantt_task_progress_drag,.gantt_task_line.gantt_selected .gantt_link_control div,.gantt_task_line.gantt_selected .gantt_task_drag,.gantt_task_line.gantt_selected .gantt_task_progress_drag,.gantt_task_line:hover .gantt_link_control div,.gantt_task_line:hover .gantt_task_drag,.gantt_task_line:hover .gantt_task_progress_drag{display:block}.gantt_link_source,.gantt_link_target{box-shadow:0 0 3px #3db9d3}.gantt_link_target.link_finish_allow,.gantt_link_target.link_start_allow{box-shadow:0 0 3px #ffbf5e}.gantt_link_target.link_finish_deny,.gantt_link_target.link_start_deny{box-shadow:0 0 3px #e87e7b}.link_finish_allow .gantt_link_control.task_end_date div,.link_start_allow .gantt_link_control.task_start_date div{background-color:#ffbf5e;border-color:#ffa011}.link_finish_deny .gantt_link_control.task_end_date div,.link_start_deny .gantt_link_control.task_start_date div{background-color:#e87e7b;border-color:#dd3e3a}.gantt_link_arrow_right{border-width:4px 0 4px 6px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;border-left-color:#ffa011;margin-top:-1px}.gantt_link_arrow_left{border-width:4px 6px 4px 0;margin-top:-1px;border-top-color:transparent!important;border-right-color:#ffa011;border-bottom-color:transparent!important;border-left-color:transparent!important}.gantt_link_arrow_up{border-width:0 4px 6px;border-color:transparent transparent #ffa011;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:#ffa011;border-left-color:transparent!important}.gantt_link_arrow_down{border-width:4px 6px 0 4px;border-top-color:#ffa011;border-right-color:transparent!important;border-bottom-color:transparent!important;border-left-color:transparent!important}.gantt_task_drag,.gantt_task_progress_drag{cursor:ew-resize;display:none;position:absolute}.gantt_task_drag.task_right{cursor:e-resize}.gantt_task_drag.task_left{cursor:w-resize}.gantt_task_drag{height:100%;width:8px;z-index:1;top:-1px}.gantt_task_drag.task_left{left:-7px}.gantt_task_drag.task_right{right:-7px}.gantt_task_progress_drag{height:8px;width:8px;bottom:-4px;margin-left:-4px;background-position:bottom;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkY3Rjk0RUVDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkY3Rjk0RUZDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjdGOTRFQ0MyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRjdGOTRFREMyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PobPBzIAAADkSURBVHjaYpk2bRoDDsAExL1QdjEQ/8OmiAWHZk4gXqymqhQM4ty6fU8OSMUA8XdiDBAB4k0a6iqWRga6EKcwMQXduHlnL5DpB8Rv0J2JDFSA+JiOtgZcMwiA2CAxkBxUDVYDLEAKgIpV9XQ0MZwFEgPJAZnHoWpRDAgC4n2W5saiQKfjClQGkBxQDciL+6B6wAbkA/EqJwdrTkUFOQZCAKQGpBbIXA3SCzJggo+XK7OEuBgDsQCkFqgHrBfsBT5eHgZSAUwP2IBfv36TbABMDygdtK1Zv6UESLORaAbIhG6AAAMAKN8wE24DXWcAAAAASUVORK5CYII=);background-repeat:no-repeat;z-index:1}.gantt_task_progress_drag:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVQoz6WMPW7CQBgFJxZaiZ60qcgdwjVMmzu8gpwhDULabXyBdHAGuzRHivQiQZovigS2+Jtu95t5T03TMITtCtjEc5VSOgx5k5F4CnxJWgKUUl5sv6eUvk/daiCeAe1fDCCpBtq4jQ/YngO9pMWpGH99OOcDtt8ifmWEuO3D/R+wXQOdpGcuIGkGdNFQ2RawlTTlSsLd2RY55+O95JyPFQ/y8MAE+CylfADpxvYHWP8CXj+JR4wdKHYAAAAASUVORK5CYII=)}.gantt_link_tooltip{box-shadow:3px 3px 3px #888;background-color:#fff;border-left:1px dotted #cecece;border-top:1px dotted #cecece;font-family:Tahoma;font-size:8pt;color:#444;padding:6px;line-height:20px}.gantt_link_direction{height:0;border:0 none #ffa011;border-bottom-style:dashed;border-bottom-width:2px;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;z-index:2;margin-left:1px;position:absolute}.gantt_grid_data .gantt_row.gantt_selected,.gantt_grid_data .gantt_row.odd.gantt_selected,.gantt_task_row.gantt_selected{background-color:#fff3a1}.gantt_task_row.gantt_selected .gantt_task_cell{border-right-color:#ffec6e}.gantt_task_line.gantt_selected{box-shadow:0 0 5px #299cb4}.gantt_task_line.gantt_project.gantt_selected{box-shadow:0 0 5px #46ad51}.gantt_task_line.gantt_milestone{visibility:hidden;background-color:#d33daf;border:0 solid #61164f;box-sizing:content-box;-moz-box-sizing:content-box}.gantt_task_line.gantt_milestone div{visibility:visible}.gantt_task_line.gantt_milestone .gantt_task_content{background:inherit;border:inherit;border-width:1px;border-radius:inherit;box-sizing:border-box;-moz-box-sizing:border-box;transform:rotate(45deg)}.gantt_task_line.gantt_task_inline_color{border-color:#999}.gantt_task_line.gantt_task_inline_color .gantt_task_progress{background-color:#363636;opacity:.2}.gantt_task_line.gantt_task_inline_color.gantt_project.gantt_selected,.gantt_task_line.gantt_task_inline_color.gantt_selected{box-shadow:0 0 5px #999}.gantt_task_link.gantt_link_inline_color:hover .gantt_line_wrapper div{box-shadow:0 0 5px 0 #999}.gantt_critical_task{background-color:#e63030;border-color:#9d3a3a}.gantt_critical_task .gantt_task_progress{background-color:rgba(0,0,0,.4)}.gantt_critical_link .gantt_line_wrapper>div{background-color:#e63030}.gantt_critical_link .gantt_link_arrow{border-color:#e63030}.gantt_btn_set:focus,.gantt_cell:focus,.gantt_grid_head_cell:focus,.gantt_popup_button:focus,.gantt_qi_big_icon:focus,.gantt_row:focus{box-shadow:inset 0 0 1px 1px #4d90fe}.gantt_split_parent{opacity:.1;pointer-events:none}.gantt_unselectable,.gantt_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_cal_light{-webkit-tap-highlight-color:transparent;background:#fff;border-radius:6px;font-family:Arial;font-size:13px;border:1px solid #cecece;color:#6b6b6b;font-size:12px;position:absolute;z-index:10001;width:550px;height:250px;box-shadow:3px 3px 3px rgba(0,0,0,.07)}.gantt_cal_light_wide{width:650px}.gantt_cal_light select{font-family:Arial;border:1px solid #cecece;font-size:13px;padding:2px;margin:0}.gantt_cal_ltitle{padding:7px 10px;overflow:hidden;-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:0;-moz-border-radius-topleft:6px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:0;border-top-left-radius:6px;border-bottom-left-radius:0;border-top-right-radius:6px;border-bottom-right-radius:0}.gantt_cal_ltitle,.gantt_cal_ltitle span{white-space:nowrap}.gantt_cal_lsection{color:#727272;font-weight:700;padding:12px 0 5px 10px}.gantt_cal_lsection .gantt_fullday{float:right;margin-right:5px;font-size:12px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.gantt_cal_lsection{font-size:13px}.gantt_cal_ltext{padding:2px 10px;overflow:hidden}.gantt_cal_ltext textarea{overflow-y:auto;overflow-x:hidden;font-family:Arial;font-size:13px;box-sizing:border-box;border:1px solid #cecece;height:100%;width:100%;outline:none!important;resize:none}.gantt_section_constraint [data-constraint-time-select]{margin-left:20px}.gantt_time{font-weight:700}.gantt_cal_light .gantt_title{padding-left:10px}.gantt_cal_larea{border:1px solid #cecece;border-left:none;border-right:none;background-color:#fff;overflow:hidden;height:1px}.gantt_btn_set{margin:10px 7px 5px 10px;padding:5px 15px 5px 10px;float:left;border-radius:4px;border:0 solid #cecece;height:32px;font-weight:700;background:#fff;box-sizing:border-box;cursor:pointer}.gantt_hidden{display:none}.gantt_btn_set div{float:left;font-size:13px;height:22px;line-height:22px;background-repeat:no-repeat;vertical-align:middle}.gantt_save_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk1OUU5RDFDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk1OUU5RDJDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxOTU5RTlDRkMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxOTU5RTlEMEMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjDroXYAAAEXSURBVHjaYvz//z8DJYCRUgPIAUxAbAnEHiAHMIBcQCwGaRYXF3e6evXqoffv39/dv38/CymaGSUkJBzv3LlzCsj///fv3wdAihkkIQnEvkAshU8zLy+v7a1bt06ANP/79+87kDIAy505cybq06dPr3p7ezuwGQLTfOPGjWP/ESAZLg8kPKBO+g01RBJNszWyZqC6uSgWgIg/f/4shxnS2dnZBjMEqNkSFGBImi8CKTYMA4BYCGjIczRDHC5dunQQSfN7IKWI4UUkjjdMMdCwnw8ePLjwHxV4Yw1gZA5Q47z/2EELzhhCE+ABGvIQWSeQvwcU38QaAML2wHj+C/X3MyAlijeB4ZBoBOIPQGxJKIVSnBsBAgwABddBclWfcZUAAAAASUVORK5CYII=);margin-top:2px;width:21px}.gantt_cancel_btn{margin-top:2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDkzMDA3MzlDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDkzMDA3M0FDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowOTMwMDczN0MzMDQxMUUyODZBNUUzMURDODBGQkRENiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowOTMwMDczOEMzMDQxMUUyODZBNUUzMURDODBGQkRENiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmYuYOUAAAEdSURBVHjaYvz//z8DJYAFXWDlypU8QKoIiD2A2AwqfAqIdwBxX3h4+Bdk9YzILgBqtgdS84FYEYeF94E4EWjIQZgAE5LmQCB1AKoZZKMPEAtAMYh9GSp3AKjWD8UFQAEhIPshEIOc3wHENUBb/qJ57SyQMoJyPwKxElDNO1gYFEE17wMKVmIJlzNQzeegrjaA6qmBecEbSvfh0GwMxGeBhoPoemQ9MAO0kEIbl2YTqPAFKK2IbMB3AjabYIkRZmQD7kNpMyI0G0PpO8gGbIUFJj7NQDk2INWIrIcJKfBAKcwJqvkcDs0TgFgXGo19KCkRmpDWQdWDEk0NUoCBoq0FqhkE/IEWbKJKUmZEz43QzFSKIzN1481M5ACAAAMAlfl/lCwRpagAAAAASUVORK5CYII=);width:20px}.gantt_delete_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=);margin-top:2px;width:20px}.gantt_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=10)}.gantt_custom_button{padding:0 3px;font-family:Arial;font-size:13px;font-weight:400;margin-right:10px;margin-top:-5px;cursor:pointer;float:right;height:21px;width:90px;border:1px solid #cecece;text-align:center;border-radius:4px}.gantt_custom_button div{cursor:pointer;float:none;height:21px;line-height:21px;vertical-align:middle}.gantt_custom_button div:first-child{display:none}.gantt_cal_light_wide{width:580px;padding:2px 4px}.gantt_cal_light_wide .gantt_cal_larea{box-sizing:border-box;border:1px solid #cecece}.gantt_cal_light_wide .gantt_cal_lsection{border:0;float:left;text-align:right;width:80px;height:20px;padding:5px 10px 0 0}.gantt_cal_light_wide .gantt_wrap_section{position:relative;padding:10px 0;overflow:hidden;border-bottom:1px solid #ebebeb}.gantt_cal_light_wide .gantt_section_time{overflow:hidden;padding-top:2px!important;padding-right:0;height:20px!important}.gantt_cal_light_wide .gantt_cal_ltext{padding-right:0}.gantt_cal_light_wide .gantt_cal_larea{padding:0 10px;width:100%}.gantt_cal_light_wide .gantt_section_time{background:transparent}.gantt_cal_light_wide .gantt_cal_checkbox label{padding-left:0}.gantt_cal_light_wide .gantt_cal_lsection .gantt_fullday{float:none;margin-right:0;font-weight:700;cursor:pointer}.gantt_cal_light_wide .gantt_custom_button{position:absolute;top:0;right:0;margin-top:2px}.gantt_cal_light_wide .gantt_repeat_right{margin-right:55px}.gantt_cal_light_wide.gantt_cal_light_full{width:738px}.gantt_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.gantt_cal_light input{font-size:13px}.gantt_section_time{background-color:#fff;white-space:nowrap;padding:2px 10px 5px;padding-top:2px!important}.gantt_section_time .gantt_time_selects{float:left;height:25px}.gantt_section_time .gantt_time_selects select{height:23px;padding:2px;border:1px solid #cecece}.gantt_duration{width:100px;height:23px;float:left;white-space:nowrap;margin-left:20px;line-height:23px}.gantt_duration .gantt_duration_dec,.gantt_duration .gantt_duration_inc,.gantt_duration .gantt_duration_value{box-sizing:border-box;text-align:center;vertical-align:top;height:100%;border:1px solid #cecece}.gantt_duration .gantt_duration_value{width:40px;padding:3px 4px;border-left-width:0;border-right-width:0}.gantt_duration .gantt_duration_dec,.gantt_duration .gantt_duration_inc{width:20px;padding:1px;padding-bottom:1px;background:#fff}.gantt_duration .gantt_duration_dec{-moz-border-top-left-radius:4px;-moz-border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt_duration .gantt_duration_inc{margin-right:4px;-moz-border-top-right-radius:4px;-moz-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt_resources{max-height:150px;height:auto;overflow-y:auto}.gantt_resource_row{display:block;padding:10px 0;border-bottom:1px solid #ebebeb;cursor:pointer}.gantt_resource_row input[type=checkbox]:not(:checked),.gantt_resource_row input[type=checkbox]:not(:checked)~div{opacity:.5}.gantt_resource_toggle{vertical-align:middle}.gantt_resources_filter .gantt_resources_filter_input{padding:1px 2px;box-sizing:border-box}.gantt_resources_filter .switch_unsetted{vertical-align:middle}.gantt_resource_cell{display:inline-block}.gantt_resource_cell.gantt_resource_cell_checkbox{width:24px;max-width:24px;min-width:24px;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_label{width:40%;max-width:40%;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_value{width:30%;max-width:30%;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_value input,.gantt_resource_cell.gantt_resource_cell_value select{width:80%;vertical-align:middle;padding:1px 2px;box-sizing:border-box}.gantt_resource_cell.gantt_resource_cell_unit{width:10%;max-width:10%;vertical-align:middle}.gantt_resource_early_value{opacity:.8;font-size:.9em}.gantt_cal_quick_info{border:1px solid #cecece;border-radius:6px;position:absolute;z-index:300;box-shadow:3px 3px 3px rgba(0,0,0,.07);background-color:#fff;width:300px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.gantt_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.gantt_cal_quick_info.gantt_qi_left .gantt_qi_big_icon{float:right}.gantt_cal_qi_title{-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:0;-moz-border-radius-topleft:6px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:0;border-top-left-radius:6px;border-bottom-left-radius:0;border-top-right-radius:6px;border-bottom-right-radius:0;padding:5px 0 8px 12px;color:#454545;background-color:#fff;border-bottom:1px solid #cecece}.gantt_cal_qi_tdate{font-size:14px;font-weight:700}.gantt_cal_qi_tcontent{font-size:13px}.gantt_cal_qi_content{padding:16px 8px;font-size:13px;color:#454545;overflow:hidden}.gantt_cal_qi_controls{-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:6px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:6px;-moz-border-radius-topleft:0;-moz-border-radius-bottomleft:6px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:6px;border-top-left-radius:0;border-bottom-left-radius:6px;border-top-right-radius:0;border-bottom-right-radius:6px;padding-left:7px}.gantt_cal_qi_controls .gantt_menu_icon{margin-top:6px;background-repeat:no-repeat}.gantt_cal_qi_controls .gantt_menu_icon.icon_edit{width:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3QYFCjI5ZQj5bAAAAFNJREFUOMvt0zEOACAIA0DkwTymH8bJTRTKZGJXyaWEKPKTCQAH4Ls37cItcDUzsxHNDLZNhCq7Gt1wh9ErV7EjyGAhyGLphlnsClWuS32rn0czAV+vNGrM/LBtAAAAAElFTkSuQmCC)}.gantt_cal_qi_controls .gantt_menu_icon.icon_delete{width:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=)}.gantt_qi_big_icon{font-size:13px;border-radius:4px;font-weight:700;background:#fff;margin:5px 9px 8px 0;min-width:60px;line-height:32px;vertical-align:middle;padding:0 10px 0 5px;cursor:pointer;border:1px solid #cecece}.gantt_cal_qi_controls div{float:left;height:32px;text-align:center;line-height:32px}.gantt_tooltip{padding:10px;position:absolute;z-index:50;white-space:nowrap}.gantt_resource_marker{position:absolute;text-align:center;font-size:14px;color:#fff}.gantt_resource_marker_ok{background:rgba(78,208,134,.75)}.gantt_resource_marker_overtime{background:hsla(0,100%,76%,.69)}.gantt_histogram_label{width:100%;height:100%;position:absolute;z-index:1;font-weight:700;font-size:13px}.gantt_histogram_fill{background-color:rgba(41,157,180,.2);width:100%;position:absolute;bottom:0}.gantt_histogram_hor_bar{height:1px;margin-top:-1px}.gantt_histogram_hor_bar,.gantt_histogram_vert_bar{position:absolute;background:#299db4;margin-left:-1px}.gantt_histogram_vert_bar{width:1px}.gantt_histogram_cell{position:absolute;text-align:center;font-size:13px;color:#000}.gantt_marker{height:100%;width:2px;top:0;position:absolute;text-align:center;background-color:rgba(255,0,0,.4);box-sizing:border-box}.gantt_marker .gantt_marker_content{padding:5px;background:inherit;color:#fff;position:absolute;font-size:12px;line-height:12px;opacity:.8}.gantt_marker_area{position:absolute;top:0;left:0}.gantt_grid_editor_placeholder{position:absolute}.gantt_grid_editor_placeholder>div,.gantt_grid_editor_placeholder input,.gantt_grid_editor_placeholder select{width:100%;height:100%;box-sizing:border-box}.gantt_row_placeholder div{opacity:.5}.gantt_row_placeholder .gantt_add,.gantt_row_placeholder .gantt_file{display:none}.gantt_drag_marker.gantt_grid_dnd_marker{background-color:transparent;transition:all .1s ease}.gantt_grid_dnd_marker_line{height:4px;width:100%;background-color:#3498db}.gantt_grid_dnd_marker_line:before{background:#fff;width:12px;height:12px;box-sizing:border-box;border:3px solid #3498db;border-radius:6px;content:"";line-height:1px;display:block;position:absolute;margin-left:-11px;margin-top:-4px;pointer-events:none}.gantt_grid_dnd_marker_folder{height:100%;width:100%;position:absolute;pointer-events:none;box-sizing:border-box;box-shadow:inset 0 0 0 2px #3f98db;background:transparent}.gantt_overlay_area{display:none}.gantt_overlay,.gantt_overlay_area{position:absolute;height:inherit;width:inherit;top:0;left:0}.gantt_click_drag_rect{position:absolute;left:0;top:0;outline:1px solid #3f98db;background-color:rgba(52,152,219,.3)}.gantt_layout_content{width:100%;overflow:auto;box-sizing:border-box}.gantt_layout_cell{position:relative;box-sizing:border-box}.gantt_layout_cell>.gantt_layout_header{background:#33aae8;color:#fff;font-size:17px;padding:5px 10px;box-sizing:border-box}.gantt_layout_header.collapsed_x{background:#a9a9a9}.gantt_layout_header.collapsed_x .gantt_header_arrow:before{content:"\21E7"}.gantt_layout_header.collapsed_y{background:#a9a9a9}.gantt_layout_header.collapsed_y .gantt_header_arrow:before{content:"\21E9"}.gantt_layout_header{cursor:pointer}.gantt_layout_header .gantt_header_arrow{float:right;text-align:right}.gantt_layout_header .gantt_header_arrow:before{content:"\21E6"}.gantt_layout_header.vertical .gantt_header_arrow:before{content:"\21E7"}.gantt_layout_outer_scroll_vertical .gantt_layout_content{overflow-y:hidden}.gantt_layout_outer_scroll_horizontal .gantt_layout_content{overflow-x:hidden}.gantt_layout_x>.gantt_layout_cell{display:inline-block;vertical-align:top}.gantt_layout_x{white-space:nowrap}.gantt_resizing{opacity:.7;background:#f2f2f2}.gantt_layout_cell_border_right.gantt_resizer{overflow:visible;border-right:0}.gantt_resizer{cursor:e-resize;position:relative}.gantt_resizer_y{cursor:n-resize}.gantt_resizer_stick{background:#33aae8;z-index:9999;position:absolute;top:0;width:100%}.gantt_resizer_x .gantt_resizer_x{position:absolute;width:20px;height:100%;margin-left:-10px;top:0;left:0;z-index:1}.gantt_resizer_y .gantt_resizer_y{position:absolute;height:20px;width:100%;top:-10px;left:0;z-index:1}.gantt_resizer_error{background:#cd5c5c!important}.gantt_layout_cell_border_left{border-left:1px solid #cecece}.gantt_layout_cell_border_right{border-right:1px solid #cecece}.gantt_layout_cell_border_top{border-top:1px solid #cecece}.gantt_layout_cell_border_bottom{border-bottom:1px solid #cecece}.gantt_layout_cell_border_transparent{border-color:transparent}.gantt_window{position:absolute;top:50%;left:50%;z-index:999999999;background:#fff}.gantt_window_content{position:relative}.gantt_window_content_header{background:#39c;color:#fff;height:33px;padding:10px 10px 0;border-bottom:2px solid #fff;position:relative}.gantt_window_content_header_text{padding-left:10%}.gantt_window_content_header_buttons{position:absolute;top:10px;right:10px}.gantt_window_content_header_buttons:hover{color:#000;cursor:pointer}.gantt_window_content_resizer{position:absolute;width:15px;height:15px;bottom:0;line-height:15px;right:-1px;text-align:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeAFjIAUwUshlpJDLSIhLGAAACQ4AFk79JaMAAAAASUVORK5CYII=);cursor:nw-resize;z-index:999}.gantt_window_content_frame{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.1);z-index:9999}.gantt_window_drag{cursor:pointer!important}.gantt_window_resizing{overflow:visible}.gantt_window_resizing_body{overflow:hidden!important}.gantt_window_modal{background:rgba(0,0,0,.1);z-index:9999;top:0;left:0;width:100%;height:100%;position:fixed}.gantt_cal_light,.gantt_cal_quick_info,.gantt_container,.gantt_message_area,.gantt_modal_box,.gantt_tooltip{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gantt_noselect{-moz-user-select:-moz-none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.gantt_drag_marker{position:absolute;top:-1000px;left:-1000px;font-family:Arial;font-size:13px;z-index:1;white-space:nowrap}.gantt_drag_marker .gantt_tree_icon.gantt_blank,.gantt_drag_marker .gantt_tree_icon.gantt_close,.gantt_drag_marker .gantt_tree_icon.gantt_open,.gantt_drag_marker .gantt_tree_indent{display:none}.gantt_drag_marker,.gantt_drag_marker .gantt_row.odd{background-color:#fff}.gantt_drag_marker .gantt_row{border-left:1px solid #d2d2d2;border-top:1px solid #d2d2d2}.gantt_drag_marker .gantt_cell{border-color:#d2d2d2}.gantt_row.gantt_over,.gantt_task_row.gantt_over{background-color:#0070fe}.gantt_row.gantt_transparent .gantt_cell{opacity:.7}.gantt_task_row.gantt_transparent{background-color:#f8fdfd}.gantt_popup_button.gantt_delete_button{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff;font-weight:700;border-width:0}.gantt_container_resize_watcher{background:transparent;width:100%;height:100%;position:absolute;top:0;left:0;z-index:-1;pointer-events:none;border:0;box-sizing:border-box;opacity:0} \ No newline at end of file +.gridHoverStyle,.gridSelection,.timelineSelection{background-color:#fff3a1}.gantt_grid_scale .gantt_grid_head_cell{color:#a6a6a6;border-top:none!important;border-right:none!important}.gantt_grid_data .gantt_cell{border-right:none;color:#454545}.gantt_task_link .gantt_link_arrow_right{border-width:6px;margin-top:-3px}.gantt_task_link .gantt_link_arrow_left{border-width:6px;margin-left:-6px;margin-top:-3px}.gantt_task_link .gantt_link_arrow_down,.gantt_task_link .gantt_link_arrow_up{border-width:6px}.gantt_task_line .gantt_task_progress_drag{bottom:-4px;height:10px;margin-left:-8px;width:16px}.chartHeaderBg{background-color:#fff}.gantt_task .gantt_task_scale .gantt_scale_cell{color:#a6a6a6;border-right:1px solid #ebebeb}.gantt_row.gantt_project,.gantt_row.odd.gantt_project{background-color:#edffef}.gantt_task_row.gantt_project,.gantt_task_row.odd.gantt_project{background-color:#f5fff6}.gantt_task_line.gantt_project{background-color:#65c16f;border:1px solid #3c9445}.gantt_task_line.gantt_project .gantt_task_progress{background-color:#46ad51}.buttonBg{background:#fff}.gantt_cal_light .gantt_btn_set{margin:5px 10px}.gantt_btn_set.gantt_cancel_btn_set{background:#fff;color:#454545;border:1px solid #cecece}.gantt_btn_set.gantt_save_btn_set{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff}.gantt_btn_set.gantt_delete_btn_set{text-shadow:0 -1px 0 #6f6f6f;background:#ec8e00;text-shadow:0 -1px 0 #a60;color:#fff}.gantt_cal_light_wide{padding-left:0!important;padding-right:0!important}.gantt_cal_light_wide .gantt_cal_larea{border-left:none!important;border-right:none!important}.gantt_popup_button.gantt_ok_button{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff;font-weight:700;border-width:0}.gantt_popup_button.gantt_cancel_button{font-weight:700;color:#454544}.gantt_popup_title{background-color:#fff}.gantt_popup_shadow{box-shadow:3px 3px 3px rgba(0,0,0,.07)}.gantt_qi_big_icon.icon_edit{color:#454545;background:#fff}.gantt_qi_big_icon.icon_delete{text-shadow:0 -1px 0 #a60;background:#ec8e00;color:#fff;border-width:0}.gantt_tooltip{box-shadow:3px 3px 3px rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07);border-top:1px solid rgba(0,0,0,.07);font-size:8pt;color:#454545}.gantt_container,.gantt_tooltip{background-color:#fff;font-family:Arial}.gantt_container{font-size:13px;border:1px solid #cecece;position:relative;white-space:nowrap;overflow-x:hidden;overflow-y:hidden}.gantt_task_scroll{overflow-x:scroll}.gantt_grid,.gantt_task{position:relative;overflow-x:hidden;overflow-y:hidden;display:inline-block;vertical-align:top}.gantt_grid_scale,.gantt_task_scale{color:#6b6b6b;font-size:12px;border-bottom:1px solid #cecece;box-sizing:border-box}.gantt_grid_scale,.gantt_task_scale,.gantt_task_vscroll{background-color:#fff}.gantt_scale_line{box-sizing:border-box;-moz-box-sizing:border-box;border-top:1px solid #cecece}.gantt_scale_line:first-child{border-top:none}.gantt_grid_head_cell{display:inline-block;vertical-align:top;border-right:1px solid #cecece;text-align:center;position:relative;cursor:default;height:100%;box-sizing:border-box;-moz-box-sizing:border-box;line-height:33px;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none;overflow:hidden}.gantt_scale_line{clear:both}.gantt_grid_data{width:100%;overflow:hidden;position:relative}.gantt_row{position:relative;-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_add,.gantt_grid_head_add{width:100%;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ3MjMyMENDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ3MjMyMERDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NDcyMzIwQUM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDcyMzIwQkM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PshZT8UAAABbSURBVHjaYrTdeZmBEsCER+4wEP+H4sPkGGCDg020ARR7gb4GIAcYDKMDdPnDyAbYkGG5DVW9cIQMvUdBBAuUY4vDz8iAcZinA2zgCHqAYQMseAywJcYFAAEGAM+UFGuohFczAAAAAElFTkSuQmCC);background-position:50%;background-repeat:no-repeat;cursor:pointer;position:relative;-moz-opacity:.3;opacity:.3}.gantt_grid_head_cell.gantt_grid_head_add{-moz-opacity:.6;opacity:.6;top:0}.gantt_grid_head_cell.gantt_grid_head_add:hover{-moz-opacity:1;opacity:1}.gantt_grid_data .gantt_row.odd:hover,.gantt_grid_data .gantt_row:hover{background-color:#fff3a1}.gantt_grid_data .gantt_row.odd:hover .gantt_add,.gantt_grid_data .gantt_row:hover .gantt_add{-moz-opacity:1;opacity:1}.gantt_row,.gantt_task_row{border-bottom:1px solid #ebebeb;background-color:#fff}.gantt_row.odd,.gantt_task_row.odd{background-color:#fff}.gantt_cell,.gantt_grid_head_cell,.gantt_row,.gantt_scale_cell,.gantt_task_cell,.gantt_task_row{box-sizing:border-box;-moz-box-sizing:border-box}.gantt_grid_head_cell,.gantt_scale_cell{line-height:inherit}.gantt_grid_scale .gantt_grid_column_resize_wrap{cursor:col-resize;position:absolute;width:13px;margin-left:-7px}.gantt_grid_column_resize_wrap .gantt_grid_column_resize{background-color:#cecece;height:100%;width:1px;margin:0 auto}.gantt_drag_marker.gantt_grid_resize_area{background-color:hsla(0,0%,91%,.5);border-left:1px solid #cecece;border-right:1px solid #cecece;height:100%;width:100%;box-sizing:border-box}.gantt_cell{display:inline-block;vertical-align:top;border-right:1px solid #ebebeb;padding-left:6px;padding-right:6px;height:100%;overflow:hidden;white-space:nowrap;font-size:13px}.gantt_grid_data .gantt_last_cell,.gantt_grid_scale .gantt_last_cell,.gantt_task .gantt_task_scale .gantt_scale_cell.gantt_last_cell,.gantt_task_bg .gantt_last_cell{border-right-width:0}.gantt_task .gantt_task_scale .gantt_scale_cell.gantt_last_cell{border-right-width:1px}.gantt_task_bg{overflow:hidden}.gantt_scale_cell{display:inline-block;white-space:nowrap;overflow:hidden;border-right:1px solid #cecece;text-align:center;height:100%}.gantt_task_cell{display:inline-block;height:100%;border-right:1px solid #ebebeb}.gantt_layout_cell.gantt_ver_scroll{width:0;background-color:transparent;height:1px;overflow-x:hidden;overflow-y:scroll;position:absolute;right:0;z-index:1}.gantt_ver_scroll>div{width:1px;height:1px}.gantt_hor_scroll{height:0;background-color:transparent;width:100%;clear:both;overflow-x:scroll;overflow-y:hidden}.gantt_layout_cell .gantt_hor_scroll{position:absolute}.gantt_hor_scroll>div{width:5000px;height:1px}.gantt_tree_indent{width:15px;height:100%;display:inline-block}.gantt_tree_content,.gantt_tree_icon{vertical-align:top}.gantt_tree_icon{width:28px;background-repeat:no-repeat;background-position:50%}.gantt_tree_content,.gantt_tree_icon{height:100%;display:inline-block}.gantt_tree_icon.gantt_open{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAArklEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNUAGcXJyMnz//h3uQrJdRLFBIAPQAchlJLsIFuCMjIwM////B5sJMoRkg2CuIdtrQcHBDOxsbHBfCQgIMHz48AHO//nrF8O6tWsJR7+7uzsDIxMTznT0/98/hp07d+I3iGopm2DewKFg8OV+AJWkfRMrTobLAAAAAElFTkSuQmCC);width:18px;cursor:pointer}.gantt_tree_icon.gantt_close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAkUlEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNeIN4uTkxAin79+/M5AcRtgCHGQIyQbhijaiDQoKDmZgZ2PDGf0/f/1iWLd2LeHod3d3Z2BkYsJp0P9//xh27tyJ3yCqpWyCeQOHgsGX+wEZpW4T5LCxKwAAAABJRU5ErkJggg==);width:18px;cursor:pointer}.gantt_tree_icon.gantt_blank{width:18px}.gantt_tree_icon.gantt_folder_open{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAs0lEQVQ4T62T0Q2EIBBEpQlzuaaMsQoqooqLsSljbMLLmMxmUXBR4U+Qt7Mzi2sqLVeJ00SgEMKWAnvvzYLyAyHfT5sU2fXDJSwCAXK8MI0/UTkva7IIFJsg3NSwnKdFoKtAWOQ1CN7CEqeTotE5L7QyJhmBcklZM4ZgTiAr3iOU3kD93ppO5SkMjB1EeXdBWoSkRql3YeIRe+cGvktS056JR9wsmeBUkujCfNXWCPC8GugPqn5ii/hV+FoAAAAASUVORK5CYII=)}.gantt_tree_icon.gantt_folder_closed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAfElEQVQ4T2NkoBJgpJI5DCgGTZ8+/T82gzMzMwlaCFcAM0RKQgyrI/0Dg/EahmIQyBB0DRvXr4W78tmLV1gtAbmYoEEgnciG4QpTogzCFyEwSyg2CBS2oCAZNQh3cA+hMAJ5AlcKxuVBlOgnNgVjMwyUrQjmamKLGaoZBAAOTFyLnFFW4wAAAABJRU5ErkJggg==)}.gantt_tree_icon.gantt_file{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAeElEQVQ4T2NkoBJgRDZn+vTp/wmZm5mZiaIHph7DICkJMUJmMfgHBmMYhtUgbAo3rl+L4lp0NUQbBPI2umuRDaPIIFAYwAyjv0HoMQALM5JdhG4QLMxGDcKdyIdoGIE89OzFK4KZF5Rl8EY/QROQFGA1iBQD0NUCAJVjcxO0naAQAAAAAElFTkSuQmCC)}.gantt_grid_head_cell .gantt_sort{position:absolute;right:5px;top:8px;width:7px;height:13px;background-repeat:no-repeat;background-position:50%}.gantt_grid_head_cell .gantt_sort.gantt_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR4nGNgQAKGxib/GbABkIS7b8B/DAUwCRiGK0CXwFBAb1DfP/U/LszwHwi2X7qFgUEArBtdAVwCBmAKMCSQFSDzAWXXaOHsXeqkAAAAAElFTkSuQmCC)}.gantt_grid_head_cell .gantt_sort.gantt_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR42mNgQAL1/VP/M2ADIIntF2/9x1AAlrh0C47hCmA60DFYwX88gIFGwNDY5D8uDFbg7hvwHx2jmIBTAlkB0e4BAEjlaNtBWJPnAAAAAElFTkSuQmCC)}.gantt_inserted,.gantt_updated{font-weight:700}.gantt_deleted{text-decoration:line-through}.gantt_invalid{background-color:#ffe0e0}.gantt_error{color:red}.gantt_status{right:1px;padding:5px 10px;background:hsla(0,0%,61%,.1);position:absolute;top:1px;transition:opacity .2s;opacity:0}.gantt_status.gantt_status_visible{opacity:1}#gantt_ajax_dots span{transition:opacity .2s;background-repeat:no-repeat;opacity:0}#gantt_ajax_dots span.gantt_dot_visible{opacity:1}.gantt_message_area{position:fixed;right:5px;width:250px;z-index:1000}.gantt-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Arial;z-index:10000;margin:5px;margin-bottom:10px;transition:all .5s ease}.gantt-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.gantt_modal_box{overflow:hidden;display:inline-block;min-width:250px;width:250px;text-align:center;position:fixed;z-index:20000;box-shadow:3px 3px 3px rgba(0,0,0,.07);font-family:Arial;border-radius:6px;border:1px solid #cecece;background:#fff}.gantt_popup_title{border-top-left-radius:6px;border-top-right-radius:6px;border-width:0}.gantt_button,.gantt_popup_button{border:1px solid #cecece;height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:4px;background:#fff}.gantt-info,.gantt_button,.gantt_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.gantt_popup_text{overflow:hidden}.gantt_popup_controls{border-radius:6px;padding:10px}.gantt_popup_button{min-width:100px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.gantt-info img,.gantt_modal_box img{float:left;margin-right:20px}.gantt-alert-error,.gantt-confirm-error{border:1px solid red}.gantt_button input,.gantt_popup_button div{border-radius:4px;font-size:14px;box-sizing:content-box;padding:0;margin:0;vertical-align:top}.gantt_popup_title{border-bottom:1px solid #cecece;height:40px;line-height:40px;font-size:20px}.gantt_popup_text{margin:15px 15px 5px;font-size:14px;color:#000;min-height:30px;border-radius:6px}.gantt-error,.gantt-info{font-size:14px;color:#000;box-shadow:3px 3px 3px rgba(0,0,0,.07);padding:0;background-color:#fff;border-radius:3px;border:1px solid #fff}.gantt-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #cecece}.gantt-error{background-color:#d81b1b;border:1px solid #ff3c3c}.gantt-error div{background-color:#d81b1b;border:1px solid #940000;color:#fff}.gantt-warning{background-color:#ff9000;border:1px solid #ffa633}.gantt-warning div{background-color:#ff9000;border:1px solid #b36500;color:#fff}.gantt_data_area div,.gantt_grid div{-ms-touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.gantt_data_area{position:relative;overflow-x:hidden;overflow-y:hidden;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none}.gantt_links_area{position:absolute;left:0;top:0}.gantt_side_content,.gantt_task_content,.gantt_task_progress{line-height:inherit;overflow:hidden;height:100%}.gantt_task_content{font-size:12px;color:#fff;width:100%;top:0;cursor:pointer;position:absolute;white-space:nowrap;text-align:center}.gantt_task_progress{text-align:center;z-index:0;background:#299cb4}.gantt_task_progress_wrapper{border-radius:inherit;position:relative;width:100%;height:100%;overflow:hidden}.gantt_task_line{border-radius:2px;position:absolute;box-sizing:border-box;background-color:#3db9d3;border:1px solid #2898b0;-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_task_line.gantt_drag_move div{cursor:move}.gantt_touch_move,.gantt_touch_progress .gantt_touch_resize{transform:scale(1.02,1.1);transform-origin:50%}.gantt_touch_progress .gantt_task_progress_drag,.gantt_touch_resize .gantt_task_drag{transform:scaleY(1.3);transform-origin:50%}.gantt_side_content{position:absolute;white-space:nowrap;color:#6e6e6e;top:0;font-size:11px}.gantt_side_content.gantt_left{right:100%;padding-right:20px}.gantt_side_content.gantt_right{left:100%;padding-left:20px}.gantt_side_content.gantt_link_crossing{bottom:8.75px;top:auto}.gantt_link_arrow,.gantt_task_link .gantt_line_wrapper{position:absolute;cursor:pointer}.gantt_line_wrapper div{background-color:#ffa011}.gantt_task_link:hover .gantt_line_wrapper div{box-shadow:0 0 5px 0 #ffa011}.gantt_task_link div.gantt_link_arrow{background-color:transparent;border-style:solid;width:0;height:0}.gantt_link_control{position:absolute;width:20px;top:0}.gantt_link_control div{display:none;cursor:pointer;box-sizing:border-box;position:relative;top:50%;margin-top:-7.5px;vertical-align:middle;border:1px solid #929292;border-radius:6.5px;height:13px;width:13px;background-color:#f0f0f0}.gantt_link_control.task_right div.gantt_link_point{margin-left:7px}.gantt_link_control div:hover{background-color:#fff}.gantt_link_control.task_left{left:-20px}.gantt_link_control.task_right{right:-20px}.gantt_link_target .gantt_link_control div,.gantt_task_line.gantt_drag_move .gantt_link_control div,.gantt_task_line.gantt_drag_move .gantt_task_drag,.gantt_task_line.gantt_drag_move .gantt_task_progress_drag,.gantt_task_line.gantt_drag_progress .gantt_link_control div,.gantt_task_line.gantt_drag_progress .gantt_task_drag,.gantt_task_line.gantt_drag_progress .gantt_task_progress_drag,.gantt_task_line.gantt_drag_resize .gantt_link_control div,.gantt_task_line.gantt_drag_resize .gantt_task_drag,.gantt_task_line.gantt_drag_resize .gantt_task_progress_drag,.gantt_task_line.gantt_selected .gantt_link_control div,.gantt_task_line.gantt_selected .gantt_task_drag,.gantt_task_line.gantt_selected .gantt_task_progress_drag,.gantt_task_line:hover .gantt_link_control div,.gantt_task_line:hover .gantt_task_drag,.gantt_task_line:hover .gantt_task_progress_drag{display:block}.gantt_link_source,.gantt_link_target{box-shadow:0 0 3px #3db9d3}.gantt_link_target.link_finish_allow,.gantt_link_target.link_start_allow{box-shadow:0 0 3px #ffbf5e}.gantt_link_target.link_finish_deny,.gantt_link_target.link_start_deny{box-shadow:0 0 3px #e87e7b}.link_finish_allow .gantt_link_control.task_end_date div,.link_start_allow .gantt_link_control.task_start_date div{background-color:#ffbf5e;border-color:#ffa011}.link_finish_deny .gantt_link_control.task_end_date div,.link_start_deny .gantt_link_control.task_start_date div{background-color:#e87e7b;border-color:#dd3e3a}.gantt_link_arrow_right{border-width:4px 0 4px 6px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;border-left-color:#ffa011;margin-top:-1px}.gantt_link_arrow_left{border-width:4px 6px 4px 0;margin-top:-1px;border-top-color:transparent!important;border-right-color:#ffa011;border-bottom-color:transparent!important;border-left-color:transparent!important}.gantt_link_arrow_up{border-width:0 4px 6px;border-color:transparent transparent #ffa011;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:#ffa011;border-left-color:transparent!important}.gantt_link_arrow_down{border-width:4px 6px 0 4px;border-top-color:#ffa011;border-right-color:transparent!important;border-bottom-color:transparent!important;border-left-color:transparent!important}.gantt_task_drag,.gantt_task_progress_drag{cursor:ew-resize;display:none;position:absolute}.gantt_task_drag.task_right{cursor:e-resize}.gantt_task_drag.task_left{cursor:w-resize}.gantt_task_drag{height:100%;width:8px;z-index:1;top:-1px}.gantt_task_drag.task_left{left:-7px}.gantt_task_drag.task_right{right:-7px}.gantt_task_progress_drag{height:8px;width:8px;bottom:-4px;margin-left:-4px;background-position:bottom;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkY3Rjk0RUVDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkY3Rjk0RUZDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjdGOTRFQ0MyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRjdGOTRFREMyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PobPBzIAAADkSURBVHjaYpk2bRoDDsAExL1QdjEQ/8OmiAWHZk4gXqymqhQM4ty6fU8OSMUA8XdiDBAB4k0a6iqWRga6EKcwMQXduHlnL5DpB8Rv0J2JDFSA+JiOtgZcMwiA2CAxkBxUDVYDLEAKgIpV9XQ0MZwFEgPJAZnHoWpRDAgC4n2W5saiQKfjClQGkBxQDciL+6B6wAbkA/EqJwdrTkUFOQZCAKQGpBbIXA3SCzJggo+XK7OEuBgDsQCkFqgHrBfsBT5eHgZSAUwP2IBfv36TbABMDygdtK1Zv6UESLORaAbIhG6AAAMAKN8wE24DXWcAAAAASUVORK5CYII=);background-repeat:no-repeat;z-index:1}.gantt_task_progress_drag:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVQoz6WMPW7CQBgFJxZaiZ60qcgdwjVMmzu8gpwhDULabXyBdHAGuzRHivQiQZovigS2+Jtu95t5T03TMITtCtjEc5VSOgx5k5F4CnxJWgKUUl5sv6eUvk/daiCeAe1fDCCpBtq4jQ/YngO9pMWpGH99OOcDtt8ifmWEuO3D/R+wXQOdpGcuIGkGdNFQ2RawlTTlSsLd2RY55+O95JyPFQ/y8MAE+CylfADpxvYHWP8CXj+JR4wdKHYAAAAASUVORK5CYII=)}.gantt_link_tooltip{box-shadow:3px 3px 3px #888;background-color:#fff;border-left:1px dotted #cecece;border-top:1px dotted #cecece;font-family:Tahoma;font-size:8pt;color:#444;padding:6px;line-height:20px}.gantt_link_direction{height:0;border:0 none #ffa011;border-bottom-style:dashed;border-bottom-width:2px;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;z-index:2;margin-left:1px;position:absolute}.gantt_grid_data .gantt_row.gantt_selected,.gantt_grid_data .gantt_row.odd.gantt_selected,.gantt_task_row.gantt_selected{background-color:#fff3a1}.gantt_task_row.gantt_selected .gantt_task_cell{border-right-color:#ffec6e}.gantt_task_line.gantt_selected{box-shadow:0 0 5px #299cb4}.gantt_task_line.gantt_project.gantt_selected{box-shadow:0 0 5px #46ad51}.gantt_task_line.gantt_milestone{visibility:hidden;background-color:#d33daf;border:0 solid #61164f;box-sizing:content-box;-moz-box-sizing:content-box}.gantt_task_line.gantt_milestone div{visibility:visible}.gantt_task_line.gantt_milestone .gantt_task_content{background:inherit;border:inherit;border-width:1px;border-radius:inherit;box-sizing:border-box;-moz-box-sizing:border-box;transform:rotate(45deg)}.gantt_task_line.gantt_task_inline_color{border-color:#999}.gantt_task_line.gantt_task_inline_color .gantt_task_progress{background-color:#363636;opacity:.2}.gantt_task_line.gantt_task_inline_color.gantt_project.gantt_selected,.gantt_task_line.gantt_task_inline_color.gantt_selected{box-shadow:0 0 5px #999}.gantt_task_link.gantt_link_inline_color:hover .gantt_line_wrapper div{box-shadow:0 0 5px 0 #999}.gantt_critical_task{background-color:#e63030;border-color:#9d3a3a}.gantt_critical_task .gantt_task_progress{background-color:rgba(0,0,0,.4)}.gantt_critical_link .gantt_line_wrapper>div{background-color:#e63030}.gantt_critical_link .gantt_link_arrow{border-color:#e63030}.gantt_btn_set:focus,.gantt_cell:focus,.gantt_grid_head_cell:focus,.gantt_popup_button:focus,.gantt_qi_big_icon:focus,.gantt_row:focus{box-shadow:inset 0 0 1px 1px #4d90fe}.gantt_split_parent{opacity:.1;pointer-events:none}.gantt_unselectable,.gantt_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.gantt_cal_light{-webkit-tap-highlight-color:transparent;background:#fff;border-radius:6px;font-family:Arial;font-size:13px;border:1px solid #cecece;color:#6b6b6b;font-size:12px;position:absolute;z-index:10001;width:550px;height:250px;box-shadow:3px 3px 3px rgba(0,0,0,.07)}.gantt_cal_light_wide{width:650px}.gantt_cal_light select{font-family:Arial;border:1px solid #cecece;font-size:13px;padding:2px;margin:0}.gantt_cal_ltitle{padding:7px 10px;overflow:hidden;-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:0;-moz-border-radius-topleft:6px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:0;border-top-left-radius:6px;border-bottom-left-radius:0;border-top-right-radius:6px;border-bottom-right-radius:0}.gantt_cal_ltitle,.gantt_cal_ltitle span{white-space:nowrap}.gantt_cal_lsection{color:#727272;font-weight:700;padding:12px 0 5px 10px}.gantt_cal_lsection .gantt_fullday{float:right;margin-right:5px;font-size:12px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.gantt_cal_lsection{font-size:13px}.gantt_cal_ltext{padding:2px 10px;overflow:hidden}.gantt_cal_ltext textarea{overflow-y:auto;overflow-x:hidden;font-family:Arial;font-size:13px;box-sizing:border-box;border:1px solid #cecece;height:100%;width:100%;outline:none!important;resize:none}.gantt_section_constraint [data-constraint-time-select]{margin-left:20px}.gantt_time{font-weight:700}.gantt_cal_light .gantt_title{padding-left:10px}.gantt_cal_larea{border:1px solid #cecece;border-left:none;border-right:none;background-color:#fff;overflow:hidden;height:1px}.gantt_btn_set{margin:10px 7px 5px 10px;padding:5px 15px 5px 10px;float:left;border-radius:4px;border:0 solid #cecece;height:32px;font-weight:700;background:#fff;box-sizing:border-box;cursor:pointer}.gantt_hidden{display:none}.gantt_btn_set div{float:left;font-size:13px;height:22px;line-height:22px;background-repeat:no-repeat;vertical-align:middle}.gantt_save_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk1OUU5RDFDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk1OUU5RDJDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxOTU5RTlDRkMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxOTU5RTlEMEMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjDroXYAAAEXSURBVHjaYvz//z8DJYCRUgPIAUxAbAnEHiAHMIBcQCwGaRYXF3e6evXqoffv39/dv38/CymaGSUkJBzv3LlzCsj///fv3wdAihkkIQnEvkAshU8zLy+v7a1bt06ANP/79+87kDIAy505cybq06dPr3p7ezuwGQLTfOPGjWP/ESAZLg8kPKBO+g01RBJNszWyZqC6uSgWgIg/f/4shxnS2dnZBjMEqNkSFGBImi8CKTYMA4BYCGjIczRDHC5dunQQSfN7IKWI4UUkjjdMMdCwnw8ePLjwHxV4Yw1gZA5Q47z/2EELzhhCE+ABGvIQWSeQvwcU38QaAML2wHj+C/X3MyAlijeB4ZBoBOIPQGxJKIVSnBsBAgwABddBclWfcZUAAAAASUVORK5CYII=);margin-top:2px;width:21px}.gantt_cancel_btn{margin-top:2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDkzMDA3MzlDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDkzMDA3M0FDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowOTMwMDczN0MzMDQxMUUyODZBNUUzMURDODBGQkRENiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowOTMwMDczOEMzMDQxMUUyODZBNUUzMURDODBGQkRENiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmYuYOUAAAEdSURBVHjaYvz//z8DJYAFXWDlypU8QKoIiD2A2AwqfAqIdwBxX3h4+Bdk9YzILgBqtgdS84FYEYeF94E4EWjIQZgAE5LmQCB1AKoZZKMPEAtAMYh9GSp3AKjWD8UFQAEhIPshEIOc3wHENUBb/qJ57SyQMoJyPwKxElDNO1gYFEE17wMKVmIJlzNQzeegrjaA6qmBecEbSvfh0GwMxGeBhoPoemQ9MAO0kEIbl2YTqPAFKK2IbMB3AjabYIkRZmQD7kNpMyI0G0PpO8gGbIUFJj7NQDk2INWIrIcJKfBAKcwJqvkcDs0TgFgXGo19KCkRmpDWQdWDEk0NUoCBoq0FqhkE/IEWbKJKUmZEz43QzFSKIzN1481M5ACAAAMAlfl/lCwRpagAAAAASUVORK5CYII=);width:20px}.gantt_delete_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=);margin-top:2px;width:20px}.gantt_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=10)}.gantt_custom_button{padding:0 3px;font-family:Arial;font-size:13px;font-weight:400;margin-right:10px;margin-top:-5px;cursor:pointer;float:right;height:21px;width:90px;border:1px solid #cecece;text-align:center;border-radius:4px}.gantt_custom_button div{cursor:pointer;float:none;height:21px;line-height:21px;vertical-align:middle}.gantt_custom_button div:first-child{display:none}.gantt_cal_light_wide{width:580px;padding:2px 4px}.gantt_cal_light_wide .gantt_cal_larea{box-sizing:border-box;border:1px solid #cecece}.gantt_cal_light_wide .gantt_cal_lsection{border:0;float:left;text-align:right;width:80px;height:20px;padding:5px 10px 0 0}.gantt_cal_light_wide .gantt_wrap_section{position:relative;padding:10px 0;overflow:hidden;border-bottom:1px solid #ebebeb}.gantt_cal_light_wide .gantt_section_time{overflow:hidden;padding-top:2px!important;padding-right:0;height:20px!important}.gantt_cal_light_wide .gantt_cal_ltext{padding-right:0}.gantt_cal_light_wide .gantt_cal_larea{padding:0 10px;width:100%}.gantt_cal_light_wide .gantt_section_time{background:transparent}.gantt_cal_light_wide .gantt_cal_checkbox label{padding-left:0}.gantt_cal_light_wide .gantt_cal_lsection .gantt_fullday{float:none;margin-right:0;font-weight:700;cursor:pointer}.gantt_cal_light_wide .gantt_custom_button{position:absolute;top:0;right:0;margin-top:2px}.gantt_cal_light_wide .gantt_repeat_right{margin-right:55px}.gantt_cal_light_wide.gantt_cal_light_full{width:738px}.gantt_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.gantt_cal_light input{font-size:13px}.gantt_section_time{background-color:#fff;white-space:nowrap;padding:2px 10px 5px;padding-top:2px!important}.gantt_section_time .gantt_time_selects{float:left;height:25px}.gantt_section_time .gantt_time_selects select{height:23px;padding:2px;border:1px solid #cecece}.gantt_duration{width:100px;height:23px;float:left;white-space:nowrap;margin-left:20px;line-height:23px}.gantt_duration .gantt_duration_dec,.gantt_duration .gantt_duration_inc,.gantt_duration .gantt_duration_value{box-sizing:border-box;text-align:center;vertical-align:top;height:100%;border:1px solid #cecece}.gantt_duration .gantt_duration_value{width:40px;padding:3px 4px;border-left-width:0;border-right-width:0}.gantt_duration .gantt_duration_value.gantt_duration_value_formatted{width:70px}.gantt_duration .gantt_duration_dec,.gantt_duration .gantt_duration_inc{width:20px;padding:1px;padding-bottom:1px;background:#fff}.gantt_duration .gantt_duration_dec{-moz-border-top-left-radius:4px;-moz-border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt_duration .gantt_duration_inc{margin-right:4px;-moz-border-top-right-radius:4px;-moz-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt_resources{max-height:150px;height:auto;overflow-y:auto}.gantt_resource_row{display:block;padding:10px 0;border-bottom:1px solid #ebebeb;cursor:pointer}.gantt_resource_row input[type=checkbox]:not(:checked),.gantt_resource_row input[type=checkbox]:not(:checked)~div{opacity:.5}.gantt_resource_toggle{vertical-align:middle}.gantt_resources_filter .gantt_resources_filter_input{padding:1px 2px;box-sizing:border-box}.gantt_resources_filter .switch_unsetted{vertical-align:middle}.gantt_resource_cell{display:inline-block}.gantt_resource_cell.gantt_resource_cell_checkbox{width:24px;max-width:24px;min-width:24px;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_label{width:40%;max-width:40%;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_value{width:30%;max-width:30%;vertical-align:middle}.gantt_resource_cell.gantt_resource_cell_value input,.gantt_resource_cell.gantt_resource_cell_value select{width:80%;vertical-align:middle;padding:1px 2px;box-sizing:border-box}.gantt_resource_cell.gantt_resource_cell_unit{width:10%;max-width:10%;vertical-align:middle}.gantt_resource_early_value{opacity:.8;font-size:.9em}.gantt_cal_quick_info{border:1px solid #cecece;border-radius:6px;position:absolute;z-index:300;box-shadow:3px 3px 3px rgba(0,0,0,.07);background-color:#fff;width:300px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.gantt_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.gantt_cal_quick_info.gantt_qi_left .gantt_qi_big_icon{float:right}.gantt_cal_qi_title{-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:0;-moz-border-radius-topleft:6px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:0;border-top-left-radius:6px;border-bottom-left-radius:0;border-top-right-radius:6px;border-bottom-right-radius:0;padding:5px 0 8px 12px;color:#454545;background-color:#fff;border-bottom:1px solid #cecece}.gantt_cal_qi_tdate{font-size:14px;font-weight:700}.gantt_cal_qi_tcontent{font-size:13px}.gantt_cal_qi_content{padding:16px 8px;font-size:13px;color:#454545;overflow:hidden}.gantt_cal_qi_controls{-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:6px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:6px;-moz-border-radius-topleft:0;-moz-border-radius-bottomleft:6px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:6px;border-top-left-radius:0;border-bottom-left-radius:6px;border-top-right-radius:0;border-bottom-right-radius:6px;padding-left:7px}.gantt_cal_qi_controls .gantt_menu_icon{margin-top:6px;background-repeat:no-repeat}.gantt_cal_qi_controls .gantt_menu_icon.icon_edit{width:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3QYFCjI5ZQj5bAAAAFNJREFUOMvt0zEOACAIA0DkwTymH8bJTRTKZGJXyaWEKPKTCQAH4Ls37cItcDUzsxHNDLZNhCq7Gt1wh9ErV7EjyGAhyGLphlnsClWuS32rn0czAV+vNGrM/LBtAAAAAElFTkSuQmCC)}.gantt_cal_qi_controls .gantt_menu_icon.icon_delete{width:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=)}.gantt_qi_big_icon{font-size:13px;border-radius:4px;font-weight:700;background:#fff;margin:5px 9px 8px 0;min-width:60px;line-height:32px;vertical-align:middle;padding:0 10px 0 5px;cursor:pointer;border:1px solid #cecece}.gantt_cal_qi_controls div{float:left;height:32px;text-align:center;line-height:32px}.gantt_tooltip{padding:10px;position:absolute;z-index:50;white-space:nowrap}.gantt_resource_marker{position:absolute;text-align:center;font-size:14px;color:#fff}.gantt_resource_marker_ok{background:rgba(78,208,134,.75)}.gantt_resource_marker_overtime{background:hsla(0,100%,76%,.69)}.gantt_histogram_label{width:100%;height:100%;position:absolute;z-index:1;font-weight:700;font-size:13px}.gantt_histogram_fill{background-color:rgba(41,157,180,.2);width:100%;position:absolute;bottom:0}.gantt_histogram_hor_bar{height:1px;margin-top:-1px}.gantt_histogram_hor_bar,.gantt_histogram_vert_bar{position:absolute;background:#299db4;margin-left:-1px}.gantt_histogram_vert_bar{width:1px}.gantt_histogram_cell{position:absolute;text-align:center;font-size:13px;color:#000}.gantt_marker{height:100%;width:2px;top:0;position:absolute;text-align:center;background-color:rgba(255,0,0,.4);box-sizing:border-box}.gantt_marker .gantt_marker_content{padding:5px;background:inherit;color:#fff;position:absolute;font-size:12px;line-height:12px;opacity:.8}.gantt_marker_area{position:absolute;top:0;left:0}.gantt_grid_editor_placeholder{position:absolute}.gantt_grid_editor_placeholder>div,.gantt_grid_editor_placeholder input,.gantt_grid_editor_placeholder select{width:100%;height:100%;box-sizing:border-box}.gantt_row_placeholder div{opacity:.5}.gantt_row_placeholder .gantt_add,.gantt_row_placeholder .gantt_file{display:none}.gantt_drag_marker.gantt_grid_dnd_marker{background-color:transparent;transition:all .1s ease}.gantt_grid_dnd_marker_line{height:4px;width:100%;background-color:#3498db}.gantt_grid_dnd_marker_line:before{background:#fff;width:12px;height:12px;box-sizing:border-box;border:3px solid #3498db;border-radius:6px;content:"";line-height:1px;display:block;position:absolute;margin-left:-11px;margin-top:-4px;pointer-events:none}.gantt_grid_dnd_marker_folder{height:100%;width:100%;position:absolute;pointer-events:none;box-sizing:border-box;box-shadow:inset 0 0 0 2px #3f98db;background:transparent}.gantt_overlay_area{display:none}.gantt_overlay,.gantt_overlay_area{position:absolute;height:inherit;width:inherit;top:0;left:0}.gantt_click_drag_rect{position:absolute;left:0;top:0;outline:1px solid #3f98db;background-color:rgba(52,152,219,.3)}.gantt_timeline_move_available,.gantt_timeline_move_available *{cursor:move}.gantt_layout_content{width:100%;overflow:auto;box-sizing:border-box}.gantt_layout_cell{position:relative;box-sizing:border-box}.gantt_layout_cell>.gantt_layout_header{background:#33aae8;color:#fff;font-size:17px;padding:5px 10px;box-sizing:border-box}.gantt_layout_header.collapsed_x{background:#a9a9a9}.gantt_layout_header.collapsed_x .gantt_header_arrow:before{content:"\21E7"}.gantt_layout_header.collapsed_y{background:#a9a9a9}.gantt_layout_header.collapsed_y .gantt_header_arrow:before{content:"\21E9"}.gantt_layout_header{cursor:pointer}.gantt_layout_header .gantt_header_arrow{float:right;text-align:right}.gantt_layout_header .gantt_header_arrow:before{content:"\21E6"}.gantt_layout_header.vertical .gantt_header_arrow:before{content:"\21E7"}.gantt_layout_outer_scroll_vertical .gantt_layout_content{overflow-y:hidden}.gantt_layout_outer_scroll_horizontal .gantt_layout_content{overflow-x:hidden}.gantt_layout_x>.gantt_layout_cell{display:inline-block;vertical-align:top}.gantt_layout_x{white-space:nowrap}.gantt_resizing{opacity:.7;background:#f2f2f2}.gantt_layout_cell_border_right.gantt_resizer{overflow:visible;border-right:0}.gantt_resizer{cursor:e-resize;position:relative}.gantt_resizer_y{cursor:n-resize}.gantt_resizer_stick{background:#33aae8;z-index:9999;position:absolute;top:0;width:100%}.gantt_resizer_x .gantt_resizer_x{position:absolute;width:20px;height:100%;margin-left:-10px;top:0;left:0;z-index:1}.gantt_resizer_y .gantt_resizer_y{position:absolute;height:20px;width:100%;top:-10px;left:0;z-index:1}.gantt_resizer_error{background:#cd5c5c!important}.gantt_layout_cell_border_left{border-left:1px solid #cecece}.gantt_layout_cell_border_right{border-right:1px solid #cecece}.gantt_layout_cell_border_top{border-top:1px solid #cecece}.gantt_layout_cell_border_bottom{border-bottom:1px solid #cecece}.gantt_layout_cell_border_transparent{border-color:transparent}.gantt_window{position:absolute;top:50%;left:50%;z-index:999999999;background:#fff}.gantt_window_content{position:relative}.gantt_window_content_header{background:#39c;color:#fff;height:33px;padding:10px 10px 0;border-bottom:2px solid #fff;position:relative}.gantt_window_content_header_text{padding-left:10%}.gantt_window_content_header_buttons{position:absolute;top:10px;right:10px}.gantt_window_content_header_buttons:hover{color:#000;cursor:pointer}.gantt_window_content_resizer{position:absolute;width:15px;height:15px;bottom:0;line-height:15px;right:-1px;text-align:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeAFjIAUwUshlpJDLSIhLGAAACQ4AFk79JaMAAAAASUVORK5CYII=);cursor:nw-resize;z-index:999}.gantt_window_content_frame{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.1);z-index:9999}.gantt_window_drag{cursor:pointer!important}.gantt_window_resizing{overflow:visible}.gantt_window_resizing_body{overflow:hidden!important}.gantt_window_modal{background:rgba(0,0,0,.1);z-index:9999;top:0;left:0;width:100%;height:100%;position:fixed}.gantt_cal_light,.gantt_cal_quick_info,.gantt_container,.gantt_message_area,.gantt_modal_box,.gantt_tooltip{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gantt_noselect{-moz-user-select:-moz-none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.gantt_drag_marker{position:absolute;top:-1000px;left:-1000px;font-family:Arial;font-size:13px;z-index:1;white-space:nowrap}.gantt_drag_marker .gantt_tree_icon.gantt_blank,.gantt_drag_marker .gantt_tree_icon.gantt_close,.gantt_drag_marker .gantt_tree_icon.gantt_open,.gantt_drag_marker .gantt_tree_indent{display:none}.gantt_drag_marker,.gantt_drag_marker .gantt_row.odd{background-color:#fff}.gantt_drag_marker .gantt_row{border-left:1px solid #d2d2d2;border-top:1px solid #d2d2d2}.gantt_drag_marker .gantt_cell{border-color:#d2d2d2}.gantt_row.gantt_over,.gantt_task_row.gantt_over{background-color:#0070fe}.gantt_row.gantt_transparent .gantt_cell{opacity:.7}.gantt_task_row.gantt_transparent{background-color:#f8fdfd}.gantt_popup_button.gantt_delete_button{background:#3db9d3;text-shadow:0 -1px 0 #248a9f;color:#fff;font-weight:700;border-width:0}.gantt_container_resize_watcher{background:transparent;width:100%;height:100%;position:absolute;top:0;left:0;z-index:-1;pointer-events:none;border:0;box-sizing:border-box;opacity:0} \ No newline at end of file diff --git a/codebase/dhtmlxgantt.js b/codebase/dhtmlxgantt.js index b0360708..1fdf4d2b 100644 --- a/codebase/dhtmlxgantt.js +++ b/codebase/dhtmlxgantt.js @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.6.2.7 Standard +dhtmlxGantt v.6.3.0 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. @@ -10,5 +10,5 @@ To use dhtmlxGantt in non-GPL projects (and get Pro version of the product), ple (c) XB Software Ltd. */ -!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=156)}([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=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){var n=i(2),r=i(20);t.exports=function(t){var e=i(5)(t);function a(){return e.apply(this,arguments)||this}return n(a,e),a.prototype.render=function(t){var e="
";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,e){if(!t.start_date||!t.end_date)return null;var i=e.posFromDate(t.start_date),n=e.posFromDate(t.end_date),r=Math.min(i,n)-200,a=Math.max(i,n)+200;return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:r,width:a-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;nr.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;de)){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=t.format||t.template||t.date;"string"==typeof l&&(l=this.$gantt.date.date_to_str(l));var u=0,d=t.count;!n.smart_scales||isNaN(e)||isNaN(i)||(u=c(t.left,e),d=c(t.left,i)+1),s=t.css||function(){},!t.css&&n.inherit_scale_class&&(s=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;if(!t)return 0;var e=String(t.valueOf());if(void 0!==this._posFromDateCache[e])return this._posFromDateCache[e];var i=this.columnIndexByDate(t);this.$gantt.assert(i>=0,"Invalid day index");var n=Math.floor(i),r=i%1,a=this._tasks.left[Math.min(n,this._tasks.width.length-1)];n==this._tasks.width.length&&(a+=this._tasks.width[this._tasks.width.length-1]),r&&(n=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(t)].concat(e.getSubScales(t));return e.sortScales(i),i},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._timelineCacheAttached){var e=this;t._timelineCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t._timelineCacheAttached&&(t.detachEvent(t._timelineCacheAttached),t._timelineCacheAttached=!1)}},refresh:function(){this._bindStore(),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._resetTopPositionHeight(),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this._unbindStore(),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()}},t.exports=l},function(t,e){t.exports=function(t){return t.config.smart_rendering&&t._smart_render}},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,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)&&(a.open_split_tasks&&!l.$open||!a.open_split_tasks)&&o.push("gantt_split_parent"),a.select_task&&t.isSelectedTask(n)&&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(125),s=i(29),l=function(t,e,i,n){this.$config=r.mixin({},e||{}),this.$gantt=n,this.$parent=t,a(this),this.$state={},r.mixin(this,s())};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(12)(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.$config.height=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._unbindStore(),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()}},t.exports=l},function(t,e){t.exports=function(){var t={};return{_resetTopPositionHeight:function(){t={}},getRowTop:function(t){return t*this.$getConfig().row_height},getItemTop:function(e){if(this.$config.rowStore){if(void 0!==t[e])return t[e];var i=this.$config.rowStore;if(!i)return 0;var n=i.getIndexById(e);if(-1===n&&i.getParent&&i.exists(e)){var r=i.getParent(e);if(i.exists(r)){var a=i.getItem(r);if(this.$gantt.isSplitTask(a))return this.getRowTop(i.getIndexById(a.id))}}return t[e]=this.getRowTop(n),t[e]}return 0}}}},function(t,e,i){var n=i(2),r=i(1),a=function(t){"use strict";function e(e,i,n){var r=t.apply(this,arguments)||this;return e&&(r.$root=!0),r._parseConfig(i),r.$name="layout",r}return n(e,t),e.prototype.destructor=function(){this.$container&&this.$view&&r.removeNode(this.$view);for(var e=0;e0?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("change",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(9)(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(58)(t),a=i(57)(t),o=i(56)(t),s=i(9)(t),l=i(55)(t),c=i(54)(t),u=i(53)(t),d=i(52)(t),h=i(9)(t),f=i(51)(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(r0?this._getClosestWorkTimeFuture(a,r):this._getClosestWorkTimePast(a,r),!this._isWorkTime(a,e)));){if(++o>3e3)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(21),a=i(68);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){if(t.xmlDoc&&404===t.xmlDoc.status)this.assert(!1,"Failed to load the data from "+t.xmlDoc.responseURL+", server returns 404");else{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.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;ne._levels.length-1||e.setLevel(t)},this.getCurrentLevel=function(){return e._activeLevelIndex},this.getLevels=function(){return e._levels},this.setLevel=function(t){var i=e._getZoomIndexByName(t);-1===i&&e.$gantt.assert(-1!==i,"Invalid zoom level for gantt.ext.zoom.setLevel. "+t+" is not an expected value."),e._setLevel(i,0)},this._getZoomIndexByName=function(t){var i=-1;if("string"==typeof t){if(!isNaN(Number(t))&&e._levels[Number(t)])i=Number(t);else for(var n=0;n0&&(r=!0),t.preventDefault(),t.stopPropagation(),e._setScaleSettings(r,n)},this._setScaleDates=function(){e._initialStartDate&&e._initialEndDate&&(e.$gantt.config.start_date=e._initialStartDate,e.$gantt.config.end_date=e._initialEndDate)},this.$gantt=t,this._domEvents=this.$gantt._createDomEventScope()}return t.prototype.init=function(t){var e=this;this._initialStartDate=t.startDate,this._initialEndDate=t.endDate,this._activeLevelIndex=t.activeLevelIndex?t.activeLevelIndex:0,this._levels=this._mapScales(t.levels||o),this._handler=t.handler||this._defaultHandler,this._minColumnWidth=t.minColumnWidth||60,this._maxColumnWidth=t.maxColumnWidth||240,this._widthStep=t.widthStep||3/8*t.minColumnWidth,this._useKey=t.useKey,this._initialized||(r(this),this.$gantt.attachEvent("onGanttScroll",function(){e._getVisibleDate()})),this._domEvents.detachAll(),"wheel"===t.trigger&&(this.$gantt.$root?this._attachWheelEvent(t):this.$gantt.attachEvent("onGanttReady",function(){e._attachWheelEvent(t)})),this._initialized=!0,this.setLevel(this._activeLevelIndex)},t.prototype._mapScales=function(t){return t.map(function(t){return Array.isArray(t)?{scales:t}:t})},t.prototype._setScaleSettings=function(t,e){t?this._stepUp(e):this._stepDown(e)},t.prototype._stepUp=function(t){if(!(this._activeLevelIndex>=this._levels.length-1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var i=this.$gantt.config.min_column_width+this._widthStep;i>this._maxColumnWidth&&(i=this._minColumnWidth,e++),this.$gantt.config.min_column_width=i}else e++;this._setLevel(e,t)}},t.prototype._stepDown=function(t){if(!(this._activeLevelIndex<1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var i=this.$gantt.config.min_column_width-this._widthStep;i0&&r<=i.x_end&&a>=i.x}function h(e,i,n){var r=t.config.resource_property,a=[];if(t.getDatastore("task").exists(i)){var o=t.getTask(i);a=o[r]||[]}Array.isArray(a)||(a=[a]);for(var s=0;s"+s+""),l&&(s="
"+s),s&&(c.innerHTML=s),c}return null}return{render:function(t,r,a){var c=r.$getConfig(),u=r.$getTemplates(),h=r.getScale(),f=l(t,c.resource_property,h,r),_=[],g={},p=t.capacity||r.$config.capacity||24;e[t.id]={},i[t.id]=null,n[t.id]=null;for(var v=0;v0&&g+p>=m+2&&(l=0),o&&!b?o=0:o<0&&!y?o=0:o>0&&y+b>=k&&(o=0);var w=t.config.autoscroll_step;w&&w<2&&(w=2),o*=w||i,l*=w||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 v(t,i,n){return t-e<0&&ti-e&&t>n?1:0}t.attachEvent("onGanttReady",function(){t.eventRemove(document.body,"mousemove",g),t.event(document.body,"mousemove",g)})}},function(t,e,i){t.exports=function(t){t.ext||(t.ext={});for(var e=[i(84),i(83),i(82),i(81),i(80),i(79),i(78),i(77)],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!==e.templates.parse_date?e.templates.xml_date(o):e.templates.parse_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(87),s=i(86);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,null),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;aa.bottom&&(d.y=a.bottom-r.height-s),d.right>a.right&&(d.x=a.right-r.width-o),d}function v(t){var i=u(),n=["gantt_link_tooltip"];i.link_source_id&&i.link_target_id&&(e.isLinkAllowed(i.link_source_id,i.link_target_id,i.link_from_start,i.link_to_start)?n.push("gantt_allowed_link"):n.push("gantt_invalid_link"));var r=e.templates.drag_link_class(i.link_source_id,i.link_from_start,i.link_target_id,i.link_to_start);r&&n.push(r);var 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 m(){o=s=r=null,a=!0}function y(i,n,r,a){var o=function(){_._direction&&_._direction.parentNode||(_._direction=document.createElement("div"),t.$task_links.appendChild(_._direction));return _._direction}(),s=u(),l=["gantt_link_direction"];e.templates.link_direction_class&&l.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var c=Math.sqrt(Math.pow(r-i,2)+Math.pow(a-n,2));if(c=Math.max(0,c-3)){o.className=l.join(" ");var d=(a-n)/(r-i),h=Math.atan(d);2==b(i,r,n,a)?h+=Math.PI:3==b(i,r,n,a)&&(h-=Math.PI);var f=Math.sin(h),g=Math.cos(h),p=Math.round(n),v=Math.round(i),m=["-webkit-transform: rotate("+h+"rad)","-moz-transform: rotate("+h+"rad)","-ms-transform: rotate("+h+"rad)","-o-transform: rotate("+h+"rad)","transform: rotate("+h+"rad)","width:"+Math.round(c)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){m.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(f,g)+'"');var y=Math.abs(Math.round(i-r)),k=Math.abs(Math.round(a-n));switch(b(i,r,n,a)){case 1:p-=k;break;case 2:v-=y,p-=k;break;case 3:v-=y}}m.push("top:"+p+"px"),m.push("left:"+v+"px"),o.style.cssText=m.join(";")}}function b(t,e,i,n){return e>=t?n<=i?1:4:n<=i?2:3}_.attachEvent("onBeforeDragStart",e.bind(function(i,r){var a=r.target||r.srcElement;if(m(),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 m(),!1;return this._dir_start=g(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),_.attachEvent("onAfterDragStart",e.bind(function(t,i){e.config.touch&&e.refreshData(),v(_.config.marker)},this)),_.attachEvent("onDragMove",e.bind(function(o,s){var l=_.config,c=p(s,l.marker);!function(t,e){t.style.left=e.x+"px",t.style.top=e.y+"px"}(l.marker,c);var u=!!n.locateClassName(s,"gantt_link_control"),d=r,h=i,f=a,m=e.locate(s),b=!0;if(n.isChildOf(s.target||s.srcElement,e.$root)||(u=!1,m=null),u&&(b=!n.locateClassName(s,"task_end_date"),u=!!m),r=m,i=u,a=b,u){var k=e.getTask(m),w=t.$getConfig(),x=n.locateClassName(s,"gantt_link_control"),$=0;x&&($=Math.floor(x.offsetWidth/2)),this._dir_end=g(k,!!a,$,w)}else this._dir_end=n.getRelativeEventPosition(s,t.$task_data);var S=!(h==u&&d==m&&f==b);return S&&(d&&e.refreshTask(d,!1),m&&e.refreshTask(m,!1)),S&&v(l.marker),y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),_.attachEvent("onDragEnd",e.bind(function(){var t=u();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.callEvent("onLinkCreated",[n])&&e.addLink(n)}m(),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)),_._direction&&(_._direction.parentNode&&_._direction.parentNode.removeChild(_._direction),_._direction=null)},this)),e.attachEvent("onGanttRender",e.bind(function(){_._direction&&y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,i){var n=i(1),r=i(0),a=i(33);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(e.$root,"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:e.copy(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(101),a=i(100),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(12)(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(10);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(10);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(10),a=i(105),o=i(104),s=i(103);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(107),a=i(106),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(12)(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",f=""):(h=g.template?g.template(e):e[g.name],n.isDate(h)&&(h=s.date_grid(h,e)),null!==h&&void 0!==h||(h=""),f=h,h="
"+h+"
");var p="gantt_cell"+(_?" gantt_last_cell":""),v=[];if(g.tree){for(var m=0;m"+v.join("")+"",c.push(d)}if(p=t.getGlobalTaskIndex(e.id)%2==0?"":" odd",p+=e.$transparent?" gantt_transparent":"",p+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",s.grid_row_class){var k=s.grid_row_class.call(t,e.start_date,e.end_date,e);k&&(p+=" "+k)}l.isSelected(e.id)&&(p+=" gantt_selected");var w=document.createElement("div");w.className="gantt_row"+p+" gantt_row_"+t.getTaskType(e.type);var x=i.getItemHeight();return w.style.height=x+"px",w.style.lineHeight=x+"px",o.smart_rendering&&(w.style.position="absolute",w.style.left="0px",w.style.top=i.getItemTop(e.id)+"px"),i.$config.item_attribute&&w.setAttribute(i.$config.item_attribute,e.id),t._waiAria.taskRowAttr(e,w),w.innerHTML=c.join(""),w},update:null,getRectangle:r}}},function(t,e,i){var n=i(11);t.exports=function(t,e,i){if(!i.isTaskExists(t.source))return null;if(!i.isTaskExists(t.target))return null;var r=n(i.getTask(t.source),e,i),a=n(i.getTask(t.target),e,i);if(!r||!a)return null;var o=Math.min(r.left,a.left)-100,s=Math.max(r.left+r.width,a.left+a.width)+100,l=Math.min(r.top,a.top)-100;return{top:l,height:Math.min(r.top+r.height,a.top+a.height)+100-l,left:o,width:s-o}}},function(t,e,i){var n=i(110);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 n=i.$getConfig(),a=this.get_line_type(e,n),o=a.from_start,s=a.to_start,l=t.getTask(e.source),c=t.getTask(e.target),u=r(l,i),d=r(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 r(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{render: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;fi){r=a;break}}return{start:n,end:r}}t.exports=function(t){var e={},i={};function o(t,i){return!(!e[t.id][i]||!e[t.id][i].parentNode)}function s(t,i){e[t]&&e[t][i]&&e[t][i].parentNode&&e[t][i].parentNode.removeChild(e[t][i])}function l(t){var e,i=t.$getTemplates();return void 0!==i.task_cell_class?(e=i.task_cell_class,(console.warn||console.log)("gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.")):e=i.timeline_cell_class,e}function c(n,a,o,s,l,c,u){var d=n.width[a],h="";if(function(e,i,n){var a=i.width[e];if(a<=0)return!1;if(!t.config.smart_rendering||r(t))return!0;var o=i.left[e]-a,s=i.left[e]+a;return o<=n.x_end&&s>=n.x}(a,n,s)){var f=c(o,n.trace_x[a]);if(u.static_background&&(!u.static_background_cells||!f))return null;if(e[o.id][a])return i[o.id][a]=a,e[o.id][a];var _=document.createElement("div");return _.style.width=d+"px",h="gantt_task_cell"+(a==l-1?" gantt_last_cell":""),f&&(h+=" "+f),_.className=h,t.config.smart_rendering&&(_.style.position="absolute",_.style.left=n.left[a]+"px",e[o.id][a]=_,i[o.id][a]=a),_}return null}return{render:function(n,o,s){var u=o.$getConfig(),d=o.$getTemplates(),h=o.getScale(),f=h.count;if(u.static_background&&!u.static_background_cells)return null;var _,g=document.createElement("div"),p=l(o);if(_=s&&u.smart_rendering&&!r(t)?a(h,s.x,s.x_end):{start:0,end:f-1},u.show_task_cells){e[n.id]={},i[n.id]={};for(var v=_.start;v<=_.end;v++){var m=c(h,v,n,s,f,p,u);m&&g.appendChild(m)}}var y=t.getGlobalTaskIndex(n.id)%2!=0,b=d.task_row_class(n.start_date,n.end_date,n),k="gantt_task_row"+(y?" odd":"")+(b?" "+b:"");return o.$config.rowStore.isSelected(n.id)&&(k+=" gantt_selected"),g.className=k,u.smart_rendering&&(g.style.position="absolute",g.style.top=o.getItemTop(n.id)+"px",g.style.width="100%"),g.style.height=u.row_height+"px",o.$config.item_attribute&&g.setAttribute(o.$config.item_attribute,n.id),g},update:function(t,n,r,u){var d=r.$getConfig(),h=r.getScale(),f=h.count,_=l(r);if(d.show_task_cells){e[t.id]||(e[t.id]={}),i[t.id]||(i[t.id]={});var g=a(h,u.x,u.x_end);for(var p in i[t.id]){var v=i[t.id][p];(Number(v)g.end)&&s(t.id,v)}i[t.id][m]={};for(var m=g.start;m<=g.end;m++){var y=c(h,m,t,u,f,_,d);!y&&o(t,m)?s(t.id,m):y&&!y.parentNode&&n.appendChild(y)}}},getRectangle:n}}},function(t,e,i){var n=i(11),r=i(27);t.exports=function(t){var e=r(t);return{render:function(i,n){if(t.isSplitTask(i)&&(t.config.open_split_tasks&&!i.$open||!t.config.open_split_tasks)){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(122),r=i(121);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(123),r=i(120),a=i(119),o=i(118),s=i(117),l=i(116),c=i(0),u=i(1),d=i(4),h=i(115);function f(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:f,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(){o.forEach(function(t){s.detachEvent(t)}),s=null,this.hide(),this.detachAllEvents()}};return c.mixin(l,e),c.mixin(l,i),l}};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(8),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();if("number"==typeof t){var n=t+i.horizontal;this.$config.width=n}if("number"==typeof e){var r=e+i.vertical;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(30),a=i(7),o=function(t){"use strict";function e(e,i,n){for(var r=t.apply(this,arguments)||this,a=0;at.x_end||e.left+e.widtht.y_end||e.top+e.height-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(140),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(16))},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(){U("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(),U("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&&q()){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&&q()};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}}(),S=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 T(t,e){return{promise:e}}var C={promiseCreated:T,promiseFulfilled:T,promiseRejected:T,promiseResolved:T,promiseCancelled:T,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:T},E=function(t){var e=!1;try{e=S.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 L(t){this._onCancelField=t}function O(){this._cancellationParent=void 0,this._onCancelField=void 0}function M(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=O,i.prototype._propagateFrom=M,i.prototype._onCancel=P,i.prototype._setOnCancel=L,i.prototype._attachCancellationCallback=A,i.prototype._execute=I,N=M,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 J(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)||W(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 W(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 U(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||W(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 q(){return"function"==typeof Q}var Y=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function K(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function J(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Q(this,J),e>32&&this.uncycle()}u.inherits(J,Error),n.CapturedTrace=J,J.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}}}},J.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(q()){for(var i,n,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l=s||(Y=function(t){if(f.test(t))return!0;var e=K(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:J,fireDomEvent:$,fireGlobalEvent:S}}},{"./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)(T(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 S(t){return $.test(t)}function T(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(32),i(16),i(141).setImmediate)},function(t,e,i){t.exports=i(142)},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,o=r(a.xml_date||a.date_format,a.server_utc),s=n.str_to_date(a.xml_date||a.date_format,a.server_utc);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_format:o,format_date:o,xml_date:s,parse_date:s,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""},timeline_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(33);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&&("string"==typeof i?"parse_date"===i?(i=t.templates.parse_date,t.defined(t.templates.xml_date)&&t.templates.parse_date!==t.templates.xml_date&&(i=t.templates.xml_date)):i=t.defined(t.templates[i])?t.templates[i]:t.date.str_to_date(i):i=t.templates.xml_date!==t.templates.parse_date?t.templates.xml_date:t.templates.parse_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(8),r=i(148).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,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),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,static_background_cells:!0,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,date_format:"%d-%m-%Y %H:%i",xml_date:void 0,start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,smart_rendering:!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}],scale_offset_minimal:!0,inherit_scale_class:!1,scales:[{unit:"day",step:1,date:"%d %M"}],time_step:60,duration_step:1,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(18),t.exports=function(){var t=new function(){this.constants=i(153),this.version="6.2.7",this.license="gpl",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}};i(152)(t),t.$services=t.$inject(i(151)),t.config=t.$inject(i(150)),t.ajax=i(149)(t),t.date=i(147)(t);var e=i(146)(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(145)(t);t.$services.setService("templateLoader",function(){return n}),i(4)(t);var r=new(i(144));r.registerProvider("global",function(){var e={min_date:t._min_date,max_date:t._max_date,selected_task:null};return t.$data&&t.$data.tasksStore&&(e.selected_task=t.$data.tasksStore.getSelectedId()),e}),t.getState=r.getState,t.$services.setService("state",function(){return r});var a=i(0);a.mixin(t,a),t.Promise=i(143),t.env=i(8);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(19)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,a.mixin(t,i(139)(t));var l=i(138).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(98)(t),t.$services.setService("layers",function(){return l.layersService});var c=i(97);t.mixin(t,c()),i(96)(t);var u=i(89);return t.dataProcessor=u.DEPRECATED_api,t.createDataProcessor=u.createDataProcessor,i(85)(t),i(75)(t),i(74)(t),i(73)(t),i(72)(t),i(71)(t),i(70)(t),i(61)(t),i(60).default(t),i(59)(t),i(50)(t),i(49)(t),i(48)(t),i(47)(t),i(46)(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(35)(t),i(34).default(t),t}},function(t,e){t.exports=function(t){}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(155),r=i(154),a=window.gantt=r();e.gantt=a,n(a),e.default=a}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("dhtmlxgantt",[],e):"object"==typeof exports?exports.dhtmlxgantt=e():t.dhtmlxgantt=e()}(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=161)}([function(t,e,i){var n,r=i(2);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){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=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){var n=i(3),r=i(20);t.exports=function(t){var e=i(5)(t);function a(){return e.apply(this,arguments)||this}return n(a,e),a.prototype.render=function(t){var e="
";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,e){if(!t.start_date||!t.end_date)return null;var i=e.posFromDate(t.start_date),n=e.posFromDate(t.end_date),r=Math.min(i,n)-200,a=Math.max(i,n)+200;return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:r,width:a-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;nr.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;de)){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",[]),this.$gantt.ext.dragTimeline&&(this._timelineDragScroll=this.$gantt.ext.dragTimeline.create(),this._timelineDragScroll.attach(this))},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=t.format||t.template||t.date;"string"==typeof l&&(l=this.$gantt.date.date_to_str(l));var u=0,d=t.count;!n.smart_scales||isNaN(e)||isNaN(i)||(u=c(t.left,e),d=c(t.left,i)+1),s=t.css||function(){},!t.css&&n.inherit_scale_class&&(s=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;if(!t)return 0;var e=String(t.valueOf());if(void 0!==this._posFromDateCache[e])return this._posFromDateCache[e];var i=this.columnIndexByDate(t);this.$gantt.assert(i>=0,"Invalid day index");var n=Math.floor(i),r=i%1,a=this._tasks.left[Math.min(n,this._tasks.width.length-1)];n==this._tasks.width.length&&(a+=this._tasks.width[this._tasks.width.length-1]),r&&(n=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(t)].concat(e.getSubScales(t));return e.sortScales(i),i},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._timelineCacheAttached){var e=this;t._timelineCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t._timelineCacheAttached&&(t.detachEvent(t._timelineCacheAttached),t._timelineCacheAttached=!1)}},refresh:function(){this._bindStore(),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._resetTopPositionHeight(),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this._unbindStore(),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._timelineDragScroll&&(this._timelineDragScroll.destructor(),this._timelineDragScroll=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},t.exports=l},function(t,e){t.exports=function(t){return t.config.smart_rendering&&t._smart_render}},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,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(2);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,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(){var t=this;this.canParse=function(e){return!isNaN(t.parse(e))},this.format=function(t){return String(t)},this.parse=function(t){return parseInt(t,10)}}return t.create=function(e){return void 0===e&&(e=null),new t},t}();e.default=n},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)&&(a.open_split_tasks&&!l.$open||!a.open_split_tasks)&&o.push("gantt_split_parent"),a.select_task&&t.isSelectedTask(n)&&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(130),s=i(30),l=function(t,e,i,n){this.$config=r.mixin({},e||{}),this.$gantt=n,this.$parent=t,a(this),this.$state={},r.mixin(this,s())};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(12)(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.$config.height=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._unbindStore(),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()}},t.exports=l},function(t,e){t.exports=function(){var t={};return{_resetTopPositionHeight:function(){t={}},getRowTop:function(t){return t*this.$getConfig().row_height},getItemTop:function(e){if(this.$config.rowStore){if(void 0!==t[e])return t[e];var i=this.$config.rowStore;if(!i)return 0;var n=i.getIndexById(e);if(-1===n&&i.getParent&&i.exists(e)){var r=i.getParent(e);if(i.exists(r)){var a=i.getItem(r);if(this.$gantt.isSplitTask(a))return this.getRowTop(i.getIndexById(a.id))}}return t[e]=this.getRowTop(n),t[e]}return 0}}}},function(t,e,i){var n=i(3),r=i(1),a=function(t){"use strict";function e(e,i,n){var r=t.apply(this,arguments)||this;return e&&(r.$root=!0),r._parseConfig(i),r.$name="layout",r}return n(e,t),e.prototype.destructor=function(){this.$container&&this.$view&&r.removeNode(this.$view);for(var e=0;e0?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("change",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(3);t.exports=function(t){var e=i(9)(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=t._waiAria.lightboxDurationInputAttrString(e),s="gantt_duration_value";e.formatter&&(n="",s+=" gantt_duration_value_formatted");var l="
"+n+"
";return"
"+i+" "+l+"
"},a.prototype.set_value=function(e,i,n,r){var a,c,u,d,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=s.call(t,e,r),a=l.call(t,e,r),o=t.calculateEndDate({start_date:i,duration:a,task:n}),c=t.templates.task_end_date||t.templates.task_date;p.innerHTML=c(o)}function y(t){var e=_.value;e=o(r).parse(e),window.isNaN(e)&&(e=0),(e+=t)<1&&(e=1),_.value=o(r).format(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(a=t._resolve_default_mapping(r))&&(a={start_date:a}),c=n[a.start_date]||new Date,u=n[a.end_date]||t.calculateEndDate({start_date:c,duration:1,task:n}),d=Math.round(n[a.duration])||t.calculateDuration({start_date:c,end_date:u,task:n}),d=o(r).format(d),t.form_blocks._fill_lightbox_select(h,0,c,v,r),_.value=d,m()},a.prototype.get_value=function(e,i,n){var r=s(e,n),a=l(e,n),o=t.calculateEndDate({start_date:r,duration:a,task:i});return"string"==typeof t._resolve_default_mapping(n)?r:{start_date:r,end_date:o,duration:a}},a.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},a}},function(t,e,i){var n=i(3);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(2),r=i(3);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(3);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(3);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(3);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(2),r=i(59)(t),a=i(58)(t),o=i(57)(t),s=i(9)(t),l=i(56)(t),c=i(55)(t),u=i(54)(t),d=i(53)(t),h=i(9)(t),f=i(52)(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._isTaskInTimelineLimits=function(t){var e=t.start_date?t.start_date.valueOf():null,i=t.end_date?t.end_date.valueOf():null;return!!(e&&i&&e<=this._max_date.valueOf()&&i>=this._min_date.valueOf())},t.isTaskVisible=function(t){if(!this.isTaskExists(t))return!1;var e=this.getTask(t);return!(!this._isAllowedUnscheduledTask(e)&&!this._isTaskInTimelineLimits(e))&&!!(this.getGlobalTaskIndex(t)>=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,start: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(r0?this._getClosestWorkTimeFuture(a,r):this._getClosestWorkTimePast(a,r),!this._isWorkTime(a,e)));){if(++o>3e3)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(21),a=i(69);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){if(t.xmlDoc&&404===t.xmlDoc.status)this.assert(!1,"Failed to load the data from "+t.xmlDoc.responseURL+", server returns 404");else{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.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;ne._levels.length-1||e.setLevel(t)},this.getCurrentLevel=function(){return e._activeLevelIndex},this.getLevels=function(){return e._levels},this.setLevel=function(t){var i=e._getZoomIndexByName(t);-1===i&&e.$gantt.assert(-1!==i,"Invalid zoom level for gantt.ext.zoom.setLevel. "+t+" is not an expected value."),e._setLevel(i,0)},this._getZoomIndexByName=function(t){var i=-1;if("string"==typeof t){if(!isNaN(Number(t))&&e._levels[Number(t)])i=Number(t);else for(var n=0;n0&&(r=!0),t.preventDefault(),t.stopPropagation(),e._setScaleSettings(r,n)},this._setScaleDates=function(){e._initialStartDate&&e._initialEndDate&&(e.$gantt.config.start_date=e._initialStartDate,e.$gantt.config.end_date=e._initialEndDate)},this.$gantt=t,this._domEvents=this.$gantt._createDomEventScope()}return t.prototype.init=function(t){var e=this;this._initialStartDate=t.startDate,this._initialEndDate=t.endDate,this._activeLevelIndex=t.activeLevelIndex?t.activeLevelIndex:0,this._levels=this._mapScales(t.levels||o),this._handler=t.handler||this._defaultHandler,this._minColumnWidth=t.minColumnWidth||60,this._maxColumnWidth=t.maxColumnWidth||240,this._widthStep=t.widthStep||3/8*t.minColumnWidth,this._useKey=t.useKey,this._initialized||(r(this),this.$gantt.attachEvent("onGanttScroll",function(){e._getVisibleDate()})),this._domEvents.detachAll(),"wheel"===t.trigger&&(this.$gantt.$root?this._attachWheelEvent(t):this.$gantt.attachEvent("onGanttReady",function(){e._attachWheelEvent(t)})),this._initialized=!0,this.setLevel(this._activeLevelIndex)},t.prototype._mapScales=function(t){return t.map(function(t){return Array.isArray(t)?{scales:t}:t})},t.prototype._setScaleSettings=function(t,e){t?this._stepUp(e):this._stepDown(e)},t.prototype._stepUp=function(t){if(!(this._activeLevelIndex>=this._levels.length-1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var i=this.$gantt.config.min_column_width+this._widthStep;i>this._maxColumnWidth&&(i=this._minColumnWidth,e++),this.$gantt.config.min_column_width=i}else e++;this._setLevel(e,t)}},t.prototype._stepDown=function(t){if(!(this._activeLevelIndex<1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var i=this.$gantt.config.min_column_width-this._widthStep;i0&&r<=i.x_end&&a>=i.x}function h(e,i,n){var r=t.config.resource_property,a=[];if(t.getDatastore("task").exists(i)){var o=t.getTask(i);a=o[r]||[]}Array.isArray(a)||(a=[a]);for(var s=0;s"+s+""),l&&(s="
"+s),s&&(c.innerHTML=s),c}return null}return{render:function(t,r,a){var c=r.$getConfig(),u=r.$getTemplates(),h=r.getScale(),f=l(t,c.resource_property,h,r),_=[],g={},p=t.capacity||r.$config.capacity||24;e[t.id]={},i[t.id]=null,n[t.id]=null;for(var v=!!a,m=0;m0&&g+p>=m+2&&(l=0),o&&!b?o=0:o<0&&!y?o=0:o>0&&y+b>=k&&(o=0);var w=t.config.autoscroll_step;w&&w<2&&(w=2),o*=w||i,l*=w||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 v(t,i,n){return t-e<0&&ti-e&&t>n?1:0}t.attachEvent("onGanttReady",function(){t.eventRemove(document.body,"mousemove",g),t.event(document.body,"mousemove",g)})}},function(t,e,i){t.exports=function(t){t.ext||(t.ext={});for(var e=[i(87),i(86),i(85),i(84),i(83),i(82),i(81),i(80),i(79)],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!==e.templates.parse_date?e.templates.xml_date(o):e.templates.parse_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(2),a=i(0),o=i(91),s=i(90),l=i(89);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 c(t.url);return n.init(this),n.setTransactionMode({mode:i,router:e},t.batchUpdate),n};var c=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._storage=l.default.create(),this._invalid={},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,r),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,null),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;aa.bottom&&(d.y=a.bottom-r.height-s),d.right>a.right&&(d.x=a.right-r.width-o),d}function v(t){var i=u(),n=["gantt_link_tooltip"];i.link_source_id&&i.link_target_id&&(e.isLinkAllowed(i.link_source_id,i.link_target_id,i.link_from_start,i.link_to_start)?n.push("gantt_allowed_link"):n.push("gantt_invalid_link"));var r=e.templates.drag_link_class(i.link_source_id,i.link_from_start,i.link_target_id,i.link_to_start);r&&n.push(r);var 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 m(){o=s=r=null,a=!0}function y(i,n,r,a){var o=function(){_._direction&&_._direction.parentNode||(_._direction=document.createElement("div"),t.$task_links.appendChild(_._direction));return _._direction}(),s=u(),l=["gantt_link_direction"];e.templates.link_direction_class&&l.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var c=Math.sqrt(Math.pow(r-i,2)+Math.pow(a-n,2));if(c=Math.max(0,c-3)){o.className=l.join(" ");var d=(a-n)/(r-i),h=Math.atan(d);2==b(i,r,n,a)?h+=Math.PI:3==b(i,r,n,a)&&(h-=Math.PI);var f=Math.sin(h),g=Math.cos(h),p=Math.round(n),v=Math.round(i),m=["-webkit-transform: rotate("+h+"rad)","-moz-transform: rotate("+h+"rad)","-ms-transform: rotate("+h+"rad)","-o-transform: rotate("+h+"rad)","transform: rotate("+h+"rad)","width:"+Math.round(c)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){m.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(f,g)+'"');var y=Math.abs(Math.round(i-r)),k=Math.abs(Math.round(a-n));switch(b(i,r,n,a)){case 1:p-=k;break;case 2:v-=y,p-=k;break;case 3:v-=y}}m.push("top:"+p+"px"),m.push("left:"+v+"px"),o.style.cssText=m.join(";")}}function b(t,e,i,n){return e>=t?n<=i?1:4:n<=i?2:3}_.attachEvent("onBeforeDragStart",e.bind(function(i,r){var a=r.target||r.srcElement;if(m(),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 m(),!1;return this._dir_start=g(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),_.attachEvent("onAfterDragStart",e.bind(function(t,i){e.config.touch&&e.refreshData(),v(_.config.marker)},this)),_.attachEvent("onDragMove",e.bind(function(o,s){var l=_.config,c=p(s,l.marker);!function(t,e){t.style.left=e.x+"px",t.style.top=e.y+"px"}(l.marker,c);var u=!!n.locateClassName(s,"gantt_link_control"),d=r,h=i,f=a,m=e.locate(s),b=!0;if(n.isChildOf(s.target||s.srcElement,e.$root)||(u=!1,m=null),u&&(b=!n.locateClassName(s,"task_end_date"),u=!!m),r=m,i=u,a=b,u){var k=e.getTask(m),w=t.$getConfig(),x=n.locateClassName(s,"gantt_link_control"),$=0;x&&($=Math.floor(x.offsetWidth/2)),this._dir_end=g(k,!!a,$,w)}else this._dir_end=n.getRelativeEventPosition(s,t.$task_data);var S=!(h==u&&d==m&&f==b);return S&&(d&&e.refreshTask(d,!1),m&&e.refreshTask(m,!1)),S&&v(l.marker),y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),_.attachEvent("onDragEnd",e.bind(function(){var t=u();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.callEvent("onLinkCreated",[n])&&e.addLink(n)}m(),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)),_._direction&&(_._direction.parentNode&&_._direction.parentNode.removeChild(_._direction),_._direction=null)},this)),e.attachEvent("onGanttRender",e.bind(function(){_._direction&&y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,i){var n=i(1),r=i(0),a=i(34),o=i(2);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(e.$root,"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;(un||void 0===n)&&(n=d)}}return n},_move:function(t,i,n){var r=this._drag_task_coords(t,n),a=e.dateFromPos(r.start+i),o=e.dateFromPos(r.end+i);a?o?(t.start_date=a,t.end_date=o):(t.end_date=new Date(e.getState().max_date),t.start_date=e.dateFromPos(e.posFromDate(t.end_date)-(r.end-r.start))):(t.start_date=new Date(e.getState().min_date),t.end_date=e.dateFromPos(e.posFromDate(t.start_date)+(r.end-r.start)))},_drag_task_coords:function(t,i){return{start:i.obj_s_x=i.obj_s_x||e.posFromDate(t.start_date),end:i.obj_e_x=i.obj_e_x||e.posFromDate(t.end_date)}},_mouse_position_change:function(t,e){var i=t.x-e.x,n=t.y-e.y;return Math.sqrt(i*i+n*n)},_is_number:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},on_mouse_move:function(t){if(this.drag.start_drag){var i=n.getRelativeEventPosition(t,e.$task_data),r=this.drag.start_drag.start_x,o=this.drag.start_drag.start_y;(Date.now()-this.drag.timestamp>50||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(a.mode===o.drag_mode.move){var d={};if(this._isMultiselect()&&e.getSelectedTasks().indexOf(a.id)>=0&&(d=this.dragMultiple),e.isSummaryTask(u)&&e.config.drag_project){var h={};h[a.id]=r.copy(a),d=r.mixin(h,this.dragMultiple)}var f=this._find_max_shift(d,c);for(var _ in void 0!==f&&(c=f),this._update_item_on_move(c,a.id,a.mode,a,i),d){var g=d[_];this._update_item_on_move(c,g.id,g.mode,g,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(n.mode===r.drag_mode.move&&(e.isSummaryTask(a)&&r.drag_project||this._isMultiselect()))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 s=e.getTask(a);if(e.isReadonly(s))return void this.clear_drag_state();if(this._isMultiselect()){var l=e.getSelectedTasks();l.indexOf(n.id)>=0&&o.forEach(l,e.bind(function(t){var i=e.getTask(t);e.isSummaryTask(i)&&e.config.drag_project&&n.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(i.id),this.dragMultiple[t]=e.mixin({id:i.id,obj:e.copy(i)},this.drag)},this))}e.isSummaryTask(s)&&e.config.drag_project&&n.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(s.id),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()},_isMultiselect:function(){return e.config.drag_multiple&&!!(e.getSelectedTasks&&e.getSelectedTasks().length>0)},_addSubtasksToDragMultiple:function(t){e.eachTask(function(t){this.dragMultiple[t.id]=e.mixin({id:t.id,obj:e.copy(t)},this.drag)},t,this)}}}(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(105),a=i(104),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(12)(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(10);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(10);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(10),a=i(109),o=i(108),s=i(107);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(111),a=i(110),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(12)(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",f=""):(h=g.template?g.template(e):e[g.name],n.isDate(h)&&(h=s.date_grid(h,e,g.name)),null!==h&&void 0!==h||(h=""),f=h,h="
"+h+"
");var p="gantt_cell"+(_?" gantt_last_cell":""),v=[];if(g.tree){for(var m=0;m"+v.join("")+"",c.push(d)}if(p=t.getGlobalTaskIndex(e.id)%2==0?"":" odd",p+=e.$transparent?" gantt_transparent":"",p+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",s.grid_row_class){var k=s.grid_row_class.call(t,e.start_date,e.end_date,e);k&&(p+=" "+k)}l.isSelected(e.id)&&(p+=" gantt_selected");var w=document.createElement("div");w.className="gantt_row"+p+" gantt_row_"+t.getTaskType(e.type);var x=i.getItemHeight();return w.style.height=x+"px",w.style.lineHeight=x+"px",o.smart_rendering&&(w.style.position="absolute",w.style.left="0px",w.style.top=i.getItemTop(e.id)+"px"),i.$config.item_attribute&&w.setAttribute(i.$config.item_attribute,e.id),t._waiAria.taskRowAttr(e,w),w.innerHTML=c.join(""),w},update:null,getRectangle:r}}},function(t,e,i){var n=i(11);t.exports=function(t,e,i){if(!i.isTaskExists(t.source))return null;if(!i.isTaskExists(t.target))return null;var r=n(i.getTask(t.source),e,i),a=n(i.getTask(t.target),e,i);if(!r||!a)return null;var o=Math.min(r.left,a.left)-100,s=Math.max(r.left+r.width,a.left+a.width)+100,l=Math.min(r.top,a.top)-100;return{top:l,height:Math.min(r.top+r.height,a.top+a.height)+100-l,left:o,width:s-o}}},function(t,e,i){var n=i(114);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 n=i.$getConfig(),a=this.get_line_type(e,n),o=a.from_start,s=a.to_start,l=t.getTask(e.source),c=t.getTask(e.target),u=r(l,i),d=r(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 r(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{render: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;fi){r=a;break}}return{start:n,end:r}}t.exports=function(t){var e={},i={};function o(t,i){return!(!e[t.id][i]||!e[t.id][i].parentNode)}function s(t,i){e[t]&&e[t][i]&&e[t][i].parentNode&&e[t][i].parentNode.removeChild(e[t][i])}function l(t){var e,i=t.$getTemplates();return void 0!==i.task_cell_class?(e=i.task_cell_class,(console.warn||console.log)("gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.")):e=i.timeline_cell_class,e}function c(n,a,o,s,l,c,u){var d=n.width[a],h="";if(function(e,i,n){var a=i.width[e];if(a<=0)return!1;if(!t.config.smart_rendering||r(t))return!0;var o=i.left[e]-a,s=i.left[e]+a;return o<=n.x_end&&s>=n.x}(a,n,s)){var f=c(o,n.trace_x[a]);if(u.static_background&&(!u.static_background_cells||!f))return null;if(e[o.id][a])return i[o.id][a]=a,e[o.id][a];var _=document.createElement("div");return _.style.width=d+"px",h="gantt_task_cell"+(a==l-1?" gantt_last_cell":""),f&&(h+=" "+f),_.className=h,t.config.smart_rendering&&(_.style.position="absolute",_.style.left=n.left[a]+"px",e[o.id][a]=_,i[o.id][a]=a),_}return null}return{render:function(n,o,s){var u=o.$getConfig(),d=o.$getTemplates(),h=o.getScale(),f=h.count;if(u.static_background&&!u.static_background_cells)return null;var _,g=document.createElement("div"),p=l(o);if(_=s&&u.smart_rendering&&!r(t)?a(h,s.x,s.x_end):{start:0,end:f-1},u.show_task_cells){e[n.id]={},i[n.id]={};for(var v=_.start;v<=_.end;v++){var m=c(h,v,n,s,f,p,u);m&&g.appendChild(m)}}var y=t.getGlobalTaskIndex(n.id)%2!=0,b=d.task_row_class(n.start_date,n.end_date,n),k="gantt_task_row"+(y?" odd":"")+(b?" "+b:"");return o.$config.rowStore.isSelected(n.id)&&(k+=" gantt_selected"),g.className=k,u.smart_rendering&&(g.style.position="absolute",g.style.top=o.getItemTop(n.id)+"px",g.style.width="100%"),g.style.height=u.row_height+"px",o.$config.item_attribute&&g.setAttribute(o.$config.item_attribute,n.id),g},update:function(t,n,r,u){var d=r.$getConfig(),h=r.getScale(),f=h.count,_=l(r);if(d.show_task_cells){e[t.id]||(e[t.id]={}),i[t.id]||(i[t.id]={});var g=a(h,u.x,u.x_end);for(var p in i[t.id]){var v=i[t.id][p];(Number(v)g.end)&&s(t.id,v)}i[t.id]={};for(var m=g.start;m<=g.end;m++){var y=c(h,m,t,u,f,_,d);!y&&o(t,m)?s(t.id,m):y&&!y.parentNode&&n.appendChild(y)}}},getRectangle:n}}},function(t,e,i){var n=i(11),r=i(28);t.exports=function(t){var e=r(t);return{render:function(i,n){if(t.isSplitTask(i)&&(t.config.open_split_tasks&&!i.$open||!t.config.open_split_tasks)){for(var r=document.createElement("div"),a=t.getTaskPosition(i),o=t.getChildren(i.id),s=0;s";n.innerHTML=r},set_value:function(t,e,i,n){this.get_input(n).value=a(i.editor).format(t)},get_value:function(t,e,i){return a(e.editor).parse(this.get_input(i).value||"")}},!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}function a(e){return e.formatter||t.ext.formatters.linkFormatter()}function o(t,e){for(var i=(t||"").split(e.delimiter||","),n=0;n";n.innerHTML=r},hide:function(){},set_value:function(e,i,n,r){this.get_input(r).value=s(e,n.editor,t)},get_value:function(t,e,i){return o(this.get_input(i).value||"",e.editor)},save:function(e,i,n){var r=c(t.getTask(e),this.get_value(e,i,n),i.editor);(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 a=this.get_value(i,n,r),l=o(s(e,n.editor,t),n.editor);return a.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(3)(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=null,c=null;l="function"==typeof n.min?n.min(e,i):n.min,c="function"==typeof n.max?n.max(e,i):n.max;var u="
";s.innerHTML=u},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(3)(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(3)(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(3)(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:(s&&t.isVisible()||"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):s&&t.isVisible()&&(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||(t.hide(),!1)})},onShow:function(t,e,i){var n=i.$gantt;n.ext&&n.ext.keyboardNavigation&&n.ext.keyboardNavigation.attachEvent("onKeyDown",function(e,i){var r=n.constants.KEY_CODES,a=!1;switch(i.keyCode){case r.SPACE:t.isVisible()&&(a=!0)}return!a});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.UP:case i.DOWN:t.isVisible()&&(t.hide(),r=!1);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(127),r=i(126);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(128),r=i(125),a=i(124),o=i(123),s=i(122),l=i(121),c=i(120),u=i(0),d=i(1),h=i(4),f=i(119);function _(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)),duration:new(c(t))}}t.exports=function(t){var e=n(t),i={};h(i);var r={init:_,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(){o.forEach(function(t){s.detachEvent(t)}),s=null,this.hide(),this.detachAllEvents()}};return u.mixin(l,e),u.mixin(l,i),l}};return u.mixin(r,e),u.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(3),r=i(1),a=i(0),o=i(8),s=function(t){"use strict";var e=["altKey","shiftKey","metaKey"];function i(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(i,t),i.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()},i.prototype.$toHTML=function(){return"
"},i.prototype._getRootParent=function(){for(var t=this.$parent;t&&t.$parent;)t=t.$parent;if(t)return t},i.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}},i.prototype.scroll=function(t){this._isHorizontal()?this.scrollHorizontally(t):this.scrollVertically(t)},i.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}},i.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)},i.prototype.isVisible=function(){return!(!this.$parent||!this.$parent.$view.parentNode)},i.prototype.shouldShow=function(){var t=this._getScrollSize();return!(!t.innerScroll&&this.$parent&&this.$parent.$view.parentNode)&&!(!t.innerScroll||this.$parent&&this.$parent.$view.parentNode)},i.prototype.shouldHide=function(){return!(this._getScrollSize().innerScroll||!this.$parent||!this.$parent.$view.parentNode)},i.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},i.prototype._getScaleOffset=function(t){var e=0;return!t||"timeline"!=t.$config.view&&"grid"!=t.$config.view||(e=t.$content.$getConfig().scale_height),e},i.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;n=0&&(!t[l]||t.deltaX||t.wheelDeltaX||(a=2*s,s=0)),a&&Math.abs(a)>Math.abs(s)){if(this._isVertical())return;if(n.x)return!0;if(!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var c=a/-40,u=this._oldLeft,d=u+30*c;if(this.scrollHorizontally(d),this.$scroll_hor.scrollLeft=d,u==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(n.y)return!0;if(!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;c=s/-40;void 0===s&&(c=t.detail);var h=this._oldTop,f=this.$scroll_ver.scrollTop+30*c;if(this.scrollVertically(f),this.$scroll_ver.scrollTop=f,h==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}},i}(i(7));t.exports=s},function(t,e){t.exports=null},function(t,e,i){var n=i(3),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();if("number"==typeof t){var n=t+i.horizontal;this.$config.width=n}if("number"==typeof e){var r=e+i.vertical;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(3),r=i(31),a=i(7),o=function(t){"use strict";function e(e,i,n){for(var r=t.apply(this,arguments)||this,a=0;at.x_end||e.left+e.widtht.y_end||e.top+e.height-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(145),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(16))},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(){U("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(),U("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&&q()){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&&q()};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}}(),S=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 T(t,e){return{promise:e}}var C={promiseCreated:T,promiseFulfilled:T,promiseRejected:T,promiseResolved:T,promiseCancelled:T,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:T},E=function(t){var e=!1;try{e=S.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 L(t){this._onCancelField=t}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function O(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=O,i.prototype._onCancel=P,i.prototype._setOnCancel=L,i.prototype._attachCancellationCallback=A,i.prototype._execute=I,N=O,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 J(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)||W(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 W(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 U(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||W(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 q(){return"function"==typeof Q}var Y=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function K(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function J(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Q(this,J),e>32&&this.uncycle()}u.inherits(J,Error),n.CapturedTrace=J,J.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}}}},J.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(q()){for(var i,n,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l=s||(Y=function(t){if(f.test(t))return!0;var e=K(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:J,fireDomEvent:$,fireGlobalEvent:S}}},{"./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)(T(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 S(t){return $.test(t)}function T(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(33),i(16),i(146).setImmediate)},function(t,e,i){t.exports=i(147)},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,o=r(a.xml_date||a.date_format,a.server_utc),s=n.str_to_date(a.xml_date||a.date_format,a.server_utc);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_format:o,format_date:o,xml_date:s,parse_date:s,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""},task_end_date:function(e){return t.templates.task_date(e)},grid_row_class:function(t,e,i){return""},task_row_class:function(t,e,i){return""},timeline_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,n){return i&&t.isUnscheduledTask(i)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(i):t.templates.grid_date_format(e,n)},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_end_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(34);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&&("string"==typeof i?"parse_date"===i?(i=t.templates.parse_date,t.defined(t.templates.xml_date)&&t.templates.parse_date!==t.templates.xml_date&&(i=t.templates.xml_date)):i=t.defined(t.templates[i])?t.templates[i]:t.date.str_to_date(i):i=t.templates.xml_date!==t.templates.parse_date?t.templates.xml_date:t.templates.parse_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(8),r=i(153).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,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),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,static_background_cells:!0,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,date_format:"%d-%m-%Y %H:%i",xml_date:void 0,start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,smart_rendering:!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}],scale_offset_minimal:!0,inherit_scale_class:!1,scales:[{unit:"day",step:1,date:"%d %M"}],time_step:60,duration_step:1,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_tasks_outside_timescale:!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,horizontal_scroll_key:"shiftKey",drag_timeline:{useKey:void 0,ignore:".gantt_task_line, .gantt_task_link"},drag_multiple:!0}}},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(18),t.exports=function(){var t=new function(){this.constants=i(158),this.version="6.3.0",this.license="gpl",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}};i(157)(t),t.$services=t.$inject(i(156)),t.config=t.$inject(i(155)),t.ajax=i(154)(t),t.date=i(152)(t);var e=i(151)(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(150)(t);t.$services.setService("templateLoader",function(){return n}),i(4)(t);var r=new(i(149));r.registerProvider("global",function(){var e={min_date:t._min_date,max_date:t._max_date,selected_task:null};return t.$data&&t.$data.tasksStore&&(e.selected_task=t.$data.tasksStore.getSelectedId()),e}),t.getState=r.getState,t.$services.setService("state",function(){return r});var a=i(0);a.mixin(t,a),t.Promise=i(148),t.env=i(8);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(19)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,a.mixin(t,i(144)(t));var l=i(143).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(102)(t),t.$services.setService("layers",function(){return l.layersService});var c=i(101);t.mixin(t,c()),i(100)(t);var u=i(93);return t.dataProcessor=u.DEPRECATED_api,t.createDataProcessor=u.createDataProcessor,i(88)(t),i(76)(t),i(75)(t),i(74)(t),i(73)(t),i(72)(t),i(71)(t),i(62)(t),i(61).default(t),i(60)(t),i(51)(t),i(50)(t),i(49)(t),i(48)(t),i(47)(t),i(46)(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(36)(t),i(35).default(t),t}},function(t,e){t.exports=function(t){}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(160),r=i(159),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 688b6ae9..b3949edc 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/utils/env.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/render/viewport/get_bar_rectangle.js","webpack:///./sources/core/ui/mouse_event_container.js","webpack:///./sources/core/ui/timeline/scales.js","webpack:///./sources/core/ui/timeline/timeline.js","webpack:///./sources/core/ui/render/is_legacy_smart_render.js","webpack:///(webpack)/buildin/global.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/viewport/get_bg_row_rectangle.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/layout/layout.js","webpack:///./sources/core/ui/render/viewport/get_grid_row_rectangle.js","webpack:///./node_modules/process/browser.js","webpack:///./sources/utils/timeout.js","webpack:///./sources/publish_helpers/void_script_third.ts","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/publish_helpers/void_script_second.ts","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/timeline_zoom.ts","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/viewport/get_link_rectangle.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/render/task_bar_smart_render.js","webpack:///./sources/core/ui/grid/editors/linked_properties.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/viewport/is_in_viewport.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.ts","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","requestAnimationFrame","w","webkitRequestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","cb","isEventable","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","eventName","eventId","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","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","__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","start_date","end_date","startCoord","posFromDate","endCoord","min","max","getItemTop","getItemHeight","events","mouseEvents","h","dateHelper","date","services","getSum","sizes","from","to","summ","setSumWidth","sum_width","scale","parts","diff","adjustSize","full_width","splitSize","count","full","share","sortScales","scales","cellSize","step","add","_isLegacyMode","scaleConfig","scale_unit","date_scale","subscales","_prepareScaleObject","format","template","date_to_str","primaryScale","templates","legacyMode","initTemplate","scale_cell_class","getSubScales","prepareConfigs","min_coll_width","container_width","scale_height","minDate","maxDate","rtl","heights","configs","main_scale","cfg","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","reverse","trace_x","indexes","trace_indexes","trace_index_transition","_ignore_time_config","skip_off_time","skip","probe","isWorkTime","ignore_x","display_count","min_col_width","line_height","cont_width","column_count","col_width","ignores","min_date","max_date","eachColumn","trace_x_ascending","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prev","end","prevUpper","up","target_index","upper_start","upper_end","lower_start","lower_end","targetWidth","start","curr","tzOffset","getTimezoneOffset","_correct_dst_change","dates","last","lastDate","outDate","shared","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_posFromDateCache","_findBinary","array","low","high","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","rendered","$getConfig","attr","linksAttr","bindLinks","item_attribute","link_attribute","layers","_createLayerConfig","tasks","linkLayers","links","_attachLayers","dataHeight","refresh","backgroundImage","smart_rendering","rowStore","row_height","countVisible","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","scrolled","_refreshScales","smart_scales","viewPort","getViewPort","_scales","_getScaleChunkHtml","x_end","y_end","taskFilter","expose","renderer","$ui","taskBar","taskSplitBar","append","taskBg","link","_taskLayers","_linkLayers","_bindStore","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","update","bar_layer","addLayer","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","getDatastore","linkRenderer","linkLayer","_linkRenderer","staticRender","_staticBgHandler","static_background","staticBgContainer","$task_bg_static","insertBefore","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","state","getState","_getScales","availWidth","autosize","autosize_min_width","cfgs","min_column_width","fromPos","toPos","scale_row_class","cssClass","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","startIndex","endIndex","inherit_scale_class","cssclass","_waiAria","getTimelineCellAttr","dateFromPos","part","_getColumnDuration","dateValue","columnIndexByDate","assert","wholeCells","partCell","pos","roundPos","_getNextVisibleColumn","columns","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","dateIndex","visibleIndex","visibleDate","transition","getItemPosition","task","xLeft","xRight","task_height","offset","task_height_offset","_timelineCacheAttached","_resetTopPositionHeight","_unbindStore","_smart_render","g","eval","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","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","PrimaryScaleHelper","_init_tasks_range","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","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","open_split_tasks","$open","select_task","isSelectedTask","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","_gridCacheAttached","_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","iterator","curExtra","_getColsTotalWidth","cols_width","v","parseFloat","unknown","gridWidth","autofit","delta","changed","_setContentSize","locale","labels","lineHeigth","colWidth","_sort","direction","grid_header_class","gridScaleCellAttrString","lineHeight","topCache","getRowTop","taskId","itemIndex","parentId","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","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","host","updPerSecond","_on_timeout","ceil","default","_eventRemoveAll","$layout","resetLightbox","_dp","$destroyed","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","getTaskIndex","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","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","setMinutes","setSeconds","_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","jsonParseError","load","url","_load_url","cl","_load_type","ajax","on_load","xmlDoc","responseText","resp","status","responseURL","_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","formate_date","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","nodeValue","_getCollections","loader","xpath","itms","attrs","_getXML","toptag","getXMLTopNode","xmltop","xmlParseError","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","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","USE_KEY","_defaultScales","TimelineZoom","zoomIn","getCurrentLevel","setLevel","zoomOut","_levels","_activeLevelIndex","getLevels","level","zoomLevel","_getZoomIndexByName","_setLevel","levelName","_getVisibleDate","scrollPos","_visibleDate","cursorOffset","nextConfig","chartConfig","cursorDate","newPosition","middleDate","_attachWheelEvent","_domEvents","_useKey","_handler","_defaultHandler","timelineOffset","wheelUp","deltaY","wheelDelta","stopPropagation","_setScaleSettings","_setScaleDates","_initialStartDate","_initialEndDate","activeLevelIndex","_mapScales","levels","_minColumnWidth","minColumnWidth","_maxColumnWidth","maxColumnWidth","_widthStep","widthStep","useKey","_initialized","trigger","_stepUp","_stepDown","nextLevel","newColumnWidth","callIfEnabled","auto_types","updateParents","childId","batchUpdate","checkParent","targetType","getTaskTypeToUpdate","updateTaskType","setTaskType","delTaskParent","group_mode","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","sid","placeholder_task","insertPlaceholder","placeholders","getTaskBy","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","action","commands","command","entity","getRectangle","createResourceMethods","resourceTaskCache","propertyName","propertyValue","filterResourceTasks","getResourceTasks","falsyValuePreffix","random","resourceHashFunction","resourceIds","cacheKey","resourceHash","resourceId","resourceValue","resource_id","getResourceLoad","resourceProperty","$role","scaleUnit","scaleStep","timegrid","currDate","timetable","resource_render_empty_cells","calculateResourceLoad","renderBar","renderConnection","prevLevel","isColumnVisible","columnIndex","cellLeftCoord","cellRightCoord","selectAssignments","resource_property","owners","renderLine","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","viewport","row","renderHistogram","renderedHistogramCells","renderedHistogramRows","renderedHistogramCapacity","detachRenderedHistogramCell","renderedRow","renderCapacityElement","capacityMatrix","maxCapacity","renderedElement","capacityElement","capacity","colStart","colEnd","bar","connection","renderHistogramLine","renderHistogramCell","histogram_cell_class","histogram_cell_label","fill","histogram_cell_allocated","histogram_cell_capacity","renderedCell","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","_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","isDisplayed","isScrollState","dragMarker","isResize","isLink","isClickDrag","autoscroll","defineDelayTimeout","speed","autoscroll_speed","setInterval","autoscroll_delay","defineScrollInterval","clearInterval","autoscrollInterval","isScroll","posY","need_scroll","scrollState","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","ext","zoom","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","parse_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","then","_forEachUpdatedRow","valid","_getAllData","stop_1","hasOne","setVerificator","verifFunction","clearVerificator","pattern","defineAction","_uActions","btag","correct","originalSid","_xml","reqUrl","filePath","finalizeUpdate","cleanUpdate","atag","anObj","_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","format_date","_isFetchResult","ReadableStream","setSerializeAsJSON","flag","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","getLayers","render_item","renderers","render_items","update_items","skipRepaint","onUpdateRequest","change_id","refreshId","selectedId","deleteItem","subItem","isSelected","TreeDataStore","_branches","$parentProperty","parentProperty","$getRootId","$openInitially","openInitially","_ganttConfig","getConfig","canOpenSplitTasks","_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","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","originalTask","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","markerDefaultOffset","scrollDefaultSize","getDndState","DnD","sensitivity","updates_per_second","getLinePos","shift","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","sqrt","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","getPosition","markerSize","getMarkerSize","viewportSize","getVieportSize","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","updateMarkedHtml","drag_link_class","resetDndState","showDirectingLine","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","pow","tan","angle","atan","coordinateCircleQuarter","PI","sin","cos","ieTransform","shiftLeft","shiftTop","sX","eX","sY","eY","_dir_start","dd","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","_dir_end","targetChanged","createLinkDND","createTaskDND","round_task_dates","dragMultiple","_events","before_start","before_finish","after_finish","_handlers","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","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","inlineEditors","_inlineEditors","createEditors","initEvents","clearEvents","scroll_on_click","sorting_method","callHandler","totalWidth","getRowRectangle","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","grid_row_class","css_template","barRectangle","sourceBox","targetBox","getLinkRectangle","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","isLegacyRender","viewportLeft","viewPortRight","firstCellIndex","lastCellIndex","renderedCells","isRendered","detachRenderedCell","getCellTemplate","task_cell_class","warn","timeline_cell_class","renderOneCell","cssTemplateContent","static_background_cells","cellTemplate","show_task_cells","odd","task_row_class","getBarRectangle","createBaseBarRender","defaultRender","sub_tasks","keepDatesOnEdit","keepDurationOnEdit","defaultActionOnEdit","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","linkedPropertiesProcessor","initConfigs","editor_types","number","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","updateTaskDateProperties","_itemId","_columnName","_editor","_editorType","_placeholder","editorConfig","_getItemValue","newValue","oldValue","inline_editors_date_processing","_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","oldLeft","detail","oldTop","ViewCell","childConfig","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","isInViewPort","basicGetRectangle","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","layer_attribute","rendererViewPort","dom","remove_item","clear_container","buffer","createDocumentFragment","vis","itemNode","restore","replace_item","newNode","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","getContainer","relativeRoot","defaultFilters","initLayer","renderGroup","tempCollection","filters","_add","pending","topmost","rel","requestUpdate","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","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","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","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","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","date_format","server_utc","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","minute_start","setMilliseconds","_add_days","inc","ndate","setYear","add_quarter","to_fixed","num","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","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","license","templatesLoader","stateService","selected_task","uiApi","createLayoutFacade"],"mappings":"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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 = 156);\n","var helpers = require(\"./helpers\");\r\n\r\nfunction copy(object) {\r\n\tvar i, result; // iterator, types array, result\r\n\r\n\tif (object && typeof object == \"object\") {\r\n\r\n\t\tswitch (true){\r\n\t\t\tcase (helpers.isDate(object)):\r\n\t\t\t\tresult = new Date(object);\r\n\t\t\t\tbreak;\r\n\t\t\tcase (helpers.isArray(object)):\r\n\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase (helpers.isStringObject(object)):\r\n\t\t\t\tresult = new String(object);\r\n\t\t\t\tbreak;\r\n\t\t\tcase (helpers.isNumberObject(object)):\r\n\t\t\t\tresult = new Number(object);\r\n\t\t\t\tbreak;\r\n\t\t\tcase (helpers.isBooleanObject(object)):\r\n\t\t\t\tresult = new Boolean(object);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tresult = {};\r\n\t\t\t\tfor (i in object) {\r\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn result || object;\r\n}\r\n\r\nfunction mixin (target, source, force){\r\n\tfor (var f in source)\r\n\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\treturn target;\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nvar seed;\r\nfunction uid() {\r\n\tif (!seed)\r\n\t\tseed = (new Date()).valueOf();\r\n\r\n\tseed++;\r\n\treturn seed;\r\n}\r\n\r\n//creates function with specified \"this\" pointer\r\nfunction bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n}\r\n\r\nfunction event(el, event, handler, capture){\r\n\tif (el.addEventListener)\r\n\t\tel.addEventListener(event, handler, capture === undefined ? false : capture);\r\n\r\n\telse if (el.attachEvent)\r\n\t\tel.attachEvent(\"on\"+event, handler);\r\n}\r\n\r\nfunction eventRemove(el, event, handler, capture){\r\n\tif (el.removeEventListener)\r\n\t\tel.removeEventListener(event, handler, capture === undefined ? false : capture);\r\n\r\n\telse if (el.detachEvent)\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n}\r\n\r\nmodule.exports = {\r\n\tcopy: copy,\r\n\tdefined: defined,\r\n\tmixin: mixin,\r\n\tuid: uid,\r\n\tbind: bind,\r\n\tevent: event,\r\n\teventRemove: eventRemove\r\n};","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\treturn (display != \"none\" && visibility != \"hidden\");\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\nfunction getScrollSize(){\r\n\tvar div = document.createElement(\"div\");\r\n\tdiv.style.cssText=\"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\tdocument.body.appendChild(div);\r\n\tvar width = div.offsetWidth-div.clientWidth;\r\n\tdocument.body.removeChild(div);\r\n\r\n\treturn width;\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = \"\";\r\n\r\n\treturn _trimString(className);\r\n}\r\n\r\nfunction addClassName(node, className){\r\n\tif (className && node.className.indexOf(className) === -1) {\r\n\t\tnode.className += \" \" + className;\r\n\t}\r\n}\r\n\r\nfunction removeClassName(node, name) {\r\n\tname = name.split(\" \");\r\n\tfor (var i = 0; i < name.length; i++) {\r\n\t\tvar regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\r\n\t\tnode.className = node.className.replace(regEx, \"\");\r\n\t}\r\n}\r\n\r\nfunction hasClass(element, className){\r\n\tif ('classList' in element) {\r\n\t\treturn element.classList.contains(className);\r\n\t} else { \r\n\t\treturn new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\r\n\t}\r\n}\r\n\r\nfunction toNode(node) {\r\n\tif (typeof node === \"string\") {\r\n\t\treturn (document.getElementById(node) || document.querySelector(node) || document.body);\r\n\t}\r\n\treturn node || document.body;\r\n}\r\n\r\nvar _slave = document.createElement(\"div\");\r\nfunction insert(node, newone) {\r\n\t_slave.innerHTML = newone;\r\n\tvar child = _slave.firstChild;\r\n\tnode.appendChild(child);\r\n\treturn child;\r\n}\r\n\r\nfunction remove(node) {\r\n\tif (node && node.parentNode) {\r\n\t\tnode.parentNode.removeChild(node);\r\n\t}\r\n}\r\n\r\nfunction getChildren(node, css) {\r\n\tvar ch = node.childNodes;\r\n\tvar len = ch.length;\r\n\tvar out = [];\r\n\tfor (var i = 0; i < len; i++) {\r\n\t\tvar obj = ch[i];\r\n\t\tif (obj.className && obj.className.indexOf(css) !== -1) {\r\n\t\t\tout.push(obj);\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n}\r\n\r\nfunction getTargetNode(e){\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te=e||window.event;\r\n\t\ttrg=e.target||e.srcElement;\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateAttribute(e, attribute) {\r\n\tif(!attribute) return;\r\n\r\n\tvar trg = getTargetNode(e);\r\n\r\n\twhile (trg){\r\n\t\tif (trg.getAttribute){\t//text nodes has not getAttribute\r\n\t\t\tvar test = trg.getAttribute(attribute);\r\n\t\t\tif (test) return trg;\r\n\t\t}\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nfunction _trimString(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n}\r\n\r\nfunction locateClassName(e, classname, strict){\r\n\tvar trg = getTargetNode(e);\r\n\tvar css = \"\";\r\n\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!_trimString(css.charAt(ind - 1)));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!_trimString(css.charAt(ind + classname.length)));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction isChildOf(child, parent){\r\n\tif(!child || !parent){\r\n\t\treturn false;\r\n\t}\r\n\r\n\twhile(child && child != parent) {\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn child === parent;\r\n}\r\n\r\nfunction closest(element, selector){\r\n\tif(element.closest){\r\n\t\treturn element.closest(selector);\r\n\t}else if(element.matches || element.msMatchesSelector || element.webkitMatchesSelector){\r\n\t\tvar el = element;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tvar method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\r\n\r\n\t\t\tif (method.call(el, selector)) return el;\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1); \r\n\t\treturn null;\r\n\t}else{\r\n\t\t// eslint-disable-next-line no-console\r\n\t\tconsole.error(\"Your browser is not supported\");\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nmodule.exports = {\r\n\tgetNodePosition: elementPosition,\r\n\tgetFocusableNodes: getFocusableNodes,\r\n\tgetScrollSize: getScrollSize,\r\n\tgetClassName: getClassName,\r\n\taddClassName: addClassName,\r\n\tremoveClassName: removeClassName,\r\n\tinsertNode: insert,\r\n\tremoveNode: remove,\r\n\tgetChildNodes: getChildren,\r\n\ttoNode: toNode,\r\n\tlocateClassName:locateClassName,\r\n\tlocateAttribute: locateAttribute,\r\n\tgetTargetNode: getTargetNode,\r\n\tgetRelativeEventPosition: getRelativeEventPosition,\r\n\tisChildOf: isChildOf,\r\n\thasClass: hasClass,\r\n\tclosest: closest\r\n};","module.exports = function (d, b) {\r\n\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n\tfunction __() { this.constructor = d; }\r\n\td.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};","var units = {\r\n\t\"second\": 1,\r\n\t\"minute\": 60,\r\n\t\"hour\": 60 * 60,\r\n\t\"day\": 60 * 60 * 24,\r\n\t\"week\": 60 * 60 * 24 * 7,\r\n\t\"month\": 60 * 60 * 24 * 30,\r\n\t\"quarter\": 60 * 60 * 24 * 30 * 3,\r\n\t\"year\": 60 * 60 * 24 * 365\r\n};\r\nfunction getSecondsInUnit(unit){\r\n\treturn units[unit] || units.hour;\r\n}\r\n\r\nfunction forEach(arr, callback) {\r\n\tif (arr.forEach) {\r\n\t\tarr.forEach(callback);\r\n\t} else {\r\n\t\tvar workArray = arr.slice();\r\n\t\tfor (var i = 0; i < workArray.length; i++) {\r\n\t\t\tcallback(workArray[i], i);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction arrayMap(arr, callback) {\r\n\tif (arr.map) {\r\n\t\treturn arr.map(callback);\r\n\t} else {\r\n\t\tvar workArray = arr.slice();\r\n\t\tvar resArray = [];\r\n\r\n\t\tfor (var i = 0; i < workArray.length; i++) {\r\n\t\t\tresArray.push(callback(workArray[i], i));\r\n\t\t}\r\n\t\treturn resArray;\r\n\t}\r\n}\r\n\r\n\r\nfunction arrayFind(arr, callback) {\r\n\tif (arr.find) {\r\n\t\treturn arr.find(callback);\r\n\t} else {\r\n\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\tif (callback(arr[i], i)) {\r\n\t\t\t\treturn arr[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\"\r\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\"\r\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\"\r\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction arrayFilter(arr, callback) {\r\n\tvar result = [];\r\n\r\n\tif (arr.filter) {\r\n\t\treturn arr.filter(callback);\r\n\t} else {\r\n\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\tif (callback(arr[i], i)) {\r\n\t\t\t\tresult[result.length] = arr[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nfunction hashToArray(hash) {\r\n\tvar result = [];\r\n\r\n\tfor (var key in hash) {\r\n\t\tif (hash.hasOwnProperty(key)) {\r\n\t\t\tresult.push(hash[key]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction arraySome(arr, callback) {\r\n\tif (arr.length === 0) return false;\r\n\r\n\tfor (var i = 0; i < arr.length; i++) {\r\n\t\tif (callback(arr[i], i, arr)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction arrayDifference(arr, callback) {\r\n\treturn arrayFilter(arr, function(item, i) {\r\n\t\treturn !callback(item, i);\r\n\t});\r\n}\r\n\r\nfunction throttle (callback, timeout) {\r\n\tvar wait = false;\r\n\r\n\treturn function () {\r\n\t\tif (!wait) {\r\n\t\t\tcallback.apply(null, arguments);\r\n\t\t\twait = true;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\twait = false;\r\n\t\t\t}, timeout);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tcallback.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\t\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tcallback.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tcallback();\r\n\t\tcallback.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction sortArrayOfHash(arr, field, desc) {\r\n\tvar compare = function(a, b) {\r\n\t\treturn a < b;\r\n\t};\r\n\r\n\tarr.sort(function(a, b) {\r\n\t\tif (a[field] === b[field]) return 0;\r\n\r\n\t\treturn desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\r\n\t});\r\n}\r\n\r\nfunction objectKeys(obj) {\r\n\tif (Object.keys) {\r\n\t\treturn Object.keys(obj);\r\n\t}\r\n\tvar result = [];\r\n\tvar key;\r\n\tfor (key in obj) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n\t\t\tresult.push(key);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction requestAnimationFrame(callback) {\r\n\tvar w = window;\r\n\tvar foundRequestAnimationFrame = w.requestAnimationFrame\r\n\t\t|| w.webkitRequestAnimationFrame\r\n\t\t|| w.msRequestAnimationFrame\r\n\t\t|| w.mozRequestAnimationFrame\r\n\t\t|| w.oRequestAnimationFrame\r\n\t\t|| function(cb) { setTimeout(cb, 1000/60); };\r\n\treturn foundRequestAnimationFrame(callback);\r\n}\r\n\r\nfunction isEventable(obj) {\r\n\treturn obj.attachEvent && obj.detachEvent;\r\n}\r\n\r\nmodule.exports = {\r\n\tgetSecondsInUnit: getSecondsInUnit,\r\n\tforEach: forEach,\r\n\tarrayMap: arrayMap,\r\n\tarrayFind: arrayFind,\r\n\tarrayFilter: arrayFilter,\r\n\tarrayDifference: arrayDifference,\r\n\tarraySome: arraySome,\r\n\thashToArray: hashToArray,\r\n\tsortArrayOfHash: sortArrayOfHash,\r\n\tthrottle: throttle,\r\n\tisArray: isArray,\r\n\tisDate: isDate,\r\n\tisStringObject: isStringObject,\r\n\tisNumberObject: isNumberObject,\r\n\tisBooleanObject: isBooleanObject,\r\n\tdelay: delay,\r\n\tobjectKeys: objectKeys,\r\n\trequestAnimationFrame: requestAnimationFrame,\r\n\tisEventable: isEventable\r\n};","var EventHost = function(){\r\n\tthis._connected = [];\r\n\tthis._silent_mode = false;\r\n};\r\n\r\nEventHost.prototype = {\r\n\t_silentStart: function() {\r\n\t\tthis._silent_mode = true;\r\n\t},\r\n\t_silentEnd: function() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n};\r\n\r\nvar\tcreateEventStorage = function(obj) {\r\n\tvar dhx_catch = [];\r\n\tvar z = function(){\r\n\t\tvar res = true;\r\n\t\tfor (var i = 0; i < dhx_catch.length; i++){\r\n\t\t\tif (dhx_catch[i]){\r\n\t\t\t\tvar zr = dhx_catch[i].apply(obj, arguments);\r\n\t\t\t\tres=res&&zr;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\tz.addEvent=function(ev){\r\n\t\tif (typeof (ev) == \"function\")\r\n\t\t\treturn dhx_catch.push(ev)-1;\r\n\t\treturn false;\r\n\t};\r\n\tz.removeEvent=function(id){\r\n\t\tdhx_catch[id]=null;\r\n\t};\r\n\treturn z;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tvar eventHost = new EventHost();\r\n\tobj.attachEvent=function(name, catcher, callObj){\r\n\t\tname='ev_'+name.toLowerCase();\r\n\t\tif (!eventHost[name])\r\n\t\t\teventHost[name] = createEventStorage(callObj||this);\r\n\r\n\t\treturn(name+':'+eventHost[name].addEvent(catcher)); //return ID (event name & event ID)\r\n\t};\r\n\tobj.attachAll = function(callback, callObj){\r\n\t\tthis.attachEvent('listen_all', callback, callObj);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, arg0, callObj){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tvar handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tif (eventHost['ev_listen_all']){\r\n\t\t\teventHost['ev_listen_all'].apply(callObj || this, [name].concat(arg0));\r\n\t\t}\r\n\r\n\t\tif (eventHost[handlerName])\r\n\t\t\treturn eventHost[handlerName].apply(callObj || this, arg0);\r\n\t\treturn true;\r\n\t};\r\n\tobj.checkEvent=function(name){\r\n\t\treturn (!!eventHost['ev_'+name.toLowerCase()]);\r\n\t};\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tvar list = id.split(':');//get EventName and ID\r\n\t\t\tvar eventName = list[0];\r\n\t\t\tvar eventId = list[1];\r\n\r\n\t\t\tif(eventHost[eventName]){\r\n\t\t\t\teventHost[eventName].removeEvent(eventId); //remove event\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (var name in eventHost){\r\n\t\t\tif (name.indexOf(\"ev_\") === 0)\r\n\t\t\t\tdelete eventHost[name];\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nmodule.exports = makeEventable;","function dummy() {\r\n\t// eslint-disable-next-line\r\n\tconsole.log(\"Method is not implemented.\"); \r\n}\r\nfunction BaseControl() {\r\n}\r\n\r\n// base methods will be runned in gantt context\r\nBaseControl.prototype.render = dummy; // arguments: sns\r\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\r\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\r\nBaseControl.prototype.focus = dummy; // arguments: node\r\n\r\nmodule.exports = function(gantt) { // we could send current instance of gantt to module\r\n\treturn BaseControl;\r\n};","module.exports = function (gantt) {\r\n\r\n\tvar BaseEditor = function () {\r\n\t};\r\n\r\n\tBaseEditor.prototype = {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\t\t},\r\n\t\thide: function () {\r\n\t\t},\r\n\t\tset_value: function (value, id, column, node) {\r\n\t\t\tthis.get_input(node).value = value;\r\n\t\t},\r\n\t\tget_value: function (id, column, node) {\r\n\t\t\treturn this.get_input(node).value || \"\";\r\n\t\t},\r\n\t\tis_changed: function (value, id, column, node) {\r\n\t\t\tvar currentValue = this.get_value(id, column, node);\r\n\t\t\tif (currentValue && value && currentValue.valueOf && value.valueOf) {\r\n\t\t\t\treturn currentValue.valueOf() != value.valueOf();\r\n\t\t\t} else {\r\n\t\t\t\treturn currentValue != value;\r\n\t\t\t}\r\n\t\t},\r\n\t\tis_valid: function (value, id, column, node) {\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tsave: function (id, column, node) {\r\n\r\n\t\t},\r\n\t\tget_input: function (node) {\r\n\t\t\treturn node.querySelector(\"input\");\r\n\t\t},\r\n\t\tfocus: function (node) {\r\n\t\t\tvar input = this.get_input(node);\r\n\t\t\tif (!input) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (input.focus) {\r\n\t\t\t\tinput.focus();\r\n\t\t\t}\r\n\r\n\t\t\tif (input.select) {\r\n\t\t\t\tinput.select();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn BaseEditor;\r\n};","var utils = require(\"../../../utils/utils\"),\r\n\teventable = require(\"../../../utils/eventable\"),\r\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\r\n\r\nvar Cell = (function () {\r\n\t\"use strict\";\r\n\r\n\tfunction Cell(parent, config, factory, gantt) {\r\n\t\tif (parent) {\r\n\t\t\tthis.$container = domHelpers.toNode(parent);\r\n\t\t\tthis.$parent = parent;\r\n\t\t}\r\n\t\t// save config\r\n\t\tthis.$config = utils.mixin(config, {\r\n\t\t\theaderHeight: 33\r\n\t\t});\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$domEvents = gantt._createDomEventScope();\r\n\t\t// set id\r\n\t\tthis.$id = config.id || \"c\" + utils.uid();\r\n\r\n\t\tthis.$name = \"cell\";\r\n\t\tthis.$factory = factory;\r\n\r\n\t\teventable(this);\r\n\r\n\t}\r\n\r\n\tCell.prototype.destructor = function () {\r\n\t\tthis.$parent = this.$container = this.$view = null;\r\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\r\n\t\tmouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\r\n\t\tthis.$domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\t};\r\n\tCell.prototype.cell = function (id) {\r\n\t\treturn null;\r\n\t};\r\n\r\n\tCell.prototype.scrollTo = function(left, top){\r\n\r\n\t\tif (left*1 == left){\r\n\t\t\tthis.$view.scrollLeft = left;\r\n\t\t}\r\n\t\tif(top*1 == top){\r\n\t\t\tthis.$view.scrollTop = top;\r\n\t\t}\r\n\t};\r\n\r\n\tCell.prototype.clear = function(){\r\n\t\tthis.getNode().innerHTML = \"\";\r\n\t\tthis.getNode().className = \"gantt_layout_content\";\r\n\t\tthis.getNode().style.padding = \"0\";\r\n\t};\r\n\r\n\tCell.prototype.resize = function (final) {\r\n\t\tif (this.$parent) {\r\n\t\t\treturn this.$parent.resize(final);\r\n\t\t}\r\n\r\n\t\tif(final === false){\r\n\t\t\tthis.$preResize = true;\r\n\t\t}\r\n\r\n\t\tvar topCont = this.$container;\r\n\t\tvar x = topCont.offsetWidth;\r\n\t\tvar y = topCont.offsetHeight;\r\n\t\tvar topSize = this.getSize();\r\n\t\tif (topCont === document.body) {\r\n\t\t\tx = document.body.offsetWidth;\r\n\t\t\ty = document.body.offsetHeight;\r\n\t\t}\r\n\t\tif (x < topSize.minWidth) {\r\n\t\t\tx = topSize.minWidth;\r\n\t\t}\r\n\t\tif (x > topSize.maxWidth) {\r\n\t\t\tx = topSize.maxWidth;\r\n\t\t}\r\n\t\tif (y < topSize.minHeight) {\r\n\t\t\ty = topSize.minHeight;\r\n\t\t}\r\n\t\tif (y > topSize.maxHeight) {\r\n\t\t\ty = topSize.maxHeight;\r\n\t\t}\r\n\t\tthis.setSize(x, y);\r\n\r\n\t\tif(!this.$preResize){\r\n\t\t//\tself.callEvent(\"onResize\", [x, y]);\r\n\t\t}\r\n\t\tthis.$preResize = false;\r\n\t};\r\n\r\n\tCell.prototype.hide = function () {\r\n\t\tthis._hide(true);\r\n\t\tthis.resize();\r\n\t};\r\n\tCell.prototype.show = function (force) {\r\n\t\tthis._hide(false);\r\n\t\tif (force && this.$parent) {\r\n\t\t\tthis.$parent.show();\r\n\t\t}\r\n\t\tthis.resize();\r\n\t};\r\n\tCell.prototype._hide = function (mode) {\r\n\t\tif (mode === true && this.$view.parentNode) {\r\n\t\t\tthis.$view.parentNode.removeChild(this.$view);\r\n\t\t}\r\n\t\telse if (mode === false && !this.$view.parentNode) {\r\n\t\t\tvar index = this.$parent.cellIndex(this.$id);\r\n\t\t\tthis.$parent.moveView(this, index);\r\n\t\t}\r\n\t\tthis.$config.hidden = mode;\r\n\t};\r\n\tCell.prototype.$toHTML = function (content, css) {\r\n\t\tif (content === void 0) { content = \"\"; }\r\n\t\tcss = [(css || \"\"), (this.$config.css || \"\")].join(\" \");\r\n\t\tvar obj = this.$config;\r\n\t\tvar header = \"\";\r\n\t\tif (obj.raw) {\r\n\t\t\tcontent = typeof obj.raw === \"string\" ? obj.raw : \"\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!content) {\r\n\t\t\t\tcontent = \"
\" + (obj.html || \"\") + \"
\";\r\n\t\t\t}\r\n\t\t\tif (obj.header) {\r\n\t\t\t\tvar collapseIcon = obj.canCollapse ? \"
\" : \"\";\r\n\t\t\t\theader = \"
\" + collapseIcon + \"
\" + obj.header + \"
\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"
\" + header + content + \"
\";\r\n\t};\r\n\tCell.prototype.$fill = function (node, parent) {\r\n\t\tthis.$view = node;\r\n\t\tthis.$parent = parent;\r\n\t\tthis.init();\r\n\t};\r\n\tCell.prototype.getNode = function () {\r\n\t\treturn (this.$view.querySelector(\"gantt_layout_cell\") || this.$view);\r\n\t};\r\n\tCell.prototype.init = function () {\r\n\t\t// [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tthis._headerClickHandler = function(e){\r\n\t\t\tvar cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\r\n\t\t\tif(cellId == self.$id){\r\n\t\t\t\tself.toggle();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\r\n\t\tmouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\r\n\r\n\t\tthis.callEvent(\"onReady\", []);\r\n\t};\r\n\tCell.prototype.toggle = function () {\r\n\t\tthis.$config.collapsed = !this.$config.collapsed;\r\n\t\tthis.resize();\r\n\t};\r\n\tCell.prototype.getSize = function () {\r\n\t\tvar size = {\r\n\t\t\theight: this.$config.height || 0,\r\n\t\t\twidth: this.$config.width || 0,\r\n\t\t\tgravity: this.$config.gravity || 1,\r\n\t\t\tminHeight: this.$config.minHeight || 0,\r\n\t\t\tminWidth: this.$config.minWidth || 0,\r\n\t\t\tmaxHeight: this.$config.maxHeight || 100000,\r\n\t\t\tmaxWidth: this.$config.maxWidth || 100000\r\n\t\t};\r\n\t\tif (this.$config.collapsed) {\r\n\t\t\tvar mode = this.$config.mode === \"x\";\r\n\t\t\tsize[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\r\n\t\t}\r\n\t\treturn size;\r\n\t};\r\n\r\n\tCell.prototype.getContentSize = function(){\r\n\r\n\t\tvar width = this.$lastSize.contentX;\r\n\t\tif(width !== width*1){\r\n\t\t\twidth = this.$lastSize.width;\r\n\t\t}\r\n\r\n\t\tvar height = this.$lastSize.contentY;\r\n\t\tif(height !== height*1){\r\n\t\t\theight = this.$lastSize.height;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\twidth: width,\r\n\t\t\theight: height\r\n\t\t};\r\n\t};\r\n\r\n\tCell.prototype._getBorderSizes = function(){\r\n\t\tvar borders = {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0,\r\n\t\t\thorizontal: 0,\r\n\t\t\tvertical: 0\r\n\t\t};\r\n\t\tif(this._currentBorders){\r\n\t\t\tif(this._currentBorders[this._borders.left]){\r\n\t\t\t\tborders.left = 1;\r\n\t\t\t\tborders.horizontal++;\r\n\t\t\t}\r\n\r\n\t\t\tif(this._currentBorders[this._borders.right]){\r\n\t\t\t\tborders.right = 1;\r\n\t\t\t\tborders.horizontal++;\r\n\t\t\t}\r\n\r\n\t\t\tif(this._currentBorders[this._borders.top]){\r\n\t\t\t\tborders.top = 1;\r\n\t\t\t\tborders.vertical++;\r\n\t\t\t}\r\n\r\n\t\t\tif(this._currentBorders[this._borders.bottom]){\r\n\t\t\t\tborders.bottom = 1;\r\n\t\t\t\tborders.vertical++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn borders;\r\n\r\n\t};\r\n\r\n\tCell.prototype.setSize = function (x, y) {\r\n\t\tthis.$view.style.width = x + \"px\";\r\n\t\tthis.$view.style.height = y + \"px\";\r\n\r\n\t\tvar borders = this._getBorderSizes();\r\n\t\tvar contentY = y - borders.vertical;\r\n\t\tvar contentX = x - borders.horizontal;\r\n\r\n\t\tthis.$lastSize = { x: x, y: y, contentX: contentX, contentY: contentY };\r\n\t\tif (this.$config.header) {\r\n\t\t\tthis._sizeHeader();\r\n\t\t}else{\r\n\t\t\tthis._sizeContent();\r\n\t\t}\r\n\t};\r\n\r\n\tCell.prototype._borders = {\r\n\t\t\"left\":\"gantt_layout_cell_border_left\",\r\n\t\t\"right\":\"gantt_layout_cell_border_right\",\r\n\t\t\"top\":\"gantt_layout_cell_border_top\",\r\n\t\t\"bottom\":\"gantt_layout_cell_border_bottom\"\r\n\t};\r\n\r\n\tCell.prototype._setBorders = function(css, view){\r\n\t\tif(!view) {\r\n\t\t\tview = this;\r\n\t\t}\r\n\t\tvar node = view.$view;\r\n\r\n\t\tfor( var i in this._borders){\r\n\t\t\tdomHelpers.removeClassName(node, this._borders[i]);\r\n\t\t}\r\n\r\n\t\tif(typeof css == \"string\"){\r\n\t\t\tcss = [css];\r\n\t\t}\r\n\r\n\t\tvar cssHash = {};\r\n\r\n\t\tfor(var i = 0; i < css.length; i++){\r\n\t\t\tdomHelpers.addClassName(node, css[i]);\r\n\t\t\tcssHash[css[i]] = true;\r\n\t\t}\r\n\r\n\t\tview._currentBorders = cssHash;\r\n\t};\r\n\r\n\r\n\tCell.prototype._sizeContent = function(){\r\n\t\tvar content = this.$view.childNodes[0];\r\n\t\tif(content && content.className == \"gantt_layout_content\"){\r\n\t\t\tcontent.style.height = this.$lastSize.contentY + \"px\";\r\n\t\t}\r\n\t};\r\n\r\n\tCell.prototype._sizeHeader = function () {\r\n\t\tvar size = this.$lastSize;\r\n\t\tsize.contentY -= this.$config.headerHeight;\r\n\t\tvar header = this.$view.childNodes[0];\r\n\t\tvar content = this.$view.childNodes[1];\r\n\t\tvar xLayout = this.$config.mode === \"x\";\r\n\t\tif (this.$config.collapsed) {\r\n\t\t\tcontent.style.display = \"none\";\r\n\t\t\tif (xLayout) {\r\n\t\t\t\theader.className = \"gantt_layout_header collapsed_x\";\r\n\t\t\t\theader.style.width = size.y + \"px\";\r\n\t\t\t\tvar d = Math.floor(size.y / 2 - size.x / 2);\r\n\t\t\t\theader.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\r\n\t\t\t\tcontent.style.display = \"none\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\theader.className = \"gantt_layout_header collapsed_y\";\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (xLayout) {\r\n\t\t\t\theader.className = \"gantt_layout_header\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\theader.className = \"gantt_layout_header vertical\";\r\n\t\t\t}\r\n\t\t\theader.style.width = 'auto';\r\n\t\t\theader.style.transform = '';\r\n\t\t\tcontent.style.display = \"\";\r\n\t\t\tcontent.style.height = size.contentY + \"px\";\r\n\t\t}\r\n\t\theader.style.height = this.$config.headerHeight + \"px\";\r\n\t};\r\n\treturn Cell;\r\n}());\r\n\r\nmodule.exports = Cell;\r\n","var env = {\r\n\tisIE: (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisIE6: (!window.XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\r\n\tisIE7: (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\r\n\tisIE8: (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: (navigator.userAgent.indexOf(\"Edge\")!=-1)\r\n};\r\n\r\nmodule.exports = env;","var __extends = require(\"../../../utils/extends\");\r\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction SelectControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\t\r\n\t\treturn self; \r\n\t}\r\n\t\r\n\t__extends(SelectControl, _super);\r\n\t\r\n\tSelectControl.prototype.render = function(sns) {\r\n\t\tvar height = (sns.height || \"23\") + \"px\";\r\n\t\tvar html = \"
\";\r\n\r\n\t\thtml += htmlHelpers.getHtmlSelect(sns.options, [{ key: \"style\", value: \"width:100%;\" }]);\r\n\t\thtml += \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tSelectControl.prototype.set_value = function(node, value, ev, sns) {\r\n\t\tvar select = node.firstChild;\r\n\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\tselect.onchange = sns.onchange;\r\n\t\t\tselect._dhx_onchange = true;\r\n\t\t}\r\n\t\tif (typeof value === \"undefined\")\r\n\t\t\tvalue = (select.options[0] || {}).value;\r\n\t\tselect.value = value || \"\";\r\n\t};\r\n\t\r\n\tSelectControl.prototype.get_value = function(node) {\r\n\t\treturn node.firstChild.value;\r\n\t};\r\n\t\r\n\tSelectControl.prototype.focus = function(node) {\r\n\t\tvar a = node.firstChild;\r\n\t\tgantt._focus(a, true);\r\n\t};\r\n\t\r\n\treturn SelectControl;\r\n};","/**\r\n * The state object for order branch drag and drop\r\n */\r\n\r\nvar utils = require(\"../../../../utils/utils\");\r\n\r\nmodule.exports = {\r\n\tcreateDropTargetObject: function createDropTargetObject(parent) {\r\n\t\tvar res = {\r\n\t\t\ttargetParent: null,\r\n\t\t\ttargetIndex: 0,\r\n\t\t\ttargetId: null,\r\n\t\t\tchild: false,\r\n\t\t\tnextSibling: false,\r\n\t\t\tprevSibling: false\r\n\t\t};\r\n\r\n\t\tif (parent) {\r\n\t\t\tutils.mixin(res, parent, true);\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\tnextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\r\n\t\tvar result = this.createDropTargetObject();\r\n\t\tresult.targetId = targetTaskId;\r\n\t\tresult.nextSibling = true;\r\n\t\tresult.targetParent = store.getParent(result.targetId);\r\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\r\n\t\tif(store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)){\r\n\t\t\tresult.targetIndex += 1;\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\tprevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\r\n\t\tvar result = this.createDropTargetObject();\r\n\t\tresult.targetId = targetTaskId;\r\n\t\tresult.prevSibling = true;\r\n\t\tresult.targetParent = store.getParent(result.targetId);\r\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\r\n\t\tif(store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)){\r\n\t\t\tresult.targetIndex -= 1;\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\tfirstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\r\n\t\tvar result = this.createDropTargetObject();\r\n\t\tresult.targetId = targetTaskId;\r\n\t\tresult.targetParent = result.targetId;\r\n\t\tresult.targetIndex = 0;\r\n\t\tresult.child = true;\r\n\t\treturn result;\r\n\t},\r\n\tlastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\r\n\t\tvar children = store.getChildren(targetTaskId);\r\n\t\tvar result = this.createDropTargetObject();\r\n\t\tresult.targetId = children[children.length - 1];\r\n\t\tresult.targetParent = targetTaskId;\r\n\t\tresult.targetIndex = children.length;\r\n\t\tresult.nextSibling = true;\r\n\t\treturn result;\r\n\t}\r\n};","module.exports = function(item, view){\r\n\tif(!item.start_date || !item.end_date){\r\n\t\treturn null;\r\n\t}\r\n\tvar padding = 200;\r\n\tvar startCoord = view.posFromDate(item.start_date);\r\n\tvar endCoord = view.posFromDate(item.end_date);\r\n\tvar left = Math.min(startCoord, endCoord) - padding;\r\n\tvar right = Math.max(startCoord, endCoord) + padding;\r\n\r\n\treturn {\r\n\t\ttop: view.getItemTop(item.id),\r\n\t\theight: view.getItemHeight(item.id),\r\n\t\tleft: left,\r\n\t\twidth: right - left\r\n\t};\r\n};","function create(gantt){\r\n\tvar events = [];\r\n\r\n\treturn {\r\n\t\tdelegate:function(event, className, handler, root) {\r\n\t\t\tevents.push([event, className, handler, root]);\r\n\r\n\t\t\tvar helper = gantt.$services.getService(\"mouseEvents\");\r\n\t\t\thelper.delegate(event, className, handler, root);\r\n\t\t},\r\n\t\tdestructor: function(){\r\n\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\r\n\t\t\tfor(var i = 0; i < events.length; i++){\r\n\t\t\t\tvar h = events[i];\r\n\t\t\t\tmouseEvents.detach(h[0], h[1], h[2], h[3]);\r\n\t\t\t}\r\n\t\t\tevents = [];\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = create;","var utils = require(\"../../../utils/utils\");\r\n\r\nfunction ScaleHelper(gantt){\r\n\tvar dateHelper = gantt.date;\r\n\tvar services = gantt.$services;\r\n\r\n\treturn {\r\n\t\tgetSum: function (sizes, from, to) {\r\n\t\t\tif (to === undefined)\r\n\t\t\t\tto = sizes.length - 1;\r\n\t\t\tif (from === undefined)\r\n\t\t\t\tfrom = 0;\r\n\r\n\t\t\tvar summ = 0;\r\n\t\t\tfor (var i = from; i <= to; i++)\r\n\t\t\t\tsumm += sizes[i];\r\n\r\n\t\t\treturn summ;\r\n\t\t},\r\n\t\tsetSumWidth: function (sum_width, scale, from, to) {\r\n\t\t\tvar parts = scale.width;\r\n\r\n\t\t\tif (to === undefined)\r\n\t\t\t\tto = parts.length - 1;\r\n\t\t\tif (from === undefined)\r\n\t\t\t\tfrom = 0;\r\n\t\t\tvar length = to - from + 1;\r\n\r\n\t\t\tif (from > parts.length - 1 || length <= 0 || to > parts.length - 1)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar oldWidth = this.getSum(parts, from, to);\r\n\r\n\t\t\tvar diff = sum_width - oldWidth;\r\n\r\n\t\t\tthis.adjustSize(diff, parts, from, to);\r\n\t\t\tthis.adjustSize(-diff, parts, to + 1);\r\n\r\n\t\t\tscale.full_width = this.getSum(parts);\r\n\t\t},\r\n\t\tsplitSize: function (width, count) {\r\n\t\t\tvar arr = [];\r\n\t\t\tfor (var i = 0; i < count; i++) arr[i] = 0;\r\n\r\n\t\t\tthis.adjustSize(width, arr);\r\n\t\t\treturn arr;\r\n\r\n\t\t},\r\n\t\tadjustSize: function (width, parts, from, to) {\r\n\t\t\tif (!from)\r\n\t\t\t\tfrom = 0;\r\n\t\t\tif (to === undefined)\r\n\t\t\t\tto = parts.length - 1;\r\n\r\n\t\t\tvar length = to - from + 1;\r\n\r\n\t\t\tvar full = this.getSum(parts, from, to);\r\n\r\n\t\t\tfor (var i = from; i <= to; i++) {\r\n\t\t\t\tvar share = Math.floor(width * (full ? (parts[i] / full) : (1 / length)));\r\n\r\n\t\t\t\tfull -= parts[i];\r\n\t\t\t\twidth -= share;\r\n\t\t\t\tlength--;\r\n\r\n\t\t\t\tparts[i] += share;\r\n\t\t\t}\r\n\t\t\tparts[parts.length - 1] += width;\r\n\t\t},\r\n\t\tsortScales: function (scales) {\r\n\t\t\tfunction cellSize(unit, step) {\r\n\t\t\t\tvar d = new Date(1970, 0, 1);\r\n\t\t\t\treturn dateHelper.add(d, step, unit) - d;\r\n\t\t\t}\r\n\r\n\t\t\tscales.sort(function (a, b) {\r\n\t\t\t\tif (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t} else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfor (var i = 0; i < scales.length; i++) {\r\n\t\t\t\tscales[i].index = i;\r\n\t\t\t}\r\n\t\t},\r\n\t\t_isLegacyMode: function(config){\r\n\t\t\tvar scaleConfig = config || services.config();\r\n\t\t\treturn scaleConfig.scale_unit || scaleConfig.date_scale || scaleConfig.subscales;\r\n\t\t},\r\n\t\t_prepareScaleObject: function(scale){\r\n\t\t\tvar format = scale.format;\r\n\t\t\tif(!format){\r\n\t\t\t\tformat = scale.template || scale.date || \"%d %M\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof format === \"string\"){\r\n\t\t\t\tformat = gantt.date.date_to_str(format);\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tunit: scale.unit || \"day\",\r\n\t\t\t\tstep: scale.step || 1,\r\n\t\t\t\tformat: format,\r\n\t\t\t\tcss: scale.css\r\n\t\t\t};\r\n\t\t},\r\n\t\tprimaryScale: function(config) {\r\n\t\t\tvar templates = services.getService(\"templateLoader\");\r\n\t\t\tvar legacyMode = this._isLegacyMode(config);\r\n\r\n\t\t\tvar scaleConfig = config || services.config();\r\n\r\n\t\t\tvar result;\r\n\t\t\tif(legacyMode){\r\n\t\t\t\ttemplates.initTemplate(\"date_scale\", undefined, undefined, scaleConfig, services.templates());\r\n\t\t\t\tresult = {\r\n\t\t\t\t\tunit: services.config().scale_unit,\r\n\t\t\t\t\tstep: services.config().step,\r\n\t\t\t\t\ttemplate: services.templates().date_scale,\r\n\t\t\t\t\tdate: services.config().date_scale,\r\n\t\t\t\t\tcss: services.templates().scale_cell_class\r\n\t\t\t\t};\r\n\t\t\t}else{\r\n\t\t\t\tvar primaryScale = scaleConfig.scales[0];\r\n\t\t\t\tresult = {\r\n\t\t\t\t\tunit: primaryScale.unit,\r\n\t\t\t\t\tstep: primaryScale.step,\r\n\t\t\t\t\ttemplate: primaryScale.template,\r\n\t\t\t\t\tformat: primaryScale.format,\r\n\t\t\t\t\tdate: primaryScale.date,\r\n\t\t\t\t\tcss: primaryScale.css || services.templates().scale_cell_class\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn this._prepareScaleObject(result);\r\n\t\t},\r\n\t\tgetSubScales: function(config) {\r\n\t\t\tvar legacyMode = this._isLegacyMode(config);\r\n\t\t\tvar scaleConfig = config || services.config();\r\n\t\t\tvar scales;\r\n\t\t\tif(legacyMode){\r\n\t\t\t\tscales = scaleConfig.subscales || [];\r\n\t\t\t}else{\r\n\t\t\t\tscales = scaleConfig.scales.slice(1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn scales.map(function(scale){\r\n\t\t\t\treturn this._prepareScaleObject(scale);\r\n\t\t\t}.bind(this));\r\n\t\t},\r\n\r\n\t\tprepareConfigs: function (scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\r\n\t\t\tvar heights = this.splitSize(scale_height, scales.length);\r\n\t\t\tvar full_width = container_width;\r\n\r\n\t\t\tvar configs = [];\r\n\t\t\tfor (var i = scales.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar main_scale = (i == scales.length - 1);\r\n\t\t\t\tvar cfg = this.initScaleConfig(scales[i], minDate, maxDate);\r\n\t\t\t\tif (main_scale) {\r\n\t\t\t\t\tthis.processIgnores(cfg);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.initColSizes(cfg, min_coll_width, full_width, heights[i]);\r\n\t\t\t\tthis.limitVisibleRange(cfg);\r\n\r\n\t\t\t\tif (main_scale) {\r\n\t\t\t\t\tfull_width = cfg.full_width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfigs.unshift(cfg);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tfor (var i = 0; i < configs.length - 1; i++) {\r\n\t\t\t\tthis.alineScaleColumns(configs[configs.length - 1], configs[i]);\r\n\t\t\t}\r\n\t\t\tfor (var i = 0; i < configs.length; i++) {\r\n\r\n\t\t\t\tif(rtl){\r\n\t\t\t\t\tthis.reverseScale(configs[i]);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setPosSettings(configs[i]);\r\n\t\t\t}\r\n\t\t\treturn configs;\r\n\r\n\t\t},\r\n\r\n\t\treverseScale: function(scale){\r\n\t\t\tscale.width = scale.width.reverse();\r\n\t\t\tscale.trace_x = scale.trace_x.reverse();\r\n\r\n\t\t\tvar indexes = scale.trace_indexes;\r\n\t\t\tscale.trace_indexes = {};\r\n\t\t\tscale.trace_index_transition = {};\r\n\t\t\tscale.rtl = true;\r\n\t\t\tfor(var i = 0; i < scale.trace_x.length; i++){\r\n\t\t\t\tscale.trace_indexes[scale.trace_x[i].valueOf()] = i;\r\n\t\t\t\tscale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\r\n\t\t\t}\r\n\t\t\treturn scale;\r\n\t\t},\r\n\r\n\t\tsetPosSettings: function (config) {\r\n\t\t\tfor (var i = 0, len = config.trace_x.length; i < len; i++) {\r\n\t\t\t\tconfig.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_ignore_time_config: function (date, scale) {\r\n\r\n\t\t\tif (services.config().skip_off_time) {\r\n\t\t\t\tvar skip = true;\r\n\t\t\t\tvar probe = date;\r\n\r\n\t\t\t\t// check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\r\n\t\t\t\tfor (var i = 0; i < scale.step; i++) {\r\n\t\t\t\t\tif (i) {\r\n\t\t\t\t\t\tprobe = dateHelper.add(date, i, scale.unit);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tskip = skip && !this.isWorkTime(probe, scale.unit);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn skip;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t//defined in an extension\r\n\t\tprocessIgnores: function (config) {\r\n\t\t\tconfig.ignore_x = {};\r\n\t\t\tconfig.display_count = config.count;\r\n\t\t},\r\n\t\tinitColSizes: function (config, min_col_width, full_width, line_height) {\r\n\t\t\tvar cont_width = full_width;\r\n\r\n\t\t\tconfig.height = line_height;\r\n\r\n\t\t\tvar column_count = config.display_count === undefined ? config.count : config.display_count;\r\n\r\n\t\t\tif (!column_count)\r\n\t\t\t\tcolumn_count = 1;\r\n\r\n\t\t\tconfig.col_width = Math.floor(cont_width / column_count);\r\n\r\n\t\t\tif (min_col_width) {\r\n\t\t\t\tif (config.col_width < min_col_width) {\r\n\t\t\t\t\tconfig.col_width = min_col_width;\r\n\t\t\t\t\tcont_width = config.col_width * column_count;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconfig.width = [];\r\n\t\t\tvar ignores = config.ignore_x || {};\r\n\t\t\tfor (var i = 0; i < config.trace_x.length; i++) {\r\n\t\t\t\tif (ignores[config.trace_x[i].valueOf()] || (config.display_count == config.count)) {\r\n\t\t\t\t\tconfig.width[i] = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// width of month columns should be proportional month duration\r\n\t\t\t\t\tvar width = 1;\r\n\t\t\t\t\tif (config.unit == \"month\") {\r\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));\r\n\t\t\t\t\t\twidth = days;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconfig.width[i] = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.adjustSize(cont_width - this.getSum(config.width)/* 1 width per column from the code above */, config.width);\r\n\t\t\tconfig.full_width = this.getSum(config.width);\r\n\t\t},\r\n\t\tinitScaleConfig: function (config, min_date, max_date) {\r\n\t\t\tvar cfg = utils.mixin({\r\n\t\t\t\tcount: 0,\r\n\t\t\t\tcol_width: 0,\r\n\t\t\t\tfull_width: 0,\r\n\t\t\t\theight: 0,\r\n\t\t\t\twidth: [],\r\n\t\t\t\tleft: [],\r\n\t\t\t\ttrace_x: [],\r\n\t\t\t\ttrace_indexes: {},\r\n\t\t\t\tmin_date: new Date(min_date),\r\n\t\t\t\tmax_date: new Date(max_date)\r\n\t\t\t}, config);\r\n\r\n\t\t\tthis.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\r\n\t\t\t\tcfg.count++;\r\n\t\t\t\tcfg.trace_x.push(new Date(date));\r\n\t\t\t\tcfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\r\n\t\t\t});\r\n\r\n\t\t\tcfg.trace_x_ascending = cfg.trace_x.slice();\r\n\t\t\treturn cfg;\r\n\t\t},\r\n\t\titerateScales: function (lower_scale, upper_scale, from, to, callback) {\r\n\t\t\tvar upper_dates = upper_scale.trace_x;\r\n\t\t\tvar lower_dates = lower_scale.trace_x;\r\n\r\n\t\t\tvar prev = from || 0;\r\n\t\t\tvar end = to || (lower_dates.length - 1);\r\n\t\t\tvar prevUpper = 0;\r\n\r\n\r\n\t\t\tfor (var up = 1; up < upper_dates.length; up++) {\r\n\t\t\t\tvar target_index = (lower_scale.trace_indexes[+upper_dates[up]]);\r\n\t\t\t\tif (target_index !== undefined && target_index <= end) {\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\tcallback.apply(this, [prevUpper, up, prev, target_index]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprev = target_index;\r\n\t\t\t\t\tprevUpper = up;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\talineScaleColumns: function (lower_scale, upper_scale, from, to) {\r\n\t\t\tthis.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\r\n\t\t\t\tvar targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\r\n\t\t\t\tvar actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\r\n\t\t\t\tif (actualWidth != targetWidth) {\r\n\t\t\t\t\tthis.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\teachColumn: function (unit, step, min_date, max_date, callback) {\r\n\t\t\tvar start = new Date(min_date),\r\n\t\t\t\tend = new Date(max_date);\r\n\t\t\tif (dateHelper[unit + \"_start\"]) {\r\n\t\t\t\tstart = dateHelper[unit + \"_start\"](start);\r\n\t\t\t}\r\n\r\n\t\t\tvar curr = new Date(start);\r\n\t\t\tif (+curr >= +end) {\r\n\t\t\t\tend = dateHelper.add(curr, step, unit);\r\n\t\t\t}\r\n\t\t\twhile (+curr < +end) {\r\n\t\t\t\tcallback.call(this, new Date(curr));\r\n\t\t\t\tvar tzOffset = curr.getTimezoneOffset();\r\n\t\t\t\tcurr = dateHelper.add(curr, step, unit);\r\n\t\t\t\tcurr = gantt._correct_dst_change(curr, tzOffset, step, unit);\r\n\t\t\t\tif (dateHelper[unit + '_start'])\r\n\t\t\t\t\tcurr = dateHelper[unit + \"_start\"](curr);\r\n\t\t\t}\r\n\t\t},\r\n\t\tlimitVisibleRange: function (cfg) {\r\n\t\t\tvar dates = cfg.trace_x;\r\n\r\n\t\t\tvar left = 0, right = cfg.width.length - 1;\r\n\t\t\tvar diff = 0;\r\n\t\t\tif (+dates[0] < +cfg.min_date && left != right) {\r\n\t\t\t\tvar width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\r\n\t\t\t\tdiff += cfg.width[0] - width;\r\n\t\t\t\tcfg.width[0] = width;\r\n\r\n\t\t\t\tdates[0] = new Date(cfg.min_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar last = dates.length - 1;\r\n\t\t\tvar lastDate = dates[last];\r\n\t\t\tvar outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\r\n\t\t\tif (+outDate > +cfg.max_date && last > 0) {\r\n\t\t\t\tvar width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\r\n\t\t\t\tdiff += cfg.width[last] - width;\r\n\t\t\t\tcfg.width[last] = width;\r\n\t\t\t}\r\n\r\n\t\t\tif (diff) {\r\n\t\t\t\tvar full = this.getSum(cfg.width);\r\n\t\t\t\tvar shared = 0;\r\n\t\t\t\tfor (var i = 0; i < cfg.width.length; i++) {\r\n\t\t\t\t\tvar share = Math.floor(diff * (cfg.width[i] / full));\r\n\t\t\t\t\tcfg.width[i] += share;\r\n\t\t\t\t\tshared += share;\r\n\t\t\t\t}\r\n\t\t\t\tthis.adjustSize(diff - shared, cfg.width);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = ScaleHelper;\r\n","var ScaleHelper = require(\"./scales_ignore\");\r\nvar eventable = require(\"../../../utils/eventable\");\r\nvar utils = require(\"../../../utils/utils\");\r\nvar topPositionMixin = require(\"../row_position_mixin\");\r\nvar canvasRender = require(\"./tasks_canvas_render\");\r\n\r\nvar Timeline = function(parent, config, factory, gantt){\r\n\tthis.$config = utils.mixin({}, config || {});\r\n\tthis.$scaleHelper = new ScaleHelper(gantt);\r\n\tthis.$gantt = gantt;\r\n\tthis._posFromDateCache = {};\r\n\tutils.mixin(this, topPositionMixin());\r\n\teventable(this);\r\n};\r\n\r\nTimeline.prototype = {\r\n\tinit: function(container){\r\n\t\tcontainer.innerHTML += \"
\";\r\n\t\tthis.$task = container.childNodes[0];\r\n\r\n\t\tthis.$task.innerHTML = \"
\";\r\n\t\tthis.$task_scale = this.$task.childNodes[0];\r\n\r\n\t\tthis.$task_data = this.$task.childNodes[1];\r\n\t\tthis.$task_data.innerHTML = \"
\";\r\n\t\tthis.$task_bg = this.$task_data.childNodes[0];\r\n\t\tthis.$task_links = this.$task_data.childNodes[1];\r\n\t\tthis.$task_bars = this.$task_data.childNodes[2];\r\n\r\n\t\tthis._tasks = {\r\n\t\t\tcol_width: 0,\r\n\t\t\twidth: [], // width of each column\r\n\t\t\tfull_width: 0, // width of all columns\r\n\t\t\ttrace_x: [],\r\n\t\t\trendered: {}\r\n\t\t};\r\n\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar attr = config[this.$config.bind + \"_attribute\"];\r\n\t\tvar linksAttr = config[this.$config.bindLinks + \"_attribute\"];\r\n\t\tif(!attr && this.$config.bind){\r\n\t\t\tattr = this.$config.bind + \"_id\";\r\n\t\t}\r\n\t\tif(!linksAttr && this.$config.bindLinks){\r\n\t\t\tlinksAttr = this.$config.bindLinks + \"_id\";\r\n\t\t}\r\n\t\tthis.$config.item_attribute = attr || null;\r\n\t\tthis.$config.link_attribute = linksAttr || null;\r\n\r\n\t\tvar layers = this._createLayerConfig();\r\n\t\tif(!this.$config.layers){\r\n\t\t\tthis.$config.layers = layers.tasks;\r\n\t\t}\r\n\t\tif(!this.$config.linkLayers){\r\n\t\t\tthis.$config.linkLayers = layers.links;\r\n\t\t}\r\n\r\n\t\tthis._attachLayers(this.$gantt);\r\n\r\n\t\tthis.callEvent(\"onReady\", []);\r\n\t\t//this.refresh();\r\n\t},\r\n\r\n\tsetSize: function(width, height){\r\n\t\tvar config = this.$getConfig();\r\n\r\n\t\tif(width*1 === width){\r\n\t\t\tthis.$config.width = width;\r\n\t\t}\r\n\t\tif(height*1 === height){\r\n\r\n\t\t\tthis.$config.height = height;\r\n\t\t\tvar dataHeight = Math.max(this.$config.height - config.scale_height);\r\n\t\t\tthis.$task_data.style.height = dataHeight + 'px';\r\n\t\t}\r\n\r\n\t\tthis.refresh();\r\n\t\tthis.$task_bg.style.backgroundImage = \"\";\r\n\r\n\t\tif(config.smart_rendering && this.$config.rowStore){\r\n\t\t\tvar store = this.$config.rowStore;\r\n\t\t\tthis.$task_bg.style.height = config.row_height * store.countVisible() +\"px\";\r\n\t\t}else{\r\n\t\t\tthis.$task_bg.style.height = \"\";\r\n\t\t}\r\n\r\n\t\tvar scale = this._tasks;\r\n\t\t//timeline area layers\r\n\t\tvar data_els = this.$task_data.childNodes;\r\n\t\tfor(var i= 0, len = data_els.length; i < len; i++){\r\n\t\t\tvar el = data_els[i];\r\n\t\t\tif(el.hasAttribute(\"data-layer\") && el.style)\r\n\t\t\t\tel.style.width = scale.full_width + \"px\";\r\n\t\t}\r\n\t},\r\n\r\n\tisVisible: function(){\r\n\t\tif(this.$parent && this.$parent.$config){\r\n\t\t\treturn !this.$parent.$config.hidden;\r\n\t\t}else{\r\n\t\t\treturn this.$task.offsetWidth;\r\n\t\t}\r\n\t},\r\n\r\n\tgetSize: function(){\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar store = this.$config.rowStore;\r\n\r\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\r\n\t\t\tcontentWidth = this.isVisible() ? this._tasks.full_width : 0;\r\n\r\n\t\treturn {\r\n\t\t\tx: this.isVisible() ? this.$config.width : 0,\r\n\t\t\ty: this.isVisible() ? this.$config.height : 0,\r\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\r\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\r\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\r\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\r\n\t\t};\r\n\t},\r\n\r\n\tscrollTo: function(left, top){\r\n\t\tif(!this.isVisible())\r\n\t\t\treturn;\r\n\r\n\t\tvar scrolled = false;\r\n\r\n\t\tthis.$config.scrollTop = this.$config.scrollTop || 0;\r\n\t\tthis.$config.scrollLeft = this.$config.scrollLeft || 0;\r\n\t\tif(top*1 === top){\r\n\t\t\tthis.$config.scrollTop = top;\r\n\t\t\tthis.$task_data.scrollTop = this.$config.scrollTop;\r\n\t\t\tscrolled = true;\r\n\t\t}\r\n\t\tif (left*1 === left){\r\n\t\t\tthis.$task.scrollLeft = left;\r\n\t\t\tthis.$config.scrollLeft = this.$task.scrollLeft;\r\n\t\t\tthis._refreshScales();\r\n\t\t\tscrolled = true;\r\n\t\t}\r\n\r\n\t\tif(scrolled){\r\n\t\t\tthis.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\r\n\t\t}\r\n\t},\r\n\r\n\t_refreshScales: function _refreshScales() {\r\n\t\tif(!this.isVisible())\r\n\t\t\treturn;\r\n\r\n\t\tvar config = this.$getConfig();\r\n\t\tif (!config.smart_scales) return;\r\n\r\n\t\tvar viewPort = this.getViewPort();\r\n\r\n\t\tvar scales = this._scales;\r\n\t\tthis.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\r\n\t},\r\n\r\n\tgetViewPort: function(){\r\n\t\tvar scrollLeft = this.$config.scrollLeft || 0;\r\n\t\tvar scrollTop = this.$config.scrollTop || 0;\r\n\t\tvar height = this.$config.height || 0;\r\n\t\tvar width = this.$config.width || 0;\r\n\t\treturn {\r\n\t\t\ty: scrollTop,\r\n\t\t\ty_end: scrollTop + height,\r\n\t\t\tx: scrollLeft,\r\n\t\t\tx_end: scrollLeft + width,\r\n\t\t\theight: height,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\t_createLayerConfig: function(){\r\n\t\tvar self = this;\r\n\t\tvar taskFilter = function(){\r\n\t\t\treturn self.isVisible();\r\n\t\t};\r\n\r\n\t\tvar taskLayers = [\r\n\t\t\t{\r\n\t\t\t\texpose: true,\r\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBar(),\r\n\t\t\t\tcontainer: this.$task_bars,\r\n\t\t\t\tfilter: [taskFilter]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskSplitBar(),\r\n\t\t\t\tfilter: [taskFilter],\r\n\t\t\t\tcontainer: this.$task_bars,\r\n\t\t\t\tappend: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg(),\r\n\t\t\t\tcontainer: this.$task_bg,\r\n\t\t\t\tfilter: [\r\n\t\t\t\t\t//function(){\r\n\t\t\t\t\t//\treturn !self.$getConfig().static_background;\r\n\t\t\t\t\t//},\r\n\t\t\t\t\ttaskFilter\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tvar linkLayers = [\r\n\t\t\t{\r\n\t\t\t\texpose: true,\r\n\t\t\t\trenderer: this.$gantt.$ui.layers.link(),\r\n\t\t\t\tcontainer: this.$task_links,\r\n\t\t\t\tfilter: [taskFilter]\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\treturn {\r\n\t\t\ttasks: taskLayers,\r\n\t\t\tlinks: linkLayers\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_attachLayers: function(gantt){\r\n\t\tthis._taskLayers = [];\r\n\t\tthis._linkLayers = [];\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\r\n\r\n\t\tif(this.$config.bind){\r\n\r\n\t\t\tthis._bindStore();\r\n\t\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\r\n\r\n\t\t\tif(!taskRenderer){\r\n\t\t\t\ttaskRenderer = layers.createDataRender({\r\n\t\t\t\t\tname: this.$config.bind,\r\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttaskRenderer.container = function(){ return self.$task_data;};\r\n\r\n\t\t\tvar taskLayers = this.$config.layers;\r\n\t\t\tfor(var i = 0; taskLayers && i < taskLayers.length; i++){\r\n\t\t\t\tvar layer = taskLayers[i];\r\n\r\n\t\t\t\tif(typeof layer == \"string\"){\r\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer]();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof layer == \"function\" || (layer && layer.render && layer.update)){\r\n\t\t\t\t\tlayer = {renderer: layer};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlayer.view = this;\r\n\r\n\t\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\r\n\t\t\t\tthis._taskLayers.push(bar_layer);\r\n\t\t\t\tif(layer.expose){\r\n\t\t\t\t\tthis._taskRenderer = taskRenderer.getLayer(bar_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._initStaticBackgroundRender();\r\n\t\t}\r\n\r\n\t\tif(this.$config.bindLinks){\r\n\t\t\tself.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\r\n\r\n\t\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\r\n\r\n\t\t\tif(!linkRenderer){\r\n\t\t\t\tlinkRenderer = layers.createDataRender({\r\n\t\t\t\t\tname: this.$config.bindLinks,\r\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tvar linkLayers = this.$config.linkLayers;\r\n\t\t\tfor(var i = 0; linkLayers && i < linkLayers.length; i++){\r\n\r\n\t\t\t\tif(typeof layer == \"string\"){\r\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer]();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar layer = linkLayers[i];\r\n\t\t\t\tlayer.view = this;\r\n\t\t\t//\tlayer.getViewPort = getViewPort;\r\n\t\t\t//\tsubscribeSmartRender(layer);\r\n\t\t\t\tvar linkLayer = linkRenderer.addLayer(layer);\r\n\t\t\t\tthis._taskLayers.push(linkLayer);\r\n\t\t\t\tif(linkLayers[i].expose){\r\n\t\t\t\t\tthis._linkRenderer = linkRenderer.getLayer(linkLayer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_initStaticBackgroundRender: function(){\r\n\t\tvar self = this;\r\n\t\tvar staticRender = canvasRender.create();\r\n\t\tvar store = self.$config.rowStore;\r\n\t\tif(!store) return;\r\n\r\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function(id, item, mode){\r\n\t\t\tif(id !== null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.isVisible())\r\n\t\t\t\treturn;\r\n\t\t\tvar config = self.$getConfig();\r\n\t\t\tif(config.static_background) {\r\n\t\t\t\tvar store = self.$gantt.getDatastore(self.$config.bind);\r\n\t\t\t\tvar staticBgContainer = self.$task_bg_static;\r\n\t\t\t\tif(!staticBgContainer){\r\n\t\t\t\t\tstaticBgContainer = document.createElement(\"div\");\r\n\t\t\t\t\tstaticBgContainer.className = \"gantt_task_bg\";\r\n\t\t\t\t\tself.$task_bg_static = staticBgContainer;\r\n\t\t\t\t\tif(self.$task_bg.nextSibling){\r\n\t\t\t\t\t\tself.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tself.$task_data.appendChild(staticBgContainer);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (store) {\r\n\t\t\t\t\tstaticRender.render(staticBgContainer, config, self.getScale(), config.row_height * store.countVisible());\r\n\t\t\t\t}\r\n\t\t\t}else if(config.static_background){\r\n\t\t\t\tif(self.$task_bg_static && self.$task_bg_static.parentNode){\r\n\t\t\t\t\tself.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.attachEvent(\"onDestroy\", function () {\r\n\t\t\tstaticRender.destroy();\r\n\t\t});\r\n\t\tthis._initStaticBackgroundRender = function(){};//init once\r\n\t},\r\n\r\n\t_clearLayers: function(gantt){\r\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\r\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\r\n\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\r\n\r\n\t\tif (this._taskLayers) {\r\n\t\t\tfor(var i = 0; i < this._taskLayers.length; i++){\r\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._linkLayers) {\r\n\t\t\tfor(var i = 0; i < this._linkLayers.length; i++){\r\n\t\t\t\tlinkRenderer.removeLayer(this._linkLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._linkLayers = [];\r\n\t\tthis._taskLayers = [];\r\n\t},\r\n\r\n\t_render_tasks_scales: function _render_tasks_scales() {\r\n\t\tvar config = this.$getConfig();\r\n\r\n\t\tvar scales_html = \"\",\r\n\t\t\touter_width = 0,\r\n\t\t\tscale_height = 0;\r\n\r\n\t\tvar state = this.$gantt.getState();\r\n\r\n\t\tif (this.isVisible()) {\r\n\t\t\tvar helpers = this.$scaleHelper;\r\n\t\t\tvar scales = this._getScales();\r\n\t\t\tscale_height = config.scale_height;\r\n\r\n\t\t\tvar availWidth = this.$config.width;\r\n\t\t\tif(config.autosize == \"x\" || config.autosize == \"xy\"){\r\n\t\t\t\tavailWidth = Math.max(config.autosize_min_width, 0);\r\n\t\t\t}\r\n\r\n\t\t\tvar cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\r\n\t\t\tvar cfg = this._tasks = cfgs[cfgs.length - 1];\r\n\t\t\tthis._scales = cfgs;\r\n\t\t\tthis._posFromDateCache = {};\r\n\r\n\t\t\tscales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\r\n\r\n\t\t\touter_width = cfg.full_width + \"px\";//cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\r\n\t\t\tscale_height += \"px\";\r\n\t\t}\r\n\r\n\t\tthis.$task_scale.style.height = scale_height;\r\n\r\n\t\tthis.$task_data.style.width =\r\n\t\t\tthis.$task_scale.style.width = outer_width;\r\n\r\n\t\tthis.$task_scale.innerHTML = scales_html;\r\n\r\n\t},\r\n\r\n\t_getScaleChunkHtml: function _get_scale_chunk_html (scales, fromPos, toPos) {\r\n\t\tvar templates = this.$gantt.$services.templates();\r\n\t\tvar html = [];\r\n\r\n\t\tvar css = templates.scale_row_class;\r\n\t\tfor (var i = 0; i < scales.length; i++) {\r\n\t\t\tvar cssClass = \"gantt_scale_line\";\r\n\t\t\tvar tplClass = css(scales[i]);\r\n\t\t\tif (tplClass) {\r\n\t\t\t\tcssClass += \" \" + tplClass;\r\n\t\t\t}\r\n\r\n\t\t\thtml.push(\"
\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"
\");\r\n\t\t}\r\n\r\n\t\treturn html.join(\"\");\r\n\t},\r\n\t_prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\r\n\t\tvar globalConfig = this.$getConfig();\r\n\t\tvar globalTemplates = this.$gantt.$services.templates();\r\n\r\n\t\tvar cells = [];\r\n\t\tvar date = null, css = null;\r\n\r\n\t\tvar content = config.format || config.template || config.date;\r\n\r\n\t\tif(typeof content === \"string\"){\r\n\t\t\tcontent = this.$gantt.date.date_to_str(content);\r\n\t\t}\r\n\r\n\t\tvar startIndex = 0,\r\n\t\t\tendIndex = config.count;\r\n\r\n\t\tif (globalConfig.smart_scales && (!isNaN(fromPos) && !isNaN(toPos))) {\r\n\t\t\tstartIndex = _findBinary(config.left, fromPos);\r\n\t\t\tendIndex = _findBinary(config.left, toPos) + 1;\r\n\t\t}\r\n\r\n\t\tcss = config.css || function () {\r\n\t\t\t};\r\n\t\tif (!config.css && globalConfig.inherit_scale_class) {\r\n\t\t\tcss = globalTemplates.scale_cell_class;\r\n\t\t}\r\n\r\n\t\tfor (var i = startIndex; i < endIndex; i++) {\r\n\t\t\tif (!config.trace_x[i]) break;\r\n\r\n\t\t\tdate = new Date(config.trace_x[i]);\r\n\t\t\tvar value = content.call(this, date),\r\n\t\t\t\twidth = config.width[i],\r\n\t\t\t\theight = config.height,\r\n\t\t\t\tleft = config.left[i],\r\n\t\t\t\tstyle = \"\",\r\n\t\t\t\ttemplate = \"\",\r\n\t\t\t\tcssclass = \"\";\r\n\r\n\t\t\tif (width) {\r\n\t\t\t\tvar position = globalConfig.smart_scales ? (\"position:absolute;left:\" + left + \"px\") : \"\";\r\n\r\n\t\t\t\tstyle = \"width:\" + (width) + \"px;height:\" + height + \"px;\" + position;\r\n\t\t\t\tcssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\r\n\r\n\t\t\t\ttemplate = css.call(this, date);\r\n\t\t\t\tif (template) cssclass += \" \" + template;\r\n\r\n\t\t\t\tvar ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\r\n\t\t\t\tvar cell = \"
\" + value + \"
\";\r\n\t\t\t\tcells.push(cell);\r\n\t\t\t} else {\r\n\t\t\t\t//do not render ignored cells\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn cells.join(\"\");\r\n\t},\r\n\tdateFromPos: function dateFromPos(x) {\r\n\t\tvar scale = this._tasks;\r\n\t\tif (x < 0 || x > scale.full_width || !scale.full_width) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar ind = _findBinary(this._tasks.left, x);\r\n\t\tvar summ = this._tasks.left[ind];\r\n\r\n\t\tvar col_width = scale.width[ind] || scale.col_width;\r\n\t\tvar part = 0;\r\n\t\tif (col_width) {\r\n\t\t\tpart = (x - summ) / col_width;\r\n\t\t\tif(scale.rtl){\r\n\t\t\t\tpart = 1 - part;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tvar unit = 0;\r\n\t\tif (part) {\r\n\t\t\tunit = this._getColumnDuration(scale, scale.trace_x[ind]);\r\n\t\t}\r\n\r\n\t\tvar date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\r\n\t\treturn date;\r\n\t},\r\n\tposFromDate: function posFromDate(date) {\r\n\t\tif (!this.isVisible())\r\n\t\t\treturn 0;\r\n\r\n\t\tif(!date){\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar dateValue = String(date.valueOf());\r\n\r\n\t\tif(this._posFromDateCache[dateValue] !== undefined){\r\n\t\t\treturn this._posFromDateCache[dateValue];\r\n\t\t}\r\n\t\tvar ind = this.columnIndexByDate(date);\r\n\t\tthis.$gantt.assert(ind >= 0, \"Invalid day index\");\r\n\r\n\t\tvar wholeCells = Math.floor(ind);\r\n\t\tvar partCell = ind % 1;\r\n\r\n\t\tvar pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\r\n\t\tif (wholeCells == this._tasks.width.length)\r\n\t\t\tpos += this._tasks.width[this._tasks.width.length - 1];\r\n\t\t//for(var i=1; i <= wholeCells; i++)\r\n\t\t//\tpos += gantt._tasks.width[i-1];\r\n\r\n\t\tif (partCell) {\r\n\t\t\tif (wholeCells < this._tasks.width.length) {\r\n\t\t\t\tpos += this._tasks.width[wholeCells] * (partCell % 1);\r\n\t\t\t} else {\r\n\t\t\t\tpos += 1;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tvar roundPos = Math.round(pos);\r\n\t\tthis._posFromDateCache[dateValue] = roundPos;\r\n\t\treturn Math.round(roundPos);\r\n\t},\r\n\r\n\t_getNextVisibleColumn: function (startIndex, columns, ignores) {\r\n\t\t// iterate columns to the right\r\n\t\tvar date = +columns[startIndex];\r\n\t\tvar visibleDateIndex = startIndex;\r\n\t\twhile (ignores[date]) {\r\n\t\t\tvisibleDateIndex++;\r\n\t\t\tdate = +columns[visibleDateIndex];\r\n\t\t}\r\n\r\n\t\treturn visibleDateIndex;\r\n\t},\r\n\t_getPrevVisibleColumn: function (startIndex, columns, ignores) {\r\n\t\t// iterate columns to the left\r\n\t\tvar date = +columns[startIndex];\r\n\t\tvar visibleDateIndex = startIndex;\r\n\t\twhile (ignores[date]) {\r\n\t\t\tvisibleDateIndex--;\r\n\t\t\tdate = +columns[visibleDateIndex];\r\n\t\t}\r\n\t\treturn visibleDateIndex;\r\n\t},\r\n\t_getClosestVisibleColumn: function (startIndex, columns, ignores) {\r\n\t\tvar visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\r\n\t\tif (!columns[visibleDateIndex]) {\r\n\t\t\tvisibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\r\n\t\t}\r\n\t\treturn visibleDateIndex;\r\n\t},\r\n\tcolumnIndexByDate: function columnIndexByDate(date) {\r\n\t\tvar pos = new Date(date).valueOf();\r\n\t\tvar days = this._tasks.trace_x_ascending,\r\n\t\t\tignores = this._tasks.ignore_x;\r\n\r\n\t\tvar state = this.$gantt.getState();\r\n\r\n\t\tif (pos <= state.min_date) {\r\n\t\t\tif(this._tasks.rtl){\r\n\t\t\t\treturn days.length;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (pos >= state.max_date) {\r\n\t\t\tif(this._tasks.rtl){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn days.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dateIndex = _findBinary(days, pos);\r\n\r\n\t\tvar visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\r\n\t\tvar visibleDate = days[visibleIndex];\r\n\t\tvar transition = this._tasks.trace_index_transition;\r\n\r\n\t\tif(!visibleDate){\r\n\t\t\tif(transition){\r\n\t\t\t\treturn transition[0];\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar part = ((date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]));\r\n\t\tif(transition){\r\n\t\t\treturn transition[visibleIndex] + (1 - part);\r\n\t\t}else{\r\n\t\t\treturn visibleIndex + part;\r\n\t\t}\r\n\t},\r\n\tgetItemPosition:function (task, start_date, end_date) {\r\n\t\tvar xLeft, xRight, width;\r\n\t\tif(this._tasks.rtl){\r\n\t\t\txRight = this.posFromDate(start_date || task.start_date);\r\n\t\t\txLeft = this.posFromDate(end_date || task.end_date);\r\n\t\t}else{\r\n\t\t\txLeft = this.posFromDate(start_date || task.start_date);\r\n\t\t\txRight = this.posFromDate(end_date || task.end_date);\r\n\t\t}\r\n\t\twidth = Math.max((xRight - xLeft), 0);\r\n\r\n\t\tvar y = this.getItemTop(task.id);\r\n\t\tvar height = this.getItemHeight();\r\n\t\treturn {\r\n\t\t\tleft: xLeft,\r\n\t\t\ttop: y,\r\n\t\t\theight: height,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\tgetItemHeight: function(){\r\n\t\tvar config = this.$getConfig();\r\n\r\n\t\t// height of the bar item\r\n\t\tvar height = config.task_height;\r\n\r\n\t\tif (height == \"full\") {\r\n\t\t\tvar offset = config.task_height_offset || 5;\r\n\t\t\theight = config.row_height - offset;\r\n\t\t}\r\n\t\t//item height cannot be bigger than row height\r\n\t\theight = Math.min(height, config.row_height);\r\n\t\treturn Math.max(height, 0);\r\n\t},\r\n\r\n\tgetScale: function(){\r\n\t\treturn this._tasks;\r\n\t},\r\n\r\n\t_getScales: function _get_scales() {\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar helpers = this.$scaleHelper;\r\n\t\tvar scales = [helpers.primaryScale(config)].concat(helpers.getSubScales(config));\r\n\r\n\t\thelpers.sortScales(scales);\r\n\t\treturn scales;\r\n\t},\r\n\r\n\t_getColumnDuration: function _get_coll_duration(scale, date) {\r\n\t\treturn this.$gantt.date.add(date, scale.step, scale.unit) - date;\r\n\t},\r\n\t_bindStore: function () {\r\n\t\tif (this.$config.bind){\r\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\r\n\t\t\tthis.$config.rowStore = rowStore;\r\n\t\t\tif(rowStore && !rowStore._timelineCacheAttached){\r\n\t\t\t\tvar self = this;\r\n\t\t\t\trowStore._timelineCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function(){\r\n\t\t\t\t\tself._resetTopPositionHeight();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_unbindStore: function(){\r\n\t\tif (this.$config.bind){\r\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\r\n\t\t\tif(rowStore._timelineCacheAttached){\r\n\t\t\t\trowStore.detachEvent(rowStore._timelineCacheAttached);\r\n\t\t\t\trowStore._timelineCacheAttached = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\trefresh: function(){\r\n\t\tthis._bindStore();\r\n\r\n\t\tif(this.$config.bindLinks) {\r\n\t\t\tthis.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\r\n\t\t}\r\n\r\n\t\tthis._resetTopPositionHeight();\r\n\t\tthis._initStaticBackgroundRender();\r\n\t\tthis._render_tasks_scales();\r\n\t},\r\n\r\n\tdestructor: function(){\r\n\t\tvar gantt = this.$gantt;\r\n\t\tthis._clearLayers(gantt);\r\n\t\tthis._unbindStore();\r\n\t\tthis.$task = null;\r\n\t\tthis.$task_scale = null;\r\n\t\tthis.$task_data = null;\r\n\t\tthis.$task_bg = null;\r\n\t\tthis.$task_links = null;\r\n\t\tthis.$task_bars = null;\r\n\r\n\t\tthis.$gantt = null;\r\n\r\n\t\tif(this.$config.rowStore){\r\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\r\n\t\t\tthis.$config.rowStore = null;\r\n\t\t}\r\n\t\tif(this.$config.linkStore){\r\n\t\t\tthis.$config.linkStore = null;\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t}\r\n};\r\n\r\nmodule.exports = Timeline;\r\n\r\nfunction _findBinary(array, target) {\r\n\t// modified binary search, target value not exactly match array elements, looking for closest one\r\n\r\n\tvar low = 0, high = array.length - 1, i, item, prev;\r\n\twhile (low <= high) {\r\n\r\n\t\ti = Math.floor((low + high) / 2);\r\n\t\titem = +array[i];\r\n\t\tprev = +array[i - 1];\r\n\t\tif (item < target) {\r\n\t\t\tlow = i + 1;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif (item > target) {\r\n\t\t\tif (!(!isNaN(prev) && prev < target)) {\r\n\t\t\t\thigh = i - 1;\r\n\t\t\t\tcontinue;\r\n\t\t\t} else {\r\n\t\t\t\t// if target is between 'i' and 'i-1' return 'i - 1'\r\n\t\t\t\treturn i - 1;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\twhile (+array[i] == +array[i + 1]) i++;\r\n\r\n\t\treturn i;\r\n\t}\r\n\treturn array.length - 1;\r\n}\r\n\r\n","module.exports = function(gantt){\r\n\treturn gantt.config.smart_rendering && gantt._smart_render;\r\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 utils = require(\"./utils\");\r\n\r\nfunction createScope(addEvent, removeEvent) {\r\n\taddEvent = addEvent || utils.event;\r\n\tremoveEvent = removeEvent || utils.eventRemove;\r\n\r\n\tvar handlers = [];\r\n\r\n\tvar eventScope = {\r\n\t\tattach: function(el, event, callback, capture){\r\n\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\taddEvent(el, event, callback, capture);\r\n\t\t},\r\n\t\tdetach: function(el, event, callback, capture){\r\n\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdetachAll: function () {\r\n\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t}\r\n\t\t\thandlers.splice(0, handlers.length);\r\n\t\t},\r\n\t\textend: function(){\r\n\t\t\treturn createScope(this.event, this.eventRemove);\r\n\t\t}\r\n\t};\r\n\r\n\tif (!window.scopes) {\r\n\t\twindow.scopes = [];\r\n\t}\r\n\twindow.scopes.push(handlers);\r\n\treturn eventScope;\r\n}\r\n\r\nmodule.exports = createScope;","var helpers = require(\"./helpers\");\r\n\r\nvar htmlHelpers = {\r\n\tgetHtmlSelect: function(options, attributes, value) {\r\n\t\tvar innerHTML = \"\";\r\n\t\tvar _this = this;\r\n\r\n\t\toptions = options || [];\r\n\t\t\r\n\t\thelpers.forEach(options, function(entry) {\r\n\t\t\tvar _attributes = [{ key: \"value\", value: entry.key }];\r\n\r\n\t\t\tif (value == entry.key) {\r\n\t\t\t\t_attributes[_attributes.length] = { key: \"selected\", value: \"selected\" };\r\n\t\t\t}\r\n\t\t\tif (entry.attributes) {\r\n\t\t\t\t_attributes = _attributes.concat(entry.attributes);\r\n\t\t\t}\r\n\t\t\tinnerHTML += _this.getHtmlOption({ innerHTML: entry.label }, _attributes);\r\n\t\t});\r\n\r\n\t\treturn _getHtmlContainer(\"select\", { innerHTML: innerHTML }, attributes);\r\n\t},\r\n\tgetHtmlOption: function(options, attributes) { return _getHtmlContainer(\"option\", options, attributes); },\r\n\tgetHtmlButton: function(options, attributes) { return _getHtmlContainer(\"button\", options, attributes); },\r\n\tgetHtmlDiv: function(options, attributes) { return _getHtmlContainer(\"div\", options, attributes); },\r\n\tgetHtmlLabel: function(options, attributes) { return _getHtmlContainer(\"label\", options, attributes); },\r\n\tgetHtmlInput: function(attributes) {\r\n\t\treturn \"\";\r\n\t}\r\n};\r\n\r\nfunction _getHtmlContainer(tag, options, attributes) {\r\n\tvar html;\r\n\r\n\toptions = options || [];\r\n\t\r\n\thtml = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"\";\r\n\treturn html;\r\n\r\n}\r\n\r\nfunction _getHtmlAttributes(attributes) {\r\n\tvar html = \"\";\r\n\r\n\thelpers.forEach(attributes, function(entry) {\r\n\t\thtml += \" \" + entry.key + \"='\" + entry.value + \"'\";\r\n\t});\r\n\treturn html;\r\n}\r\n\r\nmodule.exports = htmlHelpers;","var utils = require(\"../../utils/utils\");\r\nvar helpers = require(\"../../utils/helpers\");\r\n\r\n\r\nfunction IsWorkTimeArgument(date, unit, task, id, calendar){\r\n\tthis.date = date;\r\n\tthis.unit = unit;\r\n\tthis.task = task;\r\n\tthis.id = id;\r\n\tthis.calendar = calendar;\r\n\treturn this;\r\n}\r\n\r\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar){\r\n\tthis.date = date;\r\n\tthis.dir = dir;\r\n\tthis.unit = unit;\r\n\tthis.task = task;\r\n\tthis.id = id;\r\n\tthis.calendar = calendar;\r\n\treturn this;\r\n}\r\n\r\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar){\r\n\tthis.start_date = start_date;\r\n\tthis.duration = duration;\r\n\tthis.unit = unit;\r\n\tthis.step = step;\r\n\tthis.task = task;\r\n\tthis.id = id;\r\n\tthis.calendar = calendar;\r\n\treturn this;\r\n}\r\n\r\nfunction GetDurationArgument(start, end, task, calendar) {\r\n\tthis.start_date = start;\r\n\tthis.end_date = end;\r\n\tthis.task = task;\r\n\tthis.calendar = calendar;\r\n\tthis.unit = null;\r\n\tthis.step = null;\r\n\treturn this;\r\n}\r\n\r\nvar calendarArgumentsHelper = function(gantt){\r\n\treturn {\r\n\t\tgetWorkHoursArguments: function () {\r\n\t\t\tvar config = arguments[0];\r\n\t\t\tif (helpers.isDate(config)) {\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tdate: config\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tconfig = utils.mixin({}, config);\r\n\t\t\t}\r\n\t\t\treturn config;\r\n\t\t},\r\n\t\tsetWorkTimeArguments: function () {\r\n\t\t\treturn arguments[0];\r\n\t\t},\r\n\t\tunsetWorkTimeArguments: function () {\r\n\t\t\treturn arguments[0];\r\n\t\t},\r\n\t\tisWorkTimeArguments: function () {\r\n\t\t\tvar config = arguments[0];\r\n\t\t\tif(config instanceof IsWorkTimeArgument){\r\n\t\t\t\treturn config;\r\n\t\t\t}\r\n\r\n\t\t\tvar processedConfig;\r\n\t\t\tif (!config.date) {\r\n\t\t\t\t//IsWorkTimeArgument(date, unit, task, id, calendar)\r\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\r\n\t\t\t} else {\r\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\r\n\t\t\t}\r\n\r\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\r\n\r\n\t\t\treturn processedConfig;\r\n\t\t},\r\n\t\tgetClosestWorkTimeArguments: function (arg) {\r\n\t\t\tvar config = arguments[0];\r\n\t\t\tif (config instanceof ClosestWorkTimeArgument)\r\n\t\t\t\treturn config;\r\n\r\n\t\t\tvar processedConfig;\r\n\t\t\tif (helpers.isDate(config)) {\r\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(config);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(\r\n\t\t\t\t\tconfig.date,\r\n\t\t\t\t\tconfig.dir,\r\n\t\t\t\t\tconfig.unit,\r\n\t\t\t\t\tconfig.task,\r\n\t\t\t\t\tnull,//config.id,\r\n\t\t\t\t\tconfig.calendar\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(config.id){\r\n\t\t\t\tprocessedConfig.task = config;\r\n\t\t\t}\r\n\t\t\tprocessedConfig.dir = config.dir || 'any';\r\n\t\t\tprocessedConfig.unit = config.unit || gantt.config.duration_unit;\r\n\r\n\t\t\treturn processedConfig;\r\n\t\t},\r\n\r\n\t\t_getStartEndConfig: function (param) {\r\n\t\t\tvar argumentType = GetDurationArgument;\r\n\t\t\tvar config;\r\n\t\t\tif (param instanceof argumentType)\r\n\t\t\t\treturn param;\r\n\r\n\t\t\tif (helpers.isDate(param)) {\r\n\t\t\t\tconfig = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\r\n\t\t\t} else {\r\n\t\t\t\tconfig = new argumentType(param.start_date, param.end_date, param.task);\r\n\t\t\t\tif (param.id) {\r\n\t\t\t\t\tconfig.task = param;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconfig.unit = config.unit || gantt.config.duration_unit;\r\n\t\t\tconfig.step = config.step || gantt.config.duration_step;\r\n\t\t\tconfig.start_date = config.start_date || config.start || config.date;\r\n\r\n\t\t\treturn config;\r\n\t\t},\r\n\r\n\t\tgetDurationArguments: function (start, end, unit, step) {\r\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\r\n\t\t},\r\n\r\n\t\thasDurationArguments: function (start, end, unit, step) {\r\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\r\n\t\t},\r\n\r\n\t\tcalculateEndDateArguments: function (start, duration, unit, step) {\r\n\t\t\tvar config = arguments[0];\r\n\t\t\tif (config instanceof CalculateEndDateArgument)\r\n\t\t\t\treturn config;\r\n\r\n\t\t\tvar processedConfig;\r\n\t\t\t//CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\r\n\t\t\tif (helpers.isDate(config)) {\r\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\r\n\t\t\t\t\targuments[0],\r\n\t\t\t\t\targuments[1],\r\n\t\t\t\t\targuments[2],\r\n\t\t\t\t\tundefined,\r\n\t\t\t\t\targuments[3],\r\n\t\t\t\t\tundefined,\r\n\t\t\t\t\targuments[4]\r\n\t\t\t\t);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\r\n\t\t\t\t\tconfig.start_date,\r\n\t\t\t\t\tconfig.duration,\r\n\t\t\t\t\tconfig.unit,\r\n\t\t\t\t\tconfig.step,\r\n\t\t\t\t\tconfig.task,\r\n\t\t\t\t\tnull,//config.id,\r\n\t\t\t\t\tconfig.calendar\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(config.id){\r\n\t\t\t\tprocessedConfig.task = config;\r\n\t\t\t}\r\n\r\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\r\n\t\t\tprocessedConfig.step = processedConfig.step || gantt.config.duration_step;\r\n\r\n\t\t\treturn processedConfig;\r\n\t\t}\r\n\t};\r\n};\r\n\r\n\r\nmodule.exports = calendarArgumentsHelper;","function copyLinkIdsArray(gantt, linkIds, targetHash){\r\n\tfor(var i = 0; i < linkIds.length; i++) {\r\n\t\tif(gantt.isLinkExists(linkIds[i])){\r\n\t\t\ttargetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction copyLinkIds(gantt, task, targetHash){\r\n\tcopyLinkIdsArray(gantt, task.$source, targetHash);\r\n\tcopyLinkIdsArray(gantt, task.$target, targetHash);\r\n}\r\n\r\nfunction getSubtreeLinks(gantt, rootId){\r\n\tvar res = {};\r\n\r\n\tif(gantt.isTaskExists(rootId)){\r\n\t\tcopyLinkIds(gantt, gantt.getTask(rootId), res);\r\n\t}\r\n\r\n\tgantt.eachTask(function(child){\r\n\t\tcopyLinkIds(gantt, child, res);\r\n\t}, rootId);\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction getSubtreeTasks(gantt, rootId){\r\n\tvar res = {};\r\n\r\n\tgantt.eachTask(function(child){\r\n\t\tres[child.id] = child;\r\n\t}, rootId);\r\n\r\n\treturn res;\r\n}\r\n\r\nmodule.exports = {\r\n\tgetSubtreeLinks: getSubtreeLinks,\r\n\tgetSubtreeTasks: getSubtreeTasks\r\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\r\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\r\n\r\n\r\nfunction dateRangeResolver(gantt){\r\n\t//reset project timing\r\n\t//_get_tasks_data(gantt);\r\n\treturn gantt.getSubtaskDates();\r\n}\r\n\r\nfunction defaultRangeResolver(){\r\n\treturn {\r\n\t\tstart_date: new Date(),\r\n\t\tend_date: new Date()\r\n\t};\r\n}\r\n\r\nfunction resolveConfigRange(unit, gantt){\r\n\tvar range = {\r\n\t\tstart_date:null,\r\n\t\tend_date:null\r\n\t};\r\n\r\n\tif (gantt.config.start_date && gantt.config.end_date) {\r\n\t\trange.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\r\n\r\n\t\tvar end = new Date(gantt.config.end_date);\r\n\t\tvar start_interval = gantt.date[unit + \"_start\"](new Date(end));\r\n\t\tif (+end != +start_interval) {\r\n\t\t\tend = gantt.date.add(start_interval, 1, unit);\r\n\t\t} else {\r\n\t\t\tend = start_interval;\r\n\t\t}\r\n\r\n\t\trange.end_date = end;\r\n\t}\r\n\treturn range;\r\n}\r\n\r\nfunction _scale_range_unit(gantt) {\r\n\tvar primaryScale = (new PrimaryScaleHelper(gantt)).primaryScale();\r\n\tvar unit = primaryScale.unit;\r\n\tvar step = primaryScale.step;\r\n\tif (gantt.config.scale_offset_minimal) {\r\n\r\n\t\tvar helper = new ScaleHelper(gantt);\r\n\t\tvar scales = [helper.primaryScale()].concat(helper.getSubScales());\r\n\r\n\t\thelper.sortScales(scales);\r\n\t\tunit = scales[scales.length - 1].unit;\r\n\t\tstep = scales[scales.length - 1].step || 1;\r\n\t}\r\n\treturn { unit:unit, step:step };\r\n}\r\n\r\nfunction _init_tasks_range(gantt) {\r\n\tvar cfg = _scale_range_unit(gantt);\r\n\tvar unit = cfg.unit,\r\n\t\tstep = cfg.step;\r\n\tvar range = resolveConfigRange(unit, gantt);\r\n\r\n\tif(!(range.start_date && range.end_date)){\r\n\t\trange = dateRangeResolver(gantt);\r\n\t\tif(!range.start_date || !range.end_date){\r\n\t\t\trange = defaultRangeResolver(gantt);\r\n\t\t}\r\n\r\n\t\trange.start_date = gantt.date[unit + \"_start\"](range.start_date);\r\n\t\trange.start_date = gantt.calculateEndDate({\r\n\t\t\tstart_date: gantt.date[unit + \"_start\"](range.start_date),\r\n\t\t\tduration: -1,\r\n\t\t\tunit: unit,\r\n\t\t\tstep:step\r\n\t\t});//one free column before first task\r\n\r\n\t\trange.end_date = gantt.date[unit + \"_start\"](range.end_date);\r\n\t\trange.end_date = gantt.calculateEndDate({start_date: range.end_date, duration: 2, unit: unit, step:step});//one free column after last task\r\n\t}\r\n\r\n\tgantt._min_date = range.start_date;\r\n\tgantt._max_date = range.end_date;\r\n}\r\n\r\nfunction _adjust_scales(gantt) {\r\n\tif (gantt.config.fit_tasks) {\r\n\t\tvar old_min = +gantt._min_date,\r\n\t\t\told_max = +gantt._max_date;\r\n\t\t//this._init_tasks_range();\r\n\t\tif (+gantt._min_date != old_min || +gantt._max_date != old_max) {\r\n\t\t\tgantt.render();\r\n\r\n\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nmodule.exports = function updateTasksRange(gantt){\r\n\t_init_tasks_range(gantt);\r\n\t_adjust_scales(gantt);\r\n};\r\n","var utils = require(\"../../utils/utils\");\r\n\r\nvar $powerArray = {\r\n\t$create: function(array){\r\n\t\treturn utils.mixin(array || [], this);\r\n\t},\r\n\t//remove element at specified position\r\n\t$removeAt:function(pos,len){\r\n\t\tif (pos>=0) this.splice(pos,(len||1));\r\n\t},\r\n\t//find element in collection and remove it\r\n\t$remove:function(value){\r\n\t\tthis.$removeAt(this.$find(value));\r\n\t},\r\n\t//add element to collection at specific position\r\n\t$insertAt:function(data,pos){\r\n\t\tif (!pos && pos!==0) \t//add to the end by default\r\n\t\t\tthis.push(data);\r\n\t\telse {\r\n\t\t\tvar b = this.splice(pos,(this.length-pos));\r\n\t\t\tthis[pos] = data;\r\n\t\t\tthis.push.apply(this,b); //reconstruct array without loosing this pointer\r\n\t\t}\r\n\t},\r\n\t//return index of element, -1 if it doesn't exists\r\n\t$find:function(data){\r\n\t\tfor (var i=0; i data_size){\r\n\t\t\t\t//dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\r\n\t\t\t\tindex = Math.min(order.length,index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t//gantt.assert(!this.exists(id), \"Not unique ID\");\r\n\r\n\t\tthis.pull[item.id]=item;\r\n\t\tif (!this._skip_refresh){\r\n\t\t\tthis._updateOrder(function(){\r\n\t\t\t\tif(this.$find(item.id) === -1)\r\n\t\t\t\t\tthis.$insertAt(item.id,index);\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.filter();\r\n\t\t//order.$insertAt(item.id,index);\r\n\t},\r\n\r\n\r\n\tisVisible: function(id){\r\n\t\treturn this.visibleOrder.$find(id) > -1;\r\n\t},\r\n\tgetVisibleItems: function(){\r\n\t\treturn this.getIndexRange();\r\n\t},\r\n\r\n\taddItem: function(item, index){\r\n\t\tif (!utils.defined(item.id))\r\n\t\t\titem.id = utils.uid();\r\n\r\n\t\tif(this.$initItem){\r\n\t\t\titem = this.$initItem(item);\r\n\t\t}\r\n\r\n\t\tif (!this._skip_refresh){\r\n\t\t\tif (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\r\n\t\t}\r\n\r\n\r\n\t\tthis._addItemInner(item, index);\r\n\r\n\t\tif (!this._skip_refresh){\r\n\t\t\tthis.callEvent(\"onAfterAdd\",[item.id, item]);\r\n\t\t\t//repaint signal\r\n\t\t\tthis.callEvent(\"onStoreUpdated\",[item.id,item,\"add\"]);\r\n\t\t}\r\n\t\treturn item.id;\r\n\t},\r\n\r\n\t_changeIdInner: function(oldId, newId){\r\n\t\tif(this.pull[oldId])\r\n\t\t\tthis.pull[newId] = this.pull[oldId];\r\n\r\n\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\r\n\t\tthis.pull[newId].id = newId;\r\n\t\tthis._updateOrder(function(){\r\n\t\t\tthis[this.$find(oldId)] = newId;\r\n\t\t});\r\n\t\tthis._searchVisibleOrder[newId] = visibleOrder;\r\n\t\tdelete this._searchVisibleOrder[oldId];\r\n\r\n\t\t//this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\r\n\t\tdelete this.pull[oldId];\r\n\t},\r\n\tchangeId: function(oldId, newId){\r\n\t\tthis._changeIdInner(oldId, newId);\r\n\r\n\t\tthis.callEvent(\"onIdChange\", [oldId, newId]);\r\n\r\n\t},\r\n\texists: function(id){\r\n\t\treturn !!(this.pull[id]);\r\n\t},\r\n\r\n\t_moveInner: function(sindex, tindex){\r\n\t\tvar id = this.getIdByIndex(sindex);\r\n\r\n\t\tthis._updateOrder(function(){\r\n\t\t\tthis.$removeAt(sindex);\r\n\t\t\tthis.$insertAt(id,Math.min(this.length, tindex));\r\n\t\t});\r\n\t\t//this.visibleOrder.$removeAt(sindex);\t//remove at old position\r\n\t\t//if (sindex=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\r\n\r\n\t\tvar id = this.getIdByIndex(sindex);\r\n\t\tvar obj = this.getItem(id);\r\n\t\tthis._moveInner(sindex, tindex);\r\n\r\n\r\n\t\tif (!this._skip_refresh) {\r\n\t\t\t//repaint signal\r\n\t\t\tthis.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\r\n\t\t}\r\n\t},\r\n\tclearAll: function(){\r\n\t\tthis.pull = {};\r\n\t\tthis.visibleOrder = powerArray.$create();\r\n\t\tthis.fullOrder = powerArray.$create();\r\n\t\tif (this._skip_refresh) return;\r\n\t\tthis.callEvent(\"onClearAll\",[]);\r\n\t\tthis.refresh();\r\n\t},\r\n\r\n\tsilent:function(code, master){\r\n\t\tthis._skip_refresh = true;\r\n\t\tcode.call(master||this);\r\n\t\tthis._skip_refresh = false;\r\n\t},\r\n\r\n\tarraysEqual: function (arr1, arr2) {\r\n\t\tif(arr1.length !== arr2.length)\r\n\t\t\treturn false;\r\n\t\tfor(var i = 0; i < arr1.length; i++) {\r\n\t\t\tif(arr1[i] !== arr2[i])\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\trefresh: function(id, quick){\r\n\t\tif (this._skip_refresh) return;\r\n\r\n\t\tvar args;\r\n\t\tif (id){\r\n\t\t\targs = [id, this.pull[id], \"paint\"];\r\n\t\t}else{\r\n\t\t\targs = [null,null,null];\r\n\t\t}\r\n\r\n\t\tif(this.callEvent(\"onBeforeStoreUpdate\", args) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(id){\r\n\t\t\t// if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\r\n\t\t\tif(!quick){\r\n\t\t\t\tvar oldOrder = this.visibleOrder;\r\n\t\t\t\tthis.filter();\r\n\t\t\t\tif(!this.arraysEqual(oldOrder, this.visibleOrder)){\r\n\t\t\t\t\tid = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.filter();\r\n\t\t}\r\n\r\n\t\tif (id){\r\n\t\t\targs = [id, this.pull[id], \"paint\"];\r\n\t\t}else{\r\n\t\t\targs = [null,null,null];\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onStoreUpdated\",args);\r\n\t},\r\n\r\n\tcount: function(){\r\n\t\treturn this.fullOrder.length;\r\n\t},\r\n\tcountVisible: function(){\r\n\t\treturn this.visibleOrder.length;\r\n\t},\r\n\r\n\tsort: function(sort){},\r\n\r\n\tserialize: function(){},\r\n\r\n\teachItem: function(code){\r\n\t\tfor (var i=0; i 1) {\r\n\t\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\r\n\t\t\tpadd += 1;\r\n\t\t}\r\n\r\n\t\tif (taskType == cfg.types.milestone){\r\n\t\t\tpos.left -= Math.round(height / 2);\r\n\t\t\tpos.width = height;\r\n\t\t}\r\n\r\n\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\tvar width = Math.round(pos.width);\r\n\r\n\t\tif(view.$config.item_attribute){\r\n\t\t\tdiv.setAttribute(view.$config.item_attribute, task.id);\r\n\t\t}\r\n\r\n\t\tif (cfg.show_progress && taskType != cfg.types.milestone) {\r\n\t\t\t_render_task_progress(task, div, width, cfg, templates);\r\n\t\t}\r\n\r\n\t\t//use separate div to display content above progress bar\r\n\t\tvar content = _render_task_content(task, width, templates);\r\n\t\tif (task.textColor) {\r\n\t\t\tcontent.style.color = task.textColor;\r\n\t\t}\r\n\t\tdiv.appendChild(content);\r\n\r\n\t\tvar css = _combine_item_class(\"gantt_task_line\",\r\n\t\t\ttemplates.task_class(task.start_date, task.end_date, task),\r\n\t\t\ttask.id,\r\n\t\t\tview);\r\n\t\tif (task.color || task.progressColor || task.textColor) {\r\n\t\t\tcss += \" gantt_task_inline_color\";\r\n\t\t}\r\n\t\tdiv.className = css;\r\n\r\n\t\tvar styles = [\r\n\t\t\t\"left:\" + pos.left + \"px\",\r\n\t\t\t\"top:\" + (padd + pos.top) + 'px',\r\n\t\t\t\"height:\" + height + 'px',\r\n\t\t\t\"line-height:\" + (Math.max(height < 30 ? height - 2 : height, 0)) + 'px',\r\n\t\t\t\"width:\" + width + 'px'\r\n\t\t];\r\n\t\tif (task.color) {\r\n\t\t\tstyles.push(\"background-color:\" + task.color);\r\n\t\t}\r\n\t\tif (task.textColor) {\r\n\t\t\tstyles.push(\"color:\" + task.textColor);\r\n\t\t}\r\n\r\n\t\tdiv.style.cssText = styles.join(\";\");\r\n\t\tvar side = _render_leftside_content(task, cfg, templates);\r\n\t\tif (side) div.appendChild(side);\r\n\r\n\t\tside = _render_rightside_content(task, cfg, templates);\r\n\t\tif (side) div.appendChild(side);\r\n\r\n\t\tgantt._waiAria.setTaskBarAttr(task, div);\r\n\r\n\t\tvar state = gantt.getState();\r\n\r\n\t\tif (!gantt.isReadonly(task)) {\r\n\t\t\tif (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\r\n\t\t\t\t_render_pair(div, \"gantt_task_drag\", task, function (css) {\r\n\t\t\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\t\t\tel.className = css;\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}, cfg);\r\n\t\t\t}\r\n\t\t\tif (cfg.drag_links && cfg.show_links) {\r\n\t\t\t\t_render_pair(div, \"gantt_link_control\", task, function (css) {\r\n\t\t\t\t\tvar outer = document.createElement(\"div\");\r\n\t\t\t\t\touter.className = css;\r\n\t\t\t\t\touter.style.cssText = [\r\n\t\t\t\t\t\t\"height:\" + height + 'px',\r\n\t\t\t\t\t\t\"line-height:\" + height + 'px'\r\n\t\t\t\t\t].join(\";\");\r\n\t\t\t\t\tvar inner = document.createElement(\"div\");\r\n\t\t\t\t\tinner.className = \"gantt_link_point\";\r\n\r\n\t\t\t\t\tvar showLinkPoints = false;\r\n\t\t\t\t\tif(state.link_source_id && cfg.touch){\r\n\t\t\t\t\t\tshowLinkPoints = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinner.style.display = showLinkPoints ? \"block\" : \"\";\r\n\t\t\t\t\touter.appendChild(inner);\r\n\t\t\t\t\treturn outer;\r\n\t\t\t\t}, cfg);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn div;\r\n\t}\r\n\r\n\tfunction _render_side_content(task, template, cssClass) {\r\n\t\tif (!template) return null;\r\n\r\n\t\tvar text = template(task.start_date, task.end_date, task);\r\n\t\tif (!text) return null;\r\n\t\tvar content = document.createElement(\"div\");\r\n\t\tcontent.className = \"gantt_side_content \" + cssClass;\r\n\t\tcontent.innerHTML = text;\r\n\t\treturn content;\r\n\t}\r\n\r\n\tfunction _render_leftside_content(task, cfg, templates) {\r\n\t\tvar css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\r\n\t\treturn _render_side_content(task, templates.leftside_text, css);\r\n\t}\r\n\r\n\tfunction _render_rightside_content(task, cfg, templates) {\r\n\t\tvar css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\r\n\t\treturn _render_side_content(task, templates.rightside_text, css);\r\n\t}\r\n\r\n\tfunction _get_link_crossing_css(left, task) {\r\n\t\tvar cond = _get_conditions(left);\r\n\r\n\t\tfor (var i in cond) {\r\n\t\t\tvar links = task[i];\r\n\t\t\tfor (var ln = 0; ln < links.length; ln++) {\r\n\t\t\t\tvar link = gantt.getLink(links[ln]);\r\n\r\n\t\t\t\tfor (var tp = 0; tp < cond[i].length; tp++) {\r\n\t\t\t\t\tif (link.type == cond[i][tp]) {\r\n\t\t\t\t\t\treturn \"gantt_link_crossing\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\r\n\tfunction _render_task_content(task, width, templates) {\r\n\t\tvar content = document.createElement(\"div\");\r\n\t\tif (gantt.getTaskType(task.type) != gantt.config.types.milestone)\r\n\t\t\tcontent.innerHTML = templates.task_text(task.start_date, task.end_date, task);\r\n\t\tcontent.className = \"gantt_task_content\";\r\n\t\t//content.style.width = width + 'px';\r\n\t\treturn content;\r\n\t}\r\n\r\n\tfunction _render_task_progress(task, element, maxWidth, cfg, templates) {\r\n\t\tvar done = task.progress * 1 || 0;\r\n\r\n\t\tmaxWidth = Math.max(maxWidth - 2, 0);//2px for borders\r\n\t\tvar pr = document.createElement(\"div\");\r\n\t\tvar width = Math.round(maxWidth * done);\r\n\r\n\t\twidth = Math.min(maxWidth, width);\r\n\t\tif (task.progressColor) {\r\n\t\t\tpr.style.backgroundColor = task.progressColor;\r\n\t\t\tpr.style.opacity = 1;\r\n\t\t}\r\n\t\tpr.style.width = width + 'px';\r\n\t\tpr.className = \"gantt_task_progress\";\r\n\t\tpr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\r\n\r\n\t\tif(cfg.rtl){\r\n\t\t\tpr.style.position = \"absolute\";\r\n\t\t\tpr.style.right = \"0px\";\r\n\t\t}\r\n\r\n\t\tvar wrapper = document.createElement(\"div\");\r\n\t\twrapper.className = \"gantt_task_progress_wrapper\";\r\n\t\twrapper.appendChild(pr);\r\n\t\telement.appendChild(wrapper);\r\n\r\n\t\tif (gantt.config.drag_progress && !gantt.isReadonly(task)) {\r\n\t\t\tvar drag = document.createElement(\"div\");\r\n\r\n\t\t\tvar markerPos = width;\r\n\t\t\tif(cfg.rtl){\r\n\t\t\t\tmarkerPos = maxWidth - width;\r\n\t\t\t}\r\n\r\n\t\t\tdrag.style.left = markerPos + 'px';\r\n\t\t\tdrag.className = \"gantt_task_progress_drag\";\r\n\t\t\tpr.appendChild(drag);\r\n\t\t\telement.appendChild(drag);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _get_conditions(leftside) {\r\n\t\tif (leftside) {\r\n\t\t\treturn {\r\n\t\t\t\t$source: [\r\n\t\t\t\t\tgantt.config.links.start_to_start\r\n\t\t\t\t],\r\n\t\t\t\t$target: [\r\n\t\t\t\t\tgantt.config.links.start_to_start,\r\n\t\t\t\t\tgantt.config.links.finish_to_start\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\t$source: [\r\n\t\t\t\t\tgantt.config.links.finish_to_start,\r\n\t\t\t\t\tgantt.config.links.finish_to_finish\r\n\t\t\t\t],\r\n\t\t\t\t$target: [\r\n\t\t\t\t\tgantt.config.links.finish_to_finish\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _combine_item_class(basic, template, itemId, view) {\r\n\t\tvar cfg = view.$getConfig();\r\n\t\tvar css = [basic];\r\n\t\tif (template)\r\n\t\t\tcss.push(template);\r\n\r\n\t\tvar state = gantt.getState();\r\n\r\n\t\tvar task = gantt.getTask(itemId);\r\n\r\n\t\tif (gantt.getTaskType(task.type) == cfg.types.milestone) {\r\n\t\t\tcss.push(\"gantt_milestone\");\r\n\t\t}else if (gantt.getTaskType(task.type) == cfg.types.project) {\r\n\t\t\tcss.push(\"gantt_project\");\r\n\t\t}\r\n\r\n\t\tcss.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\r\n\r\n\r\n\t\tif (gantt.isSummaryTask(task))\r\n\t\t\tcss.push(\"gantt_dependent_task\");\r\n\r\n\t\tif (gantt.isSplitTask(task) && ((cfg.open_split_tasks && !task.$open) || !cfg.open_split_tasks)) {\r\n\t\t\tcss.push(\"gantt_split_parent\");\r\n\t\t}\r\n\r\n\t\tif (cfg.select_task && gantt.isSelectedTask(itemId)) {\r\n\t\t\tcss.push(\"gantt_selected\");\r\n\t\t}\r\n\r\n\t\tif (itemId == state.drag_id) {\r\n\t\t\tcss.push(\"gantt_drag_\" + state.drag_mode);\r\n\t\t\tif (state.touch_drag) {\r\n\t\t\t\tcss.push(\"gantt_touch_\" + state.drag_mode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (state.link_source_id == itemId)\r\n\t\t\tcss.push(\"gantt_link_source\");\r\n\r\n\t\tif (state.link_target_id == itemId)\r\n\t\t\tcss.push(\"gantt_link_target\");\r\n\r\n\r\n\t\tif (cfg.highlight_critical_path && gantt.isCriticalTask) {\r\n\t\t\tif (gantt.isCriticalTask(task))\r\n\t\t\t\tcss.push(\"gantt_critical_task\");\r\n\t\t}\r\n\r\n\t\tif (state.link_landing_area &&\r\n\t\t\t(state.link_target_id && state.link_source_id) &&\r\n\t\t\t(state.link_target_id != state.link_source_id)) {\r\n\r\n\t\t\tvar from_id = state.link_source_id;\r\n\t\t\tvar from_start = state.link_from_start;\r\n\t\t\tvar to_start = state.link_to_start;\r\n\r\n\t\t\tvar allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\r\n\r\n\t\t\tvar dragClass = \"\";\r\n\t\t\tif (allowDrag) {\r\n\t\t\t\tif (to_start)\r\n\t\t\t\t\tdragClass = \"link_start_allow\";\r\n\t\t\t\telse\r\n\t\t\t\t\tdragClass = \"link_finish_allow\";\r\n\t\t\t} else {\r\n\t\t\t\tif (to_start)\r\n\t\t\t\t\tdragClass = \"link_start_deny\";\r\n\t\t\t\telse\r\n\t\t\t\t\tdragClass = \"link_finish_deny\";\r\n\t\t\t}\r\n\t\t\tcss.push(dragClass);\r\n\t\t}\r\n\t\treturn css.join(\" \");\r\n\t}\r\n\r\n\tfunction _render_pair(parent, css, task, content, config) {\r\n\t\tvar state = gantt.getState();\r\n\t\tvar className, element;\r\n\t\tif (+task.start_date >= +state.min_date) {\r\n\t\t\tclassName = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\r\n\t\t\telement = content(className.join(\" \"));\r\n\t\t\telement.setAttribute(\"data-bind-property\", \"start_date\");\r\n\t\t\tparent.appendChild(element);\r\n\t\t}\r\n\r\n\t\tif (+task.end_date <= +state.max_date){\r\n\t\t\tclassName = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\r\n\t\t\telement = content(className.join(\" \"));\r\n\t\t\telement.setAttribute(\"data-bind-property\", \"end_date\");\r\n\t\t\tparent.appendChild(element);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn _render_task_element;\r\n}\r\n\r\nmodule.exports = createTaskRenderer;","var domHelpers = require(\"../../../utils/dom_helpers\"),\r\n\tutils = require(\"../../../utils/utils\"),\r\n\teventable = require(\"../../../utils/eventable\"),\r\n\tgridResize = require(\"./grid_resize\"),\r\n\ttopPositionMixin = require(\"../row_position_mixin\");\r\n\r\nvar Grid = function (parent, config, factory, gantt) {\r\n\tthis.$config = utils.mixin({}, config || {});\r\n\tthis.$gantt = gantt;\r\n\tthis.$parent = parent;\r\n\teventable(this);\r\n\tthis.$state = {};\r\n\tutils.mixin(this, topPositionMixin());\r\n};\r\n\r\n\r\nGrid.prototype = {\r\n\tinit: function (container) {\r\n\t\tvar gantt = this.$gantt;\r\n\t\tvar gridAriaAttr = gantt._waiAria.gridAttrString();\r\n\t\tvar gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\r\n\r\n\r\n\t\tcontainer.innerHTML = \"
\";\r\n\t\tthis.$grid = container.childNodes[0];\r\n\r\n\t\tthis.$grid.innerHTML = \"
\";\r\n\r\n\t\tthis.$grid_scale = this.$grid.childNodes[0];\r\n\t\tthis.$grid_data = this.$grid.childNodes[1];\r\n\r\n\t\tvar attr = this.$getConfig()[this.$config.bind + \"_attribute\"];\r\n\t\tif (!attr && this.$config.bind) {\r\n\t\t\tattr = this.$config.bind + \"_id\";\r\n\t\t}\r\n\t\tthis.$config.item_attribute = attr || null;\r\n\r\n\t\tif (!this.$config.layers) {\r\n\t\t\tvar layers = this._createLayerConfig();\r\n\t\t\tthis.$config.layers = layers;\r\n\t\t}\r\n\r\n\t\tvar resizer = gridResize(gantt, this);\r\n\t\tresizer.init();\r\n\t\tthis._renderHeaderResizers = resizer.doOnRender;\r\n\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\r\n\r\n\t\tthis._addLayers(this.$gantt);\r\n\t\tthis._initEvents();\r\n\t\tthis.callEvent(\"onReady\", []);\r\n\t\t//this.refresh();\r\n\t},\r\n\r\n\t_validateColumnWidth: function (column, property) {\r\n\t\t// user can set {name:\"text\", width:\"200\",...} for some reason,\r\n\t\t// check and convert it to number when possible\r\n\t\tvar value = column[property];\r\n\t\tif (value && value != \"*\") {\r\n\t\t\tvar gantt = this.$gantt;\r\n\t\t\tvar numericWidth = value * 1;\r\n\t\t\tif (isNaN(numericWidth)) {\r\n\t\t\t\tgantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\r\n\t\t\t} else {\r\n\t\t\t\tcolumn[property] = numericWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetSize: function (width, height) {\r\n\t\tthis.$config.width = this.$state.width = width;\r\n\t\tthis.$config.height = this.$state.height = height;\r\n\r\n\t\t// TODO: maybe inherit and override in a subclass instead of extending here\r\n\r\n\t\tvar columns = this.getGridColumns(),\r\n\t\t\tinnerWidth = 0;\r\n\r\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\t\tthis._validateColumnWidth(columns[i], \"min_width\");\r\n\t\t\tthis._validateColumnWidth(columns[i], \"max_width\");\r\n\t\t\tthis._validateColumnWidth(columns[i], \"width\");\r\n\r\n\t\t\tinnerWidth += columns[i].width * 1;\r\n\t\t}\r\n\r\n\t\tvar outerWidth;\r\n\t\tif (isNaN(innerWidth) || !this.$config.scrollable) {\r\n\t\t\touterWidth = this._setColumnsWidth(width + 1);\r\n\t\t\tinnerWidth = outerWidth;\r\n\t\t}\r\n\r\n\t\tif (this.$config.scrollable) {\r\n\t\t\tthis.$grid_scale.style.width = innerWidth + \"px\";\r\n\t\t\tthis.$grid_data.style.width = innerWidth + \"px\";\r\n\t\t} else {\r\n\t\t\tthis.$grid_scale.style.width = \"inherit\";\r\n\t\t\tthis.$grid_data.style.width = \"inherit\";\r\n\t\t}\r\n\t\tthis.$config.width -= 1;\r\n\r\n\t\tvar config = this.$getConfig();\r\n\t\tif (outerWidth !== width) {\r\n\t\t\tconfig.grid_width = outerWidth;\r\n\t\t\tthis.$config.width = outerWidth - 1;\r\n\t\t}\r\n\r\n\t\tvar dataHeight = Math.max(this.$state.height - config.scale_height, 0);\r\n\t\tthis.$grid_data.style.height = dataHeight + \"px\";\r\n\t\tthis.refresh();\r\n\t},\r\n\tgetSize: function () {\r\n\r\n\t\tvar config = this.$getConfig();\r\n\r\n\t\tvar store = this.$config.rowStore;\r\n\r\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\r\n\t\t\tcontentWidth = this._getGridWidth();\r\n\r\n\t\tvar size = {\r\n\t\t\tx: this.$state.width,\r\n\t\t\ty: this.$state.height,\r\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\r\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\r\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\r\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\r\n\t\t};\r\n\r\n\t\treturn size;\r\n\t},\r\n\r\n\t_bindStore: function () {\r\n\t\tif (this.$config.bind){\r\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\r\n\t\t\tthis.$config.rowStore = rowStore;\r\n\t\t\tif(rowStore && !rowStore._gridCacheAttached){\r\n\t\t\t\tvar self = this;\r\n\t\t\t\trowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function(){\r\n\t\t\t\t\tself._resetTopPositionHeight();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_unbindStore: function(){\r\n\t\tif (this.$config.bind){\r\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\r\n\t\t\tif(rowStore._gridCacheAttached){\r\n\t\t\t\trowStore.detachEvent(rowStore._gridCacheAttached);\r\n\t\t\t\trowStore._gridCacheAttached = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function () {\r\n\t\tthis._bindStore();\r\n\r\n\t\tthis._resetTopPositionHeight();\r\n\t\tthis._initSmartRenderingPlaceholder();\r\n\r\n\t\tthis._calculateGridWidth();\r\n\t\tthis._renderGridHeader();\r\n\t},\r\n\r\n\tgetViewPort: function(){\r\n\t\tvar scrollLeft = this.$config.scrollLeft || 0;\r\n\t\tvar scrollTop = this.$config.scrollTop || 0;\r\n\t\tvar height = this.$config.height || 0;\r\n\t\tvar width = this.$config.width || 0;\r\n\t\treturn {\r\n\t\t\ty: scrollTop,\r\n\t\t\ty_end: scrollTop + height,\r\n\t\t\tx: scrollLeft,\r\n\t\t\tx_end: scrollLeft + width,\r\n\t\t\theight: height,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\tscrollTo: function (left, top) {\r\n\t\tif (!this.isVisible())\r\n\t\t\treturn;\r\n\r\n\t\tvar scrolled = false;\r\n\r\n\t\tthis.$config.scrollTop = this.$config.scrollTop || 0;\r\n\t\tthis.$config.scrollLeft = this.$config.scrollLeft || 0;\r\n\r\n\t\tif (left * 1 == left) {\r\n\t\t\tthis.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\r\n\t\t\tscrolled = true;\r\n\t\t}\r\n\r\n\t\t// var config = this.$getConfig();\r\n\t\tif (top * 1 == top) {\r\n\t\t\tthis.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\r\n\t\t\tscrolled = true;\r\n\t\t}\r\n\r\n\t\tif(scrolled){\r\n\t\t\tthis.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\r\n\t\t}\r\n\t},\r\n\r\n\tgetColumnIndex: function (name) {\r\n\t\tvar columns = this.$getConfig().columns;\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tif (columns[i].name == name) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tgetColumn: function (name) {\r\n\t\tvar index = this.getColumnIndex(name);\r\n\t\tif (index === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.$getConfig().columns[index];\r\n\t},\r\n\r\n\tgetGridColumns: function () {\r\n\t\tvar config = this.$getConfig();\r\n\t\treturn config.columns.slice();\r\n\t},\r\n\tisVisible: function () {\r\n\t\tif (this.$parent && this.$parent.$config) {\r\n\t\t\treturn !this.$parent.$config.hidden;\r\n\t\t} else {\r\n\t\t\treturn this.$grid.offsetWidth;\r\n\t\t}\r\n\t},\r\n\r\n\tgetItemHeight: function () {\r\n\t\tvar config = this.$getConfig();\r\n\t\treturn config.row_height;\r\n\t},\r\n\r\n\t_createLayerConfig: function () {\r\n\t\tvar gantt = this.$gantt;\r\n\t\tvar self = this;\r\n\t\tvar layers = [\r\n\t\t\t{\r\n\t\t\t\trenderer: gantt.$ui.layers.gridLine(),\r\n\t\t\t\tcontainer: this.$grid_data,\r\n\t\t\t\tfilter: [function () {\r\n\t\t\t\t\treturn self.isVisible();\r\n\t\t\t\t}]\r\n\t\t\t}\r\n\t\t];\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t_addLayers: function (gantt) {\r\n\t\tif (!this.$config.bind)\r\n\t\t\treturn;\r\n\r\n\t\tthis._taskLayers = [];\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\r\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\r\n\r\n\t\tif (!taskRenderer) {\r\n\t\t\ttaskRenderer = layers.createDataRender({\r\n\t\t\t\tname: this.$config.bind,\r\n\t\t\t\tdefaultContainer: function () { return self.$grid_data; }\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar taskLayers = this.$config.layers;\r\n\t\tfor (var i = 0; taskLayers && i < taskLayers.length; i++) {\r\n\t\t\tvar layer = taskLayers[i];\r\n\t\t\tlayer.view = this;\r\n\r\n\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\r\n\t\t\tthis._taskLayers.push(bar_layer);\r\n\t\t}\r\n\r\n\t\tthis._bindStore();\r\n\r\n\t\tthis._initSmartRenderingPlaceholder();\r\n\t},\r\n\r\n\t_refreshPlaceholderOnStoreUpdate: function (id) {\r\n\t\tvar config = this.$getConfig(),\r\n\t\t\tstore = this.$config.rowStore;\r\n\r\n\t\tif (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar contentHeight;\r\n\t\tif (this.$config.scrollY) {\r\n\t\t\tvar scroll = this.$gantt.$ui.getView(this.$config.scrollY);\r\n\t\t\tif (scroll)\r\n\t\t\t\tcontentHeight = scroll.getScrollState().scrollSize;\r\n\t\t}\r\n\r\n\t\tif (!contentHeight) {\r\n\t\t\tcontentHeight = store ? config.row_height * store.countVisible() : 0;\r\n\t\t}\r\n\r\n\t\tif (contentHeight) {\r\n\t\t\tif (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\r\n\t\t\t\tthis.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tvar placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\r\n\t\t\tplaceholder.style.visibility = \"hidden\";\r\n\t\t\tplaceholder.style.height = contentHeight + \"px\";\r\n\t\t\tplaceholder.style.width = \"1px\";\r\n\t\t\tthis.$grid_data.appendChild(placeholder);\r\n\t\t}\r\n\t},\r\n\r\n\t_initSmartRenderingPlaceholder: function () {\r\n\t\tvar store = this.$config.rowStore;\r\n\t\tif (!store) {\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tthis._initSmartRenderingPlaceholder = function () { };\r\n\t\t}\r\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\r\n\t},\r\n\r\n\t_initEvents: function () {\r\n\t\tvar gantt = this.$gantt;\r\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\r\n\t\t\tvar store = this.$config.rowStore;\r\n\t\t\tif (!store) return true;\r\n\r\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\r\n\t\t\tif (target) {\r\n\t\t\t\tstore.close(target.getAttribute(this.$config.item_attribute));\r\n\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}, this), this.$grid);\r\n\r\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\r\n\t\t\tvar store = this.$config.rowStore;\r\n\t\t\tif (!store) return true;\r\n\r\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\r\n\t\t\tif (target) {\r\n\t\t\t\tstore.open(target.getAttribute(this.$config.item_attribute));\r\n\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}, this), this.$grid);\r\n\t},\r\n\r\n\t_clearLayers: function (gantt) {\r\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\r\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\r\n\r\n\t\tif (this._taskLayers) {\r\n\t\t\tfor (var i = 0; i < this._taskLayers.length; i++) {\r\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._taskLayers = [];\r\n\t},\r\n\r\n\t_getColumnWidth: function (column, config, width) {\r\n\t\tvar min_width = column.min_width || config.min_grid_column_width;\r\n\t\tvar new_width = Math.max(width, min_width || 10);\r\n\t\tif (column.max_width)\r\n\t\t\tnew_width = Math.min(new_width, column.max_width);\r\n\t\treturn new_width;\r\n\t},\r\n\t// return min and max possible grid width according to restricts\r\n\t_getGridWidthLimits: function () {\r\n\t\tvar config = this.$getConfig(),\r\n\t\t\tcolumns = this.getGridColumns(),\r\n\t\t\tmin_limit = 0,\r\n\t\t\tmax_limit = 0;\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tmin_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\r\n\t\t\tif (max_limit !== undefined) {\r\n\t\t\t\tmax_limit = columns[i].max_width ? (max_limit + columns[i].max_width) : undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn [min_limit, max_limit];\r\n\t},\r\n\t// resize columns to get total newWidth, starting from columns[start_index]\r\n\t_setColumnsWidth: function (newWidth, start_index) {\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar columns = this.getGridColumns(),\r\n\t\t\tcolumns_width = 0,\r\n\t\t\tfinal_width = newWidth;\r\n\r\n\t\tstart_index = !window.isNaN(start_index) ? start_index : -1;\r\n\r\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\t\tcolumns_width += columns[i].width * 1;\r\n\t\t}\r\n\r\n\t\tif (window.isNaN(columns_width)) {\r\n\t\t\tthis._calculateGridWidth();\r\n\t\t\tcolumns_width = 0;\r\n\t\t\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\t\t\tcolumns_width += columns[i].width * 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar extra_width = final_width - columns_width;\r\n\r\n\t\tvar start_width = 0;\r\n\t\tfor (var i = 0; i < start_index + 1; i++) {\r\n\t\t\tstart_width += columns[i].width;\r\n\t\t}\r\n\r\n\t\tcolumns_width -= start_width;\r\n\r\n\t\tfor (var i = start_index + 1; i < columns.length; i++) {\r\n\r\n\t\t\tvar col = columns[i];\r\n\t\t\tvar share = Math.round(extra_width * (col.width / columns_width));\r\n\r\n\t\t\t// columns have 2 additional restrict fields - min_width & max_width that are set by user\r\n\t\t\tif (extra_width < 0) {\r\n\t\t\t\tif (col.min_width && col.width + share < col.min_width)\r\n\t\t\t\t\tshare = col.min_width - col.width;\r\n\t\t\t\telse if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width)\r\n\t\t\t\t\tshare = config.min_grid_column_width - col.width;\r\n\t\t\t} else if (col.max_width && col.width + share > col.max_width)\r\n\t\t\t\tshare = col.max_width - col.width;\r\n\r\n\t\t\tcolumns_width -= col.width;\r\n\t\t\tcol.width += share;\r\n\t\t\textra_width -= share;\r\n\r\n\t\t}\r\n\r\n\t\tvar iterator = extra_width > 0 ? 1 : -1;\r\n\t\twhile ((extra_width > 0 && iterator === 1) || (extra_width < 0 && iterator === -1)) {\r\n\t\t\tvar curExtra = extra_width;\r\n\t\t\tfor (i = start_index + 1; i < columns.length; i++) {\r\n\t\t\t\tvar new_width = columns[i].width + iterator;\r\n\r\n\t\t\t\tif (new_width == this._getColumnWidth(columns[i], config, new_width)) {\r\n\t\t\t\t\textra_width -= iterator;\r\n\t\t\t\t\tcolumns[i].width = new_width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!extra_width)\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif (curExtra == extra_width)\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// if impossible to resize the right-side columns, resize the start column\r\n\t\tif (extra_width && start_index > -1) {\r\n\t\t\tvar new_width = columns[start_index].width + extra_width;\r\n\t\t\tif (new_width == this._getColumnWidth(columns[start_index], config, new_width))\r\n\t\t\t\tcolumns[start_index].width = new_width;\r\n\t\t}\r\n\r\n\t\t//if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\r\n\t\t//\treturn;\r\n\r\n\t\treturn this._getColsTotalWidth();\r\n\t},\r\n\r\n\t_getColsTotalWidth: function () {\r\n\t\tvar columns = this.getGridColumns();\r\n\t\tvar cols_width = 0;\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tvar v = parseFloat(columns[i].width);\r\n\t\t\tif (window.isNaN(v)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tcols_width += v;\r\n\t\t}\r\n\t\treturn cols_width;\r\n\t},\r\n\t_calculateGridWidth: function () {\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar columns = this.getGridColumns();\r\n\t\tvar cols_width = 0;\r\n\t\tvar unknown = [];\r\n\t\tvar width = [];\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tvar v = parseFloat(columns[i].width);\r\n\t\t\tif (window.isNaN(v)) {\r\n\t\t\t\tv = config.min_grid_column_width || 10;\r\n\t\t\t\tunknown.push(i);\r\n\t\t\t}\r\n\t\t\twidth[i] = v;\r\n\t\t\tcols_width += v;\r\n\t\t}\r\n\t\tvar gridWidth = this._getGridWidth() + 1;\r\n\t\tif (config.autofit || unknown.length) {\r\n\t\t\tvar diff = gridWidth - cols_width;\r\n\t\t\t// TODO: logic may be improved for proportional changing of width\r\n\t\t\tif (config.autofit) {\r\n\t\t\t\t// delta must be added for all columns\r\n\t\t\t\tfor (var i = 0; i < width.length; i++) {\r\n\t\t\t\t\tvar delta = Math.round(diff / (width.length - i));\r\n\t\t\t\t\twidth[i] += delta;\r\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[i], config, width[i]);\r\n\r\n\t\t\t\t\tif (new_width != width[i]) {\r\n\t\t\t\t\t\tdelta = new_width - width[i];\r\n\t\t\t\t\t\twidth[i] = new_width;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdiff -= delta;\r\n\t\t\t\t}\r\n\t\t\t} else if (unknown.length) {\r\n\t\t\t\t// there are several columns with undefined width\r\n\t\t\t\tfor (var i = 0; i < unknown.length; i++) {\r\n\t\t\t\t\tvar delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\r\n\t\t\t\t\tvar index = unknown[i];\r\n\t\t\t\t\twidth[index] += delta;\r\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[index], config, width[index]);\r\n\t\t\t\t\tif (new_width != width[index]) {\r\n\t\t\t\t\t\tdelta = new_width - width[index];\r\n\t\t\t\t\t\twidth[index] = new_width;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdiff -= delta;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < width.length; i++) {\r\n\t\t\t\tcolumns[i].width = width[i];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar changed = (gridWidth != cols_width);\r\n\t\t\tthis.$config.width = cols_width - 1;\r\n\t\t\tconfig.grid_width = cols_width;\r\n\t\t\tif (changed) {\r\n\t\t\t\tthis.$parent._setContentSize(this.$config.width, null);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_renderGridHeader: function () {\r\n\t\tvar gantt = this.$gantt;\r\n\t\tvar config = this.$getConfig();\r\n\t\tvar locale = this.$gantt.locale;\r\n\t\tvar templates = this.$gantt.templates;\r\n\r\n\t\tvar columns = this.getGridColumns();\r\n\t\tif (config.rtl) {\r\n\t\t\tcolumns = columns.reverse();\r\n\t\t}\r\n\t\tvar cells = [];\r\n\t\tvar width = 0,\r\n\t\t\tlabels = locale.labels;\r\n\r\n\t\tvar lineHeigth = config.scale_height - 1;\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tvar last = i == columns.length - 1;\r\n\t\t\tvar col = columns[i];\r\n\r\n\t\t\t// ensure columns have non-empty names\r\n\t\t\tif (!col.name) {\r\n\t\t\t\tcol.name = gantt.uid() + \"\";\r\n\t\t\t}\r\n\r\n\t\t\tvar colWidth = col.width * 1;\r\n\r\n\t\t\tvar gridWidth = this._getGridWidth();\r\n\t\t\tif (last && gridWidth > width + colWidth)\r\n\t\t\t\tcol.width = colWidth = gridWidth - width;\r\n\t\t\twidth += colWidth;\r\n\t\t\tvar sort = (gantt._sort && col.name == gantt._sort.name) ? (\"
\") : \"\";\r\n\t\t\tvar cssClass = [\"gantt_grid_head_cell\",\r\n\t\t\t\t(\"gantt_grid_head_\" + col.name),\r\n\t\t\t\t(last ? \"gantt_last_cell\" : \"\"),\r\n\t\t\t\ttemplates.grid_header_class(col.name, col)].join(\" \");\r\n\r\n\t\t\tvar style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\r\n\t\t\tvar label = (col.label || labels[\"column_\" + col.name] || labels[col.name]);\r\n\t\t\tlabel = label || \"\";\r\n\r\n\t\t\tvar ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\r\n\r\n\t\t\tvar cell = \"
\" + label + sort + \"
\";\r\n\t\t\tcells.push(cell);\r\n\t\t}\r\n\t\tthis.$grid_scale.style.height = (config.scale_height) + \"px\";\r\n\t\tthis.$grid_scale.style.lineHeight = lineHeigth + \"px\";\r\n\t\t//this.$grid_scale.style.width = \"inherit\";\r\n\t\tthis.$grid_scale.innerHTML = cells.join(\"\");\r\n\r\n\t\tif (this._renderHeaderResizers) {\r\n\t\t\tthis._renderHeaderResizers();\r\n\t\t}\r\n\t},\r\n\r\n\t_getGridWidth: function () {\r\n\t\t// TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\r\n\t\treturn this.$config.width;\r\n\t},\r\n\r\n\tdestructor: function () {\r\n\t\tthis._clearLayers(this.$gantt);\r\n\t\tif (this._mouseDelegates) {\r\n\t\t\tthis._mouseDelegates.destructor();\r\n\t\t\tthis._mouseDelegates = null;\r\n\t\t}\r\n\t\tthis._unbindStore();\r\n\t\tthis.$grid = null;\r\n\t\tthis.$grid_scale = null;\r\n\t\tthis.$grid_data = null;\r\n\t\tthis.$gantt = null;\r\n\t\tif (this.$config.rowStore) {\r\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\r\n\t\t\tthis.$config.rowStore = null;\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\t}\r\n};\r\n\r\nmodule.exports = Grid;\r\n","function createMixin(){\r\n\tvar topCache = {};\r\n\treturn {\r\n\t\t_resetTopPositionHeight: function(){\r\n\t\t\ttopCache = {};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get top coordinate by row index (order)\r\n\t\t * @param {number} index\r\n\t\t */\r\n\t\tgetRowTop: function(index){\r\n\t\t\treturn index * this.$getConfig().row_height;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get top coordinate by item id\r\n\t\t * @param {*} task_id\r\n\t\t */\r\n\t\tgetItemTop: function (taskId) {\r\n\t\t\tif(this.$config.rowStore){\r\n\t\t\t\tif(topCache[taskId] !== undefined){\r\n\t\t\t\t\treturn topCache[taskId];\r\n\t\t\t\t}\r\n\t\t\t\tvar store = this.$config.rowStore;\r\n\t\t\t\tif(!store) return 0;\r\n\r\n\t\t\t\tvar itemIndex = store.getIndexById(taskId);\r\n\r\n\t\t\t\tif (itemIndex === -1 && store.getParent && store.exists(taskId)) {\r\n\t\t\t\t\tvar parentId = store.getParent(taskId);\r\n\t\t\t\t\tif (store.exists(parentId)) {\r\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\r\n\t\t\t\t\t\tvar parent = store.getItem(parentId);\r\n\t\t\t\t\t\tif (this.$gantt.isSplitTask(parent)) {\r\n\t\t\t\t\t\t\treturn this.getRowTop(store.getIndexById(parent.id));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttopCache[taskId] = this.getRowTop(itemIndex);\r\n\t\t\t\treturn topCache[taskId];\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = createMixin;","var __extends = require(\"../../../utils/extends\"),\r\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\r\n\tCell = require(\"./cell\");\r\n\r\nvar Layout = (function (_super) {\r\n\t\"use strict\";\r\n\r\n\t__extends(Layout, _super);\r\n\tfunction Layout(parent, config, factory) {\r\n\t\tvar _this = _super.apply(this, arguments) || this;\r\n\r\n\t\tif(parent)\r\n\t\t\t_this.$root = true;\r\n\r\n\t\t_this._parseConfig(config);\r\n\t\t_this.$name = \"layout\";\r\n\t\treturn _this;\r\n\t}\r\n\r\n\tLayout.prototype.destructor = function () {\r\n\t\tif (this.$container && this.$view) {\r\n\t\t\tdomHelpers.removeNode(this.$view);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\tvar child = this.$cells[i];\r\n\t\t\tchild.destructor();\r\n\t\t}\r\n\t\tthis.$cells = [];\r\n\r\n\t\t_super.prototype.destructor.call(this);\r\n\t};\r\n\r\n\tLayout.prototype._resizeScrollbars = function(autosize, scrollbars){\r\n\t\tvar scrollChanged = false;\r\n\t\tvar visibleScrollbars = [],\r\n\t\t\thiddenSrollbars = [];\r\n\r\n\t\tfunction showScrollbar(scrollbar){\r\n\t\t\tscrollbar.$parent.show();\r\n\t\t\tscrollChanged = true;\r\n\t\t\tvisibleScrollbars.push(scrollbar);\r\n\t\t}\r\n\t\tfunction hideScrollbar(scrollbar){\r\n\t\t\tscrollbar.$parent.hide();\r\n\t\t\tscrollChanged = true;\r\n\t\t\thiddenSrollbars.push(scrollbar);\r\n\t\t}\r\n\r\n\t\tvar scrollbar;\r\n\t\tfor(var i = 0; i < scrollbars.length; i++){\r\n\t\t\tscrollbar = scrollbars[i];\r\n\r\n\t\t\tif(autosize[scrollbar.$config.scroll]) {\r\n\t\t\t\thideScrollbar(scrollbar);\r\n\t\t\t}else if(scrollbar.shouldHide()){\r\n\t\t\t\thideScrollbar(scrollbar);\r\n\t\t\t}else if(scrollbar.shouldShow()){\r\n\t\t\t\tshowScrollbar(scrollbar);\r\n\t\t\t}else{\r\n\t\t\t\tif(scrollbar.isVisible()){\r\n\t\t\t\t\tvisibleScrollbars.push(scrollbar);\r\n\t\t\t\t}else{\r\n\t\t\t\t\thiddenSrollbars.push(scrollbar);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar visibleGroups = {};\r\n\t\tfor(var i = 0; i < visibleScrollbars.length; i++){\r\n\t\t\tif(visibleScrollbars[i].$config.group){\r\n\t\t\t\tvisibleGroups[visibleScrollbars[i].$config.group] = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < hiddenSrollbars.length; i++){\r\n\t\t\tscrollbar = hiddenSrollbars[i];\r\n\r\n\t\t\tif(scrollbar.$config.group && visibleGroups[scrollbar.$config.group]){\r\n\t\t\t\tshowScrollbar(scrollbar);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn scrollChanged;\r\n\t};\r\n\r\n\tLayout.prototype._syncCellSizes = function(groupName, newSize){\r\n\t\tif(!groupName)\r\n\t\t\treturn;\r\n\r\n\t\tvar groups = {};\r\n\r\n\t\tthis._eachChild(function(cell){\r\n\t\t\tif(cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\"){\r\n\t\t\t\tif(!groups[cell.$config.group]){\r\n\t\t\t\t\tgroups[cell.$config.group] = [];\r\n\t\t\t\t}\r\n\t\t\t\tgroups[cell.$config.group].push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(groups[groupName]){\r\n\t\t\tthis._syncGroupSize(groups[groupName], newSize);\r\n\t\t}\r\n\t\treturn groups[groupName];\r\n\t};\r\n\r\n\tLayout.prototype._syncGroupSize = function(cells, newSize){\r\n\t\tif(!cells.length) return;\r\n\r\n\t\tvar property = cells[0].$parent._xLayout ? \"width\" : \"height\";\r\n\t\tvar direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\r\n\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tvar ownSize = cells[i].getSize();\r\n\r\n\t\t\tvar resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\r\n\t\t\tif(resizeSibling.$name == \"resizer\"){\r\n\t\t\t\tresizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\r\n\t\t\t}\r\n\t\t\tvar siblingSize = resizeSibling.getSize();\r\n\r\n\t\t\tif(resizeSibling[property]){\r\n\t\t\t\tvar totalGravity = ownSize.gravity + siblingSize.gravity;\r\n\t\t\t\tvar totalSize = ownSize[property] + siblingSize[property];\r\n\t\t\t\tvar k = totalGravity / totalSize;\r\n\t\t\t\tcells[i].$config.gravity = k * newSize;\r\n\r\n\t\t\t\tresizeSibling.$config[property] = totalSize - newSize;\r\n\t\t\t\tresizeSibling.$config.gravity = totalGravity - k * newSize;\r\n\t\t\t}else{\r\n\r\n\r\n\t\t\t\tcells[i].$config[property] = newSize;\r\n\t\t\t}\r\n\r\n\t\t\tvar mainGrid = this.$gantt.$ui.getView(\"grid\");\r\n\t\t\tif(mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable){\r\n\t\t\t\tthis.$gantt.config.grid_width = newSize;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype.resize = function(startStage){\r\n\t\tvar mainCall = false;\r\n\t\tif(this.$root && !this._resizeInProgress){\r\n\t\t\tthis.callEvent(\"onBeforeResize\", []);\r\n\t\t\tmainCall = true;\r\n\t\t\tthis._resizeInProgress = true;\r\n\t\t}\r\n\r\n\t\t_super.prototype.resize.call(this, true);\r\n\t\t_super.prototype.resize.call(this, false);\r\n\r\n\t\tif(mainCall){\r\n\r\n\t\t\tvar contentViews = [];\r\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\r\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\r\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\r\n\r\n\t\t\tvar scrollbars = this.getCellsByType(\"scroller\");\r\n\r\n\t\t\tfor(var i = 0; i < contentViews.length; i++){\r\n\t\t\t\tif(!contentViews[i].$config.hidden)\r\n\t\t\t\t\tcontentViews[i].setContentSize();\r\n\t\t\t}\r\n\r\n\t\t\tvar autosize = this._getAutosizeMode(this.$config.autosize);\r\n\r\n\t\t\tvar scrollChanged = this._resizeScrollbars(autosize, scrollbars);\r\n\r\n\t\t\tif(this.$config.autosize){\r\n\t\t\t\tthis.autosize(this.$config.autosize);\r\n\t\t\t\tscrollChanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(scrollChanged){\r\n\t\t\t\tthis.resize();\r\n\t\t\t\tfor(var i = 0; i < contentViews.length; i++){\r\n\t\t\t\t\tif(!contentViews[i].$config.hidden)\r\n\t\t\t\t\t\tcontentViews[i].setContentSize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onResize\", []);\r\n\t\t}\r\n\t\tif(mainCall){\r\n\t\t\tthis._resizeInProgress = false;\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype._eachChild = function(code, cell){\r\n\t\tcell = cell || this;\r\n\t\tcode(cell);\r\n\t\tif(cell.$cells){\r\n\t\t\tfor(var i = 0; i < cell.$cells.length; i++){\r\n\t\t\t\tthis._eachChild(code, cell.$cells[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype.isChild = function(view){\r\n\t\tvar res = false;\r\n\t\tthis._eachChild(function(child){\r\n\t\t\tif(child === view || child.$content === view){\r\n\t\t\t\tres = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn res;\r\n\t};\r\n\r\n\tLayout.prototype.getCellsByType = function(type){\r\n\t\tvar res = [];\r\n\t\tif(type === this.$name){\r\n\t\t\tres.push(this);\r\n\t\t}\r\n\r\n\t\tif(this.$content && this.$content.$name == type){\r\n\t\t\tres.push(this.$content);\r\n\t\t}\r\n\r\n\t\tif(this.$cells){\r\n\t\t\tfor(var i = 0; i < this.$cells.length; i++){\r\n\t\t\t\tvar children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\r\n\t\t\t\tif(children.length){\r\n\t\t\t\t\tres.push.apply(res, children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tLayout.prototype.getNextSibling = function(cellId){\r\n\t\tvar index = this.cellIndex(cellId);\r\n\t\tif(index >= 0 && this.$cells[index + 1]){\r\n\t\t\treturn this.$cells[index + 1];\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype.getPrevSibling = function(cellId){\r\n\t\tvar index = this.cellIndex(cellId);\r\n\t\tif(index >= 0 && this.$cells[index - 1]){\r\n\t\t\treturn this.$cells[index - 1];\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tLayout.prototype.cell = function (id) {\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\tvar child = this.$cells[i];\r\n\t\t\tif (child.$id === id) {\r\n\t\t\t\treturn child;\r\n\t\t\t}\r\n\t\t\tvar sub = child.cell(id);\r\n\t\t\tif (sub) {\r\n\t\t\t\treturn sub;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tLayout.prototype.cellIndex = function (id) {\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\tif (this.$cells[i].$id === id) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\tLayout.prototype.moveView = function (view, ind) {\r\n\t\tif (this.$cells[ind] !== view) {\r\n\t\t\treturn window.alert(\"Not implemented\");\r\n\t\t}\r\n\t\telse {\r\n\t\t\tind += this.$config.header ? 1 : 0;\r\n\t\t\tvar node = this.$view;\r\n\t\t\tif (ind >= node.childNodes.length) {\r\n\t\t\t\tnode.appendChild(view.$view);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tnode.insertBefore(view.$view, node.childNodes[ind]);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tLayout.prototype._parseConfig = function (config) {\r\n\t\tthis.$cells = [];\r\n\t\tthis._xLayout = !config.rows;\r\n\t\tvar cells = config.rows || config.cols || config.views;\r\n\t\tfor (var i = 0; i < cells.length; i++) {\r\n\t\t\tvar cell = cells[i];\r\n\t\t\tcell.mode = this._xLayout ? \"x\" : \"y\";\r\n\t\t\tvar $content = this.$factory.initUI(cell, this);\r\n\t\t\tif(!$content){\r\n\t\t\t\tcells.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}else{\r\n\t\t\t\t$content.$parent = this;\r\n\t\t\t\tthis.$cells.push($content);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tLayout.prototype.getCells = function () {\r\n\t\treturn this.$cells;\r\n\t};\r\n\tLayout.prototype.render = function () {\r\n\t\tvar view = domHelpers.insertNode(this.$container, this.$toHTML());\r\n\t\tthis.$fill(view, null);\r\n\t\tthis.callEvent(\"onReady\", []);\r\n\t\tthis.resize();\r\n\r\n\t\t// do simple repaint after the first call\r\n\t\tthis.render = this.resize;\r\n\t};\r\n\tLayout.prototype.$fill = function (node, parent) {\r\n\t\tthis.$view = node;\r\n\t\tthis.$parent = parent;\r\n\t\tvar cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\r\n\t\tfor (var i = cells.length - 1; i >= 0; i--) {\r\n\t\t\tvar sub = this.$cells[i];\r\n\t\t\tsub.$fill(cells[i], this);\r\n\t\t\t// initially hidden cell\r\n\t\t\tif (sub.$config.hidden) {\r\n\t\t\t\tsub.$view.parentNode.removeChild(sub.$view);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tLayout.prototype.$toHTML = function () {\r\n\t\tvar mode = this._xLayout ? \"x\" : \"y\";\r\n\t\tvar html = [];\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\thtml.push(this.$cells[i].$toHTML());\r\n\t\t}\r\n\t\treturn _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\r\n\t};\r\n\r\n\tLayout.prototype.getContentSize = function(mode){\r\n\t\tvar contentWidth = 0,\r\n\t\t\tcontentHeight = 0;\r\n\r\n\t\tvar cellSize, cell, borders;\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\tcell = this.$cells[i];\r\n\t\t\tif(cell.$config.hidden)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tcellSize = cell.getContentSize(mode);\r\n\r\n\t\t\tif(cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]){\r\n\t\t\t\tcellSize.height = 0;\r\n\t\t\t\tcellSize.width = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.$config.resizer){\r\n\t\t\t\tif(this._xLayout){\r\n\t\t\t\t\tcellSize.height = 0;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellSize.width = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborders = cell._getBorderSizes();\r\n\r\n\t\t\tif(this._xLayout){\r\n\t\t\t\tcontentWidth += (cellSize.width + borders.horizontal);\r\n\t\t\t\tcontentHeight = Math.max(contentHeight, (cellSize.height + borders.vertical));\r\n\t\t\t}else{\r\n\t\t\t\tcontentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\r\n\t\t\t\tcontentHeight += cellSize.height + borders.vertical;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tborders = this._getBorderSizes();\r\n\t\tcontentWidth += borders.horizontal;\r\n\t\tcontentHeight += borders.vertical;\r\n\r\n\t\tif(this.$root){\r\n\t\t\tcontentWidth += 1;\r\n\t\t\tcontentHeight += 1;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\twidth: contentWidth,\r\n\t\t\theight: contentHeight\r\n\t\t};\r\n\t};\r\n\r\n\tLayout.prototype._cleanElSize = function(value){\r\n\t\treturn ((value || \"\").toString().replace(\"px\", \"\") * 1 || 0);\r\n\t};\r\n\tLayout.prototype._getBoxStyles = function(div){\r\n\t\tvar computed = null;\r\n\t\tif(window.getComputedStyle){\r\n\t\t\tcomputed = window.getComputedStyle(div, null);\r\n\t\t}else{\r\n\t\t\t//IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\r\n\t\t\tcomputed = {\r\n\t\t\t\t\"width\":div.clientWidth,\r\n\t\t\t\t\"height\":div.clientHeight\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar properties = [\r\n\t\t\t\"width\",\r\n\t\t\t\"height\",\r\n\r\n\t\t\t\"paddingTop\",\r\n\t\t\t\"paddingBottom\",\r\n\t\t\t\"paddingLeft\",\r\n\t\t\t\"paddingRight\",\r\n\r\n\t\t\t\"borderLeftWidth\",\r\n\t\t\t\"borderRightWidth\",\r\n\t\t\t\"borderTopWidth\",\r\n\t\t\t\"borderBottomWidth\"\r\n\t\t];\r\n\t\tvar styles = {\r\n\t\t\tboxSizing:(computed.boxSizing == \"border-box\")\r\n\t\t};\r\n\r\n\t\tif(computed.MozBoxSizing){\r\n\t\t\tstyles.boxSizing = (computed.MozBoxSizing == \"border-box\");\r\n\t\t}\r\n\t\tfor(var i =0; i < properties.length; i++){\r\n\t\t\tstyles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\r\n\t\t}\r\n\r\n\r\n\t\tvar box = {\r\n\t\t\thorPaddings : (styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth),\r\n\t\t\tvertPaddings : (styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth),\r\n\t\t\tborderBox: styles.boxSizing,\r\n\t\t\tinnerWidth : styles.width,\r\n\t\t\tinnerHeight : styles.height,\r\n\t\t\touterWidth : styles.width,\r\n\t\t\touterHeight : styles.height\r\n\t\t};\r\n\r\n\r\n\t\tif(box.borderBox){\r\n\t\t\tbox.innerWidth -= box.horPaddings;\r\n\t\t\tbox.innerHeight -= box.vertPaddings;\r\n\t\t}else{\r\n\t\t\tbox.outerWidth += box.horPaddings;\r\n\t\t\tbox.outerHeight += box.vertPaddings;\r\n\t\t}\r\n\r\n\t\treturn box;\r\n\t};\r\n\r\n\tLayout.prototype._getAutosizeMode = function(config){\r\n\t\tvar res = {x:false, y:false};\r\n\t\tif(config === \"xy\"){\r\n\t\t\tres.x = res.y = true;\r\n\t\t}else if(config === \"y\" || config === true){\r\n\t\t\tres.y = true;\r\n\t\t}else if(config === \"x\"){\r\n\t\t\tres.x = true;\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tLayout.prototype.autosize = function(mode) {\r\n\t\tvar res = this._getAutosizeMode(mode);\r\n\t\tvar boxSizes = this._getBoxStyles(this.$container);\r\n\t\tvar contentSizes = this.getContentSize(mode);\r\n\r\n\t\tvar node = this.$container;\r\n\t\tif(res.x){\r\n\t\t\tif(boxSizes.borderBox){\r\n\t\t\t\tcontentSizes.width += boxSizes.horPaddings;\r\n\t\t\t}\r\n\t\t\tnode.style.width = contentSizes.width + \"px\";\r\n\t\t}\r\n\t\tif(res.y){\r\n\t\t\tif(boxSizes.borderBox){\r\n\t\t\t\tcontentSizes.height += boxSizes.vertPaddings;\r\n\t\t\t}\r\n\t\t\tnode.style.height = contentSizes.height + \"px\";\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype.getSize = function () {\r\n\t\tthis._sizes = [];\r\n\t\tvar width = 0;\r\n\t\tvar minWidth = 0;\r\n\t\tvar maxWidth = 100000;\r\n\t\tvar height = 0;\r\n\t\tvar maxHeight = 100000;\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\r\n\t\t\tvar size = this._sizes[i] = this.$cells[i].getSize();\r\n\t\t\tif (this.$cells[i].$config.hidden) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (this._xLayout) {\r\n\t\t\t\tif (!size.width && size.minWidth) {\r\n\t\t\t\t\twidth += size.minWidth;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\twidth += size.width;\r\n\t\t\t\t}\r\n\t\t\t\tmaxWidth += size.maxWidth;\r\n\t\t\t\tminWidth += size.minWidth;\r\n\t\t\t\theight = Math.max(height, size.height);\r\n\t\t\t\tmaxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\r\n\t\t\t\tminHeight = Math.max(minHeight, size.minHeight); // max of minHeight\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!size.height && size.minHeight) {\r\n\t\t\t\t\theight += size.minHeight;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\theight += size.height;\r\n\t\t\t\t}\r\n\t\t\t\tmaxHeight += size.maxHeight;\r\n\t\t\t\tminHeight += size.minHeight;\r\n\t\t\t\twidth = Math.max(width, size.width);\r\n\t\t\t\tmaxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\r\n\t\t\t\tminWidth = Math.max(minWidth, size.minWidth); // max of minWidth\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar self = _super.prototype.getSize.call(this);\r\n\t\t// maxWidth\r\n\t\tif (self.maxWidth >= 100000) {\r\n\t\t\tself.maxWidth = maxWidth;\r\n\t\t}\r\n\t\t// maxHeight\r\n\t\tif (self.maxHeight >= 100000) {\r\n\t\t\tself.maxHeight = maxHeight;\r\n\t\t}\r\n\t\t// minWidth\r\n\t\tself.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth;// || self.width || Math.max(minWidth, width);\r\n\t\t// minHeight\r\n\t\tself.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight;//self.minHeight || self.height || Math.max(minHeight, height);\r\n\t\t// sizes with paddings and margins\r\n\t\tif (this._xLayout) {\r\n\t\t\tself.minWidth += this.$config.margin * (this.$cells.length) || 0;\r\n\t\t\tself.minWidth += this.$config.padding * 2 || 0;\r\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tself.minHeight += this.$config.margin * (this.$cells.length) || 0;\r\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\r\n\t\t}\r\n\t\t\r\n\t\treturn self;\r\n\t};\r\n\t// calc total gravity and free space\r\n\tLayout.prototype._calcFreeSpace = function (s, cell, xLayout) {\r\n\t\tvar min = xLayout ? cell.minWidth : cell.minHeight;\r\n\t\tvar max = xLayout ? cell.maxWidth : cell.maxWidth;\r\n\t\tvar side = s;\r\n\t\tif (!side) {\r\n\t\t\tside = Math.floor(this._free / this._gravity * cell.gravity);\r\n\t\t\tif (side > max) {\r\n\t\t\t\tside = max;\r\n\t\t\t\tthis._free -= side;\r\n\t\t\t\tthis._gravity -= cell.gravity;\r\n\t\t\t}\r\n\t\t\tif (side < min) {\r\n\t\t\t\tside = min;\r\n\t\t\t\tthis._free -= side;\r\n\t\t\t\tthis._gravity -= cell.gravity;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (side > max) {\r\n\t\t\t\tside = max;\r\n\t\t\t}\r\n\t\t\tif (side < min) {\r\n\t\t\t\tside = min;\r\n\t\t\t}\r\n\t\t\tthis._free -= side;\r\n\t\t}\r\n\t\treturn side;\r\n\t};\r\n\tLayout.prototype._calcSize = function (s, size, xLayout) {\r\n\t\tvar side = s;\r\n\t\tvar min = xLayout ? size.minWidth : size.minHeight;\r\n\t\tvar max = xLayout ? size.maxWidth : size.maxHeight;\r\n\t\tif (!side) {\r\n\t\t\tside = Math.floor(this._free / this._gravity * size.gravity);\r\n\t\t}\r\n\t\tif (side > max) {\r\n\t\t\tside = max;\r\n\t\t}\r\n\t\tif (side < min) {\r\n\t\t\tside = min;\r\n\t\t}\r\n\t\treturn side;\r\n\t};\r\n\r\n\tLayout.prototype._configureBorders = function(){\r\n\t\tif(this.$root){\r\n\t\t\tthis._setBorders([\r\n\t\t\t\tthis._borders.left,\r\n\t\t\t\tthis._borders.top,\r\n\t\t\t\tthis._borders.right,\r\n\t\t\t\tthis._borders.bottom\r\n\t\t\t],\r\n\t\t\tthis);\r\n\t\t}\r\n\r\n\t\tvar borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\r\n\r\n\t\tvar cells = this.$cells;\r\n\r\n\t\tvar lastVisibleIndex = cells.length - 1;\r\n\t\tfor(var i = lastVisibleIndex; i >= 0; i--){\r\n\t\t\tif (!cells[i].$config.hidden) {\r\n\t\t\t\tlastVisibleIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < cells.length; i++) {\r\n\t\t\tif (cells[i].$config.hidden) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tvar lastCell = i >= lastVisibleIndex;\r\n\t\t\tvar borderColorClass = \"\";\r\n\t\t\tif(!lastCell && cells[i + 1]){\r\n\t\t\t\tif(cells[i + 1].$config.view == \"scrollbar\"){\r\n\t\t\t\t\tif(this._xLayout){\r\n\t\t\t\t\t\tlastCell = true;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tborderColorClass = \"gantt_layout_cell_border_transparent\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\r\n\t\t}\r\n\t};\r\n\r\n\tLayout.prototype._updateCellVisibility = function(){\r\n\t\tvar oldVisibleCells = this._visibleCells || {};\r\n\t\tvar firstCall = !this._visibleCells;\r\n\t\tvar visibleCells = {};\r\n\t\tvar cell;\r\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\r\n\t\t\tcell = this.$cells[i];\r\n\r\n\t\t\tif (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\r\n\t\t\t\tcell._hide(true);\r\n\t\t\t}else if(!cell.$config.hidden && !oldVisibleCells[cell.$id]){\r\n\t\t\t\tcell._hide(false);\r\n\t\t\t}\r\n\r\n\t\t\tif(!cell.$config.hidden){\r\n\t\t\t\tvisibleCells[cell.$id] = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._visibleCells = visibleCells;\r\n\t};\r\n\r\n\tLayout.prototype.setSize = function (x, y) {\r\n\t\tthis._configureBorders();\r\n\t\t_super.prototype.setSize.call(this, x, y);\r\n\t\ty = this.$lastSize.contentY;\r\n\t\tx = this.$lastSize.contentX;\r\n\r\n\t\tvar padding = (this.$config.padding || 0);\r\n\t\tthis.$view.style.padding = padding + \"px\";\r\n\t\tthis._gravity = 0;\r\n\t\tthis._free = this._xLayout ? x : y;\r\n\t\tthis._free -= padding * 2;\r\n\t\t// calc all gravity\r\n\r\n\t\tvar cell,\r\n\t\t\tsize;\r\n\r\n\t\tthis._updateCellVisibility();\r\n\r\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\r\n\t\t\tcell = this.$cells[i];\r\n\r\n\t\t\tif (cell.$config.hidden) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tvar margin = (this.$config.margin || 0);\r\n\t\t\tif(cell.$name == \"resizer\" && !margin){\r\n\t\t\t\tmargin = -1;\r\n\t\t\t}\r\n\r\n\t\t\t// set margins to child cell\r\n\t\t\tvar cellView = cell.$view;\r\n\r\n\t\t\tvar marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\r\n\t\t\tif (i !== this.$cells.length - 1) {\r\n\t\t\t\tcellView.style[marginSide] = margin + \"px\";\r\n\t\t\t\tthis._free -= margin; // calc free space without margin\r\n\t\t\t}\r\n\t\t\tsize = this._sizes[i];\r\n\t\t\tif (this._xLayout) {\r\n\t\t\t\tif (!size.width) {\r\n\t\t\t\t\tthis._gravity += size.gravity;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!size.height) {\r\n\t\t\t\t\tthis._gravity += size.gravity;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\r\n\t\t\tcell = this.$cells[i];\r\n\r\n\t\t\tif (cell.$config.hidden) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tsize = this._sizes[i];\r\n\t\t\tvar width = size.width;\r\n\t\t\tvar height = size.height;\r\n\t\t\tif (this._xLayout) {\r\n\t\t\t\tthis._calcFreeSpace(width, size, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._calcFreeSpace(height, size, false);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\tcell = this.$cells[i];\r\n\r\n\t\t\tif (cell.$config.hidden) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tsize = this._sizes[i];\r\n\t\t\tvar dx = void 0;\r\n\t\t\tvar dy = void 0;\r\n\t\t\tif (this._xLayout) {\r\n\t\t\t\tdx = this._calcSize(size.width, size, true);\r\n\t\t\t\tdy = y - padding * 2; // layout height without paddings\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdx = x - padding * 2; // layout width without paddings\r\n\t\t\t\tdy = this._calcSize(size.height, size, false);\r\n\t\t\t}\r\n\r\n\t\t\tcell.setSize(dx, dy);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\treturn Layout;\r\n}(Cell));\r\n\r\nmodule.exports = Layout;","module.exports = function(item, view){\r\n\treturn {\r\n\t\ttop: view.getItemTop(item.id),\r\n\t\theight: view.getItemHeight(item.id),\r\n\t\tleft: 0,\r\n\t\tright: Infinity\r\n\t};\r\n};","// 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){\r\n\tif (!updPerSecond)\r\n\t\treturn true;\r\n\t\r\n\tif (host._on_timeout)\r\n\t\treturn false;\r\n\t\r\n\tvar timeout = Math.ceil(1000/updPerSecond);\r\n\tif (timeout < 2) return true;\r\n\r\n\tsetTimeout(function(){\r\n\t\tdelete host._on_timeout;\r\n\t}, timeout);\r\n\r\n\thost._on_timeout = true;\r\n\treturn true;\r\n}\r\n\r\nmodule.exports = checkTimeout;","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","function extend(gantt){\r\n\r\n\tgantt.destructor = function(){\r\n\t\tgantt.callEvent(\"onDestroy\", []);\r\n\t\tthis.clearAll();\r\n\r\n\t\tif(this.$root){\r\n\t\t\tdelete this.$root.gantt;\r\n\t\t}\r\n\r\n\t\tthis._eventRemoveAll();\r\n\t\tif(this.$layout){\r\n\t\t\tthis.$layout.destructor();\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\tif(this._dp && this._dp.destructor){\r\n\t\t\tthis._dp.destructor();\r\n\t\t}\r\n\t\tthis.$services.destructor();\r\n\r\n\t\t// detachAllEvents should be called last, because in components may be attached events\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tfor(var i in this){\r\n\t\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\t\tdelete this[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\tgantt.$destroyed = true;\r\n\t};\r\n}\r\n\r\nmodule.exports = extend;\r\n","/*\r\n \tasserts will be removed in final code, so you can place them anythere\r\n\twithout caring about performance impacts\r\n*/\r\n\r\nmodule.exports = function(gantt){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(gantt.config.show_errors && gantt.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tgantt.message({type: \"error\", text: message, expire: -1});\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n};","var domHelpers = require(\"../utils/dom_helpers\"),\r\n\thelpers = require(\"../utils/helpers\");\r\n\r\nmodule.exports = function(gantt){\r\n\tvar calculateScaleRange = require(\"./gantt_data_range\");\r\n\r\n\tgantt.assert = require(\"./common/assert\")(gantt);\r\n\r\n//initial initialization\r\n\tgantt.init = function(node, from, to){\r\n\t\tif(from && to){\r\n\t\t\tthis.config.start_date = this._min_date = new Date(from);\r\n\t\t\tthis.config.end_date = this._max_date = new Date(to);\r\n\t\t}\r\n\t\tthis.date.init();\r\n\r\n\t\tif (!this.config.scroll_size)\r\n\t\t\tthis.config.scroll_size = domHelpers.getScrollSize() || 1;\r\n\r\n\t\t//can be called only once\r\n\t\tthis.init = function(node){\r\n\t\t\tif (this.$container && this.$container.parentNode){\r\n\t\t\t\tthis.$container.parentNode.removeChild(this.$container);\r\n\t\t\t\tthis.$container = null;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.$layout){\r\n\t\t\t\tthis.$layout.clear();\r\n\t\t\t}\r\n\t\t\tthis._reinit(node);\r\n\t\t};\r\n\r\n\t\tthis._reinit(node);\r\n\t};\r\n\r\n\tgantt._reinit = function(node){\r\n\t\tthis.callEvent(\"onBeforeGanttReady\", []);\r\n\r\n\t\t// detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\r\n\t\tthis._eventRemoveAll();\r\n\t\tthis.$mouseEvents.reset();\r\n\r\n\t\tthis.resetLightbox();\r\n\t\tthis._update_flags();\r\n\r\n\r\n\t\tvar config = this.$services.getService(\"templateLoader\");\r\n\t\tconfig.initTemplates(this);\r\n\r\n\t\tthis._clearTaskLayers();\r\n\t\tthis._clearLinkLayers();\r\n\r\n\t\t//this.clear\r\n\t\tif(this.$layout){\r\n\t\t\tthis.$layout.destructor();\r\n\t\t\tthis.$ui.reset();\r\n\t\t}\r\n\r\n\t\tthis.$root = domHelpers.toNode(node);\r\n\t\tif(this.$root){\r\n\t\t\tthis.$root.innerHTML = \"\";\r\n\t\t}\r\n\t\tthis.$root.gantt = this;\r\n\t\tcalculateScaleRange(this);\r\n\t\tthis.config.layout.id = \"main\";\r\n\t\tthis.$layout = this.$ui.createView(\"layout\", node, this.config.layout);\r\n\r\n\t\tthis.$layout.attachEvent(\"onBeforeResize\", function(){\r\n\t\t\tvar storeNames = gantt.$services.getService(\"datastores\");\r\n\t\t\tfor(var i = 0; i < storeNames.length; i++){\r\n\t\t\t\tgantt.getDatastore(storeNames[i]).filter();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.$layout.attachEvent(\"onResize\", function(){\r\n\t\t\tgantt.refreshData();\r\n\t\t});\r\n\r\n\t\tthis.callEvent(\"onGanttLayoutReady\", []);\r\n\t\tthis.$layout.render();\r\n\r\n\t\tgantt.$container = this.$layout.$container.firstChild;\r\n\r\n\t\taddResizeListener(gantt);\r\n\r\n\t\tthis.callEvent(\"onTemplatesReady\",[]);\r\n\t\tthis.$mouseEvents.reset(this.$root);\r\n\t\tthis.callEvent(\"onGanttReady\", []);\r\n\r\n\t\tthis.render();\r\n\t};\r\n\r\n\tfunction addResizeListener(gantt){\r\n\t\tvar containerStyles = window.getComputedStyle(gantt.$root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\tgantt.$root.style.position = \"relative\";\r\n\t\t}\r\n\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"gantt_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tgantt.$root.appendChild(resizeWatcher);\r\n\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\tlistenWindowResize(gantt, resizeWatcher.contentWindow);\r\n\t\t} else {\r\n\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\tgantt.$root.removeChild(resizeWatcher);\r\n\t\t\tlistenWindowResize(gantt, window);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction listenWindowResize(gantt, window){\r\n\t\tvar resizeDelay;\r\n\t\tgantt.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\t\t\t\tgantt.render();\r\n\t\t\t}, 300);\r\n\t\t});\r\n\t}\r\n\r\n\tgantt.$click={\r\n\t\tbuttons:{\r\n\t\t\t\"edit\":function(id){\r\n\t\t\t\tgantt.showLightbox(id);\r\n\t\t\t},\r\n\t\t\t\"delete\":function(id){\r\n\t\t\t\tvar question = gantt.locale.labels.confirm_deleting;\r\n\t\t\t\tvar title = gantt.locale.labels.confirm_deleting_title;\r\n\r\n\t\t\t\tgantt._dhtmlx_confirm(question, title, function(){\r\n\t\t\t\t\tif(!gantt.isTaskExists(id)){\r\n\t\t\t\t\t\tgantt.hideLightbox();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar task = gantt.getTask(id);\r\n\t\t\t\t\tif(task.$new){\r\n\t\t\t\t\t\tgantt.silent(function(){\r\n\t\t\t\t\t\t\tgantt.deleteTask(id, true);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tgantt.refreshData();\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tgantt.deleteTask(id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tgantt.hideLightbox();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n//renders self\r\n\tgantt.render = function(){\r\n\t\tthis.callEvent(\"onBeforeGanttRender\", []);\r\n\r\n\t\tif (!this.config.sort && this._sort) {\r\n\t\t\tthis._sort = undefined;\r\n\t\t}\r\n\r\n\t\tvar pos = this.getScrollState();\r\n\t\tvar posX = pos ? pos.x : 0;\r\n\t\tif(this._getHorizontalScrollbar()){\r\n\t\t\tvar scrollbar = this._getHorizontalScrollbar();\r\n\t\t\tposX = scrollbar.$config.codeScrollLeft || posX || 0;\r\n\t\t}\r\n\r\n\r\n\t\tvar visible_date = null;\r\n\t\tif(posX){\r\n\t\t\tvisible_date = gantt.dateFromPos(posX + this.config.task_scroll_offset);\r\n\t\t}\r\n\t\tcalculateScaleRange(this);\r\n\r\n\t\tthis.$layout.$config.autosize = this.config.autosize;\r\n\t\tthis.$layout.resize();\r\n\r\n\t\tif(this.config.preserve_scroll && pos){\r\n\r\n\t\t\tif(posX){\r\n\t\t\t\tvar new_pos = gantt.getScrollState();\r\n\t\t\t\tvar new_date = gantt.dateFromPos(new_pos.x);\r\n\t\t\t\tif(!(+visible_date == +new_date && new_pos.y == pos.y)){\r\n\t\t\t\t\tif(visible_date){\r\n\t\t\t\t\t\tthis.showDate(visible_date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(pos.y)\r\n\t\t\t\t\t\tgantt.scrollTo(undefined, pos.y);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onGanttRender\", []);\r\n\t};\r\n\r\n\t//TODO: add layout.resize method that wouldn't trigger data repaint\r\n\tgantt.setSizes = gantt.render;\r\n\r\n\tgantt.locate = function(e) {\r\n\t\tvar trg = domHelpers.getTargetNode(e);\r\n\r\n\t\t//ignore empty cells\r\n\t\tvar className = domHelpers.getClassName(trg);\r\n\t\tif ((className || \"\").indexOf(\"gantt_task_cell\") >= 0) return null;\r\n\r\n\t\tvar targetAttribute = arguments[1] || this.config.task_attribute;\r\n\r\n\t\tvar node = domHelpers.locateAttribute(trg, targetAttribute);\r\n\t\tif(node){\r\n\t\t\treturn node.getAttribute(targetAttribute);\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._locate_css = function(e, classname, strict){\r\n\t\treturn domHelpers.locateClassName(e, classname, strict);\r\n\t};\r\n\r\n\tgantt._locateHTML = function(e, attribute) {\r\n\t\treturn domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\r\n\t};\r\n\r\n\tgantt.getTaskRowNode = function(id) {\r\n\t\tvar els = this.$grid_data.childNodes;\r\n\t\tvar attribute = this.config.task_attribute;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tif (els[i].getAttribute) {\r\n\t\t\t\tvar value = els[i].getAttribute(attribute);\r\n\t\t\t\tif (value == id) return els[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tgantt.changeLightboxType = function(type){\r\n\t\tif(this.getLightboxType() == type)\r\n\t\t\treturn true;\r\n\t\tgantt._silent_redraw_lightbox(type);\r\n\t};\r\n\r\n\r\n\tgantt._get_link_type = function (from_start, to_start) {\r\n\t\tvar type = null;\r\n\t\tif (from_start && to_start) {\r\n\t\t\ttype = gantt.config.links.start_to_start;\r\n\t\t} else if (!from_start && to_start) {\r\n\t\t\ttype = gantt.config.links.finish_to_start;\r\n\t\t} else if (!from_start && !to_start) {\r\n\t\t\ttype = gantt.config.links.finish_to_finish;\r\n\t\t} else if (from_start && !to_start) {\r\n\t\t\ttype = gantt.config.links.start_to_finish;\r\n\t\t}\r\n\t\treturn type;\r\n\t};\r\n\r\n\tgantt.isLinkAllowed = function (from, to, from_start, to_start) {\r\n\t\tvar link = null;\r\n\t\tif (typeof(from) == \"object\") {\r\n\t\t\tlink = from;\r\n\t\t} else {\r\n\t\t\tlink = {source: from, target: to, type: this._get_link_type(from_start, to_start)};\r\n\t\t}\r\n\r\n\t\tif (!link) return false;\r\n\t\tif (!(link.source && link.target && link.type)) return false;\r\n\t\tif (link.source == link.target) return false;\r\n\r\n\t\tvar res = true;\r\n\t\t//any custom rules\r\n\t\tif (this.checkEvent(\"onLinkValidation\"))\r\n\t\t\tres = this.callEvent(\"onLinkValidation\", [link]);\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\r\n\tgantt._correct_dst_change = function(date, prevOffset, step, unit){\r\n\t\tvar time_unit = helpers.getSecondsInUnit(unit) * step;\r\n\t\tif(time_unit > 60*60 && time_unit < 60*60*24){\r\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\r\n\t\t\tvar offsetChanged = date.getTimezoneOffset() - prevOffset;\r\n\t\t\tif(offsetChanged){\r\n\t\t\t\tdate = gantt.date.add(date, offsetChanged, \"minute\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn date;\r\n\t};\r\n\r\n\tgantt.isSplitTask = function(task){\r\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSplitTask. Task object was expected\");\r\n\t\treturn this.$data.tasksStore._isSplitItem(task);\r\n\t};\r\n\r\n\tgantt._is_icon_open_click = function(e) {\r\n\t\tif (!e)\r\n\t\t\treturn false;\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tif (!(target && target.className))\r\n\t\t\treturn false;\r\n\t\tvar className = domHelpers.getClassName(target);\r\n\t\tif (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n\t};\r\n\r\n};","// default locale\r\n// load locale definition and wrap it into module build-time\r\nmodule.exports = function (gantt) {\r\n\tgantt.locale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"New task\",\r\n\t\ticon_save: \"Save\",\r\n\t\ticon_cancel: \"Cancel\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Delete\",\r\n\t\tconfirm_closing: \"\",//Your changes will be lost, are you sure?\r\n\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Time period\",\r\n\t\tsection_type: \"Type\",\r\n\r\n\t\t/* grid columns */\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\"\r\n\t}\r\n};\r\n};","module.exports = function(gantt) {\r\n\r\n\tgantt.config.touch_drag = 500; //nearly immediate dnd\r\n\tgantt.config.touch = true;\r\n\tgantt.config.touch_feedback = true;\r\n\tgantt.config.touch_feedback_duration = 1;\r\n\tgantt._prevent_touch_scroll = false;\r\n\r\n\r\n\tgantt._touch_feedback = function () {\r\n\t\tif (gantt.config.touch_feedback) {\r\n\t\t\tif (navigator.vibrate)\r\n\t\t\t\tnavigator.vibrate(gantt.config.touch_feedback_duration);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onGanttReady\", gantt.bind(function(){\r\n\t\tif (this.config.touch != \"force\")\r\n\t\t\tthis.config.touch = this.config.touch &&\r\n\t\t\t\t((navigator.userAgent.indexOf(\"Mobile\") != -1) ||\r\n\t\t\t\t\t(navigator.userAgent.indexOf(\"iPad\") != -1) ||\r\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Android\") != -1) ||\r\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Touch\") != -1));\r\n\r\n\t\tif (this.config.touch) {\r\n\r\n\t\t\tvar touchEventsSupported = true;\r\n\t\t\ttry {\r\n\t\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t\t} catch (e) {\r\n\t\t\t\ttouchEventsSupported = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (touchEventsSupported) {\r\n\t\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn ev;\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\t\t\t} else if (window.navigator.pointerEnabled) {\r\n\t\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\t\treturn ev;\r\n\t\t\t\t}, function (ev) {\r\n\t\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t\t});\r\n\t\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\t\treturn ev;\r\n\t\t\t\t}, function (ev) {\r\n\t\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}, gantt));\r\n\r\n\r\n\tfunction getTaskDND(){\r\n\t\tvar _tasks_dnd;\r\n\t\tif(gantt.$ui.getView(\"timeline\")){\r\n\t\t\t_tasks_dnd = gantt.$ui.getView(\"timeline\")._tasks_dnd;\r\n\t\t}\r\n\t\treturn _tasks_dnd;\r\n\t}\r\n\r\n\tvar touchHandlers = [];\r\n\r\n//we can't use native scrolling, as we need to sync momentum between different parts\r\n//so we will block native scroll and use the custom one\r\n//in future we can add custom momentum\r\n\tgantt._touch_events = function (names, accessor, ignore) {\r\n\t\t//webkit on android need to be handled separately\r\n\t\tvar dblclicktime = 0;\r\n\t\tvar action_mode = false;\r\n\t\tvar scroll_mode = false;\r\n\t\tvar action_start = null;\r\n\t\tvar scroll_state;\r\n\t\tvar long_tap_timer = null;\r\n\t\tvar current_target = null;\r\n\r\n\r\n\r\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\r\n\t\t\tgantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\r\n\t\t}\r\n\t\ttouchHandlers = [];\r\n\r\n\t\t//touch move\r\n\t\ttouchHandlers.push([gantt.$container, names[0], function (e) {\r\n\t\t\tvar _tasks_dnd = getTaskDND();\r\n\r\n\t\t\t\tif (ignore(e)) return;\r\n\r\n\t\t\t\t//ignore common and scrolling moves\r\n\t\t\t\tif (!action_mode) return;\r\n\r\n\t\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\r\n\r\n\t\t\t\tvar source = accessor(e);\r\n\t\t\t\tif (_tasks_dnd && (_tasks_dnd.drag.id || _tasks_dnd.drag.start_drag)) {\r\n\t\t\t\t\t_tasks_dnd.on_mouse_move(source);\r\n\t\t\t\t\tif (e.preventDefault)\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.cancelBubble = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!gantt._prevent_touch_scroll) {\r\n\t\t\t\t\tif (source && action_start) {\r\n\t\t\t\t\t\tvar dx = action_start.pageX - source.pageX;\r\n\t\t\t\t\t\tvar dy = action_start.pageY - source.pageY;\r\n\t\t\t\t\t\tif (!scroll_mode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\r\n\t\t\t\t\t\t\tgantt._touch_scroll_active = scroll_mode = true;\r\n\t\t\t\t\t\t\tdblclicktime = 0;\r\n\t\t\t\t\t\t\tscroll_state = gantt.getScrollState();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (scroll_mode) {\r\n\t\t\t\t\t\t\tgantt.scrollTo(scroll_state.x + dx, scroll_state.y + dy);\r\n\t\t\t\t\t\t\tvar new_scroll_state = gantt.getScrollState();\r\n\r\n\t\t\t\t\t\t\tif ((scroll_state.x != new_scroll_state.x && dy > 2 * dx) ||\r\n\t\t\t\t\t\t\t\t(scroll_state.y != new_scroll_state.y && dx > 2 * dy )) {\r\n\t\t\t\t\t\t\t\treturn block_action(e);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn block_action(e);\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}]);\r\n\r\n\r\n\t\t//block touch context menu in IE10\r\n\t\ttouchHandlers.push([this.$container, \"contextmenu\", function (e) {\r\n\t\t\tif (action_mode)\r\n\t\t\t\treturn block_action(e);\r\n\t\t}]);\r\n\r\n\t\t//touch start\r\n\t\ttouchHandlers.push([this.$container, names[1], function (e) {\r\n\t\t\tif (ignore(e)) return;\r\n\t\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\t\taction_mode = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\taction_start = accessor(e);\r\n\t\t\tif (!gantt._locate_css(action_start, \"gantt_hor_scroll\") && !gantt._locate_css(action_start, \"gantt_ver_scroll\")) {\r\n\t\t\t\taction_mode = true;\r\n\t\t\t}\r\n\t\t\tvar _tasks_dnd = getTaskDND();\r\n\r\n\t\t\t//long tap\r\n\t\t\tlong_tap_timer = setTimeout(function () {\r\n\t\t\t\tvar taskId = gantt.locate(action_start);\r\n\t\t\t\tif (_tasks_dnd && (taskId && !gantt._locate_css(action_start, \"gantt_link_control\") && !gantt._locate_css(action_start, \"gantt_grid_data\"))) {\r\n\t\t\t\t\t_tasks_dnd.on_mouse_down(action_start);\r\n\r\n\t\t\t\t\tif (_tasks_dnd.drag && _tasks_dnd.drag.start_drag) {\r\n\t\t\t\t\t\tcloneTaskRendered(taskId);\r\n\t\t\t\t\t\t_tasks_dnd._start_dnd(action_start);\r\n\t\t\t\t\t\tgantt._touch_drag = true;\r\n\r\n\t\t\t\t\t\tgantt.refreshTask(taskId);\r\n\r\n\t\t\t\t\t\tgantt._touch_feedback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlong_tap_timer = null;\r\n\t\t\t}, gantt.config.touch_drag);\r\n\t\t}]);\r\n\r\n\t\t//touch end\r\n\t\ttouchHandlers.push([this.$container, names[2], function (e) {\r\n\t\t\tif (ignore(e)) return;\r\n\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\r\n\t\t\tgantt._touch_drag = false;\r\n\t\t\taction_mode = false;\r\n\t\t\tvar source = accessor(e);\r\n\r\n\t\t\tvar _tasks_dnd = getTaskDND();\r\n\r\n\t\t\tif(_tasks_dnd)\r\n\t\t\t\t_tasks_dnd.on_mouse_up(source);\r\n\r\n\t\t\tif (current_target) {\r\n\t\t\t\tgantt.refreshTask(gantt.locate(current_target));\r\n\t\t\t\tif (current_target.parentNode) {\r\n\t\t\t\t\tcurrent_target.parentNode.removeChild(current_target);\r\n\t\t\t\t\tgantt._touch_feedback();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgantt._touch_scroll_active = action_mode = scroll_mode = false;\r\n\t\t\tcurrent_target = null;\r\n\r\n\t\t\t//dbl-tap handling\r\n\t\t\tif (action_start && dblclicktime) {\r\n\t\t\t\tvar now = new Date();\r\n\t\t\t\tif ((now - dblclicktime) < 500) {\r\n\r\n\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\r\n\t\t\t\t\tmouseEvents.onDoubleClick(action_start);\r\n\t\t\t\t\tblock_action(e);\r\n\t\t\t\t} else\r\n\t\t\t\t\tdblclicktime = now;\r\n\t\t\t} else {\r\n\t\t\t\tdblclicktime = new Date();\r\n\t\t\t}\r\n\t\t}]);\r\n\r\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\r\n\t\t\tgantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\r\n\t\t}\r\n\r\n\t\t//common helper, prevents event\r\n\t\tfunction block_action(e) {\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\t(e || event).cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfunction cloneTaskRendered(taskId) {\r\n\t\t\tvar renders = gantt._getTaskLayers();\r\n\t\t\tvar task = gantt.getTask(taskId);\r\n\t\t\tif (task && gantt.isTaskVisible(taskId)) {\r\n\t\t\t\tfor (var i = 0; i < renders.length; i++) {\r\n\t\t\t\t\ttask = renders[i].rendered[taskId];\r\n\t\t\t\t\tif (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\r\n\t\t\t\t\t\tvar copy = task.cloneNode(true);\r\n\t\t\t\t\t\tcurrent_target = task;\r\n\t\t\t\t\t\trenders[i].rendered[taskId] = copy;\r\n\t\t\t\t\t\ttask.style.display = \"none\";\r\n\t\t\t\t\t\tcopy.className += \" gantt_drag_move \";\r\n\t\t\t\t\t\ttask.parentNode.appendChild(copy);\r\n\t\t\t\t\t\t//return copy;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n};","module.exports = function(gantt) {\r\ngantt.skins[\"contrast_white\"] = {\r\n\tconfig:{\r\n\t\tgrid_width:360,\r\n\t\trow_height: 35,\r\n\t\tscale_height: 35,\r\n\t\tlink_line_width:2,\r\n\t\tlink_arrow_size:6,\r\n\t\tlightbox_additional_height:75\r\n\t},\r\n\t_second_column_width:100,\r\n\t_third_column_width:80\r\n};\r\n\r\n};","module.exports = function(gantt) {\r\ngantt.skins[\"contrast_black\"] = {\r\n\tconfig:{\r\n\t\tgrid_width:360,\r\n\t\trow_height: 35,\r\n\t\tscale_height: 35,\r\n\t\tlink_line_width:2,\r\n\t\tlink_arrow_size:6,\r\n\t\tlightbox_additional_height:75\r\n\t},\r\n\t_second_column_width:100,\r\n\t_third_column_width:80\r\n};\r\n\r\n};","module.exports = function(gantt) {\r\n\tgantt.skins.material = {\r\n\t\tconfig: {\r\n\t\t\tgrid_width: 411,\r\n\t\t\trow_height: 34,\r\n\t\t\ttask_height_offset: 6,\r\n\t\t\tscale_height: 36,\r\n\t\t\tlink_line_width: 2,\r\n\t\t\tlink_arrow_size: 6,\r\n\t\t\tlightbox_additional_height: 80\r\n\t\t},\r\n\t\t_second_column_width: 110,\r\n\t\t_third_column_width: 75,\r\n\t\t_redefine_lightbox_buttons: {\r\n\t\t\t\"buttons_left\": [\"dhx_delete_btn\"],\r\n\t\t\t\"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onAfterTaskDrag\", function (id) {\r\n\t\tvar t = gantt.getTaskNode(id);\r\n\t\tif (t) {\r\n\t\t\tt.className += \" gantt_drag_animation\";\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tvar indx = t.className.indexOf(\" gantt_drag_animation\");\r\n\t\t\t\tif (indx > -1) {\r\n\t\t\t\t\tt.className = t.className.slice(0, indx);\r\n\t\t\t\t}\r\n\t\t\t}, 200);\r\n\t\t}\r\n\t});\r\n\r\n};","module.exports = function(gantt) {\r\n\tgantt.skins.broadway = {\r\n\t\tconfig: {\r\n\t\t\tgrid_width: 360,\r\n\t\t\trow_height: 35,\r\n\t\t\tscale_height: 35,\r\n\t\t\tlink_line_width: 1,\r\n\t\t\tlink_arrow_size: 7,\r\n\t\t\tlightbox_additional_height: 86\r\n\t\t},\r\n\t\t_second_column_width: 90,\r\n\t\t_third_column_width: 80,\r\n\r\n\t\t_lightbox_template: \"
 
\",\r\n\t\t_config_buttons_left: {},\r\n\t\t_config_buttons_right: {\r\n\t\t\t\"gantt_delete_btn\": \"icon_delete\",\r\n\t\t\t\"gantt_save_btn\": \"icon_save\"\r\n\t\t}\r\n\t};\r\n};","module.exports = function(gantt) {\r\ngantt.skins.terrace = {\r\n\tconfig:{\r\n\t\tgrid_width:360,\r\n\t\trow_height: 35,\r\n\t\tscale_height: 35,\r\n\t\tlink_line_width:2,\r\n\t\tlink_arrow_size:6,\r\n\t\tlightbox_additional_height:75\r\n\t},\r\n\t_second_column_width:90,\r\n\t_third_column_width:70\t\t\r\n};\r\n\r\n};","module.exports = function(gantt) {\r\ngantt.skins.meadow = {\r\n\tconfig:{\r\n\t\tgrid_width:350,\r\n\t\trow_height: 27,\r\n\t\tscale_height: 30,\r\n\t\tlink_line_width:2,\r\n\t\tlink_arrow_size:6,\r\n\t\tlightbox_additional_height:72\r\n\t},\r\n\t_second_column_width:95,\r\n\t_third_column_width:80\r\n};\r\n\r\n};","module.exports = function(gantt) {\r\ngantt.skins.skyblue = {\r\n\tconfig:{\r\n\t\tgrid_width:350,\r\n\t\trow_height: 27,\r\n\t\tscale_height: 27,\r\n\t\tlink_line_width:1,\r\n\t\tlink_arrow_size:8,\r\n\t\tlightbox_additional_height:75\r\n\t},\r\n\t_second_column_width:95,\r\n\t_third_column_width:80\r\n};\r\n\r\n};","function _configure(col, data, force) {\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\" || force)\r\n\t\t\tcol[key] = data[key];\r\n}\r\n\r\nfunction _get_skin(force, gantt) {\r\n\tvar skin = gantt.skin;\r\n\tif (!skin || force) {\r\n\t\tvar links = document.getElementsByTagName(\"link\");\r\n\t\tfor (var i = 0; i < links.length; i++) {\r\n\t\t\tvar res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\r\n\t\t\tif (res) {\r\n\t\t\t\tif (gantt.skins[res[1]] || !skin) {\r\n\t\t\t\t\tskin = res[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgantt.skin = skin || \"terrace\";\r\n\tvar skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"];\r\n\r\n\t//apply skin related settings\r\n\t_configure(gantt.config, skinset.config, force);\r\n\r\n\tvar config = gantt.getGridColumns();\r\n\tif (config[1] && !gantt.defined(config[1].width))\r\n\t\tconfig[1].width = skinset._second_column_width;\r\n\tif (config[2] && !gantt.defined(config[2].width))\r\n\t\tconfig[2].width = skinset._third_column_width;\r\n\t\r\n\tfor (var i=0; i column.width) ? column.min_width : column.width;\r\n\t\t\t\tcolumn.width = (column.max_width && column.max_width < column.width) ? column.max_width : column.width;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (skinset.config.task_height)\r\n\t\tgantt.config.task_height = skinset.config.task_height || \"full\"; \r\n\r\n\tif (skinset._lightbox_template)\r\n\t\tgantt._lightbox_template = skinset._lightbox_template;\r\n\r\n\tif (skinset._redefine_lightbox_buttons) {\r\n\t\tgantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\r\n\t\tgantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\r\n\t}\r\n\r\n\r\n\tgantt.resetLightbox();\r\n}\r\n\r\nmodule.exports = function(gantt) {\r\n\tif(!gantt.resetSkin){\r\n\t\tgantt.resetSkin = function () {\r\n\t\t\tthis.skin = \"\";\r\n\t\t\t_get_skin(true, this);\r\n\t\t};\r\n\t\tgantt.skins = {};\r\n\r\n\t\tgantt.attachEvent(\"onGanttLayoutReady\", function(){\r\n\t\t\t_get_skin(false, this);\r\n\t\t});\r\n\t}\r\n};","/*\r\n reuse results of functions that can be recalculated during rendering\r\n greatly increases the rendering speed when critical path enabled\r\n Sample - 94_dev/critical_path.html\r\n\r\n */\r\nmodule.exports = function(gantt){\r\n\r\ngantt._cached_functions = {\r\n\tcache: {},\r\n\tmode: false,\r\n\tcritical_path_mode: false,\r\n\twrap_methods : function(methods, object){\r\n\t\tif(object._prefetch_originals){\r\n\t\t\tfor(var i in object._prefetch_originals){\r\n\t\t\t\tobject[i] = object._prefetch_originals[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\tobject._prefetch_originals = {};\r\n\t\tfor(var i = 0; i < methods.length; i++)\r\n\t\t\tthis.prefetch(methods[i], object);\r\n\r\n\t},\r\n\tprefetch : function(methodname, host){\r\n\t\tvar original = host[methodname];\r\n\t\tif(original){\r\n\t\t\tvar optimizer = this;\r\n\r\n\t\t\thost._prefetch_originals[methodname] = original;\r\n\t\t\thost[methodname] = function get_prefetched_value(){\r\n\r\n\t\t\t\tvar argumentsArray = new Array(arguments.length);\r\n\t\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\r\n\t\t\t\t\targumentsArray[i] = arguments[i];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(optimizer.active){\r\n\t\t\t\t\tvar args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\r\n\t\t\t\t\tif(!optimizer.cache[methodname]){\r\n\t\t\t\t\t\toptimizer.cache[methodname] = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar cached_values = optimizer.cache[methodname];\r\n\r\n\t\t\t\t\tif(optimizer.has_cached_value(cached_values, args)){\r\n\t\t\t\t\t\treturn optimizer.get_cached_value(cached_values, args);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar value = original.apply(this, argumentsArray);\r\n\t\t\t\t\t\toptimizer.cache_value(cached_values, args, value);\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn original.apply(this, argumentsArray);\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn original;\r\n\t},\r\n\tcache_value: function(cache, arguments_hash, value){\r\n\t\tif(this.is_date(value))\r\n\t\t\tvalue = new Date(value);\r\n\t\tcache[arguments_hash] = value;\r\n\t},\r\n\thas_cached_value: function(cache, arguments_hash){\r\n\t\treturn cache.hasOwnProperty(arguments_hash);\r\n\t},\r\n\tget_cached_value: function(cache, arguments_hash){\r\n\t\tvar data = cache[arguments_hash];\r\n\r\n\t\t//for cached dates - return copy\r\n\t\tif(this.is_date(data)){\r\n\t\t\tdata = new Date(data);\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\tis_date: function(value){\r\n\t\treturn (value && value.getUTCDate);\r\n\t},\r\n\tget_arguments_hash:function(args){\r\n\t\tvar values = [];\r\n\t\tfor(var i = 0; i < args.length; i++){\r\n\t\t\tvalues.push(this.stringify_argument(args[i]));\r\n\t\t}\r\n\t\treturn \"(\" + values.join(\";\") + \")\";\r\n\t},\r\n\tstringify_argument: function(value){\r\n\t\t//expecting task or link, or any other data entries, dates and primitive values\r\n\t\tvar ret = \"\";\r\n\t\tif(value.id){\r\n\t\t\tret = value.id;\r\n\t\t}else if(this.is_date(value)){\r\n\t\t\tret = value.valueOf();\r\n\t\t}else{\r\n\t\t\tret = value;\r\n\t\t}\r\n\t\treturn ret + \"\";\r\n\t},\r\n\tactivate: function(){\r\n\t\tthis.clear();\r\n\t\tthis.active = true;\r\n\t},\r\n\tdeactivate: function(){\r\n\t\tthis.clear();\r\n\t\tthis.active = false;\r\n\t},\r\n\tclear: function(){\r\n\t\tthis.cache = {};\r\n\t},\r\n\r\n\tsetup: function(gantt){\r\n\t\tvar override_gantt = [];\r\n\r\n\t\tvar gantt_methods = [\r\n\t\t\t'_isProjectEnd',\r\n\t\t\t'_getProjectEnd',\r\n\t\t\t'_getSlack'\r\n\t\t];\r\n\r\n\r\n\r\n\t\tif(this.mode == 'auto'){\r\n\t\t\tif(gantt.config.highlight_critical_path){\r\n\t\t\t\toverride_gantt = gantt_methods;\r\n\t\t\t}\r\n\t\t}else if(this.mode === true){\r\n\t\t\toverride_gantt = gantt_methods;\r\n\t\t}\r\n\r\n\t\tthis.wrap_methods(override_gantt, gantt);\r\n\r\n\t},\r\n\tupdate_if_changed: function(gantt){\r\n\t\tvar changed = (this.critical_path_mode != gantt.config.highlight_critical_path ||\r\n\t\t\t\t\t\tthis.mode !== gantt.config.optimize_render);\r\n\t\tif(changed){\r\n\t\t\tthis.critical_path_mode = gantt.config.highlight_critical_path;\r\n\t\t\tthis.mode = gantt.config.optimize_render;\r\n\t\t\tthis.setup(gantt);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction activate(){\r\n\tgantt._cached_functions.update_if_changed(gantt);\r\n\tif(!gantt._cached_functions.active){\r\n\t\tgantt._cached_functions.activate();\r\n\t}\r\n\treturn true;\r\n}\r\ngantt.attachEvent(\"onBeforeGanttRender\", activate);\r\ngantt.attachEvent(\"onBeforeDataRender\", activate);\r\ngantt.attachEvent(\"onBeforeSmartRender\", function(){\r\n\tactivate();\r\n});\r\ngantt.attachEvent(\"onBeforeParse\", activate);\r\ngantt.attachEvent(\"onDataRender\", function(){\r\n\tgantt._cached_functions.deactivate();\r\n});\r\nvar deactivTimeout = null;\r\ngantt.attachEvent(\"onSmartRender\", function(){\r\n\tif(deactivTimeout)\r\n\t\tclearTimeout(deactivTimeout);\r\n\tdeactivTimeout = setTimeout(function(){\r\n\t\tgantt._cached_functions.deactivate();\r\n\t}, 1000);\r\n});\r\n\r\ngantt.attachEvent(\"onBeforeGanttReady\", function(){\r\n\tgantt._cached_functions.update_if_changed(gantt);\r\n\treturn true;\r\n});\r\n\r\n};","module.exports = function(gantt) {\r\n\r\n\tgantt.getTaskType = function (type) {\r\n\t\treturn \"task\";\r\n\t};\r\n};","module.exports = function(gantt) {\r\n\r\n\tgantt._extend_to_optional = function (lightbox_block) {\r\n\r\n\t\tvar duration = lightbox_block;\r\n\t\tvar optional_time = {\r\n\t\t\trender: duration.render,\r\n\t\t\tfocus: duration.focus,\r\n\t\t\tset_value: function (node, value, task, section) {\r\n\t\t\t\tvar mapping = gantt._resolve_default_mapping(section);\r\n\t\t\t\tif (!task[mapping.start_date] || (mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task))) {\r\n\t\t\t\t\toptional_time.disable(node, section);\r\n\t\t\t\t\tvar val = {};\r\n\r\n\t\t\t\t\tfor (var i in mapping) {\r\n\t\t\t\t\t\t//take default values from the time control from task start/end dates\r\n\t\t\t\t\t\tval[mapping[i]] = task[i];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, val, section);//set default value\r\n\t\t\t\t} else {\r\n\t\t\t\t\toptional_time.enable(node, section);\r\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, task, section);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget_value: function (node, task, section) {\r\n\t\t\t\tif (section.disabled) {\r\n\t\t\t\t\treturn {start_date: null};\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn duration.get_value.call(gantt, node, task, section);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tupdate_block: function (node, section) {\r\n\t\t\t\tgantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\r\n\t\t\t\tnode.style.display = section.disabled ? \"none\" : \"block\";\r\n\r\n\t\t\t\tif (section.button) {\r\n\t\t\t\t\tvar button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\r\n\t\t\t\t\t\tlabels = gantt.locale.labels;\r\n\r\n\t\t\t\t\tvar button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\r\n\r\n\t\t\t\t\tbutton.innerHTML = button_text;\r\n\t\t\t\t}\r\n\t\t\t\tgantt.resizeLightbox();\r\n\t\t\t},\r\n\t\t\tdisable: function (node, section) {\r\n\t\t\t\tsection.disabled = true;\r\n\t\t\t\toptional_time.update_block(node, section);\r\n\r\n\t\t\t},\r\n\t\t\tenable: function (node, section) {\r\n\t\t\t\tsection.disabled = false;\r\n\t\t\t\toptional_time.update_block(node, section);\r\n\t\t\t},\r\n\t\t\tbutton_click: function (index, el, section, container) {\r\n\t\t\t\tif (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar config = gantt._get_typed_lightbox_config()[index];\r\n\t\t\t\tif (config.disabled) {\r\n\t\t\t\t\toptional_time.enable(container, config);\r\n\t\t\t\t} else {\r\n\t\t\t\t\toptional_time.disable(container, config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn optional_time;\r\n\t};\r\n\r\n\tgantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\r\n\tgantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\r\n\r\n};","var __extends = require(\"../../../utils/extends\");\r\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\r\n\r\nmodule.exports = function (gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction ConstraintControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(ConstraintControl, _super);\r\n\r\n\tfunction isNonTimedConstraint(value) {\r\n\t\tif (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleTimeSelect(timeSelects, typeValue) {\r\n\t\tvar isNonTimed = isNonTimedConstraint(typeValue);\r\n\t\tfor (var i = 0; i < timeSelects.length; i++) {\r\n\t\t\ttimeSelects[i].disabled = isNonTimed;\r\n\t\t}\r\n\t}\r\n\r\n\tConstraintControl.prototype.render = function (sns) {\r\n\t\tvar height = (sns.height || 30) + \"px\";\r\n\t\tvar html = \"
\";\r\n\r\n\t\tvar options = [];\r\n\t\tfor (var i in gantt.config.constraint_types) {\r\n\t\t\toptions.push({ key: gantt.config.constraint_types[i], label: gantt.locale.labels[gantt.config.constraint_types[i]] });\r\n\t\t}\r\n\r\n\t\tsns.options = sns.options || options;\r\n\r\n\t\thtml += \"\" + htmlHelpers.getHtmlSelect(sns.options, [{ key: \"data-type\", value: \"constraint-type\" }]) + \"\";\r\n\r\n\t\tvar timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\r\n\t\thtml += \"\";\r\n\r\n\t\thtml += \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tConstraintControl.prototype.set_value = function (node, value, task, config) {\r\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\r\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\r\n\t\tvar map = config._time_format_order;\r\n\r\n\t\tvar mapping = gantt._resolve_default_mapping(config);\r\n\r\n\t\tif (!typeSelect._eventsInitialized) {\r\n\t\t\ttypeSelect.addEventListener(\"change\", function (e) {\r\n\t\t\t\ttoggleTimeSelect(timeSelects, e.target.value);\r\n\t\t\t});\r\n\t\t\ttypeSelect._eventsInitialized = true;\r\n\t\t}\r\n\r\n\t\tvar constraintDate = task[mapping.constraint_date] || new Date();\r\n\t\tgantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\r\n\r\n\t\tvar constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\r\n\t\ttypeSelect.value = constraintType;\r\n\t\ttoggleTimeSelect(timeSelects, constraintType);\r\n\t};\r\n\r\n\tConstraintControl.prototype.get_value = function (node, task, config) {\r\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\r\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\r\n\r\n\t\tvar constraintType = typeSelect.value;\r\n\t\tvar constraintDate = null;\r\n\t\tif (!isNonTimedConstraint(constraintType)) {\r\n\t\t\tconstraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tconstraint_type: constraintType,\r\n\t\t\tconstraint_date: constraintDate\r\n\t\t};\r\n\t};\r\n\r\n\tConstraintControl.prototype.focus = function (node) {\r\n\t\tgantt._focus(node.querySelector(\"select\"));\r\n\t};\r\n\r\n\treturn ConstraintControl;\r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./select_control\")(gantt);\r\n\r\n\tfunction ParentControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this; \r\n\r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(ParentControl, _super);\r\n\r\n\r\n\tParentControl.prototype.render = function(sns) {\r\n\t\treturn _display(sns, false);\r\n\t};\r\n\r\n\tParentControl.prototype.set_value = function(node, value, ev, config) {\r\n\t\tvar tmpDom = document.createElement(\"div\");\r\n\t\ttmpDom.innerHTML = _display(config, ev.id);\r\n\t\tvar newOptions = tmpDom.removeChild(tmpDom.firstChild);\r\n\t\tnode.onselect = null;\r\n\t\tnode.parentNode.replaceChild(newOptions, node);\r\n\r\n\t\treturn gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\r\n\t};\r\n\r\n\tfunction _display(config, item_id) {\r\n\t\tvar tasks = [],\r\n\t\t\toptions = [];\r\n\t\tif (item_id) {\r\n\t\t\ttasks = gantt.getTaskByTime();\r\n\t\t\tif (config.allow_root) {\r\n\t\t\t\ttasks.unshift({id: gantt.config.root_id, text: config.root_label || \"\"});\r\n\t\t\t}\r\n\t\t\ttasks = _filter(tasks, config, item_id);\r\n\t\t\tif (config.sort) {\r\n\t\t\t\ttasks.sort(config.sort);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar text = config.template || gantt.templates.task_text;\r\n\t\tfor (var i = 0; i < tasks.length; i++) {\r\n\t\t\tvar label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\r\n\t\t\tif (label === undefined) {\r\n\t\t\t\tlabel = \"\";\r\n\t\t\t}\r\n\t\t\toptions.push({\r\n\t\t\t\tkey: tasks[i].id,\r\n\t\t\t\tlabel: label\r\n\t\t\t});\r\n\t\t}\r\n\t\tconfig.options = options;\r\n\t\tconfig.map_to = config.map_to || \"parent\";\r\n\t\treturn gantt.form_blocks.select.render.apply(this, arguments);\r\n\t}\r\n\r\n\tfunction _filter(options, config, item_id) {\r\n\t\tvar filter = config.filter || function() {\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\t\toptions = options.slice(0);\r\n\r\n\t\tfor (var i = 0; i < options.length; i++) {\r\n\t\t\tvar task = options[i];\r\n\t\t\tif (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\r\n\t\t\t\toptions.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn options;\r\n\t}\r\n\treturn ParentControl;\r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction DurationControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this; \r\n\r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(DurationControl, _super);\r\n\r\n\tDurationControl.prototype.render = function(sns) {\r\n\t\tvar time = \"
\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"
\";\r\n\t\tvar label = gantt.locale.labels[gantt.config.duration_unit + \"s\"];\r\n\t\tvar singleDate = sns.single_date ? \" style='display:none'\" : \"\";\r\n\t\tvar readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\r\n\t\tvar ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\r\n\t\tvar duration = \"
\" +\r\n\t\t\t\"\" +\r\n\t\t\t\"\" +\r\n\t\t\t\" \" + label + \" \" +\r\n\t\t\t\"
\";\r\n\t\tvar html = \"
\" + time + \" \" + duration + \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tDurationControl.prototype.set_value = function(node, value, ev, config) {\r\n\t\tvar cfg = config;\r\n\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\tvar inps = node.getElementsByTagName(\"input\");\r\n\t\tvar duration = inps[1];\r\n\t\tvar btns = [inps[0], inps[2]];\r\n\t\tvar endspan = node.getElementsByTagName(\"span\")[0];\r\n\t\tvar map = config._time_format_order;\r\n\t\tvar mapping;\r\n\t\tvar start_date;\r\n\t\tvar end_date;\r\n\t\tvar duration_val;\r\n\r\n\t\tfunction _calc_date() {\r\n\t\t\tvar start_date = _getStartDate.call(gantt, node, config);\r\n\t\t\tvar duration = _getDuration.call(gantt, node, config);\r\n\t\t\tvar end_date = gantt.calculateEndDate({start_date: start_date, duration: duration, task: ev});\r\n\r\n\t\t\tendspan.innerHTML = gantt.templates.task_date(end_date);\r\n\t\t}\r\n\r\n\t\tfunction _change_duration(step) {\r\n\t\t\tvar value = duration.value;\r\n\r\n\t\t\tvalue = parseInt(value, 10);\r\n\t\t\tif (window.isNaN(value))\r\n\t\t\t\tvalue = 0;\r\n\t\t\tvalue += step;\r\n\t\t\tif (value < 1) value = 1;\r\n\t\t\tduration.value = value;\r\n\t\t\t_calc_date();\r\n\t\t}\r\n\r\n\t\tbtns[0].onclick = gantt.bind(function() {\r\n\t\t\t_change_duration(-1 * gantt.config.duration_step);\r\n\t\t}, this);\r\n\t\tbtns[1].onclick = gantt.bind(function() {\r\n\t\t\t_change_duration(1 * gantt.config.duration_step);\r\n\t\t}, this);\r\n\t\ts[0].onchange = _calc_date;\r\n\t\ts[1].onchange = _calc_date;\r\n\t\ts[2].onchange = _calc_date;\r\n\t\tif (s[3]) s[3].onchange = _calc_date;\r\n\r\n\t\tduration.onkeydown = gantt.bind(function(e) {\r\n\t\t\tvar code; \r\n\r\n\t\t\te = e || window.event;\r\n\t\t\tcode = (e.charCode || e.keyCode || e.which);\r\n\t\t\t\r\n\t\t\tif (code == gantt.constants.KEY_CODES.DOWN) {\r\n\t\t\t\t_change_duration(-1 * gantt.config.duration_step);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (code == gantt.constants.KEY_CODES.UP) {\r\n\t\t\t\t_change_duration(1 * gantt.config.duration_step);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\twindow.setTimeout(_calc_date, 1);\r\n\t\t}, this);\r\n\r\n\t\tduration.onchange = gantt.bind(_calc_date, this);\r\n\r\n\t\tmapping = gantt._resolve_default_mapping(config);\r\n\t\tif (typeof(mapping) === \"string\") mapping = {start_date: mapping};\r\n\r\n\t\tstart_date = ev[mapping.start_date] || new Date();\r\n\t\tend_date = ev[mapping.end_date] || gantt.calculateEndDate({\r\n\t\t\tstart_date: start_date,\r\n\t\t\tduration: 1,\r\n\t\t\ttask: ev\r\n\t\t});\r\n\t\tduration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: end_date,\r\n\t\t\ttask: ev\r\n\t\t});\r\n\r\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\r\n\t\tduration.value = duration_val;\r\n\t\t_calc_date();\r\n\t};\r\n\r\n\tDurationControl.prototype.get_value = function(node, ev, config) {\r\n\t\tvar startDate = _getStartDate(node, config);\r\n\t\tvar duration = _getDuration(node, config);\r\n\t\tvar endDate = gantt.calculateEndDate({start_date: startDate, duration: duration, task: ev});\r\n\r\n\t\tif (typeof gantt._resolve_default_mapping(config) == \"string\") {\r\n\t\t\treturn startDate;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart_date: startDate,\r\n\t\t\tend_date: endDate,\r\n\t\t\tduration: duration\r\n\t\t};\r\n\t};\r\n\r\n\tDurationControl.prototype.focus = function(node) {\r\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\r\n\t};\r\n\r\n\r\n\tfunction _getStartDate(node, config) {\r\n\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\tvar map = config._time_format_order;\r\n\t\tvar hours = 0;\r\n\t\tvar minutes = 0;\r\n\r\n\t\tif (gantt.defined(map[3])) {\r\n\t\t\tvar input = s[map[3]];\r\n\t\t\tvar time = parseInt(input.value, 10);\r\n\t\t\tif (isNaN(time) && input.hasAttribute(\"data-value\")) {\r\n\t\t\t\ttime = parseInt(input.getAttribute(\"data-value\"), 10);\r\n\t\t\t}\r\n\r\n\t\t\thours = Math.floor(time / 60);\r\n\t\t\tminutes = time % 60;\r\n\t\t}\r\n\t\treturn new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\r\n\t}\r\n\r\n\tfunction _getDuration(node) {\r\n\t\tvar duration = node.getElementsByTagName(\"input\")[1];\r\n\r\n\t\tduration = parseInt(duration.value, 10);\r\n\t\tif (!duration || window.isNaN(duration)) duration = 1;\r\n\t\tif (duration < 0) duration *= -1;\r\n\t\treturn duration;\r\n\t}\r\n\r\n\r\n\treturn DurationControl; \r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction RadioControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(RadioControl, _super);\r\n\r\n\tRadioControl.prototype.render = function(sns) {\r\n\t\tvar height = (sns.height || \"23\") + \"px\";\r\n\t\tvar html = \"
\";\r\n\r\n\t\tif (sns.options && sns.options.length) {\r\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\r\n\t\t\t\thtml += \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thtml += \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tRadioControl.prototype.set_value = function(node, value, ev, sns) {\r\n\t\tvar radio;\r\n\r\n\t\tif (!sns.options || !sns.options.length) return;\r\n\r\n\t\tradio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") ||\r\n\t\t\t\tnode.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\r\n\r\n\t\tif (!radio) return;\r\n\r\n\t\tif (!node._dhx_onchange && sns.onchange) {\r\n\t\t\tnode.onchange = sns.onchange;\r\n\t\t\tnode._dhx_onchange = true;\r\n\t\t}\r\n\r\n\t\tradio.checked = true;\r\n\t};\r\n\r\n\tRadioControl.prototype.get_value = function(node, ev) {\r\n\t\tvar result = node.querySelector(\"input[type=radio]:checked\");\r\n\r\n\t\treturn result ? result.value : \"\";\r\n\t};\r\n\r\n\tRadioControl.prototype.focus = function(node) {\r\n\t\tgantt._focus(node.querySelector(\"input[type=radio]\"));\r\n\t};\r\n\r\n\treturn RadioControl;\r\n};","var helpers = require(\"../../../utils/helpers\");\r\nvar __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction CheckboxControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(CheckboxControl, _super);\r\n\r\n\tCheckboxControl.prototype.render = function(sns) {\r\n\t\tvar height = (sns.height || \"23\") + \"px\";\r\n\t\tvar html = \"
\";\r\n\r\n\t\tif (sns.options && sns.options.length) {\r\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\r\n\t\t\t\thtml += \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tCheckboxControl.prototype.set_value = function(node, value, ev, sns) {\r\n\t\tvar checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\r\n\r\n\t\tif (!node._dhx_onchange && sns.onchange) {\r\n\t\t\tnode.onchange = sns.onchange;\r\n\t\t\tnode._dhx_onchange = true;\r\n\t\t}\r\n\r\n\t\thelpers.forEach(checkboxes, function(entry) {\r\n\t\t\tentry.checked = value ? value.indexOf(entry.value) >= 0 : false;\r\n\t\t});\r\n\t};\r\n\r\n\tCheckboxControl.prototype.get_value = function(node) {\r\n\t\treturn helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function(entry) {\r\n\t\t\treturn entry.value;\r\n\t\t});\r\n\t};\r\n\r\n\tCheckboxControl.prototype.focus = function(node) {\r\n\t\tgantt._focus(node.querySelector(\"input[type=checkbox]\"));\r\n\t};\r\n\r\n\treturn CheckboxControl;\r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function (gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction TimeControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(TimeControl, _super);\r\n\r\n\tTimeControl.prototype.render = function (sns) {\r\n\t\tvar time = gantt.form_blocks.getTimePicker.call(this, sns);\r\n\t\tvar html = \"
\";\r\n\t\thtml += time;\r\n\r\n\t\tif (sns.single_date) {\r\n\t\t\ttime = gantt.form_blocks.getTimePicker.call(this, sns, true);\r\n\t\t\thtml += \"\";\r\n\t\t} else {\r\n\t\t\thtml += \"  –  \";\r\n\t\t}\r\n\r\n\t\thtml += time;\r\n\t\thtml += \"
\";\r\n\t\treturn html;\r\n\t};\r\n\r\n\tTimeControl.prototype.set_value = function (node, value, ev, config) {\r\n\t\tvar cfg = config;\r\n\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\tvar map = config._time_format_order;\r\n\r\n\t\tif (cfg.auto_end_date) {\r\n\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\tstart_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\r\n\t\t\t\tend_date = gantt.calculateEndDate({ start_date: start_date, duration: 1, task: ev });\r\n\t\t\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\r\n\t\t\t};\r\n\t\t\tfor (var i = 0; i < 4; i++) {\r\n\t\t\t\ts[i].onchange = _update_lightbox_select;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar mapping = gantt._resolve_default_mapping(config);\r\n\r\n\t\tif (typeof (mapping) === \"string\") mapping = { start_date: mapping };\r\n\r\n\t\tvar start_date = ev[mapping.start_date] || new Date();\r\n\t\tvar end_date = ev[mapping.end_date] || gantt.calculateEndDate({\r\n\t\t\tstart_date: start_date,\r\n\t\t\tduration: 1,\r\n\t\t\ttask: ev\r\n\t\t});\r\n\r\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\r\n\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\r\n\t};\r\n\r\n\tTimeControl.prototype.get_value = function (node, ev, config) {\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar startDate;\r\n\t\tvar map = config._time_format_order;\r\n\t\tfunction _getEndDate(selects, map, startDate) {\r\n\t\t\tvar endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size);\r\n\r\n\t\t\tif (endDate <= startDate) {\r\n\t\t\t\treturn gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\r\n\t\t\t}\r\n\t\t\treturn endDate;\r\n\t\t}\r\n\r\n\t\tstartDate = gantt.form_blocks.getTimePickerValue(selects, config);\r\n\r\n\t\tif (typeof gantt._resolve_default_mapping(config) === \"string\") {\r\n\t\t\treturn startDate;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart_date: startDate,\r\n\t\t\tend_date: _getEndDate(selects, map, startDate)\r\n\t\t};\r\n\t};\r\n\r\n\tTimeControl.prototype.focus = function (node) {\r\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\r\n\t};\r\n\r\n\treturn TimeControl;\r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction TextareaControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this;\r\n\r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(TextareaControl, _super);\r\n\r\n\tTextareaControl.prototype.render = function(sns) {\r\n\t\tvar height = (sns.height || \"130\") + \"px\";\r\n\t\treturn \"
\";\r\n\t};\r\n\r\n\tTextareaControl.prototype.set_value = function(node, value) {\r\n\t\tgantt.form_blocks.textarea._get_input(node).value = value || \"\";\r\n\t};\r\n\r\n\tTextareaControl.prototype.get_value = function(node) {\r\n\t\treturn gantt.form_blocks.textarea._get_input(node).value;\r\n\t};\r\n\r\n\tTextareaControl.prototype.focus = function(node) {\r\n\t\tvar a = gantt.form_blocks.textarea._get_input(node);\r\n\t\tgantt._focus(a, true);\r\n\t};\r\n\r\n\tTextareaControl.prototype._get_input = function(node) {\r\n\t\treturn node.querySelector(\"textarea\");\r\n\t};\r\n\r\n\treturn TextareaControl;\r\n};","var __extends = require(\"../../../utils/extends\");\r\n\r\nmodule.exports = function(gantt) {\r\n\tvar _super = require(\"./base_control\")(gantt);\r\n\r\n\tfunction TemplateControl() {\r\n\t\tvar self = _super.apply(this, arguments) || this; \r\n\t\treturn self; \r\n\t}\r\n\r\n\t__extends(TemplateControl, _super);\r\n\r\n\r\n\tTemplateControl.prototype.render = function(sns) {\r\n\t\tvar height = (sns.height || \"30\") + \"px\";\r\n\t\treturn \"
\";\r\n\t};\r\n\r\n\tTemplateControl.prototype.set_value = function(node, value) {\r\n\t\tnode.innerHTML = value || \"\";\r\n\t};\r\n\r\n\tTemplateControl.prototype.get_value = function(node) {\r\n\t\treturn node.innerHTML || \"\";\r\n\t};\r\n\r\n\tTemplateControl.prototype.focus = function() {};\r\n\r\n\treturn TemplateControl;\r\n};","module.exports = function (gantt) {\r\n\tvar domHelpers = require(\"../../utils/dom_helpers\");\r\n\tvar helpers = require(\"../../utils/helpers\");\r\n\r\n\tvar TemplateControl = require(\"./controls/template_control\")(gantt);\r\n\tvar TextareaControl = require(\"./controls/textarea_control\")(gantt);\r\n\tvar TimeControl = require(\"./controls/time_control\")(gantt);\r\n\tvar SelectControl = require(\"./controls/select_control\")(gantt);\r\n\tvar CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\r\n\tvar RadioControl = require(\"./controls/radio_control\")(gantt);\r\n\tvar DurationControl = require(\"./controls/duration_control\")(gantt);\r\n\tvar ParentControl = require(\"./controls/parent_control\")(gantt);\r\n\tvar ResourcesControl = require(\"./controls/resources_control\")(gantt);\r\n\tvar ConstraintControl = require(\"./controls/constraint_control\")(gantt);\r\n\r\n\r\n\tgantt._lightbox_methods = {};\r\n\tgantt._lightbox_template = \"
 
\";\r\n\r\n\r\n\t//TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\r\n\tvar state = gantt.$services.getService(\"state\");\r\n\tstate.registerProvider(\"lightbox\", function () {\r\n\t\treturn {\r\n\t\t\tlightbox: gantt._lightbox_id\r\n\t\t};\r\n\t});\r\n\r\n\tgantt.showLightbox = function (id) {\r\n\t\tif (!id || gantt.isReadonly(this.getTask(id))) return;\r\n\t\tif (!this.callEvent(\"onBeforeLightbox\", [id])) return;\r\n\r\n\t\tvar task = this.getTask(id);\r\n\r\n\t\tvar box = this.getLightbox(this.getTaskType(task.type));\r\n\t\tthis._center_lightbox(box);\r\n\t\tthis.showCover();\r\n\t\tthis._fill_lightbox(id, box);\r\n\r\n\t\tthis._waiAria.lightboxVisibleAttr(box);\r\n\r\n\t\tthis.callEvent(\"onLightbox\", [id]);\r\n\t};\r\n\r\n\tfunction _is_chart_visible(gantt) {\r\n\t\tvar timeline = gantt.$ui.getView(\"timeline\");\r\n\t\tif (timeline && timeline.isVisible()) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgantt._get_timepicker_step = function () {\r\n\t\tif (this.config.round_dnd_dates) {\r\n\t\t\tvar step;\r\n\t\t\tif (_is_chart_visible(this)) {\r\n\t\t\t\tvar scale = gantt.getScale();\r\n\t\t\t\tstep = (helpers.getSecondsInUnit(scale.unit) * scale.step) / 60;//timepicker step is measured in minutes\r\n\t\t\t}\r\n\r\n\t\t\tif (!step || step >= 60 * 24) {\r\n\t\t\t\tstep = this.config.time_step;\r\n\t\t\t}\r\n\t\t\treturn step;\r\n\t\t}\r\n\t\treturn this.config.time_step;\r\n\t};\r\n\tgantt.getLabel = function (property, key) {\r\n\t\tvar sections = this._get_typed_lightbox_config();\r\n\t\tfor (var i = 0; i < sections.length; i++) {\r\n\t\t\tif (sections[i].map_to == property) {\r\n\t\t\t\tvar options = sections[i].options;\r\n\t\t\t\tfor (var j = 0; j < options.length; j++) {\r\n\t\t\t\t\tif (options[j].key == key) {\r\n\t\t\t\t\t\treturn options[j].label;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t};\r\n\r\n\tgantt.updateCollection = function (list_name, collection) {\r\n\t\tcollection = collection.slice(0);\r\n\t\tvar list = gantt.serverList(list_name);\r\n\t\tif (!list) return false;\r\n\t\tlist.splice(0, list.length);\r\n\t\tlist.push.apply(list, collection || []);\r\n\t\tgantt.resetLightbox();\r\n\t};\r\n\tgantt.getLightboxType = function () {\r\n\t\treturn this.getTaskType(this._lightbox_type);\r\n\t};\r\n\tgantt.getLightbox = function (type) {\r\n\t\tvar lightboxDiv;\r\n\t\tvar fullWidth;\r\n\t\tvar html;\r\n\t\tvar sns;\r\n\t\tvar ds;\r\n\t\tvar classNames = \"\";\r\n\r\n\t\tif (type === undefined)\r\n\t\t\ttype = this.getLightboxType();\r\n\r\n\t\tif (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\r\n\t\t\tthis._lightbox_type = this.getTaskType(type);\r\n\t\t\tlightboxDiv = document.createElement(\"div\");\r\n\t\t\tclassNames = \"gantt_cal_light\";\r\n\t\t\tfullWidth = this._is_lightbox_timepicker();\r\n\r\n\t\t\tif (gantt.config.wide_form || fullWidth)\r\n\t\t\t\tclassNames += \" gantt_cal_light_wide\";\r\n\r\n\t\t\tif (fullWidth) {\r\n\t\t\t\tgantt.config.wide_form = true;\r\n\t\t\t\tclassNames += \" gantt_cal_light_full\";\r\n\t\t\t}\r\n\r\n\t\t\tlightboxDiv.className = classNames;\r\n\r\n\t\t\tlightboxDiv.style.visibility = \"hidden\";\r\n\t\t\thtml = this._lightbox_template;\r\n\r\n\t\t\thtml += getHtmlButtons(this.config.buttons_left);\r\n\t\t\thtml += getHtmlButtons(this.config.buttons_right, true);\r\n\r\n\t\t\tlightboxDiv.innerHTML = html;\r\n\r\n\t\t\tgantt._waiAria.lightboxAttr(lightboxDiv);\r\n\r\n\t\t\tif (gantt.config.drag_lightbox) {\r\n\t\t\t\tlightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\r\n\t\t\t\tlightboxDiv.firstChild.onselectstart = function () {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t};\r\n\t\t\t\tlightboxDiv.firstChild.style.cursor = \"pointer\";\r\n\t\t\t\tgantt._init_dnd_events();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.insertBefore(lightboxDiv, document.body.firstChild);\r\n\t\t\tthis._lightbox = lightboxDiv;\r\n\r\n\t\t\tsns = this._get_typed_lightbox_config(type);\r\n\t\t\thtml = this._render_sections(sns);\r\n\r\n\t\t\tds = lightboxDiv.querySelector(\"div.gantt_cal_larea\");\r\n\t\t\tds.innerHTML = html;\r\n\r\n\t\t\tbindLabelsToInputs(sns);\r\n\r\n\t\t\t//sizes\r\n\t\t\tthis.resizeLightbox();\r\n\r\n\t\t\tthis._init_lightbox_events(this);\r\n\t\t\tlightboxDiv.style.display = \"none\";\r\n\t\t\tlightboxDiv.style.visibility = \"visible\";\r\n\t\t}\r\n\t\treturn this._lightbox;\r\n\t};\r\n\r\n\tgantt._render_sections = function (sns) {\r\n\t\tvar html = \"\";\r\n\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\tvar block = this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id = \"area_\" + this.uid();\r\n\r\n\t\t\tvar display = sns[i].hidden ? \" style='display:none'\" : \"\";\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button) {\r\n\t\t\t\tbutton = \"
\" + this.locale.labels[\"button_\" + sns[i].button] + \"
\";\r\n\t\t\t}\r\n\t\t\tif (this.config.wide_form) {\r\n\t\t\t\thtml += \"
\";\r\n\t\t\t}\r\n\t\t\thtml += \"
\" + block.render.call(this, sns[i]);\r\n\t\t\thtml += \"
\";\r\n\t\t}\r\n\t\treturn html;\r\n\t};\r\n\r\n\r\n\tgantt.resizeLightbox = function () {\r\n\t\tif (!this._lightbox) return;\r\n\r\n\t\tvar con = this._lightbox.childNodes[1];\r\n\t\tcon.style.height = \"0px\";\r\n\t\tcon.style.height = con.scrollHeight + \"px\";\r\n\t\tthis._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\r\n\t\tcon.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\r\n\t};\r\n\r\n\tgantt._center_lightbox = function (box) {\r\n\t\tif (box) {\r\n\t\t\tbox.style.display = \"block\";\r\n\r\n\t\t\tvar scroll_top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\r\n\t\t\tvar scroll_left = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\r\n\r\n\t\t\tvar view_height = window.innerHeight || document.documentElement.clientHeight;\r\n\r\n\t\t\tif (scroll_top) // if vertical scroll on window\r\n\t\t\t\tbox.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";\r\n\t\t\telse // vertical scroll on body\r\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\r\n\r\n\t\t\t// not quite accurate but used for compatibility reasons\r\n\t\t\tif (document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window\r\n\t\t\t\tbox.style.left = Math.round(scroll_left + (document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\r\n\t\t\telse // horizontal scroll on the body\r\n\t\t\t\tbox.style.left = Math.round((document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\r\n\t\t}\r\n\t};\r\n\tgantt.showCover = function () {\r\n\t\tif (this._cover) return;\r\n\r\n\t\tthis._cover = document.createElement(\"DIV\");\r\n\t\tthis._cover.className = \"gantt_cal_cover\";\r\n\t\tvar _document_height = ((document.height !== undefined) ? document.height : document.body.offsetHeight);\r\n\t\tvar _scroll_height = ((document.documentElement) ? document.documentElement.scrollHeight : 0);\r\n\t\tthis._cover.style.height = Math.max(_document_height, _scroll_height) + \"px\";\r\n\t\tdocument.body.appendChild(this._cover);\r\n\t};\r\n\r\n\r\n\tgantt._init_lightbox_events = function () {\r\n\t\tgantt.lightbox_events = {};\r\n\r\n\r\n\t\tgantt.lightbox_events.gantt_save_btn = function () {\r\n\t\t\tgantt._save_lightbox();\r\n\t\t};\r\n\r\n\r\n\t\tgantt.lightbox_events.gantt_delete_btn = function () {\r\n\t\t\tif (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif (gantt.isTaskExists(gantt._lightbox_id)) {\r\n\t\t\t\tgantt.$click.buttons[\"delete\"](gantt._lightbox_id);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.hideLightbox();\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\r\n\t\tgantt.lightbox_events.gantt_cancel_btn = function () {\r\n\t\t\tgantt._cancel_lightbox();\r\n\t\t};\r\n\r\n\r\n\t\tgantt.lightbox_events[\"default\"] = function (e, src) {\r\n\t\t\tif (src.getAttribute(\"data-dhx-button\")) {\r\n\t\t\t\tgantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\r\n\t\t\t} else {\r\n\t\t\t\tvar index, block, sec;\r\n\r\n\t\t\t\tvar className = domHelpers.getClassName(src);\r\n\t\t\t\tif (className.indexOf(\"gantt_custom_button\") != -1) {\r\n\t\t\t\t\tif (className.indexOf(\"gantt_custom_button_\") != -1) {\r\n\t\t\t\t\t\tindex = src.parentNode.getAttribute(\"data-index\");\r\n\t\t\t\t\t\tsec = src;\r\n\t\t\t\t\t\twhile (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\r\n\t\t\t\t\t\t\tsec = sec.parentNode;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tindex = src.getAttribute(\"data-index\");\r\n\t\t\t\t\t\tsec = src.parentNode;\r\n\t\t\t\t\t\tsrc = src.firstChild;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar sections = gantt._get_typed_lightbox_config();\r\n\r\n\t\t\t\tif (index) {\r\n\t\t\t\t\tindex = index * 1;\r\n\t\t\t\t\tblock = gantt.form_blocks[sections[index * 1].type];\r\n\t\t\t\t\tblock.button_click(index, src, sec, sec.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.event(gantt.getLightbox(), \"click\", function (e) {\r\n\t\t\te = e || window.event;\r\n\t\t\tvar src = e.target ? e.target : e.srcElement;\r\n\r\n\t\t\tvar className = domHelpers.getClassName(src);\r\n\t\t\tif (!className) {\r\n\t\t\t\tsrc = src.previousSibling;\r\n\t\t\t\tclassName = domHelpers.getClassName(src);\r\n\t\t\t}\r\n\t\t\tif (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\r\n\t\t\t\tsrc = src.firstChild;\r\n\t\t\t\tclassName = domHelpers.getClassName(src);\r\n\t\t\t}\r\n\t\t\tif (src && className) {\r\n\t\t\t\tvar func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\r\n\t\t\t\treturn func(e, src);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tgantt.getLightbox().onkeydown = function (e) {\r\n\t\t\tvar event = e || window.event;\r\n\t\t\tvar target = e.target || e.srcElement;\r\n\t\t\tvar buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\r\n\r\n\t\t\tswitch ((e || event).keyCode) {\r\n\t\t\t\tcase gantt.constants.KEY_CODES.SPACE: {\r\n\t\t\t\t\tif ((e || event).shiftKey) return;\r\n\t\t\t\t\tif (buttonTarget && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase gantt.keys.edit_save:\r\n\t\t\t\t\tif ((e || event).shiftKey) return;\r\n\t\t\t\t\tif (buttonTarget && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tgantt._save_lightbox();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase gantt.keys.edit_cancel:\r\n\t\t\t\t\tgantt._cancel_lightbox();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\tgantt._cancel_lightbox = function () {\r\n\t\tvar task = this.getLightboxValues();\r\n\t\tthis.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\r\n\t\tif (gantt.isTaskExists(task.id) && task.$new) {\r\n\t\t\tthis.silent(function () {\r\n\t\t\t\tgantt.$data.tasksStore.removeItem(task.id);\r\n\t\t\t\tgantt._update_flags(task.id, null);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\t\tthis.hideLightbox();\r\n\t};\r\n\r\n\tgantt._save_lightbox = function () {\r\n\t\tvar task = this.getLightboxValues();\r\n\t\tif (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new]))\r\n\t\t\treturn;\r\n\r\n\t\tif (task.$new) {\r\n\t\t\tdelete task.$new;\r\n\t\t\tthis.addTask(task, task.parent, this.getTaskIndex(task.id));\r\n\t\t} else if (this.isTaskExists(task.id)) {\r\n\t\t\tthis.mixin(this.getTask(task.id), task, true);\r\n\t\t\tthis.refreshTask(task.id);\r\n\t\t\tthis.updateTask(task.id);\r\n\t\t}\r\n\t\tthis.refreshData();\r\n\r\n\t\t// TODO: do we need any blockable events here to prevent closing lightbox?\r\n\t\tthis.hideLightbox();\r\n\t};\r\n\r\n\tgantt._resolve_default_mapping = function (section) {\r\n\t\tvar mapping = section.map_to;\r\n\t\tvar time_controls = { \"time\": true, \"time_optional\": true, \"duration\": true, \"duration_optional\": true };\r\n\t\tif (time_controls[section.type]) {\r\n\t\t\tif (section.map_to == \"auto\") {\r\n\t\t\t\tmapping = { start_date: \"start_date\", end_date: \"end_date\", duration: \"duration\" };\r\n\t\t\t} else if (typeof (section.map_to) === \"string\") {\r\n\t\t\t\tmapping = { start_date: section.map_to };\r\n\t\t\t}\r\n\t\t} else if (section.type === \"constraint\") {\r\n\t\t\tif (!section.map_to || typeof (section.map_to) === \"string\") {\r\n\t\t\t\tmapping = { constraint_type: \"constraint_type\", constraint_date: \"constraint_date\" };\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn mapping;\r\n\t};\r\n\r\n\tgantt.getLightboxValues = function () {\r\n\t\tvar task = {};\r\n\r\n\t\tif (gantt.isTaskExists(this._lightbox_id)) {\r\n\t\t\ttask = this.mixin({}, this.getTask(this._lightbox_id));\r\n\t\t}\r\n\r\n\t\tvar sns = this._get_typed_lightbox_config();\r\n\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\tvar node = document.getElementById(sns[i].id);\r\n\t\t\tnode = (node ? node.nextSibling : node);\r\n\t\t\tvar block = this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue;\r\n\t\t\tvar res = block.get_value.call(this, node, task, sns[i]);\r\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\r\n\t\t\tif (typeof map_to == \"string\" && map_to != \"auto\") {\r\n\t\t\t\ttask[map_to] = res;\r\n\t\t\t} else if (typeof map_to == \"object\") {\r\n\t\t\t\tfor (var property in map_to) {\r\n\t\t\t\t\tif (map_to[property])\r\n\t\t\t\t\t\ttask[map_to[property]] = res[property];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn task;\r\n\t};\r\n\r\n\r\n\tgantt.hideLightbox = function () {\r\n\t\tvar box = this.getLightbox();\r\n\t\tif (box) box.style.display = \"none\";\r\n\r\n\t\tthis._waiAria.lightboxHiddenAttr(box);\r\n\t\tthis._lightbox_id = null;\r\n\r\n\t\tthis.hideCover();\r\n\t\tthis.callEvent(\"onAfterLightbox\", []);\r\n\t};\r\n\tgantt.hideCover = function () {\r\n\t\tif (this._cover)\r\n\t\t\tthis._cover.parentNode.removeChild(this._cover);\r\n\t\tthis._cover = null;\r\n\t};\r\n\r\n\tgantt.resetLightbox = function () {\r\n\t\tif (gantt._lightbox && !gantt._custom_lightbox)\r\n\t\t\tgantt._lightbox.parentNode.removeChild(gantt._lightbox);\r\n\t\tgantt._lightbox = null;\r\n\t\tgantt.hideCover();\r\n\t};\r\n\tgantt._set_lightbox_values = function (data, box) {\r\n\t\tvar task = data;\r\n\t\tvar s = box.getElementsByTagName(\"span\");\r\n\t\tvar lightboxHeader = [];\r\n\t\tif (gantt.templates.lightbox_header) {\r\n\t\t\tlightboxHeader.push(\"\");\r\n\t\t\tlightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\r\n\t\t\ts[1].innerHTML = \"\";\r\n\t\t\ts[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\r\n\t\t} else {\r\n\t\t\tlightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\r\n\t\t\tlightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\r\n\t\t\ts[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\r\n\t\t\ts[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\r\n\t\t}\r\n\t\ts[1].innerHTML = lightboxHeader[0];\r\n\t\ts[2].innerHTML = lightboxHeader[1];\r\n\r\n\t\tgantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\r\n\r\n\t\tvar sns = this._get_typed_lightbox_config(this.getLightboxType());\r\n\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\tvar section = sns[i];\r\n\r\n\t\t\tif (!this.form_blocks[section.type]) {\r\n\t\t\t\tcontinue;//skip incorrect sections, same check is done during rendering\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar node = document.getElementById(section.id).nextSibling;\r\n\t\t\tvar block = this.form_blocks[section.type];\r\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\r\n\t\t\tvar value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\r\n\t\t\tblock.set_value.call(gantt, node, value, task, section);\r\n\r\n\t\t\tif (section.focus)\r\n\t\t\t\tblock.focus.call(gantt, node);\r\n\t\t}\r\n\t\tif (data.id)\r\n\t\t\tgantt._lightbox_id = data.id;\r\n\t};\r\n\tgantt._fill_lightbox = function (id, box) {\r\n\t\tvar task = this.getTask(id);\r\n\t\tthis._set_lightbox_values(task, box);\r\n\t};\r\n\r\n\r\n\tgantt.getLightboxSection = function (name) {\r\n\t\tvar config = this._get_typed_lightbox_config();\r\n\t\tvar i = 0;\r\n\t\tfor (i; i < config.length; i++)\r\n\t\t\tif (config[i].name == name)\r\n\t\t\t\tbreak;\r\n\t\tvar section = config[i];\r\n\t\tif (!section)\r\n\t\t\treturn null;\r\n\r\n\t\tif (!this._lightbox)\r\n\t\t\tthis.getLightbox();\r\n\t\tvar header = document.getElementById(section.id);\r\n\t\tvar node = header.nextSibling;\r\n\r\n\t\tvar result = {\r\n\t\t\tsection: section,\r\n\t\t\theader: header,\r\n\t\t\tnode: node,\r\n\t\t\tgetValue: function (ev) {\r\n\t\t\t\treturn gantt.form_blocks[section.type].get_value.call(gantt, node, (ev || {}), section);\r\n\t\t\t},\r\n\t\t\tsetValue: function (value, ev) {\r\n\t\t\t\treturn gantt.form_blocks[section.type].set_value.call(gantt, node, value, (ev || {}), section);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\r\n\t\treturn handler ? handler(result) : result;\r\n\t};\r\n\r\n\tgantt._lightbox_methods.get_template_control = function (result) {\r\n\t\tresult.control = result.node;\r\n\t\treturn result;\r\n\t};\r\n\tgantt._lightbox_methods.get_select_control = function (result) {\r\n\t\tresult.control = result.node.getElementsByTagName(\"select\")[0];\r\n\t\treturn result;\r\n\t};\r\n\tgantt._lightbox_methods.get_textarea_control = function (result) {\r\n\t\tresult.control = result.node.getElementsByTagName(\"textarea\")[0];\r\n\t\treturn result;\r\n\t};\r\n\tgantt._lightbox_methods.get_time_control = function (result) {\r\n\t\tresult.control = result.node.getElementsByTagName(\"select\"); // array\r\n\t\treturn result;\r\n\t};\r\n\r\n\r\n\tgantt._init_dnd_events = function () {\r\n\t\tthis.event(document.body, \"mousemove\", gantt._move_while_dnd);\r\n\t\tthis.event(document.body, \"mouseup\", gantt._finish_dnd);\r\n\t\tgantt._init_dnd_events = function () {\r\n\t\t};\r\n\t};\r\n\tgantt._move_while_dnd = function (e) {\r\n\t\tif (gantt._dnd_start_lb) {\r\n\t\t\tif (!document.gantt_unselectable) {\r\n\t\t\t\tdocument.body.className += \" gantt_unselectable\";\r\n\t\t\t\tdocument.gantt_unselectable = true;\r\n\t\t\t}\r\n\t\t\tvar lb = gantt.getLightbox();\r\n\t\t\tvar now = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\r\n\t\t\tlb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\r\n\t\t\tlb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\r\n\t\t}\r\n\t};\r\n\tgantt._ready_to_dnd = function (e) {\r\n\t\tvar lb = gantt.getLightbox();\r\n\t\tgantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\r\n\t\tgantt._dnd_start_lb = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\r\n\t};\r\n\tgantt._finish_dnd = function () {\r\n\t\tif (gantt._lb_start) {\r\n\t\t\tgantt._lb_start = gantt._dnd_start_lb = false;\r\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_unselectable\", \"\");\r\n\t\t\tdocument.gantt_unselectable = false;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tgantt._focus = function (node, select) {\r\n\t\tif (node && node.focus) {\r\n\t\t\tif (gantt.config.touch) {\r\n\t\t\t\t//do not focus editor, to prevent auto-zoom\r\n\t\t\t} else {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (select && node.select) node.select();\r\n\t\t\t\t\tnode.focus();\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t// silent errors\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tgantt.form_blocks = {\r\n\t\tgetTimePicker: function (sns, hidden) {\r\n\t\t\tvar html = \"\";\r\n\t\t\tvar cfg = this.config;\r\n\t\t\tvar i;\r\n\t\t\tvar options;\r\n\t\t\tvar ariaAttrs;\r\n\t\t\tvar readonly;\r\n\t\t\tvar display;\r\n\t\t\tvar settings = {\r\n\t\t\t\tfirst: 0,\r\n\t\t\t\tlast: 24 * 60,\r\n\t\t\t\tdate: this.date.date_part(new Date(gantt._min_date.valueOf())),\r\n\t\t\t\ttimeFormat: getTimeFormat(sns)\r\n\t\t\t};\r\n\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = { size: 0 };\r\n\r\n\t\t\tif (gantt.config.limit_time_select) {\r\n\t\t\t\tsettings.first = 60 * cfg.first_hour;\r\n\t\t\t\tsettings.last = 60 * cfg.last_hour + 1;\r\n\t\t\t\tsettings.date.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = 0; i < settings.timeFormat.length; i++) {\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions = getHtmlTimePickerOptions(sns, i, settings);\r\n\r\n\t\t\t\tif (options) {\r\n\t\t\t\t\tariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\r\n\t\t\t\t\treadonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\tdisplay = hidden ? \" style='display:none' \" : \"\";\r\n\t\t\t\t\thtml += \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tgetTimePickerValue: function (selects, config, offset) {\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar needSetTime = gantt.defined(map[3]);\r\n\r\n\t\t\tvar time;\r\n\t\t\tvar hours = 0;\r\n\t\t\tvar minutes = 0;\r\n\r\n\t\t\tvar mapOffset = offset || 0;\r\n\r\n\t\t\tif (needSetTime) {\r\n\t\t\t\ttime = parseInt(selects[map[3] + mapOffset].value, 10);\r\n\t\t\t\thours = Math.floor(time / 60);\r\n\t\t\t\tminutes = time % 60;\r\n\t\t\t}\r\n\t\t\treturn new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\r\n\t\t},\r\n\r\n\t\t_fill_lightbox_select: function (s, i, d, map) {\r\n\t\t\ts[i + map[0]].value = d.getDate();\r\n\t\t\ts[i + map[1]].value = d.getMonth();\r\n\t\t\ts[i + map[2]].value = d.getFullYear();\r\n\t\t\tif (gantt.defined(map[3])) {\r\n\t\t\t\tvar v = d.getHours() * 60 + d.getMinutes();\r\n\t\t\t\tv = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\r\n\t\t\t\tvar input = s[i + map[3]];\r\n\t\t\t\tinput.value = v;\r\n\t\t\t\t//in case option not shown\r\n\t\t\t\tinput.setAttribute(\"data-value\", v);\r\n\t\t\t}\r\n\t\t},\r\n\t\ttemplate: new TemplateControl(),\r\n\t\ttextarea: new TextareaControl(),\r\n\t\tselect: new SelectControl(),\r\n\t\ttime: new TimeControl(),\r\n\t\tduration: new DurationControl(),\r\n\t\tparent: new ParentControl(),\r\n\t\tradio: new RadioControl(),\r\n\t\tcheckbox: new CheckboxControl(),\r\n\t\tresources: new ResourcesControl(),\r\n\t\tconstraint: new ConstraintControl()\r\n\t};\r\n\r\n\tgantt._is_lightbox_timepicker = function () {\r\n\t\tvar s = this._get_typed_lightbox_config();\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tif (s[i].name == \"time\" && s[i].type == \"time\")\r\n\t\t\t\treturn true;\r\n\t\treturn false;\r\n\t};\r\n\r\n\tgantt._dhtmlx_confirm = function (message, title, callback, ok) {\r\n\t\tif (!message)\r\n\t\t\treturn callback();\r\n\t\tvar opts = { text: message };\r\n\t\tif (title)\r\n\t\t\topts.title = title;\r\n\t\tif (ok) {\r\n\t\t\topts.ok = ok;\r\n\t\t}\r\n\t\tif (callback) {\r\n\t\t\topts.callback = function (result) {\r\n\t\t\t\tif (result)\r\n\t\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\tgantt.confirm(opts);\r\n\t};\r\n\r\n\tfunction _get_type_name(type_value) {\r\n\t\tfor (var i in this.config.types) {\r\n\t\t\tif (this.config.types[i] == type_value) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"task\";\r\n\t}\r\n\r\n\tgantt._get_typed_lightbox_config = function (type) {\r\n\t\tif (type === undefined) {\r\n\t\t\ttype = this.getLightboxType();\r\n\t\t}\r\n\r\n\t\tvar field = _get_type_name.call(this, type);\r\n\r\n\t\tif (gantt.config.lightbox[field + \"_sections\"]) {\r\n\t\t\treturn gantt.config.lightbox[field + \"_sections\"];\r\n\t\t} else {\r\n\t\t\treturn gantt.config.lightbox.sections;\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._silent_redraw_lightbox = function (type) {\r\n\t\tvar oldType = this.getLightboxType();\r\n\r\n\t\tif (this.getState().lightbox) {\r\n\t\t\tvar taskId = this.getState().lightbox;\r\n\t\t\tvar formData = this.getLightboxValues(),\r\n\t\t\t\ttask = this.copy(this.getTask(taskId));\r\n\r\n\t\t\tthis.resetLightbox();\r\n\r\n\t\t\tvar updTask = this.mixin(task, formData, true);\r\n\t\t\tvar box = this.getLightbox(type ? type : undefined);\r\n\t\t\tthis._center_lightbox(this.getLightbox());\r\n\t\t\tthis._set_lightbox_values(updTask, box);\r\n\t\t\tthis.showCover();\r\n\t\t} else {\r\n\t\t\tthis.resetLightbox();\r\n\t\t\tthis.getLightbox(type ? type : undefined);\r\n\t\t}\r\n\t\tthis.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\r\n\t};\r\n\r\n\tfunction bindLabelsToInputs(sns) {\r\n\t\tvar section;\r\n\t\tvar label;\r\n\t\tvar labelBlock;\r\n\t\tvar inputBlock;\r\n\t\tvar input;\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 0; i < sns.length; i++) {\r\n\t\t\tsection = sns[i];\r\n\t\t\tlabelBlock = document.getElementById(section.id);\r\n\r\n\t\t\tif (!section.id || !labelBlock) continue;\r\n\r\n\t\t\tlabel = labelBlock.querySelector(\"label\");\r\n\t\t\tinputBlock = labelBlock.nextSibling;\r\n\r\n\t\t\tif (!inputBlock) continue;\r\n\r\n\t\t\tinput = inputBlock.querySelector(\"input, select, textarea\");\r\n\t\t\tif (input) {\r\n\t\t\t\tinput.id = input.id || \"input_\" + gantt.uid();\r\n\t\t\t\tsection.inputId = input.id;\r\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getHtmlButtons(buttons, floatRight) {\r\n\t\tvar button;\r\n\t\tvar ariaAttr;\r\n\t\tvar html = \"\";\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 0; i < buttons.length; i++) {\r\n\t\t\t// needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\r\n\t\t\tbutton = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\r\n\r\n\t\t\tariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\r\n\t\t\thtml += \"
\" + gantt.locale.labels[button] + \"
\";\r\n\t\t}\r\n\t\treturn html;\r\n\t}\r\n\r\n\tfunction getTimeFormat(sns) {\r\n\t\tvar scale;\r\n\t\tvar unit;\r\n\t\tvar result;\r\n\r\n\t\tif (sns.time_format) return sns.time_format;\r\n\r\n\t\t// default order\r\n\t\tresult = [\"%d\", \"%m\", \"%Y\"];\r\n\t\tscale = gantt.getScale();\r\n\t\tunit = scale ? scale.unit : gantt.config.duration_unit;\r\n\t\tif (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\r\n\t\t\tresult.push(\"%H:%i\");\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction getHtmlTimePickerOptions(sns, index, settings) {\r\n\t\tvar range;\r\n\t\tvar offset;\r\n\t\tvar start_year;\r\n\t\tvar end_year;\r\n\t\tvar i;\r\n\t\tvar time;\r\n\t\tvar diff;\r\n\t\tvar tdate;\r\n\t\tvar html = \"\";\r\n\r\n\t\tswitch (settings.timeFormat[index]) {\r\n\t\t\tcase \"%Y\":\r\n\t\t\t\tsns._time_format_order[2] = index;\r\n\t\t\t\tsns._time_format_order.size++;\r\n\t\t\t\t//year\r\n\r\n\t\t\t\tif (sns.year_range) {\r\n\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t// if\r\n\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trange = range || 10;\r\n\t\t\t\toffset = offset || Math.floor(range / 2);\r\n\t\t\t\tstart_year = start_year || settings.date.getFullYear() - offset;\r\n\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\tfor (i = start_year; i < end_year; i++)\r\n\t\t\t\t\thtml += \"\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%m\":\r\n\t\t\t\tsns._time_format_order[1] = index;\r\n\t\t\t\tsns._time_format_order.size++;\r\n\t\t\t\t//month\r\n\t\t\t\tfor (i = 0; i < 12; i++)\r\n\t\t\t\t\thtml += \"\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%d\":\r\n\t\t\t\tsns._time_format_order[0] = index;\r\n\t\t\t\tsns._time_format_order.size++;\r\n\t\t\t\t//days\r\n\t\t\t\tfor (i = 1; i < 32; i++)\r\n\t\t\t\t\thtml += \"\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%H:%i\":\r\n\t\t\t\t// var last = 24*60, first = 0;\r\n\t\t\t\tsns._time_format_order[3] = index;\r\n\t\t\t\tsns._time_format_order.size++;\r\n\t\t\t\t//hours\r\n\t\t\t\ti = settings.first;\r\n\t\t\t\ttdate = settings.date.getDate();\r\n\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\twhile (i < settings.last) {\r\n\t\t\t\t\ttime = gantt.templates.time_picker(settings.date);\r\n\t\t\t\t\thtml += \"\";\r\n\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\tsettings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\r\n\t\t\t\t\tdiff = (settings.date.getDate() != tdate) ? 1 : 0; // moved or not to the next day\r\n\t\t\t\t\ti = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn html;\r\n\t}\r\n};","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","var helpers = require(\"../utils/helpers\");\r\n\r\nmodule.exports = function(gantt) {\r\n\r\n\tgantt.isUnscheduledTask = function (task) {\r\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isUnscheduledTask. Task object was expected\");\r\n\t\treturn (!!task.unscheduled || !task.start_date);\r\n\t};\r\n\r\n\tgantt._isAllowedUnscheduledTask = function (task) {\r\n\t\treturn !!(task.unscheduled && gantt.config.show_unscheduled);\r\n\t};\r\n\r\n\tgantt.isTaskVisible = function (id) {\r\n\t\tif (!this.isTaskExists(id))\r\n\t\t\treturn false;\r\n\r\n\t\tvar task = this.getTask(id);\r\n\r\n\t\tvar taskStart = task.start_date ? task.start_date.valueOf() : null;\r\n\t\tvar taskEnd = task.end_date ? task.end_date.valueOf() : null;\r\n\r\n\t\tif (!(gantt._isAllowedUnscheduledTask(task) || (taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf()))){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn !!(gantt.getGlobalTaskIndex(id) >= 0);\r\n\t};\r\n\r\n\tgantt._getProjectEnd = function() {\r\n\t\tif(gantt.config.project_end){\r\n\t\t\treturn gantt.config.project_end;\r\n\t\t}else{\r\n\t\t\tvar tasks = gantt.getTaskByTime();\r\n\t\t\ttasks = tasks.sort(function (a, b) {\r\n\t\t\t\treturn +a.end_date > +b.end_date ? 1 : -1;\r\n\t\t\t});\r\n\t\t\treturn tasks.length ? tasks[tasks.length - 1].end_date : null;\r\n\t\t}\r\n\t};\r\n\tgantt._getProjectStart = function() {\r\n\t\tif (gantt.config.project_start) {\r\n\t\t\treturn gantt.config.project_start;\r\n\t\t}\r\n\r\n\t\t// use timeline start if project start is not specified\r\n\t\tif (gantt.config.start_date) {\r\n\t\t\treturn gantt.config.start_date;\r\n\t\t}\r\n\t\tif (gantt.getState().min_date) {\r\n\t\t\treturn gantt.getState().min_date;\r\n\t\t}\r\n\r\n\t\t// earliest task start if neither project start nor timeline are specified\r\n\t\tvar tasks = gantt.getTaskByTime();\r\n\t\ttasks = tasks.sort(function (a, b) {\r\n\t\t\treturn +a.start_date > +b.start_date ? 1 : -1;\r\n\t\t});\r\n\t\treturn tasks.length ? tasks[0].start_date : null;\r\n\t};\r\n\r\n\tgantt._defaultTaskDate = function (item, parent_id) {\r\n\t\tvar parent = (parent_id && parent_id != gantt.config.root_id) ? gantt.getTask(parent_id) : false,\r\n\t\t\tstartDate = null;\r\n\t\tif (parent) {\r\n\t\t\tif(gantt.config.schedule_from_end){\r\n\t\t\t\tstartDate = gantt.calculateEndDate({\r\n\t\t\t\t\tstart_date: parent.end_date,\r\n\t\t\t\t\tduration: - gantt.config.duration_step,\r\n\t\t\t\t\ttask:item\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tstartDate = parent.start_date;\r\n\t\t\t}\r\n\r\n\t\t} else if(gantt.config.schedule_from_end) {\r\n\t\t\tstartDate = gantt.calculateEndDate({\r\n\t\t\t\tstart_date: gantt._getProjectEnd(),\r\n\t\t\t\tduration: - gantt.config.duration_step,\r\n\t\t\t\ttask:item\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tvar first = gantt.getTaskByIndex(0);\r\n\t\t\tstartDate = first ? (first.start_date ? first.start_date : (first.end_date ? gantt.calculateEndDate({\r\n\t\t\t\tstart_date: first.end_date,\r\n\t\t\t\tduration: -gantt.config.duration_step,\r\n\t\t\t\ttask:item\r\n\t\t\t}) : null)) : gantt.config.start_date || gantt.getState().min_date;\r\n\t\t}\r\n\t\tgantt.assert(startDate, \"Invalid dates\");\r\n\t\treturn new Date(startDate);\r\n\t};\r\n\r\n\tgantt._set_default_task_timing = function (task) {\r\n\t\ttask.start_date = task.start_date || gantt._defaultTaskDate(task, gantt.getParent(task));\r\n\t\ttask.duration = task.duration || gantt.config.duration_step;\r\n\t\ttask.end_date = task.end_date || gantt.calculateEndDate(task);\r\n\t};\r\n\r\n\tgantt.createTask = function (item, parent, index) {\r\n\t\titem = item || {};\r\n\t\tif (!gantt.defined(item.id))\r\n\t\t\titem.id = gantt.uid();\r\n\r\n\t\tif (!item.start_date) {\r\n\t\t\titem.start_date = gantt._defaultTaskDate(item, parent);\r\n\t\t}\r\n\t\tif (item.text === undefined) {\r\n\t\t\titem.text = gantt.locale.labels.new_task;\r\n\t\t}\r\n\t\tif (item.duration === undefined) {\r\n\t\t\titem.duration = 1;\r\n\t\t}\r\n\r\n\t\tif (this.isTaskExists(parent)) {\r\n\t\t\tthis.setParent(item, parent, true);\r\n\t\t\tvar parentObj = this.getTask(parent);\r\n\t\t\tparentObj.$open = true;\r\n\t\t}\r\n\r\n\t\tif (!this.callEvent(\"onTaskCreated\", [item])) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (this.config.details_on_create) {\r\n\t\t\titem.$new = true;\r\n\t\t\tthis.silent(function(){\r\n\t\t\t\tgantt.$data.tasksStore.addItem(item, index);\r\n\t\t\t});\r\n\t\t\tthis.selectTask(item.id);\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.showLightbox(item.id);\r\n\t\t} else {\r\n\t\t\tif (this.addTask(item, parent, index)) {\r\n\t\t\t\tthis.showTask(item.id);\r\n\t\t\t\tthis.selectTask(item.id);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn item.id;\r\n\t};\r\n\r\n\tgantt._update_flags = function (oldid, newid) {\r\n\t\t// TODO: need a proper way to update all possible flags\r\n\t\tvar store = gantt.$data.tasksStore;\r\n\t\tif (oldid === undefined) {\r\n\t\t\tthis._lightbox_id = null;\r\n\r\n\t\t\tstore.silent(function(){\r\n\t\t\t\tstore.unselect();\r\n\t\t\t});\r\n\r\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag) {\r\n\t\t\t\tthis._tasks_dnd.drag.id = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._lightbox_id == oldid)\r\n\t\t\t\tthis._lightbox_id = newid;\r\n\r\n\t\t\t// TODO: probably can be removed\r\n\t\t\tif (store.getSelectedId() == oldid) {\r\n\t\t\t\tstore.silent(function(){\r\n\t\t\t\t\tstore.unselect(oldid);\r\n\t\t\t\t\tstore.select(newid);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\r\n\t\t\t\tthis._tasks_dnd.drag.id = newid;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._get_task_timing_mode = function (task, force) {\r\n\t\tvar task_type = this.getTaskType(task.type);\r\n\r\n\t\tvar state = {\r\n\t\t\ttype: task_type,\r\n\t\t\t$no_start: false,\r\n\t\t\t$no_end: false\r\n\t\t};\r\n\r\n\t\tif (!force && task_type == task.$rendered_type) {\r\n\t\t\tstate.$no_start = task.$no_start;\r\n\t\t\tstate.$no_end = task.$no_end;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\tif (task_type == this.config.types.project) {\r\n\t\t\t//project duration is always defined by children duration\r\n\t\t\tstate.$no_end = state.$no_start = true;\r\n\t\t} else if (task_type != this.config.types.milestone) {\r\n\t\t\t//tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\r\n\t\t\tstate.$no_end = !(task.end_date || task.duration);\r\n\t\t\tstate.$no_start = !task.start_date;\r\n\r\n\t\t\tif (this._isAllowedUnscheduledTask(task)) {\r\n\t\t\t\tstate.$no_end = state.$no_start = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn state;\r\n\t};\r\n\r\n\tgantt._init_task_timing = function (task) {\r\n\t\tvar task_mode = gantt._get_task_timing_mode(task, true);\r\n\r\n\t\tvar dirty = task.$rendered_type != task_mode.type;\r\n\r\n\t\tvar task_type = task_mode.type;\r\n\r\n\t\tif (dirty) {\r\n\t\t\ttask.$no_start = task_mode.$no_start;\r\n\t\t\ttask.$no_end = task_mode.$no_end;\r\n\t\t\ttask.$rendered_type = task_mode.type;\r\n\t\t}\r\n\r\n\t\tif (dirty && task_type != this.config.types.milestone) {\r\n\t\t\tif (task_type == this.config.types.project) {\r\n\t\t\t\t//project duration is always defined by children duration\r\n\t\t\t\tthis._set_default_task_timing(task);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (task_type == this.config.types.milestone) {\r\n\t\t\ttask.end_date = task.start_date;\r\n\t\t}\r\n\t\tif (task.start_date && task.end_date) {\r\n\t\t\ttask.duration = this.calculateDuration(task);\r\n\t\t}\r\n\r\n\t\tif (!task.end_date) {\r\n\t\t\ttask.end_date = task.start_date;\r\n\t\t}\r\n\r\n\t\ttask.duration = task.duration || 0;\r\n\t};\r\n\r\n\tgantt.isSummaryTask = function (task) {\r\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSummaryTask. Task object was expected\");\r\n\r\n\t\tvar mode = gantt._get_task_timing_mode(task);\r\n\r\n\t\treturn !!(mode.$no_end || mode.$no_start);\r\n\t};\r\n\r\n// downward calculation of project duration\r\n\tgantt.resetProjectDates = function (task) {\r\n\t\tvar taskMode = this._get_task_timing_mode(task);\r\n\t\tif (taskMode.$no_end || taskMode.$no_start) {\r\n\t\t\tvar dates = this.getSubtaskDates(task.id);\r\n\t\t\tthis._assign_project_dates(task, dates.start_date, dates.end_date);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.getSubtaskDuration = function (task_id) {\r\n\t\tvar res = 0,\r\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\r\n\r\n\t\tthis.eachTask(function (child) {\r\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tres += child.duration;\r\n\t\t}, root);\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tgantt.getSubtaskDates = function (task_id) {\r\n\t\tvar min = null,\r\n\t\t\tmax = null,\r\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\r\n\r\n\t\tthis.eachTask(function (child) {\r\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif ((child.start_date && !child.$no_start) && (!min || min > child.start_date.valueOf()))\r\n\t\t\t\tmin = child.start_date.valueOf();\r\n\t\t\tif ((child.end_date && !child.$no_end) && (!max || max < child.end_date.valueOf()))\r\n\t\t\t\tmax = child.end_date.valueOf();\r\n\t\t}, root);\r\n\r\n\t\treturn {\r\n\t\t\tstart_date: min ? new Date(min) : null,\r\n\t\t\tend_date: max ? new Date(max) : null\r\n\t\t};\r\n\t};\r\n\r\n\tgantt._assign_project_dates = function (task, from, to) {\r\n\t\tvar taskTiming = this._get_task_timing_mode(task);\r\n\t\tif (taskTiming.$no_start) {\r\n\t\t\tif (from && from != Infinity) {\r\n\t\t\t\ttask.start_date = new Date(from);\r\n\t\t\t} else {\r\n\t\t\t\ttask.start_date = this._defaultTaskDate(task, this.getParent(task));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (taskTiming.$no_end) {\r\n\t\t\tif (to && to != -Infinity) {\r\n\t\t\t\ttask.end_date = new Date(to);\r\n\t\t\t} else {\r\n\t\t\t\ttask.end_date = this.calculateEndDate({\r\n\t\t\t\t\tstart_date: task.start_date,\r\n\t\t\t\t\tduration: this.config.duration_step,\r\n\t\t\t\t\ttask: task\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\r\n\t\t\tthis._init_task_timing(task);\r\n\t\t}\r\n\t};\r\n\r\n// upward calculation of project duration\r\n\tgantt._update_parents = function (taskId, silent) {\r\n\t\tif (!taskId) return;\r\n\r\n\t\tvar task = this.getTask(taskId);\r\n\t\tvar pid = this.getParent(task);\r\n\r\n\t\tvar taskTiming = this._get_task_timing_mode(task);\r\n\r\n\t\tvar has_changed = true;\r\n\r\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\r\n\t\t\tvar oldStart = task.start_date.valueOf(),\r\n\t\t\t\toldEnd = task.end_date.valueOf();\r\n\r\n\t\t\tgantt.resetProjectDates(task);\r\n\r\n\t\t\t// not refresh parent projects if dates hasn't changed\r\n\t\t\tif (oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\r\n\t\t\t\thas_changed = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (has_changed && !silent) {\r\n\t\t\t\tthis.refreshTask(task.id, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (has_changed && pid && this.isTaskExists(pid)) {\r\n\t\t\tthis._update_parents(pid, silent);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.roundDate = function (config) {\r\n\t\tvar scale = gantt.getScale();\r\n\r\n\t\tif (helpers.isDate(config)) {\r\n\t\t\tconfig = {\r\n\t\t\t\tdate: config,\r\n\t\t\t\tunit: scale ? scale.unit : gantt.config.duration_unit,\r\n\t\t\t\tstep: scale ? scale.step : gantt.config.duration_step\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar date = config.date,\r\n\t\t\tsteps = config.step,\r\n\t\t\tunit = config.unit;\r\n\r\n\t\tif(!scale){\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tvar upper, lower, colIndex;\r\n\t\tif (unit == scale.unit && steps == scale.step &&\r\n\t\t\t+date >= +scale.min_date && +date <= +scale.max_date) {\r\n\t\t\t//find date in time scale config\r\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\r\n\r\n\t\t\tif (!scale.trace_x[colIndex]) {\r\n\t\t\t\tcolIndex -= 1;// end of time scale\r\n\t\t\t\tif(scale.rtl){\r\n\t\t\t\t\tcolIndex = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlower = new Date(scale.trace_x[colIndex]);\r\n\t\t\tupper = gantt.date.add(lower, steps, unit);\r\n\t\t} else {\r\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\r\n\r\n\t\t\tupper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\r\n\t\t\tif (scale.trace_x[colIndex]) {\r\n\t\t\t\tupper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]);// end of time scale\r\n\t\t\t}\r\n\r\n\t\t\twhile (+upper < +date) {\r\n\t\t\t\tupper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\r\n\r\n\t\t\t\tvar tzOffset = upper.getTimezoneOffset();\r\n\r\n\t\t\t\tupper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\r\n\t\t\t\tif (gantt.date[unit + '_start'])\r\n\t\t\t\t\tupper = gantt.date[unit + '_start'](upper);\r\n\t\t\t}\r\n\r\n\t\t\tlower = gantt.date.add(upper, -1 * steps, unit);\r\n\r\n\t\t}\r\n\t\tif (config.dir && config.dir == 'future')\r\n\t\t\treturn upper;\r\n\t\tif (config.dir && config.dir == 'past')\r\n\t\t\treturn lower;\r\n\r\n\t\tif (Math.abs(date - lower) < Math.abs(upper - date)) {\r\n\t\t\treturn lower;\r\n\t\t} else {\r\n\t\t\treturn upper;\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tgantt.correctTaskWorkTime = function (task) {\r\n\t\tif (gantt.config.work_time && gantt.config.correct_work_time) {\r\n\t\t\tif (!this.isWorkTime(task.start_date, undefined, task)) {\r\n\t\t\t\ttask.start_date = this.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\r\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\r\n\t\t\t} else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\r\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\r\n\t\tgantt._init_task_timing(task);\r\n\t\treturn true;\r\n\t});\r\n\tgantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\r\n\t\tgantt._init_task_timing(task);\r\n\t\treturn true;\r\n\t});\r\n\r\n};","// TODO: rework public api for date methods\r\nvar utils = require(\"../../utils/utils\");\r\n\r\nvar createWorktimeFacade = function(calendarManager, timeCalculator){\r\n\treturn {\r\n\t\tgetWorkHours: function (date) {\r\n\t\t\treturn timeCalculator.getWorkHours(date);\r\n\t\t},\r\n\r\n\t\tsetWorkTime: function (config) {\r\n\t\t\treturn timeCalculator.setWorkTime(config);\r\n\t\t},\r\n\r\n\t\tunsetWorkTime: function (config) {\r\n\t\t\ttimeCalculator.unsetWorkTime(config);\r\n\t\t},\r\n\r\n\t\tisWorkTime: function (date, unit, task) {\r\n\t\t\treturn timeCalculator.isWorkTime(date, unit, task);\r\n\t\t},\r\n\r\n\t\tgetClosestWorkTime: function (config) {\r\n\t\t\treturn timeCalculator.getClosestWorkTime(config);\r\n\t\t},\r\n\r\n\t\tcalculateDuration: function (start_date, end_date, task) {\r\n\t\t\treturn timeCalculator.calculateDuration(start_date, end_date, task);\r\n\t\t},\r\n\t\t_hasDuration: function (start_date, end_date, task) {\r\n\t\t\treturn timeCalculator.hasDuration(start_date, end_date, task);\r\n\t\t},\r\n\r\n\t\tcalculateEndDate: function (start, duration, unit, task) {\r\n\t\t\treturn timeCalculator.calculateEndDate(start, duration, unit, task);\r\n\t\t},\r\n\r\n\t\tcreateCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\r\n\t\taddCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\r\n\t\tgetCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\r\n\t\tgetCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\r\n\t\tgetTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\r\n\t\tdeleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\r\n\t};\r\n};\r\n\r\n\r\nmodule.exports = { create: createWorktimeFacade };\r\n","function CalendarDisabledTimeStrategy(gantt, argumentsHelper){\r\n\tthis.argumentsHelper = argumentsHelper;\r\n\tthis.$gantt = gantt;\r\n}\r\n\r\nCalendarDisabledTimeStrategy.prototype = {\r\n\tgetWorkHours: function () {\r\n\t\treturn [0, 24];\r\n\t},\r\n\tsetWorkTime: function () {\r\n\t\treturn true;\r\n\t},\r\n\tunsetWorkTime: function () {\r\n\t\treturn true;\r\n\t},\r\n\tisWorkTime: function () {\r\n\t\treturn true;\r\n\t},\r\n\tgetClosestWorkTime: function (config) {\r\n\t\tvar config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\r\n\t\treturn config.date;\r\n\t},\r\n\r\n\tcalculateDuration: function () {\r\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\r\n\t\tvar from = config.start_date,\r\n\t\t\tto = config.end_date,\r\n\t\t\tunit = config.unit,\r\n\t\t\tstep = config.step;\r\n\r\n\t\treturn this._calculateDuration(from, to, unit, step);\r\n\t},\r\n\t_calculateDuration: function (start, end, unit, step) {\r\n\t\tvar dateHelper = this.$gantt.date;\r\n\t\tvar fixedUnits = {\r\n\t\t\t\"week\": 1000 * 60 * 60 * 24 * 7,\r\n\t\t\t\"day\": 1000 * 60 * 60 * 24,\r\n\t\t\t\"hour\": 1000 * 60 * 60,\r\n\t\t\t\"minute\": 1000 * 60\r\n\t\t};\r\n\r\n\t\tvar res = 0;\r\n\t\tif (fixedUnits[unit]) {\r\n\t\t\tres = Math.round((end - start) / (step * fixedUnits[unit]));\r\n\t\t} else {\r\n\t\t\tvar from = new Date(start),\r\n\t\t\t\tto = new Date(end);\r\n\t\t\twhile (from.valueOf() < to.valueOf()) {\r\n\t\t\t\tres += 1;\r\n\t\t\t\tfrom = dateHelper.add(from, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif (from.valueOf() != end.valueOf()) {\r\n\t\t\t\tres += (to - from) / (dateHelper.add(from, step, unit) - from);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Math.round(res);\r\n\t},\r\n\r\n\thasDuration: function () {\r\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\r\n\t\tvar from = config.start_date,\r\n\t\t\tto = config.end_date,\r\n\t\t\tunit = config.unit;\r\n\r\n\t\tif (!unit) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfrom = new Date(from);\r\n\t\tto = new Date(to);\r\n\r\n\t\treturn (from.valueOf() < to.valueOf());\r\n\t},\r\n\r\n\tcalculateEndDate: function () {\r\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tvar start = config.start_date,\r\n\t\t\tduration = config.duration,\r\n\t\t\tunit = config.unit,\r\n\t\t\tstep = config.step;\r\n\r\n\t\treturn this.$gantt.date.add(start, step * duration, unit);\r\n\t}\r\n};\r\n\r\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\r\n\tNoWorkTimeCalendar = require(\"./strategy/no_work_time\");\r\n\r\nfunction TimeCalculator(calendarManager){\r\n\r\n\tthis.$gantt = calendarManager.$gantt;\r\n\tthis.argumentsHelper = createArgumentsHelper(this.$gantt);\r\n\tthis.calendarManager = calendarManager;\r\n\tthis.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\r\n}\r\n\r\nTimeCalculator.prototype = {\r\n\t_getCalendar: function (config) {\r\n\t\tvar calendar;\r\n\t\tif (!this.$gantt.$services.config().work_time) {\r\n\t\t\tcalendar = this.$disabledCalendar;\r\n\t\t} else {\r\n\t\t\tvar manager = this.calendarManager;\r\n\t\t\tif (config.task) {\r\n\t\t\t\tcalendar = manager.getTaskCalendar(config.task);\r\n\t\t\t} else if (config.id) {\r\n\t\t\t\tcalendar = manager.getTaskCalendar(config);\r\n\t\t\t} else if (config.calendar) {\r\n\t\t\t\tcalendar = config.calendar;\r\n\t\t\t}\r\n\t\t\tif (!calendar) {\r\n\t\t\t\tcalendar = manager.getTaskCalendar();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn calendar;\r\n\t},\r\n\r\n\tgetWorkHours: function (config) {\r\n\t\tconfig = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tvar calendar = this._getCalendar(config);\r\n\r\n\t\treturn calendar.getWorkHours(config.date);\r\n\t},\r\n\r\n\tsetWorkTime: function (config, calendar) {\r\n\t\tconfig = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tif (!calendar)\r\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\r\n\t\treturn calendar.setWorkTime(config);\r\n\t},\r\n\r\n\tunsetWorkTime: function (config, calendar) {\r\n\t\tconfig = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tif (!calendar)\r\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\r\n\t\treturn calendar.unsetWorkTime(config);\r\n\t},\r\n\tisWorkTime: function (date, unit, task, calendar) {\r\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tcalendar = this._getCalendar(config);\r\n\t\treturn calendar.isWorkTime(config);\r\n\t},\r\n\tgetClosestWorkTime: function (config) {\r\n\t\tconfig = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tvar calendar = this._getCalendar(config);\r\n\r\n\t\treturn calendar.getClosestWorkTime(config);\r\n\t},\r\n\r\n\tcalculateDuration: function () { // start_date_date, end_date, task\r\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\r\n\t\tvar calendar = this._getCalendar(config);\r\n\t\treturn calendar.calculateDuration(config);\r\n\t},\r\n\thasDuration: function () {\r\n\t\tvar config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tvar calendar = this._getCalendar(config);\r\n\r\n\t\treturn calendar.hasDuration(config);\r\n\t},\r\n\tcalculateEndDate: function (config) { // start_date, duration, unit, task\r\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\r\n\r\n\t\tvar calendar = this._getCalendar(config);\r\n\t\treturn calendar.calculateEndDate(config);\r\n\t}\r\n};\r\n\r\nmodule.exports = TimeCalculator;\r\n\r\n","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsObjectCache implements IWorkUnitCache {\r\n\tprivate _cache: any;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string): number|boolean {\r\n\t\tconst cache = this._cache;\r\n\t\tif (cache && cache[unit]) {\r\n\t\t\tconst units = cache[unit];\r\n\r\n\t\t\tif (units[timestamp] !== undefined) {\r\n\t\t\t\treturn units[timestamp];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\r\n\t\tif (!cache) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!cache[unit]) {\r\n\t\t\tcache[unit] = {};\r\n\t\t}\r\n\t\tcache[unit][timestamp] = value;\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = {};\r\n\t}\r\n}","\r\n\r\nimport { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsMapCache implements IWorkUnitCache {\r\n\tprivate _cache: Map>;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string): number|boolean {\r\n\t\tif (this._cache.has(unit)) {\r\n\t\t\tconst unitCache = this._cache.get(unit);\r\n\t\t\tif (unitCache.has(timestamp)) {\r\n\t\t\t\treturn unitCache.get(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\r\n\t\tlet unitCache;\r\n\t\tif (!cache.has(unit)) {\r\n\t\t\tunitCache = new Map();\r\n\t\t\tcache.set(unit, unitCache);\r\n\t\t} else {\r\n\t\t\tunitCache = cache.get(unit);\r\n\t\t}\r\n\t\tunitCache.set(timestamp, value);\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = new Map>();\r\n\t}\r\n}","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\nimport { WorkUnitsMapCache } from \"./workunit_map_cache\";\r\nimport { WorkUnitsObjectCache } from \"./workunit_object_cache\";\r\n\r\nexport function createCacheObject(): IWorkUnitCache {\r\n\r\n\t// worktime hash is on the hot path,\r\n\t// Map seems to work faster than plain array, use it whenever possible\r\n\tif (typeof Map !== \"undefined\") {\r\n\t\treturn new WorkUnitsMapCache();\r\n\t} else {\r\n\t\treturn new WorkUnitsObjectCache();\r\n\t}\r\n}","var cacheFactory = require(\"./work_unit_cache\"),\r\n\tutils = require(\"../../../utils/utils\");\r\n\r\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper){\r\n\tthis.argumentsHelper = argumentsHelper;\r\n\tthis.$gantt = gantt;\r\n\tthis._workingUnitsCache = cacheFactory.createCacheObject();\r\n}\r\n\r\nCalendarWorkTimeStrategy.prototype = {\r\n\tunits: [\r\n\t\t\"year\",\r\n\t\t\"month\",\r\n\t\t\"week\",\r\n\t\t\"day\",\r\n\t\t\"hour\",\r\n\t\t\"minute\"\r\n\t],\r\n\t// cache previously calculated worktime\r\n\t_getUnitOrder: function (unit) {\r\n\t\tfor (var i = 0, len = this.units.length; i < len; i++) {\r\n\t\t\tif (this.units[i] == unit)\r\n\t\t\t\treturn i;\r\n\t\t}\r\n\t},\r\n\t_timestamp: function (settings) {\r\n\r\n\t\tvar timestamp = null;\r\n\t\tif ((settings.day || settings.day === 0)) {\r\n\t\t\ttimestamp = settings.day;\r\n\t\t} else if (settings.date) {\r\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)\r\n\t\t\ttimestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\r\n\t\t}\r\n\t\treturn timestamp;\r\n\t},\r\n\t_checkIfWorkingUnit: function (date, unit, order) {\r\n\t\tif (order === undefined) {\r\n\t\t\torder = this._getUnitOrder(unit);\r\n\t\t}\r\n\r\n\t\t// disable worktime check for custom time units\r\n\t\tif (order === undefined) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (order) {\r\n\t\t\t//check if bigger time unit is a work time (hour < day < month...)\r\n\t\t\t//i.e. don't check particular hour if the whole day is marked as not working\r\n\t\t\tif (!this._isWorkTime(date, this.units[order - 1], order - 1))\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!this[\"_is_work_\" + unit])\r\n\t\t\treturn true;\r\n\t\treturn this[\"_is_work_\" + unit](date);\r\n\t},\r\n\t//checkings for particular time units\r\n\t//methods for month-year-week can be defined, otherwise always return 'true'\r\n\t_is_work_day: function (date) {\r\n\t\tvar val = this._getWorkHours(date);\r\n\r\n\t\tif (val instanceof Array) {\r\n\t\t\treturn val.length > 0;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\t_is_work_hour: function (date) {\r\n\t\tvar hours = this._getWorkHours(date); // [7,12] or []\r\n\t\tvar hour = date.getHours();\r\n\t\tfor (var i = 0; i < hours.length; i += 2) {\r\n\t\t\tif (hours[i + 1] === undefined) {\r\n\t\t\t\treturn hours[i] == hour;\r\n\t\t\t} else {\r\n\t\t\t\tif (hour >= hours[i] && hour < hours[i + 1])\r\n\t\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\t_internDatesPull: {},\r\n\t_nextDate: function (start, unit, step) {\r\n\t\tvar dateHelper = this.$gantt.date;\r\n\t\treturn dateHelper.add(start, step, unit);\r\n\r\n\t\t/*var start_value = +start,\r\n\t\t\tkey = unit + \"_\" + step;\r\n\t\tvar interned = this._internDatesPull[key];\r\n\t\tif(!interned){\r\n\t\t\tinterned = this._internDatesPull[key] = {};\r\n\t\t}\r\n\t\tvar calculated;\r\n\t\tif(!interned[start_value]){\r\n\t\t\tinterned[start_value] = calculated = dateHelper.add(start, step, unit);\r\n\t\t\t//interned[start_value] = dateHelper.add(start, step, unit);\r\n\t\t}\r\n\t\treturn calculated || interned[start_value];*/\r\n\t},\r\n\t_getWorkUnitsBetweenGeneric: function (from, to, unit, step) {\r\n\t\tvar dateHelper = this.$gantt.date;\r\n\t\tvar start = new Date(from),\r\n\t\t\tend = new Date(to);\r\n\t\tstep = step || 1;\r\n\t\tvar units = 0;\r\n\r\n\r\n\t\tvar next = null;\r\n\t\tvar stepStart,\r\n\t\t\tstepEnd;\r\n\r\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\r\n\t\t// and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\r\n\t\t// durations must be rounded later\r\n\t\tvar checkFirst = false;\r\n\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\r\n\t\tif (stepStart.valueOf() != start.valueOf()) {\r\n\t\t\tcheckFirst = true;\r\n\t\t}\r\n\t\tvar checkLast = false;\r\n\t\tstepEnd = dateHelper[unit + \"_start\"](new Date(to));\r\n\t\tif (stepEnd.valueOf() != to.valueOf()) {\r\n\t\t\tcheckLast = true;\r\n\t\t}\r\n\r\n\t\tvar isLastStep = false;\r\n\t\twhile (start.valueOf() < end.valueOf()) {\r\n\t\t\tnext = this._nextDate(start, unit, step);\r\n\t\t\tisLastStep = (next.valueOf() > end.valueOf());\r\n\r\n\t\t\tif (this._isWorkTime(start, unit)) {\r\n\t\t\t\tif (checkFirst || (checkLast && isLastStep)) {\r\n\t\t\t\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\r\n\t\t\t\t\tstepEnd = dateHelper.add(stepStart, step, unit);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (checkFirst) {\r\n\t\t\t\t\tcheckFirst = false;\r\n\t\t\t\t\tnext = this._nextDate(stepStart, unit, step);\r\n\t\t\t\t\tunits += ((stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\r\n\t\t\t\t} else if (checkLast && isLastStep) {\r\n\t\t\t\t\tcheckLast = false;\r\n\t\t\t\t\tunits += ((end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tunits++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstart = next;\r\n\t\t}\r\n\t\treturn units;\r\n\t},\r\n\r\n\t_getMinutesPerDay: function (date) {\r\n\t\t// current api doesn't allow setting working minutes, so use hardcoded 60 minutes per hour\r\n\t\treturn this._getHoursPerDay(date) * 60;\r\n\t},\r\n\t_getHoursPerDay: function (date) {\r\n\t\tvar hours = this._getWorkHours(date);\r\n\t\tvar res = 0;\r\n\t\tfor (var i = 0; i < hours.length; i += 2) {\r\n\t\t\tres += ((hours[i + 1] - hours[i]) || 0);\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\t_getWorkUnitsForRange: function (from, to, unit, step) {\r\n\t\tvar total = 0;\r\n\t\tvar start = new Date(from),\r\n\t\t\tend = new Date(to);\r\n\r\n\t\tvar getUnitsPerDay;\r\n\t\tif (unit == \"minute\") {\r\n\t\t\tgetUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\r\n\t\t} else {\r\n\t\t\tgetUnitsPerDay = utils.bind(this._getHoursPerDay, this);\r\n\t\t}\r\n\r\n\t\twhile (start.valueOf() < end.valueOf()) {\r\n\t\t\tif (this._isWorkTime(start, \"day\")) {\r\n\t\t\t\ttotal += getUnitsPerDay(start);\r\n\t\t\t}\r\n\t\t\tstart = this._nextDate(start, \"day\", 1);\r\n\t\t}\r\n\r\n\t\treturn total / step;\r\n\t},\r\n\r\n\t// optimized method for calculating work units duration of large time spans\r\n\t// implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\r\n\t_getWorkUnitsBetweenQuick: function (from, to, unit, step) {\r\n\t\tvar start = new Date(from),\r\n\t\t\tend = new Date(to);\r\n\t\tstep = step || 1;\r\n\r\n\t\tvar firstDayStart = new Date(start);\r\n\t\tvar firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\r\n\r\n\t\tif (end.valueOf() <= firstDayEnd.valueOf()) {\r\n\t\t\treturn this._getWorkUnitsBetweenGeneric(from, to, unit, step);\r\n\t\t} else {\r\n\r\n\t\t\tvar lastDayStart = this.$gantt.date.day_start(new Date(end));\r\n\t\t\tvar lastDayEnd = end;\r\n\r\n\t\t\tvar startPart = this._getWorkUnitsBetweenGeneric(firstDayStart, firstDayEnd, unit, step);\r\n\t\t\tvar endPart = this._getWorkUnitsBetweenGeneric(lastDayStart, lastDayEnd, unit, step);\r\n\r\n\t\t\tvar rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\r\n\t\t\tvar total = startPart + rangePart + endPart;\r\n\r\n\t\t\treturn total;\r\n\t\t}\r\n\t},\r\n\r\n\t_getCalendar: function () {\r\n\t\treturn this.worktime;\r\n\t},\r\n\t_setCalendar: function (settings) {\r\n\t\tthis.worktime = settings;\r\n\t},\r\n\r\n\t_tryChangeCalendarSettings: function (payload) {\r\n\t\tvar backup = JSON.stringify(this._getCalendar());\r\n\t\tpayload();\r\n\t\tif (this._isEmptyCalendar(this._getCalendar())) {\r\n\t\t\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\r\n\t\t\tthis._setCalendar(JSON.parse(backup));\r\n\t\t\tthis._workingUnitsCache.clear();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\r\n\t},\r\n\r\n\t_isEmptyCalendar: function (settings) {\r\n\t\tvar result = false,\r\n\t\t\tdatesArray = [],\r\n\t\t\tisFullWeekSet = true;\r\n\t\tfor (var i in settings.dates) {\r\n\t\t\tresult |= !!settings.dates[i];\r\n\t\t\tdatesArray.push(i);\r\n\t\t}\r\n\r\n\t\tvar checkFullArray = [];\r\n\t\tfor (var i = 0; i < datesArray.length; i++) {\r\n\t\t\tif (datesArray[i] < 10) {\r\n\t\t\t\tcheckFullArray.push(datesArray[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcheckFullArray.sort();\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif (checkFullArray[i] != i)\r\n\t\t\t\tisFullWeekSet = false;\r\n\t\t}\r\n\t\tif (isFullWeekSet)\r\n\t\t\treturn !result;\r\n\t\treturn !(result || !!settings.hours); // can still return false if separated dates are set to true\r\n\t},\r\n\r\n\tgetWorkHours: function () {\r\n\t\tvar config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\r\n\t\treturn this._getWorkHours(config.date);\r\n\t},\r\n\t_getWorkHours: function (date) {\r\n\t\tvar t = this._timestamp({date: date});\r\n\t\tvar hours = true;\r\n\t\tvar calendar = this._getCalendar();\r\n\t\tif (calendar.dates[t] !== undefined) {\r\n\t\t\thours = calendar.dates[t];//custom day\r\n\t\t} else if (calendar.dates[date.getDay()] !== undefined) {\r\n\t\t\thours = calendar.dates[date.getDay()];//week day\r\n\t\t}\r\n\t\tif (hours === true) {\r\n\t\t\treturn calendar.hours;\r\n\t\t} else if (hours) {\r\n\t\t\treturn hours;\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n\r\n\tsetWorkTime: function (settings) {\r\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\r\n\t\t\tvar hours = settings.hours !== undefined ? settings.hours : true;\r\n\t\t\tvar timestamp = this._timestamp(settings);\r\n\t\t\tif (timestamp !== null) {\r\n\t\t\t\tthis._getCalendar().dates[timestamp] = hours;\r\n\t\t\t} else {\r\n\t\t\t\tthis._getCalendar().hours = hours;\r\n\t\t\t}\r\n\t\t\tthis._workingUnitsCache.clear();\r\n\t\t}, this));\r\n\t},\r\n\r\n\tunsetWorkTime: function (settings) {\r\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\r\n\t\t\tif (!settings) {\r\n\t\t\t\tthis.reset_calendar();\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvar timestamp = this._timestamp(settings);\r\n\r\n\t\t\t\tif (timestamp !== null) {\r\n\t\t\t\t\tdelete this._getCalendar().dates[timestamp];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Clear work units cache\r\n\t\t\tthis._workingUnitsCache.clear();\r\n\t\t}, this));\r\n\t},\r\n\r\n\t_isWorkTime: function (date, unit, order) {\r\n\t\t// Check if this item has in the cache\r\n\r\n\t\t// use string keys\r\n\t\tvar dateKey = String(date.valueOf());\r\n\t\tvar is_work_unit = this._workingUnitsCache.getItem(unit, dateKey);\r\n\r\n\t\tif (is_work_unit == -1) {\r\n\t\t\t// calculate if not cached\r\n\t\t\tis_work_unit = this._checkIfWorkingUnit(date, unit, order);\r\n\t\t\tthis._workingUnitsCache.setItem(unit, dateKey, is_work_unit);\r\n\t\t}\r\n\r\n\t\treturn is_work_unit;\r\n\t},\r\n\r\n\tisWorkTime: function () {\r\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply( this.argumentsHelper, arguments);\r\n\t\treturn this._isWorkTime(config.date, config.unit);\r\n\t},\r\n\r\n\tcalculateDuration: function () {\r\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\r\n\r\n\t\tif (!config.unit) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\r\n\t},\r\n\r\n\t_calculateDuration: function (from, to, unit, step) {\r\n\t\tvar res = 0;\r\n\t\tif (unit == \"hour\" || unit == \"minute\") {\r\n\t\t\tres = this._getWorkUnitsBetweenQuick(from, to, unit, step);\r\n\t\t} else {\r\n\t\t\tres = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\r\n\t\t}\r\n\r\n\t\t// getWorkUnits.. returns decimal durations\r\n\t\treturn Math.round(res);\r\n\t},\r\n\thasDuration: function () {\r\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\r\n\r\n\t\tvar from = config.start_date,\r\n\t\t\tto = config.end_date,\r\n\t\t\tunit = config.unit,\r\n\t\t\tstep = config.step;\r\n\r\n\t\tif (!unit) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar start = new Date(from),\r\n\t\t\tend = new Date(to);\r\n\t\tstep = step || 1;\r\n\r\n\t\twhile (start.valueOf() < end.valueOf()) {\r\n\t\t\tif (this._isWorkTime(start, unit))\r\n\t\t\t\treturn true;\r\n\t\t\tstart = this._nextDate(start, unit, step);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tcalculateEndDate: function () {\r\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply( this.argumentsHelper, arguments);\r\n\r\n\t\tvar from = config.start_date,\r\n\t\t\tduration = config.duration,\r\n\t\t\tunit = config.unit,\r\n\t\t\tstep = config.step;\r\n\r\n\t\tif (!unit)\r\n\t\t\treturn false;\r\n\r\n\t\tvar mult = (config.duration >= 0) ? 1 : -1;\r\n\t\tduration = Math.abs(duration * 1);\r\n\t\treturn this._calculateEndDate(from, duration, unit, step * mult);\r\n\t},\r\n\r\n\t_calculateEndDate: function (from, duration, unit, step) {\r\n\t\tif (!unit)\r\n\t\t\treturn false;\r\n\r\n\t\tif (step == 1 && unit == \"minute\") {\r\n\t\t\treturn this._calculateMinuteEndDate(from, duration, step);\r\n\t\t} else if (step == 1 && unit == \"hour\") {\r\n\t\t\treturn this._calculateHourEndDate(from, duration, step);\r\n\t\t} else {\r\n\t\t\tvar interval = this._addInterval(from, duration, unit, step, null);\r\n\t\t\treturn interval.end;\r\n\t\t}\r\n\t},\r\n\r\n\t_addInterval: function (start, duration, unit, step, stopAction) {\r\n\t\tvar added = 0;\r\n\t\tvar current = start;\r\n\t\twhile (added < duration && !(stopAction && stopAction(current))) {\r\n\t\t\tvar next = this._nextDate(current, unit, step);\r\n\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), unit)) {\r\n\t\t\t\tadded++;\r\n\t\t\t}\r\n\t\t\tcurrent = next;\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tend: current,\r\n\t\t\tsatrt: start,\r\n\t\t\tadded: added\r\n\t\t};\r\n\t},\r\n\r\n\t_calculateHourEndDate: function (from, duration, step) {\r\n\t\tvar start = new Date(from),\r\n\t\tadded = 0;\r\n\t\tstep = step || 1;\r\n\t\tduration = Math.abs(duration * 1);\r\n\r\n\t\tvar interval = this._addInterval(start, duration, \"hour\", step, function (date) {\r\n\t\t\t// iterate until hour end\r\n\t\t\tif (!(date.getHours() || date.getMinutes() || date.getSeconds() || date.getMilliseconds())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tadded = interval.added;\r\n\t\tstart = interval.end;\r\n\r\n\t\tvar durationLeft = duration - added;\r\n\r\n\t\tif (durationLeft && durationLeft > 24) {\r\n\t\t\tvar current = start;\r\n\t\t\twhile (added < duration) {\r\n\t\t\t\tvar next = this._nextDate(current, \"day\", step);\r\n\t\t\t\t// reset to day start in case DST switch happens in the process\r\n\t\t\t\tnext.setHours(0);\r\n\t\t\t\tnext.setMinutes(0);\r\n\t\t\t\tnext.setSeconds(0);\r\n\t\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), \"day\")) {\r\n\t\t\t\t\tvar hours = this._getHoursPerDay(current);\r\n\t\t\t\t\tif (added + hours >= duration) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tadded += hours;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcurrent = next;\r\n\t\t\t}\r\n\t\t\tstart = current;\r\n\t\t}\r\n\r\n\t\tif (added < duration) {\r\n\t\t\tvar durationLeft = duration - added;\r\n\t\t\tinterval = this._addInterval(start, durationLeft, \"hour\", step, null);\r\n\t\t\tstart = interval.end;\r\n\t\t}\r\n\r\n\t\treturn start;\r\n\t},\r\n\r\n\t_calculateMinuteEndDate: function (from, duration, step) {\r\n\r\n\t\tvar start = new Date(from),\r\n\t\t\tadded = 0;\r\n\t\tstep = step || 1;\r\n\t\tduration = Math.abs(duration * 1);\r\n\r\n\t\tvar interval = this._addInterval(start, duration, \"minute\", step, function (date) {\r\n\t\t\t// iterate until hour end\r\n\t\t\tif (!(date.getMinutes() || date.getSeconds() || date.getMilliseconds())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tadded = interval.added;\r\n\t\tstart = interval.end;\r\n\r\n\t\tif (added < duration) {\r\n\t\t\tvar left = duration - added;\r\n\t\t\tvar hours = Math.floor(left / 60);\r\n\t\t\tif (hours) {\r\n\t\t\t\tstart = this._calculateEndDate(start, hours, \"hour\", step > 0 ? 1 : -1);\r\n\t\t\t\tadded += hours * 60;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (added < duration) {\r\n\t\t\tvar durationLeft = duration - added;\r\n\t\t\tinterval = this._addInterval(start, durationLeft, \"minute\", step, null);\r\n\t\t\tstart = interval.end;\r\n\t\t}\r\n\r\n\t\treturn start;\r\n\t},\r\n\r\n\tgetClosestWorkTime: function () {\r\n\t\tvar settings = this.argumentsHelper.getClosestWorkTimeArguments.apply( this.argumentsHelper, arguments);\r\n\t\treturn this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\r\n\t},\r\n\r\n\t_getClosestWorkTime: function (inputDate, unit, direction) {\r\n\t\tvar result = new Date(inputDate);\r\n\r\n\t\tif (this._isWorkTime(result, unit)) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tresult = this.$gantt.date[unit + '_start'](result);\r\n\r\n\t\tif (direction == 'any' || !direction) {\r\n\t\t\tvar closestFuture = this._getClosestWorkTimeFuture(result, unit);\r\n\t\t\tvar closestPast = this._getClosestWorkTimePast(result, unit);\r\n\t\t\tif (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\r\n\t\t\t\tresult = closestFuture;\r\n\t\t\t} else {\r\n\t\t\t\tresult = closestPast;\r\n\t\t\t}\r\n\t\t} else if (direction == \"past\") {\r\n\t\t\tresult = this._getClosestWorkTimePast(result, unit);\r\n\t\t} else {\r\n\t\t\tresult = this._getClosestWorkTimeFuture(result, unit);\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\r\n\t_getClosestWorkTimeFuture: function (date, unit) {\r\n\t\treturn this._getClosestWorkTimeGeneric(date, unit, 1);\r\n\t},\r\n\r\n\t_getClosestWorkTimePast: function (date, unit) {\r\n\t\tvar result = this._getClosestWorkTimeGeneric(date, unit, -1);\r\n\t\t// should return the end of the closest work interval\r\n\t\treturn this.$gantt.date.add(result, 1, unit);\r\n\t},\r\n\r\n\t_getClosestWorkTimeGeneric: function (date, unit, increment) {\r\n\t\tvar unitOrder = this._getUnitOrder(unit),\r\n\t\t\tbiggerTimeUnit = this.units[unitOrder - 1];\r\n\r\n\t\tvar result = date;\r\n\r\n\t\t// be extra sure we won't fall into infinite loop, 3k seems big enough\r\n\t\tvar maximumLoop = 3000,\r\n\t\t\tcount = 0;\r\n\r\n\t\twhile (!this._isWorkTime(result, unit)) {\r\n\t\t\tif (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\r\n\t\t\t\t// if we look for closest work hour and detect a week-end - first find the closest work day,\r\n\t\t\t\t// and continue iterations after that\r\n\t\t\t\tif (increment > 0) {\r\n\t\t\t\t\tresult = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = this._getClosestWorkTimePast(result, biggerTimeUnit);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._isWorkTime(result, unit)) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcount++;\r\n\t\t\tif (count > maximumLoop) {\r\n\t\t\t\tthis.$gantt.assert(false, \"Invalid working time check\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar tzOffset = result.getTimezoneOffset();\r\n\t\t\tresult = this.$gantt.date.add(result, increment, unit);\r\n\r\n\t\t\tresult = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\r\n\t\t\tif (this.$gantt.date[unit + '_start']) {\r\n\t\t\t\tresult = this.$gantt.date[unit + '_start'](result);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../utils/utils\");\r\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\r\nvar CalendarWorktimeStrategy = require(\"./strategy/calendar_strategy\");\r\n\r\nfunction CalendarManager (gantt){\r\n\tthis.$gantt = gantt;\r\n\tthis._calendars = {};\r\n}\r\n\r\nCalendarManager.prototype = {\r\n\t_calendars: {},\r\n\t_getDayHoursForMultiple: function (calendars, date) {\r\n\t\tvar units = [],\r\n\t\t\ttick = true,\r\n\t\t\tcurrPos = 0,\r\n\t\t\tis_work_hour = false,\r\n\t\t\tstart = this.$gantt.date.day_start(new Date(date));\r\n\t\tfor (var hour = 0; hour < 24; hour++) {\r\n\t\t\tis_work_hour = calendars.reduce(function (acc, calendar) {\r\n\t\t\t\treturn acc && calendar._is_work_hour(start);\r\n\t\t\t}, true);\r\n\t\t\tif (is_work_hour) {\r\n\t\t\t\tif (tick) {\r\n\t\t\t\t\tunits[currPos] = hour;\r\n\t\t\t\t\tunits[currPos + 1] = (hour + 1);\r\n\t\t\t\t\tcurrPos += 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tunits[currPos - 1] += 1;\r\n\t\t\t\t}\r\n\t\t\t\ttick = false;\r\n\t\t\t} else if (!tick) {\r\n\t\t\t\ttick = true;\r\n\t\t\t}\r\n\t\t\tstart = this.$gantt.date.add(start, 1, \"hour\");\r\n\t\t}\r\n\t\tif (!units.length)\r\n\t\t\tunits = false;\r\n\t\treturn units;\r\n\t},\r\n\tmergeCalendars: function () {\r\n\t\tvar newCalendar = this.createCalendar(),\r\n\t\t\tday,\r\n\t\t\tunits = [];\r\n\t\tvar calendars = Array.prototype.slice.call(arguments, 0);\r\n\t\tnewCalendar.worktime.hours = [0, 24];\r\n\t\tnewCalendar.worktime.dates = {};\r\n\t\tvar start = this.$gantt.date.day_start(new Date(259200000)); // 1970 day=0\r\n\t\tfor (day = 0; day < 7; day++) {\r\n\t\t\tunits = this._getDayHoursForMultiple(calendars, start);\r\n\t\t\tnewCalendar.worktime.dates[day] = units;\r\n\t\t\tstart = this.$gantt.date.add(start, 1, \"day\");\r\n\t\t}\r\n\t\tfor (var i = 0; i < calendars.length; i++) {\r\n\t\t\tfor (var value in calendars[i].worktime.dates) if (+value > 10000) {\r\n\t\t\t\tunits = this._getDayHoursForMultiple(calendars, new Date(+value));\r\n\t\t\t\tnewCalendar.worktime.dates[value] = units;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn newCalendar;\r\n\t},\r\n\r\n\t_convertWorktimeSettings: function (settings) {\r\n\t\tvar days = settings.days;\r\n\t\tif (days) {\r\n\t\t\tsettings.dates = settings.dates || {};\r\n\t\t\tfor (var i = 0; i < days.length; i++) {\r\n\t\t\t\tsettings.dates[i] = days[i];\r\n\t\t\t\tif (!(days[i] instanceof Array)) {\r\n\t\t\t\t\tsettings.dates[i] = !!days[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete settings.days;\r\n\t\t}\r\n\t\treturn settings;\r\n\t},\r\n\r\n\tcreateCalendar: function (parentCalendar) {\r\n\t\tvar settings;\r\n\r\n\t\tif (!parentCalendar) {\r\n\t\t\tparentCalendar = {};\r\n\t\t}\r\n\r\n\t\tif (parentCalendar.worktime) {\r\n\t\t\tsettings = utils.copy(parentCalendar.worktime);\r\n\t\t} else {\r\n\t\t\tsettings = utils.copy(parentCalendar);\r\n\t\t}\r\n\r\n\t\tvar defaults = utils.copy(this.defaults.fulltime.worktime);\r\n\t\tutils.mixin(settings, defaults);\r\n\r\n\t\tvar id = utils.uid();\r\n\t\tvar calendar = {\r\n\t\t\tid: id + \"\",\r\n\t\t\tworktime: this._convertWorktimeSettings(settings)\r\n\t\t};\r\n\r\n\t\tvar apiCore = new CalendarWorktimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\r\n\t\tutils.mixin(apiCore, calendar);\r\n\r\n\t\t// validate/check if empty calendar\r\n\t\tif (!apiCore._tryChangeCalendarSettings(function () {\r\n\t\t\t})) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn apiCore;\r\n\t\t}\r\n\t},\r\n\r\n\tgetCalendar: function (id) {\r\n\t\tid = id || \"global\";\r\n\t\tthis.createDefaultCalendars();\r\n\t\treturn this._calendars[id];\r\n\t},\r\n\r\n\tgetCalendars: function () {\r\n\t\tvar res = [];\r\n\t\tfor (var i in this._calendars) {\r\n\t\t\tres.push(this.getCalendar(i));\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\t_getOwnCalendar: function(task){\r\n\t\tvar config = this.$gantt.config;\r\n\t\tif (task[config.calendar_property]) {\r\n\t\t\treturn this.getCalendar(task[config.calendar_property]);\r\n\t\t}\r\n\r\n\t\tif (config.resource_calendars) {\r\n\t\t\tfor (var field in config.resource_calendars) {\r\n\t\t\t\tvar resource = config.resource_calendars[field];\r\n\t\t\t\tif (task[field]) {\r\n\t\t\t\t\tvar calendarId = resource[task[field]];\r\n\t\t\t\t\tif (calendarId) {\r\n\t\t\t\t\t\treturn this.getCalendar(calendarId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tgetTaskCalendar: function (task) {\r\n\t\tif (!task) {\r\n\t\t\treturn this.getCalendar();\r\n\t\t}\r\n\r\n\t\tvar calendar = this._getOwnCalendar(task);\r\n\t\tvar gantt = this.$gantt;\r\n\t\tif (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(task.parent)){\r\n\t\t\tvar stop = false;\r\n\t\t\tgantt.eachParent(function(parent){\r\n\t\t\t\tif(stop) return;\r\n\t\t\t\tif(gantt.isSummaryTask(parent)){\r\n\t\t\t\t\tcalendar = this._getOwnCalendar(parent);\r\n\t\t\t\t\tif(calendar){\r\n\t\t\t\t\t\tstop = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, task.id, this);\r\n\t\t}\r\n\r\n\t\treturn calendar || this.getCalendar();\r\n\t},\r\n\r\n\taddCalendar: function (calendar) { // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\r\n\t\tif (!(calendar instanceof CalendarWorktimeStrategy)) {\r\n\t\t\tvar id = calendar.id;\r\n\t\t\tcalendar = this.createCalendar(calendar);\r\n\t\t\tcalendar.id = id;\r\n\t\t}\r\n\t\tvar config = this.$gantt.config;\r\n\r\n\t\tcalendar.id = calendar.id || utils.uid();\r\n\t\tthis._calendars[calendar.id] = calendar;\r\n\t\tif (!config.worktimes)\r\n\t\t\tconfig.worktimes = {};\r\n\t\tconfig.worktimes[calendar.id] = calendar.worktime;\r\n\t\treturn calendar.id;\r\n\t},\r\n\r\n\tdeleteCalendar: function (calendar) {\r\n\t\tvar config = this.$gantt.config;\r\n\t\tif (!calendar) return false;\r\n\t\tif (this._calendars[calendar]) {\r\n\t\t\tdelete this._calendars[calendar];\r\n\t\t\tif (config.worktimes && config.worktimes[calendar])\r\n\t\t\t\tdelete config.worktimes[calendar];\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\t},\r\n\r\n\trestoreConfigCalendars: function (configs) {\r\n\t\tfor (var i in configs) {\r\n\t\t\tif (this._calendars[i])\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar settings = configs[i];\r\n\t\t\tvar calendar = this.createCalendar(settings);\r\n\t\t\tcalendar.id = i;\r\n\t\t\tthis.addCalendar(calendar);\r\n\t\t}\r\n\t},\r\n\r\n\tdefaults: {\r\n\t\tglobal: {\r\n\t\t\tid: \"global\",\r\n\t\t\tworktime: {\r\n\t\t\t\thours: [8, 17],\r\n\t\t\t\tdays: [0, 1, 1, 1, 1, 1, 0]\r\n\t\t\t}\r\n\t\t},\r\n\t\tfulltime: {\r\n\t\t\tid: \"fulltime\",\r\n\t\t\tworktime: {\r\n\t\t\t\thours: [0, 24],\r\n\t\t\t\tdays: [1, 1, 1, 1, 1, 1, 1]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcreateDefaultCalendars: function () {\r\n\t\tvar config = this.$gantt.config;\r\n\t\tthis.restoreConfigCalendars(this.defaults);\r\n\t\tthis.restoreConfigCalendars(config.worktimes);\r\n\t}\r\n};\r\n\r\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\r\n\tTimeCalculator = require(\"./time_calculator\"),\r\n\tworktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\r\n\tutils = require(\"../../utils/utils\");\r\n\r\nmodule.exports = function (gantt) {\r\n\tvar manager = new CalendarManager(gantt),\r\n\ttimeCalculator = new TimeCalculator(manager);\r\n\tvar facade = worktimeFacadeFactory.create(manager, timeCalculator);\r\n\tutils.mixin(gantt, facade);\r\n};\r\n","var helpers = require(\"../utils/helpers\");\r\n\r\nmodule.exports = function(gantt) {\r\n\r\n\tgantt.load = function (url, type, callback) {\r\n\t\tthis._load_url = url;\r\n\t\tthis.assert(arguments.length, \"Invalid load arguments\");\r\n\r\n\t\tvar tp = 'json', cl = null;\r\n\t\tif (arguments.length >= 3) {\r\n\t\t\ttp = type;\r\n\t\t\tcl = callback;\r\n\t\t} else {\r\n\t\t\tif (typeof arguments[1] == \"string\")\r\n\t\t\t\ttp = arguments[1];\r\n\t\t\telse if (typeof arguments[1] == \"function\")\r\n\t\t\t\tcl = arguments[1];\r\n\t\t}\r\n\r\n\t\tthis._load_type = tp;\r\n\r\n\t\tthis.callEvent(\"onLoadStart\", [url, tp]);\r\n\r\n\t\treturn this.ajax.get(url, gantt.bind(function (l) {\r\n\t\t\tthis.on_load(l, tp);\r\n\t\t\tthis.callEvent(\"onLoadEnd\", [url, tp]);\r\n\t\t\tif (typeof cl == \"function\")\r\n\t\t\t\tcl.call(this);\r\n\t\t}, this));\r\n\t};\r\n\tgantt.parse = function (data, type) {\r\n\t\tthis.on_load({xmlDoc: {responseText: data}}, type);\r\n\t};\r\n\r\n\tgantt.serialize = function (type) {\r\n\t\ttype = type || \"json\";\r\n\t\treturn this[type].serialize();\r\n\t};\r\n\r\n\t/*\r\n\ttasks and relations\r\n\t{\r\n\tdata:[\r\n\t\t{\r\n\t\t\t\"id\":\"string\",\r\n\t\t\t\"text\":\"...\",\r\n\t\t\t\"start_date\":\"Date or string\",\r\n\t\t\t\"end_date\":\"Date or string\",\r\n\t\t\t\"duration\":\"number\",\r\n\t\t\t\"progress\":\"0..1\",\r\n\t\t\t\"parent_id\":\"string\",\r\n\t\t\t\"order\":\"number\"\r\n\t\t},...],\r\n\tlinks:[\r\n\t\t{\r\n\t\t\tid:\"string\",\r\n\t\t\tsource:\"string\",\r\n\t\t\ttarget:\"string\",\r\n\t\t\ttype:\"string\"\r\n\t\t},...],\r\n\tcollections:{\r\n\t\t\tcollectionName:[\r\n\t\t\t\t{key:, label:, optional:...},...\r\n\t\t\t],...\r\n\t\t}\r\n\t}\r\n\r\n\t* */\r\n\r\n\tgantt.on_load = function (resp, type) {\r\n\t\tif(resp.xmlDoc && resp.xmlDoc.status === 404){ // work if we don't have a file at current url\r\n\t\t\tthis.assert(false, \"Failed to load the data from \" \r\n\t\t\t\t+ resp.xmlDoc.responseURL + \", server returns 404\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.callEvent(\"onBeforeParse\", []);\r\n\t\tif (!type)\r\n\t\t\ttype = \"json\";\r\n\t\tthis.assert(this[type], \"Invalid data type:'\" + type + \"'\");\r\n\r\n\t\tvar raw = resp.xmlDoc.responseText;\r\n\r\n\t\tvar data = this[type].parse(raw, resp);\r\n\t\tthis._process_loading(data);\r\n\t};\r\n\r\n\tgantt._process_loading = function (data) {\r\n\t\tif(data.collections)\r\n\t\t\tthis._load_collections(data.collections);\r\n\r\n\t\tthis.$data.tasksStore.parse(data.data);\r\n\t\tvar links = data.links || (data.collections ? data.collections.links : []);\r\n\t\tthis.$data.linksStore.parse(links);\r\n\r\n\t\t//this._sync_links();\r\n\t\tthis.callEvent(\"onParse\", []);\r\n\t\tthis.render();\r\n\t\tif(this.config.initial_scroll){\r\n\t\t\tvar firstTask = this.getTaskByIndex(0);\r\n\t\t\tvar id = firstTask ? firstTask.id : this.config.root_id;\r\n\t\t\tif(this.isTaskExists(id))\r\n\t\t\t\tthis.showTask(id);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tgantt._load_collections = function (collections) {\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = this.serverList[key];\r\n\t\t\t\tif (!arr) continue;\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = this.copy(option);\r\n\t\t\t\t\tobj.key = obj.value;// resulting option object\r\n\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tthis.callEvent(\"onOptionsLoad\", []);\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\r\n\t\treturn !task.$ignore;\r\n\t});\r\n\r\n\tfunction jsonParseError(data){\r\n\t\tgantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \"\r\n\t\t\t+ \"Actual argument value: \" + JSON.stringify(data));\r\n\t\tthrow new Error(\"Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: \"\r\n\t\t\t+ JSON.stringify(data));\r\n\t}\r\n\r\n\tgantt.json = {\r\n\t\tparse: function (data) {\r\n\t\t\tif(!data){\r\n\t\t\t\tjsonParseError(data);\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof data == \"string\") {\r\n\t\t\t\tif (window.JSON){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch(e) {\r\n\t\t\t\t\t\tjsonParseError(data);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgantt.assert(false, \"JSON is not supported\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!data.data){\r\n\t\t\t\tjsonParseError(data);\r\n\t\t\t}\r\n\r\n\t\t\tif (data.dhx_security)\r\n\t\t\t\tgantt.security_key = data.dhx_security;\r\n\t\t\treturn data;\r\n\t\t},\r\n\t\tserializeTask: function (task) {\r\n\t\t\treturn this._copyObject(task);\r\n\t\t},\r\n\t\tserializeLink: function (link) {\r\n\t\t\treturn this._copyLink(link);\r\n\t\t},\r\n\t\t_copyLink: function (obj) {\r\n\t\t\tvar copy = {};\r\n\t\t\tfor (var key in obj)\r\n\t\t\t\tcopy[key] = obj[key];\r\n\t\t\treturn copy;\r\n\t\t},\r\n\t\t_copyObject: function (obj) {\r\n\t\t\tvar copy = {};\r\n\t\t\tfor (var key in obj) {\r\n\t\t\t\tif (key.charAt(0) == \"$\")\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\tcopy[key] = obj[key];\r\n\r\n\t\t\t\tif (helpers.isDate(copy[key])) {\r\n\t\t\t\t\tcopy[key] = gantt.templates.xml_format !== gantt.templates.formate_date ? gantt.templates.xml_format(copy[key]) : gantt.templates.formate_date(copy[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn copy;\r\n\t\t},\r\n\t\tserialize: function () {\r\n\t\t\tvar tasks = [];\r\n\t\t\tvar links = [];\r\n\r\n\t\t\tgantt.eachTask(function (obj) {\r\n\t\t\t\tgantt.resetProjectDates(obj);\r\n\t\t\t\ttasks.push(this.serializeTask(obj));\r\n\t\t\t}, gantt.config.root_id, this);\r\n\r\n\t\t\tvar rawLinks = gantt.getLinks();\r\n\t\t\tfor (var i = 0; i < rawLinks.length; i++) {\r\n\t\t\t\tlinks.push(this.serializeLink(rawLinks[i]));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tdata: tasks,\r\n\t\t\t\tlinks: links\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/*\r\n\t\r\n\t\t\r\n\t\t\tMy task 1\r\n\t\t\t16.08.2013\r\n\t\t\t22.08.2013\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t*/\r\n\r\n\tfunction xmlParseError(data){\r\n\t\tgantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \"\r\n\t\t\t+ \"Actual argument value: \" + JSON.stringify(data));\r\n\t\tthrow new Error(\"Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: \"\r\n\t\t\t+ JSON.stringify(data));\r\n\t}\r\n\r\n\tgantt.xml = {\r\n\t\t_xmlNodeToJSON: function (node, attrs_only) {\r\n\t\t\tvar t = {};\r\n\t\t\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\t\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\t\t\tif (!attrs_only) {\r\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\t\t\t\tvar child = node.childNodes[i];\r\n\t\t\t\t\tif (child.nodeType == 1)\r\n\t\t\t\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\t\t\t}\r\n\r\n\t\t\treturn t;\r\n\t\t},\r\n\t\t_getCollections: function (loader) {\r\n\t\t\tvar collection = {};\r\n\t\t\tvar opts = gantt.ajax.xpath(\"//coll_options\", loader);\r\n\t\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\t\tvar arr = collection[bind] = [];\r\n\t\t\t\tvar itms = gantt.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\t\tvar itm = itms[j];\r\n\t\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\t\tvar obj = {key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn collection;\r\n\t\t},\r\n\t\t_getXML: function (text, loader, toptag) {\r\n\t\t\ttoptag = toptag || \"data\";\r\n\t\t\tif (!loader.getXMLTopNode) {\r\n\t\t\t\tloader = gantt.ajax.parse(loader);\r\n\t\t\t}\r\n\r\n\t\t\tvar xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\r\n\t\t\tif (!xml || xml.tagName != toptag) {\r\n\t\t\t\txmlParseError(text);\r\n\t\t\t}\r\n\r\n\t\t\tvar skey = xml.getAttribute(\"dhx_security\");\r\n\t\t\tif (skey)\r\n\t\t\t\tgantt.security_key = skey;\r\n\r\n\t\t\treturn xml;\r\n\t\t},\r\n\t\tparse: function (text, loader) {\r\n\t\t\tloader = this._getXML(text, loader);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tvar evs = data.data = [];\r\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\r\n\r\n\t\t\tfor (var i = 0; i < xml.length; i++)\r\n\t\t\t\tevs[i] = this._xmlNodeToJSON(xml[i]);\r\n\r\n\t\t\tdata.collections = this._getCollections(loader);\r\n\t\t\treturn data;\r\n\t\t},\r\n\t\t_copyLink: function (obj) {\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t_copyObject: function (obj) {\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tserialize: function () {\r\n\t\t\tvar tasks = [];\r\n\t\t\tvar links = [];\r\n\r\n\t\t\tvar json = gantt.json.serialize();\r\n\t\t\tfor (var i = 0, len = json.data.length; i < len; i++) {\r\n\t\t\t\ttasks.push(this._copyObject(json.data[i]));\r\n\t\t\t}\r\n\t\t\tfor (var i = 0, len = json.links.length; i < len; i++) {\r\n\t\t\t\tlinks.push(this._copyLink(json.links[i]));\r\n\t\t\t}\r\n\t\t\treturn \"\" + tasks.join(\"\") + \"\" + links.join(\"\") + \"\";\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tgantt.oldxml = {\r\n\t\tparse: function (text, loader) {\r\n\t\t\tloader = gantt.xml._getXML(text, loader, \"projects\");\r\n\t\t\tvar data = {collections: {links: []}};\r\n\r\n\t\t\tvar evs = data.data = [];\r\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\r\n\r\n\t\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\t\tevs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\r\n\t\t\t\tvar parent = xml[i].parentNode;\r\n\r\n\t\t\t\tif (parent.tagName == \"project\")\r\n\t\t\t\t\tevs[i].parent = \"project-\" + parent.getAttribute(\"id\");\r\n\t\t\t\telse\r\n\t\t\t\t\tevs[i].parent = parent.parentNode.getAttribute(\"id\");\r\n\t\t\t}\r\n\r\n\t\t\txml = gantt.ajax.xpath(\"//project\", loader);\r\n\t\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\t\tvar ev = gantt.xml._xmlNodeToJSON(xml[i], true);\r\n\t\t\t\tev.id = \"project-\" + ev.id;\r\n\t\t\t\tevs.push(ev);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar ev = evs[i];\r\n\t\t\t\tev.start_date = ev.startdate || ev.est;\r\n\t\t\t\tev.end_date = ev.enddate;\r\n\t\t\t\tev.text = ev.name;\r\n\t\t\t\tev.duration = ev.duration / 8;\r\n\t\t\t\tev.open = 1;\r\n\t\t\t\tif (!ev.duration && !ev.end_date) ev.duration = 1;\r\n\t\t\t\tif (ev.predecessortasks)\r\n\t\t\t\t\tdata.collections.links.push({\r\n\t\t\t\t\t\ttarget: ev.id,\r\n\t\t\t\t\t\tsource: ev.predecessortasks,\r\n\t\t\t\t\t\ttype: gantt.config.links.finish_to_start\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t},\r\n\t\tserialize: function () {\r\n\t\t\tgantt.message(\"Serialization to 'old XML' is not implemented\");\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.serverList = function (name, array) {\r\n\t\tif (array) {\r\n\t\t\tthis.serverList[name] = array.slice(0);\r\n\t\t} else if (!this.serverList[name]) {\r\n\t\t\tthis.serverList[name] = [];\r\n\t\t}\r\n\t\treturn this.serverList[name];\r\n\t};\r\n\r\n};","module.exports = function(gantt) {\r\n\tgantt.isReadonly = function (item) {\r\n\t\tif (item && item[this.config.editable_property]) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn (item && item[this.config.readonly_property]) || this.config.readonly;\r\n\t\t}\r\n\t};\r\n};","module.exports = function(gantt){\r\n\t// TODO: why eslint fails on regexp?\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tgantt._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\r\n\t\t},\r\n\r\n\t\tgetTimelineCellAttr:function(dateString){\r\n\r\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\t\t_taskCommonAttr: function(task, div){\r\n\r\n\t\t\tif(!(task.start_date && task.end_date))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\r\n\r\n\t\t\tif(gantt.isReadonly(task)){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\t\t\t}\r\n\r\n\t\t\tif(task.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetTaskBarAttr: function(task, div){\r\n\t\t\tthis._taskCommonAttr(task, div);\r\n\r\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.drag_move){\r\n\t\t\t\tif(task.id != gantt.getState().drag_id){\r\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttaskRowAttr: function(task, div){\r\n\r\n\t\t\tthis._taskCommonAttr(task, div);\r\n\r\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.order_branch){\r\n\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\r\n\t\t\t}\r\n\r\n\t\t\tdiv.setAttribute(\"role\", \"row\");\r\n\r\n\t\t\tdiv.setAttribute(\"aria-level\", task.$level);\r\n\r\n\t\t\tif(gantt.hasChild(task.id)){\r\n\t\t\t\tdiv.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tlinkAttr: function(link, div){\r\n\r\n\t\t\tvar linkTypes = gantt.config.links;\r\n\r\n\t\t\tvar toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\r\n\t\t\tvar fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\r\n\r\n\t\t\tvar content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\r\n\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(content));\r\n\t\t\tif(gantt.isReadonly(link)){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgridSeparatorAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"separator\");\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":gantt.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = gantt.locale.labels.years;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = gantt.locale.labels.months;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = gantt.locale.labels.days;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = gantt.locale.labels.hours + gantt.locale.labels.minutes;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\tlightboxDurationInputAttrString: function(section){\r\n\t\t\treturn this.getAttributeString({\"aria-label\": gantt.locale.labels.column_duration, \"aria-valuemin\": \"0\"});\r\n\t\t},\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\r\n\t\t},\r\n\r\n\r\n\t\tgridScaleRowAttrString: function(){\r\n\t\t\treturn \"role='row'\";\r\n\t\t},\r\n\r\n\t\tgridScaleCellAttrString: function(column, label){\r\n\t\t\tvar attrs = \"\";\r\n\t\t\tif(column.name == \"add\"){\r\n\t\t\t\tattrs = this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar attributes = {\r\n\t\t\t\t\t\"role\":\"columnheader\",\r\n\t\t\t\t\t\"aria-label\": label\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(gantt._sort && gantt._sort.name == column.name){\r\n\t\t\t\t\tif(gantt._sort.direction == \"asc\"){\r\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"ascending\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"descending\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tattrs = this.getAttributeString(attributes);\r\n\t\t\t}\r\n\t\t\treturn attrs;\r\n\t\t},\r\n\r\n\t\tgridDataAttrString: function(){\r\n\t\t\treturn \"role='rowgroup'\";\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(column, textValue){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": textValue});\r\n\t\t},\r\n\r\n\t\tgridAddButtonAttrString: function(column){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\r\n\t\t},\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn gantt._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !gantt.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in gantt._waiAria){\r\n\t\tgantt._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(gantt._waiAria[i]);\r\n\t}\r\n\r\n\r\n};","module.exports = function(gantt) {\r\n\tgantt.getGridColumn = function(name) {\r\n\t\tvar columns = gantt.config.columns;\r\n\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tif (columns[i].name == name)\r\n\t\t\t\treturn columns[i];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tgantt.getGridColumns = function() {\r\n\t\treturn gantt.config.columns.slice();\r\n\t};\r\n};","module.exports = function(gantt) {\r\n};","import * as env from \"../../utils/env\";\r\nimport * as eventable from \"../../utils/eventable\";\r\nimport { IScale } from \"../common/config\";\r\n\r\ninterface ITimelineZoomConfig {\r\n\thandler?: (e: Event) => {};\r\n\tstartDate?: Date;\r\n\tendDate?: Date;\r\n\tlevels: IZoomLevel[];\r\n\tactiveLevelIndex?: number;\r\n\twidthStep?: number;\r\n\tminColumnWidth?: number;\r\n\tmaxColumnWidth?: number;\r\n\tuseKey?: \"ctrlKey\" | \"altKey\" | \"shiftKey\";\r\n\ttrigger?: \"wheel\" | null | undefined;\r\n\telement?: Element | (() => Element);\r\n}\r\n\r\ntype TPossibleKeys = \"metaKey\" | \"ctrlKey\" | \"altKey\" | \"shiftKey\" | false | undefined;\r\nconst USE_KEY = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"];\r\n\r\ninterface IZoomLevel {\r\n\tname?: string;\r\n\tscale_height?: number;\r\n\tmin_column_width: number;\r\n\tscales: IScale[];\r\n}\r\n\r\nconst _defaultScales = [\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"month\",\r\n\t\t\tdate: \"%M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 8\r\n\t\t},\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t],\r\n];\r\n\r\nexport default class TimelineZoom {\r\n\tpublic attachEvent: (eventName: string, handler: () => void) => string;\r\n\tpublic callEvent: (eventName: string, args: any[]) => any;\r\n\tpublic detachEvent: (eventName: string) => any;\r\n\tprotected _initialStartDate: Date;\r\n\tprotected _initialEndDate: Date;\r\n\tprotected _activeLevelIndex: number;\r\n\tprotected _levels: IZoomLevel[];\r\n\tprotected _handler: (e: any) => void;\r\n\tprotected $gantt;\r\n\tprotected _widthStep: number;\r\n\tprotected _minColumnWidth: number;\r\n\tprotected _maxColumnWidth: number;\r\n\tprotected _useKey: TPossibleKeys;\r\n\tprotected _visibleDate: Date;\r\n\tprotected _initialized: boolean;\r\n\tprotected _domEvents: any;\r\n\r\n\tconstructor(gantt) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis._domEvents = this.$gantt._createDomEventScope();\r\n\t}\r\n\r\n\tpublic init(config: ITimelineZoomConfig) {\r\n\t\tthis._initialStartDate = config.startDate;\r\n\t\tthis._initialEndDate = config.endDate;\r\n\t\tthis._activeLevelIndex = config.activeLevelIndex ? config.activeLevelIndex : 0;\r\n\t\tthis._levels = this._mapScales(config.levels || _defaultScales);\r\n\t\tthis._handler = config.handler || this._defaultHandler;\r\n\t\tthis._minColumnWidth = config.minColumnWidth || 60;\r\n\t\tthis._maxColumnWidth = config.maxColumnWidth || 240;\r\n\t\tthis._widthStep = config.widthStep || 3/8 * config.minColumnWidth;\r\n\t\tthis._useKey = config.useKey;\r\n\r\n\t\tif(!this._initialized){\r\n\t\t\teventable(this);\r\n\t\t\tthis.$gantt.attachEvent(\"onGanttScroll\", () => {\r\n\t\t\t\tthis._getVisibleDate();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\r\n\t\tif(config.trigger === \"wheel\"){\r\n\t\t\tif(this.$gantt.$root){\r\n\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t}else{\r\n\t\t\t\tthis.$gantt.attachEvent(\"onGanttReady\", () => {\r\n\t\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initialized = true;\r\n\t\tthis.setLevel(this._activeLevelIndex);\r\n\t}\r\n\r\n\tpublic zoomIn = () => {\r\n\t\tconst index = this.getCurrentLevel() - 1;\r\n\t\tif(index < 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic zoomOut = () => {\r\n\t\tconst index = this.getCurrentLevel() + 1;\r\n\t\tif(index > this._levels.length - 1){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic getCurrentLevel = () => {\r\n\t\treturn this._activeLevelIndex;\r\n\t}\r\n\r\n\tpublic getLevels = () => {\r\n\t\treturn this._levels;\r\n\t}\r\n\r\n\tpublic setLevel = (level: number|string) => {\r\n\t\tconst zoomLevel = this._getZoomIndexByName(level);\r\n\r\n\t\tif(zoomLevel === -1){\r\n\t\t\tthis.$gantt.assert(zoomLevel !== -1, \"Invalid zoom level for gantt.ext.zoom.setLevel. \" + level + \" is not an expected value.\");\r\n\t\t}\r\n\t\tthis._setLevel(zoomLevel, 0);\r\n\t}\r\n\r\n\tprotected _getZoomIndexByName = (levelName: number|string) => {\r\n\t\tlet zoomLevel:number = -1;\r\n\t\tif(typeof levelName === \"string\"){\r\n\t\t\tif(!isNaN(Number(levelName)) && this._levels[Number(levelName)]){\r\n\t\t\t\tzoomLevel = Number(levelName);\r\n\t\t\t}else{\r\n\t\t\t\tfor(let i = 0; i < this._levels.length; i++){\r\n\t\t\t\t\tif(this._levels[i].name === levelName){\r\n\t\t\t\t\t\tzoomLevel = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tzoomLevel = levelName;\r\n\t\t}\r\n\t\treturn zoomLevel;\r\n\t}\r\n\r\n\tprotected _mapScales(levels: IScale[][] | any): IZoomLevel[]{\r\n\t\treturn levels.map((l) => {\r\n\t\t\tif(Array.isArray(l)){\r\n\t\t\t\treturn {\r\n\t\t\t\t\tscales: l\r\n\t\t\t\t};\r\n\t\t\t}else{\r\n\t\t\t\treturn l;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _getVisibleDate = () => {\r\n\t\tconst scrollPos = this.$gantt.getScrollState().x;\r\n\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\tthis._visibleDate = this.$gantt.dateFromPos(scrollPos + viewPort/2);\r\n\t}\r\n\r\n\tprotected _setLevel = (level: number, cursorOffset: number) => {\r\n\t\tthis._activeLevelIndex = level;\r\n\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst nextConfig = gantt.copy(this._levels[this._activeLevelIndex]);\r\n\t\tconst chartConfig = gantt.copy(nextConfig);\r\n\t\tdelete chartConfig.name;\r\n\r\n\t\tgantt.mixin(gantt.config, chartConfig, true);\r\n\r\n\t\tconst isRendered = !!gantt.$root;\r\n\r\n\t\tif(isRendered){\r\n\t\t\tif(cursorOffset){\r\n\t\t\t\tconst cursorDate = this.$gantt.dateFromPos(cursorOffset + this.$gantt.getScrollState().x);\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(cursorDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - cursorOffset);\r\n\t\t\t}else{\r\n\t\t\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\t\t\tif(!this._visibleDate){\r\n\t\t\t\t\tthis._getVisibleDate();\r\n\t\t\t\t}\r\n\t\t\t\tconst middleDate = this._visibleDate;\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(middleDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - viewPort/2);\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onAfterZoom\", [this._activeLevelIndex, nextConfig]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _attachWheelEvent = (config) => {\r\n\t\tconst event = env.isFF ? \"wheel\" : \"mousewheel\";\r\n\t\tlet el: Element;\r\n\t\tif(typeof config.element === \"function\"){\r\n\t\t\tel = config.element();\r\n\t\t}else{\r\n\t\t\tel = config.element as Element;\r\n\t\t}\r\n\t\tif (!el){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(el, event, this.$gantt.bind(function(e) {\r\n\t\t\tif (this._useKey) {\r\n\t\t\t\tif (USE_KEY.indexOf(this._useKey) < 0) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!e[this._useKey]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (typeof this._handler === \"function\") {\r\n\t\t\t\tthis._handler.apply(this, [e]);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}, this));\r\n\t}\r\n\r\n\tprivate _defaultHandler = (e: any):void => {\r\n\t\tconst timelineOffset = this.$gantt.$task.getBoundingClientRect().x;\r\n\t\tconst cursorOffset = e.clientX - timelineOffset;\r\n\t\tconst wheelY = this.$gantt.env.isFF ? (e.deltaY*-40) : e.wheelDelta;\r\n\t\tlet wheelUp = false;\r\n\t\tif (wheelY > 0) {\r\n\t\t\twheelUp = true;\r\n\t\t}\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tthis._setScaleSettings(wheelUp, cursorOffset);\r\n\t}\r\n\r\n\tprivate _setScaleSettings(wheelUp: boolean, cursorOffset: number) {\r\n\t\tif (wheelUp) {\r\n\t\t\tthis._stepUp(cursorOffset);\r\n\t\t} else {\r\n\t\t\tthis._stepDown(cursorOffset);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setScaleDates = () => {\r\n\t\tif(this._initialStartDate && this._initialEndDate){\r\n\t\t\tthis.$gantt.config.start_date = this._initialStartDate;\r\n\t\t\tthis.$gantt.config.end_date = this._initialEndDate;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _stepUp(cursorOffset) {\r\n\t\tif (this._activeLevelIndex >= this._levels.length - 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width + this._widthStep;\r\n\t\t\tif (newColumnWidth > this._maxColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._minColumnWidth;\r\n\t\t\t\tnextLevel++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel++;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n\tprivate _stepDown(cursorOffset) {\r\n\t\tif (this._activeLevelIndex < 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width - this._widthStep;\r\n\t\t\tif (newColumnWidth < this._minColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._maxColumnWidth;\r\n\t\t\t\tnextLevel--;\r\n\t\t\t}\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel--;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n}","module.exports = function(gantt) {\r\n\tfunction isEnabled() {\r\n\t\treturn gantt.config.auto_types && // if enabled\r\n\t\t\t(gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project);// and supported\r\n\t}\r\n\r\n\tfunction callIfEnabled(callback) {\r\n\t\treturn function() {\r\n\t\t\tif (!isEnabled()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn callback.apply(this, arguments);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction updateParents(childId) {\r\n\t\tgantt.batchUpdate(function() {\r\n\t\t\tcheckParent(childId);\r\n\t\t});\r\n\t}\r\n\r\n\tvar delTaskParent;\r\n\r\n\tfunction checkParent(id) {\r\n\t\tsetTaskType(id);\r\n\t\tvar parent = gantt.getParent(id);\r\n\r\n\t\tif (parent != gantt.config.root_id) {\r\n\t\t\tcheckParent(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setTaskType(id) {\r\n\t\tid = id.id || id;\r\n\t\tvar task = gantt.getTask(id);\r\n\t\tvar targetType = getTaskTypeToUpdate(task);\r\n\r\n\t\tif (targetType !== false) {\r\n\t\t\tupdateTaskType(task, targetType);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateTaskType(task, targetType) {\r\n\t\tif(!gantt.getState().group_mode){\r\n\t\t\ttask.type = targetType;\r\n\t\t\tgantt.updateTask(task.id);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getTaskTypeToUpdate(task) {\r\n\t\tvar allTypes = gantt.config.types;\r\n\t\tvar hasChildren = gantt.hasChild(task.id);\r\n\t\tvar taskType = gantt.getTaskType(task.type);\r\n\r\n\t\tif (hasChildren && taskType === allTypes.task) {\r\n\t\t\treturn allTypes.project;\r\n\t\t}\r\n\r\n\t\tif (!hasChildren && taskType === allTypes.project) {\r\n\t\t\treturn allTypes.task;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar isParsingDone = true;\r\n\r\n\tgantt.attachEvent(\"onParse\", callIfEnabled(function() {\r\n\t\tisParsingDone = false;\r\n\r\n\t\tgantt.batchUpdate(function() {\r\n\t\t\tgantt.eachTask(function(task) {\r\n\t\t\t\tvar targetType = getTaskTypeToUpdate(task);\r\n\t\t\t\tif (targetType !== false) {\r\n\t\t\t\t\tupdateTaskType(task, targetType);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tisParsingDone = true;\r\n\t}));\r\n\r\n\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id) {\r\n\t\tif (isParsingDone) {\r\n\t\t\tupdateParents(id);\r\n\t\t}\r\n\t}));\r\n\r\n\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function(id) {\r\n\t\tif (isParsingDone) {\r\n\t\t\tupdateParents(id);\r\n\t\t}\r\n\t}));\r\n\r\n\tfunction updateAfterRemoveChild(id){\r\n\t\tif (id != gantt.config.root_id && gantt.isTaskExists(id)) {\r\n\t\t\tupdateParents(id);\r\n\t\t}\r\n\t}\r\n\r\n\tgantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function(id, task) {\r\n\t\tdelTaskParent = gantt.getParent(id);\r\n\t\treturn true;\r\n\t}));\r\n\r\n\tgantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function(id, task) {\r\n\t\tupdateAfterRemoveChild(delTaskParent);\r\n\t}));\r\n\r\n\r\n\tvar originalRowDndParent;\r\n\r\n\tgantt.attachEvent(\"onRowDragStart\", callIfEnabled(function(id, target, e) {\r\n\t\toriginalRowDndParent = gantt.getParent(id);\r\n\t\treturn true;\r\n\t}));\r\n\r\n\tgantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function(id, target) {\r\n\t\tupdateAfterRemoveChild(originalRowDndParent);\r\n\t\tupdateParents(id);\r\n\t}));\r\n\r\n\tvar originalMoveTaskParent;\r\n\r\n\tgantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function(sid, parent, tindex) {\r\n\t\toriginalMoveTaskParent = gantt.getParent(sid);\r\n\t\treturn true;\r\n\t}));\r\n\r\n\tgantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function(id, parent, tindex) {\r\n\t\tif (document.querySelector(\".gantt_drag_marker\")) {\r\n\t\t\t// vertical dnd in progress\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateAfterRemoveChild(originalMoveTaskParent);\r\n\t\tupdateParents(id);\r\n\t}));\r\n};","module.exports = function addPlaceholder(gantt){\r\n\tfunction isEnabled(){\r\n\t\treturn gantt.config.placeholder_task;\r\n\t}\r\n\r\n\tfunction callIfEnabled(callback){\r\n\t\treturn function(){\r\n\t\t\tif(!isEnabled()){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn callback.apply(this, arguments);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction silenceDataProcessor(dataProcessor){\r\n\t\tif(dataProcessor && !dataProcessor._silencedPlaceholder){\r\n\t\t\tdataProcessor._silencedPlaceholder = true;\r\n\t\t\tdataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function(id, state, data){\r\n\t\t\t\tif(data.type == gantt.config.types.placeholder){\r\n\t\t\t\t\tdataProcessor.setUpdated(id, false);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction insertPlaceholder(){\r\n\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\r\n\t\tif(!placeholders.length || !gantt.isTaskExists(placeholders[0].id)){\r\n\t\t\tvar placeholder = {\r\n\t\t\t\tunscheduled: true,\r\n\t\t\t\ttype: gantt.config.types.placeholder,\r\n\t\t\t\tduration:0,\r\n\t\t\t\ttext: gantt.locale.labels.new_task\r\n\t\t\t};\r\n\t\t\tif(gantt.callEvent(\"onTaskCreated\", [placeholder]) === false){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tgantt.addTask(placeholder);\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tfunction afterEdit(id){\r\n\t\tvar item = gantt.getTask(id);\r\n\t\tif(item.type == gantt.config.types.placeholder) {\r\n\t\t\tif(item.start_date && item.end_date && item.unscheduled){\r\n\t\t\t\titem.unscheduled = false;\r\n\t\t\t}\r\n\r\n\t\t\tgantt.batchUpdate(function(){\r\n\t\t\t\tvar newTask = gantt.copy(item);\r\n\t\t\t\tgantt.silent(function(){\r\n\t\t\t\t\tgantt.deleteTask(item.id);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdelete newTask[\"!nativeeditor_status\"];\r\n\t\t\t\tnewTask.type = gantt.config.types.task;\r\n\t\t\t\tnewTask.id = gantt.uid();\r\n\t\t\t\tgantt.addTask(newTask);\r\n\r\n\t\t\t\t//insertPlaceholder();\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tgantt.config.types.placeholder = \"placeholder\";\r\n\tgantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\r\n\r\n\tvar ready = false;\r\n\tgantt.attachEvent(\"onGanttReady\", function(){\r\n\t\tif(ready){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tready = true;\r\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\r\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id, task){\r\n\t\t\tif(task.type != gantt.config.types.placeholder){\r\n\t\t\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\r\n\t\t\t\tplaceholders.forEach(function(p){\r\n\t\t\t\t\tgantt.silent(function(){\r\n\t\t\t\t\t\tif(gantt.isTaskExists(p.id))\r\n\t\t\t\t\t\t\tgantt.deleteTask(p.id);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tinsertPlaceholder();\r\n\t\t\t}\r\n\t\t}));\r\n\t\tgantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onBeforeUndoStack\", function(action){\r\n\t\tfor(var i = 0; i < action.commands.length; i++){\r\n\t\t\tvar command = action.commands[i];\r\n\t\t\tif(command.entity === \"task\" && command.value.type === gantt.config.types.placeholder){\r\n\t\t\t\taction.commands.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n};","var helpers = require(\"../../utils/helpers\");\r\nvar getRectangle = require(\"../ui/render/viewport/get_bg_row_rectangle\");\r\n\r\nfunction createResourceMethods(gantt){\r\n\r\n\tvar resourceTaskCache = {};\r\n\r\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\r\n\t\tresourceTaskCache = {};\r\n\t});\r\n\r\n\tfunction getTaskBy(propertyName, propertyValue) {\r\n\t\tif (typeof propertyName == \"function\") {\r\n\t\t\treturn filterResourceTasks(propertyName);\r\n\t\t} else {\r\n\t\t\tif (helpers.isArray(propertyValue)) {\r\n\t\t\t\treturn getResourceTasks(propertyName, propertyValue);\r\n\t\t\t} else {\r\n\t\t\t\treturn getResourceTasks(propertyName, [propertyValue]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction filterResourceTasks(filter) {\r\n\t\tvar res = [];\r\n\t\tgantt.eachTask(function (task) {\r\n\t\t\tif (filter(task)) {\r\n\t\t\t\tres.push(task);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn res;\r\n\t}\r\n\r\n\tvar falsyValuePreffix = String(Math.random());\r\n\tfunction resourceHashFunction(value){\r\n\t\tif (value === null){\r\n\t\t\treturn falsyValuePreffix + String(value);\r\n\t\t}\r\n\t\treturn String(value);\r\n\t}\r\n\r\n\tfunction getResourceTasks(property, resourceIds) {\r\n\t\tvar res;\r\n\t\tvar cacheKey = resourceIds.join(\"_\") + \"_\" + property;\r\n\t\tvar resourceHash = {};\r\n\t\thelpers.forEach(resourceIds, function(resourceId) {\r\n\t\t\tresourceHash[resourceHashFunction(resourceId)] = true;\r\n\t\t});\r\n\r\n\t\tif (!resourceTaskCache[cacheKey]) {\r\n\t\t\tres = resourceTaskCache[cacheKey] = [];\r\n\t\t\tgantt.eachTask(function (task) {\r\n\t\t\t\tif (task.type == gantt.config.types.project) return;\r\n\t\t\t\tif (property in task) {\r\n\t\t\t\t\tvar resourceValue;\r\n\t\t\t\t\tif (!helpers.isArray(task[property])) {\r\n\t\t\t\t\t\tresourceValue = [task[property]];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresourceValue = task[property];\r\n\t\t\t\t\t}\r\n\t\t\t\t\thelpers.forEach(resourceValue, function(value) {\r\n\t\t\t\t\t\tif (resourceHash[resourceHashFunction(value)] || (value && resourceHash[resourceHashFunction(value.resource_id)])) {\r\n\t\t\t\t\t\t\tres.push(task);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tres = resourceTaskCache[cacheKey];\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction getResourceLoad(resource, resourceProperty, scale, timeline){\r\n\t\tvar cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\r\n\t\tvar res;\r\n\t\tif (!resourceTaskCache[cacheKey]) {\r\n\t\t\tres = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\r\n\r\n\t\t} else {\r\n\t\t\tres = resourceTaskCache[cacheKey];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction calculateResourceLoad(resource, resourceProperty, scale, timeline) {\r\n\r\n\t\tvar tasks;\r\n\t\tif(resource.$role == \"task\"){\r\n\t\t\ttasks = [];\r\n\t\t}else{\r\n\t\t\ttasks = getTaskBy(resourceProperty, resource.id);\r\n\t\t}\r\n\t\tvar scaleUnit = scale.unit;\r\n\t\tvar scaleStep = scale.step;\r\n\t\tvar timegrid = {};\r\n\r\n\t\tfor (var i = 0; i < tasks.length; i++) {\r\n\t\t\tvar task = tasks[i];\r\n\r\n\t\t\tvar currDate = gantt.date[scaleUnit + \"_start\"](new Date(task.start_date));\r\n\r\n\t\t\twhile (currDate < task.end_date) {\r\n\r\n\t\t\t\tvar date = currDate;\r\n\t\t\t\tcurrDate = gantt.date.add(currDate, scaleStep, scaleUnit);\r\n\r\n\t\t\t\tif (!gantt.isWorkTime({date: date, task: task, unit: scaleUnit})) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar timestamp = date.valueOf();\r\n\t\t\t\tif (!timegrid[timestamp]){\r\n\t\t\t\t\ttimegrid[timestamp] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimegrid[timestamp].push(task);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar timetable = [];\r\n\t\tvar start, end, tasks;\r\n\t\tvar config = timeline.$getConfig();\r\n\r\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\r\n\t\t\tstart = new Date(scale.trace_x[i]);\r\n\t\t\tend = gantt.date.add(start, scaleStep, scaleUnit);\r\n\t\t\ttasks = timegrid[start.valueOf()] || [];\r\n\t\t\tif(tasks.length || config.resource_render_empty_cells){\r\n\t\t\t\ttimetable.push({\r\n\t\t\t\t\tstart_date: start,\r\n\t\t\t\t\tend_date: end,\r\n\t\t\t\t\ttasks: tasks\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn timetable;\r\n\t}\r\n\r\n\tfunction generateRenderResourceLine(){\r\n\r\n\t\tvar renderedResourceLines = {};\r\n\r\n\t\tfunction renderResourceLineCell(resource, day, templates, config, timeline){\r\n\t\t\tvar css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\tvar content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks);\r\n\r\n\t\t\tif (css || content){\r\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\r\n\t\t\t\tvar el = document.createElement('div');\r\n\t\t\t\tel.className = [\"gantt_resource_marker\", css].join(\" \");\r\n\r\n\t\t\t\tel.style.cssText = [\r\n\t\t\t\t\t'left:' + sizes.left + 'px',\r\n\t\t\t\t\t'width:' + sizes.width + 'px',\r\n\t\t\t\t\t'height:' + (config.row_height - 1) + 'px',\r\n\t\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\r\n\t\t\t\t\t'top:' + sizes.top + 'px'\r\n\t\t\t\t].join(\";\");\r\n\r\n\t\t\t\tif(content)\r\n\t\t\t\t\tel.innerHTML = content;\r\n\t\t\t\t\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfunction detachRenderedResourceLine(id, index){\r\n\t\t\tif(renderedResourceLines[id] && renderedResourceLines[id][index] &&\r\n\t\t\t\trenderedResourceLines[id][index].parentNode\r\n\t\t\t\t){\r\n\t\t\t\t\trenderedResourceLines[id][index].parentNode.removeChild(renderedResourceLines[id][index]);\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderResourceLine(resource, timeline, viewport) {\r\n\t\t\tvar config = timeline.$getConfig(),\r\n\t\t\t\ttemplates = timeline.$getTemplates();\r\n\t\t\tvar scale = timeline.getScale();\r\n\t\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\r\n\r\n\t\t\tvar cells = [];\r\n\t\t\trenderedResourceLines[resource.id] = {};\r\n\t\t\tfor (var i = 0; i < timetable.length; i++) {\r\n\r\n\t\t\t\tvar day = timetable[i];\r\n\t\t\t\tvar columnIndex = scale.trace_indexes[day.start_date.valueOf()];\r\n\t\t\t\tif(!isColumnVisible(columnIndex, scale, viewport)){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar cell = renderResourceLineCell(resource, day, templates, config, timeline);\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcells.push(cell);\r\n\t\t\t\t\trenderedResourceLines[resource.id][columnIndex] = cell;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar row = null;\r\n\t\t\tif(cells.length){\r\n\t\t\t\trow = document.createElement(\"div\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\trow.appendChild(cells[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn row;\r\n\t\t}\r\n\r\n\t\tfunction updateResourceLine(resource, node, timeline, viewport) {\r\n\t\t\tvar config = timeline.$getConfig(),\r\n\t\t\t\ttemplates = timeline.$getTemplates();\r\n\t\t\tvar scale = timeline.getScale();\r\n\t\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\r\n\r\n\t\t\tfor (var i = 0; i < timetable.length; i++) {\r\n\r\n\t\t\t\tvar day = timetable[i];\r\n\t\t\t\tvar columnIndex = scale.trace_indexes[day.start_date.valueOf()];\r\n\t\t\t\tif(!isColumnVisible(columnIndex, scale, viewport)){\r\n\t\t\t\t\tdetachRenderedResourceLine(resource.id, columnIndex);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!renderedResourceLines[resource.id] || !renderedResourceLines[resource.id][columnIndex]){\r\n\t\t\t\t\tvar cell = renderResourceLineCell(resource, day, templates, config, timeline);\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tnode.appendChild(cell);\r\n\t\t\t\t\t\trenderedResourceLines[resource.id][columnIndex] = cell;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(renderedResourceLines[resource.id] && renderedResourceLines[resource.id][columnIndex] && !renderedResourceLines[resource.id][columnIndex].parentNode){\r\n\t\t\t\t\tnode.appendChild(renderedResourceLines[resource.id][columnIndex]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trender: renderResourceLine,\r\n\t\t\tupdate: updateResourceLine,\r\n\t\t\tgetRectangle: getRectangle\r\n\t\t};\r\n\t}\r\n\t\r\n\tfunction renderBar(level, start, end, timeline){\r\n\t\tvar top = (1 - (level*1||0))*100;\r\n\t\tvar left = timeline.posFromDate(start);\r\n\t\tvar right = timeline.posFromDate(end);\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.className = \"gantt_histogram_hor_bar\";\r\n\t\telement.style.top = top + '%';\r\n\t\telement.style.left = left + \"px\";\r\n\t\telement.style.width = (right - left + 1) + \"px\";\r\n\t\treturn element;\r\n\t}\r\n\tfunction renderConnection(prevLevel, nextLevel, left){\r\n\t\tif(prevLevel === nextLevel){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar top = 1 - Math.max(prevLevel, nextLevel);\r\n\t\tvar height = Math.abs(prevLevel - nextLevel);\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.className = \"gantt_histogram_vert_bar\";\r\n\t\telement.style.top = top*100 + \"%\";\r\n\t\telement.style.height = height*100 + \"%\";\r\n\t\telement.style.left = left + \"px\";\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tfunction isColumnVisible(columnIndex, scale, viewPort){\r\n\t\tvar width = scale.width[columnIndex];\r\n\t\tvar cellLeftCoord = scale.left[columnIndex] - width;\r\n\t\tvar cellRightCoord = scale.left[columnIndex] + width;\r\n\t\treturn (width > 0 && cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x);//do not render skipped columns\r\n\t}\r\n\r\n\r\n\r\n\tfunction generateRenderResourceHistogram(){\r\n\r\n\t\tvar renderedHistogramCells = {};\r\n\t\tvar renderedHistogramRows = {};\r\n\t\tvar renderedHistogramCapacity = {};\r\n\r\n\t\tfunction detachRenderedHistogramCell(id, index){\r\n\r\n\t\t\tvar renderedRow = renderedHistogramCells[id];\r\n\t\t\tif(renderedRow && renderedRow[index] && \r\n\t\t\t\trenderedRow[index].parentNode\r\n\t\t\t\t){\r\n\t\t\t\t\trenderedRow[index].parentNode.removeChild(renderedRow[index]);\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderHistogramLine(capacity, timeline, maxCapacity, viewPort){\r\n\t\t\tvar scale = timeline.getScale();\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\t\tfor(var i = 0; i < scale.trace_x.length; i++){\r\n\t\t\t\tif(!isColumnVisible(i, scale, viewPort)){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar colStart = scale.trace_x[i];\r\n\t\t\t\tvar colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\r\n\t\t\t\tvar col = scale.trace_x[i].valueOf();\r\n\t\t\t\tvar level = Math.min(capacity[col]/maxCapacity, 1) || 0;\r\n\t\t\t\t// do not render histogram for lines with below zero capacity, as it's reserved for folders\r\n\t\t\t\tif(level < 0){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nextLevel = Math.min(capacity[colEnd.valueOf()]/maxCapacity, 1) || 0;\r\n\t\t\t\tvar bar = renderBar(level, colStart, colEnd, timeline);\r\n\t\t\t\tif(bar){\r\n\t\t\t\t\tel.appendChild(bar);\r\n\t\t\t\t}\r\n\t\t\t\tvar connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\r\n\t\t\t\tif(connection){\r\n\t\t\t\t\tel.appendChild(connection);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn el;\r\n\t\t}\r\n\r\n\t\tfunction renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport){\r\n\r\n\t\t\tvar renderedElement = renderedHistogramCapacity[resource.id];\r\n\t\t\tif(renderedElement && renderedElement.parentNode){\r\n\t\t\t\trenderedElement.parentNode.removeChild(renderedElement);\r\n\t\t\t}\r\n\r\n\t\t\tvar capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\r\n\t\t\tif (capacityElement) {\r\n\t\t\t\tcapacityElement.setAttribute(\"data-resource-id\", resource.id);\r\n\t\t\t\tcapacityElement.style.position = \"absolute\";\r\n\t\t\t\tcapacityElement.style.top = (sizes.top + 1) + \"px\";\r\n\t\t\t\tcapacityElement.style.height = (config.row_height - 1) + \"px\";\r\n\t\t\t\tcapacityElement.style.left = 0;\r\n\t\t\t}\r\n\t\t\treturn capacityElement;\r\n\t\t}\r\n\r\n\t\tfunction renderHistogramCell(resource, sizes, maxCapacity, config, templates, day){\r\n\t\t\tvar css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\tvar content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\tvar fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\tif(css || content){\r\n\t\t\t\tvar el = document.createElement('div');\r\n\t\t\t\tel.className = [\"gantt_histogram_cell\", css].join(\" \");\r\n\r\n\t\t\t\tel.style.cssText = [\r\n\t\t\t\t\t'left:' + sizes.left + 'px',\r\n\t\t\t\t\t'width:' + sizes.width + 'px',\r\n\t\t\t\t\t'height:' + (config.row_height - 1) + 'px',\r\n\t\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\r\n\t\t\t\t\t'top:' + (sizes.top + 1) + 'px'\r\n\t\t\t\t].join(\";\");\r\n\r\n\r\n\t\t\t\tif (content) {\r\n\t\t\t\t\tcontent = \"
\" + content +\"
\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (fill) {\r\n\t\t\t\t\tcontent = \"
\" + content;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (content) {\r\n\t\t\t\t\tel.innerHTML = content;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfunction renderResourceHistogram(resource, timeline, viewport) {\r\n\t\t\tvar config = timeline.$getConfig(),\r\n\t\t\t\ttemplates = timeline.$getTemplates();\r\n\t\t\tvar scale = timeline.getScale();\r\n\t\t\tvar timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\r\n\r\n\t\t\tvar cells = [];\r\n\t\t\tvar capacityMatrix = {};\r\n\t\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\r\n\t\t\trenderedHistogramCells[resource.id] = {};\r\n\t\t\trenderedHistogramRows[resource.id] = null;\r\n\t\t\trenderedHistogramCapacity[resource.id] = null;\r\n\t\t\tfor (var i = 0; i < timetable.length; i++) {\r\n\t\t\t\tvar day = timetable[i];\r\n\t\t\t\tvar columnIndex = scale.trace_indexes[day.start_date.valueOf()];\r\n\t\t\t\tif(!isColumnVisible(columnIndex, scale, viewport)){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\r\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\r\n\r\n\t\t\t\tvar el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day);\r\n\t\t\t\tif(el){\r\n\t\t\t\t\tcells.push(el);\r\n\t\t\t\t\trenderedHistogramCells[resource.id][columnIndex] = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar row = null;\r\n\t\t\tif (cells.length) {\r\n\t\t\t\trow = document.createElement(\"div\");\r\n\t\t\t\tfor (var i = 0; i < cells.length; i++) {\r\n\t\t\t\t\trow.appendChild(cells[i]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\r\n\t\t\t\tif(capacityElement){\r\n\t\t\t\t\trow.appendChild(capacityElement);\r\n\t\t\t\t\trenderedHistogramCapacity[resource.id] = capacityElement;\r\n\t\t\t\t}\r\n\t\t\t\trenderedHistogramRows[resource.id] = row;\r\n\t\t\t}\r\n\r\n\t\t\treturn row;\r\n\t\t}\r\n\r\n\t\tfunction updateResourceHistogram(resource, node, timeline, viewport) {\r\n\t\t\tvar config = timeline.$getConfig(),\r\n\t\t\t\ttemplates = timeline.$getTemplates();\r\n\t\t\tvar scale = timeline.getScale();\r\n\t\t\tvar timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\r\n\t\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\r\n\t\t\tvar capacityMatrix = {};\r\n\r\n\t\t\tfor (var i = 0; i < timetable.length; i++) {\r\n\t\t\t\tvar day = timetable[i];\r\n\t\t\t\tvar columnIndex = scale.trace_indexes[day.start_date.valueOf()];\r\n\t\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\r\n\t\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\r\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\r\n\r\n\t\t\t\tif(!isColumnVisible(columnIndex, scale, viewport)){\r\n\t\t\t\t\tdetachRenderedHistogramCell(resource.id, columnIndex);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar renderedCell = renderedHistogramCells[resource.id];\r\n\t\t\t\tif(!renderedCell || !renderedCell[columnIndex]){\r\n\t\t\t\t\tvar el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day);\r\n\t\t\t\t\tif(el){\r\n\t\t\t\t\t\tnode.appendChild(el);\r\n\t\t\t\t\t\trenderedHistogramCells[resource.id][columnIndex] = el;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(renderedCell && renderedCell[columnIndex] && !renderedCell[columnIndex].parentNode){\r\n\t\t\t\t\tnode.appendChild(renderedCell[columnIndex]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\r\n\t\t\tif(capacityElement){\r\n\t\t\t\tnode.appendChild(capacityElement);\r\n\t\t\t\trenderedHistogramCapacity[resource.id] = capacityElement;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trender: renderResourceHistogram,\r\n\t\t\tupdate: updateResourceHistogram,\r\n\t\t\tgetRectangle: getRectangle\r\n\t\t};\r\n\t}\r\n\t\r\n\r\n\tfunction selectAssignments(resourceId, taskId, result){\r\n\t\tvar property = gantt.config.resource_property;\r\n\t\tvar owners = [];\r\n\t\tif (gantt.getDatastore(\"task\").exists(taskId)) {\r\n\t\t\tvar task = gantt.getTask(taskId);\r\n\t\t\towners = task[property] || [];\r\n\t\t}\r\n\r\n\t\tif (!Array.isArray(owners)) {\r\n\t\t\towners = [owners];\r\n\t\t}\r\n\t\tfor (var i = 0; i < owners.length; i++) {\r\n\t\t\tif (owners[i].resource_id == resourceId) {\r\n\t\t\t\tresult.push({task_id: task.id, resource_id:owners[i].resource_id, value:owners[i].value});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getResourceAssignments(resourceId, taskId){\r\n\t\t// resource assignment as an independent module:\r\n\t\t// {taskId:, resourceId, value}\r\n\t\t// TODO: probably should add a separate datastore for these\r\n\t\tvar assignments = [];\r\n\t\tvar property = gantt.config.resource_property;\r\n\t\tif(taskId !== undefined){\r\n\t\t\tselectAssignments(resourceId, taskId, assignments);\r\n\t\t}else{\r\n\t\t\tvar tasks = gantt.getTaskBy(property, resourceId);\r\n\t\t\ttasks.forEach(function(task){\r\n\t\t\t\tselectAssignments(resourceId, task.id, assignments);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn assignments;\r\n\t}\r\n\r\n\treturn {\r\n\t\trenderLine: generateRenderResourceLine,\r\n\t\trenderHistogram: generateRenderResourceHistogram,\r\n\t\tfilterTasks: getTaskBy,\r\n\t\tgetResourceAssignments: getResourceAssignments\r\n\t};\r\n}\r\n\r\nmodule.exports = function(gantt){\r\n\tvar methods = createResourceMethods(gantt);\r\n\r\n\tgantt.getTaskBy = methods.filterTasks;\r\n\tgantt.getResourceAssignments = methods.getResourceAssignments;\r\n\tgantt.$ui.layers.resourceRow = methods.renderLine;\r\n\tgantt.$ui.layers.resourceHistogram = methods.renderHistogram;\r\n\tgantt.config.resource_property = \"owner_id\";\r\n\tgantt.config.resource_store = \"resource\";\r\n\tgantt.config.resource_render_empty_cells = false;\r\n\r\n\t/**\r\n\t * these are placeholder functions that should be redefined by the user\r\n\t*/\r\n\tgantt.templates.histogram_cell_class = function(start_date, end_date, resource, tasks) {};\r\n\tgantt.templates.histogram_cell_label = function(start_date, end_date, resource, tasks) {\r\n\t\treturn tasks.length + \"/3\";\r\n\t};\r\n\tgantt.templates.histogram_cell_allocated = function(start_date, end_date, resource, tasks) {\r\n\t\treturn tasks.length / 3;\r\n\t};\r\n\tgantt.templates.histogram_cell_capacity = function(start_date, end_date, resource, tasks) {\r\n\t\treturn 0;\r\n\t};\r\n\r\n\r\n\r\n\tgantt.templates.resource_cell_class = function(start, end, resource, tasks) {\r\n\t\tvar css = \"\";\r\n\t\tif (tasks.length <= 1) {\r\n\t\t\tcss = \"gantt_resource_marker_ok\";\r\n\t\t} else {\r\n\t\t\tcss = \"gantt_resource_marker_overtime\";\r\n\t\t}\r\n\t\treturn css;\r\n\t};\r\n\r\n\tgantt.templates.resource_cell_value = function(start, end, resource, tasks) {\r\n\t\treturn tasks.length * 8;\r\n\t};\r\n};\r\n\r\n\r\n","if (window.dhtmlx){\r\n\r\n\tif (!window.dhtmlx.attaches)\r\n\twindow.dhtmlx.attaches = {};\r\n\r\n\twindow.dhtmlx.attaches.attachGantt=function(start, end, gantt){\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\r\n\t\tgantt = gantt || window.gantt;\r\n\r\n\t\tobj.id = \"gantt_\"+ gantt.uid();\r\n\t\tobj.style.width = \"100%\";\r\n\t\tobj.style.height = \"100%\";\r\n\t\tobj.cmp = \"grid\";\r\n\r\n\t\tdocument.body.appendChild(obj);\r\n\t\tthis.attachObject(obj.id);\r\n\t\tthis.dataType = \"gantt\";\r\n\t\tthis.dataObj = gantt;\r\n\r\n\t\tvar that = this.vs[this.av];\r\n\t\tthat.grid = gantt;\r\n\r\n\t\tgantt.init(obj.id, start, end);\r\n\t\tobj.firstChild.style.border = \"none\";\r\n\r\n\t\tthat.gridId = obj.id;\r\n\t\tthat.gridObj = obj;\r\n\r\n\t\tvar method_name=\"_viewRestore\";\r\n\t\treturn this.vs[this[method_name]()].grid;\r\n\t};\r\n\r\n}\r\nif (typeof(window.dhtmlXCellObject) != \"undefined\") {\r\n\r\n\twindow.dhtmlXCellObject.prototype.attachGantt=function(start, end, gantt){\r\n\t\tgantt = gantt || window.gantt;\r\n\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"gantt_\"+gantt.uid();\r\n\t\tobj.style.width = \"100%\";\r\n\t\tobj.style.height = \"100%\";\r\n\t\tobj.cmp = \"grid\";\r\n\r\n\t\tdocument.body.appendChild(obj);\r\n\t\tthis.attachObject(obj.id);\r\n\r\n\t\tthis.dataType = \"gantt\";\r\n\t\tthis.dataObj = gantt;\r\n\r\n\t\tgantt.init(obj.id, start, end);\r\n\t\tobj.firstChild.style.border = \"none\";\r\n\r\n\t\tobj = null;\r\n\t\tthis.callEvent(\"_onContentAttach\",[]);\r\n\r\n\t\treturn this.dataObj;\r\n\t};\r\n}\r\n\r\nmodule.exports = null;","if (window.jQuery){\r\n\r\n\t(function( $ ){\r\n\r\n\t\tvar methods = [];\r\n\t\t$.fn.dhx_gantt = function(config){\r\n\t\t\tconfig = config || {};\r\n\t\t\tif (typeof(config) === 'string') {\r\n\t\t\t\tif (methods[config] ) {\r\n\t\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t\t}else {\r\n\t\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvar views = [];\r\n\t\t\t\tthis.each(function() {\r\n\t\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\t\tif (!this.gantt && !(window.gantt.$root == this)){\r\n\r\n\t\t\t\t\t\t\tvar newgantt = (window.gantt.$container && window.Gantt) ? window.Gantt.getGanttInstance():window.gantt;\r\n\t\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\t\tnewgantt.config[key] = config[key];\r\n\r\n\t\t\t\t\t\t\tnewgantt.init(this);\r\n\t\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\t\tnewgantt.parse(config.data);\r\n\r\n\t\t\t\t\t\t\tviews.push(newgantt);\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\tviews.push(typeof this.gantt == \"object\" ? this.gantt : window.gantt);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\tif (views.length === 1) return views[0];\r\n\t\t\t\treturn views;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t})(window.jQuery);\r\n\r\n}\r\n\r\n\r\nmodule.exports = null;","var createWbs = (function(gantt){\r\n\treturn {\r\n\t_needRecalc: true,\r\n\treset: function(){\r\n\t\tthis._needRecalc = true;\r\n\t},\r\n\t_isRecalcNeeded: function(){\r\n\t\treturn (!this._isGroupSort() && this._needRecalc);\r\n\t},\r\n\t_isGroupSort: function() {\r\n\t\treturn !!(gantt.getState().group_mode);\r\n\t},\r\n\t_getWBSCode: function(task) {\r\n\t\tif(!task) return \"\";\r\n\r\n\t\tif(this._isRecalcNeeded()){\r\n\t\t\tthis._calcWBS();\r\n\t\t}\r\n\r\n\t\tif(task.$virtual) return \"\";\r\n\t\tif(this._isGroupSort()) return task.$wbs || \"\";\r\n\r\n\t\tif(!task.$wbs) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis._calcWBS();\r\n\t\t}\r\n\t\treturn task.$wbs;\r\n\t},\r\n\t_setWBSCode: function(task, value) {\r\n\t\ttask.$wbs = value;\r\n\t},\r\n\tgetWBSCode: function(task) {\r\n\t\treturn this._getWBSCode(task);\r\n\t},\r\n\tgetByWBSCode: function(code){\r\n\t\tvar parts = code.split(\".\");\r\n\t\tvar currentNode = gantt.config.root_id;\r\n\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\tvar children = gantt.getChildren(currentNode);\r\n\t\t\tvar index = parts[i]*1 - 1;\r\n\t\t\tif(gantt.isTaskExists(children[index])){\r\n\t\t\t\tcurrentNode = children[index];\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(gantt.isTaskExists(currentNode)){\r\n\t\t\treturn gantt.getTask(currentNode);\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t},\r\n\t_calcWBS: function() {\r\n\t\tif(!this._isRecalcNeeded()) return;\r\n\r\n\t\tvar _isFirst = true;\r\n\t\tgantt.eachTask(function(ch) {\r\n\t\t\tif(_isFirst) {\r\n\t\t\t\t_isFirst = false;\r\n\t\t\t\tthis._setWBSCode(ch, \"1\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar _prevSibling = gantt.getPrevSibling(ch.id);\r\n\t\t\tif (_prevSibling !== null) {\r\n\t\t\t\tvar _wbs = gantt.getTask(_prevSibling).$wbs;\r\n\t\t\t\tif(_wbs) {\r\n\t\t\t\t\t_wbs = _wbs.split(\".\");\r\n\t\t\t\t\t_wbs[_wbs.length-1]++;\r\n\t\t\t\t\tthis._setWBSCode(ch, _wbs.join(\".\"));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvar _parent = gantt.getParent(ch.id);\r\n\t\t\t\tthis._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\r\n\t\t\t}\r\n\t\t}, gantt.config.root_id, this);\r\n\r\n\t\tthis._needRecalc = false;\r\n\t}\r\n};\r\n});\r\n\r\nmodule.exports = function(gantt){\r\n\tvar wbs = createWbs(gantt);\r\n\tgantt.getWBSCode = function getWBSCode(task) {\r\n\t\treturn wbs.getWBSCode(task);\r\n\t};\r\n\r\n\tgantt.getTaskByWBSCode = function(code) {\r\n\t\treturn wbs.getByWBSCode(code);\r\n\t};\r\n\r\n\tfunction resetCache(){\r\n\t\twbs.reset();\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgantt.attachEvent(\"onAfterTaskMove\", resetCache);\r\n\tgantt.attachEvent(\"onBeforeParse\", resetCache);\r\n\tgantt.attachEvent(\"onAfterTaskDelete\", resetCache);\r\n\tgantt.attachEvent(\"onAfterTaskAdd\", resetCache);\r\n\tgantt.attachEvent(\"onAfterSort\", resetCache);\r\n\r\n};\r\n","function createMethod(gantt){\r\n\tvar methods = {};\r\n\tvar isActive = false;\r\n\tfunction disableMethod(methodName, dummyMethod){\r\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\r\n\r\n\t\tif(!methods[methodName]){\r\n\t\t\tmethods[methodName] = this[methodName];\r\n\t\t\tthis[methodName] = dummyMethod;\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethod(methodName){\r\n\t\tif(methods[methodName]){\r\n\t\t\tthis[methodName] = methods[methodName];\r\n\t\t\tmethods[methodName] = null;\r\n\t\t}\r\n\t}\r\n\tfunction disableMethods(methodsHash){\r\n\t\tfor(var i in methodsHash){\r\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethods(){\r\n\t\tfor(var i in methods){\r\n\t\t\trestoreMethod.call(this, i);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction batchUpdatePayload(callback){\r\n\t\ttry{\r\n\t\t\tcallback();\r\n\t\t}catch(e){\r\n\t\t\twindow.console.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tvar state = gantt.$services.getService(\"state\");\r\n\tstate.registerProvider(\"batchUpdate\", function(){\r\n\t\treturn {\r\n\t\t\tbatch_update: isActive\r\n\t\t};\r\n\t}, true);\r\n\r\n\treturn function batchUpdate(callback, noRedraw) {\r\n\t\tif(isActive){\r\n\t\t\t// batch mode is already active\r\n\t\t\tbatchUpdatePayload(callback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\r\n\t\tvar dp_mode;\r\n\t\tif (call_dp){\r\n\t\t\tdp_mode = this._dp.updateMode;\r\n\t\t\tthis._dp.setUpdateMode(\"off\");\r\n\t\t}\r\n\r\n\t\t// temporary disable some methods while updating multiple tasks\r\n\t\tvar resetProjects = {};\r\n\t\tvar methods = {\r\n\t\t\t\"render\":true,\r\n\t\t\t\"refreshData\":true,\r\n\t\t\t\"refreshTask\":true,\r\n\t\t\t\"refreshLink\":true,\r\n\t\t\t\"resetProjectDates\":function(task){\r\n\t\t\t\tresetProjects[task.id] = task;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\t// do required updates after changes applied\r\n\t\tfor(var i in resetProjects){\r\n\t\t\tthis.resetProjectDates(resetProjects[i]);\r\n\t\t}\r\n\r\n\t\tisActive = false;\r\n\r\n\t\tif(!noRedraw){\r\n\t\t\tthis.render();\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.setGanttMode(\"task\");\r\n\t\t\tthis._dp.sendData();\r\n\t\t\tthis._dp.setGanttMode(\"link\");\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n}\r\n\r\nmodule.exports = function(gantt){\r\n\tgantt.batchUpdate = createMethod(gantt);\r\n};","var domHelpers = require(\"../../utils/dom_helpers\");\r\n\r\nmodule.exports = function(gantt){\r\n\r\n\tvar scrollRange = 50,\r\n\t\tscrollStep = 30,\r\n\t\tscrollDelay = 10,\r\n\t\tscrollSpeed = 50;\r\n\r\n\tvar interval = null,\r\n\t\tisMove = false,\r\n\t\tdelayTimeout = null,\r\n\t\tstartPos = {\r\n\t\t\tstarted: false\r\n\t\t},\r\n\t\teventPos = {};\r\n\r\n\r\n\tfunction isDisplayed(element){\r\n\t\treturn element &&\r\n\t\t\tdomHelpers.isChildOf(element, gantt.$root) &&\r\n\t\t\telement.offsetHeight;\r\n\t}\r\n\r\n\tfunction getAutoscrollContainer(){\r\n\t\tvar element;\r\n\t\tif(isDisplayed(gantt.$task)){\r\n\t\t\telement = gantt.$task;\r\n\t\t}else if(isDisplayed(gantt.$grid)){\r\n\t\t\telement = gantt.$grid;\r\n\t\t}else{\r\n\t\t\telement = gantt.$root;\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tfunction isScrollState() {\r\n\t\tvar dragMarker = !!document.querySelector(\".gantt_drag_marker\");\r\n\t\tvar isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\");\r\n\t\tvar isLink = !!document.querySelector(\".gantt_link_direction\");\r\n\t\tvar state = gantt.getState();\r\n\t\tvar isClickDrag = state.autoscroll;\r\n\t\tisMove = dragMarker && !isResize && !isLink;\r\n\r\n\t\treturn !((!state.drag_mode && !dragMarker) || isResize) || isClickDrag;\r\n\t}\r\n\r\n\tfunction defineDelayTimeout(state) {\r\n\t\tif (delayTimeout) {\r\n\t\t\tclearTimeout(delayTimeout);\r\n\t\t\tdelayTimeout = null;\r\n\t\t}\r\n\t\tif (state) {\r\n\t\t\tvar speed = gantt.config.autoscroll_speed;\r\n\t\t\tif (speed && speed < 10) // limit speed value to 10\r\n\t\t\t\tspeed = 10;\r\n\r\n\t\t\tdelayTimeout = setTimeout(function() {\r\n\t\t\t\tinterval = setInterval(tick, speed || scrollSpeed);\r\n\t\t\t}, gantt.config.autoscroll_delay || scrollDelay);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction defineScrollInterval(state) {\r\n\t\tif (state) {\r\n\t\t\tdefineDelayTimeout(true);\r\n\t\t\tif (!startPos.started) {\r\n\t\t\t\tstartPos.x = eventPos.x;\r\n\t\t\t\tstartPos.y = eventPos.y;\r\n\t\t\t\tstartPos.started = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (interval) {\r\n\t\t\t\tclearInterval(interval);\r\n\t\t\t\tinterval = null;\r\n\t\t\t}\r\n\t\t\tdefineDelayTimeout(false);\r\n\t\t\tstartPos.started = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction autoscrollInterval(event) {\r\n\r\n\t\tvar isScroll = isScrollState();\r\n\r\n\t\tif ((interval || delayTimeout) && !isScroll) {\r\n\t\t\tdefineScrollInterval(false);\r\n\t\t}\r\n\r\n\t\tif (!gantt.config.autoscroll || !isScroll) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\teventPos = {\r\n\t\t\tx: event.clientX,\r\n\t\t\ty: event.clientY\r\n\t\t};\r\n\r\n\t\tif (!interval && isScroll) {\r\n\t\t\tdefineScrollInterval(true);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction tick() {\r\n\r\n\t\tif (!isScrollState()) {\r\n\t\t\tdefineScrollInterval(false);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar box = domHelpers.getNodePosition(getAutoscrollContainer());\r\n\t\tvar posX = eventPos.x - box.x;\r\n\t\tvar posY = eventPos.y - box.y;\r\n\r\n\t\tvar scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\r\n\t\tvar scrollTop = need_scroll(posY, box.height, startPos.y - box.y);\r\n\r\n\t\tvar scrollState = gantt.getScrollState();\r\n\r\n\t\tvar currentScrollTop = scrollState.y,\r\n\t\t\tscrollOuterHeight = scrollState.inner_height,\r\n\t\t\tscrollInnerHeight = scrollState.height,\r\n\t\t\tcurrentScrollLeft = scrollState.x,\r\n\t\t\tscrollOuterWidth = scrollState.inner_width,\r\n\t\t\tscrollInnerWidth = scrollState.width;\r\n\r\n\t\t// do scrolling only if we have scrollable area to do so\r\n\t\tif (scrollTop && !scrollOuterHeight) {\r\n\t\t\tscrollTop = 0;\r\n\t\t} else if (scrollTop < 0 && !currentScrollTop) {\r\n\t\t\tscrollTop = 0;\r\n\t\t} else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\r\n\t\t\tscrollTop = 0;\r\n\t\t}\r\n\r\n\t\tif (scrollLeft && !scrollOuterWidth) {\r\n\t\t\tscrollLeft = 0;\r\n\t\t} else if (scrollLeft < 0 && !currentScrollLeft) {\r\n\t\t\tscrollLeft = 0;\r\n\t\t} else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\r\n\t\t\tscrollLeft = 0;\r\n\t\t}\r\n\r\n\t\tvar step = gantt.config.autoscroll_step;\r\n\r\n\t\tif (step && step < 2) // limit step value to 2\r\n\t\t\tstep = 2;\r\n\r\n\t\tscrollLeft = scrollLeft * (step || scrollStep);\r\n\t\tscrollTop = scrollTop * (step || scrollStep);\r\n\r\n\t\tif (scrollLeft || scrollTop) {\r\n\t\t\tscroll(scrollLeft, scrollTop);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction need_scroll(pos, boxSize, startCoord) {\r\n\t\tif ((pos - scrollRange < 0) && (pos < startCoord))\r\n\t\t\treturn -1;\r\n\t\telse if ((pos > boxSize - scrollRange) && (pos > startCoord))\r\n\t\t\treturn 1;\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfunction scroll(left, top) {\r\n\t\tvar scrollState = gantt.getScrollState();\r\n\r\n\t\tvar scrollLeft = null,\r\n\t\t\tscrollTop = null;\r\n\r\n\t\tif (left) {\r\n\t\t\tscrollLeft = scrollState.x + left;\r\n\t\t\tscrollLeft = Math.min(scrollState.width, scrollLeft);\r\n\t\t\tscrollLeft = Math.max(0, scrollLeft);\r\n\t\t}\r\n\r\n\t\tif (top) {\r\n\t\t\tscrollTop = scrollState.y + top;\r\n\t\t\tscrollTop = Math.min(scrollState.height, scrollTop);\r\n\t\t\tscrollTop = Math.max(0, scrollTop);\r\n\t\t}\r\n\r\n\t\tgantt.scrollTo(scrollLeft, scrollTop);\r\n\t}\r\n\r\n\tgantt.attachEvent(\"onGanttReady\", function() {\r\n\t\tgantt.eventRemove(document.body, \"mousemove\", autoscrollInterval);\r\n\t\tgantt.event(document.body, \"mousemove\", autoscrollInterval);\r\n\t});\r\n\r\n};","module.exports = function(gantt){\r\n\tif(!gantt.ext){\r\n\t\tgantt.ext = {};\r\n\t}\r\n\r\n\tvar modules = [\r\n\t\trequire(\"./autoscroll\"),\r\n\t\trequire(\"./batch_update\"),\r\n\t\trequire(\"./wbs\"),\r\n\t\trequire(\"./jquery_hooks\"),\r\n\t\trequire(\"./dhtmlx_hooks\"),\r\n\t\trequire(\"./resources\"),\r\n\t\trequire(\"./new_task_placeholder\"),\r\n\t\trequire(\"./auto_task_types\")\r\n\t];\r\n\r\n\tfor(var i = 0; i < modules.length; i++){\r\n\t\tif(modules[i])\r\n\t\t\tmodules[i](gantt);\r\n\t}\r\n\r\n\tvar TimelineZoom = require(\"./timeline_zoom\").default;\r\n\tgantt.ext.zoom = new TimelineZoom(gantt);\r\n};","\r\nexport default function extendGantt(gantt: any, dp: any) {\r\n\tgantt.getUserData = function(id, name) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tif (this.userdata[id] && this.userdata[id][name]) {\r\n\t\t\treturn this.userdata[id][name];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t};\r\n\tgantt.setUserData = function(id, name, value) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tif (!this.userdata[id]) {\r\n\t\t\tthis.userdata[id] = {};\r\n\t\t}\r\n\t\tthis.userdata[id][name] = value;\r\n\t};\r\n\r\n\tgantt._change_id = function(oldId, newId) {\r\n\t\tif (this._dp._ganttMode !== \"task\") {\r\n\t\t\tthis.changeLinkId(oldId, newId);\r\n\t\t} else {\r\n\t\t\tthis.changeTaskId(oldId, newId);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._row_style = function(rowId, classname){\r\n\t\tif (this._dp._ganttMode !== \"task\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!gantt.isTaskExists(rowId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst task = gantt.getTask(rowId);\r\n\t\ttask.$dataprocessor_class = classname;\r\n\t\tgantt.refreshTask(rowId);\r\n\t};\r\n\r\n\t// fake method for dataprocessor\r\n\tgantt._delete_task = function(rowId, node) {}; // tslint:disable-line\r\n\r\n\tgantt._sendTaskOrder = function(id, item){\r\n\t\tif (item.$drop_target) {\r\n\t\t\tthis._dp.setGanttMode(\"task\");\r\n\t\t\tthis.getTask(id).target = item.$drop_target;\r\n\t\t\tthis._dp.setUpdated(id, true,\"order\");\r\n\t\t\tdelete this.getTask(id).$drop_target;\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\r\n\tgantt.setDp();\r\n}","import * as helpers from \"../../utils/helpers\";\r\n\r\nexport default class DataProcessorEvents {\r\n\tprotected _dataProcessorHandlers: any[];\r\n\tprotected $gantt: any;\r\n\tprotected $dp: any;\r\n\r\n\tconstructor(gantt: any, dp: any) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$dp = dp;\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n\r\n\tattach() {\r\n\t\tconst dp = this.$dp;\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst treeHelper = require(\"../../utils/task_tree_helpers\");\r\n\t\tconst cascadeDelete = {};\r\n\r\n\t\tfunction clientSideDelete(id) {\r\n\t\t\tconst updated = dp.updatedRows.slice();\r\n\t\t\tlet clientOnly = false;\r\n\r\n\t\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\r\n\t\t\t\tif (updated[i] === id) {\r\n\t\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\") === \"inserted\") {\r\n\t\t\t\t\t\tclientOnly = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdp.setUpdated(id,false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn clientOnly;\r\n\t\t}\r\n\r\n\t\tfunction getTaskLinks(task) {\r\n\t\t\tlet _links = [];\r\n\r\n\t\t\tif (task.$source) {\r\n\t\t\t\t_links = _links.concat(task.$source);\r\n\t\t\t}\r\n\t\t\tif (task.$target) {\r\n\t\t\t\t_links = _links.concat(task.$target);\r\n\t\t\t}\r\n\r\n\t\t\treturn _links;\r\n\t\t}\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true, \"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\r\n\t\t\t\t// gantt can be destroyed/reinitialized after dp.setUpdated\r\n\t\t\t\tif(gantt._sendTaskOrder){\r\n\t\t\t\t\tgantt._sendTaskOrder(id, item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onBeforeTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (!gantt.config.cascade_delete) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tcascadeDelete[id] = {\r\n\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\r\n\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\r\n\t\t\t};\r\n\t\t\treturn true;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"tasks\");\r\n\r\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (gantt.config.cascade_delete && cascadeDelete[id]) {\r\n\t\t\t\tconst dpMode = dp.updateMode;\r\n\t\t\t\tdp.setUpdateMode(\"off\");\r\n\r\n\t\t\t\tconst cascade = cascadeDelete[id];\r\n\t\t\t\tfor (const i in cascade.tasks) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tfor (const i in cascade.links) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcascadeDelete[id] = null;\r\n\r\n\t\t\t\tif (dpMode !== \"off\") {\r\n\t\t\t\t\tdp.sendAllData();\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdateMode(dpMode);\r\n\t\t\t}\r\n\t\t\tdp.setUpdated(id, true, \"deleted\");\r\n\r\n\t\t\tif (dp.updateMode !== \"off\" && !dp._tSend) {\r\n\t\t\t\tdp.sendAllData();\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"links\");\r\n\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onRowDragEnd\", function(id, target) { // tslint:disable-line\r\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\r\n\t\t}));\r\n\r\n\t\tlet tasks = null;\r\n\t\tlet links = null;\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onTaskIdChange\", function(oldId, newId) { // tslint:disable-line\r\n\t\t\tif (!dp._waitMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst children = gantt.getChildren(newId);\r\n\t\t\tif (children.length) {\r\n\t\t\t\ttasks = tasks || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\t\tconst ch = this.getTask(children[i]);\r\n\t\t\t\t\ttasks[ch.id] = ch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst item = this.getTask(newId);\r\n\t\t\tconst itemLinks = getTaskLinks(item);\r\n\r\n\t\t\tif (itemLinks.length) {\r\n\t\t\t\tlinks = links || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < itemLinks.length; i++) {\r\n\t\t\t\t\tconst link = this.getLink(itemLinks[i]);\r\n\t\t\t\t\tlinks[link.id] = link;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function() {\r\n\t\t\tif (tasks || links) {\r\n\t\t\t\tgantt.batchUpdate(function() {\r\n\t\t\t\t\tfor (const id in tasks) {\r\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const id in links) {\r\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttasks = null;\r\n\t\t\t\t\tlinks = null;\r\n\t\t\t\t});\r\n\t\t\t\tif (tasks) {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\r\n\t\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet url = this._serverProcessor;\r\n\t\t\tif (this._tMode === \"REST-JSON\" || this._tMode === \"REST\") {\r\n\t\t\t\tconst mode = this._ganttMode;\r\n\r\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\r\n\t\t\t\t// editing=true&\r\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + mode;\r\n\t\t\t} else {\r\n\t\t\t\tconst pluralizedMode = this._ganttMode + \"s\";\r\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + pluralizedMode;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", function insertCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tconst methods = {\r\n\t\t\t\tadd: gantt.addTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.add = gantt.addLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdata.id = id;\r\n\t\t\tmethods.add.call(gantt, data);\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"updateCallback\", function updateCallback(upd, id) {\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tif (!gantt.isTaskExists(id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst objData = gantt.getTask(id);\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tlet property = data[key];\r\n\t\t\t\tswitch (key) {\r\n\t\t\t\t\tcase \"id\":\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tcase \"start_date\":\r\n\t\t\t\t\tcase \"end_date\":\r\n\t\t\t\t\t\tproperty = gantt.templates.xml_date !== gantt.templates.parse_date ? gantt.templates.xml_date(property) : gantt.templates.parse_date(property);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"duration\":\r\n\t\t\t\t\t\tobjData.end_date = gantt.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tobjData[key] = property;\r\n\t\t\t}\r\n\t\t\tgantt.updateTask(id);\r\n\t\t\tgantt.refreshData();\r\n\t\t});\r\n\t\tdp.attachEvent(\"deleteCallback\", function deleteCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst methods = {\r\n\t\t\t\tdelete: gantt.deleteTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.delete = gantt.deleteLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\tmethods.delete.call(gantt, id);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdetach() {\r\n\t\thelpers.forEach(this._dataProcessorHandlers, (e) => {\r\n\t\t\tthis.$gantt.detachEvent(e);\r\n\t\t});\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n}\r\n","import * as eventable from \"../../utils/eventable\";\r\nimport * as helpers from \"../../utils/helpers\";\r\nimport * as utils from \"../../utils/utils\";\r\nimport DataProcessorEvents from \"./data_processor_events\";\r\nimport extendGantt from \"./extend_gantt\";\r\n\r\nexport interface DataProcessor { // tslint:disable-line\r\n\t$gantt: any;\r\n\tdetachAllEvents: any;\r\n\tattachEvent: any;\r\n\tcallEvent: any;\r\n\r\n\tserverProcessor: string;\r\n\taction_param: string;\r\n\tobject: any;\r\n\tupdatedRows: any[];\r\n\tautoUpdate: boolean;\r\n\tupdateMode: string;\r\n\tmandatoryFields: any[];\r\n\tmessages: any[];\r\n\tstyles: object;\r\n\tdnd: any;\r\n}\r\n\r\nexport function createDataProcessor(config: any) {\r\n\tlet router;\r\n\tlet tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if (config.hasOwnProperty(\"link\") && config.hasOwnProperty(\"task\")) {\r\n\t\trouter = config;\r\n\t}\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\tconst gantt = this; // tslint:disable-line\r\n\tconst dp = new DataProcessor(config.url);\r\n\tdp.init(gantt);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter\r\n\t}, config.batchUpdate);\r\n\treturn dp;\r\n}\r\n\r\nexport class DataProcessor {\r\n\tpublic modes: object;\r\n\tpublic serverProcessor: string;\r\n\tpublic action_param: string; // tslint:disable-line\r\n\tpublic object: any;\r\n\tpublic updatedRows: any[];\r\n\tpublic autoUpdate: boolean;\r\n\tpublic updateMode: string;\r\n\tpublic mandatoryFields: any[];\r\n\tpublic messages: any[];\r\n\tpublic styles: object;\r\n\tpublic dnd: any;\r\n\r\n\tprotected _tMode: string;\r\n\tprotected _headers: any;\r\n\tprotected _payload: any;\r\n\tprotected _postDelim: string;\r\n\tprotected _waitMode: number;\r\n\tprotected _in_progress: object; // tslint:disable-line\r\n\tprotected _invalid: object;\r\n\tprotected _tSend: boolean;\r\n\tprotected _endnm: boolean;\r\n\tprotected _serializeAsJson: boolean;\r\n\tprotected _router: any;\r\n\tprotected _utf: boolean;\r\n\tprotected obj: any;\r\n\tprotected _columns: any;\r\n\tprotected _changed: boolean;\r\n\tprotected _methods: any[];\r\n\tprotected _user: any;\r\n\tprotected _uActions: object;\r\n\tprotected _needUpdate: boolean;\r\n\tprotected _ganttMode: string;\r\n\r\n\tprotected _silent_mode: any; // tslint:disable-line\r\n\tprotected _updateBusy: any;\r\n\tprotected _serverProcessor: any;\r\n\tprotected _initialized: boolean;\r\n\r\n\tconstructor(serverProcessorURL?) {\r\n\t\tthis.serverProcessor = serverProcessorURL;\r\n\t\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\t\tthis.object = null;\r\n\t\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\t\tthis.autoUpdate = true;\r\n\t\tthis.updateMode = \"cell\";\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tthis._postDelim = \"_\";\r\n\r\n\t\tthis._waitMode = 0;\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._invalid = {};\r\n\t\tthis.mandatoryFields = [];\r\n\t\tthis.messages = [];\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated: \"font-weight:bold;\",\r\n\t\t\tinserted: \"font-weight:bold;\",\r\n\t\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\t\terror: \"color:red;\",\r\n\t\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t\t};\r\n\t\tthis.enableUTFencoding(true);\r\n\t\teventable(this);\r\n\t}\r\n\r\n\tsetTransactionMode(mode:any, total?:any) {\r\n\t\tif (typeof mode === \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (utils.defined(mode.headers)) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (utils.defined(mode.payload)) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-type\"] = \"application/json\";\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t}\r\n\r\n\tescape(data:any) {\r\n\t\tif (this._utf) {\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\t} else {\r\n\t\t\treturn escape(data);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: allows to set escaping mode\r\n\t * @param: true - utf based escaping, simple - use current page encoding\r\n\t * @type: public\r\n\t */\r\n\tenableUTFencoding(mode:boolean) {\r\n\t\tthis._utf = !!mode;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @desc: allows to define, which column may trigger update\r\n\t * @param: val - array or list of true/false values\r\n\t * @type: public\r\n\t */\r\n\tsetDataColumns(val:string|any) {\r\n\t\tthis._columns = (typeof val === \"string\") ? val.split(\",\") : val;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: get state of updating\r\n\t * @returns: true - all in sync with server, false - some items not updated yet.\r\n\t * @type: public\r\n\t */\r\n\tgetSyncState() {\r\n\t\treturn !this.updatedRows.length;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t * @param: mode - true/false\r\n\t * @type: public\r\n\t */\r\n\tenableDataNames(mode: boolean) {\r\n\t\tthis._endnm = !!mode;\r\n\t}\r\n\r\n\t/**\r\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\r\n\t * @param: mode - true/false\r\n\t * @type: public\r\n\t */\r\n\tenablePartialDataSend(mode: boolean) {\r\n\t\tthis._changed = !!mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: set if rows should be send to server automaticaly\r\n\t * @param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t * @type: public\r\n\t */\r\n\tsetUpdateMode(mode: string, dnd: any) {\r\n\t\tthis.autoUpdate = (mode === \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t}\r\n\r\n\tignore(code: any, master: any) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @param: state - true for \"updated\", false for \"not updated\"\r\n\t * @param: mode - update mode name\r\n\t * @type: public\r\n\t */\r\n\tsetUpdated(rowId:number|string, state: boolean, mode?: string) {\r\n\t\tif (this._silent_mode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tconst existing = this.$gantt.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode === \"updated\") {\r\n\t\t\tmode = existing;\r\n\t\t}\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); // clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$gantt.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId]) {\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$gantt.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) {\r\n\t\t\tthis.sendData(rowId);\r\n\t\t}\r\n\t}\r\n\r\n\tmarkRow(id: number | string, state: boolean, mode: string) {\r\n\t\tlet str = \"\";\r\n\t\tconst invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t// default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$gantt[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (let i = 0; i < invalid.details.length; i++) {\r\n\t\t\t\t\tif (invalid.details[i]) {\r\n\t\t\t\t\t\tthis.$gantt[this._methods[1]](id, i, str);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetActionByState(state: string):string {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\r\n\t\t// reorder\r\n\t\treturn \"update\";\r\n\t}\r\n\r\n\tgetState(id: number | string) {\r\n\t\treturn this.$gantt.getUserData(id, this.action_param);\r\n\t}\r\n\r\n\tis_invalid(id: number | string) {\r\n\t\treturn this._invalid[id];\r\n\t}\r\n\r\n\tset_invalid(id: number | string, mode: any, details?) {\r\n\t\tif (details) {\r\n\t\t\tmode = {\r\n\t\t\t\tvalue: mode,\r\n\t\t\t\tdetails,\r\n\t\t\t\ttoString: function() { // tslint:disable-line\r\n\t\t\t\t\treturn this.value.toString();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._invalid[id] = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @type: public\r\n\t */\r\n\t// tslint:disable-next-line\r\n\tcheckBeforeUpdate(rowId: number | string) { // ???\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: send row(s) values to server\r\n\t * @param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t * @type: public\r\n\t */\r\n\tsendData(rowId?: any) {\r\n\t\tif (this._waitMode && (this.$gantt.mytype === \"tree\" || this.$gantt._h2)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.$gantt.editStop) {\r\n\t\t\tthis.$gantt.editStop();\r\n\t\t}\r\n\r\n\r\n\t\tif (typeof rowId === \"undefined\" || this._tSend) {\r\n\t\t\treturn this.sendAllData();\r\n\t\t}\r\n\t\tif (this._in_progress[rowId]) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) {\r\n\t\t\treturn false; // ??? unreachable code, drop it?\r\n\t\t}\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t}\r\n\r\n\t_beforeSendData(data: any, rowId: any) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._sendData(data, rowId);\r\n\t}\r\n\r\n\tserialize(data: any, id: any) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tif (typeof id !== \"undefined\") {\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\t} else {\r\n\t\t\tconst stack = [];\r\n\t\t\tconst keys = [];\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this._postDelim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$gantt.security_key) {\r\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\r\n\t\t\t}\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t}\r\n\r\n\t_serializeAsJSON(data: any) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tconst copy = utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t}\r\n\r\n\tserialize_one(data: any, pref: string) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tconst stack = [];\r\n\t\tlet serialized = \"\";\r\n\t\tfor (const key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key === \"id\" ||\r\n\t\t\t\t\tkey == this.action_param) && // tslint:disable-line\r\n\t\t\t\t\tthis._tMode === \"REST\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t}\r\n\r\n\t_applyPayload(url: string) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._payload) {\r\n\t\t\tfor (const key in this._payload) {\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\t_sendData(dataToSend: any, rowId?: any) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tconst taskState = this.getState(rowId);\r\n\t\t\tconst taskAction = this.getActionByState(taskState);\r\n\t\t\tconst ganttMode = this.getGanttMode();\r\n\t\t\tconst _onResolvedCreateUpdate = (tag) => {\r\n\t\t\t\tlet action = taskState || \"updated\";\r\n\t\t\t\tlet sid = rowId;\r\n\t\t\t\tlet tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\taction = tag.action || taskState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tthis.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\t};\r\n\r\n\t\t\tlet actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\r\n\t\t\t} else if (this._router[ganttMode] instanceof Function) {\r\n\t\t\t\tactionPromise = this._router[ganttMode](taskAction, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (taskState) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet queryParams: any;\r\n\t\tqueryParams = {\r\n\t\t\tcallback: (xml) => {\r\n\t\t\t\tconst ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (const key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.afterUpdate(this, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: this._headers\r\n\t\t};\r\n\r\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$gantt.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tlet url: any = this._applyPayload(urlParams);\r\n\t\tlet data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(dataToSend, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tfor (const key in dataToSend) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = dataToSend[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t}\r\n\r\n\t_forEachUpdatedRow(code: any) {\r\n\t\tconst updatedRows = this.updatedRows.slice();\r\n\t\tfor (let i = 0; i < updatedRows.length; i++) {\r\n\t\t\tconst rowId = updatedRows[i];\r\n\t\t\tif (this.$gantt.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsendAllData() {\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tlet valid: any = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId); // ??? checkBeforeUpdate() always is true\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tlet stop = false;\r\n\r\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\r\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (stop) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t\tif (this._waitMode && (this.$gantt.mytype === \"tree\" || this.$gantt._h2)) {\r\n\t\t\t\t\t\tstop = true; // block send all for tree\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_getAllData() {\r\n\t\tconst out = {};\r\n\t\tlet hasOne = false;\r\n\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thasOne = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\r\n\t\treturn hasOne ? out : null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @desc: specify column which value should be verified before sending to server\r\n\t * @param: ind - column index (0 based)\r\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\r\n\t * @type: public\r\n\t */\r\n\tsetVerificator(ind: number, verifFunction: any) {\r\n\t\tthis.mandatoryFields[ind] = verifFunction || (function(value) { return (value !== \"\"); });\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: remove column from list of those which should be verified\r\n\t * @param: ind - column Index (0 based)\r\n\t * @type: public\r\n\t */\r\n\tclearVerificator(ind: number) {\r\n\t\tthis.mandatoryFields[ind] = false;\r\n\t}\r\n\r\n\tfindRow(pattern: any) {\r\n\t\tlet i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++) {\r\n\t\t\tif (pattern == this.updatedRows[i]) { // tslint:disable-line\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: define custom actions\r\n\t * @param: name - name of action, same as value of action attribute\r\n\t * @param: handler - custom function, which receives a XMl response content for action\r\n\t * @type: private\r\n\t */\r\n\tdefineAction(name: string, handler: any) {\r\n\t\tif (!this._uActions) {\r\n\t\t\tthis._uActions = {};\r\n\t\t}\r\n\t\tthis._uActions[name] = handler;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t * @param: sid - id of item before update\r\n\t * @param: tid - id of item after up0ate\r\n\t * @param: action - action name\r\n\t * @type: public\r\n\t * @topic: 0\r\n\t */\r\n\tafterUpdateCallback(sid: number | string, tid: number | string, action: string, btag: any) {\r\n\t\tif(!this.$gantt){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst marker = sid;\r\n\t\tconst correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tconst originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) { // tslint:disable-line\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$gantt[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$gantt[this._methods[3]](sid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$gantt.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: response from server\r\n\t * @param: xml - XMLLoader object with response XML\r\n\t * @type: private\r\n\t */\r\n\tafterUpdate(that: any, xml: any, id?:any) {\r\n\t\tlet _xml;\r\n\t\tif (arguments.length === 3) {\r\n\t\t\t_xml = arguments[1];\r\n\t\t} else {\r\n\t\t\t// old dataprocessor\r\n\t\t\t_xml = arguments[4];\r\n\t\t}\r\n\t\tlet mode = this.getGanttMode();\r\n\t\tconst reqUrl = _xml.filePath || _xml.url;\r\n\r\n\t\tif (this._tMode !== \"REST\" && this._tMode !== \"REST-JSON\") {\r\n\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") !== -1) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (reqUrl.indexOf(\"/link\") > reqUrl.indexOf(\"/task\")) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setGanttMode(mode);\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\t// try to use json first\r\n\t\tif ((window as any).JSON) {\r\n\t\t\tlet tag;\r\n\r\n\t\t\ttry {\r\n\t\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t\t// empty response also can be processed by json handler\r\n\t\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\t\ttag = {};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (tag) {\r\n\t\t\t\tconst action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\t\tconst sid = tag.sid || id[0];\r\n\t\t\t\tconst tid = tag.tid || id[0];\r\n\t\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\t\tthat.finalizeUpdate();\r\n\t\t\t\tthis.setGanttMode(mode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// xml response\r\n\t\tconst top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\t\tconst atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < atag.length; i++) {\r\n\t\t\tconst btag = atag[i];\r\n\t\t\tconst action = btag.getAttribute(\"type\");\r\n\t\t\tconst sid = btag.getAttribute(\"sid\");\r\n\t\t\tconst tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t}\r\n\r\n\tcleanUpdate(id: any[]) {\r\n\t\tif (id) {\r\n\t\t\tfor (let i = 0; i < id.length; i++) {\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfinalizeUpdate() {\r\n\t\tif (this._waitMode) {\r\n\t\t\tthis._waitMode--;\r\n\t\t}\r\n\r\n\t\tif ((this.$gantt.mytype === \"tree\" || this.$gantt._h2) && this.updatedRows.length) {\r\n\t\t\tthis.sendData();\r\n\t\t}\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: initializes data-processor\r\n\t * @param: anObj - dhtmlxGrid object to attach this data-processor to\r\n\t * @type: public\r\n\t */\r\n\tinit(anObj: any) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$gantt = anObj;\r\n\t\tif (this.$gantt._dp_init) {\r\n\t\t\tthis.$gantt._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated:\"gantt_updated\",\r\n\t\t\torder:\"gantt_updated\",\r\n\t\t\tinserted:\"gantt_inserted\",\r\n\t\t\tdeleted:\"gantt_deleted\",\r\n\t\t\tinvalid:\"gantt_invalid\",\r\n\t\t\terror:\"gantt_error\",\r\n\t\t\tclear:\"\"\r\n\t\t};\r\n\r\n\t\tthis._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\r\n\t\textendGantt(this.$gantt, this);\r\n\t\tconst dataProcessorEvents = new DataProcessorEvents(this.$gantt, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this.setGanttMode;\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$gantt._dp;\r\n\t\t\tdelete this.$gantt._change_id;\r\n\t\t\tdelete this.$gantt._row_style;\r\n\t\t\tdelete this.$gantt._delete_task;\r\n\t\t\tdelete this.$gantt._sendTaskOrder;\r\n\t\t\tdelete this.$gantt;\r\n\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$gantt.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\t}\r\n\r\n\t_setDefaultTransactionMode() {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t}\r\n\r\n\tsetOnAfterUpdate(handler) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", handler);\r\n\t}\r\n\r\n\tenableDebug(mode) {} // tslint:disable-line\r\n\r\n\tsetOnBeforeUpdateHandler(handler) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", handler);\r\n\t}\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate(interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._needUpdate = false;\r\n\t\t// this._loader = null;\r\n\t\tthis._updateBusy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", this.afterAutoUpdate); // arguments sid, action, tid, xml_node;\r\n\r\n\t\tthis.attachEvent(\"onFullSync\", this.fullSync);\r\n\r\n\t\twindow.setInterval(() => {\r\n\t\t\tthis.loadUpdate();\r\n\t\t}, interval);\r\n\t}\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is depricated\r\n\t\tset flag for autoupdating immidiatly\r\n\t*/\r\n\tafterAutoUpdate(sid, action, tid, xml_node) { // tslint:disable-line\r\n\t\tif (action === \"collision\") {\r\n\t\t\tthis._needUpdate = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync() {\r\n\t\tif (this._needUpdate) {\r\n\t\t\tthis._needUpdate = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates(url, callback) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._updateBusy) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis._updateBusy = true;\r\n\t\t}\r\n\r\n\t\t// this._loader = this._loader || new dtmlXMLLoaderObject(true);\r\n\r\n\t\t// this._loader.async=true;\r\n\t\t// this._loader.waitCall=callback;\r\n\t\t// this._loader.loadXML(url);\r\n\t\tajax.get(url, callback);\r\n\r\n\t}\r\n\r\n\t// I didn't found some use of _v and _a functions\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_v(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\r\n\t/* returns values array of xml nodes array\r\n\t\t@param arr\r\n\t\t\tarray of xml nodes\r\n\t*/\r\n\t_a(arr) {\r\n\t\tconst res = [];\r\n\t\tfor (let i = 0; i < arr.length; i++) {\r\n\t\t\tres[i] = this._v(arr[i]);\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate() {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tconst version = this.$gantt.getUserData(0, \"version\");\r\n\t\tlet url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, (xml) => {\r\n\t\t\tconst vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tthis.obj.setUserData(0, \"version\", this._v(vers[0]));\r\n\r\n\t\t\tconst upds = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (upds.length) {\r\n\t\t\t\tthis._silent_mode = true;\r\n\r\n\t\t\t\tfor (let i = 0; i < upds.length; i++) {\r\n\t\t\t\t\tconst status = upds[i].getAttribute(\"status\");\r\n\t\t\t\t\tconst id = upds[i].getAttribute(\"id\");\r\n\t\t\t\t\tconst parent = upds[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [upds[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [upds[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [upds[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._silent_mode = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._updateBusy = false;\r\n\t\t});\r\n\t}\r\n\r\n\tdestructor() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t}\r\n\r\n\tsetGanttMode(mode) {\r\n\t\tif (mode === \"tasks\") {\r\n\t\t\tmode = \"task\";\r\n\t\t} else if (mode === \"links\") {\r\n\t\t\tmode = \"link\";\r\n\t\t}\r\n\r\n\t\tconst modes = this.modes || {};\r\n\t\tconst ganttMode = this.getGanttMode();\r\n\t\tif (ganttMode) {\r\n\t\t\tmodes[ganttMode] = {\r\n\t\t\t\t_in_progress : this._in_progress,\r\n\t\t\t\t_invalid: this._invalid,\r\n\t\t\t\tupdatedRows : this.updatedRows\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tlet newState = modes[mode];\r\n\t\tif (!newState) {\r\n\t\t\tnewState = modes[mode] = {\r\n\t\t\t\t_in_progress : {},\r\n\t\t\t\t_invalid : {},\r\n\t\t\t\tupdatedRows : []\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._in_progress = newState._in_progress;\r\n\t\tthis._invalid = newState._invalid;\r\n\t\tthis.updatedRows = newState.updatedRows;\r\n\t\tthis.modes = modes;\r\n\t\tthis._ganttMode = mode;\r\n\t}\r\n\tgetGanttMode():string {\r\n\t\treturn this._ganttMode;\r\n\t}\r\n\r\n\t_getRowData(id) {\r\n\t\tlet task;\r\n\t\tif (this.getGanttMode() === \"task\") {\r\n\t\t\ttask = this.$gantt.isTaskExists(id) ? this.$gantt.getTask(id) : { id };\r\n\t\t} else {\r\n\t\t\ttask = this.$gantt.isLinkExists(id) ? this.$gantt.getLink(id) : { id };\r\n\t\t}\r\n\r\n\t\ttask = this.$gantt.copy(task);\r\n\r\n\t\tconst data = {};\r\n\t\tfor (const key in task) {\r\n\t\t\tif (key.substr(0, 1) === \"$\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst value = task[key];\r\n\t\t\tif (helpers.isDate(value)) {\r\n\t\t\t\tdata[key] = this.$gantt.templates.xml_format !== this.$gantt.templates.format_date ? this.$gantt.templates.xml_format(value) : this.$gantt.templates.format_date(value);\r\n\t\t\t} else if(value === null) {\r\n\t\t\t\tdata[key] = \"\";\r\n\t\t\t} else {\r\n\t\t\t\tdata[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst taskTiming = this.$gantt._get_task_timing_mode(task);\r\n\t\tif(taskTiming.$no_start){\r\n\t\t\ttask.start_date = \"\";\r\n\t\t\ttask.duration = \"\";\r\n\t\t}\r\n\t\tif(taskTiming.$no_end){\r\n\t\t\ttask.end_date = \"\";\r\n\t\t\ttask.duration = \"\";\r\n\t\t}\r\n\t\tdata[this.action_param] = this.$gantt.getUserData(id, this.action_param);\r\n\t\treturn data;\r\n\t}\r\n\r\n\t_isFetchResult(result) {\r\n\t\treturn result.body instanceof ReadableStream;\r\n\t}\r\n\r\n\tsetSerializeAsJSON(flag: true) {\r\n\t\tthis._serializeAsJson = flag;\r\n\t}\r\n}","var DataProcessor = require(\"./data_processor\");\r\nmodule.exports = {\r\n\tDEPRECATED_api: function(server) {\r\n\t\treturn new (DataProcessor.DataProcessor)(server);\r\n\t},\r\n\tcreateDataProcessor: DataProcessor.createDataProcessor,\r\n\tgetDataProcessorModes: DataProcessor.getAvailableModes\r\n};","var storeRenderCreator = function(name, gantt){\r\n\tvar store = gantt.getDatastore(name);\r\n\r\n\tvar itemRepainter = {\r\n\t\trenderItem: function(id, renderer){\r\n\r\n\t\t\tvar renders = renderer.getLayers();\r\n\r\n\t\t\tvar item = store.getItem(id);\r\n\t\t\tif(item && store.isVisible(id)) {\r\n\t\t\t\tfor (var i = 0; i < renders.length; i++)\r\n\t\t\t\t\trenders[i].render_item(item);\r\n\t\t\t}\r\n\t\t},\r\n\t\trenderItems: function(renderer){\r\n\t\t\tvar renderers = renderer.getLayers();\r\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\r\n\t\t\t\trenderers[i].clear();\r\n\t\t\t}\r\n\r\n\t\t\tvar data = store.getVisibleItems();\r\n\r\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\r\n\t\t\t\trenderers[i].render_items(data);\r\n\t\t\t}\r\n\t\t},\r\n\t\tupdateItems: function(layer) {\r\n\t\t\tif(layer.update_items){\r\n\t\t\t\tvar data = store.getVisibleItems();\r\n\t\t\t\tlayer.update_items(data);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\r\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\r\n\t\tif(renderer){\r\n\t\t\trenderer.onUpdateRequest = function(layer){\r\n\t\t\t\titemRepainter.updateItems(layer);\r\n\t\t\t};\r\n\t\t}\r\n\t});\r\n\r\n\tfunction skipRepaint(gantt){\r\n\t\tvar state = gantt.$services.getService(\"state\");\r\n\t\tif(state.getState(\"batchUpdate\").batch_update){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\r\n\t\tif(skipRepaint(gantt)){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\r\n\r\n\t\tif(renderer){\r\n\t\t\tif(!id || action == \"move\" || action == \"delete\"){\r\n\t\t\t\tstore.callEvent(\"onBeforeRefreshAll\", []);\r\n\t\t\t\titemRepainter.renderItems(renderer);\r\n\t\t\t\tstore.callEvent(\"onAfterRefreshAll\", []);\r\n\t\t\t}else{\r\n\t\t\t\tstore.callEvent(\"onBeforeRefreshItem\", [item.id]);\r\n\t\t\t\titemRepainter.renderItem(item.id, renderer);\r\n\t\t\t\tstore.callEvent(\"onAfterRefreshItem\", [item.id]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t// TODO: probably can be done more in a more efficient way\r\n\tstore.attachEvent(\"onItemOpen\", function(){\r\n\t\tgantt.render();\r\n\t});\r\n\r\n\tstore.attachEvent(\"onItemClose\", function(){\r\n\t\tgantt.render();\r\n\t});\r\n\r\n\tfunction refreshId(renders, oldId, newId, item) {\r\n\t\tfor (var i = 0; i < renders.length; i++) {\r\n\t\t\trenders[i].change_id(oldId, newId);\r\n\t\t}\r\n\t}\r\n\r\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId){\r\n\r\n\t\t// in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\r\n\t\t// use onBeforeIdChange for this hook.\r\n\t\t// TODO: use something more reasonable instead\r\n\t\tstore.callEvent(\"onBeforeIdChange\", [oldId, newId]);\r\n\r\n\t\tif(skipRepaint(gantt)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\r\n\t\trefreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\r\n\t\titemRepainter.renderItem(newId, renderer);\r\n\t});\r\n\r\n};\r\n\r\nmodule.exports = {\r\n\tbindDataStore: storeRenderCreator\r\n};","function createDataStoreSelectMixin(store){\r\n\tvar selectedId = null;\r\n\r\n\tvar deleteItem = store._removeItemInner;\r\n\t\r\n\tfunction unselect(id){\r\n\t\tselectedId = null;\r\n\t\tthis.callEvent(\"onAfterUnselect\", [id]);\r\n\t}\r\n\r\n\tstore._removeItemInner = function(id){\r\n\t\tif(selectedId == id){\r\n\t\t\tunselect.call(this, id);\r\n\t\t}\r\n\r\n\t\tif(selectedId && this.eachItem){\r\n\t\t\tthis.eachItem(function(subItem){\r\n\t\t\t\tif(subItem.id == selectedId){\r\n\t\t\t\t\tunselect.call(this, subItem.id);\r\n\t\t\t\t}\r\n\t\t\t}, id);\r\n\t\t}\r\n\r\n\t\treturn deleteItem.apply(this, arguments);\r\n\t};\r\n\r\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId) {\r\n\t\tif (store.getSelectedId() == oldId) {\r\n\t\t\tstore.silent(function () {\r\n\t\t\t\tstore.unselect(oldId);\r\n\t\t\t\tstore.select(newId);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\treturn {\r\n\t\tselect: function(id){\r\n\t\t\tif (id){\r\n\r\n\t\t\t\tif(selectedId == id)\r\n\t\t\t\t\treturn selectedId;\r\n\r\n\t\t\t\tif(!this._skip_refresh) {\r\n\t\t\t\t\tif (!this.callEvent(\"onBeforeSelect\", [id])) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.unselect();\r\n\r\n\t\t\t\tselectedId = id;\r\n\r\n\t\t\t\tif(!this._skip_refresh) {\r\n\t\t\t\t\tthis.refresh(id);\r\n\t\t\t\t\tthis.callEvent(\"onAfterSelect\", [id]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn selectedId;\r\n\t\t},\r\n\t\tgetSelectedId: function(){\r\n\t\t\treturn selectedId;\r\n\t\t},\r\n\t\tisSelected: function(id){\r\n\t\t\treturn id == selectedId;\r\n\t\t},\r\n\t\tunselect: function(id){\r\n\t\t\tvar id = id || selectedId;\r\n\t\t\tif(!id)\r\n\t\t\t\treturn;\r\n\t\t\tselectedId = null;\r\n\t\t\tif(!this._skip_refresh){\r\n\t\t\t\tthis.refresh(id);\r\n\t\t\t\tunselect.call(this, id);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = createDataStoreSelectMixin;","var powerArray = require(\"./power_array\");\r\nvar utils = require(\"../../utils/utils\");\r\nvar DataStore = require(\"./datastore\");\r\n\r\nvar TreeDataStore = function(config){\r\n\tDataStore.apply(this, [config]);\r\n\tthis._branches = {};\r\n\r\n\tthis.pull = {};\r\n\tthis.$initItem = config.initItem;\r\n\tthis.$parentProperty = config.parentProperty || \"parent\";\r\n\r\n\tif(typeof config.rootId !== \"function\"){\r\n\t\tthis.$getRootId = (function(val){\r\n\t\t\treturn function(){return val;};\r\n\t\t})(config.rootId || 0);\r\n\t}else{\r\n\t\tthis.$getRootId = config.rootId;\r\n\t}\r\n\r\n\t// TODO: replace with live reference to gantt config\r\n\tthis.$openInitially = config.openInitially;\r\n\r\n\tthis.visibleOrder = powerArray.$create();\r\n\tthis.fullOrder = powerArray.$create();\r\n\tthis._searchVisibleOrder = {};\r\n\tthis._skip_refresh = false;\r\n\r\n\tthis._ganttConfig = null;\r\n\tif(config.getConfig){\r\n\t\tthis._ganttConfig = config.getConfig();\r\n\t}\r\n\r\n\tthis.attachEvent(\"onFilterItem\", function(id, item){\r\n\r\n\t\tvar canOpenSplitTasks = false;\r\n\t\tif(this._ganttConfig){\r\n\t\t\tvar canOpenSplitTasks = this._ganttConfig.open_split_tasks;\r\n\t\t}\r\n\r\n\t\tvar open = true;\r\n\t\tthis.eachParent(function(parent){\r\n\t\t\topen = open && parent.$open && (canOpenSplitTasks || !this._isSplitItem(parent));\r\n\t\t}, item);\r\n\t\treturn !!open;\r\n\t});\r\n\r\n\treturn this;\r\n};\r\n\r\nTreeDataStore.prototype = utils.mixin({\r\n\r\n\t\t_buildTree: function(data){\r\n\t\t\tvar item = null;\r\n\t\t\tvar rootId = this.$getRootId();\r\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\r\n\t\t\t\titem = data[i];\r\n\t\t\t\tthis.setParent(item, this.getParent(item) || rootId);\r\n\t\t\t}\r\n\r\n\t\t\t// calculating $level for each item\r\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\r\n\t\t\t\titem = data[i];\r\n\t\t\t\tthis._add_branch(item);\r\n\t\t\t\titem.$level = this.calculateItemLevel(item);\r\n\r\n\t\t\t\tif (!utils.defined(item.$open)) {\r\n\t\t\t\t\titem.$open = utils.defined(item.open) ? item.open : this.$openInitially();\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\tthis._updateOrder();\r\n\t\t},\r\n\t\t_isSplitItem: function(item){\r\n\t\t\treturn (item.render == \"split\" && this.hasChild(item.id));\r\n\t\t},\r\n\t\tparse: function(data){\r\n\t\t\tthis.callEvent(\"onBeforeParse\", [data]);\r\n\t\t\tvar loaded = this._parseInner(data);\r\n\t\t\tthis._buildTree(loaded);\r\n\t\t\tthis.filter();\r\n\t\t\tthis.callEvent(\"onParse\", [loaded]);\r\n\t\t},\r\n\r\n\t\t_addItemInner: function(item, index){\r\n\r\n\t\t\tvar parent = this.getParent(item);\r\n\r\n\t\t\tif(!utils.defined(parent)){\r\n\t\t\t\tparent = this.$getRootId();\r\n\t\t\t\tthis.setParent(item, parent);\r\n\t\t\t}\r\n\r\n\t\t\tvar parentIndex = this.getIndexById(parent);\r\n\t\t\tvar targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\r\n\r\n\t\t\tif(targetIndex*1 !== targetIndex){\r\n\t\t\t\ttargetIndex = undefined;\r\n\t\t\t}\r\n\t\t\tDataStore.prototype._addItemInner.call(this, item, targetIndex);\r\n\t\t\tthis.setParent(item, parent);\r\n\r\n\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\r\n\t\t\t\tthis._move_branch(item, item.$rendered_parent);\r\n\t\t\t}\r\n\t\t\tthis._add_branch(item, index);\r\n\t\t},\r\n\t\t_changeIdInner: function(oldId, newId){\r\n\t\t\tvar children = this.getChildren(oldId);\r\n\t\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\r\n\r\n\t\t\tDataStore.prototype._changeIdInner.call(this, oldId, newId);\r\n\r\n\t\t\tvar parent = this.getParent(newId);\r\n\r\n\t\t\tthis._replace_branch_child(parent, oldId, newId);\r\n\t\t\tfor(var i = 0; i < children.length; i++){\r\n\t\t\t\tthis.setParent(this.getItem(children[i]), newId);\r\n\t\t\t}\r\n\r\n\t\t\tthis._searchVisibleOrder[newId] = visibleOrder;\r\n\t\t\tdelete this._branches[oldId];\r\n\t\t},\r\n\r\n\t\t_traverseBranches: function(code, parent){\r\n\t\t\tparent = parent || this.$getRootId();\r\n\t\t\tvar branch = this._branches[parent];\r\n\t\t\tif (branch) {\r\n\t\t\t\tfor (var i = 0; i < branch.length; i++) {\r\n\t\t\t\t\tvar itemId = branch[i];\r\n\t\t\t\t\tcode.call(this, itemId);\r\n\t\t\t\t\tif (this._branches[itemId])\r\n\t\t\t\t\t\tthis._traverseBranches(code, itemId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_updateOrder: function(code){\r\n\r\n\t\t\tthis.fullOrder = powerArray.$create();\r\n\t\t\tthis._traverseBranches(function(taskId){\r\n\t\t\t\tthis.fullOrder.push(taskId);\r\n\t\t\t});\r\n\r\n\t\t\tif(code)\r\n\t\t\t\tDataStore.prototype._updateOrder.call(this, code);\r\n\t\t},\r\n\r\n\t\t_removeItemInner: function(id){\r\n\r\n\t\t\tvar items = [];\r\n\t\t\tthis.eachItem(function(child){\r\n\t\t\t\titems.push(child);\r\n\t\t\t}, id);\r\n\r\n\t\t\titems.push(this.getItem(id));\r\n\r\n\t\t\tfor(var i = 0; i < items.length; i++){\r\n\r\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\r\n\t\t\t\tDataStore.prototype._removeItemInner.call(this, items[i].id);\r\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tmove: function(sid, tindex, parent){\r\n\t\t\t//target id as 4th parameter\r\n\t\t\tvar id = arguments[3];\r\n\t\t\tif (id) {\r\n\t\t\t\tif (id === sid) return;\r\n\r\n\t\t\t\tparent = this.getParent(id);\r\n\t\t\t\ttindex = this.getBranchIndex(id);\r\n\t\t\t}\r\n\t\t\tif(sid == parent){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tparent = parent || this.$getRootId();\r\n\t\t\tvar source = this.getItem(sid);\r\n\t\t\tvar source_pid = this.getParent(source.id);\r\n\r\n\t\t\tvar tbranch = this.getChildren(parent);\r\n\r\n\t\t\tif (tindex == -1)\r\n\t\t\t\ttindex = tbranch.length + 1;\r\n\t\t\tif (source_pid == parent) {\r\n\t\t\t\tvar sindex = this.getBranchIndex(sid);\r\n\t\t\t\tif (sindex == tindex) return;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false)\r\n\t\t\t\treturn false;\r\n\r\n\t\t\tthis._replace_branch_child(source_pid, sid);\r\n\t\t\ttbranch = this.getChildren(parent);\r\n\r\n\t\t\tvar tid = tbranch[tindex];\r\n\t\t\tif (!tid) //adding as last element\r\n\t\t\t\ttbranch.push(sid);\r\n\t\t\telse\r\n\t\t\t\ttbranch = tbranch.slice(0, tindex).concat([ sid ]).concat(tbranch.slice(tindex));\r\n\r\n\t\t\tthis.setParent(source, parent);\r\n\t\t\tthis._branches[parent] = tbranch;\r\n\r\n\t\t\tvar diff = this.calculateItemLevel(source) - source.$level;\r\n\t\t\tsource.$level += diff;\r\n\t\t\tthis.eachItem(function(item){\r\n\t\t\t\titem.$level += diff;\r\n\t\t\t}, source.id, this);\r\n\r\n\r\n\t\t\tthis._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\r\n\r\n\t\t\tthis.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\r\n\t\tgetBranchIndex: function(id){\r\n\t\t\tvar branch = this.getChildren(this.getParent(id));\r\n\t\t\tfor (var i = 0; i < branch.length; i++)\r\n\t\t\t\tif (branch[i] == id)\r\n\t\t\t\t\treturn i;\r\n\r\n\t\t\treturn -1;\r\n\t\t},\r\n\t\thasChild: function(id){\r\n\t\t\treturn (utils.defined(this._branches[id]) && this._branches[id].length);\r\n\t\t},\r\n\t\tgetChildren: function(id){\r\n\t\t\treturn utils.defined(this._branches[id]) ? this._branches[id] : powerArray.$create();\r\n\t\t},\r\n\r\n\t\tisChildOf: function(childId, parentId){\r\n\t\t\tif (!this.exists(childId))\r\n\t\t\t\treturn false;\r\n\t\t\tif (parentId === this.$getRootId())\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tif (!this.hasChild(parentId))\r\n\t\t\t\treturn false;\r\n\r\n\t\t\tvar item = this.getItem(childId);\r\n\t\t\tvar pid = this.getParent(childId);\r\n\r\n\t\t\tvar parent = this.getItem(parentId);\r\n\t\t\tif(parent.$level >= item.$level){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\twhile (item && this.exists(pid)) {\r\n\t\t\t\titem = this.getItem(pid);\r\n\r\n\t\t\t\tif (item && item.id == parentId)\r\n\t\t\t\t\treturn true;\r\n\t\t\t\tpid = this.getParent(item);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tgetSiblings: function(id){\r\n\t\t\tif(!this.exists(id)){\r\n\t\t\t\treturn powerArray.$create();\r\n\t\t\t}\r\n\t\t\tvar parent = this.getParent(id);\r\n\t\t\treturn this.getChildren(parent);\r\n\r\n\t\t},\r\n\t\tgetNextSibling: function(id){\r\n\t\t\tvar siblings = this.getSiblings(id);\r\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\r\n\t\t\t\tif(siblings[i] == id)\r\n\t\t\t\t\treturn siblings[i+1] || null;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tgetPrevSibling: function(id){\r\n\t\t\tvar siblings = this.getSiblings(id);\r\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\r\n\t\t\t\tif(siblings[i] == id)\r\n\t\t\t\t\treturn siblings[i-1] || null;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tgetParent: function(id){\r\n\t\t\tvar item = null;\r\n\t\t\tif(id.id !== undefined){\r\n\t\t\t\titem = id;\r\n\t\t\t}else{\r\n\t\t\t\titem = this.getItem(id);\r\n\t\t\t}\r\n\r\n\t\t\tvar parent;\r\n\t\t\tif(item){\r\n\t\t\t\tparent = item[this.$parentProperty];\r\n\t\t\t}else{\r\n\t\t\t\tparent = this.$getRootId();\r\n\t\t\t}\r\n\t\t\treturn parent;\r\n\r\n\t\t},\r\n\r\n\t\tclearAll: function(){\r\n\t\t\tthis._branches = {};\r\n\t\t\tDataStore.prototype.clearAll.call(this);\r\n\t\t},\r\n\r\n\t\tcalculateItemLevel: function(item){\r\n\t\t\tvar level = 0;\r\n\t\t\tthis.eachParent(function(){\r\n\t\t\t\tlevel++;\r\n\t\t\t}, item);\r\n\t\t\treturn level;\r\n\t\t},\r\n\r\n\t\t_setParentInner: function(item, new_pid, silent){\r\n\t\t\tif(!silent){\r\n\t\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\r\n\t\t\t\t\tthis._move_branch(item, item.$rendered_parent, new_pid);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis._move_branch(item, item[this.$parentProperty], new_pid);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetParent: function(item, new_pid, silent){\r\n\t\t\tthis._setParentInner(item, new_pid, silent);\r\n\r\n\t\t\titem[this.$parentProperty] = new_pid;\r\n\t\t},\r\n\t\teachItem: function(code, parent){\r\n\t\t\tparent = parent || this.$getRootId();\r\n\r\n\r\n\t\t\tvar branch = this.getChildren(parent);\r\n\t\t\tif (branch)\r\n\t\t\t\tfor (var i=0; i b[field];\r\n\t\t\t\treturn result ? 1 : -1;\r\n\t\t\t}) : field;\r\n\r\n\t\t\tif (desc) {\r\n\t\t\t\tvar original_criteria = criteria;\r\n\t\t\t\tcriteria = function (a, b) {\r\n\t\t\t\t\treturn original_criteria(b, a);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar els = this.getChildren(parent);\r\n\r\n\t\t\tif (els){\r\n\t\t\t\tvar temp = [];\r\n\t\t\t\tfor (var i = els.length - 1; i >= 0; i--)\r\n\t\t\t\t\ttemp[i] = this.getItem(els[i]);\r\n\r\n\t\t\t\ttemp.sort(criteria);\r\n\r\n\t\t\t\tfor (var i = 0; i < temp.length; i++) {\r\n\t\t\t\t\tels[i] = temp[i].id;\r\n\t\t\t\t\tthis.sort(field, desc, els[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfilter: function(rule){\r\n\t\t\tfor(var i in this.pull){\r\n\t\t\t\tif(this.pull[i].$rendered_parent !== this.getParent(this.pull[i])){\r\n\t\t\t\t\tthis._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn DataStore.prototype.filter.apply(this, arguments);\r\n\t\t},\r\n\r\n\t\topen: function(id){\r\n\t\t\tif(this.exists(id)){\r\n\t\t\t\tthis.getItem(id).$open = true;\r\n\t\t\t\tthis.callEvent(\"onItemOpen\", [id]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclose: function(id){\r\n\t\t\tif(this.exists(id)){\r\n\t\t\t\tthis.getItem(id).$open = false;\r\n\t\t\t\tthis.callEvent(\"onItemClose\", [id]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestructor: function(){\r\n\t\t\tDataStore.prototype.destructor.call(this);\r\n\t\t\tthis._branches = null;\r\n\t\t}\r\n\t},\r\n\tDataStore.prototype\r\n);\r\n\r\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\r\n\r\n\r\nvar createLinksStoreFacade = function(){\r\n\treturn {\r\n\tgetLinkCount: function () {\r\n\t\treturn this.$data.linksStore.count();\r\n\t},\r\n\r\n\tgetLink : function (id) {\r\n\t\treturn this.$data.linksStore.getItem(id);\r\n\t},\r\n\r\n\tgetLinks : function () {\r\n\t\treturn this.$data.linksStore.getItems();\r\n\t},\r\n\r\n\tisLinkExists : function (id) {\r\n\t\treturn this.$data.linksStore.exists(id);\r\n\t},\r\n\r\n\taddLink : function (link) {\r\n\t\treturn this.$data.linksStore.addItem(link);\r\n\t},\r\n\r\n\tupdateLink : function (id, data) {\r\n\t\tif (!utils.defined(data))\r\n\t\t\tdata = this.getLink(id);\r\n\t\tthis.$data.linksStore.updateItem(id, data);\r\n\t},\r\n\r\n\tdeleteLink : function (id) {\r\n\t\treturn this.$data.linksStore.removeItem(id);\r\n\t},\r\n\r\n\tchangeLinkId : function (oldid, newid) {\r\n\t\treturn this.$data.linksStore.changeId(oldid, newid);\r\n\t}\r\n};\r\n};\r\n\r\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\r\n\r\nvar createTasksDatastoreFacade = function(){\r\n\treturn {\r\n\tgetTask: function (id) {\r\n\t\tthis.assert(id, \"Invalid argument for gantt.getTask\");\r\n\t\tvar task = this.$data.tasksStore.getItem(id);\r\n\t\tthis.assert(task, \"Task not found id=\" + id);\r\n\t\treturn task;\r\n\t},\r\n\tgetTaskByTime: function (from, to) {\r\n\t\tvar p = this.$data.tasksStore.getItems();\r\n\r\n\t\tvar res = [];\r\n\r\n\t\tif (!(from || to)) {\r\n\t\t\tres = p;\r\n\t\t} else {\r\n\t\t\tfrom = +from || -Infinity;\r\n\t\t\tto = +to || Infinity;\r\n\t\t\tfor (var t = 0; t < p.length; t++){\r\n\t\t\t\tvar task = p[t];\r\n\t\t\t\tif (+task.start_date < to && +task.end_date > from)\r\n\t\t\t\t\tres.push(task);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\tisTaskExists: function (id) {\r\n\t\tif(!this.$data || !this.$data.tasksStore){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this.$data.tasksStore.exists(id);\r\n\t},\r\n\tupdateTask: function (id, item) {\r\n\t\tif (!utils.defined(item)) item = this.getTask(id);\r\n\t\tthis.$data.tasksStore.updateItem(id, item);\r\n\t\tif(this.isTaskExists(id))\r\n\t\t\tthis.refreshTask(id);\r\n\t},\r\n\taddTask: function (item, parent, index) {\r\n\t\tif (!utils.defined(item.id))\r\n\t\t\titem.id = utils.uid();\r\n\r\n\t\tif (!utils.defined(parent)) parent = this.getParent(item) || 0;\r\n\t\tif (!this.isTaskExists(parent)) parent = this.config.root_id;\r\n\t\tthis.setParent(item, parent);\r\n\r\n\t\treturn this.$data.tasksStore.addItem(item, index, parent);\r\n\t},\r\n\tdeleteTask: function (id) {\r\n\t\treturn this.$data.tasksStore.removeItem(id);\r\n\t},\r\n\tgetTaskCount: function () {\r\n\t\treturn this.$data.tasksStore.count();\r\n\t},\r\n\tgetVisibleTaskCount: function () {\r\n\t\treturn this.$data.tasksStore.countVisible();\r\n\t},\r\n\tgetTaskIndex: function (id) {\r\n\t\treturn this.$data.tasksStore.getBranchIndex(id);\r\n\t},\r\n\tgetGlobalTaskIndex: function (id) {\r\n\t\tthis.assert(id, \"Invalid argument\");\r\n\t\treturn this.$data.tasksStore.getIndexById(id);\r\n\t},\r\n\teachTask: function (code, parent, master) {\r\n\t\treturn this.$data.tasksStore.eachItem(utils.bind(code, master||this), parent);\r\n\t},\r\n\teachParent: function (callback, startTask, master) {\r\n\t\treturn this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\r\n\t},\r\n\tchangeTaskId: function (oldid, newid) {\r\n\t\tthis.$data.tasksStore.changeId(oldid, newid);\r\n\t\tvar task = this.$data.tasksStore.getItem(newid);\r\n\r\n\t\tvar links = [];\r\n\r\n\t\tif (task.$source) {\r\n\t\t\tlinks = links.concat(task.$source);\r\n\t\t}\r\n\t\tif (task.$target) {\r\n\t\t\tlinks = links.concat(task.$target);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < links.length; i++) {\r\n\t\t\tvar link = this.getLink(links[i]);\r\n\t\t\tif (link.source == oldid) {\r\n\t\t\t\tlink.source = newid;\r\n\t\t\t}\r\n\t\t\tif (link.target == oldid) {\r\n\t\t\t\tlink.target = newid;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcalculateTaskLevel: function (item) {\r\n\t\treturn this.$data.tasksStore.calculateItemLevel(item);\r\n\t},\r\n\tgetNext: function (id) {\r\n\t\treturn this.$data.tasksStore.getNext(id);\r\n\t},\r\n\tgetPrev: function (id) {\r\n\t\treturn this.$data.tasksStore.getPrev(id);\r\n\t},\r\n\tgetParent: function (id) {\r\n\t\treturn this.$data.tasksStore.getParent(id);\r\n\t},\r\n\tsetParent: function (task, new_pid, silent) {\r\n\t\treturn this.$data.tasksStore.setParent(task, new_pid, silent);\r\n\t},\r\n\tgetSiblings: function (id) {\r\n\t\treturn this.$data.tasksStore.getSiblings(id).slice();\r\n\t},\r\n\tgetNextSibling: function (id) {\r\n\t\treturn this.$data.tasksStore.getNextSibling(id);\r\n\t},\r\n\tgetPrevSibling: function (id) {\r\n\t\treturn this.$data.tasksStore.getPrevSibling(id);\r\n\t},\r\n\tgetTaskByIndex: function(index){\r\n\t\tvar id = this.$data.tasksStore.getIdByIndex(index);\r\n\t\tif(this.isTaskExists(id)){\r\n\t\t\treturn this.getTask(id);\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t},\r\n\tgetChildren: function (id) {\r\n\t\tif(!this.hasChild(id)){\r\n\t\t\treturn [];\r\n\t\t}else{\r\n\t\t\treturn this.$data.tasksStore.getChildren(id).slice();\r\n\t\t}\r\n\t},\r\n\thasChild: function (id) {\r\n\t\treturn this.$data.tasksStore.hasChild(id);\r\n\t},\r\n\topen: function (id) {\r\n\t\tthis.$data.tasksStore.open(id);\r\n\t},\r\n\tclose: function (id) {\r\n\t\tthis.$data.tasksStore.close(id);\r\n\t},\r\n\tmoveTask: function (sid, tindex, parent) {\r\n\t\treturn this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\r\n\t},\r\n\tsort: function(field, desc, parent, silent) {\r\n\t\tvar render = !silent;//4th argument to cancel redraw after sorting\r\n\r\n\t\tthis.$data.tasksStore.sort(field, desc, parent);\r\n\t\tthis.callEvent(\"onAfterSort\", [field, desc, parent]);\r\n\r\n\t\tif (render) {\r\n\t\t\tthis.render();\r\n\t\t}\r\n\t}\r\n};\r\n};\r\n\r\nmodule.exports = createTasksDatastoreFacade;\r\n\r\n\r\n","var utils = require(\"../../utils/utils\");\r\nvar createTasksFacade = require(\"./datastore_tasks\"),\r\n\tcreateLinksFacade = require(\"./datastore_links\"),\r\n\tDataStore = require(\"../datastore/datastore\"),\r\n\tTreeDataStore = require(\"../datastore/treedatastore\"),\r\n\tcreateDatastoreSelect = require(\"../datastore/select\");\r\nvar datastoreRender = require(\"../datastore/datastore_render\");\r\n\r\nfunction getDatastores(){\r\n\tvar storeNames = this.$services.getService(\"datastores\");\r\n\tvar res = [];\r\n\tfor(var i = 0; i < storeNames.length; i++){\r\n\t\tres.push(this.getDatastore(storeNames[i]));\r\n\t}\r\n\treturn res;\r\n}\r\n\r\nvar createDatastoreFacade = function(){\r\n\treturn {\r\n\tcreateDatastore: function(config){\r\n\r\n\t\tvar $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\r\n\r\n\t\tif (config) {\r\n\t\t\tvar self = this;\r\n\t\t\tconfig.openInitially = function(){ return self.config.open_tree_initially; };\r\n\t\t}\r\n\r\n\t\tvar store = new $StoreType(config);\r\n\t\tthis.mixin(store, createDatastoreSelect(store));\r\n\r\n\t\tif (config.name) {\r\n\t\t\tvar servicePrefix = \"datastore:\";\r\n\r\n\t\t\tthis.$services.dropService(servicePrefix + config.name);\r\n\t\t\tthis.$services.setService(servicePrefix + config.name, function() { return store; } );\r\n\r\n\t\t\tvar storeList = this.$services.getService(\"datastores\");\r\n\t\t\tif (!storeList) {\r\n\t\t\t\tstoreList = [];\r\n\t\t\t\tthis.$services.setService(\"datastores\", function() { return storeList; });\r\n\t\t\t\tstoreList.push(config.name);\r\n\t\t\t} else if (storeList.indexOf(config.name) < 0) {\r\n\t\t\t\tstoreList.push(config.name);\r\n\t\t\t}\r\n\r\n\t\t\tdatastoreRender.bindDataStore(config.name, this);\r\n\t\t}\r\n\r\n\t\treturn store;\r\n\t},\r\n\tgetDatastore: function(name){\r\n\t\treturn this.$services.getService(\"datastore:\" + name);\r\n\t},\r\n\r\n\trefreshData: function () {\r\n\t\tvar scrollState = this.getScrollState();\r\n\t\tthis.callEvent(\"onBeforeDataRender\", []);\r\n\r\n\t\tvar stores = getDatastores.call(this);\r\n\t\tfor(var i = 0; i < stores.length; i++){\r\n\t\t\tstores[i].refresh();\r\n\t\t}\r\n\r\n\t\tif(scrollState.x || scrollState.y){\r\n\t\t\tthis.scrollTo(scrollState.x, scrollState.y);\r\n\t\t}\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t},\r\n\r\n\tisChildOf: function(childId, parentId){\r\n\t\treturn this.$data.tasksStore.isChildOf(childId, parentId);\r\n\t},\r\n\r\n\trefreshTask: function (taskId, refresh_links) {\r\n\t\tvar task = this.getTask(taskId);\r\n\t\tif (task && this.isTaskVisible(taskId)) {\r\n\r\n\t\t\tthis.$data.tasksStore.refresh(taskId, !!this.getState().drag_id);// do quick refresh during drag and drop\r\n\r\n\t\t\tif (refresh_links !== undefined && !refresh_links)\r\n\t\t\t\treturn;\r\n\t\t\tfor (var i = 0; i < task.$source.length; i++) {\r\n\t\t\t\tthis.refreshLink(task.$source[i]);\r\n\t\t\t}\r\n\t\t\tfor (var i = 0; i < task.$target.length; i++) {\r\n\t\t\t\tthis.refreshLink(task.$target[i]);\r\n\t\t\t}\r\n\t\t}else if(this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId))){\r\n\t\t\tthis.refreshTask(this.getParent(taskId));\r\n\t\t}\r\n\r\n\t},\r\n\trefreshLink: function (linkId) {\r\n\t\tthis.$data.linksStore.refresh(linkId, !!this.getState().drag_id);// do quick refresh during drag and drop\r\n\t},\r\n\r\n\tsilent: function(code){\r\n\t\tvar gantt = this;\r\n\t\tgantt.$data.tasksStore.silent(function(){\r\n\t\t\tgantt.$data.linksStore.silent(function(){\r\n\t\t\t\tcode();\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tclearAll: function () {\r\n\t\tvar stores = getDatastores.call(this);\r\n\t\tfor(var i = 0; i < stores.length; i++){\r\n\t\t\tstores[i].clearAll();\r\n\t\t}\r\n\r\n\t\tthis._update_flags();\r\n\t\tthis.userdata = {};\r\n\t\tthis.callEvent(\"onClear\", []);\r\n\t\tthis.render();\r\n\t},\r\n\t_clear_data: function () {\r\n\t\tthis.$data.tasksStore.clearAll();\r\n\t\tthis.$data.linksStore.clearAll();\r\n\t\tthis._update_flags();\r\n\t\tthis.userdata = {};\r\n\t},\r\n\r\n\tselectTask: function(id){\r\n\t\tvar store = this.$data.tasksStore;\r\n\t\tif(!this.config.select_task)\r\n\t\t\treturn false;\r\n\t\tif (id){\r\n\r\n\t\t\tstore.select(id);\r\n\t\t}\r\n\t\treturn store.getSelectedId();\r\n\t},\r\n\tunselectTask: function(id){\r\n\t\tvar store = this.$data.tasksStore;\r\n\t\tstore.unselect(id);\r\n\t},\r\n\tisSelectedTask: function(id){\r\n\t\treturn this.$data.tasksStore.isSelected(id);\r\n\t},\r\n\tgetSelectedId: function() {\r\n\t\treturn this.$data.tasksStore.getSelectedId();\r\n\t}\r\n};\r\n};\r\n\r\nfunction createFacade(){\r\n\tvar res = utils.mixin({}, createDatastoreFacade());\r\n\tutils.mixin(res, createTasksFacade());\r\n\tutils.mixin(res, createLinksFacade());\r\n\treturn res;\r\n}\r\n\r\n\r\n\r\n\r\nmodule.exports = {create: createFacade};","var utils = require(\"../../utils/utils\");\r\nvar facadeFactory = require(\"./../facades/datastore\");\r\nvar calculateScaleRange = require(\"../gantt_data_range\");\r\nfunction initDataStores(gantt){\r\n\r\n\tvar facade = facadeFactory.create();\r\n\tutils.mixin(gantt, facade);\r\n\tvar tasksStore = gantt.createDatastore({\r\n\t\tname: \"task\",\r\n\t\ttype: \"treeDatastore\",\r\n\t\trootId: function() { return gantt.config.root_id; },\r\n\t\tinitItem: utils.bind(_init_task, gantt),\r\n\t\tgetConfig: function() { return gantt.config; }\r\n\t});\r\n\r\n\tvar linksStore = gantt.createDatastore({\r\n\t\tname: \"link\",\r\n\t\tinitItem: utils.bind(_init_link, gantt)\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onDestroy\", function(){\r\n\t\ttasksStore.destructor();\r\n\t\tlinksStore.destructor();\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onBeforeRefreshAll\", function(){\r\n\r\n\t\tvar order = tasksStore.getVisibleItems();\r\n\r\n\t\tfor(var i=0; i < order.length; i++){\r\n\t\t\tvar item = order[i];\r\n\t\t\titem.$index = i;\r\n\t\t\tgantt.resetProjectDates(item);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onFilterItem\", function(id, task){\r\n\t\tvar min = null, max = null;\r\n\t\tif (gantt.config.start_date && gantt.config.end_date) {\r\n\t\t\tif (gantt._isAllowedUnscheduledTask(task)) return true;\r\n\t\t\tmin = gantt.config.start_date.valueOf();\r\n\t\t\tmax = gantt.config.end_date.valueOf();\r\n\r\n\t\t\tif (+task.start_date > max || +task.end_date < +min)\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onIdChange\", function(oldId, newId){\r\n\t\tgantt._update_flags(oldId, newId);\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onAfterUpdate\", function(id){\r\n\t\tgantt._update_parents(id);\r\n\t\tif(gantt.getState(\"batchUpdate\").batch_update){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar task = tasksStore.getItem(id);\r\n\t\tfor (var i = 0; i < task.$source.length; i++) {\r\n\t\t\tlinksStore.refresh(task.$source[i]);\r\n\t\t}\r\n\t\tfor (var i = 0; i < task.$target.length; i++) {\r\n\t\t\tlinksStore.refresh(task.$target[i]);\r\n\t\t}\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onAfterItemMove\", function(sid, parent, tindex){\r\n\t\tvar source = gantt.getTask(sid);\r\n\r\n\t\tif(this.getNextSibling(sid) !== null){\r\n\t\t\tsource.$drop_target = this.getNextSibling(sid);\r\n\t\t} else if(this.getPrevSibling(sid) !== null){\r\n\t\t\tsource.$drop_target = \"next:\" + this.getPrevSibling(sid);\r\n\t\t}else{\r\n\t\t\tsource.$drop_target = \"next:null\";\r\n\t\t}\r\n\r\n\t});\r\n\r\n\ttasksStore.attachEvent(\"onStoreUpdated\", function(id, item, action){\r\n\t\tif(action == \"delete\"){\r\n\t\t\tgantt._update_flags(id, null);\r\n\t\t}\r\n\r\n\t\tvar state = gantt.$services.getService(\"state\");\r\n\t\tif(state.getState(\"batchUpdate\").batch_update){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(gantt.config.fit_tasks && action !== \"paint\"){\r\n\t\t\tvar oldState = gantt.getState();\r\n\t\t\tcalculateScaleRange(gantt);\r\n\t\t\tvar newState = gantt.getState();\r\n\r\n\t\t\t//this._init_tasks_range();\r\n\t\t\tif (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\r\n\t\t\t\tgantt.render();\r\n\r\n\t\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(action == \"add\" || action == \"move\" || action == \"delete\"){\r\n\t\t\tgantt.$layout.resize();\r\n\t\t}else if(!id){\r\n\t\t\tlinksStore.refresh();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tlinksStore.attachEvent(\"onAfterAdd\", function(id, link){\r\n\t\tsync_link(link);\r\n\t});\r\n\tlinksStore.attachEvent(\"onAfterUpdate\", function(id, link){\r\n\t\tsync_links();\r\n\t});\r\n\tlinksStore.attachEvent(\"onAfterDelete\", function(id, link){\r\n\t\tsync_link_delete(link);\r\n\t});\r\n\tlinksStore.attachEvent(\"onBeforeIdChange\", function(oldId, newId){\r\n\t\tsync_link_delete(gantt.mixin({id:oldId}, gantt.$data.linksStore.getItem(newId)));\r\n\t\tsync_link(gantt.$data.linksStore.getItem(newId));\r\n\t});\r\n\r\n\tfunction checkLinkedTaskVisibility(taskId){\r\n\t\tvar isVisible = gantt.isTaskVisible(taskId);\r\n\t\tif(!isVisible && gantt.isTaskExists(taskId)){\r\n\t\t\tvar parent = gantt.getParent(taskId);\r\n\t\t\tif(gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)){\r\n\t\t\t\tparent = gantt.getTask(parent);\r\n\t\t\t\tif(gantt.isSplitTask(parent)){\r\n\t\t\t\t\tisVisible = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn isVisible;\r\n\t}\r\n\r\n\tlinksStore.attachEvent(\"onFilterItem\", function(id, link){\r\n\t\tif (!gantt.config.show_links) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar sourceVisible = checkLinkedTaskVisibility(link.source);\r\n\t\tvar targetVisible = checkLinkedTaskVisibility(link.target);\r\n\r\n\t\tif (!(sourceVisible && targetVisible) ||\r\n\t\t\tgantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target)))\r\n\t\t\treturn false;\r\n\r\n\t\treturn gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\r\n\t});\r\n\r\n\r\n\t(function(){\r\n\t\t// delete all connected links after task is deleted\r\n\t\tvar treeHelper = require(\"../../utils/task_tree_helpers\");\r\n\t\tvar deletedLinks = {};\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", function(id, item){\r\n\t\t\tdeletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", function(id, item) {\r\n\t\t\tif(deletedLinks[id]){\r\n\t\t\t\tgantt.$data.linksStore.silent(function(){\r\n\t\t\t\t\tfor(var i in deletedLinks[id]){\r\n\t\t\t\t\t\tgantt.$data.linksStore.removeItem(i);\r\n\t\t\t\t\t\tsync_link_delete(deletedLinks[id][i]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdeletedLinks[id] = null;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t})();\r\n\r\n\tgantt.attachEvent(\"onAfterLinkDelete\", function(id, link) {\r\n\t\tgantt.refreshTask(link.source);\r\n\t\tgantt.refreshTask(link.target);\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onParse\", sync_links);\r\n\r\n\tmapEvents({\r\n\t\tsource: linksStore,\r\n\t\ttarget: gantt,\r\n\t\tevents:{\r\n\t\t\t\"onItemLoading\":\"onLinkLoading\",\r\n\t\t\t\"onBeforeAdd\":\"onBeforeLinkAdd\",\r\n\t\t\t\"onAfterAdd\":\"onAfterLinkAdd\",\r\n\t\t\t\"onBeforeUpdate\":\"onBeforeLinkUpdate\",\r\n\t\t\t\"onAfterUpdate\":\"onAfterLinkUpdate\",\r\n\t\t\t\"onBeforeDelete\":\"onBeforeLinkDelete\",\r\n\t\t\t\"onAfterDelete\":\"onAfterLinkDelete\",\r\n\t\t\t\"onIdChange\":\"onLinkIdChange\"\r\n\t\t}\r\n\t});\r\n\r\n\tmapEvents({\r\n\t\tsource: tasksStore,\r\n\t\ttarget: gantt,\r\n\t\tevents:{\r\n\t\t\t\"onItemLoading\":\"onTaskLoading\",\r\n\t\t\t\"onBeforeAdd\":\"onBeforeTaskAdd\",\r\n\t\t\t\"onAfterAdd\":\"onAfterTaskAdd\",\r\n\t\t\t\"onBeforeUpdate\":\"onBeforeTaskUpdate\",\r\n\t\t\t\"onAfterUpdate\":\"onAfterTaskUpdate\",\r\n\t\t\t\"onBeforeDelete\":\"onBeforeTaskDelete\",\r\n\t\t\t\"onAfterDelete\":\"onAfterTaskDelete\",\r\n\t\t\t\"onIdChange\":\"onTaskIdChange\",\r\n\t\t\t\"onBeforeItemMove\":\"onBeforeTaskMove\",\r\n\t\t\t\"onAfterItemMove\":\"onAfterTaskMove\",\r\n\t\t\t\"onFilterItem\":\"onBeforeTaskDisplay\",\r\n\t\t\t\"onItemOpen\":\"onTaskOpened\",\r\n\t\t\t\"onItemClose\":\"onTaskClosed\",\r\n\t\t\t\"onBeforeSelect\":\"onBeforeTaskSelected\",\r\n\t\t\t\"onAfterSelect\":\"onTaskSelected\",\r\n\t\t\t\"onAfterUnselect\":\"onTaskUnselected\"\r\n\t\t}\r\n\t});\r\n\r\n\tgantt.$data = {\r\n\t\ttasksStore: tasksStore,\r\n\t\tlinksStore: linksStore\r\n\t};\r\n\r\n\tfunction sync_link(link){\r\n\t\tif(gantt.isTaskExists(link.source)){\r\n\t\t\tvar sourceTask = gantt.getTask(link.source);\r\n\t\t\tsourceTask.$source = sourceTask.$source || [];\r\n\t\t\tsourceTask.$source.push(link.id);\r\n\t\t}\r\n\t\tif(gantt.isTaskExists(link.target)){\r\n\t\t\tvar targetTask = gantt.getTask(link.target);\r\n\t\t\ttargetTask.$target = targetTask.$target || [];\r\n\t\t\ttargetTask.$target.push(link.id);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction sync_link_delete(link){\r\n\t\tif(gantt.isTaskExists(link.source)){\r\n\t\t\tvar sourceTask = gantt.getTask(link.source);\r\n\t\t\tfor(var i = 0; i < sourceTask.$source.length; i++){\r\n\t\t\t\tif(sourceTask.$source[i] == link.id){\r\n\t\t\t\t\tsourceTask.$source.splice(i, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(gantt.isTaskExists(link.target)){\r\n\t\t\tvar targetTask = gantt.getTask(link.target);\r\n\t\t\tfor(var i = 0; i < targetTask.$target.length; i++){\r\n\t\t\t\tif(targetTask.$target[i] == link.id){\r\n\t\t\t\t\ttargetTask.$target.splice(i, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction sync_links() {\r\n\t\tvar task = null;\r\n\t\tvar tasks = gantt.$data.tasksStore.getItems();\r\n\r\n\t\tfor(var i = 0, len = tasks.length; i < len; i++){\r\n\t\t\ttask = tasks[i];\r\n\t\t\ttask.$source = [];\r\n\t\t\ttask.$target = [];\r\n\t\t}\r\n\r\n\t\tvar links = gantt.$data.linksStore.getItems();\r\n\t\tfor (var i = 0, len = links.length; i < len; i++) {\r\n\r\n\t\t\tvar link = links[i];\r\n\t\t\tsync_link(link);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction mapEvents(conf){\r\n\t\tvar mapFrom = conf.source;\r\n\t\tvar mapTo = conf.target;\r\n\t\tfor(var i in conf.events){\r\n\t\t\t(function(sourceEvent, targetEvent){\r\n\t\t\t\tmapFrom.attachEvent(sourceEvent, function(){\r\n\t\t\t\t\treturn mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\r\n\t\t\t\t}, targetEvent);\r\n\t\t\t})(i, conf.events[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _init_task(task) {\r\n\t\tif (!this.defined(task.id))\r\n\t\t\ttask.id = this.uid();\r\n\r\n\t\tif (task.start_date)\r\n\t\t\ttask.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\r\n\t\tif (task.end_date)\r\n\t\t\ttask.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\r\n\r\n\r\n\t\tvar duration = null;\r\n\t\tif (task.duration || task.duration === 0) {\r\n\t\t\ttask.duration = duration = task.duration * 1;\r\n\t\t}\r\n\r\n\t\tif (duration) {\r\n\t\t\tif (task.start_date && !task.end_date) {\r\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\r\n\t\t\t} else if (!task.start_date && task.end_date) {\r\n\t\t\t\ttask.start_date = this.calculateEndDate({\r\n\t\t\t\t\tstart_date: task.end_date,\r\n\t\t\t\t\tduration: -task.duration,\r\n\t\t\t\t\ttask: task\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttask.progress = Number(task.progress) || 0;\r\n\r\n\t\tif (this._isAllowedUnscheduledTask(task)) {\r\n\t\t\tthis._set_default_task_timing(task);\r\n\t\t}\r\n\t\tthis._init_task_timing(task);\r\n\t\tif (task.start_date && task.end_date)\r\n\t\t\tthis.correctTaskWorkTime(task);\r\n\r\n\t\ttask.$source = [];\r\n\t\ttask.$target = [];\r\n\r\n\t\tvar originalTask = this.$data.tasksStore.getItem(task.id);\r\n\t\tif (originalTask && !utils.defined(task.open)) {\r\n\t\t\t// if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\r\n\t\t\t// restore the `open` state we already have in the chart\r\n\t\t\ttask.$open = originalTask.$open;\r\n\t\t}\r\n\r\n\t\tif (task.parent === undefined) {\r\n\t\t\ttask.parent = this.config.root_id;\r\n\t\t}\r\n\t\treturn task;\r\n\t}\r\n\r\n\tfunction _init_link(link) {\r\n\t\tif (!this.defined(link.id))\r\n\t\t\tlink.id = this.uid();\r\n\t\treturn link;\r\n\t}\r\n}\r\n\r\n\r\nmodule.exports = initDataStores;\r\n","function createLayoutFacade(){\r\n\r\n\tfunction getTimeline(gantt){\r\n\t\treturn gantt.$ui.getView(\"timeline\");\r\n\t}\r\n\r\n\tfunction getGrid(gantt){\r\n\t\treturn gantt.$ui.getView(\"grid\");\r\n\t}\r\n\r\n\tfunction getVerticalScrollbar(gantt){\r\n\t\treturn gantt.$ui.getView(\"scrollVer\");\r\n\t}\r\n\r\n\tfunction getHorizontalScrollbar(gantt){\r\n\t\treturn gantt.$ui.getView(\"scrollHor\");\r\n\t}\r\n\r\n\tvar DEFAULT_VALUE = \"DEFAULT_VALUE\";\r\n\r\n\tfunction tryCall(getView, method, args, fallback){\r\n\t\tvar view = getView(this);\r\n\t\tif (!(view && view.isVisible())) {\r\n\t\t\tif(fallback){\r\n\t\t\t\treturn fallback();\r\n\t\t\t}else{\r\n\t\t\t\treturn DEFAULT_VALUE;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn view[method].apply(view, args);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tgetColumnIndex: function(name) {\r\n\t\t\tvar res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdateFromPos: function(x) {\r\n\t\t\tvar res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn this.getState().min_date;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tposFromDate: function(date) {\r\n\t\t\tvar res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetRowTop: function(index) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getRowTop\", [index],\r\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getRowTop\", [index]);}\r\n\t\t\t\t);\r\n\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetTaskTop: function(id) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemTop\", [id],\r\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemTop\", [id]);}\r\n\t\t\t);\r\n\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tgetTaskPosition: function(task, start_date, end_date) {\r\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\r\n\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\tvar top = this.getTaskTop(task.id);\r\n\t\t\t\tvar height = this.getTaskHeight();\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: top,\r\n\t\t\t\t\theight: height,\r\n\t\t\t\t\twidth: 0\r\n\t\t\t\t};\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetTaskHeight: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemHeight\", [],\r\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemHeight\", []);}\r\n\t\t\t);\r\n\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tcolumnIndexByDate: function(date) {\r\n\t\t\tvar res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn 0;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\troundTaskDates: function() {\r\n\t\t\ttryCall.call(this, getTimeline, \"roundTaskDates\", []);\r\n\t\t},\r\n\r\n\t\tgetScale: function() {\r\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getScale\", []);\r\n\t\t\tif(res === DEFAULT_VALUE){\r\n\t\t\t\treturn null;\r\n\t\t\t}else{\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetTaskNode: function(id) {\r\n\t\t\tvar timeline = getTimeline(this);\r\n\t\t\tif (!timeline || !timeline.isVisible()) {\r\n\t\t\t\treturn null;\r\n\t\t\t} else {\r\n\t\t\t\treturn timeline._taskRenderer.rendered[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tgetLinkNode: function(id) {\r\n\t\t\tvar timeline = getTimeline(this);\r\n\t\t\tif (!timeline.isVisible()) {\r\n\t\t\t\treturn null;\r\n\t\t\t} else {\r\n\t\t\t\treturn timeline._linkRenderer.rendered[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tscrollTo: function(left, top){\r\n\t\t\tvar vertical = getVerticalScrollbar(this);\r\n\t\t\tvar horizontal = getHorizontalScrollbar(this);\r\n\r\n\t\t\tvar oldH = {position: 0},\r\n\t\t\t\toldV = {position: 0};\r\n\r\n\t\t\tif(vertical){\r\n\t\t\t\toldV = vertical.getScrollState();\r\n\t\t\t}\r\n\t\t\tif(horizontal){\r\n\t\t\t\toldH = horizontal.getScrollState();\r\n\t\t\t}\r\n\r\n\t\t\tif (horizontal && left*1 == left){\r\n\t\t\t\thorizontal.scroll(left);\r\n\t\t\t}\r\n\t\t\tif(vertical && top*1 == top){\r\n\t\t\t\tvertical.scroll(top);\r\n\t\t\t}\r\n\r\n\t\t\tvar newV = {position: 0},\r\n\t\t\t\tnewH = {position: 0};\r\n\t\t\tif(vertical){\r\n\t\t\t\tnewV = vertical.getScrollState();\r\n\t\t\t}\r\n\t\t\tif(horizontal){\r\n\t\t\t\tnewH = horizontal.getScrollState();\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\r\n\t\t},\r\n\r\n\t\tshowDate: function(date){\r\n\t\t\tvar date_x = this.posFromDate(date);\r\n\t\t\tvar scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\r\n\t\t\tthis.scrollTo(scroll_to);\r\n\t\t},\r\n\t\tshowTask: function(id) {\r\n\t\t\tvar pos = this.getTaskPosition(this.getTask(id));\r\n\r\n\t\t\tvar left = Math.max(pos.left - this.config.task_scroll_offset, 0);\r\n\r\n\t\t\tvar dataHeight = this._scroll_state().y;\r\n\t\t\tvar top;\r\n\t\t\tif(!dataHeight){\r\n\t\t\t\ttop = pos.top;\r\n\t\t\t}else{\r\n\t\t\t\ttop = pos.top - (dataHeight - this.config.row_height)/2;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTo(left, top);\r\n\t\t},\r\n\t\t_scroll_state: function(){\r\n\t\t\tvar result = {\r\n\t\t\t\tx: false,\r\n\t\t\t\ty: false,\r\n\t\t\t\tx_pos: 0,\r\n\t\t\t\ty_pos: 0,\r\n\t\t\t\tscroll_size: this.config.scroll_size + 1,//1px for inner content\r\n\t\t\t\tx_inner: 0,\r\n\t\t\t\ty_inner: 0\r\n\t\t\t};\r\n\r\n\t\t\tvar scrollVer = getVerticalScrollbar(this),\r\n\t\t\t\tscrollHor = getHorizontalScrollbar(this);\r\n\t\t\tif(scrollHor){\r\n\t\t\t\tvar horState = scrollHor.getScrollState();\r\n\t\t\t\tif(horState.visible){\r\n\t\t\t\t\tresult.x = horState.size;\r\n\t\t\t\t\tresult.x_inner = horState.scrollSize;\r\n\t\t\t\t}\r\n\t\t\t\tresult.x_pos = horState.position || 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(scrollVer){\r\n\t\t\t\tvar verState = scrollVer.getScrollState();\r\n\t\t\t\tif(verState.visible){\r\n\t\t\t\t\tresult.y = verState.size;\r\n\r\n\t\t\t\t\tresult.y_inner = verState.scrollSize;\r\n\t\t\t\t}\r\n\t\t\t\tresult.y_pos = verState.position || 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\t\tgetScrollState: function(){\r\n\t\t\tvar state = this._scroll_state();\r\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 };\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\nmodule.exports = createLayoutFacade;","module.exports = function(gantt) {\r\n\tdelete gantt.addTaskLayer;\r\n\tdelete gantt.addLinkLayer;\r\n};","var domHelpers = require(\"../../utils/dom_helpers\");\r\n\r\nvar initializer = (function() {\r\n\treturn function (gantt) {\r\n\t\treturn {\r\n\r\n\t\t\tgetVerticalScrollbar: function(){\r\n\t\t\t\treturn gantt.$ui.getView(\"scrollVer\");\r\n\t\t\t},\r\n\t\t\tgetHorizontalScrollbar: function(){\r\n\t\t\t\treturn gantt.$ui.getView(\"scrollHor\");\r\n\t\t\t},\r\n\r\n\t\t\t_legacyGridResizerClass: function(layout){\r\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\r\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\r\n\t\t\t\t\tvar r = resizers[i];\r\n\t\t\t\t\tvar gridResizer = false;\r\n\r\n\t\t\t\t\tvar prev = r.$parent.getPrevSibling(r.$id);\r\n\t\t\t\t\tif(prev && prev.$config && prev.$config.id === \"grid\"){\r\n\t\t\t\t\t\tgridResizer= true;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar next = r.$parent.getNextSibling(r.$id);\r\n\t\t\t\t\t\tif(next && next.$config && next.$config.id === \"grid\"){\r\n\t\t\t\t\t\t\tgridResizer= true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(gridResizer){\r\n\t\t\t\t\t\tr.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: function(layout) {\r\n\t\t\t\tvar first = true;\r\n\r\n\t\t\t\tthis._legacyGridResizerClass(layout);\r\n\r\n\t\t\t\tlayout.attachEvent(\"onBeforeResize\", function() {\r\n\t\t\t\t\tvar mainTimeline = gantt.$ui.getView(\"timeline\");\r\n\t\t\t\t\tif (mainTimeline)\r\n\t\t\t\t\t\tmainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\r\n\r\n\t\t\t\t\tvar mainGrid = gantt.$ui.getView(\"grid\");\r\n\r\n\t\t\t\t\tif(!mainGrid)\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\tvar showGrid = gantt.config.show_grid;\r\n\t\t\t\t\tif (first) {\r\n\t\t\t\t\t\tvar colsWidth = mainGrid._getColsTotalWidth();\r\n\t\t\t\t\t\tif (colsWidth !== false){\r\n\t\t\t\t\t\t\tgantt.config.grid_width = colsWidth;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowGrid = showGrid && !!gantt.config.grid_width;\r\n\t\t\t\t\t\tgantt.config.show_grid = showGrid;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmainGrid.$config.hidden = mainGrid.$parent.$config.hidden = !showGrid;\r\n\r\n\t\t\t\t\tif (!mainGrid.$config.hidden) {\r\n\t\t\t\t\t\t/* restrict grid width due to min_width, max_width, min_grid_column_width */\r\n\t\t\t\t\t\tvar grid_limits = mainGrid._getGridWidthLimits();\r\n\t\t\t\t\t\tif (grid_limits[0] && gantt.config.grid_width < grid_limits[0])\r\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[0];\r\n\t\t\t\t\t\tif (grid_limits[1] && gantt.config.grid_width > grid_limits[1])\r\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[1];\r\n\t\t\t\t\t\tif (mainTimeline && gantt.config.show_chart){\r\n\r\n\t\t\t\t\t\t\tmainGrid.$config.width = gantt.config.grid_width - 1;\r\n\t\t\t\t\t\t\tif (!first) {\r\n\t\t\t\t\t\t\t\tif (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\r\n\t\t\t\t\t\t\t\t\t// timeline is being displayed after being not visible, reset grid with from full screen\r\n\t\t\t\t\t\t\t\t\tif (!mainGrid.$config.original_grid_width) {\r\n\t\t\t\t\t\t\t\t\t\tvar skinSettings = gantt.skins[gantt.skin];\r\n\t\t\t\t\t\t\t\t\t\tif(skinSettings && skinSettings.config && skinSettings.config.grid_width){\r\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = skinSettings.config.grid_width;\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tgantt.config.grid_width = mainGrid.$config.original_grid_width;\r\n\t\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tmainGrid.$parent._setContentSize(mainGrid.$config.width, null);\r\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, gantt.config.grid_width);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\r\n\t\t\t\t\t\t\t\tif (mainGrid.$parent.$config.group) {\r\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, mainGrid.$parent.$config.width);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\r\n\t\t\t\t\t\t\t\t// hiding timeline, remember grid with to restore it when timeline is displayed again\r\n\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = gantt.config.grid_width;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!first) {\r\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t});\r\n\t\t\t\tthis._initScrollStateEvents(layout);\r\n\t\t\t},\r\n\r\n\t\t\t_initScrollStateEvents: function(layout) {\r\n\t\t\t\tgantt._getVerticalScrollbar = this.getVerticalScrollbar;\r\n\t\t\t\tgantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\r\n\r\n\t\t\t\tvar vertical = this.getVerticalScrollbar();\r\n\t\t\t\tvar horizontal = this.getHorizontalScrollbar();\r\n\t\t\t\tif (vertical) {\r\n\t\t\t\t\tvertical.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\r\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\r\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (horizontal) {\r\n\t\t\t\t\thorizontal.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\r\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\r\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlayout.attachEvent(\"onResize\", function(){\r\n\t\t\t\t\tif (vertical && !gantt.$scroll_ver){\r\n\t\t\t\t\t\tgantt.$scroll_ver = vertical.$scroll_ver;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (horizontal && !gantt.$scroll_hor){\r\n\t\t\t\t\t\tgantt.$scroll_hor = horizontal.$scroll_hor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\t_findGridResizer: function(layout, grid){\r\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\r\n\r\n\t\t\t\tvar gridFirst = true;\r\n\t\t\t\tvar gridResizer;\r\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\r\n\t\t\t\t\tvar res = resizers[i];\r\n\t\t\t\t\tres._getSiblings();\r\n\t\t\t\t\tvar prev = res._behind;\r\n\t\t\t\t\tvar next = res._front;\r\n\t\t\t\t\tif(prev && prev.$content === grid || (prev.isChild && prev.isChild(grid))){\r\n\t\t\t\t\t\tgridResizer = res;\r\n\t\t\t\t\t\tgridFirst = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}else if(next && next.$content === grid || (next.isChild && next.isChild(grid))){\r\n\t\t\t\t\t\tgridResizer = res;\r\n\t\t\t\t\t\tgridFirst = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tresizer: gridResizer,\r\n\t\t\t\t\tgridFirst: gridFirst\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tonInitialized: function (layout) {\r\n\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\r\n\r\n\t\t\t\tvar resizeInfo = this._findGridResizer(layout, grid);\r\n\r\n\t\t\t\t// expose grid resize events\r\n\t\t\t\tif(resizeInfo.resizer){\r\n\t\t\t\t\tvar gridFirst = resizeInfo.gridFirst,\r\n\t\t\t\t\t\tnext = resizeInfo.resizer;\r\n\t\t\t\t\tvar initialWidth;\r\n\t\t\t\t\tnext.attachEvent(\"onResizeStart\", function(prevCellWidth, nextCellWidth){\r\n\r\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\r\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\r\n\t\t\t\t\t\tif(viewCell){\r\n\t\t\t\t\t\t\tvar limits = grid._getGridWidthLimits();\r\n\r\n\t\t\t\t\t\t\t// min grid width is defined by min widths of its columns, unless grid has horizontal scroll\r\n\t\t\t\t\t\t\tif(!grid.$config.scrollable)\r\n\t\t\t\t\t\t\t\tviewCell.$config.minWidth = limits[0];\r\n\r\n\t\t\t\t\t\t\tviewCell.$config.maxWidth = limits[1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinitialWidth = gridFirst ? prevCellWidth : nextCellWidth;\r\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tnext.attachEvent(\"onResize\", function(newBehindSize, newFrontSize){\r\n\t\t\t\t\t\tvar newSize = gridFirst ? newBehindSize : newFrontSize;\r\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tnext.attachEvent(\"onResizeEnd\", function(oldBackSize, oldFrontSize, newBackSize, newFrontSize){\r\n\r\n\t\t\t\t\t\tvar oldSize = gridFirst ? oldBackSize : oldFrontSize;\r\n\t\t\t\t\t\tvar newSize = gridFirst ? newBackSize : newFrontSize;\r\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\r\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\r\n\t\t\t\t\t\tif(viewCell){\r\n\t\t\t\t\t\t\tviewCell.$config.minWidth = undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\r\n\t\t\t\t\t\tif(res){\r\n\t\t\t\t\t\t\tgantt.config.grid_width = newSize;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn res;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\tonDestroyed: function (timeline) {\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t};\r\n})();\r\n\r\nmodule.exports = initializer;","var domHelpers = require(\"../../../utils/dom_helpers\");\r\n\r\nvar initLinksDND = function(timeline, gantt) {\r\n\tvar _link_landing,\r\n\t\t_link_target_task,\r\n\t\t_link_target_task_start,\r\n\t\t_link_source_task,\r\n\t\t_link_source_task_start,\r\n\t\tmarkerDefaultOffset = 10,\r\n\t\tscrollDefaultSize = 18;\r\n\r\n\r\n\tfunction getVisibleMilestoneWidth() {\r\n\t\tvar origWidth = timeline.getItemHeight();//m-s have square shape\r\n\t\treturn Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\r\n\t}\r\n\r\n\tfunction isMilestone(task) {\r\n\t\treturn gantt.getTaskType(task.type) == gantt.config.types.milestone;\r\n\t}\r\n\r\n\tfunction getDndState(){\r\n\t\treturn {\r\n\t\t\tlink_source_id : _link_source_task,\r\n\t\t\tlink_target_id : _link_target_task,\r\n\t\t\tlink_from_start : _link_source_task_start,\r\n\t\t\tlink_to_start : _link_target_task_start,\r\n\t\t\tlink_landing_area : _link_landing\r\n\t\t};\r\n\t}\r\n\r\n\tvar services = gantt.$services;\r\n\r\n\tvar state = services.getService(\"state\");\r\n\tvar DnD = services.getService(\"dnd\");\r\n\r\n\tstate.registerProvider(\"linksDnD\", getDndState);\r\n\r\n\tvar dnd = new DnD(timeline.$task_bars, { sensitivity : 0, updates_per_second : 60 }),\r\n\t\tstart_marker = \"task_start_date\",\r\n\t\tend_marker = \"task_end_date\",\r\n\t\tlink_edge_marker = \"gantt_link_point\",\r\n\t\tlink_landing_hover_area = \"gantt_link_control\";\r\n\r\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function(obj,e) {\r\n\t\tvar target = (e.target||e.srcElement);\r\n\t\tresetDndState();\r\n\t\tif(gantt.getState().drag_id)\r\n\t\t\treturn false;\r\n\r\n\t\tif(domHelpers.locateClassName(target, link_edge_marker)){\r\n\t\t\tif(domHelpers.locateClassName(target, start_marker))\r\n\t\t\t\t_link_source_task_start = true;\r\n\r\n\t\t\tvar sid = gantt.locate(e);\r\n\t\t\t_link_source_task = sid;\r\n\r\n\t\t\tvar t = gantt.getTask(sid);\r\n\t\t\tif(gantt.isReadonly(t)){\r\n\t\t\t\tresetDndState();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar shift = 0;\r\n\r\n\t\t\tthis._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t}, this));\r\n\r\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function(obj,e) {\r\n\t\tif(gantt.config.touch) {\r\n\t\t\tgantt.refreshData();\r\n\t\t}\r\n\t\tupdateMarkedHtml(dnd.config.marker);\r\n\t}, this));\r\n\r\n\tfunction getLinePos(task, to_start, shift, cfg, isStart){\r\n\t\tvar taskPos = getMilestonePosition(task, function(task){ return gantt.getTaskPosition(task);}, cfg);\r\n\r\n\t\tvar pos = {x: taskPos.x, y: taskPos.y};\r\n\t\tif(!to_start){\r\n\t\t\tpos.x = taskPos.xEnd;\r\n\t\t}\r\n\r\n\t\t//var pos = gantt._get_task_pos(task, !!to_start);\r\n\t\tpos.y += gantt.config.row_height/2;\r\n\r\n\t\tvar offset = isMilestone(task) && isStart ? 2 : 0;\r\n\r\n\t\tshift = shift || 0;\r\n\t\tif(cfg.rtl)\r\n\t\t\tshift = shift * -1;\r\n\r\n\t\tpos.x += (to_start ? -1 : 1)*shift - offset;\r\n\t\treturn pos;\r\n\t}\r\n\r\n\tfunction getMilestonePosition(task, getTaskPosition, cfg){\r\n\t\tvar pos = getTaskPosition(task);\r\n\r\n\t\tvar res = {\r\n\t\t\tx: pos.left,\r\n\t\t\ty: pos.top,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height\r\n\t\t};\r\n\r\n\t\tif(cfg.rtl){\r\n\t\t\tres.xEnd = res.x;\r\n\t\t\tres.x = res.xEnd + res.width;\r\n\t\t}else{\r\n\t\t\tres.xEnd = res.x + res.width;\r\n\t\t}\r\n\t\tres.yEnd = res.y + res.height;\r\n\r\n\t\tif(gantt.getTaskType(task.type) == gantt.config.types.milestone){\r\n\t\t\tvar milestoneWidth = getVisibleMilestoneWidth();\r\n\r\n\t\t\tres.x += (!cfg.rtl ? -1 : 1)*(milestoneWidth / 2);\r\n\t\t\tres.xEnd += (!cfg.rtl ? 1 : -1)*(milestoneWidth / 2);\r\n\r\n\t\t\t//pos.x -= milestoneWidth / 2;\r\n\t\t\t//pos.xEnd += milestoneWidth / 2;\r\n\t\t\tres.width = pos.xEnd - pos.x;\r\n\t\t}\r\n\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction getVieportSize(){\r\n\t\tvar root = gantt.$root;\r\n\t\treturn { right: root.offsetWidth, bottom: root.offsetHeight };\r\n\t}\r\n\tfunction getMarkerSize (marker){\r\n\t\tvar width = 0, height = 0;\r\n\t\tif(marker){\r\n\t\t\twidth = marker.offsetWidth || 0;\r\n\t\t\theight = marker.offsetHeight || 0;\r\n\t\t}\r\n\t\treturn { width: width, height: height };\r\n\t}\r\n\r\n\tfunction getPosition(e, marker){\r\n\t\tvar oldPos = dnd.getPosition(e);\r\n\r\n\t\tvar markerSize = getMarkerSize(marker);\r\n\t\tvar viewportSize = getVieportSize();\r\n\r\n\t\tvar offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\r\n\t\tvar offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\r\n\r\n\t\tvar scrollSize = gantt.config.scroll_size || scrollDefaultSize;\r\n\r\n\t\tvar position = {\r\n\t\t\ty: oldPos.y + offsetY,\r\n\t\t\tx: oldPos.x + offsetX,\r\n\t\t\tbottom: oldPos.y + markerSize.height + offsetY + scrollSize,\r\n\t\t\tright: oldPos.x + markerSize.width + offsetX + scrollSize\r\n\t\t};\r\n\r\n\t\tif(position.bottom > viewportSize.bottom){\r\n\t\t\tposition.y = viewportSize.bottom - markerSize.height - offsetY;\r\n\t\t}\r\n\r\n\t\tif(position.right > viewportSize.right){\r\n\t\t\tposition.x = viewportSize.right - markerSize.width - offsetX;\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n\r\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function(obj,e) {\r\n\t\tvar dd = dnd.config;\r\n\t\tvar pos = getPosition(e, dd.marker);\r\n\t\tadvanceMarker(dd.marker, pos);\r\n\t\tvar landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\r\n\r\n\t\tvar prevTarget = _link_target_task;\r\n\t\tvar prevLanding = _link_landing;\r\n\t\tvar prevToStart = _link_target_task_start;\r\n\r\n\t\tvar targ = gantt.locate(e),\r\n\t\t\tto_start = true;\r\n\t\t\r\n\t\t// can drag and drop link to another gantt on the page, such links are not supported\r\n\t\tvar sameGantt = domHelpers.isChildOf(e.target || e.srcElement, gantt.$root);\r\n\t\tif(!sameGantt){\r\n\t\t\tlanding = false;\r\n\t\t\ttarg = null;\r\n\t\t}\r\n\r\n\t\tif(landing){\r\n\t\t\t//refreshTask\r\n\t\t\tto_start = !domHelpers.locateClassName(e, end_marker);\r\n\t\t\tlanding = !!targ;\r\n\t\t}\r\n\r\n\t\t_link_target_task = targ;\r\n\t\t_link_landing = landing;\r\n\t\t_link_target_task_start = to_start;\r\n\r\n\t\tif(landing){\r\n\t\t\tvar t = gantt.getTask(targ);\r\n\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar node = domHelpers.locateClassName(e, link_landing_hover_area);\r\n\t\t\tvar shift = 0;\r\n\t\t\tif(node){\r\n\t\t\t\tshift = Math.floor(node.offsetWidth / 2);\r\n\t\t\t}\r\n\r\n\t\t\tthis._dir_end = getLinePos(t, !!_link_target_task_start,shift, config);\r\n\t\t}else{\r\n\t\t\tthis._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\r\n\t\t}\r\n\r\n\t\tvar targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\r\n\t\tif(targetChanged){\r\n\t\t\tif(prevTarget)\r\n\t\t\t\tgantt.refreshTask(prevTarget, false);\r\n\t\t\tif(targ)\r\n\t\t\t\tgantt.refreshTask(targ, false);\r\n\t\t}\r\n\r\n\t\tif(targetChanged){\r\n\t\t\tupdateMarkedHtml(dd.marker);\r\n\t\t}\r\n\r\n\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\r\n\r\n\t\treturn true;\r\n\t}, this));\r\n\r\n\r\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function() {\r\n\t\tvar drag = getDndState();\r\n\r\n\t\tif(drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id){\r\n\t\t\tvar type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\r\n\r\n\t\t\tvar link = {source : drag.link_source_id, target: drag.link_target_id, type:type};\r\n\t\t\tif(link.type && gantt.isLinkAllowed(link)) {\r\n\t\t\t\tif(gantt.callEvent(\"onLinkCreated\", [link])){\r\n\t\t\t\t\tgantt.addLink(link);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresetDndState();\r\n\r\n\t\tif(gantt.config.touch) {\r\n\t\t\tgantt.refreshData();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (drag.link_source_id)\r\n\t\t\t\tgantt.refreshTask(drag.link_source_id, false);\r\n\t\t\tif (drag.link_target_id)\r\n\t\t\t\tgantt.refreshTask(drag.link_target_id, false);\r\n\t\t}\r\n\t\tremoveDirectionLine();\r\n\t}, this));\r\n\r\n\tfunction updateMarkedHtml(marker){\r\n\t\tvar link = getDndState();\r\n\r\n\t\tvar css = [\"gantt_link_tooltip\"];\r\n\t\tif(link.link_source_id && link.link_target_id){\r\n\t\t\tif(gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)){\r\n\t\t\t\tcss.push(\"gantt_allowed_link\");\r\n\t\t\t}else{\r\n\t\t\t\tcss.push(\"gantt_invalid_link\");\r\n\t\t\t}\r\n\t\t}\r\n\r\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);\r\n\t\tif(className)\r\n\t\t\tcss.push(className);\r\n\r\n\t\tvar html = \"
\" +\r\n\t\t\tgantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) +\r\n\t\t\t\"
\";\r\n\t\tmarker.innerHTML = html;\r\n\t}\r\n\r\n\tfunction advanceMarker(marker, pos){\r\n\t\tmarker.style.left = pos.x + \"px\";\r\n\t\tmarker.style.top = pos.y + \"px\";\r\n\t}\r\n\r\n\tfunction resetDndState(){\r\n\t\t_link_source_task =\r\n\t\t\t_link_source_task_start =\r\n\t\t\t\t_link_target_task = null;\r\n\t\t_link_target_task_start = true;\r\n\t}\r\n\tfunction showDirectingLine(s_x, s_y, e_x, e_y){\r\n\t\tvar div = getDirectionLine();\r\n\r\n\t\tvar link = getDndState();\r\n\r\n\t\tvar css = [\"gantt_link_direction\"];\r\n\t\tif(gantt.templates.link_direction_class){\r\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));\r\n\t\t}\r\n\r\n\t\tvar dist =Math.sqrt( (Math.pow(e_x - s_x, 2)) + (Math.pow(e_y - s_y, 2)) );\r\n\t\tdist = Math.max(0, dist - 3);\r\n\t\tif(!dist)\r\n\t\t\treturn;\r\n\r\n\t\tdiv.className = css.join(\" \");\r\n\t\tvar tan = (e_y - s_y)/(e_x - s_x),\r\n\t\t\tangle = Math.atan(tan);\r\n\r\n\t\tif(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2){\r\n\t\t\tangle += Math.PI;\r\n\t\t}else if(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3){\r\n\t\t\tangle -= Math.PI;\r\n\t\t}\r\n\r\n\r\n\r\n\t\tvar sin = Math.sin(angle),\r\n\t\t\tcos = Math.cos(angle),\r\n\t\t\ttop = Math.round(s_y),\r\n\t\t\tleft = Math.round(s_x);\r\n\r\n\r\n\t\tvar style = [\r\n\t\t\t\"-webkit-transform: rotate(\"+angle+\"rad)\",\r\n\t\t\t\"-moz-transform: rotate(\"+angle+\"rad)\",\r\n\t\t\t\"-ms-transform: rotate(\"+angle+\"rad)\",\r\n\t\t\t\"-o-transform: rotate(\"+angle+\"rad)\",\r\n\t\t\t\"transform: rotate(\"+angle+\"rad)\",\r\n\t\t\t\"width:\" + Math.round(dist) + \"px\"\r\n\t\t];\r\n\r\n\t\tif(window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1){\r\n\t\t\t//ms-filter breaks styles in ie9, so add it only for 8th\r\n\t\t\tstyle.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\r\n\r\n\t\t\tvar shiftLeft = Math.abs(Math.round(s_x - e_x)),\r\n\t\t\t\tshiftTop = Math.abs(Math.round(e_y - s_y));\r\n\t\t\t//fix rotation axis\r\n\t\t\tswitch(coordinateCircleQuarter(s_x, e_x, s_y, e_y)){\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\ttop -= shiftTop;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tleft -= shiftLeft;\r\n\t\t\t\t\ttop -= shiftTop;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tleft -= shiftLeft;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tstyle.push(\"top:\" + top + \"px\");\r\n\t\tstyle.push(\"left:\" + left + \"px\");\r\n\r\n\t\tdiv.style.cssText = style.join(\";\");\r\n\t}\r\n\r\n\tfunction ieTransform(sin, cos){\r\n\t\treturn \"progid:DXImageTransform.Microsoft.Matrix(\"+\r\n\t\t\t\"M11 = \"+cos+\",\"+\r\n\t\t\t\"M12 = -\"+sin+\",\"+\r\n\t\t\t\"M21 = \"+sin+\",\"+\r\n\t\t\t\"M22 = \"+cos+\",\"+\r\n\t\t\t\"SizingMethod = 'auto expand'\"+\r\n\t\t\")\";\r\n\t}\r\n\tfunction coordinateCircleQuarter(sX, eX, sY, eY){\r\n\t\tif(eX >= sX){\r\n\t\t\tif(eY <= sY){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 4;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(eY <= sY){\r\n\t\t\t\treturn 2;\r\n\t\t\t}else{\r\n\t\t\t\treturn 3;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\tfunction getDirectionLine(){\r\n\t\tif(!dnd._direction || !dnd._direction.parentNode){\r\n\t\t\tdnd._direction = document.createElement(\"div\");\r\n\t\t\ttimeline.$task_links.appendChild(dnd._direction);\r\n\t\t}\r\n\t\treturn dnd._direction;\r\n\t}\r\n\tfunction removeDirectionLine(){\r\n\t\tif(dnd._direction){\r\n\t\t\tif (dnd._direction.parentNode)\t//the event line can be detached because of data refresh\r\n\t\t\t\tdnd._direction.parentNode.removeChild(dnd._direction);\r\n\r\n\t\t\tdnd._direction = null;\r\n\t\t}\r\n\t}\r\n\tgantt.attachEvent(\"onGanttRender\", gantt.bind(function() {\r\n\t\tif(dnd._direction){\r\n\t\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\r\n\t\t}\r\n\t}, this));\r\n};\r\n\r\nmodule.exports = {\r\n\tcreateLinkDND: function(){\r\n\t\treturn {\r\n\t\t\tinit: initLinksDND\r\n\t\t};\r\n\t}\r\n};","var domHelpers = require(\"../../../utils/dom_helpers\"),\r\n\tutils = require(\"../../../utils/utils\");\r\nvar timeout = require(\"../../../utils/timeout\");\r\n\r\nfunction createTaskDND(timeline, gantt){\r\n\tvar services = gantt.$services;\r\n\treturn {\r\n\t\tdrag: null,\r\n\t\tdragMultiple: {},\r\n\t\t_events: {\r\n\t\t\tbefore_start: {},\r\n\t\t\tbefore_finish: {},\r\n\t\t\tafter_finish: {}\r\n\t\t},\r\n\t\t_handlers: {},\r\n\t\tinit: function () {\r\n\t\t\tthis._domEvents = gantt._createDomEventScope();\r\n\t\t\tthis.clear_drag_state();\r\n\t\t\tvar drag = gantt.config.drag_mode;\r\n\t\t\tthis.set_actions();\r\n\r\n\t\t\tvar stateService = services.getService(\"state\");\r\n\t\t\tstateService.registerProvider(\"tasksDnd\", utils.bind(function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdrag_id : this.drag ? this.drag.id : undefined,\r\n\t\t\t\t\tdrag_mode : this.drag ? this.drag.mode : undefined,\r\n\t\t\t\t\tdrag_from_start : this.drag ? this.drag.left : undefined\r\n\t\t\t\t};\r\n\t\t\t}, this));\r\n\r\n\t\t\tvar evs = {\r\n\t\t\t\t\"before_start\": \"onBeforeTaskDrag\",\r\n\t\t\t\t\"before_finish\": \"onBeforeTaskChanged\",\r\n\t\t\t\t\"after_finish\": \"onAfterTaskDrag\"\r\n\t\t\t};\r\n\t\t\t//for now, all drag operations will trigger the same events\r\n\t\t\tfor (var stage in this._events) {\r\n\t\t\t\tfor (var mode in drag) {\r\n\t\t\t\t\tthis._events[stage][mode] = evs[stage];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._handlers[drag.move] = this._move;\r\n\t\t\tthis._handlers[drag.resize] = this._resize;\r\n\t\t\tthis._handlers[drag.progress] = this._resize_progress;\r\n\t\t},\r\n\t\tset_actions: function () {\r\n\t\t\tvar data = timeline.$task_data;\r\n\t\t\tthis._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\r\n\t\t\t\tthis.on_mouse_move(e || event);\r\n\t\t\t}, this));\r\n\t\t\tthis._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\r\n\t\t\t\tthis.on_mouse_down(e || event);\r\n\t\t\t}, this));\r\n\t\t\tthis._domEvents.attach(gantt.$root, \"mouseup\", gantt.bind(function (e) {\r\n\t\t\t\tthis.on_mouse_up(e || event);\r\n\t\t\t}, this));\r\n\t\t},\r\n\r\n\t\tclear_drag_state: function () {\r\n\t\t\tthis.drag = {\r\n\t\t\t\tid: null,\r\n\t\t\t\tmode: null,\r\n\t\t\t\tpos: null,\r\n\t\t\t\tstart_x: null,\r\n\t\t\t\tstart_y: null,\r\n\t\t\t\tobj: null,\r\n\t\t\t\tleft: null\r\n\t\t\t};\r\n\t\t\tthis.dragMultiple = {};\r\n\t\t},\r\n\t\t_resize: function (ev, shift, drag) {\r\n\t\t\tvar cfg = timeline.$getConfig();\r\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\r\n\t\t\tif (drag.left) {\r\n\t\t\t\tev.start_date = gantt.dateFromPos(coords_x.start + shift);\r\n\t\t\t\tif (!ev.start_date) {\r\n\t\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tev.end_date = gantt.dateFromPos(coords_x.end + shift);\r\n\t\t\t\tif (!ev.end_date) {\r\n\t\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.end_date - ev.start_date < cfg.min_duration) {\r\n\t\t\t\tif (drag.left)\r\n\t\t\t\t\tev.start_date = gantt.calculateEndDate({start_date: ev.end_date, duration: -1, task: ev});\r\n\t\t\t\telse\r\n\t\t\t\t\tev.end_date = gantt.calculateEndDate({start_date: ev.start_date, duration: 1, task: ev});\r\n\t\t\t}\r\n\t\t\tgantt._init_task_timing(ev);\r\n\t\t},\r\n\t\t_resize_progress: function (ev, shift, drag) {\r\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\r\n\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar diffValue = !config.rtl ? (drag.pos.x - coords_x.start) : (coords_x.start - drag.pos.x);\r\n\r\n\t\t\tvar diff = Math.max(0, diffValue);\r\n\t\t\tev.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\r\n\t\t},\r\n\r\n\t\t_find_max_shift: function(dragItems, shift){\r\n\t\t\tvar correctShift;\r\n\t\t\tfor(var i in dragItems){\r\n\t\t\t\tvar drag = dragItems[i];\r\n\t\t\t\tvar ev = gantt.getTask(drag.id);\r\n\r\n\t\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\r\n\t\t\t\tvar minX = gantt.posFromDate( new Date(gantt.getState().min_date)),\r\n\t\t\t\t\tmaxX = gantt.posFromDate( new Date(gantt.getState().max_date));\r\n\r\n\t\t\t\tif(coords_x.end + shift > maxX){\r\n\t\t\t\t\tvar maxShift = maxX - coords_x.end;\r\n\t\t\t\t\tif(maxShift < correctShift || correctShift === undefined){\r\n\t\t\t\t\t\tcorrectShift = maxShift;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(coords_x.start + shift < minX){\r\n\t\t\t\t\tvar minShift = minX - coords_x.start;\r\n\t\t\t\t\tif(minShift < correctShift || correctShift === undefined){\r\n\t\t\t\t\t\tcorrectShift = minShift;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn correctShift;\r\n\t\t},\r\n\t\t_move: function (ev, shift, drag) {\r\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\r\n\t\t\tvar new_start = gantt.dateFromPos(coords_x.start + shift),\r\n\t\t\t\tnew_end = gantt.dateFromPos(coords_x.end + shift);\r\n\t\t\tif (!new_start) {\r\n\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\r\n\t\t\t\tev.end_date = gantt.dateFromPos(gantt.posFromDate(ev.start_date) + (coords_x.end - coords_x.start));\r\n\t\t\t} else if (!new_end) {\r\n\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\r\n\t\t\t\tev.start_date = gantt.dateFromPos(gantt.posFromDate(ev.end_date) - (coords_x.end - coords_x.start));\r\n\t\t\t} else {\r\n\t\t\t\tev.start_date = new_start;\r\n\t\t\t\tev.end_date = new_end;\r\n\t\t\t}\r\n\t\t},\r\n\t\t_drag_task_coords: function (t, drag) {\r\n\t\t\tvar start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\r\n\t\t\tvar end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\r\n\t\t\treturn {\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end\r\n\t\t\t};\r\n\t\t},\r\n\t\t_mouse_position_change: function (oldPos, newPos) {\r\n\t\t\tvar dx = oldPos.x - newPos.x,\r\n\t\t\t\tdy = oldPos.y - newPos.y;\r\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\r\n\t\t},\r\n\t\t_is_number: function (n) {\r\n\t\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t\t},\r\n\r\n\t\ton_mouse_move: function (e) {\r\n\t\t\tif (this.drag.start_drag) {\r\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\r\n\r\n\t\t\t\tvar sX = this.drag.start_drag.start_x,\r\n\t\t\t\t\tsY = this.drag.start_drag.start_y;\r\n\r\n\t\t\t\tif ((Date.now() - this.drag.timestamp > 50) ||\r\n\t\t\t\t\t(this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\r\n\t\t\t\t\t\tx: sX,\r\n\t\t\t\t\t\ty: sY\r\n\t\t\t\t\t}, pos) > 20)) {\r\n\t\t\t\t\tthis._start_dnd(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar drag = this.drag;\r\n\r\n\t\t\tif (drag.mode) {\r\n\t\t\t\tif (!timeout(this, 40))//limit update frequency\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tthis._update_on_move(e);\r\n\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_update_item_on_move: function(shift, id, mode, drag, e){\r\n\t\t\tvar ev = gantt.getTask(id);\r\n\t\t\tvar original = gantt.mixin({}, ev);\r\n\t\t\tvar copy = gantt.mixin({}, ev);\r\n\t\t\tthis._handlers[mode].apply(this, [copy, shift, drag]);\r\n\t\t\tgantt.mixin(ev, copy, true);\r\n\t\t\t//gantt._update_parents(drag.id, true);\r\n\t\t\tgantt.callEvent(\"onTaskDrag\", [ev.id, mode, copy, original, e]);\r\n\t\t\tgantt.mixin(ev, copy, true);\r\n\t\t\tgantt.refreshTask(id);\r\n\t\t},\r\n\r\n\t\t_update_on_move: function (e) {\r\n\t\t\tvar drag = this.drag;\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tif (drag.mode) {\r\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\r\n\t\t\t\tif (drag.pos && drag.pos.x == pos.x)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tdrag.pos = pos;\r\n\r\n\t\t\t\tvar curr_date = gantt.dateFromPos(pos.x);\r\n\t\t\t\tif (!curr_date || isNaN(curr_date.getTime()))\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tvar shift = pos.x - drag.start_x;\r\n\t\t\t\tvar ev = gantt.getTask(drag.id);\r\n\r\n\t\t\t\tif (this._handlers[drag.mode]) {\r\n\r\n\t\t\t\t\tif(gantt.isSummaryTask(ev) && gantt.config.drag_project && drag.mode == config.drag_mode.move){\r\n\r\n\t\t\t\t\t\tvar initialDrag = {};\r\n\t\t\t\t\t\tinitialDrag[drag.id] = utils.copy(drag);\r\n\t\t\t\t\t\tvar maxShift = this._find_max_shift(utils.mixin(initialDrag, this.dragMultiple), shift);\r\n\t\t\t\t\t\tif(maxShift !== undefined){\r\n\t\t\t\t\t\t\tshift = maxShift;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\r\n\t\t\t\t\t\tfor(var i in this.dragMultiple){\r\n\t\t\t\t\t\t\tvar childDrag = this.dragMultiple[i];\r\n\t\t\t\t\t\t\tthis._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgantt._update_parents(drag.id);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ton_mouse_down: function (e, src) {\r\n\t\t\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\r\n\t\t\t// let's ignore right mouse button then\r\n\t\t\tif (e.button == 2 && e.button !== undefined)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar id = gantt.locate(e);\r\n\t\t\tvar task = null;\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\ttask = gantt.getTask(id);\r\n\t\t\t}\r\n\r\n\t\t\tif (gantt.isReadonly(task) || this.drag.mode) return;\r\n\r\n\t\t\tthis.clear_drag_state();\r\n\r\n\t\t\tsrc = src || (e.target || e.srcElement);\r\n\r\n\t\t\tvar className = domHelpers.getClassName(src);\r\n\t\t\tvar drag = this._get_drag_mode(className, src);\r\n\r\n\t\t\tif (!className || !drag) {\r\n\t\t\t\tif (src.parentNode)\r\n\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\r\n\t\t\t\telse\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!drag) {\r\n\t\t\t\tif (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\r\n\t\t\t\t\tif (src.parentNode)\r\n\t\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\r\n\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\r\n\t\t\t\t\tid = gantt.locate(src);\r\n\t\t\t\t\ttask = gantt.copy(gantt.getTask(id) || {});\r\n\r\n\t\t\t\t\tif (gantt.isReadonly(task)) {\r\n\t\t\t\t\t\tthis.clear_drag_state();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\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\r\n\t\t\t\t\t\tthis.clear_drag_state();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdrag.id = id;\r\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\r\n\r\n\t\t\t\t\tdrag.start_x = pos.x;\r\n\t\t\t\t\tdrag.start_y = pos.y;\r\n\t\t\t\t\tdrag.obj = task;\r\n\t\t\t\t\tthis.drag.start_drag = drag;\r\n\t\t\t\t\tthis.drag.timestamp = Date.now();\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tthis.clear_drag_state();\r\n\t\t\t}\r\n\t\t},\r\n\t\t_fix_dnd_scale_time: function (task, drag) {\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar unit = gantt.getScale().unit,\r\n\t\t\t\tstep = gantt.getScale().step;\r\n\t\t\tif (!config.round_dnd_dates) {\r\n\t\t\t\tunit = 'minute';\r\n\t\t\t\tstep = config.time_step;\r\n\t\t\t}\r\n\r\n\t\t\tfunction fixStart(task) {\r\n\t\t\t\tif (!gantt.config.correct_work_time)\r\n\t\t\t\t\treturn;\r\n\t\t\t\tvar config = timeline.$getConfig();\r\n\t\t\t\tif (!gantt.isWorkTime(task.start_date, undefined, task))\r\n\t\t\t\t\ttask.start_date = gantt.calculateEndDate({\r\n\t\t\t\t\t\tstart_date: task.start_date,\r\n\t\t\t\t\t\tduration: -1,\r\n\t\t\t\t\t\tunit: config.duration_unit,\r\n\t\t\t\t\t\ttask: task\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction fixEnd(task) {\r\n\t\t\t\tif (!gantt.config.correct_work_time)\r\n\t\t\t\t\treturn;\r\n\t\t\t\tvar config = timeline.$getConfig();\r\n\t\t\t\tif (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task))\r\n\t\t\t\t\ttask.end_date = gantt.calculateEndDate({\r\n\t\t\t\t\t\tstart_date: task.end_date,\r\n\t\t\t\t\t\tduration: 1,\r\n\t\t\t\t\t\tunit: config.duration_unit,\r\n\t\t\t\t\t\ttask: task\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (drag.mode == config.drag_mode.resize) {\r\n\t\t\t\tif (drag.left) {\r\n\t\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\r\n\t\t\t\t\tfixStart(task);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttask.end_date = gantt.roundDate({date: task.end_date, unit: unit, step: step});\r\n\t\t\t\t\tfixEnd(task);\r\n\t\t\t\t}\r\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\r\n\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\r\n\t\t\t\tfixStart(task);\r\n\t\t\t\ttask.end_date = gantt.calculateEndDate(task);\r\n\t\t\t}\r\n\t\t},\r\n\t\t_fix_working_times: function (task, drag) {\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar drag = drag || {mode: config.drag_mode.move};\r\n\r\n\t\t\tif (drag.mode == config.drag_mode.resize) {\r\n\t\t\t\tif (drag.left) {\r\n\t\t\t\t\ttask.start_date = gantt.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttask.end_date = gantt.getClosestWorkTime({date: task.end_date, dir: 'past', task: task});\r\n\t\t\t\t}\r\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\r\n\t\t\t\tgantt.correctTaskWorkTime(task);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_finalize_mouse_up: function(taskId, config, drag, e){\r\n\t\t\tvar ev = gantt.getTask(taskId);\r\n\r\n\t\t\tif (config.work_time && config.correct_work_time) {\r\n\t\t\t\tthis._fix_working_times(ev, drag);\r\n\t\t\t}\r\n\r\n\t\t\tthis._fix_dnd_scale_time(ev, drag);\r\n\r\n\t\t\tif (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\r\n\t\t\t\t//drag.obj._dhx_changed = false;\r\n\t\t\t\tthis.clear_drag_state();\r\n\t\t\t\tif(taskId == drag.id){\r\n\t\t\t\t\tdrag.obj._dhx_changed = false;\r\n\t\t\t\t\tgantt.mixin(ev, drag.obj, true);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tgantt.refreshTask(ev.id);\r\n\t\t\t} else {\r\n\t\t\t\tvar drag_id = taskId;\r\n\r\n\t\t\t\tgantt._init_task_timing(ev);\r\n\r\n\t\t\t\tthis.clear_drag_state();\r\n\t\t\t\tgantt.updateTask(ev.id);\r\n\t\t\t\tthis._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\ton_mouse_up: function (e) {\r\n\r\n\t\t\tvar drag = this.drag;\r\n\t\t\tif (drag.mode && drag.id) {\r\n\t\t\t\tvar config = timeline.$getConfig();\r\n\t\t\t\t//drop\r\n\t\t\t\tvar ev = gantt.getTask(drag.id);\r\n\t\t\t\tvar dragMultiple = this.dragMultiple;\r\n\r\n\t\t\t\tif(gantt.isSummaryTask(ev) && config.drag_project && drag.mode == config.drag_mode.move){\r\n\t\t\t\t\tfor(var i in dragMultiple){\r\n\t\t\t\t\t\tthis._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis._finalize_mouse_up(drag.id, config, drag, e);\r\n\t\t\t}\r\n\t\t\tthis.clear_drag_state();\r\n\t\t},\r\n\t\t_get_drag_mode: function (className, el) {\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tvar modes = config.drag_mode;\r\n\t\t\tvar classes = (className || \"\").split(\" \");\r\n\t\t\tvar classname = classes[0];\r\n\t\t\tvar drag = {mode: null, left: null};\r\n\t\t\tswitch (classname) {\r\n\t\t\t\tcase \"gantt_task_line\":\r\n\t\t\t\tcase \"gantt_task_content\":\r\n\t\t\t\t\tdrag.mode = modes.move;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"gantt_task_drag\":\r\n\t\t\t\t\tdrag.mode = modes.resize;\r\n\r\n\t\t\t\t\tvar dragProperty = el.getAttribute(\"data-bind-property\");\r\n\r\n\t\t\t\t\tif (dragProperty == \"start_date\") {\r\n\t\t\t\t\t\tdrag.left = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdrag.left = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"gantt_task_progress_drag\":\r\n\t\t\t\t\tdrag.mode = modes.progress;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"gantt_link_control\":\r\n\t\t\t\tcase \"gantt_link_point\":\r\n\t\t\t\t\tdrag.mode = modes.ignore;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tdrag = null;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn drag;\r\n\r\n\t\t},\r\n\r\n\t\t_start_dnd: function (e) {\r\n\t\t\tvar drag = this.drag = this.drag.start_drag;\r\n\t\t\tdelete drag.start_drag;\r\n\r\n\t\t\tvar cfg = timeline.$getConfig();\r\n\t\t\tvar id = drag.id;\r\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])) {\r\n\t\t\t\tthis.clear_drag_state();\r\n\t\t\t} else {\r\n\t\t\t\tdelete drag.start_drag;\r\n\r\n\t\t\t\tvar task = gantt.getTask(id);\r\n\t\t\t\tif(gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move){\r\n\t\t\t\t\tgantt.eachTask(function(child){\r\n\t\t\t\t\t\tthis.dragMultiple[child.id] = gantt.mixin({\r\n\t\t\t\t\t\t\tid: child.id,\r\n\t\t\t\t\t\t\tobj: gantt.copy(child)\r\n\t\t\t\t\t\t}, this.drag);\r\n\t\t\t\t\t}, task.id, this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgantt.callEvent(\"onTaskDragStart\", []);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\t_fireEvent: function (stage, mode, params) {\r\n\t\t\tgantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\r\n\r\n\t\t\tvar trigger = this._events[stage][mode];\r\n\r\n\t\t\tgantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\r\n\t\t\tgantt.assert(params, \"Invalid event arguments\");\r\n\r\n\r\n\t\t\tif (!gantt.checkEvent(trigger))\r\n\t\t\t\treturn true;\r\n\r\n\t\t\treturn gantt.callEvent(trigger, params);\r\n\t\t},\r\n\r\n\t\tround_task_dates: function(task){\r\n\t\t\tvar drag_state = this.drag;\r\n\t\t\tvar config = timeline.$getConfig();\r\n\t\t\tif (!drag_state) {\r\n\t\t\t\tdrag_state = {mode: config.drag_mode.move};\r\n\t\t\t}\r\n\t\t\tthis._fix_dnd_scale_time(task, drag_state);\r\n\t\t},\r\n\t\tdestructor: function(){\r\n\t\t\tthis._domEvents.detachAll();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction initTaskDND() {\r\n\tvar _tasks_dnd;\r\n\treturn {\r\n\t\textend: function(timeline){\r\n\t\t\ttimeline.roundTaskDates = function (task) {\r\n\t\t\t\t_tasks_dnd.round_task_dates(task);\r\n\t\t\t};\r\n\r\n\t\t},\r\n\t\tinit: function(timeline, gantt){\r\n\t\t\t_tasks_dnd = createTaskDND(timeline, gantt);\r\n\t\t\t// TODO: entry point for touch handlers, move touch to timeline\r\n\t\t\ttimeline._tasks_dnd = _tasks_dnd;\r\n\t\t\treturn _tasks_dnd.init(gantt);\r\n\t\t},\r\n\t\tdestructor: function () {\r\n\t\t\tif (_tasks_dnd) {\r\n\t\t\t\t_tasks_dnd.destructor();\r\n\t\t\t\t_tasks_dnd = null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = {\r\n\tcreateTaskDND: initTaskDND\r\n};\r\n","var utils = require(\"../../../utils/utils\"),\r\n\ttaskDnD = require(\"./tasks_dnd\"),\r\n\tlinkDnD = require(\"./links_dnd\"),\r\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\r\n\r\nvar initializer = (function(){\r\n\treturn function(gantt){\r\n\t\tvar services = gantt.$services;\r\n\t\treturn {\r\n\t\t\tonCreated: function (timeline) {\r\n\t\t\t\tvar config = timeline.$config;\r\n\t\t\t\tconfig.bind = utils.defined(config.bind) ? config.bind : \"task\";\r\n\t\t\t\tconfig.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\r\n\r\n\t\t\t\ttimeline._linksDnD = linkDnD.createLinkDND();\r\n\t\t\t\ttimeline._tasksDnD = taskDnD.createTaskDND();\r\n\t\t\t\ttimeline._tasksDnD.extend(timeline);\r\n\r\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\r\n\t\t\t},\r\n\t\t\tonInitialized: function (timeline) {\r\n\t\t\t\tthis._attachDomEvents(gantt);\r\n\r\n\t\t\t\tthis._attachStateProvider(gantt, timeline);\r\n\r\n\t\t\t\ttimeline._tasksDnD.init(timeline, gantt);\r\n\t\t\t\ttimeline._linksDnD.init(timeline, gantt);\r\n\r\n\t\t\t\tif(timeline.$config.id == \"timeline\"){\r\n\t\t\t\t\tthis.extendDom(timeline);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\tonDestroyed: function (timeline) {\r\n\t\t\t\tthis._clearDomEvents(gantt);\r\n\t\t\t\tthis._clearStateProvider(gantt);\r\n\t\t\t\tif (timeline._tasksDnD) {\r\n\t\t\t\t\ttimeline._tasksDnD.destructor();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\textendDom: function(timeline){\r\n\t\t\t\tgantt.$task = timeline.$task;\r\n\t\t\t\tgantt.$task_scale = timeline.$task_scale;\r\n\t\t\t\tgantt.$task_data = timeline.$task_data;\r\n\t\t\t\tgantt.$task_bg = timeline.$task_bg;\r\n\t\t\t\tgantt.$task_links = timeline.$task_links;\r\n\t\t\t\tgantt.$task_bars = timeline.$task_bars;\r\n\t\t\t},\r\n\r\n\t\t\t_clearDomEvents: function(){\r\n\t\t\t\tthis._mouseDelegates.destructor();\r\n\t\t\t\tthis._mouseDelegates = null;\r\n\t\t\t},\r\n\r\n\t\t\t_attachDomEvents: function(gantt){\r\n\t\t\t\tfunction _delete_link_handler(id, e) {\r\n\t\t\t\t\tif (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\r\n\r\n\t\t\t\t\t\tvar link = this.getLink(id);\r\n\t\t\t\t\t\tif (this.isReadonly(link)) return;\r\n\r\n\t\t\t\t\t\tvar title = \"\";\r\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;\r\n\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\tgantt._dhtmlx_confirm(question, title, function () {\r\n\t\t\t\t\t\t\t\tgantt.deleteLink(id);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}, (this.config.touch ? 300 : 1));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\r\n\t\t\t\t\tvar id = this.locate(e, this.config.link_attribute);\r\n\t\t\t\t\tif (id) {\r\n\t\t\t\t\t\tthis.callEvent(\"onLinkClick\", [id, e]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, gantt), this.$task);\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\r\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\r\n\t\t\t\t\tvar date = gantt.dateFromPos(pos.x);\r\n\t\t\t\t\tvar coll = Math.floor(gantt.columnIndexByDate(date));\r\n\r\n\t\t\t\t\tvar coll_date = gantt.getScale().trace_x[coll];\r\n\r\n\t\t\t\t\tgantt.callEvent(\"onScaleClick\", [e, coll_date]);\r\n\t\t\t\t}, gantt), this.$task);\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\r\n\t\t\t\t\tvar id = this.locate(e, gantt.config.link_attribute);\r\n\t\t\t\t\t_delete_link_handler.call(this, id, e);\r\n\t\t\t\t}, gantt), this.$task);\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\r\n\t\t\t\t\tvar id = this.locate(e),\r\n\t\t\t\t\t\ttask = this.getTask(id);\r\n\r\n\t\t\t\t\tvar link = null;\r\n\t\t\t\t\tif (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\r\n\t\t\t\t\t\tif (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\r\n\t\t\t\t\t\t\tlink = task.$target[0];\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlink = task.$source[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (link)\r\n\t\t\t\t\t\t_delete_link_handler.call(this, link, e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}, gantt), this.$task);\r\n\t\t\t},\r\n\r\n\t\t\t_attachStateProvider: function(gantt, timeline){\r\n\t\t\t\tvar self = timeline;\r\n\t\t\t\tvar state = services.getService(\"state\");\r\n\t\t\t\tstate.registerProvider(\"tasksTimeline\", function(){\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tscale_unit: self._tasks ? self._tasks.unit : undefined,\r\n\t\t\t\t\t\tscale_step: self._tasks ? self._tasks.step : undefined\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\t_clearStateProvider: function(){\r\n\t\t\t\tvar state = services.getService(\"state\");\r\n\t\t\t\tstate.unregisterProvider(\"tasksTimeline\");\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n})();\r\n\r\nmodule.exports = initializer;","var domHelpers = require(\"../../../../utils/dom_helpers\");\r\n\r\n/**\r\n * methods for highlighting current drag and drop position\r\n */\r\n\r\nfunction highlightPosition(target, root, grid){\r\n\tvar markerPos = getTaskMarkerPosition(target, grid);\r\n\t// setting position of row\r\n\troot.marker.style.left = markerPos.x + 9 + \"px\";\r\n\troot.marker.style.top = markerPos.y + \"px\";\r\n\tvar markerLine = root.markerLine;\r\n\tif(!markerLine){\r\n\t\tmarkerLine = document.createElement(\"div\");\r\n\t\tmarkerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\r\n\t\tmarkerLine.innerHTML = \"
\";\r\n\t\tmarkerLine.style.pointerEvents = \"none\";\r\n\t\tdocument.body.appendChild(markerLine);\r\n\t\troot.markerLine = markerLine;\r\n\t}\r\n\tif(target.child){\r\n\t\thighlightFolder(target, markerLine, grid);\r\n\t}else{\r\n\t\thighlightRow(target, markerLine, grid);\r\n\t}\r\n}\r\n\r\nfunction removeLineHighlight(root){\r\n\tif(root.markerLine && root.markerLine.parentNode){\r\n\t\troot.markerLine.parentNode.removeChild(root.markerLine);\r\n\t}\r\n\troot.markerLine = null;\r\n}\r\n\r\nfunction highlightRow(target, markerLine, grid){\r\n\tvar linePos = getLineMarkerPosition(target, grid);\r\n\r\n\tmarkerLine.innerHTML = \"
\";\r\n\tmarkerLine.style.left = linePos.x + \"px\";\r\n\tmarkerLine.style.height = \"4px\";\r\n\r\n\tmarkerLine.style.top = (linePos.y - 2) + \"px\";\r\n\tmarkerLine.style.width = linePos.width + \"px\";\r\n\r\n\treturn markerLine;\r\n}\r\nfunction highlightFolder(target, markerFolder, grid){\r\n\tvar id = target.targetParent;\r\n\tvar pos = gridToPageCoordinates({x: 0, y: grid.getItemTop(id)}, grid);\r\n\r\n\tmarkerFolder.innerHTML = \"
\";\r\n\tmarkerFolder.style.width = grid.$grid_data.offsetWidth + \"px\";\r\n\tmarkerFolder.style.top = pos.y + \"px\";\r\n\tmarkerFolder.style.left = pos.x + \"px\";\r\n\tmarkerFolder.style.height = grid.getItemHeight(id) + \"px\";\r\n\treturn markerFolder;\r\n}\r\n\r\nfunction getLineMarkerPosition(target, grid){\r\n\tvar store = grid.$config.rowStore;\r\n\tvar pos = {x:0, y:0};\r\n\tvar indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\r\n\tvar indent = 15;\r\n\tvar level = 0;\r\n\tif(indentNode){\r\n\t\tindent = indentNode.offsetWidth;\r\n\t}\r\n\tvar iconWidth = 40;\r\n\tif(target.targetId !== store.$getRootId()){\r\n\t\tvar itemTop = grid.getItemTop(target.targetId);\r\n\t\tvar itemHeight = grid.getItemHeight(target.targetId);\r\n\t\tlevel = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\r\n\r\n\t\tif(target.prevSibling){\r\n\t\t\tpos.y = itemTop;\r\n\t\t}else if(target.nextSibling){\r\n\t\t\tvar childCount = 0;\r\n\t\t\tstore.eachItem(function(child){\r\n\t\t\t\tif(store.getIndexById(child.id) !== -1)\r\n\t\t\t\t\tchildCount++;\r\n\t\t\t}, target.targetId);\r\n\r\n\t\t\tpos.y = itemTop + itemHeight + childCount*itemHeight;\r\n\t\t}else {\r\n\t\t\tpos.y = itemTop + itemHeight;\r\n\t\t\tlevel += 1;\r\n\t\t}\r\n\t}\r\n\tpos.x = iconWidth + level * indent;\r\n\tpos.width = Math.max(grid.$grid_data.offsetWidth - pos.x, 0);\r\n\treturn gridToPageCoordinates(pos, grid);\r\n}\r\n\r\nfunction gridToPageCoordinates(pos, grid){\r\n\tvar gridPos = domHelpers.getNodePosition(grid.$grid_data);\r\n\tpos.x += gridPos.x - grid.$grid.scrollLeft;\r\n\tpos.y += gridPos.y - grid.$grid_data.scrollTop;\r\n\treturn pos;\r\n}\r\n\r\nfunction getTaskMarkerPosition(e, grid) {\r\n\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\r\n\tvar ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data);\r\n\tvar store = grid.$config.rowStore;\r\n\t// row offset\r\n\tvar x = pos.x;\r\n\tvar y = ePos.y - 10;\r\n\r\n\tvar config = grid.$getConfig();\r\n\t// prevent moving row out of grid_data container\r\n\tif (y < pos.y) y = pos.y;\r\n\tvar gridHeight = store.countVisible() * config.row_height;\r\n\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\r\n\r\n\tpos.x = x;\r\n\tpos.y = y;\r\n\treturn pos;\r\n}\r\n\r\nmodule.exports = {\r\n\tremoveLineHighlight: removeLineHighlight,\r\n\thighlightPosition: highlightPosition\r\n};\r\n","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = true\r\n */\r\n\r\nvar dropTarget = require(\"./drop_target\");\r\n\r\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store){\r\n\tvar result;\r\n\r\n\tif(targetTaskId !== store.$getRootId()){\r\n\t\tif(relTargetPos < 0.25){\r\n\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\r\n\t\t}else if(relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)){\r\n\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\r\n\t\t}else {\r\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\r\n\t\t}\r\n\t}else{\r\n\t\tvar rootId = store.$getRootId();\r\n\t\tif(store.hasChild(rootId) && eventTop >= 0){\r\n\t\t\tresult = dropTarget.lastChildTarget(dndTaskId, rootId, store);\r\n\t\t}else{\r\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, rootId, store);\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = false\r\n */\r\n\r\nvar dropTarget = require(\"./drop_target\");\r\n\r\nfunction getLast(store){\r\n\tvar current = store.getNext();\r\n\twhile(store.exists(current)){\r\n\r\n\t\tvar next = store.getNext(current);\r\n\t\tif(!store.exists(next)){\r\n\t\t\treturn current;\r\n\t\t}else{\r\n\t\t\tcurrent = next;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up){\r\n\tvar prev = taskId;\r\n\twhile(store.exists(prev)){\r\n\t\tvar targetLevel = store.calculateItemLevel(store.getItem(prev));\r\n\t\tif((targetLevel === allowedLevel || targetLevel === (allowedLevel - 1)) && store.getBranchIndex(prev) > -1){\r\n\t\t\tbreak;\r\n\t\t}else {\r\n\t\t\tprev = up ? store.getPrev(prev) : store.getNext(prev);\r\n\t\t}\r\n\t}\r\n\r\n\tif(store.exists(prev)){\r\n\t\tif(store.calculateItemLevel(store.getItem(prev)) === allowedLevel){\r\n\t\t\treturn up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\r\n\t\t}else{\r\n\t\t\treturn dropTarget.firstChildTarget(dndTaskId, prev, store);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store){\r\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\r\n}\r\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store){\r\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\r\n}\r\n\r\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level){\r\n\tvar result;\r\n\tif(targetTaskId !== store.$getRootId()) {\r\n\t\tif (relTargetPos < 0.5) {\r\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\r\n\t\t\t\tif(store.getPrevSibling(targetTaskId)){\r\n\t\t\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, store.getPrevSibling(targetTaskId), store);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = findTargetAbove(dndTaskId, targetTaskId, level, store);\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tresult = findTargetBelow(dndTaskId, targetTaskId, level, store);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\r\n\t\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\r\n\t\t\t} else {\r\n\t\t\t\tresult = findTargetBelow(dndTaskId, targetTaskId, level, store);\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tresult = findTargetAbove(dndTaskId, targetTaskId, level, store);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tvar rootId = store.$getRootId();\r\n\t\tvar rootLevel = store.getChildren(rootId);\r\n\t\tresult = dropTarget.createDropTargetObject();\r\n\t\tif(rootLevel.length && eventTop >= 0){\r\n\t\t\tresult = findTargetAbove(dndTaskId, getLast(store), level, store);\r\n\t\t}else{\r\n\t\t\tresult = findTargetBelow(dndTaskId, rootId, level, store);\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n","var domHelpers = require(\"../../../utils/dom_helpers\");\r\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\r\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\r\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\r\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\r\n\r\nfunction _init_dnd(gantt, grid) {\r\n\tvar DnD = gantt.$services.getService(\"dnd\");\r\n\r\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\r\n\t\treturn;\r\n\t}\r\n\r\n\tfunction locate(e){\r\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\r\n\t}\r\n\r\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\r\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\r\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\r\n\r\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\r\n\t\tvar el = locate(e);\r\n\t\tif (!el) return false;\r\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\r\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\r\n\t\tvar datastore = grid.$config.rowStore;\r\n\t\tvar task = datastore.getItem(id);\r\n\r\n\t\tif (gantt.isReadonly(task))\r\n\t\t\treturn false;\r\n\r\n\t\tdnd.config.initial_open_state = task.$open;\r\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t}, gantt));\r\n\r\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\r\n\t\tvar el = locate(e);\r\n\r\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\r\n\t\tvar element = dnd.config.marker.firstChild;\r\n\t\tif(element){\r\n\t\t\tdnd.config.marker.style.opacity = 0.4;\r\n\t\t\telement.style.position = \"static\";\r\n\t\t\telement.style.pointerEvents = \"none\";\r\n\t\t}\r\n\r\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\r\n\r\n\t\tvar store = grid.$config.rowStore;\r\n\r\n\t\tvar task = store.getItem(dnd.config.id);\r\n\t\tdnd.config.level = store.calculateItemLevel(task);\r\n\t\tdnd.config.drop_target = dropTarget.createDropTargetObject({\r\n\t\t\ttargetParent: store.getParent(task.id),\r\n\t\t\ttargetIndex: store.getBranchIndex(task.id),\r\n\t\t\ttargetId: task.id,\r\n\t\t\tnextSibling: true\r\n\t\t});\r\n\r\n\t\ttask.$open = false;\r\n\t\ttask.$transparent = true;\r\n\t\tthis.refreshData();\r\n\t}, gantt));\r\n\r\n\tfunction getTargetTaskId(e){\r\n\t\tvar y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\r\n\t\tvar store = grid.$config.rowStore;\r\n\r\n\t\ty = y || 0;\r\n\r\n\t\tif(y < 0){\r\n\t\t\treturn store.$getRootId();\r\n\t\t}\r\n\r\n\t\tvar index = Math.floor(y / grid.getItemHeight());\r\n\r\n\t\tif (index > store.countVisible() - 1)\r\n\t\t\treturn store.$getRootId();\r\n\r\n\t\treturn store.getIdByIndex(index);\r\n\t}\r\n\r\n\tfunction getDropPosition(e){\r\n\t\tvar targetTaskId = getTargetTaskId(e);\r\n\t\tvar relTargetPos = null;\r\n\t\tvar store = grid.$config.rowStore;\r\n\t\tvar config = grid.$getConfig();\r\n\t\tvar lockLevel = !config.order_branch_free;\r\n\r\n\t\tvar eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\r\n\r\n\t\tif(targetTaskId !== store.$getRootId()) {\r\n\t\t\tvar rowTop = grid.getItemTop(targetTaskId);\r\n\t\t\tvar rowHeight = grid.getItemHeight();\r\n\t\t\trelTargetPos = (eventTop - rowTop) / rowHeight;\r\n\t\t}\r\n\r\n\t\tvar result;\r\n\t\tif(!lockLevel){\r\n\t\t\tresult = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\r\n\t\t}else{\r\n\t\t\tresult = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\r\n\t\tvar target = getDropPosition(e);\r\n\r\n\t\tif(!target ||\r\n\t\t\tgantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false){\r\n\t\t\t\ttarget = dropTarget.createDropTargetObject(dnd.config.drop_target);\r\n\t\t\t}\r\n\r\n\t\thiglighter.highlightPosition(target, dnd.config, grid);\r\n\t\tdnd.config.drop_target = target;\r\n\r\n\t\tthis.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\r\n\t\treturn true;\r\n\t}, gantt));\r\n\r\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\r\n\t\tvar store = grid.$config.rowStore;\r\n\t\tvar task = store.getItem(dnd.config.id);\r\n\r\n\t\thiglighter.removeLineHighlight(dnd.config);\r\n\r\n\t\ttask.$transparent = false;\r\n\t\ttask.$open = dnd.config.initial_open_state;\r\n\t\tvar target = dnd.config.drop_target;\r\n\r\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\r\n\t\t\ttask.$drop_target = null;\r\n\t\t} else {\r\n\t\t\tstore.move(dnd.config.id, target.targetIndex, target.targetParent);\r\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\r\n\t\t}\r\n\t\tstore.refresh(task.id);\r\n\t}, gantt));\r\n}\r\n\r\nmodule.exports = {\r\n\tinit: _init_dnd\r\n};","var domHelpers = require(\"../../../utils/dom_helpers\");\r\n\r\nfunction _init_dnd(gantt, grid) {\r\n\tvar DnD = gantt.$services.getService(\"dnd\");\r\n\r\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\r\n\t\treturn;\r\n\t}\r\n\r\n\tfunction locate(e){\r\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\r\n\t}\r\n\r\n\tfunction getStore(){\r\n\t\treturn gantt.getDatastore(grid.$config.bind);\r\n\t}\r\n\r\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\r\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\r\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\r\n\r\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\r\n\t\tvar el = locate(e);\r\n\t\tif (!el) return false;\r\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\r\n\r\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\r\n\r\n\t\tvar datastore = getStore();\r\n\r\n\t\tvar task = datastore.getItem(id);\r\n\r\n\t\tif (gantt.isReadonly(task))\r\n\t\t\treturn false;\r\n\r\n\t\tdnd.config.initial_open_state = task.$open;\r\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t}, gantt));\r\n\r\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\r\n\t\tvar el = locate(e);\r\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\r\n\t\tvar element = dnd.config.marker.firstChild;\r\n\t\tif(element){\r\n\t\t\telement.style.position = \"static\";\r\n\t\t}\r\n\r\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\r\n\r\n\t\tvar store = getStore();\r\n\r\n\t\tvar task = store.getItem(dnd.config.id);\r\n\t\tdnd.config.index = store.getBranchIndex(dnd.config.id);\r\n\t\tdnd.config.parent = task.parent;\r\n\t\ttask.$open = false;\r\n\t\ttask.$transparent = true;\r\n\t\tthis.refreshData();\r\n\t}, gantt));\r\n\r\n\tdnd.lastTaskOfLevel = function (level) {\r\n\t\tvar last_item = null;\r\n\t\tvar store = getStore();\r\n\t\tvar tasks = store.getItems();\r\n\t\tfor (var i = 0, len = tasks.length; i < len; i++) {\r\n\t\t\tif (tasks[i].$level == level) {\r\n\t\t\t\tlast_item = tasks[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn last_item ? last_item.id : null;\r\n\t};\r\n\tdnd._getGridPos = gantt.bind(function (e) {\r\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\r\n\t\tvar store = getStore();\r\n\t\t// row offset\r\n\t\tvar x = pos.x;\r\n\t\tvar y = e.pos.y - 10;\r\n\r\n\t\tvar config = grid.$getConfig();\r\n\t\t// prevent moving row out of grid_data container\r\n\t\tif (y < pos.y) y = pos.y;\r\n\t\tvar gridHeight = store.countVisible() * config.row_height;\r\n\t\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\r\n\r\n\t\tpos.x = x;\r\n\t\tpos.y = y;\r\n\t\treturn pos;\r\n\t}, gantt);\r\n\tdnd._getTargetY = gantt.bind(function (e) {\r\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\r\n\r\n\t\tvar y = e.pageY - pos.y + (grid.$state.scrollTop || 0);\r\n\t\tif (y < 0)\r\n\t\t\ty = 0;\r\n\t\treturn y;\r\n\t}, gantt);\r\n\tdnd._getTaskByY = gantt.bind(function (y, dropIndex) {\r\n\r\n\t\tvar config = grid.$getConfig(),\r\n\t\t\tstore = getStore();\r\n\r\n\t\ty = y || 0;\r\n\r\n\t\tvar index = Math.floor(y / config.row_height);\r\n\t\tindex = dropIndex < index ? index - 1 : index;\r\n\r\n\t\tif (index > store.countVisible() - 1)\r\n\t\t\treturn null;\r\n\r\n\t\treturn store.getIdByIndex(index);\r\n\t}, gantt);\r\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\r\n\t\tvar dd = dnd.config;\r\n\t\tvar pos = dnd._getGridPos(e);\r\n\r\n\t\tvar config = grid.$getConfig(),\r\n\t\t\tstore = getStore();\r\n\r\n\t\t// setting position of row\r\n\t\tdd.marker.style.left = pos.x + 10 + \"px\";\r\n\t\tdd.marker.style.top = pos.y + \"px\";\r\n\r\n\t\t// highlight row when mouseover\r\n\t\tvar item = store.getItem(dnd.config.id);\r\n\t\tvar targetY = dnd._getTargetY(e);\r\n\t\tvar el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\r\n\r\n\t\tif (!store.exists(el)) {\r\n\t\t\tel = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\r\n\t\t\tif (el == dnd.config.id) {\r\n\t\t\t\tel = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction allowedLevel(next, item) {\r\n\t\t\treturn (!(store.isChildOf(over.id, item.id)) && (next.$level == item.$level || config.order_branch_free));\r\n\t\t}\r\n\r\n\t\tif (store.exists(el)) {\r\n\t\t\tvar over = store.getItem(el);\r\n\r\n\t\t\tif (store.getIndexById(over.id) * config.row_height + config.row_height / 2 < targetY) {\r\n\t\t\t\t//hovering over bottom part of item, check can be drop to bottom\r\n\t\t\t\tvar index = store.getIndexById(over.id);\r\n\t\t\t\tvar nextId = store.getNext(over.id);//adds +1 when hovering over placeholder\r\n\t\t\t\tvar next = store.getItem(nextId);\r\n\t\t\t\tif (next) {\r\n\t\t\t\t\tif (next.id != item.id) {\r\n\t\t\t\t\t\tover = next; //there is a valid target\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (config.order_branch_free) {\r\n\t\t\t\t\t\t\tif (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1))\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tstore.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//we at end of the list, check and drop at the end of list\r\n\t\t\t\t\tnextId = store.getIdByIndex(index);\r\n\t\t\t\t\tnext = store.getItem(nextId);\r\n\r\n\t\t\t\t\tif (allowedLevel(next, item) && next.id != item.id) {\r\n\t\t\t\t\t\tstore.move(item.id, -1, store.getParent(next.id));\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (config.order_branch_free) {\r\n\t\t\t\tif (over.id != item.id && allowedLevel(over, item)) {\r\n\t\t\t\t\tif (!store.hasChild(over.id)) {\r\n\t\t\t\t\t\tover.$open = true;\r\n\t\t\t\t\t\tstore.move(item.id, -1, over.id);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (store.getIndexById(over.id) || config.row_height / 3 < targetY) return;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//if item is on different level, check the one before it\r\n\t\t\tvar index = store.getIndexById(over.id),\r\n\t\t\t\tprevId = store.getIdByIndex(index - 1);\r\n\r\n\t\t\tvar prev = store.getItem(prevId);\r\n\r\n\t\t\tvar shift = 1;\r\n\t\t\twhile ((!prev || prev.id == over.id) && index - shift >= 0) {\r\n\r\n\t\t\t\tprevId = store.getIdByIndex(index - shift);\r\n\t\t\t\tprev = store.getItem(prevId);\r\n\t\t\t\tshift++;\r\n\t\t\t}\r\n\r\n\t\t\tif (item.id == over.id) return;\r\n\t\t\t//replacing item under cursor\r\n\t\t\tif (allowedLevel(over, item) && item.id != over.id) {\r\n\t\t\t\tstore.move(item.id, 0, 0, over.id);\r\n\r\n\t\t\t} else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\r\n\t\t\t\tstore.move(item.id, 0, over.id);\r\n\r\n\t\t\t} else if (prev && (allowedLevel(prev, item)) && (item.id != prev.id)) {\r\n\t\t\t\tstore.move(item.id, -1, store.getParent(prev.id));\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}, gantt));\r\n\r\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\r\n\t\tvar store = getStore();\r\n\t\tvar task = store.getItem(dnd.config.id);\r\n\t\ttask.$transparent = false;\r\n\t\ttask.$open = dnd.config.initial_open_state;\r\n\r\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\r\n\t\t\tstore.move(dnd.config.id, dnd.config.index, dnd.config.parent);\r\n\t\t\ttask.$drop_target = null;\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\t}, gantt));\r\n}\r\n\r\nmodule.exports = {\r\n\tinit: _init_dnd\r\n};","var utils = require(\"../../../utils/utils\");\r\nvar rowDnd = require(\"./tasks_grid_dnd\");\r\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\r\n\r\nvar initializer = (function(){\r\n\treturn function(gantt){\r\n\t\treturn {\r\n\t\t\tonCreated: function (grid) {\r\n\t\t\t\tgrid.$config = utils.mixin(grid.$config, {\r\n\t\t\t\t\tbind: \"task\"\r\n\t\t\t\t});\r\n\t\t\t\tif(grid.$config.id == \"grid\") {\r\n\t\t\t\t\tthis.extendGantt(grid);\r\n\t\t\t\t\tgantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\r\n\t\t\t\t\tgantt.ext.inlineEditors.init();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\r\n\t\t\t},\r\n\t\t\tonInitialized: function (grid) {\r\n\t\t\t\tvar config = grid.$getConfig();\r\n\t\t\t\tif (config.order_branch) {\r\n\t\t\t\t\tif(config.order_branch == \"marker\"){\r\n\t\t\t\t\t\trowDndMarker.init(grid.$gantt, grid);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trowDnd.init(grid.$gantt, grid);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.initEvents(grid, gantt);\r\n\t\t\t\tif(grid.$config.id == \"grid\") {\r\n\t\t\t\t\tthis.extendDom(grid);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonDestroyed: function (grid) {\r\n\t\t\t\tif(grid.$config.id == \"grid\") {\r\n\t\t\t\t\tgantt.ext.inlineEditors.destructor();\r\n\t\t\t\t}\r\n\t\t\t\tthis.clearEvents(grid, gantt);\r\n\t\t\t},\r\n\r\n\t\t\tinitEvents: function (grid, gantt) {\r\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\r\n\t\t\t\t\tvar config = grid.$getConfig();\r\n\t\t\t\t\tif (id !== null) {\r\n\t\t\t\t\t\tvar task = this.getTask(id);\r\n\t\t\t\t\t\tif (config.scroll_on_click && !gantt._is_icon_open_click(e))\r\n\t\t\t\t\t\t\tthis.showDate(task.start_date);\r\n\t\t\t\t\t\tgantt.callEvent(\"onTaskRowClick\", [id, trg]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, gantt), grid.$grid);\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\r\n\t\t\t\t\tvar column = trg.getAttribute(\"data-column-id\");\r\n\r\n\t\t\t\t\tif (!gantt.callEvent(\"onGridHeaderClick\", [column, e]))\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\tvar config = grid.$getConfig();\r\n\r\n\t\t\t\t\tif (column == \"add\") {\r\n\t\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\r\n\t\t\t\t\t\tmouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (config.sort) {\r\n\t\t\t\t\t\tvar sorting_method = column,\r\n\t\t\t\t\t\t\tconf;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < config.columns.length; i++) {\r\n\t\t\t\t\t\t\tif (config.columns[i].name == column) {\r\n\t\t\t\t\t\t\t\tconf = config.columns[i];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (conf && conf.sort !== undefined && conf.sort !== true) {\r\n\t\t\t\t\t\t\tsorting_method = conf.sort;\r\n\r\n\t\t\t\t\t\t\tif (!sorting_method) { // column sort property 'false', no sorting\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar sort = (this._sort && this._sort.direction && this._sort.name == column) ? this._sort.direction : \"desc\";\r\n\t\t\t\t\t\t// invert sort direction\r\n\t\t\t\t\t\tsort = (sort == \"desc\") ? \"asc\" : \"desc\";\r\n\t\t\t\t\t\tthis._sort = {\r\n\t\t\t\t\t\t\tname: column,\r\n\t\t\t\t\t\t\tdirection: sort\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.sort(sorting_method, sort == \"desc\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}, gantt), grid.$grid);\r\n\r\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\r\n\t\t\t\t\tvar config = grid.$getConfig();\r\n\t\t\t\t\tif (config.readonly) return;\r\n\r\n\t\t\t\t\tvar item = {};\r\n\t\t\t\t\tthis.createTask(item, id ? id : gantt.config.root_id);\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}, gantt), grid.$grid);\r\n\r\n\t\t\t},\r\n\r\n\t\t\tclearEvents: function(grid, gantt){\r\n\t\t\t\tthis._mouseDelegates.destructor();\r\n\t\t\t\tthis._mouseDelegates = null;\r\n\t\t\t},\r\n\r\n\t\t\textendDom: function(grid){\r\n\t\t\t\tgantt.$grid = grid.$grid;\r\n\t\t\t\tgantt.$grid_scale = grid.$grid_scale;\r\n\t\t\t\tgantt.$grid_data = grid.$grid_data;\r\n\t\t\t},\r\n\t\t\textendGantt: function(grid){\r\n\t\t\t\tgantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\r\n\r\n\t\t\t\tgrid.attachEvent(\"onColumnResizeStart\", function(){\r\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeStart\", arguments);\r\n\t\t\t\t});\r\n\t\t\t\tgrid.attachEvent(\"onColumnResize\", function(){\r\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResize\", arguments);\r\n\t\t\t\t});\r\n\t\t\t\tgrid.attachEvent(\"onColumnResizeEnd\", function(){\r\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeEnd\", arguments);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tgrid.attachEvent(\"onColumnResizeComplete\", function(columns, totalWidth){\r\n\t\t\t\t\tgantt.config.grid_width = totalWidth;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n})();\r\n\r\nmodule.exports = initializer;","var helpers = require(\"../../../utils/helpers\");\r\nvar getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\r\n\r\nfunction createGridLineRender(gantt){\r\n\r\n\tfunction _render_grid_item(item, view, viewport) {\r\n\t\tvar columns = view.getGridColumns();\r\n\t\tvar config = view.$getConfig(),\r\n\t\t\ttemplates = view.$getTemplates();\r\n\r\n\t\tvar store = view.$config.rowStore;\r\n\r\n\t\tif(config.rtl){\r\n\t\t\tcolumns = columns.reverse();\r\n\t\t}\r\n\r\n\t\tvar cells = [];\r\n\t\tvar has_child;\r\n\t\tfor (var i = 0; i < columns.length; i++) {\r\n\t\t\tvar last = i == columns.length - 1;\r\n\t\t\tvar col = columns[i];\r\n\t\t\tvar cell;\r\n\r\n\t\t\tvar value;\r\n\t\t\tvar textValue;\r\n\t\t\tif (col.name == \"add\") {\r\n\t\t\t\tvar aria = gantt._waiAria.gridAddButtonAttrString(col);\r\n\r\n\t\t\t\tvalue = \"
\";\r\n\t\t\t\ttextValue = \"\";\r\n\t\t\t} else {\r\n\t\t\t\tif (col.template)\r\n\t\t\t\t\tvalue = col.template(item);\r\n\t\t\t\telse\r\n\t\t\t\t\tvalue = item[col.name];\r\n\r\n\t\t\t\tif (helpers.isDate(value))\r\n\t\t\t\t\tvalue = templates.date_grid(value, item);\r\n\r\n\t\t\t\tif (value === null || value === undefined) {\r\n\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttextValue = value;\r\n\t\t\t\tvalue = \"
\" + value + \"
\";\r\n\t\t\t}\r\n\t\t\tvar css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\r\n\r\n\t\t\tvar tree = [];\r\n\t\t\tif (col.tree) {\r\n\t\t\t\tfor (var j = 0; j < item.$level; j++)\r\n\t\t\t\t\ttree.push(templates.grid_indent(item));\r\n\r\n\t\t\t\thas_child = store.hasChild(item.id) && !(gantt.isSplitTask(item) && !gantt.config.open_split_tasks);\r\n\t\t\t\tif (has_child) {\r\n\t\t\t\t\ttree.push(templates.grid_open(item));\r\n\t\t\t\t\ttree.push(templates.grid_folder(item));\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttree.push(templates.grid_blank(item));\r\n\t\t\t\t\ttree.push(templates.grid_file(item));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\r\n\t\t\tif (this.defined(col.align))\r\n\t\t\t\tstyle += \"text-align:\" + col.align + \";\";\r\n\r\n\t\t\tvar aria = gantt._waiAria.gridCellAttrString(col, textValue);\r\n\r\n\t\t\ttree.push(value);\r\n\t\t\tif(config.rtl){\r\n\t\t\t\ttree = tree.reverse();\r\n\t\t\t}\r\n\t\t\tcell = \"
\" + tree.join(\"\") + \"
\";\r\n\t\t\tcells.push(cell);\r\n\t\t}\r\n\t\tvar css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\r\n\t\tcss += (item.$transparent) ? \" gantt_transparent\" : \"\";\r\n\r\n\t\tcss += (item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\");\r\n\r\n\t\tif (templates.grid_row_class) {\r\n\t\t\tvar css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\r\n\t\t\tif (css_template)\r\n\t\t\t\tcss += \" \" + css_template;\r\n\t\t}\r\n\r\n\t\tif(store.isSelected(item.id)) {\r\n\t\t\tcss += \" gantt_selected\";\r\n\t\t}\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\r\n\t\tvar height = view.getItemHeight();\r\n\t\tel.style.height = height + \"px\";\r\n\t\tel.style.lineHeight = height + \"px\";\r\n\r\n\t\tif(config.smart_rendering){\r\n\t\t\tel.style.position = \"absolute\";\r\n\t\t\tel.style.left = \"0px\";\r\n\t\t\tel.style.top = view.getItemTop(item.id) + \"px\";\r\n\t\t}\r\n\r\n\t\tif(view.$config.item_attribute){\r\n\t\t\tel.setAttribute(view.$config.item_attribute, item.id);\r\n\t\t}\r\n\r\n\t\tgantt._waiAria.taskRowAttr(item, el);\r\n\r\n\t\tel.innerHTML = cells.join(\"\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\treturn {\r\n\t\trender: _render_grid_item,\r\n\t\tupdate: null,\r\n\t\tgetRectangle: getRowRectangle\r\n\t};\r\n}\r\n\r\nmodule.exports = createGridLineRender;","\r\n\r\nvar barRectangle = require(\"./get_bar_rectangle\");\r\n\r\nmodule.exports = function getLinkBox(item, view, gantt){\r\n\tif(!gantt.isTaskExists(item.source)){\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif(!gantt.isTaskExists(item.target)){\r\n\t\treturn null;\r\n\t}\r\n\tvar sourceBox = barRectangle(gantt.getTask(item.source), view, gantt);\r\n\tvar targetBox = barRectangle(gantt.getTask(item.target), view, gantt);\r\n\r\n\tif(!sourceBox || !targetBox){\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar padding = 100;\r\n\tvar left = Math.min(sourceBox.left, targetBox.left) - padding;\r\n\tvar right = Math.max(sourceBox.left + sourceBox.width, targetBox.left + targetBox.width) + padding;\r\n\tvar top = Math.min(sourceBox.top, targetBox.top) - padding;\r\n\tvar bottom = Math.min(sourceBox.top + sourceBox.height, targetBox.top + targetBox.height) + padding;\r\n\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: bottom - top,\r\n\t\tleft: left,\r\n\t\twidth: right - left\r\n\t};\r\n};\r\n","var getLinkRectangle = require(\"./viewport/get_link_rectangle\");\r\n\r\nfunction createLinkRender(gantt){\r\n\r\nfunction _render_link_element(link, view) {\r\n\tvar config = view.$getConfig();\r\n\r\n\tvar pt = path_builder.get_endpoint(link, view);\r\n\tvar dy = pt.e_y - pt.y;\r\n\tvar dx = pt.e_x - pt.x;\r\n\tif(!dx && !dy){\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\tvar dots = path_builder.get_points(link, view);\r\n\tvar lines = drawer.get_lines(dots, view);\r\n\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\tvar css = \"gantt_task_link\";\r\n\r\n\tif (link.color) {\r\n\t\tcss += \" gantt_link_inline_color\";\r\n\t}\r\n\tvar cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\r\n\tif (cssTemplate) {\r\n\t\tcss += \" \" + cssTemplate;\r\n\t}\r\n\r\n\tif (config.highlight_critical_path && gantt.isCriticalLink) {\r\n\t\tif (gantt.isCriticalLink(link))\r\n\t\t\tcss += \" gantt_critical_link\";\r\n\t}\r\n\r\n\tdiv.className = css;\r\n\r\n\tif(view.$config.link_attribute){\r\n\t\tdiv.setAttribute(view.$config.link_attribute, link.id);\r\n\t}\r\n\r\n\tfor (var i = 0; i < lines.length; i++) {\r\n\t\tif (i == lines.length - 1) {\r\n\t\t\tlines[i].size -= config.link_arrow_size;\r\n\t\t}\r\n\t\tvar el = drawer.render_line(lines[i], lines[i + 1], view);\r\n\t\tif (link.color) {\r\n\t\t\tel.firstChild.style.backgroundColor = link.color;\r\n\t\t}\r\n\t\tdiv.appendChild(el);\r\n\t}\r\n\r\n\tvar direction = lines[lines.length - 1].direction;\r\n\tvar endpoint = _render_link_arrow(dots[dots.length - 1], direction, view);\r\n\tif (link.color) {\r\n\t\tendpoint.style.borderColor = link.color;\r\n\t}\r\n\tdiv.appendChild(endpoint);\r\n\r\n\tgantt._waiAria.linkAttr(link, div);\r\n\r\n\treturn div;\r\n}\r\n\r\nfunction _render_link_arrow(point, direction, view) {\r\n\tvar config = view.$getConfig();\r\n\tvar div = document.createElement(\"div\");\r\n\tvar top = point.y;\r\n\tvar left = point.x;\r\n\r\n\tvar size = config.link_arrow_size;\r\n\tvar line_width = config.row_height;\r\n\tvar className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\r\n\tswitch (direction) {\r\n\t\tcase drawer.dirs.right:\r\n\t\t\ttop -= (size - line_width) / 2;\r\n\t\t\tleft -= size;\r\n\t\t\tbreak;\r\n\t\tcase drawer.dirs.left:\r\n\t\t\ttop -= (size - line_width) / 2;\r\n\t\t\tbreak;\r\n\t\tcase drawer.dirs.up:\r\n\t\t\tleft -= size;\r\n\t\t\tbreak;\r\n\t\tcase drawer.dirs.down:\r\n\t\t\ttop += size * 2;\r\n\t\t\tleft -= size;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n\tdiv.style.cssText = [\r\n\t\t\"top:\" + top + \"px\",\r\n\t\t\"left:\" + left + 'px'].join(';');\r\n\tdiv.className = className;\r\n\r\n\treturn div;\r\n}\r\n\r\n\r\nvar drawer = {\r\n\tcurrent_pos: null,\r\n\tdirs: {\"left\": 'left', \"right\": 'right', \"up\": 'up', \"down\": 'down'},\r\n\tpath: [],\r\n\tclear: function () {\r\n\t\tthis.current_pos = null;\r\n\t\tthis.path = [];\r\n\t},\r\n\tpoint: function (pos) {\r\n\t\tthis.current_pos = gantt.copy(pos);\r\n\t},\r\n\tget_lines: function (dots) {\r\n\t\tthis.clear();\r\n\t\tthis.point(dots[0]);\r\n\t\tfor (var i = 1; i < dots.length; i++) {\r\n\t\t\tthis.line_to(dots[i]);\r\n\t\t}\r\n\t\treturn this.get_path();\r\n\t},\r\n\tline_to: function (pos) {\r\n\t\tvar next = gantt.copy(pos);\r\n\t\tvar prev = this.current_pos;\r\n\r\n\t\tvar line = this._get_line(prev, next);\r\n\t\tthis.path.push(line);\r\n\t\tthis.current_pos = next;\r\n\t},\r\n\tget_path: function () {\r\n\t\treturn this.path;\r\n\t},\r\n\tget_wrapper_sizes: function (v, view) {\r\n\t\tvar config = view.$getConfig();\r\n\t\tvar res,\r\n\t\t\twrapper_size = config.link_wrapper_width,\r\n\t\t\ty = v.y + (config.row_height - wrapper_size) / 2;\r\n\t\tswitch (v.direction) {\r\n\t\t\tcase this.dirs.left:\r\n\t\t\t\tres = {\r\n\t\t\t\t\ttop: y,\r\n\t\t\t\t\theight: wrapper_size,\r\n\t\t\t\t\tlineHeight: wrapper_size,\r\n\t\t\t\t\tleft: v.x - v.size - wrapper_size / 2,\r\n\t\t\t\t\twidth: v.size + wrapper_size\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.dirs.right:\r\n\t\t\t\tres = {\r\n\t\t\t\t\ttop: y,\r\n\t\t\t\t\tlineHeight: wrapper_size,\r\n\t\t\t\t\theight: wrapper_size,\r\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\r\n\t\t\t\t\twidth: v.size + wrapper_size\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.dirs.up:\r\n\t\t\t\tres = {\r\n\t\t\t\t\ttop: y - v.size,\r\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\r\n\t\t\t\t\theight: v.size + wrapper_size,\r\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\r\n\t\t\t\t\twidth: wrapper_size\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.dirs.down:\r\n\t\t\t\tres = {\r\n\t\t\t\t\ttop: y /*- wrapper_size/2*/,\r\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\r\n\t\t\t\t\theight: v.size + wrapper_size,\r\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\r\n\t\t\t\t\twidth: wrapper_size\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t},\r\n\tget_line_sizes: function (v, view) {\r\n\t\tvar config = view.$getConfig();\r\n\t\tvar res,\r\n\t\t\tline_size = config.link_line_width,\r\n\t\t\twrapper_size = config.link_wrapper_width,\r\n\t\t\tsize = v.size + line_size;\r\n\t\tswitch (v.direction) {\r\n\t\t\tcase this.dirs.left:\r\n\t\t\tcase this.dirs.right:\r\n\t\t\t\tres = {\r\n\t\t\t\t\theight: line_size,\r\n\t\t\t\t\twidth: size,\r\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\r\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.dirs.up:\r\n\t\t\tcase this.dirs.down:\r\n\t\t\t\tres = {\r\n\t\t\t\t\theight: size,\r\n\t\t\t\t\twidth: line_size,\r\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\r\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\treturn res;\r\n\t},\r\n\trender_line: function (v, end, view) {\r\n\t\tvar pos = this.get_wrapper_sizes(v, view);\r\n\t\tvar wrapper = document.createElement(\"div\");\r\n\t\twrapper.style.cssText = [\r\n\t\t\t\"top:\" + pos.top + \"px\",\r\n\t\t\t\"left:\" + pos.left + \"px\",\r\n\t\t\t\"height:\" + pos.height + \"px\",\r\n\t\t\t\"width:\" + pos.width + \"px\"\r\n\t\t].join(';');\r\n\t\twrapper.className = \"gantt_line_wrapper\";\r\n\r\n\t\tvar innerPos = this.get_line_sizes(v, view);\r\n\t\tvar inner = document.createElement(\"div\");\r\n\t\tinner.style.cssText = [\r\n\t\t\t\"height:\" + innerPos.height + \"px\",\r\n\t\t\t\"width:\" + innerPos.width + \"px\",\r\n\t\t\t\"margin-top:\" + innerPos.marginTop + \"px\",\r\n\t\t\t\"margin-left:\" + innerPos.marginLeft + \"px\"\r\n\t\t].join(\";\");\r\n\r\n\t\tinner.className = \"gantt_link_line_\" + v.direction;\r\n\t\twrapper.appendChild(inner);\r\n\r\n\t\treturn wrapper;\r\n\t},\r\n\t_get_line: function (from, to) {\r\n\t\tvar direction = this.get_direction(from, to);\r\n\t\tvar vect = {\r\n\t\t\tx: from.x,\r\n\t\t\ty: from.y,\r\n\t\t\tdirection: this.get_direction(from, to)\r\n\t\t};\r\n\t\tif (direction == this.dirs.left || direction == this.dirs.right) {\r\n\t\t\tvect.size = Math.abs(from.x - to.x);\r\n\t\t} else {\r\n\t\t\tvect.size = Math.abs(from.y - to.y);\r\n\t\t}\r\n\t\treturn vect;\r\n\t},\r\n\tget_direction: function (from, to) {\r\n\t\tvar direction = 0;\r\n\t\tif (to.x < from.x) {\r\n\t\t\tdirection = this.dirs.left;\r\n\t\t} else if (to.x > from.x) {\r\n\t\t\tdirection = this.dirs.right;\r\n\t\t} else if (to.y > from.y) {\r\n\t\t\tdirection = this.dirs.down;\r\n\t\t} else {\r\n\t\t\tdirection = this.dirs.up;\r\n\t\t}\r\n\t\treturn direction;\r\n\t}\r\n\r\n};\r\n\r\nvar path_builder = {\r\n\r\n\tpath: [],\r\n\tclear: function () {\r\n\t\tthis.path = [];\r\n\t},\r\n\tcurrent: function () {\r\n\t\treturn this.path[this.path.length - 1];\r\n\t},\r\n\tpoint: function (next) {\r\n\t\tif (!next)\r\n\t\t\treturn this.current();\r\n\r\n\t\tthis.path.push(gantt.copy(next));\r\n\t\treturn next;\r\n\t},\r\n\tpoint_to: function (direction, diff, point) {\r\n\t\tif (!point)\r\n\t\t\tpoint = gantt.copy(this.point());\r\n\t\telse\r\n\t\t\tpoint = {x: point.x, y: point.y};\r\n\t\tvar dir = drawer.dirs;\r\n\t\tswitch (direction) {\r\n\t\t\tcase (dir.left):\r\n\t\t\t\tpoint.x -= diff;\r\n\t\t\t\tbreak;\r\n\t\t\tcase (dir.right):\r\n\t\t\t\tpoint.x += diff;\r\n\t\t\t\tbreak;\r\n\t\t\tcase (dir.up):\r\n\t\t\t\tpoint.y -= diff;\r\n\t\t\t\tbreak;\r\n\t\t\tcase (dir.down):\r\n\t\t\t\tpoint.y += diff;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn this.point(point);\r\n\t},\r\n\tget_points: function (link, view) {\r\n\t\tvar pt = this.get_endpoint(link, view);\r\n\t\tvar xy = gantt.config;\r\n\r\n\t\tvar dy = pt.e_y - pt.y;\r\n\t\tvar dx = pt.e_x - pt.x;\r\n\r\n\t\tvar dir = drawer.dirs;\r\n\r\n\t\tthis.clear();\r\n\t\tthis.point({x: pt.x, y: pt.y});\r\n\r\n\t\tvar shiftX = 2 * xy.link_arrow_size;//just random size for first line\r\n\t\tvar lineType = this.get_line_type(link, view.$getConfig());\r\n\r\n\t\tvar forward = (pt.e_x > pt.x);\r\n\t\tif (lineType.from_start && lineType.to_start) {\r\n\t\t\tthis.point_to(dir.left, shiftX);\r\n\t\t\tif (forward) {\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t} else {\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t}\r\n\t\t\tthis.point_to(dir.right, shiftX);\r\n\r\n\t\t} else if (!lineType.from_start && lineType.to_start) {\r\n\t\t\tforward = (pt.e_x > (pt.x + 2 * shiftX));\r\n\t\t\tthis.point_to(dir.right, shiftX);\r\n\t\t\tif (forward) {\r\n\t\t\t\tdx -= shiftX;\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t} else {\r\n\t\t\t\tdx -= 2 * shiftX;\r\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\r\n\r\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\r\n\t\t\t\tthis.point_to(dir.right, shiftX);\r\n\t\t\t}\r\n\r\n\t\t} else if (!lineType.from_start && !lineType.to_start) {\r\n\t\t\tthis.point_to(dir.right, shiftX);\r\n\t\t\tif (forward) {\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t} else {\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t}\r\n\t\t\tthis.point_to(dir.left, shiftX);\r\n\t\t} else if (lineType.from_start && !lineType.to_start) {\r\n\r\n\t\t\tforward = (pt.e_x > (pt.x - 2 * shiftX));\r\n\t\t\tthis.point_to(dir.left, shiftX);\r\n\r\n\t\t\tif (!forward) {\r\n\t\t\t\tdx += shiftX;\r\n\t\t\t\tthis.point_to(dir.down, dy);\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t} else {\r\n\t\t\t\tdx += 2 * shiftX;\r\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\r\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\r\n\t\t\t\tthis.point_to(dir.right, dx);\r\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\r\n\t\t\t\tthis.point_to(dir.left, shiftX);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this.path;\r\n\t},\r\n\tget_line_type: function(link, config){\r\n\t\tvar types = config.links;\r\n\t\tvar from_start = false, to_start = false;\r\n\t\tif (link.type == types.start_to_start) {\r\n\t\t\tfrom_start = to_start = true;\r\n\t\t} else if (link.type == types.finish_to_finish) {\r\n\t\t\tfrom_start = to_start = false;\r\n\t\t} else if (link.type == types.finish_to_start) {\r\n\t\t\tfrom_start = false;\r\n\t\t\tto_start = true;\r\n\t\t} else if (link.type == types.start_to_finish) {\r\n\t\t\tfrom_start = true;\r\n\t\t\tto_start = false;\r\n\t\t} else {\r\n\t\t\tgantt.assert(false, \"Invalid link type\");\r\n\t\t}\r\n\r\n\t\tif(config.rtl){\r\n\t\t\tfrom_start = !from_start;\r\n\t\t\tto_start = !to_start;\r\n\t\t}\r\n\r\n\t\treturn {from_start: from_start, to_start: to_start};\r\n\t},\r\n\r\n\tget_endpoint: function (link, view) {\r\n\t\tvar config = view.$getConfig();\r\n\r\n\t\tvar lineType = this.get_line_type(link, config);\r\n\t\tvar from_start = lineType.from_start,\r\n\t\t\tto_start = lineType.to_start;\r\n\r\n\t\tvar source = gantt.getTask(link.source);\r\n\t\tvar target = gantt.getTask(link.target);\r\n\r\n\t\tvar from = getMilestonePosition(source, view),\r\n\t\t\tto = getMilestonePosition(target, view);\r\n\r\n\t\treturn {\r\n\t\t\tx: from_start ? from.left : (from.left + from.width),\r\n\t\t\te_x: to_start ? to.left : (to.left + to.width),\r\n\t\t\ty: from.top,\r\n\t\t\te_y: to.top\r\n\t\t};\r\n\t}\r\n};\r\n\r\nfunction getMilestonePosition(task, view){\r\n\tvar config = view.$getConfig();\r\n\tvar pos = view.getItemPosition(task);\r\n\tif(gantt.getTaskType(task.type) == config.types.milestone){\r\n\t\tvar milestoneHeight = gantt.getTaskHeight();\r\n\t\tvar milestoneWidth = Math.sqrt(2*milestoneHeight*milestoneHeight);\r\n\t\tpos.left -= milestoneWidth / 2;\r\n\t\tpos.width = milestoneWidth;\r\n\t}\r\n\treturn pos;\r\n}\r\n\r\n\r\nreturn {\r\n\trender: _render_link_element,\r\n\tupdate: null,\r\n\tgetRectangle: getLinkRectangle\r\n};\r\n}\r\n\r\nmodule.exports = createLinkRender;","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\r\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\r\nfunction getIndexRange(scale, viewportLeft, viewPortRight){\r\n\tvar firstCellIndex = 0;\r\n\tvar lastCellIndex = scale.left.length - 1;\r\n\tfor(var i = 0; i < scale.left.length; i++){\r\n\t\tvar left = scale.left[i];\r\n\t\tif(left < viewportLeft){\r\n\t\t\tfirstCellIndex = i;\r\n\t\t}\r\n\t\tif(left > viewPortRight){\r\n\t\t\tlastCellIndex = i;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn {\r\n\t\tstart: firstCellIndex,\r\n\t\tend: lastCellIndex\r\n\t};\r\n}\r\n\r\nfunction createTaskBgRender(gantt){\r\n\tvar renderedCells = {};\r\n\tvar visibleCells = {};\r\n\r\n\tfunction isRendered(item, columnIndex){\r\n\t\tif(renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction detachRenderedCell(itemId, columnIndex){\r\n\t\tif(renderedCells[itemId] && renderedCells[itemId][columnIndex] &&\r\n\t\t\trenderedCells[itemId][columnIndex].parentNode\r\n\t\t\t){\r\n\t\t\t\trenderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\r\n\t\t\t}\r\n\t}\r\n\r\n\tfunction getCellTemplate(view){\r\n\t\tvar templates = view.$getTemplates();\r\n\t\tvar cssTemplate;\r\n\t\tif (typeof templates.task_cell_class !== \"undefined\") {\r\n\t\t\tcssTemplate = templates.task_cell_class;\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tvar log = console.warn || console.log;\r\n\t\t\tlog('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\r\n\t\t} else {\r\n\t\t\tcssTemplate = templates.timeline_cell_class;\r\n\t\t}\r\n\t\treturn cssTemplate;\r\n\t}\r\n\r\n\tfunction renderCells(item, node, view, viewPort){\r\n\t\tvar config = view.$getConfig();\r\n\t\tvar cfg = view.getScale();\r\n\t\tvar count = cfg.count;\r\n\t\tvar cssTemplate = getCellTemplate(view);\r\n\r\n\t\tif (config.show_task_cells) {\r\n\t\t\tif(!renderedCells[item.id]){\r\n\t\t\t\trenderedCells[item.id] = {};\r\n\t\t\t}\r\n\t\t\tif(!visibleCells[item.id]){\r\n\t\t\t\tvisibleCells[item.id] = {};\r\n\t\t\t}\r\n\r\n\t\t\tvar range = getIndexRange(cfg, viewPort.x, viewPort.x_end);\r\n\r\n\t\t\tfor(var i in visibleCells[item.id]){\r\n\t\t\t\tvar index = visibleCells[item.id][i];\r\n\r\n\t\t\t\tif(Number(index) < range.start || Number(index) > range.end){\r\n\t\t\t\t\tdetachRenderedCell(item.id, index);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvisibleCells[item.id][columnIndex] = {};\r\n\t\t\r\n\t\t\t// TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\r\n\t\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\r\n\t\t\t\tvar cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, config);\r\n\t\t\t\tif(!cell && isRendered(item, columnIndex)){\r\n\t\t\t\t\tdetachRenderedCell(item.id, columnIndex);\r\n\t\t\t\t}else if (cell && !cell.parentNode){\r\n\t\t\t\t\tnode.appendChild(cell);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isColumnVisible(columnIndex, scale, viewPort){\r\n\t\tvar width = scale.width[columnIndex];\r\n\t\tif(width <= 0){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif(!gantt.config.smart_rendering || isLegacyRender(gantt)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar cellLeftCoord = scale.left[columnIndex] - width;\r\n\t\tvar cellRightCoord = scale.left[columnIndex] + width;\r\n\t\treturn (cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x);//do not render skipped columns\r\n\t}\r\n\r\n\tfunction renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, config){\r\n\t\tvar width = scale.width[columnIndex],\r\n\t\t\tcssclass = \"\";\r\n\r\n\t\tif (isColumnVisible(columnIndex, scale, viewPort)) {//do not render skipped columns\r\n\t\t\t\r\n\t\t\tvar cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\r\n\r\n\t\t\tif(config.static_background){\r\n\t\t\t\t// if cell render in static background is not allowed, or if it's a blank cell\r\n\t\t\t\tif(!(config.static_background_cells && cssTemplateContent)){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(renderedCells[item.id][columnIndex]){\r\n\t\t\t\tvisibleCells[item.id][columnIndex] = columnIndex;\r\n\t\t\t\treturn renderedCells[item.id][columnIndex];\r\n\t\t\t}\r\n\t\t\tvar cell = document.createElement(\"div\");\r\n\t\t\tcell.style.width = (width) + \"px\";\r\n\r\n\t\t\tcssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\r\n\t\t\tif (cssTemplateContent) {\r\n\t\t\t\tcssclass += \" \" + cssTemplateContent;\r\n\t\t\t}\r\n\t\t\tcell.className = cssclass;\r\n\r\n\t\t\tif(gantt.config.smart_rendering){\r\n\t\t\t\tcell.style.position = \"absolute\";\r\n\t\t\t\tcell.style.left = scale.left[columnIndex] + \"px\";\r\n\t\t\t\trenderedCells[item.id][columnIndex] = cell;\r\n\t\t\t\tvisibleCells[item.id][columnIndex] = columnIndex;\r\n\t\t\t}\r\n\t\t\treturn cell;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction _render_bg_line(item, view, viewPort) {\r\n\t\tvar config = view.$getConfig(),\r\n\t\t\ttemplates = view.$getTemplates();\r\n\t\tvar cfg = view.getScale();\r\n\t\tvar count = cfg.count;\r\n\r\n\t\tif(config.static_background && !config.static_background_cells){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar row = document.createElement(\"div\");\r\n\r\n\t\tvar cellTemplate = getCellTemplate(view);\r\n\r\n\t\tvar range;\r\n\r\n\t\tif(!viewPort || !config.smart_rendering || isLegacyRender(gantt)){\r\n\t\t\trange = {\r\n\t\t\t\tstart: 0,\r\n\t\t\t\tend: count - 1\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\trange = getIndexRange(cfg, viewPort.x, viewPort.x_end);\r\n\t\t}\r\n\t\tif (config.show_task_cells) {\r\n\t\t\trenderedCells[item.id] = {};\r\n\t\t\tvisibleCells[item.id] = {};\r\n\t\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\r\n\t\t\t\tvar cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellTemplate, config);\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\trow.appendChild(cell);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar odd = gantt.getGlobalTaskIndex(item.id) % 2 !== 0;\r\n\t\tvar cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\r\n\t\tvar css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\r\n\r\n\t\tvar store = view.$config.rowStore;\r\n\t\tif(store.isSelected(item.id)) {\r\n\t\t\tcss += \" gantt_selected\";\r\n\t\t}\r\n\r\n\t\trow.className = css;\r\n\r\n\t\tif (config.smart_rendering) {\r\n\t\t\trow.style.position = \"absolute\";\r\n\t\t\trow.style.top = view.getItemTop(item.id) + \"px\";\r\n\t\t\trow.style.width = \"100%\";\r\n\t\t}\r\n\t\trow.style.height = (config.row_height) + \"px\";\r\n\r\n\t\tif(view.$config.item_attribute){\r\n\t\t\trow.setAttribute(view.$config.item_attribute, item.id);\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\treturn {\r\n\t\trender: _render_bg_line,\r\n\t\tupdate: renderCells,\r\n\t\tgetRectangle: getRowRectangle\r\n\t};\r\n}\r\n\r\nmodule.exports = createTaskBgRender;\r\n","var getBarRectangle = require(\"./viewport/get_bar_rectangle\");\r\nvar createBaseBarRender = require(\"./task_bar_render\");\r\n\r\nfunction createTaskRenderer(gantt){\r\n\tvar defaultRender = createBaseBarRender(gantt);\r\n\r\n\tfunction renderSplitTask(task, timeline) {\r\n\t\tif (gantt.isSplitTask(task) && ((gantt.config.open_split_tasks && !task.$open) || !gantt.config.open_split_tasks)) {\r\n\t\t\tvar el = document.createElement('div'),\r\n\t\t\t\tsizes = gantt.getTaskPosition(task);\r\n\r\n\t\t\tvar sub_tasks = gantt.getChildren(task.id);\r\n\r\n\r\n\t\t\tfor (var i = 0; i < sub_tasks.length; i++) {\r\n\t\t\t\tvar child = gantt.getTask(sub_tasks[i]);\r\n\r\n\t\t\t\tvar element = defaultRender(child, timeline);\r\n\t\t\t\tif(!element)\r\n\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\tvar padding = Math.floor((gantt.config.row_height - sizes.height) / 2);\r\n\r\n\t\t\t\telement.style.top = (sizes.top + padding) + \"px\";\r\n\t\t\t\telement.className += \" gantt_split_child\";\r\n\r\n\t\t\t\tel.appendChild(element);\r\n\t\t\t}\r\n\t\t\treturn el;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\treturn {\r\n\t\trender: renderSplitTask,\r\n\t\tupdate: null,\r\n\t\tgetRectangle: getBarRectangle\r\n\t};\r\n}\r\n\r\nmodule.exports = createTaskRenderer;","var getBarRectangle = require(\"./viewport/get_bar_rectangle\");\r\nvar createBaseBarRender = require(\"./task_bar_render\");\r\n\r\nmodule.exports = function createTaskRenderer(gantt){\r\n\tvar defaultRender = createBaseBarRender(gantt);\r\n\treturn {\r\n\t\trender: defaultRender,\r\n\t\tupdate: null,\r\n\t\tgetRectangle: getBarRectangle\r\n\t};\r\n};","module.exports = function (gantt) {\r\n\treturn function processTaskDateProperties(item, mapTo, mode) {\r\n\t\tif (mode == \"keepDates\") {\r\n\t\t\tkeepDatesOnEdit(item, mapTo);\r\n\t\t} else if (mode == \"keepDuration\") {\r\n\t\t\tkeepDurationOnEdit(item, mapTo);\r\n\t\t} else {\r\n\t\t\tdefaultActionOnEdit(item, mapTo);\r\n\t\t}\r\n\t};\r\n\r\n\t// resize task\r\n\t// resize task when start/end/duration changes\r\n\tfunction keepDatesOnEdit(item, mapTo) {\r\n\t\tif (mapTo == \"duration\") {\r\n\t\t\titem.end_date = gantt.calculateEndDate(item);\r\n\t\t} else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\r\n\t\t\titem.duration = gantt.calculateDuration(item);\r\n\t\t}\r\n\t}\r\n\r\n\t// move task(before 6.2)\r\n\t// move task when start/end dates changes\r\n\t// resize task when duration changes\r\n\tfunction keepDurationOnEdit(item, mapTo) {\r\n\t\tif (mapTo == \"end_date\") {\r\n\t\t\titem.start_date = gantt.calculateEndDate({\r\n\t\t\t\tstart_date: item.end_date,\r\n\t\t\t\tduration: -item.duration,\r\n\t\t\t\ttask: item\r\n\t\t\t}\r\n\t\t\t);\r\n\t\t} else if (mapTo == \"start_date\" || mapTo == \"duration\") {\r\n\t\t\titem.end_date = gantt.calculateEndDate(item);\r\n\t\t}\r\n\t}\r\n\r\n\t// default behavior\r\n\t// move task when start date changes\r\n\t// resize task when end date/duration changes\r\n\tfunction defaultActionOnEdit(item, mapTo) {\r\n\t\tif (mapTo == \"start_date\" || mapTo == \"duration\") {\r\n\t\t\titem.end_date = gantt.calculateEndDate(item);\r\n\t\t} else if (mapTo == \"end_date\") {\r\n\t\t\titem.duration = gantt.calculateDuration(item);\r\n\t\t}\r\n\t}\r\n};","module.exports = function (gantt) {\r\n\r\n\tvar BaseEditor = require(\"./base\")(gantt),\r\n\t\tutils = require(\"../../../../../utils/utils\");\r\n\tvar __extends = require(\"../../../../../utils/extends\");\r\n\r\n\tfunction PredecessorEditor() {\r\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(PredecessorEditor, BaseEditor);\r\n\r\n\tfunction parseInputString(value, config) {\r\n\t\tvar predecessors = (value || \"\").split(config.delimiter || \",\");\r\n\t\tfor (var i = 0; i < predecessors.length; i++) {\r\n\t\t\tvar val = predecessors[i].trim();\r\n\t\t\tif (val) {\r\n\t\t\t\tpredecessors[i] = val;\r\n\t\t\t} else {\r\n\t\t\t\tpredecessors.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t\tpredecessors.sort();\r\n\t\treturn predecessors;\r\n\t}\r\n\r\n\tfunction formatPredecessors(task, config, gantt) {\r\n\t\tvar links = task.$target;\r\n\t\tvar labels = [];\r\n\t\tfor (var i = 0; i < links.length; i++) {\r\n\t\t\tvar link = gantt.getLink(links[i]);\r\n\t\t\tvar pred = gantt.getTask(link.source);\r\n\t\t\tlabels.push(gantt.getWBSCode(pred));\r\n\t\t}\r\n\t\treturn labels.join((config.delimiter || \",\") + \" \");\r\n\t}\r\n\r\n\tfunction getSelectedLinks(taskId, predecessorCodes) {\r\n\t\tvar links = [];\r\n\t\tpredecessorCodes.forEach(function (code) {\r\n\t\t\tvar predecessor = gantt.getTaskByWBSCode(code);\r\n\t\t\tif (predecessor) {\r\n\t\t\t\tvar link = {\r\n\t\t\t\t\tsource: predecessor.id,\r\n\t\t\t\t\ttarget: taskId,\r\n\t\t\t\t\ttype: gantt.config.links.finish_to_start,\r\n\t\t\t\t\tlag: 0\r\n\t\t\t\t};\r\n\t\t\t\tif (gantt.isLinkAllowed(link)) {\r\n\t\t\t\t\tlinks.push(link);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn links;\r\n\t}\r\n\r\n\tfunction getLinksDiff(task, predecessorCodes) {\r\n\t\tvar selectedLinks = getSelectedLinks(task.id, predecessorCodes);\r\n\t\tvar existingLinksSearch = {};\r\n\t\ttask.$target.forEach(function (linkId) {\r\n\t\t\tvar link = gantt.getLink(linkId);\r\n\t\t\texistingLinksSearch[link.source + \"_\" + link.target] = link.id;\r\n\t\t});\r\n\r\n\t\tvar linksToAdd = [];\r\n\t\tselectedLinks.forEach(function (link) {\r\n\t\t\tvar linkKey = link.source + \"_\" + link.target;\r\n\t\t\tif (!existingLinksSearch[linkKey]) {\r\n\t\t\t\tlinksToAdd.push(link);\r\n\t\t\t} else {\r\n\t\t\t\tdelete existingLinksSearch[linkKey];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar linksToDelete = [];\r\n\t\tfor (var i in existingLinksSearch) {\r\n\t\t\tlinksToDelete.push(existingLinksSearch[i]);\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tadd: linksToAdd,\r\n\t\t\tremove: linksToDelete\r\n\t\t};\r\n\t}\r\n\r\n\tutils.mixin(PredecessorEditor.prototype, {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\t\t\tvar html = \"
\";\r\n\t\t\tplaceholder.innerHTML = html;\r\n\t\t},\r\n\t\thide: function () {\r\n\t\t},\r\n\t\tset_value: function (value, id, column, node) {\r\n\t\t\tthis.get_input(node).value = formatPredecessors(value, column.editor, gantt);\r\n\t\t},\r\n\t\tget_value: function (id, column, node) {\r\n\t\t\treturn parseInputString((this.get_input(node).value || \"\"), column.editor);\r\n\t\t},\r\n\t\tsave: function (id, column, node) {\r\n\t\t\tvar task = gantt.getTask(id);\r\n\r\n\t\t\tvar linksDiff = getLinksDiff(task, this.get_value(id, column, node));\r\n\r\n\t\t\tif (linksDiff.add.length || linksDiff.remove.length) {\r\n\t\t\t\tgantt.batchUpdate(function () {\r\n\t\t\t\t\tlinksDiff.add.forEach(function (link) {\r\n\t\t\t\t\t\tgantt.addLink(link);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlinksDiff.remove.forEach(function (linkId) {\r\n\t\t\t\t\t\tgantt.deleteLink(linkId);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (gantt.autoSchedule)\r\n\t\t\t\t\t\tgantt.autoSchedule();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tis_changed: function (value, id, column, node) {\r\n\t\t\tvar inputPredecessors = this.get_value(id, column, node);\r\n\t\t\tvar taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\r\n\r\n\t\t\treturn inputPredecessors.join() !== taskPredecessors.join();\r\n\t\t}\r\n\t}, true);\r\n\r\n\treturn PredecessorEditor;\r\n};","module.exports = function (gantt) {\r\n\tvar BaseEditor = require(\"./base\")(gantt),\r\n\t\tutils = require(\"../../../../../utils/utils\");\r\n\tvar __extends = require(\"../../../../../utils/extends\");\r\n\r\n\tvar html5DateFormat = \"%Y-%m-%d\";\r\n\r\n\tvar dateToStr = null;\r\n\tvar strToDate = null;\r\n\r\n\tfunction init() {\r\n\t\tif (!dateToStr) {\r\n\t\t\tdateToStr = gantt.date.date_to_str(html5DateFormat);\r\n\t\t}\r\n\t\tif (!strToDate) {\r\n\t\t\tstrToDate = gantt.date.str_to_date(html5DateFormat);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction DateEditor() {\r\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\r\n\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(DateEditor, BaseEditor);\r\n\r\n\tutils.mixin(DateEditor.prototype, {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\r\n\t\t\tinit();\r\n\t\t\tvar minValue = dateToStr(config.min || gantt.getState().min_date);\r\n\t\t\tvar maxValue = dateToStr(config.max || gantt.getState().max_date);\r\n\r\n\t\t\tvar html = \"
\";\r\n\t\t\tplaceholder.innerHTML = html;\r\n\t\t},\r\n\t\tset_value: function (value, id, column, node) {\r\n\t\t\tif (value && value.getFullYear) {\r\n\t\t\t\tthis.get_input(node).value = dateToStr(value);\r\n\t\t\t} else {\r\n\t\t\t\tthis.get_input(node).value = value;\r\n\t\t\t}\r\n\t\t},\r\n\t\tis_valid: function (value, id, column, node) {\r\n\t\t\tif (!value || isNaN(value.getTime()))\r\n\t\t\t\treturn false;\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tget_value: function (id, column, node) {\r\n\t\t\tvar parsed;\r\n\t\t\ttry {\r\n\t\t\t\tparsed = strToDate(this.get_input(node).value || \"\");\r\n\t\t\t} catch (e) {\r\n\t\t\t\tparsed = null;// return null will cancel changes\r\n\t\t\t}\r\n\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}, true);\r\n\r\n\treturn DateEditor;\r\n};\r\n","module.exports = function(gantt) {\r\n\tvar BaseEditor = require(\"./base\")(gantt),\r\n\t\tutils = require(\"../../../../../utils/utils\");\r\n\tvar __extends = require(\"../../../../../utils/extends\");\r\n\r\n\tfunction SelectEditor() {\r\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(SelectEditor, BaseEditor);\r\n\r\n\tutils.mixin(SelectEditor.prototype, {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\t\t\tvar html = \"
\";\r\n\t\t\tplaceholder.innerHTML = html;\r\n\t\t},\r\n\t\tget_input: function (node) {\r\n\t\t\treturn node.querySelector(\"select\");\r\n\t\t}\r\n\t}, true);\r\n\r\n\treturn SelectEditor;\r\n};","module.exports = function (gantt) {\r\n\r\n\tvar BaseEditor = require(\"./base\")(gantt),\r\n\t\tutils = require(\"../../../../../utils/utils\");\r\n\tvar __extends = require(\"../../../../../utils/extends\");\r\n\r\n\tfunction NumberEditor() {\r\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(NumberEditor, BaseEditor);\r\n\r\n\tutils.mixin(NumberEditor.prototype, {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\t\t\tvar min = config.min || 0,\r\n\t\t\t\tmax = config.max || 100;\r\n\r\n\t\t\tvar html = \"
\";\r\n\t\t\tplaceholder.innerHTML = html;\r\n\t\t},\r\n\t\tget_value: function (id, column, node) {\r\n\t\t\treturn this.get_input(node).value || \"\";\r\n\t\t},\r\n\t\tis_valid: function (value, id, column, node) {\r\n\t\t\treturn !isNaN(parseInt(value, 10));\r\n\t\t}\r\n\t}, true);\r\n\r\n\treturn NumberEditor;\r\n};","module.exports = function(gantt) {\r\n\r\n\tvar BaseEditor = require(\"./base\")(gantt),\r\n\t\tutils = require(\"../../../../../utils/utils\");\r\n\tvar __extends = require(\"../../../../../utils/extends\");\r\n\r\n\tfunction TextEditor() {\r\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\r\n\t\treturn self;\r\n\t}\r\n\r\n\t__extends(TextEditor, BaseEditor);\r\n\r\n\tutils.mixin(TextEditor.prototype, {\r\n\t\tshow: function (id, column, config, placeholder) {\r\n\t\t\tvar html = \"
\";\r\n\t\t\tplaceholder.innerHTML = html;\r\n\t\t}\r\n\t}, true);\r\n\r\n\treturn TextEditor;\r\n};","module.exports = {\r\n\tinit: function(controller, grid){\r\n\t\tvar self = controller;\r\n\t\tvar gantt = grid.$gantt;\r\n\r\n\t\tvar onBlurDelay = null;\r\n\t\tvar keyNav = gantt.ext.keyboardNavigation;\r\n\t\tkeyNav.attachEvent(\"onBeforeFocus\", function (node) {\r\n\t\t\tvar activeCell = controller.locateCell(node);\r\n\t\t\tclearTimeout(onBlurDelay);\r\n\t\t\tif (activeCell) {\r\n\t\t\t\tvar columnName = activeCell.columnName;\r\n\t\t\t\tvar id = activeCell.id;\r\n\r\n\t\t\t\tvar editorState = self.getState();\r\n\t\t\t\tif(self.isVisible()){\r\n\t\t\t\t\tif(editorState.id == id && editorState.columnName === columnName) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tkeyNav.attachEvent(\"onFocus\", function (node) {\r\n\t\t\tvar activeCell = controller.locateCell(node);\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tclearTimeout(onBlurDelay);\r\n\t\t\tif (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\r\n\t\t\t\tif(self.isVisible()){\r\n\t\t\t\t\tself.save();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tcontroller.attachEvent(\"onHide\", function(){\r\n\t\t\tclearTimeout(onBlurDelay);\r\n\t\t});\r\n\r\n\t\tkeyNav.attachEvent(\"onBlur\", function () {\r\n\t\t\tonBlurDelay = setTimeout(function(){\r\n\t\t\t\tself.save();\r\n\t\t\t});\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onTaskDblClick\", function(id,e){\r\n\t\t\t// block lightbox on double click inside editor\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tvar cell = controller.locateCell(e.target);\r\n\t\t\tif(cell && controller.isVisible() && cell.columnName == state.columnName){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\r\n\t\t\tif(gantt._is_icon_open_click(e))\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tvar cell = controller.locateCell(e.target);\r\n\r\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\r\n\t\t\t\tif(controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName){\r\n\t\t\t\t\t// do nothing if editor is already active in this cell\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\r\n\t\t\tself.save();\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tkeyNav.attachEvent(\"onKeyDown\", function(command, e){\r\n\t\t\tvar activeCell = controller.locateCell(e.target);\r\n\t\t\tvar hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\r\n\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\r\n\t\t\tvar keyCode = e.keyCode;\r\n\t\t\tvar preventKeyNav = false;\r\n\r\n\t\t\tswitch (keyCode){\r\n\t\t\t\tcase keyboard.ENTER:\r\n\t\t\t\t\tif(controller.isVisible()){\r\n\t\t\t\t\t\tcontroller.save();\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}else if(hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)){\r\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.ESC:\r\n\t\t\t\t\tif(controller.isVisible()){\r\n\t\t\t\t\t\tcontroller.hide();\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.UP:\r\n\t\t\t\tcase keyboard.DOWN:\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.LEFT:\r\n\t\t\t\tcase keyboard.RIGHT:\r\n\t\t\t\t\tif(state.editorType === \"date\"){\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.SPACE:\r\n\t\t\t\t\tif(controller.isVisible()){\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\r\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.DELETE:\r\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\r\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.TAB:\r\n\t\t\t\t\tif(controller.isVisible()){\r\n\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tcontroller.editPrevCell(true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tcontroller.editNextCell(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar newState = controller.getState();\r\n\t\t\t\t\t\tif(newState.id){\r\n\t\t\t\t\t\t\tkeyNav.focus({type:\"taskCell\", id: newState.id, column:newState.columnName});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif(controller.isVisible())\r\n\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\telse{\r\n\r\n\t\t\t\t\t\t// start editing on character key\r\n\t\t\t\t\t\tif((keyCode >= 48 && keyCode <= 57) || // [0-9]\r\n\t\t\t\t\t\t\t(keyCode > 95 && keyCode < 112) || // numpad\r\n\t\t\t\t\t\t\t(keyCode >= 64 && keyCode <= 91) || // [a-z]\r\n\t\t\t\t\t\t\t(keyCode > 185 && keyCode < 193) || //;=-,etc\r\n\t\t\t\t\t\t\t(keyCode > 218 && keyCode < 223)\r\n\t\t\t\t\t\t){\r\n\t\t\t\t\t\t\tvar modifiers = command.modifiers;\r\n\r\n\t\t\t\t\t\t\tvar anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\r\n\t\t\t\t\t\t\tif(modifiers.alt){\r\n\t\t\t\t\t\t\t\t// don't start editing on alt+key\r\n\t\t\t\t\t\t\t}else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")){\r\n\t\t\t\t\t\t\t\t// don't start editing if command already have a keyboard shortcut\r\n\t\t\t\t\t\t\t}else if(hasEditor && !controller.isVisible()){\r\n\t\t\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\r\n\t\t\t\t\t\t\t\tpreventKeyNav = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (preventKeyNav){\r\n\t\t\t\treturn false;\r\n\t\t\t} else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t},\r\n\tonShow: function(controller, placeholder, grid){},\r\n\tonHide: function(controller, placeholder, grid){\r\n\t\tvar gantt = grid.$gantt;\r\n\t\tgantt.focus();\r\n\r\n\t},\r\n\tdestroy: function(){}\r\n};\r\n\r\n","module.exports = {\r\n\tinit: function (controller, grid) {\r\n\t\tvar gantt = grid.$gantt;\r\n\r\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\r\n\t\t\tif (gantt._is_icon_open_click(e))\r\n\t\t\t\treturn true;\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tvar cell = controller.locateCell(e.target);\r\n\r\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\r\n\t\t\t\tif (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {\r\n\t\t\t\t\t// do nothing if editor is already active in this cell\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\r\n\t\t\tif (controller.isVisible() && controller.isChanged()) {\r\n\t\t\t\tcontroller.save();\r\n\t\t\t} else {\r\n\t\t\t\tcontroller.hide();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onTaskDblClick\", function (id, e) {\r\n\t\t\tvar state = controller.getState();\r\n\t\t\tvar cell = controller.locateCell(e.target);\r\n\t\t\tif (cell && controller.isVisible() && cell.columnName == state.columnName) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t},\r\n\r\n\tonShow: function (controller, placeholder, grid) {\r\n\t\tif (grid.$getConfig().keyboard_navigation) {\r\n\t\t\t// keyboard navigation extension will handle arrows if enabled\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar gantt = grid.$gantt;\r\n\t\tplaceholder.onkeydown = function (e) {\r\n\t\t\te = e || window.event;\r\n\r\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\r\n\t\t\tif (e.defaultPrevented || (e.shiftKey && e.keyCode != keyboard.TAB)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar shouldPrevent = true;\r\n\t\t\tswitch (e.keyCode) {\r\n\t\t\t\tcase gantt.keys.edit_save:\r\n\t\t\t\t\tcontroller.save();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase gantt.keys.edit_cancel:\r\n\t\t\t\t\tcontroller.hide();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyboard.TAB:\r\n\t\t\t\t\tif (e.shiftKey) {\r\n\t\t\t\t\t\tcontroller.editPrevCell(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontroller.editNextCell(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tshouldPrevent = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (shouldPrevent) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t};\r\n\t},\r\n\tonHide: function () {\r\n\r\n\t},\r\n\r\n\tdestroy: function () {\r\n\r\n\t}\r\n};\r\n\r\n","var defaultMapping = require(\"./keyboard_mappings/default\");\r\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\r\n\r\nmodule.exports = function(gantt){\r\n\r\n\tvar mapping = null;\r\n\r\n\treturn {\r\n\t\tsetMapping: function(map){\r\n\t\t\tmapping = map;\r\n\t\t},\r\n\t\tgetMapping: function(){\r\n\r\n\t\t\tif(mapping){\r\n\t\t\t\treturn mapping;\r\n\t\t\t}else if(gantt.config.keyboard_navigation_cells){\r\n\t\t\t\treturn keyNavMappings;\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultMapping;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n};\r\n","var getKeyboardMapping = require(\"./keyboard_mappings\");\r\nvar textEditorFactory = require(\"./editors/text\"),\r\n\tnumberEditorFactory = require(\"./editors/number\"),\r\n\tselectEditorFactory = require(\"./editors/select\"),\r\n\tdateEditorFactory = require(\"./editors/date\"),\r\n\tpredecessorEditorFactory = require(\"./editors/predecessor\");\r\nvar utils = require(\"../../../../utils/utils\");\r\nvar domHelpers = require(\"../../../../utils/dom_helpers\");\r\nvar eventable = require(\"../../../../utils/eventable\");\r\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\r\n\r\nfunction initConfigs(gantt){\r\n\tgantt.config.editor_types = {\r\n\t\ttext: new (textEditorFactory(gantt))(),\r\n\t\tnumber: new (numberEditorFactory(gantt))(),\r\n\t\tselect: new (selectEditorFactory(gantt))(),\r\n\t\tdate: new (dateEditorFactory(gantt))(),\r\n\t\tpredecessor: new (predecessorEditorFactory(gantt))()\r\n\t};\r\n}\r\n\r\nfunction create(gantt){\r\n\tvar keyboardMapping = getKeyboardMapping(gantt);\r\n\r\n\tvar eventBus = {};\r\n\teventable(eventBus);\r\n\r\n\tfunction createGridEditors(grid) {\r\n\r\n\t\tfunction _getGridCellFromNode(node){\r\n\t\t\tif(!domHelpers.isChildOf(node, grid.$grid)){\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tvar row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\r\n\t\t\tvar cell = domHelpers.locateAttribute(node, \"data-column-name\");\r\n\t\t\tif(cell){\r\n\t\t\t\tvar columnName = cell.getAttribute(\"data-column-name\");\r\n\t\t\t\tvar id = row.getAttribute(grid.$config.item_attribute);\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\tcolumnName: columnName\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tfunction _getEditorPosition(itemId, columnName) {\r\n\t\t\tvar top = grid.getItemTop(itemId);\r\n\t\t\tvar height = grid.getItemHeight(itemId);\r\n\t\t\tvar cols = grid.getGridColumns();\r\n\t\t\tvar left = 0,\r\n\t\t\t\twidth = 0;\r\n\r\n\t\t\tfor (var i = 0; i < cols.length; i++) {\r\n\t\t\t\tif (cols[i].name == columnName) {\r\n\t\t\t\t\twidth = cols[i].width;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tleft += cols[i].width;\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\ttop: top,\r\n\t\t\t\tleft: left,\r\n\t\t\t\theight: height,\r\n\t\t\t\twidth: width\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction findVisibleIndex(grid, columnName) {\r\n\t\t\tvar columns = grid.getGridColumns();\r\n\t\t\tfor (var i = 0; i < columns.length; i++){\r\n\t\t\t\tif(columns[i].name == columnName){\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfunction _createPlaceholder(itemId, columnName) {\r\n\t\t\tvar pos = _getEditorPosition(itemId, columnName);\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.className = \"gantt_grid_editor_placeholder\";\r\n\t\t\tel.setAttribute(grid.$config.item_attribute, itemId);\r\n\t\t\tel.setAttribute(\"data-column-name\", columnName);\r\n\r\n\t\t\tvar visibleIndex = findVisibleIndex(grid, columnName);\r\n\t\t\tel.setAttribute(\"data-column-index\", visibleIndex);\r\n\r\n\t\t\tel.style.cssText = [\r\n\t\t\t\t\"top:\" + pos.top + \"px\",\r\n\t\t\t\t\"left:\" + pos.left + \"px\",\r\n\t\t\t\t\"width:\" + pos.width + \"px\",\r\n\t\t\t\t\"height:\" + pos.height + \"px\"\r\n\t\t\t].join(\";\");\r\n\r\n\t\t\treturn el;\r\n\t\t}\r\n\r\n\t\tvar updateTaskDateProperties = linkedPropertiesProcessor(gantt);\r\n\r\n\t\tvar handlers = [];\r\n\t\tvar store = null;\r\n\t\tvar controller = {\r\n\t\t\t_itemId: null,\r\n\t\t\t_columnName: null,\r\n\t\t\t_editor: null,\r\n\t\t\t_editorType: null,\r\n\t\t\t_placeholder: null,\r\n\r\n\t\t\tlocateCell: _getGridCellFromNode,\r\n\t\t\tgetEditorConfig: function (columnName) {\r\n\t\t\t\tvar column = grid.getColumn(columnName);\r\n\t\t\t\treturn column.editor;\r\n\t\t\t},\r\n\r\n\t\t\tinit: function () {\r\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\r\n\t\t\t\tif(mapping.init){\r\n\t\t\t\t\tmapping.init(this, grid);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstore = grid.$gantt.getDatastore(grid.$config.bind);\r\n\r\n\t\t\t\tvar self = this;\r\n\r\n\t\t\t\thandlers.push(store.attachEvent(\"onIdChange\", function(oldId, newId){\r\n\t\t\t\t\tif(self._itemId == oldId){\r\n\t\t\t\t\t\tself._itemId = newId;\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\t\t\t\thandlers.push(store.attachEvent(\"onStoreUpdated\", function(){\r\n\t\t\t\t\tif(grid.$gantt.getState(\"batchUpdate\").batch_update){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(self.isVisible() && !store.isVisible(self._itemId)){\r\n\t\t\t\t\t\tself.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\r\n\t\t\t\tthis.init = function(){};\r\n\t\t\t},\r\n\r\n\t\t\tgetState: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\teditor: this._editor,\r\n\t\t\t\t\teditorType: this._editorType,\r\n\t\t\t\t\tplaceholder: this._placeholder,\r\n\t\t\t\t\tid: this._itemId,\r\n\t\t\t\t\tcolumnName: this._columnName\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tstartEdit: function(itemId, columnName) {\r\n\t\t\t\tif (this.isVisible()) {\r\n\t\t\t\t\tthis.save();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!store.exists(itemId)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\r\n\t\t\t\tif (gantt.isReadonly(store.getItem(itemId))) {\r\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\r\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.show(editorState.id, editorState.columnName);\r\n\t\t\t\tthis.setValue();\r\n\r\n\t\t\t\tthis.callEvent(\"onEditStart\", [editorState]);\r\n\t\t\t},\r\n\t\t\tisVisible: function(){\r\n\t\t\t\treturn !!(this._editor && domHelpers.isChildOf(this._placeholder, document.body));\r\n\t\t\t},\r\n\t\t\tshow: function (itemId, columnName) {\r\n\t\t\t\tif (this.isVisible()) {\r\n\t\t\t\t\tthis.save();\r\n\t\t\t\t}\r\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\r\n\r\n\t\t\t\tvar column = grid.getColumn(editorState.columnName);\r\n\t\t\t\tvar editorConfig = this.getEditorConfig(column.name);\r\n\t\t\t\tif(!editorConfig)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tvar editor = grid.$getConfig().editor_types[editorConfig.type];\r\n\r\n\t\t\t\tvar placeholder = _createPlaceholder(editorState.id, editorState.columnName);\r\n\t\t\t\tgrid.$grid_data.appendChild(placeholder);\r\n\t\t\t\teditor.show(editorState.id, column, editorConfig, placeholder);\r\n\t\t\t\tthis._editor = editor;\r\n\t\t\t\tthis._placeholder = placeholder;\r\n\t\t\t\tthis._itemId = editorState.id;\r\n\t\t\t\tthis._columnName = editorState.columnName;\r\n\t\t\t\tthis._editorType = editorConfig.type;\r\n\r\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\r\n\t\t\t\tif(mapping.onShow){\r\n\t\t\t\t\tmapping.onShow(this, placeholder, grid);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tsetValue: function () {\r\n\t\t\t\tvar state = this.getState();\r\n\t\t\t\tvar itemId = state.id,\r\n\t\t\t\t\tcolumnName = state.columnName;\r\n\r\n\t\t\t\tvar column = grid.getColumn(columnName);\r\n\t\t\t\tvar item = store.getItem(itemId);\r\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\r\n\r\n\t\t\t\tif(!editorConfig)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tvar value = item[editorConfig.map_to];\r\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\r\n\t\t\t\t\tvalue = store.getItem(itemId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._editor.set_value(value, itemId, column, this._placeholder);\r\n\t\t\t\tthis.focus();\r\n\t\t\t},\r\n\r\n\t\t\tfocus: function(){\r\n\t\t\t\tthis._editor.focus(this._placeholder);\r\n\t\t\t},\r\n\r\n\t\t\tgetValue: function () {\r\n\t\t\t\tvar column = grid.getColumn(this._columnName);\r\n\t\t\t\treturn this._editor.get_value(this._itemId, column, this._placeholder);\r\n\t\t\t},\r\n\r\n\t\t\t_getItemValue: function() {\r\n\t\t\t\tvar editorConfig = this.getEditorConfig(this._columnName);\r\n\r\n\t\t\t\tif(!editorConfig)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tvar item = gantt.getTask(this._itemId);\r\n\t\t\t\tvar value = item[editorConfig.map_to];\r\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\r\n\t\t\t\t\tvalue = store.getItem(this._itemId);\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t},\r\n\r\n\t\t\tisChanged: function(){\r\n\r\n\t\t\t\tvar column = grid.getColumn(this._columnName);\r\n\r\n\t\t\t\tvar value = this._getItemValue();\r\n\r\n\t\t\t\treturn this._editor.is_changed(value, this._itemId, column, this._placeholder);\r\n\t\t\t},\r\n\r\n\t\t\thide: function () {\r\n\t\t\t\tif(!this._itemId)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tvar itemId = this._itemId,\r\n\t\t\t\t\tcolumnName = this._columnName;\r\n\r\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\r\n\t\t\t\tif(mapping.onHide){\r\n\t\t\t\t\tmapping.onHide(this, this._placeholder, grid);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._itemId = null;\r\n\t\t\t\tthis._columnName = null;\r\n\t\t\t\tthis._editorType = null;\r\n\t\t\t\tif (!this._placeholder) return;\r\n\r\n\t\t\t\tif (this._editor) {\r\n\t\t\t\t\tthis._editor.hide(this._placeholder);\r\n\t\t\t\t}\r\n\t\t\t\tthis._editor = null;\r\n\t\t\t\tif (this._placeholder.parentNode) {\r\n\t\t\t\t\tthis._placeholder.parentNode.removeChild(this._placeholder);\r\n\t\t\t\t}\r\n\t\t\t\tthis._placeholder = null;\r\n\r\n\t\t\t\tthis.callEvent(\"onEditEnd\", [{id: itemId, columnName: columnName}]);\r\n\t\t\t},\r\n\t\t\tsave: function () {\r\n\t\t\t\tif(!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar itemId = this._itemId,\r\n\t\t\t\t\tcolumnName = this._columnName;\r\n\r\n\t\t\t\tif(!store.exists(itemId)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar item = store.getItem(itemId);\r\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\r\n\t\t\t\tvar editorState = {\r\n\t\t\t\t\tid: itemId,\r\n\t\t\t\t\tcolumnName: columnName,\r\n\t\t\t\t\tnewValue: this.getValue(),\r\n\t\t\t\t\toldValue: this._getItemValue()\r\n\t\t\t\t};\r\n\t\t\t\tif (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\r\n\t\t\t\t\tif (this._editor.is_valid(editorState.newValue, editorState.id, editorState.columnName, this._placeholder)) {\r\n\r\n\t\t\t\t\t\tvar mapTo = editorConfig.map_to;\r\n\t\t\t\t\t\tvar value = editorState.newValue;\r\n\t\t\t\t\t\tif (mapTo != \"auto\") {\r\n\t\t\t\t\t\t\titem[mapTo] = value;\r\n\t\t\t\t\t\t\tupdateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\r\n\r\n\t\t\t\t\t\t\tstore.updateItem(itemId);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.callEvent(\"onSave\", [editorState]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.hide();\r\n\t\t\t},\r\n\r\n\t\t\t_findEditableCell: function findEditableCell(start, direction){\r\n\t\t\t\tvar nextIndex = start;\r\n\t\t\t\tvar columns = grid.getGridColumns();\r\n\t\t\t\tvar nextColumn = columns[nextIndex];\r\n\r\n\t\t\t\tvar columnName = nextColumn ? nextColumn.name : null;\r\n\t\t\t\tif(columnName){\r\n\t\t\t\t\twhile(columnName && !this.getEditorConfig(columnName)){\r\n\t\t\t\t\t\tcolumnName = this._findEditableCell(start + direction, direction);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn columnName;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\r\n\t\t\tgetNextCell: function moveCell(dir){\r\n\t\t\t\treturn this._findEditableCell(grid.getColumnIndex(this._columnName) + dir, dir);\r\n\t\t\t},\r\n\r\n\t\t\tgetFirstCell: function getFirstCell(){\r\n\t\t\t\treturn this._findEditableCell(0, 1);\r\n\t\t\t},\r\n\r\n\t\t\tgetLastCell: function getLastCell(){\r\n\t\t\t\treturn this._findEditableCell(grid.getGridColumns().length - 1, -1);\r\n\t\t\t},\r\n\r\n\t\t\teditNextCell: function nextCell(canChangeRow){\r\n\t\t\t\tvar cell = this.getNextCell(1);\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tvar nextColumn = this.getNextCell(1);\r\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\r\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(canChangeRow && this.moveRow(1)){\r\n\t\t\t\t\tvar task = this.moveRow(1);\r\n\t\t\t\t\tcell = this.getFirstCell();\r\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\r\n\t\t\t\t\t\tthis.startEdit(task, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\teditPrevCell: function prevCell(canChangeRow){\r\n\t\t\t\tvar cell = this.getNextCell(-1);\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tvar nextColumn = this.getNextCell(-1);\r\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\r\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(canChangeRow && this.moveRow(-1)){\r\n\t\t\t\t\tvar task = this.moveRow(-1);\r\n\t\t\t\t\tcell = this.getLastCell();\r\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\r\n\t\t\t\t\t\tthis.startEdit(task, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tmoveRow: function moveRow(dir) {\r\n\t\t\t\tvar moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\r\n\t\t\t\tmoveTask = gantt.bind(moveTask, gantt);\r\n\r\n\t\t\t\tvar nextItem = moveTask(this._itemId);\r\n\t\t\t\t// skip readonly rows\r\n\t\t\t\twhile (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\r\n\t\t\t\t\tnextItem = moveTask(nextItem);\r\n\t\t\t\t}\r\n\t\t\t\treturn nextItem;\r\n\t\t\t},\r\n\r\n\t\t\teditNextRow: function nextRow(){\r\n\t\t\t\tvar row = this.getNextCell(1);\r\n\t\t\t\tif(row){\r\n\t\t\t\t\tthis.startEdit(row, this._columnName);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\teditPrevRow: function prevRow(){\r\n\t\t\t\tvar row = this.getNextCell(-1);\r\n\t\t\t\tif(row){\r\n\t\t\t\t\tthis.startEdit(row, this._columnName);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdestructor: function(){\r\n\t\t\t\thandlers.forEach(function(handlerId){\r\n\t\t\t\t\tstore.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t\tstore = null;\r\n\t\t\t\tthis.hide();\r\n\t\t\t\tthis.detachAllEvents();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tutils.mixin(controller, keyboardMapping);\r\n\t\tutils.mixin(controller, eventBus);\r\n\r\n\t\treturn controller;\r\n\t}\r\n\r\n\r\n\tvar inlineEditController = {\r\n\t\tinit: initConfigs,\r\n\t\tcreateEditors: createGridEditors\r\n\t};\r\n\r\n\tutils.mixin(inlineEditController, keyboardMapping);\r\n\tutils.mixin(inlineEditController, eventBus);\r\n\r\n\treturn inlineEditController;\r\n}\r\n\r\n\r\n\r\n\r\nmodule.exports = create;","function createResizer(gantt, grid){\r\n\treturn {\r\n\t\tinit: function(){},\r\n\t\tdoOnRender: function(){}\r\n\t};\r\n}\r\n\r\nmodule.exports = createResizer;","var createStaticBgHelper = function(){\r\n\treturn {\r\n\t\trender: function () { },\r\n\t\tdestroy: function () { }\r\n\t};\r\n};\r\n\r\nmodule.exports = {\r\n\tcreate: function(){\r\n\t\treturn createStaticBgHelper();\r\n\t}\r\n};\r\n\r\n","var __extends = require(\"../../../utils/extends\"),\r\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\r\n\tutils = require(\"../../../utils/utils\"),\r\n\tenv = require(\"../../../utils/env\"),\r\n\tCell = require(\"./cell\");\r\n\r\nvar ScrollbarCell = (function (_super) {\r\n\t\"use strict\";\r\n\r\n\t__extends(ScrollbarCell, _super);\r\n\tfunction ScrollbarCell(parent, config, factory, gantt) {\r\n\r\n\t\tvar _this = _super.apply(this, arguments) || this;\r\n\t\tthis.$config = utils.mixin(config, {scroll: \"x\"});\r\n\t\t_this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\r\n\t\t_this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\r\n\t\t_this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\r\n\t\t_this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\r\n\t\t_this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\r\n\r\n\t\tthis.$config.hidden = true;\r\n\t\tvar size = gantt.config.scroll_size;\r\n\r\n\t\tif(gantt.env.isIE){\r\n\t\t\t// full element height/width must be bigger than just a browser scrollbar,\r\n\t\t\t// otherwise the scrollbar element won't be scrolled on click\r\n\t\t\tsize += 1;\r\n\t\t}\r\n\r\n\t\tif(this._isHorizontal()){\r\n\t\t\t_this.$config.height = size;\r\n\t\t\t_this.$parent.$config.height = size;\r\n\t\t}else{\r\n\t\t\t_this.$config.width = size;\r\n\t\t\t_this.$parent.$config.width = size;\r\n\t\t}\r\n\r\n\t\tthis.$config.scrollPosition = 0;\r\n\r\n\t\t_this.$name = \"scroller\";\r\n\t\treturn _this;\r\n\t}\r\n\r\n\tScrollbarCell.prototype.init = function(container){\r\n\t\tcontainer.innerHTML = this.$toHTML();\r\n\t\tthis.$view = container.firstChild;\r\n\r\n\t\tif(!this.$view){\r\n\t\t\tthis.init();\r\n\t\t}\r\n\t\tif(this._isVertical()){\r\n\t\t\tthis._initVertical();\r\n\t\t}else{\r\n\t\t\tthis._initHorizontal();\r\n\t\t}\r\n\t\tthis._initMouseWheel();\r\n\t\tthis._initLinkedViews();\r\n\t};\r\n\r\n\tScrollbarCell.prototype.$toHTML = function () {\r\n\t\tvar className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\r\n\t\treturn \"
\";\r\n\t};\r\n\r\n\tScrollbarCell.prototype._getRootParent = function(){\r\n\t\tvar parent = this.$parent;\r\n\t\twhile(parent && parent.$parent){\r\n\t\t\tparent = parent.$parent;\r\n\t\t}\r\n\t\tif(parent){\r\n\t\t\treturn parent;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tfunction eachCell(root, res){\r\n\t\tres.push(root);\r\n\t\tif(root.$cells){\r\n\t\t\tfor(var i = 0; i < root.$cells.length; i++){\r\n\t\t\t\teachCell(root.$cells[i], res);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tScrollbarCell.prototype._eachView = function(){\r\n\t\tvar res = [];\r\n\t\teachCell(this._getRootParent(), res);\r\n\t\treturn res;\r\n\t};\r\n\r\n\tScrollbarCell.prototype._getLinkedViews = function(){\r\n\t\tvar views = this._eachView();\r\n\t\tvar res = [];\r\n\t\tfor(var i = 0; i < views.length; i++){\r\n\t\t\tif(views[i].$config && ((this._isVertical() && views[i].$config.scrollY == this.$id) || (this._isHorizontal() && views[i].$config.scrollX == this.$id)) ){\r\n\t\t\t\tres.push(views[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\r\n\tScrollbarCell.prototype._initHorizontal = function(){\r\n\t\tthis.$scroll_hor = this.$view;\r\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\r\n\r\n\t};\r\n\r\n\tScrollbarCell.prototype._initLinkedViews = function(){\r\n\t\tvar views = this._getLinkedViews();\r\n\t\tvar css = this._isVertical() ?\"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\r\n\t\tfor(var i = 0; i < views.length; i++){\r\n\t\t\t//views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\r\n\t\t\tdomHelpers.addClassName(views[i].$view || views[i].getNode(), css);\r\n\t\t}\r\n\t};\r\n\r\n\tScrollbarCell.prototype._initVertical = function(){\r\n\t\tthis.$scroll_ver = this.$view;\r\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\r\n\t};\r\n\r\n\tScrollbarCell.prototype._updateLinkedViews = function(){\r\n\t};\r\n\r\n\tScrollbarCell.prototype._initMouseWheel = function(){\r\n\t\tvar ff = env.isFF;\r\n\t\tif (ff)\r\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler);\r\n\t\telse\r\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler);\r\n\t};\r\n\r\n\r\n\r\n\r\n\tScrollbarCell.prototype.scrollHorizontally = function(left){\r\n\t\tif(this._scrolling) return;\r\n\t\tthis._scrolling = true;\r\n\r\n\t\tthis.$scroll_hor.scrollLeft = left;\r\n\t\tthis.$config.codeScrollLeft = left;\r\n\t\tleft = this.$scroll_hor.scrollLeft;\r\n\r\n\t\tvar views = this._getLinkedViews();\r\n\t\tfor(var i = 0; i < views.length; i++){\r\n\t\t\tif(views[i].scrollTo){\r\n\t\t\t\tviews[i].scrollTo(left, undefined);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar oldSize = this.$config.scrollPosition;\r\n\t\tthis.$config.scrollPosition = left;\r\n\t\tthis.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\r\n\t\tthis._scrolling = false;\r\n\t};\r\n\tScrollbarCell.prototype.scrollVertically = function(top){\r\n\t\tif(this._scrolling) return;\r\n\t\tthis._scrolling = true;\r\n\r\n\t\tthis.$scroll_ver.scrollTop = top;\r\n\t\ttop = this.$scroll_ver.scrollTop;\r\n\r\n\t\tvar views = this._getLinkedViews();\r\n\r\n\t\tfor(var i = 0; i < views.length; i++){\r\n\t\t\tif(views[i].scrollTo){\r\n\t\t\t\tviews[i].scrollTo(undefined, top);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar oldSize = this.$config.scrollPosition;\r\n\t\tthis.$config.scrollPosition = top;\r\n\t\tthis.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\r\n\t\tthis._scrolling = false;\r\n\t};\r\n\r\n\tScrollbarCell.prototype._isVertical = function(){\r\n\t\treturn this.$config.scroll == \"y\";\r\n\t};\r\n\tScrollbarCell.prototype._isHorizontal = function(){\r\n\t\treturn this.$config.scroll == \"x\";\r\n\t};\r\n\tScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\r\n\t\tif(this._isVertical() || this._scrolling){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//in safari we can catch previous onscroll after setting new value from mouse-wheel event\r\n\t\t//set delay to prevent value drifiting\r\n\t\tif ((new Date()) - ( this._wheel_time || 0 ) < 100) return true;\r\n\t\tif (this.$gantt._touch_scroll_active) return;\r\n\t\tvar left = this.$scroll_hor.scrollLeft;\r\n\r\n\t\tthis.scrollHorizontally(left);\r\n\r\n\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\r\n\t};\r\n\tScrollbarCell.prototype._outerScrollHorizontalHandler = function(e){\r\n\t\tif(this._isVertical()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tScrollbarCell.prototype.show = function(){\r\n\t\tthis.$parent.show();\r\n\t};\r\n\tScrollbarCell.prototype.hide = function(){\r\n\t\tthis.$parent.hide();\r\n\t};\r\n\r\n\tScrollbarCell.prototype._getScrollSize = function(){\r\n\t\tvar scrollSize = 0;\r\n\t\tvar outerSize = 0;\r\n\t\tvar isHorizontal = this._isHorizontal();\r\n\r\n\t\tvar linked = this._getLinkedViews();\r\n\t\tvar view;\r\n\t\tvar scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\r\n\t\t\tinnerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\r\n\t\tvar outerProperty = isHorizontal ? \"x\" : \"y\";\r\n\t\tvar offset = this._getScrollOffset();\r\n\r\n\t\tfor(var i = 0; i < linked.length; i++){\r\n\t\t\tview = linked[i];\r\n\t\t\tif(!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\r\n\r\n\t\t\tvar sizes = view.$content.getSize();\r\n\t\t\tvar cellScrollSize;\r\n\t\t\tif(sizes.hasOwnProperty(scrollProperty)){\r\n\t\t\t\tcellScrollSize = sizes[scrollProperty];\r\n\t\t\t}else{\r\n\t\t\t\tcellScrollSize = sizes[innerSizeProperty];\r\n\t\t\t}\r\n\r\n\t\t\tif(offset){\r\n\t\t\t\t// precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\r\n\t\t\t\tif(sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && (cellScrollSize > (sizes[outerProperty] - offset + 2))){\r\n\t\t\t\t\tscrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\r\n\t\t\t\t\touterSize = sizes[outerProperty];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tvar nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\r\n\t\t\t\tvar scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\r\n\t\t\t\tcellScrollSize = cellScrollSize + nonScrollableSize;\r\n\r\n\t\t\t\tif(cellScrollSize > scrollableViewPortSize && (cellScrollSize > scrollSize) ){\r\n\t\t\t\t\t//|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\r\n\r\n\t\t\t\t\tscrollSize = cellScrollSize;\r\n\t\t\t\t\touterSize = sizes[outerProperty];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\touterScroll: outerSize,\r\n\t\t\tinnerScroll: scrollSize\r\n\t\t};\r\n\t};\r\n\r\n\tScrollbarCell.prototype.scroll = function(position){\r\n\t\tif(this._isHorizontal()){\r\n\t\t\tthis.scrollHorizontally(position);\r\n\t\t}else{\r\n\t\t\tthis.scrollVertically(position);\r\n\t\t}\r\n\t};\r\n\r\n\tScrollbarCell.prototype.getScrollState = function(){\r\n\t\treturn {\r\n\t\t\tvisible: this.isVisible(),\r\n\t\t\tdirection: this.$config.scroll,\r\n\t\t\tsize: this.$config.outerSize,\r\n\t\t\tscrollSize: this.$config.scrollSize || 0,\r\n\t\t\tposition: this.$config.scrollPosition || 0\r\n\t\t};\r\n\t};\r\n\r\n\tScrollbarCell.prototype.setSize = function(width, height){\r\n\t\t_super.prototype.setSize.apply(this, arguments);\r\n\r\n\t\tvar scrollSizes = this._getScrollSize();\r\n\r\n\t\tvar ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\r\n\r\n\t\tif(scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll){\r\n\t\t\tscrollSizes.innerScroll += (ownSize - scrollSizes.outerScroll);\r\n\t\t}\r\n\t\tthis.$config.scrollSize = scrollSizes.innerScroll;\r\n\r\n\t\tthis.$config.width = width;\r\n\t\tthis.$config.height = height;\r\n\t\tthis._setScrollSize(scrollSizes.innerScroll);\r\n\t};\r\n\r\n\tScrollbarCell.prototype.isVisible = function(){\r\n\t\treturn !!(this.$parent && this.$parent.$view.parentNode);\r\n\t};\r\n\r\n\tScrollbarCell.prototype.shouldShow = function(){\r\n\t\tvar scrollSizes = this._getScrollSize();\r\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\r\n\t\t\treturn false;\r\n\t\t}else if(scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tScrollbarCell.prototype.shouldHide = function(){\r\n\t\tvar scrollSizes = this._getScrollSize();\r\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tScrollbarCell.prototype.toggleVisibility = function(){\r\n\t\tif(this.shouldHide()){\r\n\t\t\tthis.hide();\r\n\t\t}else if(this.shouldShow()){\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t};\r\n\t\r\n\tScrollbarCell.prototype._getScaleOffset = function(view){\r\n\t\tvar offset = 0;\r\n\t\tif(view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")){\r\n\t\t\toffset = view.$content.$getConfig().scale_height;\r\n\t\t}\r\n\t\treturn offset;\r\n\t};\r\n\r\n\tScrollbarCell.prototype._getScrollOffset = function(){\r\n\t\tvar offset = 0;\r\n\t\tif(this._isVertical()){\r\n\t\t\tvar parentLayout = this.$parent.$parent;\r\n\t\t\toffset = Math.max(\r\n\t\t\t\tthis._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)),\r\n\t\t\t\tthis._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id))\r\n\t\t\t\t);\r\n\t\t}else{\r\n\t\t\tvar linked = this._getLinkedViews();\r\n\r\n\t\t\tfor (var i = 0; i < linked.length; i++) {\r\n\t\t\t\tvar view = linked[i],\r\n\t\t\t\t\tvparent = view.$parent;\r\n\t\t\t\tvar cells = vparent.$cells;\r\n\r\n\t\t\t\tvar last = cells[cells.length - 1];\r\n\r\n\t\t\t\tif (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\r\n\t\t\t\t\toffset = last.$config.width;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn offset || 0;\r\n\t};\r\n\r\n\tScrollbarCell.prototype._setScrollSize = function(size){\r\n\t\tvar property = this._isHorizontal() ? \"width\" : \"height\";\r\n\t\tvar scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\r\n\r\n\t\tvar offset = this._getScrollOffset();\r\n\r\n\t\tvar node = scrollbar.firstChild;\r\n\r\n\t\tif(offset){\r\n\t\t\tif(this._isVertical()){\r\n\r\n\t\t\t\tthis.$config.outerSize = (this.$config.height - offset + 3);\r\n\t\t\t\tscrollbar.style.height = this.$config.outerSize + \"px\";\r\n\t\t\t\tscrollbar.style.top = (offset-1) + \"px\";\r\n\t\t\t\tdomHelpers.addClassName(scrollbar, this.$parent._borders.top);\r\n\t\t\t\tdomHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\r\n\t\t\t}else{\r\n\t\t\t\tthis.$config.outerSize = (this.$config.width - offset + 1);\r\n\t\t\t\tscrollbar.style.width = this.$config.outerSize + \"px\";\r\n\t\t\t\t//domHelpers.addClassName(scrollbar, this.$parent._borders.right);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tscrollbar.style.top = \"auto\";\r\n\t\t\tdomHelpers.removeClassName(scrollbar, this.$parent._borders.top);\r\n\t\t\tdomHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\r\n\t\t\tthis.$config.outerSize = this.$config.height;\r\n\t\t}\r\n\r\n\t\tnode.style[property] = size + \"px\";\r\n\t};\r\n\r\n\tScrollbarCell.prototype._scrollVerticalHandler = function (e) {\r\n\t\tif(this._scrollHorizontalHandler() || this._scrolling){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.$gantt._touch_scroll_active) return;\r\n\t\tvar top = this.$scroll_ver.scrollTop;\r\n\t\tvar prev = this._oldTop;\r\n\t\tif(top == prev) return;\r\n\r\n\t\tthis.scrollVertically(top);\r\n\r\n\t\tthis._oldTop = this.$scroll_ver.scrollTop;\r\n\r\n\t};\r\n\tScrollbarCell.prototype._outerScrollVerticalHandler = function(e){\r\n\t\tif(this._scrollHorizontalHandler()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tScrollbarCell.prototype._checkWheelTarget = function(targetNode){\r\n\t\tvar connectedViews = this._getLinkedViews().concat(this);\r\n\r\n\t\tfor(var i = 0; i < connectedViews.length; i++){\r\n\t\t\tvar node = connectedViews[i].$view;\r\n\t\t\tif(domHelpers.isChildOf(targetNode, node)){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tScrollbarCell.prototype._mouseWheelHandler = function(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tif(!this._checkWheelTarget(target))\r\n\t\t\treturn;\r\n\r\n\t\tthis._wheel_time = new Date();\r\n\r\n\t\tvar res = {};\r\n\t\tvar ff = env.isFF;\r\n\t\tvar wx = ff ? (e.deltaX*-20) : e.wheelDeltaX*2;\r\n\t\tvar wy = ff ? (e.deltaY*-40) : e.wheelDelta;\r\n\r\n\t\tif(e.shiftKey && !(e.deltaX || e.wheelDeltaX)){\r\n\t\t\t// shift+mousewheel for horizontal scroll\r\n\t\t\twx = wy*2;\r\n\t\t\twy = 0;\r\n\t\t}\r\n\r\n\t\tif (wx && Math.abs(wx) > Math.abs(wy)){\r\n\t\t\tif(this._isVertical()){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(res.x) return true;//no horisontal scroll, must not block scrolling\r\n\t\t\tif(!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\r\n\r\n\t\t\tvar dir = wx/-40;\r\n\t\t\tvar oldLeft = this._oldLeft;\r\n\t\t\tvar left = oldLeft+dir*30;\r\n\t\t\tthis.scrollHorizontally(left);\r\n\t\t\tthis.$scroll_hor.scrollLeft = left;\r\n\t\t\t// not block scroll if position hasn't changed\r\n\t\t\tif(oldLeft == this.$scroll_hor.scrollLeft){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\r\n\t\t} else {\r\n\t\t\tif(this._isHorizontal()){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(res.y) return true;//no vertical scroll, must not block scrolling\r\n\t\t\tif(!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\r\n\r\n\t\t\tvar dir = wy/-40;\r\n\t\t\tif (typeof wy == \"undefined\")\r\n\t\t\t\tdir = e.detail;\r\n\r\n\t\t\tvar oldTop = this._oldTop;\r\n\t\t\tvar top = this.$scroll_ver.scrollTop+dir*30;\r\n\r\n\t\t\t//if(!this.$gantt.config.prevent_default_scroll &&\r\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;\r\n\r\n\r\n\t\t\tthis.scrollVertically(top);\r\n\t\t\tthis.$scroll_ver.scrollTop = top;\r\n\r\n\t\t\t// not block scroll if position hasn't changed\r\n\t\t\tif(oldTop == this.$scroll_ver.scrollTop){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tthis._oldTop = this.$scroll_ver.scrollTop;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble=true;\r\n\t\treturn false;\r\n\t};\r\n\r\n\treturn ScrollbarCell;\r\n})(Cell);\r\n\r\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\r\n\tutils = require(\"../../../utils/utils\"),\r\n\tCell = require(\"./cell\");\r\n\r\nvar ViewCell = (function (_super) {\r\n\t\"use strict\";\r\n\r\n\t__extends(ViewCell, _super);\r\n\tfunction ViewCell(parent, config, factory) {\r\n\r\n\t\tvar _this = _super.apply(this, arguments) || this;\r\n\r\n\t\tif(config.view){\r\n\t\t\tif(config.id){\r\n\t\t\t\t// pass id to the nested view\r\n\t\t\t\tthis.$id = utils.uid();\r\n\t\t\t}\r\n\t\t\tvar childConfig = utils.copy(config);\r\n\t\t\tdelete childConfig.config;\r\n\t\t\tdelete childConfig.templates;\r\n\r\n\t\t\tthis.$content = this.$factory.createView(config.view, this, childConfig, this);\r\n\t\t\tif(!this.$content)\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t_this.$name = \"viewCell\";\r\n\t\treturn _this;\r\n\t}\r\n\r\n\tViewCell.prototype.destructor = function(){\r\n\t\tthis.clear();\r\n\t\t_super.prototype.destructor.call(this);\r\n\t};\r\n\r\n\tViewCell.prototype.clear = function(){\r\n\r\n\t\tthis.$initialized = false;\r\n\r\n\t\t// call destructor\r\n\t\tif (this.$content){\r\n\t\t\tvar method = this.$content.unload || this.$content.destructor;\r\n\t\t\tif (method){\r\n\t\t\t\tmethod.call(this.$content);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_super.prototype.clear.call(this);\r\n\r\n\t};\r\n\r\n\tViewCell.prototype.scrollTo = function(left, top){\r\n\r\n\t\tif(this.$content && this.$content.scrollTo){\r\n\t\t\tthis.$content.scrollTo(left, top);\r\n\t\t}else{\r\n\t\t\t_super.prototype.scrollTo.call(this, left, top);\r\n\t\t}\r\n\t};\r\n\r\n\tViewCell.prototype._setContentSize = function(x, y){\r\n\t\tvar borders = this._getBorderSizes();\r\n\t\tif(typeof x === \"number\"){\r\n\t\t\tvar outerX = x + borders.horizontal;\r\n\t\t\tthis.$config.width = outerX;\r\n\t\t}\r\n\t\tif(typeof y === \"number\"){\r\n\t\t\tvar outerY = y + borders.vertical;\r\n\t\t\tthis.$config.height = outerY;\r\n\t\t}\r\n\t};\r\n\r\n\tViewCell.prototype.setSize = function(x, y){\r\n\t\t_super.prototype.setSize.call(this, x, y);\r\n\r\n\t\tif(!this.$preResize && this.$content) {\r\n\t\t\tif (!this.$initialized) {\r\n\t\t\t\tthis.$initialized = true;\r\n\t\t\t\tvar header = this.$view.childNodes[0];\r\n\t\t\t\tvar content = this.$view.childNodes[1];\r\n\t\t\t\tif(!content) content = header;\r\n\r\n\t\t\t\t/*if(this.$content.$config){\r\n\t\t\t\t\tthis.$content.$config.width = this.$lastSize.contentX;\r\n\t\t\t\t\tthis.$content.$config.height = this.$lastSize.contentY;\r\n\t\t\t\t}*/\r\n\t\t\t\tthis.$content.init(content);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tViewCell.prototype.setContentSize = function(){\r\n\t\tif(!this.$preResize && this.$content) {\r\n\t\t\tif (this.$initialized) {\r\n\t\t\t\tthis.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tViewCell.prototype.getContentSize = function(){\r\n\t\tvar size = _super.prototype.getContentSize.call(this);\r\n\r\n\t\tif(this.$content && this.$initialized){\r\n\t\t\tvar childSize = this.$content.getSize();\r\n\t\t\tsize.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\r\n\t\t\tsize.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\r\n\t\t}\r\n\r\n\t\tvar borders = this._getBorderSizes();\r\n\t\tsize.width += borders.horizontal;\r\n\t\tsize.height += borders.vertical;\r\n\r\n\t\treturn size;\r\n\t};\r\n\r\n\treturn ViewCell;\r\n}(Cell));\r\n\r\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\r\n\tLayout = require(\"./layout\"),\r\n\tCell = require(\"./cell\");\r\n\r\nvar ViewLayout = (function (_super) {\r\n\t\"use strict\";\r\n\r\n\t__extends(ViewLayout, _super);\r\n\tfunction ViewLayout(parent, config, factory) {\r\n\t\tvar _this = _super.apply(this, arguments) || this;\r\n\t\tfor (var i = 0; i < _this.$cells.length; i++) {\r\n\t\t\t_this.$cells[i].$config.hidden = (i !== 0);\r\n\t\t}\r\n\t\t_this.$cell = _this.$cells[0];\r\n\t\t_this.$name = \"viewLayout\";\r\n\r\n\t\treturn _this;\r\n\t}\r\n\tViewLayout.prototype.cell = function (id) {\r\n\t\tvar cell = _super.prototype.cell.call(this, id);\r\n\t\tif (!cell.$view) {\r\n\t\t\tthis.$fill(null, this);\r\n\t\t}\r\n\t\treturn cell;\r\n\t};\r\n\tViewLayout.prototype.moveView = function (view) {\r\n\t\tvar body = this.$view;\r\n\t\tif (this.$cell) {\r\n\t\t\tthis.$cell.$config.hidden = true;\r\n\t\t\tbody.removeChild(this.$cell.$view);\r\n\t\t}\r\n\t\tthis.$cell = view;\r\n\t\tbody.appendChild(view.$view);\r\n\t};\r\n\tViewLayout.prototype.setSize = function (x, y) {\r\n\t\tCell.prototype.setSize.call(this, x, y);\r\n\t};\r\n\r\n\tViewLayout.prototype.setContentSize = function(){\r\n\t\tvar size = this.$lastSize;\r\n\t\tthis.$cell.setSize(size.contentX, size.contentY);\r\n\t};\r\n\r\n\tViewLayout.prototype.getSize = function () {\r\n\t\tvar sizes = _super.prototype.getSize.call(this);\r\n\t\tif (this.$cell) {\r\n\t\t\tvar cellSize = this.$cell.getSize();\r\n\t\t\tif (this.$config.byMaxSize) {\r\n\t\t\t\tfor (var i = 0; i < this.$cells.length; i++) {\r\n\t\t\t\t\tvar otherCell = this.$cells[i].getSize();\r\n\t\t\t\t\tfor (var cell in cellSize) {\r\n\t\t\t\t\t\tcellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (var size in sizes) {\r\n\t\t\t\tsizes[size] = sizes[size] || cellSize[size];\r\n\t\t\t}\r\n\t\t\tsizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\r\n\t\t}\r\n\t\treturn sizes;\r\n\t};\r\n\treturn ViewLayout;\r\n}(Layout));\r\n\r\nmodule.exports = ViewLayout;","module.exports = function(viewport, box){\r\n\tif(!box){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif(box.left > viewport.x_end || box.left + box.width < viewport.x){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif(box.top > viewport.y_end || box.top + box.height < viewport.y){\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn true;\r\n};","var isInViewPort = require(\"./viewport/is_in_viewport\");\r\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\r\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\r\nvar rendererFactory = function(gantt){\r\n\tvar services = gantt.$services;\r\n\r\n\t//hash of dom elements is needed to redraw single bar/link\r\n\tvar task_area_pulls = {},\r\n\t\ttask_area_renderers = {};\r\n\r\n\tfunction getView(layer){\r\n\t\tvar view = null;\r\n\t\tif (typeof layer.view === \"string\") {\r\n\t\t\tview = gantt.$ui.getView(layer.view);\r\n\t\t} else if (layer.view) {\r\n\t\t\tview = layer.view;\r\n\t\t}\r\n\t\treturn view;\r\n\t}\r\n\r\n\tfunction getRenderer(id, layer, node) {\r\n\r\n\t\tif (task_area_renderers[id])\r\n\t\t\treturn task_area_renderers[id];\r\n\r\n\t\tif (!layer.renderer)\r\n\t\t\tgantt.assert(false, \"Invalid renderer call\");\r\n\r\n\t\tvar renderMethod = null;\r\n\t\tvar updateMethod = null;\r\n\t\tvar getRectangle = null;\r\n\r\n\t\tif(typeof layer.renderer === \"function\"){\r\n\t\t\trenderMethod = layer.renderer;\r\n\t\t\tgetRectangle = basicGetRectangle;\r\n\t\t}else{\r\n\t\t\trenderMethod = layer.renderer.render;\r\n\t\t\tupdateMethod = layer.renderer.update;\r\n\t\t\tgetRectangle = layer.renderer.getRectangle;\r\n\t\t\tif (!getRectangle && getRectangle !== null) {\r\n\t\t\t\tgetRectangle = basicGetRectangle;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar filter = layer.filter;\r\n\r\n\t\tif (node)\r\n\t\t\tnode.setAttribute(services.config().layer_attribute, true);\r\n\r\n\t\ttask_area_renderers[id] = {\r\n\t\t\trender_item: function (item, container, viewPort) {\r\n\t\t\t\tcontainer = container || node;\r\n\r\n\t\t\t\tif (filter) {\r\n\t\t\t\t\tif (!filter(item)) {\r\n\t\t\t\t\t\tthis.remove_item(item.id);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar view = getView(layer);\r\n\t\t\t\tvar rendererViewPort = viewPort;\r\n\t\t\t\tif(!rendererViewPort && view && view.$getConfig().smart_rendering){\r\n\t\t\t\t\trendererViewPort = view.getViewPort();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar dom = null;\r\n\t\t\t\tif(!isLegacyRender(gantt) && getRectangle && rendererViewPort){\r\n\t\t\t\t\tif(isInViewPort(rendererViewPort, getRectangle(item, view, gantt))){\r\n\t\t\t\t\t\tdom = renderMethod.call(gantt, item, view, rendererViewPort);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdom = renderMethod.call(gantt, item, view, rendererViewPort);\r\n\t\t\t\t}\r\n\t\t\t\tthis.append(item, dom, container);\r\n\t\t\t},\r\n\r\n\t\t\tclear: function (container) {\r\n\r\n\t\t\t\tthis.rendered = task_area_pulls[id] = {};\r\n\t\t\t\tif(!layer.append)\r\n\t\t\t\t\tthis.clear_container(container);\r\n\t\t\t},\r\n\t\t\tclear_container: function (container) {\r\n\t\t\t\tcontainer = container || node;\r\n\t\t\t\tif (container)\r\n\t\t\t\t\tcontainer.innerHTML = \"\";\r\n\t\t\t},\r\n\t\t\trender_items: function (items, container) {\r\n\t\t\t\tcontainer = container || node;\r\n\r\n\t\t\t\tvar buffer = document.createDocumentFragment();\r\n\t\t\t\tthis.clear(container);\r\n\r\n\t\t\t\tvar viewPort = null;\r\n\t\t\t\tvar view = getView(layer);\r\n\t\t\t\tif(view && view.$getConfig().smart_rendering){\r\n\t\t\t\t\tviewPort = view.getViewPort();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\r\n\t\t\t\t\tthis.render_item(items[i], buffer, viewPort);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontainer.appendChild(buffer, container);\r\n\t\t\t},\r\n\t\t\tupdate_items: function (items, container) {\r\n\t\t\t\tvar view = getView(layer);\r\n\t\t\t\tif(!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.rendered){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!getRectangle){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontainer = container || node;\r\n\r\n\t\t\t\tvar buffer = document.createDocumentFragment();\r\n\r\n\t\t\t\tvar viewPort = null;\r\n\t\t\t\tif(view){\r\n\t\t\t\t\tviewPort = view.getViewPort();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\r\n\t\t\t\t\tvar item = items[i];\r\n\t\t\t\t\tvar itemNode = this.rendered[item.id];\r\n\t\t\t\t\tif (itemNode && itemNode.parentNode) {\r\n\t\t\t\t\t\tif (!isInViewPort(viewPort, getRectangle(item, view, gantt))) {\r\n\t\t\t\t\t\t\tthis.hide(item.id);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif(updateMethod){\r\n\t\t\t\t\t\t\t\tupdateMethod.call(gantt, item, itemNode, view, viewPort);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.restore(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.render_item(items[i], buffer, viewPort);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(buffer.childNodes.length){\r\n\t\t\t\t\tcontainer.appendChild(buffer, container);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tappend: function (item, node, container) {\r\n\t\t\t\tif (!node) {\r\n\t\t\t\t\tif (this.rendered[item.id]) {\r\n\t\t\t\t\t\tthis.remove_item(item.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.rendered[item.id] && this.rendered[item.id].parentNode) {\r\n\t\t\t\t\tthis.replace_item(item.id, node);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontainer.appendChild(node);\r\n\t\t\t\t}\r\n\t\t\t\tthis.rendered[item.id] = node;\r\n\r\n\t\t\t},\r\n\t\t\treplace_item: function (item_id, newNode) {\r\n\t\t\t\tvar item = this.rendered[item_id];\r\n\t\t\t\tif (item && item.parentNode) {\r\n\t\t\t\t\titem.parentNode.replaceChild(newNode, item);\r\n\t\t\t\t}\r\n\t\t\t\tthis.rendered[item_id] = newNode;\r\n\t\t\t},\r\n\t\t\tremove_item: function (item_id) {\r\n\t\t\t\tthis.hide(item_id);\r\n\t\t\t\tdelete this.rendered[item_id];\r\n\t\t\t},\r\n\t\t\thide: function (item_id) {\r\n\t\t\t\tvar item = this.rendered[item_id];\r\n\t\t\t\tif (item && item.parentNode) {\r\n\t\t\t\t\titem.parentNode.removeChild(item);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trestore: function (item) {\r\n\t\t\t\tvar dom = this.rendered[item.id];\r\n\t\t\t\tif (dom) {\r\n\t\t\t\t\tif (!dom.parentNode) {\r\n\t\t\t\t\t\tthis.append(item, dom, node);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.render_item(item, node);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tchange_id: function (oldid, newid) {\r\n\t\t\t\tthis.rendered[newid] = this.rendered[oldid];\r\n\t\t\t\tdelete this.rendered[oldid];\r\n\t\t\t},\r\n\t\t\trendered: task_area_pulls[id],\r\n\t\t\tnode: node,\r\n\t\t\tdestructor: function () {\r\n\t\t\t\tthis.clear();\r\n\t\t\t\tdelete task_area_renderers[id];\r\n\t\t\t\tdelete task_area_pulls[id];\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn task_area_renderers[id];\r\n\t}\r\n\r\n\r\n\tfunction clearRenderers() {\r\n\t\tfor (var i in task_area_renderers) {\r\n\t\t\tgetRenderer(i).destructor();\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetRenderer: getRenderer,\r\n\t\tclearRenderers: clearRenderers\r\n\t};\r\n\r\n};\r\n\r\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\r\nvar utils = require(\"../../../utils/utils\"),\r\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\r\n\tisLegacyRender = require(\"./is_legacy_smart_render\");\r\n\r\nvar layerFactory = function(gantt){\r\n\r\n\tvar renderFactory = renderFactoryProvider(gantt);\r\n\treturn {\r\n\tcreateGroup: function (getContainer, relativeRoot, defaultFilters, initLayer) {\r\n\r\n\t\tvar renderGroup = {\r\n\t\t\ttempCollection: [],\r\n\t\t\trenderers: {},\r\n\t\t\tcontainer: getContainer,\r\n\t\t\tfilters: [],\r\n\t\t\tgetLayers: function () {\r\n\t\t\t\tthis._add();// add pending layers\r\n\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i in this.renderers) {\r\n\t\t\t\t\tres.push(this.renderers[i]);\r\n\t\t\t\t}\r\n\t\t\t\treturn res;\r\n\t\t\t},\r\n\t\t\tgetLayer: function (id) {\r\n\t\t\t\treturn this.renderers[id];\r\n\t\t\t},\r\n\t\t\t_add: function (layer) {\r\n\t\t\t\tif (layer) {\r\n\t\t\t\t\tlayer.id = layer.id || utils.uid();\r\n\t\t\t\t\tthis.tempCollection.push(layer);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar container = this.container();\r\n\r\n\t\t\t\tvar pending = this.tempCollection;\r\n\t\t\t\tfor (var i = 0; i < pending.length; i++) {\r\n\t\t\t\t\tlayer = pending[i];\r\n\r\n\t\t\t\t\tif (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\r\n\r\n\t\t\t\t\tvar node = layer.container,\r\n\t\t\t\t\t\tid = layer.id,\r\n\t\t\t\t\t\ttopmost = layer.topmost;\r\n\t\t\t\t\tif (!node.parentNode) {\r\n\t\t\t\t\t\t//insert on top or below the tasks\r\n\t\t\t\t\t\tif (topmost) {\r\n\t\t\t\t\t\t\tcontainer.appendChild(node);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar rel = relativeRoot ? relativeRoot() : container.firstChild;\r\n\t\t\t\t\t\t\tif (rel)\r\n\t\t\t\t\t\t\t\tcontainer.insertBefore(node, rel);\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\tcontainer.appendChild(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.renderers[id] = renderFactory.getRenderer(\r\n\t\t\t\t\t\tid,\r\n\t\t\t\t\t\tlayer,\r\n\t\t\t\t\t\tnode\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (initLayer) {\r\n\t\t\t\t\t\tinitLayer(layer, gantt);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.tempCollection.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\taddLayer: function (config) {\r\n\t\t\t\tif(config){\r\n\t\t\t\t\tif(typeof config == \"function\"){\r\n\t\t\t\t\t\tconfig = {renderer: config};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(config.filter === undefined){\r\n\t\t\t\t\t\tconfig.filter = mergeFilters(defaultFilters || []);\r\n\t\t\t\t\t}else if(config.filter instanceof Array){\r\n\t\t\t\t\t\tconfig.filter.push(defaultFilters);\r\n\t\t\t\t\t\tconfig.filter = mergeFilters(config.filter);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!config.container){\r\n\t\t\t\t\t\tconfig.container = document.createElement(\"div\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar self = this;\r\n\t\t\t\t\tconfig.requestUpdate = function(){\r\n\t\t\t\t\t\tif(gantt.config.smart_rendering && !isLegacyRender(gantt)){\r\n\t\t\t\t\t\t\tif(self.renderers[config.id]){\r\n\t\t\t\t\t\t\t\tself.onUpdateRequest(self.renderers[config.id]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._add(config);\r\n\t\t\t\treturn (config ? config.id : undefined);\r\n\t\t\t},\r\n\t\t\tonUpdateRequest: function(layer){\r\n\r\n\t\t\t},\r\n\r\n\t\t\teachLayer: function(code){\r\n\t\t\t\tfor (var i in this.renderers) {\r\n\t\t\t\t\tcode(this.renderers[i]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tremoveLayer: function (id) {\r\n\t\t\t\tif(!this.renderers[id])\r\n\t\t\t\t\treturn;\r\n\t\t\t\tthis.renderers[id].destructor();\r\n\t\t\t\tdelete this.renderers[id];\r\n\t\t\t},\r\n\t\t\tclear: function () {\r\n\t\t\t\tfor (var i in this.renderers) {\r\n\t\t\t\t\tthis.renderers[i].destructor();\r\n\t\t\t\t}\r\n\t\t\t\tthis.renderers = {};\r\n\t\t\t}//,\r\n\t\t\t//prepareConfig: prepareConfig\r\n\t\t};\r\n\r\n\t\tgantt.attachEvent(\"onDestroy\", function(){\r\n\t\t\trenderGroup.clear();\r\n\t\t\trenderGroup = null;\r\n\t\t});\r\n\r\n\t\treturn renderGroup;\r\n\t}\r\n};};\r\n\r\n\r\nfunction mergeFilters(filter_methods){\r\n\tif(!(filter_methods instanceof Array)){\r\n\t\tfilter_methods = Array.prototype.slice.call(arguments, 0);\r\n\t}\r\n\r\n\treturn function(obj){\r\n\t\tvar res = true;\r\n\t\tfor(var i = 0, len = filter_methods.length; i < len; i++){\r\n\t\t\tvar filter_method = filter_methods[i];\r\n\t\t\tif(filter_method){\r\n\t\t\t\tres = res && (filter_method(obj.id, obj) !== false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n}\r\n\r\n\r\nmodule.exports = layerFactory;\r\n","var createLayerFactory = require(\"./render/layer_engine\");\r\n\r\nfunction initLayer(layer, gantt){\r\n\tif(!layer.view){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar view = layer.view;\r\n\tif(typeof view === \"string\"){\r\n\t\tview = gantt.$ui.getView(view);\r\n\t}\r\n\r\n\tif(view && view.attachEvent){\r\n\t\tview.attachEvent(\"onScroll\", function(){\r\n\t\t\tif(layer.requestUpdate){\r\n\t\t\t\tlayer.requestUpdate();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nvar createLayerEngine = function(gantt){\r\n\tvar factory = createLayerFactory(gantt);\r\n\treturn {\r\n\t\tgetDataRender: function(name){\r\n\t\t\treturn gantt.$services.getService(\"layer:\" + name) || null;\r\n\t\t},\r\n\t\tcreateDataRender: function(config){\r\n\t\t\tvar name = config.name,\r\n\t\t\t\tdefaultContainer = config.defaultContainer,\r\n\t\t\t\tpreviusSiblingContainer = config.defaultContainerSibling;\r\n\r\n\t\t\tvar layers = factory.createGroup(\r\n\t\t\t\tdefaultContainer,\r\n\t\t\t\tpreviusSiblingContainer,\r\n\t\t\t\tfunction(itemId, item){\r\n\t\t\t\t\tif(layers.filters){\r\n\t\t\t\t\t\tfor(var i = 0; i < layers.filters.length; i++){\r\n\t\t\t\t\t\t\tif(layers.filters[i](itemId, item) === false){\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tinitLayer\r\n\t\t\t);\r\n\r\n\t\t\tgantt.$services.setService(\"layer:\" + name, function(){\r\n\t\t\t\treturn layers;\r\n\t\t\t});\r\n\r\n\t\t\tgantt.attachEvent(\"onGanttReady\", function () {\r\n\t\t\t\tlayers.addLayer();// init layers on start\r\n\t\t\t});\r\n\r\n\t\t\treturn layers;\r\n\t\t},\r\n\t\tinit: function(){\r\n\t\t\tvar taskLayers = this.createDataRender({\r\n\t\t\t\tname: \"task\",\r\n\t\t\t\tdefaultContainer: function(){\r\n\t\t\t\t\tif(gantt.$task_data){\r\n\t\t\t\t\t\treturn gantt.$task_data;\r\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\r\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tdefaultContainerSibling: function(){\r\n\t\t\t\t\tif(gantt.$task_links){\r\n\t\t\t\t\t\treturn gantt.$task_links;\r\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\r\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_links;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfilter: function(item){\r\n\r\n\t\t\t\t}\r\n\t\t\t}, gantt);\r\n\r\n\t\t\tvar linkLayers = this.createDataRender({\r\n\t\t\t\tname: \"link\",\r\n\t\t\t\tdefaultContainer: function(){\r\n\t\t\t\t\tif(gantt.$task_data){\r\n\t\t\t\t\t\treturn gantt.$task_data;\r\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\r\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, gantt);\r\n\r\n\t\t\treturn {\r\n\t\t\t\taddTaskLayer: function(config){\r\n\t\t\t\t\tif(typeof config === \"function\"){\r\n\t\t\t\t\t\tconfig = {\r\n\t\t\t\t\t\t\trenderer: config\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconfig.view = \"timeline\";\r\n\r\n\t\t\t\t\treturn taskLayers.addLayer(config);\r\n\t\t\t\t},\r\n\r\n\t\t\t\t_getTaskLayers: function(){\r\n\t\t\t\t\treturn taskLayers.getLayers();\r\n\t\t\t\t},\r\n\t\t\t\tremoveTaskLayer: function(id){\r\n\t\t\t\t\ttaskLayers.removeLayer(id);\r\n\t\t\t\t},\r\n\r\n\t\t\t\t_clearTaskLayers: function(){\r\n\t\t\t\t\ttaskLayers.clear();\r\n\t\t\t\t},\r\n\t\t\t\taddLinkLayer: function(config){\r\n\t\t\t\t\tif(typeof config === \"function\"){\r\n\t\t\t\t\t\tconfig = {\r\n\t\t\t\t\t\t\trenderer: config\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconfig.view = \"timeline\";\r\n\t\t\t\t\treturn linkLayers.addLayer(config);\r\n\t\t\t\t},\r\n\r\n\t\t\t\t_getLinkLayers: function(){\r\n\t\t\t\t\treturn linkLayers.getLayers();\r\n\t\t\t\t},\r\n\t\t\t\tremoveLinkLayer: function(id){\r\n\t\t\t\t\tlinkLayers.removeLayer(id);\r\n\t\t\t\t},\r\n\r\n\t\t\t\t_clearLinkLayers: function(){\r\n\t\t\t\t\tlinkLayers.clear();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n};\r\n\r\nmodule.exports = createLayerEngine;","var domHelpers = require(\"../../utils/dom_helpers\");\r\n\r\nvar createMouseHandler = (function(domHelpers) {\r\n\treturn function (gantt) {\r\n\t\tvar eventHandlers = {\r\n\t\t\t\"click\": {},\r\n\t\t\t\"doubleclick\": {},\r\n\t\t\t\"contextMenu\": {}\r\n\t\t};\r\n\r\n\t\tfunction addEventTarget(event, className, handler, root) {\r\n\t\t\tif(!eventHandlers[event][className]){\r\n\t\t\t\teventHandlers[event][className] = [];\r\n\t\t\t}\r\n\r\n\t\t\teventHandlers[event][className].push({\r\n\t\t\t\thandler: handler,\r\n\t\t\t\troot: root\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction callHandler(eventName, className, root, args) {\r\n\t\t\tvar handlers = eventHandlers[eventName][className];\r\n\t\t\tif(handlers){\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tif(!(root || handlers[i].root) || handlers[i].root === root){\r\n\t\t\t\t\t\thandlers[i].handler.apply(this, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onClick(e) {\r\n\t\t\te = e || window.event;\r\n\t\t\tvar id = gantt.locate(e);\r\n\r\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.click);\r\n\t\t\tvar res = true;\r\n\t\t\tif (id !== null) {\r\n\t\t\t\tres = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.callEvent(\"onEmptyClick\", [e]);\r\n\t\t\t}\r\n\r\n\t\t\tif (res) {\r\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\r\n\t\t\t\tif (!default_action)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tif (id && gantt.getTask(id) && gantt.config.select_task && !gantt.config.multiselect) {\r\n\t\t\t\t\tgantt.selectTask(id);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onContextMenu(e) {\r\n\t\t\te = e || window.event;\r\n\t\t\tvar src = e.target || e.srcElement,\r\n\t\t\t\ttaskId = gantt.locate(src),\r\n\t\t\t\tlinkId = gantt.locate(src, gantt.config.link_attribute);\r\n\r\n\t\t\tvar res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\r\n\t\t\tif (!res) {\r\n\t\t\t\tif (e.preventDefault)\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\telse\r\n\t\t\t\t\te.returnValue = false;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\tfunction findEventHandlers(e, hash){\r\n\t\t\tvar trg = e.target || e.srcElement;\r\n\t\t\tvar handlers = [];\r\n\t\t\twhile (trg) {\r\n\t\t\t\tvar css = domHelpers.getClassName(trg);\r\n\t\t\t\tif (css) {\r\n\t\t\t\t\tcss = css.split(\" \");\r\n\t\t\t\t\tfor (var i = 0; i < css.length; i++) {\r\n\t\t\t\t\t\tif (!css[i]) continue;\r\n\t\t\t\t\t\tif (hash[css[i]]) {\r\n\t\t\t\t\t\t\tvar delegateHandlers = hash[css[i]];\r\n\r\n\t\t\t\t\t\t\tfor(var h = 0; h < delegateHandlers.length; h++){\r\n\t\t\t\t\t\t\t\tif(delegateHandlers[h].root){\r\n\t\t\t\t\t\t\t\t\tif(!domHelpers.isChildOf(trg, delegateHandlers[h].root)){\r\n\t\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\thandlers.push(delegateHandlers[h].handler);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttrg = trg.parentNode;\r\n\t\t\t}\r\n\t\t\treturn handlers;\r\n\t\t}\r\n\r\n\t\tfunction callEventHandlers(handlers, e, id){\r\n\t\t\tvar res = true;\r\n\r\n\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\tvar handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\r\n\t\t\t\tres = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\r\n\t\tfunction onDoubleClick(e) {\r\n\t\t\te = e || window.event;\r\n\t\t\tvar id = gantt.locate(e);\r\n\r\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.doubleclick);\r\n\t\t\t// when doubleclick fired not on task, id === null\r\n\t\t\tvar res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\r\n\t\t\tif (res) {\r\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\r\n\t\t\t\tif (!default_action)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tif (id !== null && gantt.getTask(id)) {\r\n\t\t\t\t\tif (res && gantt.config.details_on_dblclick) {\r\n\t\t\t\t\t\tgantt.showLightbox(id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onMouseMove(e) {\r\n\t\t\tif (gantt.checkEvent(\"onMouseMove\")) {\r\n\t\t\t\tvar id = gantt.locate(e);\r\n\t\t\t\tgantt._last_move_event = e;\r\n\t\t\t\tgantt.callEvent(\"onMouseMove\", [id, e]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction detach(eventName, className, handler, root) {\r\n\t\t\tif (eventHandlers[eventName] && eventHandlers[eventName][className]) {\r\n\t\t\t\tvar handlers = eventHandlers[eventName];\r\n\t\t\t\tvar elementHandlers = handlers[className];\r\n\t\t\t\tfor(var i = 0; i < elementHandlers.length; i++){\r\n\t\t\t\t\tif(elementHandlers[i].root == root){\r\n\t\t\t\t\t\telementHandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(!elementHandlers.length){\r\n\t\t\t\t\tdelete handlers[className];\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar domEvents = gantt._createDomEventScope();\r\n\r\n\t\tfunction reset(node){\r\n\r\n\t\t\tdomEvents.detachAll();\r\n\r\n\t\t\tif(node){\r\n\t\t\t\tdomEvents.attach(node, \"click\", onClick);\r\n\t\t\t\tdomEvents.attach(node, \"dblclick\", onDoubleClick);\r\n\t\t\t\tdomEvents.attach(node, \"mousemove\", onMouseMove);\r\n\t\t\t\tdomEvents.attach(node, \"contextmenu\", onContextMenu);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\treturn {\r\n\t\t\treset: reset,\r\n\t\t\tglobal: function(event, classname, handler){\r\n\t\t\t\taddEventTarget(event, classname, handler, null);\r\n\t\t\t},\r\n\t\t\tdelegate: addEventTarget,\r\n\t\t\tdetach: detach,\r\n\t\t\tcallHandler: callHandler,\r\n\t\t\tonDoubleClick: onDoubleClick,\r\n\t\t\tonMouseMove: onMouseMove,\r\n\t\t\tonContextMenu: onContextMenu,\r\n\t\t\tonClick: onClick,\r\n\t\t\tdestructor: function(){\r\n\t\t\t\treset();\r\n\t\t\t\teventHandlers = null;\r\n\t\t\t\tdomEvents = null;\r\n\t\t\t}\r\n\r\n\t\t};\r\n\t};\r\n\r\n})(domHelpers);\r\n\r\n\r\nmodule.exports = {\r\n\tinit:createMouseHandler\r\n};","var utils = require(\"../../utils/utils\");\r\n\r\nfunction ViewSettings(config){\r\n\tutils.mixin(this, config, true);\r\n}\r\n\r\n\r\nfunction extendSettings (store, parentSettings){\r\n\tvar own = this.$config[store];\r\n\r\n\tif(own){\r\n\t\tif(own instanceof ViewSettings){\r\n\t\t\treturn own;\r\n\t\t}else{\r\n\t\t\tViewSettings.prototype = parentSettings;\r\n\t\t\tthis.$config[store] = new ViewSettings(own);\r\n\t\t\treturn this.$config[store];\r\n\t\t}\r\n\t}else{\r\n\t\treturn parentSettings;\r\n\t}\r\n}\r\n\r\nvar configurable = function(parentView){\r\n\tvar parentConfig,\r\n\t\tparentTemplates;\r\n\r\n\treturn {\r\n\t\t$getConfig: function(){\r\n\t\t\tif(!parentConfig){\r\n\t\t\t\tparentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\r\n\t\t\t}\r\n\t\t\tif(!this.$config.config){\r\n\t\t\t\treturn parentConfig;\r\n\t\t\t}else{\r\n\t\t\t\treturn extendSettings.call(this, \"config\", parentConfig);\r\n\t\t\t}\r\n\t\t},\r\n\t\t$getTemplates: function(){\r\n\t\t\tif(!parentTemplates){\r\n\t\t\t\tparentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\r\n\t\t\t}\r\n\t\t\tif(!this.$config.templates){\r\n\t\t\t\treturn parentTemplates;\r\n\t\t\t}else{\r\n\t\t\t\treturn extendSettings.call(this, \"templates\", parentTemplates);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n};\r\n\r\nmodule.exports = function(obj, parent){\r\n\tutils.mixin(obj, configurable(parent));\r\n};","var utils = require(\"../../utils/utils\"),\r\n\tconfigurable = require(\"./configurable\");\r\n\r\nvar uiFactory = function createFactory(gantt){\r\n\tvar views = {};\r\n\r\n\tfunction ui(cell, parentView) {\r\n\t\tvar content;\r\n\t\tvar view = \"cell\";\r\n\t\tif (cell.view){\r\n\t\t\tview = \"viewcell\";\r\n\t\t}else if (cell.resizer) {\r\n\t\t\tview = \"resizer\";\r\n\t\t}\r\n\t\telse if (cell.rows || cell.cols) {\r\n\t\t\tview = \"layout\";\r\n\t\t}\r\n\t\telse if (cell.views) {\r\n\t\t\tview = \"multiview\";\r\n\t\t}\r\n\r\n\t\tcontent = createView.call(this, view, null, cell, parentView);\r\n\t\treturn content;\r\n\t}\r\n\t\r\n\tvar createdViews = {};\r\n\r\n\tfunction createView(name, parent, config, parentView) {\r\n\t\tvar creator = views[name];\r\n\r\n\t\tif(!creator || !creator.create)\r\n\t\t\treturn false;\r\n\r\n\t\tif(name == \"resizer\" && !config.mode){\r\n\t\t\tif(parentView.$config.cols){\r\n\t\t\t\tconfig.mode = \"x\";\r\n\t\t\t}else{\r\n\t\t\t\tconfig.mode = \"y\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll){\r\n\t\t\tif(parentView.$config.cols){\r\n\t\t\t\tconfig.scroll = \"y\";\r\n\t\t\t}else{\r\n\t\t\t\tconfig.scroll = \"x\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar config = utils.copy(config);\r\n\r\n\t\tif(!config.id && !createdViews[config.view]){\r\n\t\t\tconfig.id = config.view;\r\n\t\t}\r\n\r\n\t\tif(config.id && !config.css){\r\n\t\t\tconfig.css = config.id+\"_cell\";\r\n\t\t}\r\n\r\n\t\tvar view = new creator.create(parent, config, this, gantt);\r\n\r\n\t\tif(creator.configure){\r\n\t\t\tcreator.configure(view);\r\n\t\t}\r\n\r\n\t\tconfigurable(view, parentView);\r\n\t\tif(!view.$id){\r\n\t\t\tview.$id = config.id || gantt.uid();\r\n\t\t}\r\n\r\n\t\tif(!view.$parent && typeof parent == \"object\"){\r\n\t\t\tview.$parent = parent;\r\n\t\t}\r\n\t\tif(!view.$config){\r\n\t\t\tview.$config = config;\r\n\t\t}\r\n\r\n\t\tif(createdViews[view.$id]){\r\n\t\t\tview.$id = gantt.uid();\r\n\t\t}\r\n\r\n\t\tcreatedViews[view.$id] = view;\r\n\r\n\t\treturn view;\r\n\t}\r\n\r\n\tfunction reset(){\r\n\t\tcreatedViews = {};\r\n\t}\r\n\r\n\tfunction register(name, viewConstructor, configure){\r\n\t\tviews[name] = {create: viewConstructor, configure: configure};\r\n\t}\r\n\r\n\tfunction getView(id){\r\n\t\treturn createdViews[id];\r\n\t}\r\n\r\n\tvar factory = {\r\n\t\tinitUI:ui,\r\n\t\treset: reset,\r\n\t\tregisterView: register,\r\n\t\tcreateView: createView,\r\n\t\tgetView: getView\r\n\t};\r\n\r\n\treturn factory;\r\n};\r\n\r\nmodule.exports = {\r\n\tcreateFactory: uiFactory\r\n};\r\n\r\n","var uiFactory = require(\"./ui_factory\"),\r\n\tmouseEvents = require(\"./mouse\"),\r\n\tcreateLayers = require(\"./gantt_layers\"),\r\n\tCell = require(\"./layout/cell\"),\r\n\tLayout = require(\"./layout/layout\"),\r\n\tViewLayout = require(\"./layout/view_layout\"),\r\n\tViewCell = require(\"./layout/view_cell\"),\r\n\tResizer = require(\"./layout/resizer_cell\"),\r\n\tScrollbar = require(\"./layout/scrollbar_cell\"),\r\n\tTimeline = require(\"./timeline/timeline\"),\r\n\tGrid = require(\"./grid/grid\"),\r\n\tResourceGrid = require(\"./grid/resource_grid\"),\r\n\tResourceTimeline = require(\"./timeline/resource_timeline\"),\r\n\tResourceHistogram = require(\"./timeline/resource_histogram\");\r\n\r\n\r\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\r\n\r\n\r\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\r\n\trenderSplitTaskBar = require(\"./render/task_split_render\"),\r\n\trenderTaskBg = require(\"./render/task_bg_render\"),\r\n\trenderLink = require(\"./render/link_render\"),\r\n\tgridRenderer = require(\"./render/task_grid_line_render\");\r\n\r\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\r\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\r\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\r\n\r\nfunction initUI(gantt){\r\n\tfunction attachInitializer(view, initializer){\r\n\t\tvar ext = initializer(gantt);\r\n\t\tif(ext.onCreated)\r\n\t\t\text.onCreated(view);\r\n\t\tview.attachEvent(\"onReady\", function(){\r\n\t\t\tif(ext.onInitialized)\r\n\t\t\t\text.onInitialized(view);\r\n\t\t});\r\n\t\tview.attachEvent(\"onDestroy\", function(){\r\n\t\t\tif(ext.onDestroyed)\r\n\t\t\t\text.onDestroyed(view);\r\n\t\t});\r\n\t}\r\n\r\n\tvar factory = uiFactory.createFactory(gantt);\r\n\tfactory.registerView(\"cell\", Cell);\r\n\tfactory.registerView(\"resizer\", Resizer);\r\n\tfactory.registerView(\"scrollbar\", Scrollbar);\r\n\tfactory.registerView(\"layout\", Layout, function(view){\r\n\t\tvar id = view.$config ? view.$config.id : null;\r\n\t\tif(id === \"main\"){\r\n\t\t\tattachInitializer(view, mainLayoutInitializer);\r\n\t\t}\r\n\t});\r\n\tfactory.registerView(\"viewcell\", ViewCell);\r\n\tfactory.registerView(\"multiview\", ViewLayout);\r\n\tfactory.registerView(\"timeline\", Timeline, function(view){\r\n\t\tvar id = view.$config ? view.$config.id : null;\r\n\t\tif(id === \"timeline\" || view.$config.bind == \"task\"){\r\n\t\t\tattachInitializer(view, mainTimelineInitializer);\r\n\t\t}\r\n\t});\r\n\tfactory.registerView(\"grid\", Grid, function(view){\r\n\t\tvar id = view.$config ? view.$config.id : null;\r\n\t\tif(id === \"grid\" || view.$config.bind == \"task\"){\r\n\t\t\tattachInitializer(view, mainGridInitializer);\r\n\t\t}\r\n\t});\r\n\r\n\tfactory.registerView(\"resourceGrid\", ResourceGrid);\r\n\tfactory.registerView(\"resourceTimeline\", ResourceTimeline);\r\n\tfactory.registerView(\"resourceHistogram\", ResourceHistogram);\r\n\r\n\tvar layersEngine = createLayers(gantt);\r\n\r\n\tvar inlineEditors = gridEditorsFactory(gantt);\r\n\r\n\tgantt.ext.inlineEditors = inlineEditors;\r\n\tgantt.ext._inlineEditors = inlineEditors;\r\n\tinlineEditors.init(gantt);\r\n\r\n\treturn {\r\n\t\tfactory:factory,\r\n\t\tmouseEvents: mouseEvents.init(gantt),\r\n\t\tlayersApi: layersEngine.init(),\r\n\t\trender:{\r\n\t\t\tgridLine: function(){\r\n\t\t\t\treturn gridRenderer(gantt);\r\n\t\t\t},\r\n\t\t\ttaskBg: function(){\r\n\t\t\t\treturn renderTaskBg(gantt);\r\n\t\t\t},\r\n\t\t\ttaskBar: function(){\r\n\t\t\t\treturn renderTaskBar(gantt);\r\n\t\t\t},\r\n\t\t\ttaskSplitBar: function(){\r\n\t\t\t\treturn renderSplitTaskBar(gantt);\r\n\t\t\t},\r\n\t\t\tlink: function(){\r\n\t\t\t\treturn renderLink(gantt);\r\n\t\t\t}\r\n\t\t},\r\n\t\tlayersService: {\r\n\t\t\tgetDataRender: function(name){\r\n\t\t\t\treturn layersEngine.getDataRender(name, gantt);\r\n\t\t\t},\r\n\t\t\tcreateDataRender: function(config){\r\n\t\t\t\treturn layersEngine.createDataRender(config, gantt);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nmodule.exports = {\r\n\tinit: initUI\r\n};","var utils = require(\"../utils/utils\");\r\nvar domHelpers = require(\"../utils/dom_helpers\");\r\n\r\nmodule.exports = function(gantt) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\t\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(e) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\t\t\te = e || event;\r\n\t\t\tvar code = e.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = e.target || e.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (e.preventDefault)\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\treturn !(e.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tgantt.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tmodality.cover.onkeydown = modal_key;\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, className, result) {\r\n\t\tvar buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = className.toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar button_css = \"gantt_\" + name + \"_button\" + \" dhtmlx_\" + name + \"_button\"; // dhtmlx_ok_button, dhtmlx_click_me_button\r\n\t\treturn \"
\" + text + \"
\";\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"gantt_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"gantt-info dhtmlx-info gantt-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tmessage.onclick = function () {\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t};\r\n\r\n\t\tgantt._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\tmessageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tgantt._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" gantt_modal_box dhtmlx_modal_box gantt-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"gantt_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tbox.onclick = function (e) {\r\n\t\t\te = e || event;\r\n\t\t\tvar source = e.target || e.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (source.className.split(\" \")[0] == \"gantt_popup_button\") {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t};\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tbox.onkeydown = modal_key;\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tgantt.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tgantt.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tgantt.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tgantt.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\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