@co0ontty/wand 4.57.0 → 4.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-info.json +3 -3
- package/dist/ensure-node-pty-helper.d.ts +0 -1
- package/dist/ensure-node-pty-helper.js +0 -5
- package/dist/git-quick-commit.js +18 -19
- package/dist/github-connector.d.ts +11 -5
- package/dist/github-connector.js +105 -33
- package/dist/missions.d.ts +1 -1
- package/dist/missions.js +17 -4
- package/dist/server-file-routes.js +43 -2
- package/dist/server-github-routes.js +50 -53
- package/dist/server-mission-routes.js +11 -10
- package/dist/server-task-routes.d.ts +14 -2
- package/dist/server-task-routes.js +248 -84
- package/dist/server-workspace-routes.js +90 -16
- package/dist/server.js +2 -20
- package/dist/storage.d.ts +23 -6
- package/dist/storage.js +130 -53
- package/dist/structured-exec-host.d.ts +13 -2
- package/dist/structured-exec-host.js +71 -36
- package/dist/structured-exec-pump.d.ts +1 -1
- package/dist/structured-exec-pump.js +14 -8
- package/dist/task-types.d.ts +15 -0
- package/dist/terminal-daemon-client.d.ts +2 -0
- package/dist/terminal-daemon-client.js +7 -1
- package/dist/terminal-daemon-server.js +17 -18
- package/dist/tui/ipc-server.js +3 -1
- package/dist/types.d.ts +1 -0
- package/dist/wand-task-sync.d.ts +9 -0
- package/dist/wand-task-sync.js +50 -0
- package/dist/web-ui/content/scripts.js +85 -85
- package/dist/web-ui/content/styles.css +1 -1
- package/dist/web-ui/embedded-assets.js +2 -2
- package/dist/ws-broadcast.js +5 -1
- package/package.json +2 -3
- package/dist/taskboard-bridge.d.ts +0 -11
- package/dist/taskboard-bridge.js +0 -371
- package/vendor/codex-taskboard/LICENSE +0 -201
- package/vendor/codex-taskboard/dist/web/assets/AiChat-BNn4VJ5a.js +0 -12
- package/vendor/codex-taskboard/dist/web/assets/GanttView-D8wnfGrG.css +0 -1
- package/vendor/codex-taskboard/dist/web/assets/GanttView-rGWhuEX9.js +0 -39
- package/vendor/codex-taskboard/dist/web/assets/abnfDiagram-N423BO3Z-DbFG6lbA.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/arc-BjSQqbzd.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/architecture-TIHT7OUA-C9-t8p4o.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/architectureDiagram-T3A2C74G-Db4kJZwO.js +0 -36
- package/vendor/codex-taskboard/dist/web/assets/array-BifhSqXX.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/blockDiagram-VBNYF7ZC-C-BywuWV.js +0 -132
- package/vendor/codex-taskboard/dist/web/assets/c4Diagram-5PPSVZJV-Dq-80rjP.js +0 -10
- package/vendor/codex-taskboard/dist/web/assets/channel-C7mnz8Xc.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-2GRJ4B5K-B2G57us9.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-3NCLNEKW-DVGIRib_.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-4I5QYGJK-kNoGFqr0.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-5RXB4S5H-4iv6-xM6.js +0 -231
- package/vendor/codex-taskboard/dist/web/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -15
- package/vendor/codex-taskboard/dist/web/assets/chunk-6Q2QTUOP-1J34vxHr.js +0 -88
- package/vendor/codex-taskboard/dist/web/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-7Z6QIM7H-CDQpQlxX.js +0 -10
- package/vendor/codex-taskboard/dist/web/assets/chunk-GF5L2VYU-Dg92oHHl.js +0 -206
- package/vendor/codex-taskboard/dist/web/assets/chunk-I66GZJ75-Bk8_gFs2.js +0 -125
- package/vendor/codex-taskboard/dist/web/assets/chunk-J7OUQ5F2-CJRcenlr.js +0 -2
- package/vendor/codex-taskboard/dist/web/assets/chunk-JQJVKLGR-BLBV_Sus.js +0 -156
- package/vendor/codex-taskboard/dist/web/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-KBJHAD2P-Da9Yjz0p.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-KEIR6QF5-Dj-OpFgW.js +0 -161
- package/vendor/codex-taskboard/dist/web/assets/chunk-NSK5VX7P-Cb56tnGK.js +0 -2
- package/vendor/codex-taskboard/dist/web/assets/chunk-QR6OTTB3-BwoszTxn.js +0 -62
- package/vendor/codex-taskboard/dist/web/assets/chunk-RYQCIY6F-D_L2RdcQ.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-UBXNYLIW-YX5mN8cl.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-W5SLKNZC-DlOLhhDO.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-WRU74C26-B7SBmP0K.js +0 -70
- package/vendor/codex-taskboard/dist/web/assets/chunk-XXDRQBXY-BuE3VzE_.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/chunk-ZIRB5QZD-C6fEPe3t.js +0 -32
- package/vendor/codex-taskboard/dist/web/assets/classDiagram-JCYQIIEL-KIdCVvbA.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/classDiagram-v2-OCEON4UE-KIdCVvbA.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/cose-bilkent-JH36ORCC-BzQvy5TC.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/cynefin-VYW2F7L2-D1_5O1XR.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/cynefinDiagram-MW4NZA55-DOW_U5QN.js +0 -62
- package/vendor/codex-taskboard/dist/web/assets/cytoscape.esm-DnGd5Fuo.js +0 -321
- package/vendor/codex-taskboard/dist/web/assets/dagre-VZM6K2ZE-0Dntc3NT.js +0 -4
- package/vendor/codex-taskboard/dist/web/assets/dagre-dpRSp0QF.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/defaultLocale-C8Fc0cco.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/diagram-7IWD3JNH-D7GleYAM.js +0 -30
- package/vendor/codex-taskboard/dist/web/assets/diagram-B4RE2ZJO-DCXTe6q5.js +0 -3
- package/vendor/codex-taskboard/dist/web/assets/diagram-LBJQPF4R-ZFJyXEXl.js +0 -24
- package/vendor/codex-taskboard/dist/web/assets/diagram-Q27KOJAE-DUGCuGd9.js +0 -24
- package/vendor/codex-taskboard/dist/web/assets/diagram-UB23O5K3-DRmp4Nng.js +0 -41
- package/vendor/codex-taskboard/dist/web/assets/dist-D9sYb5Oa.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/ebnfDiagram-BXEA7PRR-CkKoaf7T.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/erDiagram-JOGREHBK-nBX5z4R4.js +0 -85
- package/vendor/codex-taskboard/dist/web/assets/eventmodeling-45OFAUF4-pexmK65N.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/flowDiagram-UKHOOZJN-aroohRbL.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/ganttDiagram-PKOTCBZU-BOJWUTXa.js +0 -292
- package/vendor/codex-taskboard/dist/web/assets/gitGraph-TEB2WS4Q-DxnuhSZU.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/gitGraphDiagram-DS77QQ5N-Cte975TC.js +0 -106
- package/vendor/codex-taskboard/dist/web/assets/graphlib-DS17s2tU.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/index-Docmx4uQ.css +0 -1
- package/vendor/codex-taskboard/dist/web/assets/index-Du07lEGz.js +0 -121
- package/vendor/codex-taskboard/dist/web/assets/info-DKCQHKI2-DOTjgYxk.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/infoDiagram-6WML65LV-SpyV9UJd.js +0 -2
- package/vendor/codex-taskboard/dist/web/assets/init-D6jRqBbL.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/ishikawaDiagram-WSZJBQD7-T0PZwoUZ.js +0 -70
- package/vendor/codex-taskboard/dist/web/assets/journeyDiagram-NVQOT4AX-B88b8UgX.js +0 -139
- package/vendor/codex-taskboard/dist/web/assets/kanban-definition-27J2QSJJ-CIlfNnl_.js +0 -89
- package/vendor/codex-taskboard/dist/web/assets/katex-B7rAX3Vi.js +0 -257
- package/vendor/codex-taskboard/dist/web/assets/line-fWrwPZhB.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/linear-B7l8qgEw.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/map-BaFkSB1l.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/mermaid-parser.core-C5gls2nC.js +0 -7
- package/vendor/codex-taskboard/dist/web/assets/mermaid.core-POz2Xcvr.js +0 -11
- package/vendor/codex-taskboard/dist/web/assets/mindmap-definition-FAOFIHXS-BM0-egZ5.js +0 -96
- package/vendor/codex-taskboard/dist/web/assets/ordinal-hYBb2elL.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/packet-7NZHBO7P-DQZzyVos.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/path-BWPyau1x.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/pegDiagram-VL7TDLO6-B8aEwl-7.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/pie-RZYD4A2V-DRUflilR.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/pieDiagram-7S7Q4E2Y-0cDDxlua.js +0 -39
- package/vendor/codex-taskboard/dist/web/assets/purify.es-Bwt4ulIK.js +0 -3
- package/vendor/codex-taskboard/dist/web/assets/quadrantDiagram-CIZ2JOQS-CBgb0YZ0.js +0 -7
- package/vendor/codex-taskboard/dist/web/assets/radar-I7S5WNFK-tRocoKxq.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/railroad-3IZDKUUU-DaS4ZlX_.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/railroad-abnf-AHOZXSZD-BN1T5dBT.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/railroad-ebnf-EBAXGLYW-Cuf8qyKs.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/railroad-peg-LSFZ7HO6-B511_EYq.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/railroadDiagram-AXF67PYL-QtPo-JZb.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/requirementDiagram-LRYGKXZP-CuBIF85r.js +0 -84
- package/vendor/codex-taskboard/dist/web/assets/rolldown-runtime-QTnfLwEv.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/rough.esm-CSKSodPl.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/sankeyDiagram-W5VNT64P-CRA-b_za.js +0 -40
- package/vendor/codex-taskboard/dist/web/assets/sequenceDiagram-SI44F4Z6-CoddVWwY.js +0 -162
- package/vendor/codex-taskboard/dist/web/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/src-_wZywoZs.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/stateDiagram-OKZ733FA-D8DMM2ln.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/stateDiagram-v2-UEYNNEHI-CVp0eYAS.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/swimlanes-SLNWSIFB-C1fC7EFu.js +0 -2
- package/vendor/codex-taskboard/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CPd58Xso.js +0 -8
- package/vendor/codex-taskboard/dist/web/assets/timeline-definition-Z64GVDOM-BUBv8aKP.js +0 -120
- package/vendor/codex-taskboard/dist/web/assets/treeView-QDETBFTQ-C-Bve2kY.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/treemap-6X3UGDF4-BcphHDdV.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/vennDiagram-T6HMQDX7-0wQnwAyA.js +0 -34
- package/vendor/codex-taskboard/dist/web/assets/wardley-OPB4EBWU-CJZ4BevB.js +0 -1
- package/vendor/codex-taskboard/dist/web/assets/wardleyDiagram-T6FBY63Y-U9nwPrkN.js +0 -78
- package/vendor/codex-taskboard/dist/web/assets/xychartDiagram-ELKLHX3M-CyCqnzgE.js +0 -7
- package/vendor/codex-taskboard/dist/web/codex-agent-logo.png +0 -0
- package/vendor/codex-taskboard/dist/web/codex-app-icon.png +0 -0
- package/vendor/codex-taskboard/dist/web/favicon.svg +0 -7
- package/vendor/codex-taskboard/dist/web/index.html +0 -20
- package/vendor/codex-taskboard/server/ai-chat-catalog.mjs +0 -1031
- package/vendor/codex-taskboard/server/ai-chat-process.mjs +0 -462
- package/vendor/codex-taskboard/server/ai-chat.mjs +0 -1237
- package/vendor/codex-taskboard/server/ai-turn-owner.mjs +0 -39
- package/vendor/codex-taskboard/server/app.mjs +0 -3211
- package/vendor/codex-taskboard/server/cloud-config.mjs +0 -188
- package/vendor/codex-taskboard/server/cloud-proxy.mjs +0 -310
- package/vendor/codex-taskboard/server/codex-app-server.mjs +0 -376
- package/vendor/codex-taskboard/server/codex-slash-commands-0.139.0.json +0 -62
- package/vendor/codex-taskboard/server/database.mjs +0 -2845
- package/vendor/codex-taskboard/server/index.mjs +0 -41
- package/vendor/codex-taskboard/server/jira-config.mjs +0 -181
- package/vendor/codex-taskboard/server/jira-integration.mjs +0 -487
- package/vendor/codex-taskboard/server/project-summary.mjs +0 -159
- package/vendor/codex-taskboard/shared/api-fields.mjs +0 -163
- package/vendor/codex-taskboard/shared/codex-environment.mjs +0 -5
- package/vendor/codex-taskboard/shared/codex-executable.mjs +0 -77
- package/vendor/codex-taskboard/shared/codex-permissions.mjs +0 -9
- package/vendor/codex-taskboard/shared/composer-reference.d.mts +0 -19
- package/vendor/codex-taskboard/shared/composer-reference.mjs +0 -90
- package/vendor/codex-taskboard/shared/domain.mjs +0 -34
- package/vendor/codex-taskboard/shared/executable-command.mjs +0 -13
- package/vendor/codex-taskboard/shared/process-tree.mjs +0 -27
- package/vendor/codex-taskboard/shared/task-input.mjs +0 -308
- package/vendor/codex-taskboard/shared/task-records.mjs +0 -199
- package/vendor/codex-taskboard/shared/task-relations.mjs +0 -55
- package/vendor/codex-taskboard/shared/taskboard-automation.mjs +0 -277
- package/vendor/codex-taskboard/skills/manage-taskboard/SKILL.md +0 -45
- package/vendor/codex-taskboard/skills/manage-taskboard/agents/openai.yaml +0 -4
- package/vendor/codex-taskboard/skills/manage-taskboard/references/cli.md +0 -211
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import{E as e,H as t,T as n,c as r,f as i,r as a}from"./index-Du07lEGz.js";var o=t();function s(e){var t=0,n=0,r=0,i=0;if(e.getBoundingClientRect){var a=e.getBoundingClientRect(),o=document.body,s=document.documentElement||document.body.parentNode||document.body,c=window.pageYOffset||s.scrollTop||o.scrollTop,l=window.pageXOffset||s.scrollLeft||o.scrollLeft,u=s.clientTop||o.clientTop||0,d=s.clientLeft||o.clientLeft||0;t=a.top+c-u,n=a.left+l-d,r=document.body.offsetWidth-a.right,i=document.body.offsetHeight-a.bottom}else{for(;e;)t+=parseInt(e.offsetTop,10),n+=parseInt(e.offsetLeft,10),e=e.offsetParent;r=document.body.offsetWidth-e.offsetWidth-n,i=document.body.offsetHeight-e.offsetHeight-t}return{y:Math.round(t),x:Math.round(n),width:e.offsetWidth,height:e.offsetHeight,right:Math.round(r),bottom:Math.round(i)}}function c(e){var t=!1,n=!1;if(window.getComputedStyle){var r=window.getComputedStyle(e,null);t=r.display,n=r.visibility}else e.currentStyle&&(t=e.currentStyle.display,n=e.currentStyle.visibility);return t!=`none`&&n!=`hidden`}function l(e){return!isNaN(e.getAttribute(`tabindex`))&&e.getAttribute(`tabindex`)*1>=0}function u(e){return!{a:!0,area:!0}[e.nodeName.loLowerCase()]||!!e.getAttribute(`href`)}function d(e){return!{input:!0,select:!0,textarea:!0,button:!0,object:!0}[e.nodeName.toLowerCase()]||!e.hasAttribute(`disabled`)}function f(e){for(var t=e.querySelectorAll([`a[href]`,`area[href]`,`input`,`select`,`textarea`,`button`,`iframe`,`object`,`embed`,`[tabindex]`,`[contenteditable]`].join(`, `)),n=Array.prototype.slice.call(t,0),r=0;r<n.length;r++)n[r].$position=r;n.sort(function(e,t){return e.tabIndex===0&&t.tabIndex!==0?1:e.tabIndex!==0&&t.tabIndex===0?-1:e.tabIndex===t.tabIndex?e.$position-t.$position:e.tabIndex<t.tabIndex?-1:1});for(var r=0;r<n.length;r++){var i=n[r];(l(i)||d(i)||u(i))&&c(i)||(n.splice(r,1),r--)}return n}function p(){var e=document.createElement(`div`);e.style.cssText=`visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;`,document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),Math.max(t,15)}function m(e){if(!e)return``;var t=e.className||``;return t.baseVal&&(t=t.baseVal),t.indexOf||(t=``),T(t)}function h(e,t){t&&e.className.indexOf(t)===-1&&(e.className+=` `+t)}function g(e,t){t=t.split(` `);for(var n=0;n<t.length;n++){var r=RegExp(`\\s?\\b`+t[n]+`\\b(?![-_.])`,``);e.className=e.className.replace(r,``)}}function _(e,t){return`classList`in e?e.classList.contains(t):RegExp(`\\b`+t+`\\b`).test(e.className)}function v(e){return typeof e==`string`?document.getElementById(e)||document.querySelector(e)||document.body:e||document.body}var y;function b(e,t){y||=document.createElement(`div`),y.innerHTML=t;var n=y.firstChild;return e.appendChild(n),n}function x(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function S(e,t){for(var n=e.childNodes,r=n.length,i=[],a=0;a<r;a++){var o=n[a];o.className&&o.className.indexOf(t)!==-1&&i.push(o)}return i}function C(e){var t;return e.tagName?t=e:(e||=window.event,t=e.target||e.srcElement,t.shadowRoot&&e.composedPath&&(t=e.composedPath()[0])),t}function w(e,t){if(t){for(var n=C(e);n;){if(n.getAttribute&&n.getAttribute(t))return n;n=n.parentNode||n.host}return null}}function T(e){return(String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,``)}).apply(e)}function E(e,t,n){var r=C(e),i=``;for(n===void 0&&(n=!0);r;){if(i=m(r),i){var a=i.indexOf(t);if(a>=0){if(!n)return r;var o=a===0||!T(i.charAt(a-1)),s=a+t.length>=i.length||!T(i.charAt(a+t.length));if(o&&s)return r}}r=r.parentNode}return null}function D(e,t){let n=document.documentElement,r=s(t),{clientX:i,clientY:a}=e.touches?.[0]??e;return{x:i+n.scrollLeft-n.clientLeft-r.x+t.scrollLeft,y:a+n.scrollTop-n.clientTop-r.y+t.scrollTop}}function O(e,t){let n=s(e),r=s(t);return{x:n.x-r.x,y:n.y-r.y}}function k(e,t){if(!e||!t)return!1;for(;e&&e!=t;)e=e.parentNode;return e===t}function A(e,t){if(e.closest)return e.closest(t);if(e.matches||e.msMatchesSelector||e.webkitMatchesSelector){var n=e;if(!document.documentElement.contains(n))return null;do{if((n.matches||n.msMatchesSelector||n.webkitMatchesSelector).call(n,t))return n;n=n.parentElement||n.parentNode}while(n!==null&&n.nodeType===1);return null}else return console.error(`Your browser is not supported`),null}function j(e){for(;e;){if(e.offsetWidth>0&&e.offsetHeight>0)return e;e=e.parentElement}return null}function ee(){return document.head.createShadowRoot||document.head.attachShadow}function te(){var e=document.activeElement;return e.shadowRoot&&(e=e.shadowRoot.activeElement),e===document.body&&document.getSelection&&(e=document.getSelection().focusNode||document.body),e}function ne(e){if(!e||!ee())return document.body;for(;e.parentNode&&(e=e.parentNode);)if(e instanceof ShadowRoot)return e.host;return document.body}function re(e){return!!ne(e)}var ie=Object.freeze(Object.defineProperty({__proto__:null,addClassName:h,closest:A,getActiveElement:te,getChildNodes:S,getClassName:m,getClosestSizedElement:j,getFocusableNodes:f,getNodePosition:s,getRelativeEventPosition:D,getRelativeNodePosition:O,getRootNode:ne,getScrollSize:p,getTargetNode:C,hasClass:_,hasShadowParent:re,insertNode:b,isChildOf:k,isShadowDomSupported:ee,locateAttribute:w,locateClassName:E,removeClassName:g,removeNode:x,toNode:v},Symbol.toStringTag,{value:`Module`})),M=typeof window<`u`?window:global,ae=class{constructor(e){this._mouseDown=!1,this._touchStarts=!1,this._touchActive=!1,this._longTapTimer=!1,this._gantt=e,this._domEvents=e._createDomEventScope()}attach(e,t,n){let r=this._gantt,i=e.getViewPort();this._originPosition=M.getComputedStyle(i).display,this._restoreOriginPosition=()=>{i.style.position=this._originPosition},this._originPosition===`static`&&(i.style.position=`relative`);let a=r.$services.getService(`state`);a.registerProvider(`clickDrag`,()=>({autoscroll:!1}));let o=null,s=()=>{o&&=(this._mouseDown=!0,e.setStart(r.copy(o)),e.setPosition(r.copy(o)),e.setEnd(r.copy(o)),null)};this._domEvents.attach(i,`mousedown`,e=>{d(e)});let c=ne(r.$root)||document.body;this._domEvents.attach(c,`mouseup`,e=>{f(e)}),this._domEvents.attach(i,`mousemove`,e=>{p(e)}),this._domEvents.attach(i,`touchstart`,e=>{this._touchStarts=!0,this._longTapTimer=setTimeout(()=>{this._touchStarts&&(d(l(e)),this._touchStarts=!1,this._touchActive=!0)},this._gantt.config.touch_drag)}),this._domEvents.attach(c,`touchend`,e=>{this._touchStarts=!1,this._touchActive=!1,clearTimeout(this._longTapTimer),f(l(e))}),this._domEvents.attach(i,`touchmove`,e=>{if(this._touchActive){let t=u();if(t&&r.utils.dom.closest(e.target,t))return;p(l(e)),e.preventDefault()}else this._touchStarts=!1,clearTimeout(this._longTapTimer)});function l(e){return e.changedTouches&&e.changedTouches[0]||e}let u=()=>{let e=`.gantt_task_line, .gantt_task_link`;return n!==void 0&&(e=n instanceof Array?n.join(`, `):n),e},d=n=>{o=null;let i=u();i&&r.utils.dom.closest(n.target,i)||(a.registerProvider(`clickDrag`,()=>({autoscroll:this._mouseDown})),!(t&&n[t]!==!0)&&(o=this._getCoordinates(n,e)))},f=n=>{if(o=null,!(t&&n[t]!==!0)&&this._mouseDown===!0){this._mouseDown=!1;let t=this._getCoordinates(n,e);e.dragEnd(t)}},p=n=>{if(t&&n[t]!==!0)return;let r=this._gantt.ext.clickDrag,i=(this._gantt.config.drag_timeline||{}).useKey;if(r&&i&&!t&&n[i])return;let a=null;if(!this._mouseDown&&o){a=this._getCoordinates(n,e),Math.abs(o.relative.left-a.relative.left)>5&&s();return}this._mouseDown===!0&&(a=this._getCoordinates(n,e),e.setEnd(a),e.render())}}detach(){let e=this._gantt;this._domEvents.detachAll(),this._restoreOriginPosition&&this._restoreOriginPosition(),e.$services.getService(`state`).unregisterProvider(`clickDrag`)}destructor(){this.detach()}_getCoordinates(e,t){let n=t.getViewPort(),r=n.getBoundingClientRect(),{clientX:i,clientY:a}=e;return{absolute:{left:i,top:a},relative:{left:i-r.left+n.scrollLeft,top:a-r.top+n.scrollTop}}}},oe=function(){this._silent_mode=!1,this.listeners={}};oe.prototype={_silentStart:function(){this._silent_mode=!0},_silentEnd:function(){this._silent_mode=!1}};var se=function(e){let t={},n=0,r=function(...n){let r=!0;for(let i in t){let a=t[i].apply(e,n);r&&=a}return r};return r.addEvent=function(e,i){if(typeof e==`function`){let a;if(i&&i.id!==void 0?a=i.id:(a=n,n++),i&&i.once){let t=e;e=function(){t(),r.removeEvent(a)}}return t[String(a)]=e,a}return!1},r.removeEvent=function(e){delete t[String(e)]},r.clear=function(){t={}},r};function N(e){let t=new oe,n=e;n.attachEvent=function(e,n,r){e=`ev_`+e.toLowerCase(),t.listeners[e]||(t.listeners[e]=se(this)),r&&r.thisObject&&(n=n.bind(r.thisObject));let i=t.listeners[e].addEvent(n,r),a=e+`:`+i;return r&&r.id!==void 0&&(a=r.id),a},n.attachAll=function(e){this.attachEvent&&this.attachEvent(`listen_all`,e)},n.callEvent=function(e,n){if(t._silent_mode)return!0;let r=`ev_`+e.toLowerCase(),i=t.listeners;return i.ev_listen_all&&i.ev_listen_all.apply(this,[e].concat(n)),!i[r]||i[r].apply(this,n)},n.checkEvent=function(e){return!!t.listeners[`ev_`+e.toLowerCase()]},n.detachEvent=function(e){if(e!=null){let n=t.listeners;for(let t in n)n[t].removeEvent(e);let r=String(e).split(`:`);if(r.length===2){let e=r[0],t=r[1];n[e]&&n[e].removeEvent(t)}}},n.detachAllEvents=function(){for(let e in t.listeners)t.listeners[e].clear()}}var ce={second:1,minute:60,hour:3600,day:3600*24,week:3600*24*7,month:3600*24*30,quarter:3600*24*30*3,year:3600*24*365};function le(e){return ce[e]||ce.hour}function ue(e,t){if(e.forEach)e.forEach(t);else{let n=e.slice();for(let e=0;e<n.length;e++)t(n[e],e)}}function de(e,t){if(e.map)return e.map(t);{let n=e.slice(),r=[];for(let e=0;e<n.length;e++)r.push(t(n[e],e));return r}}function fe(e,t){if(e.find)return e.find(t);for(let n=0;n<e.length;n++)if(t(e[n],n))return e[n]}function pe(e,t){if(e.includes)return e.includes(t);for(let n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}function me(e){return Array.isArray?Array.isArray(e):!!(e&&e.length!==void 0&&e.pop&&e.push)}function P(e){if(e&&typeof e==`object`){let t=e;return!!(t.getFullYear&&t.getMonth&&t.getDate)}else return!1}function he(e){return P(e)&&!isNaN(e.getTime())}function ge(e,t){let n=[];if(e.filter)return e.filter(t);for(let r=0;r<e.length;r++)t(e[r],r)&&(n[n.length]=e[r]);return n}function _e(e,t){let n=!1;return function(...r){n||(e.apply(null,r),n=!0,setTimeout(function(){n=!1},t))}}function ve(e,t){let n,r=function(...i){r.$cancelTimeout(),r.$pending=!0,n=setTimeout(function(){e.apply(this,i),r.$pending=!1},t)};return r.$pending=!1,r.$cancelTimeout=function(){n!==void 0&&clearTimeout(n),r.$pending=!1},r.$execute=function(...t){e.apply(this,t),r.$cancelTimeout()},r}function ye(e){return!!(e&&e.attachEvent&&e.detachEvent)}function F(e,t){return be(e)&&!be(t)&&(e=`0`),e}function be(e){return e===0}function xe(e,t){let n=0,r=e.length-1,i,a,o;for(;n<=r;){if(i=Math.floor((n+r)/2),a=+e[i],o=+e[i-1],a<t){n=i+1;continue}if(a>t){if(!isNaN(o)&&o<t)return i-1;r=i-1;continue}for(;+e[i]==+e[i+1];)i++;return i}return e.length-1}var Se=class{constructor(e,t,n){this._el=document.createElement(`div`),this.defaultRender=(e,t)=>{this._el||=document.createElement(`div`);let n=this._el,r=Math.min(e.relative.top,t.relative.top),i=Math.max(e.relative.top,t.relative.top),a=Math.min(e.relative.left,t.relative.left),o=Math.max(e.relative.left,t.relative.left);if(this._singleRow){let e=this._getTaskPositionByTop(this._startPoint.relative.top);n.style.height=e.height+`px`,n.style.top=e.top+`px`}else n.style.height=Math.abs(i-r)+`px`,n.style.top=r+`px`;return n.style.width=Math.abs(o-a)+`px`,n.style.left=a+`px`,n},this._gantt=t,this._view=n,this._viewPort=e.viewPort,e.className&&this._el.classList.add(e.className),typeof e.callback==`function`&&(this._callback=e.callback),this.render=()=>{let t;t=e.render?e.render(this._startPoint,this._endPoint):this.defaultRender(this._startPoint,this._endPoint),t!==this._el&&(this._el&&this._el.parentNode&&this._el.parentNode.removeChild(this._el),this._el=t),e.className!==``&&this._el.classList.add(e.className),this.draw()},this._viewPort&&!ye(this._viewPort)&&N(this._viewPort),this._singleRow=e.singleRow,this._useRequestAnimationFrame=e.useRequestAnimationFrame}draw(){if(this._useRequestAnimationFrame)return requestAnimationFrame(()=>{this._viewPort&&this._viewPort.appendChild(this.getElement())});this._viewPort&&this._viewPort.appendChild(this.getElement())}clear(){if(this._useRequestAnimationFrame)return requestAnimationFrame(()=>{this._el.parentNode&&this._viewPort&&this._viewPort.removeChild(this._el)});this._el.parentNode&&this._viewPort&&this._viewPort.removeChild(this._el)}getElement(){return this._el}getViewPort(){return this._viewPort}setStart(e){let t=this._gantt;this._startPoint=e,this._startDate=t.dateFromPos(this._startPoint.relative.left),this._viewPort.callEvent(`onBeforeDrag`,[this._startPoint])}setEnd(e){let t=this._gantt;if(this._endPoint=e,this._singleRow){let e=this._getTaskPositionByTop(this._startPoint.relative.top);this._endPoint.relative.top=e.top}this._endDate=t.dateFromPos(this._endPoint.relative.left),this._startPoint.relative.left>this._endPoint.relative.left&&(this._positionPoint={relative:{left:this._endPoint.relative.left,top:this._positionPoint.relative.top},absolute:{left:this._endPoint.absolute.left,top:this._positionPoint.absolute.top}}),this._startPoint.relative.top>this._endPoint.relative.top&&(this._positionPoint={relative:{left:this._positionPoint.relative.left,top:this._endPoint.relative.top},absolute:{left:this._positionPoint.absolute.left,top:this._endPoint.absolute.top}}),this._viewPort.callEvent(`onDrag`,[this._startPoint,this._endPoint])}setPosition(e){this._positionPoint=e}dragEnd(e){let t=this._gantt;e.relative.left<0&&(e.relative.left=0),this._viewPort.callEvent(`onBeforeDragEnd`,[this._startPoint,e]),this.setEnd(e),this._endDate=this._endDate||t.getState().max_date,this._startDate.valueOf()>this._endDate.valueOf()&&([this._startDate,this._endDate]=[this._endDate,this._startDate]),this.clear();let n=t.getTaskByTime(this._startDate,this._endDate),r=this._getTasksByTop(this._startPoint.relative.top,this._endPoint.relative.top);this._viewPort.callEvent(`onDragEnd`,[this._startPoint,this._endPoint]),this._callback&&this._callback(this._startPoint,this._endPoint,this._startDate,this._endDate,n,r)}getInBounds(){return this._singleRow}_getTasksByTop(e,t){let n=this._gantt,r=e,i=t;e>t&&(r=t,i=e);let a=this._getTaskPositionByTop(r).index,o=this._getTaskPositionByTop(i).index,s=[];for(let e=a;e<=o;e++)n.getTaskByIndex(e)&&s.push(n.getTaskByIndex(e));return s}_getTaskPositionByTop(e){let t=this._gantt,n=this._view,r=n.getItemIndexByTopPosition(e),i=t.getTaskByIndex(r);if(i){let e=n.getItemHeight(i.id);return{top:n.getItemTop(i.id)||0,height:e||0,index:r}}else{let r=n.getTotalHeight();return{top:e>r?r:0,height:t.config.row_height,index:e>r?t.getTaskCount():0}}}};function Ce(e){e.ext||={};let t={className:`gantt_click_drag_rect`,useRequestAnimationFrame:!0,callback:void 0,singleRow:!1};function n(){let n={viewPort:e.$task_data,...t};e.ext.clickDrag&&e.ext.clickDrag.destructor(),e.ext.clickDrag=new ae(e);let r=e.config.click_drag;n.render=r.render||t.render,n.className=r.className||t.className,n.callback=r.callback||t.callback,n.viewPort=r.viewPort||e.$task_data,n.useRequestAnimationFrame=r.useRequestAnimationFrame===void 0?t.useRequestAnimationFrame:r.useRequestAnimationFrame,n.singleRow=r.singleRow===void 0?t.singleRow:r.singleRow;let i=new Se(n,e,e.$ui.getView(`timeline`));e.ext.clickDrag.attach(i,r.useKey,r.ignore)}e.attachEvent(`onGanttReady`,()=>{e.config.click_drag&&n()}),e.attachEvent(`onGanttLayoutReady`,function(){e.$container&&e.config.click_drag&&e.attachEvent(`onGanttRender`,function(){n()},{once:!0})}),e.attachEvent(`onDestroy`,()=>{e.ext.clickDrag&&e.ext.clickDrag.destructor()})}var we=!1,Te=class e{constructor(e){this._mouseDown=!1,this._calculateDirectionVector=()=>{if(this._trace.length>=10){let e=this._trace.slice(this._trace.length-10),t=[];for(let n=1;n<e.length;n++)t.push({x:e[n].x-e[n-1].x,y:e[n].y-e[n-1].y});let n={x:0,y:0};return t.forEach(e=>{n.x+=e.x,n.y+=e.y}),{magnitude:Math.sqrt(n.x*n.x+n.y*n.y),angleDegrees:Math.atan2(Math.abs(n.y),Math.abs(n.x))*180/Math.PI}}return null},this._applyDndReadyStyles=()=>{this._timeline.$task.classList.add(`gantt_timeline_move_available`)},this._clearDndReadyStyles=()=>{this._timeline.$task.classList.remove(`gantt_timeline_move_available`)},this._getScrollPosition=e=>{let t=this._gantt;return{x:t.$ui.getView(e.$config.scrollX).getScrollState().position,y:t.$ui.getView(e.$config.scrollY).getScrollState().position}},this._countNewScrollPosition=e=>{let t=this._calculateDirectionVector(),n=this._startPoint.x-e.x,r=this._startPoint.y-e.y;return t&&(t.angleDegrees<15?r=0:t.angleDegrees>75&&(n=0)),{x:this._scrollState.x+n,y:this._scrollState.y+r}},this._setScrollPosition=(e,t)=>{let n=this._gantt;requestAnimationFrame(()=>{n.scrollLayoutCell(e.$id,t.x,t.y)})},this._stopDrag=e=>{let t=this._gantt;if(this._trace=[],t.$root.classList.remove(`gantt_noselect`),this._originalReadonly!==void 0&&this._mouseDown&&(t.config.readonly=this._originalReadonly,t.config.drag_timeline&&t.config.drag_timeline.render&&t.render()),this._originAutoscroll!==void 0&&(t.config.autoscroll=this._originAutoscroll),t.config.drag_timeline){let{useKey:n}=t.config.drag_timeline;if(n&&e[n]!==!0)return}this._mouseDown=!1,we=!1},this._startDrag=e=>{let t=this._gantt;this._originAutoscroll=t.config.autoscroll,t.config.autoscroll=!1,we=!0,t.$root.classList.add(`gantt_noselect`),this._originalReadonly=t.config.readonly,t.config.readonly=!0,t.config.drag_timeline&&t.config.drag_timeline.render&&t.render(),this._trace=[],this._mouseDown=!0;let{x:n,y:r}=this._getScrollPosition(this._timeline);this._scrollState={x:n,y:r},this._startPoint={x:e.clientX,y:e.clientY},this._trace.push(this._startPoint)},this._gantt=e,this._domEvents=e._createDomEventScope(),this._trace=[]}static create(t){return new e(t)}static _isDragInProgress(){return we}destructor(){this._domEvents.detachAll()}attach(e){this._timeline=e;let t=this._gantt;this._domEvents.attach(e.$task,`mousedown`,e=>{if(!t.config.drag_timeline)return;let{useKey:n,ignore:r,enabled:i}=t.config.drag_timeline;if(i===!1)return;let a=`.gantt_task_line, .gantt_task_link`;r!==void 0&&(a=r instanceof Array?r.join(`, `):r),!(a&&t.utils.dom.closest(e.target,a))&&(n&&e[n]!==!0||this._startDrag(e))}),this._domEvents.attach(document,`keydown`,e=>{if(!t.config.drag_timeline)return;let{useKey:n}=t.config.drag_timeline;n&&e[n]===!0&&this._applyDndReadyStyles()}),this._domEvents.attach(document,`keyup`,e=>{if(!t.config.drag_timeline)return;let{useKey:n}=t.config.drag_timeline;n&&e[n]===!1&&(this._clearDndReadyStyles(),this._stopDrag(e))}),this._domEvents.attach(document,`mouseup`,e=>{this._stopDrag(e)}),this._domEvents.attach(t.$root,`mouseup`,e=>{this._stopDrag(e)}),this._domEvents.attach(document,`mouseleave`,e=>{this._stopDrag(e)}),this._domEvents.attach(t.$root,`mouseleave`,e=>{this._stopDrag(e)}),this._domEvents.attach(t.$root,`mousemove`,n=>{if(!t.config.drag_timeline)return;let{useKey:r}=t.config.drag_timeline;if(r&&n[r]!==!0)return;let i=this._gantt.ext.clickDrag,a=(this._gantt.config.click_drag||{}).useKey;if(!(i&&a&&!r&&n[a])&&this._mouseDown===!0){this._trace.push({x:n.clientX,y:n.clientY});let t=this._countNewScrollPosition({x:n.clientX,y:n.clientY});this._setScrollPosition(e,t),this._scrollState=t,this._startPoint={x:n.clientX,y:n.clientY}}})}};function Ee(e){e.ext||={},e.ext.dragTimeline={create:()=>Te.create(e),_isDragInProgress:()=>Te._isDragInProgress},e.config.drag_timeline={enabled:!0,render:!1}}var De={}.constructor.toString();function Oe(e){return e.constructor.toString()!==De}function ke(e){return!!(e.$$typeof&&e.$$typeof.toString().includes(`react.`))}function I(e){let t,n;if(e&&typeof e==`object`)switch(!0){case P(e):n=new Date(e);break;case me(e):for(n=Array(e.length),t=0;t<e.length;t++)n[t]=I(e[t]);break;default:if(Oe(e))n=Object.create(e);else{if(ke(e))return n=e,n;n={}}for(t in e)Object.prototype.hasOwnProperty.apply(e,[t])&&(n[t]=I(e[t]));break}return n||e}function L(e,t,n){for(let r in t)(e[r]===void 0||n)&&(e[r]=t[r]);return e}function R(e){return typeof e<`u`}var Ae;function z(){return Ae||=new Date().valueOf(),Ae++,Ae}function B(e,t){return e.bind?e.bind(t):function(...n){return e.apply(t,n)}}function je(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r!==void 0&&r):e.attachEvent&&e.attachEvent(`on`+t,n)}function Me(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r!==void 0&&r):e.detachEvent&&e.detachEvent(`on`+t,n)}var Ne=Object.freeze(Object.defineProperty({__proto__:null,bind:B,copy:I,defined:R,event:je,eventRemove:Me,mixin:L,uid:z},Symbol.toStringTag,{value:`Module`}));function Pe(e){var t=e.date;return e.$services,{getSum:function(e,t,n){n===void 0&&(n=e.length-1),t===void 0&&(t=0);for(var r=0,i=t;i<=n;i++)r+=e[i];return r},setSumWidth:function(e,t,n,r){var i=t.width;r===void 0&&(r=i.length-1),n===void 0&&(n=0);var a=r-n+1;if(!(n>i.length-1||a<=0||r>i.length-1)){var o=e-this.getSum(i,n,r);this.adjustSize(o,i,n,r),this.adjustSize(-o,i,r+1),t.full_width=this.getSum(i)}},splitSize:function(e,t){for(var n=[],r=0;r<t;r++)n[r]=0;return this.adjustSize(e,n),n},adjustSize:function(e,t,n,r){n||=0,r===void 0&&(r=t.length-1);for(var i=r-n+1,a=this.getSum(t,n,r),o=n;o<=r;o++){var s=Math.floor(e*(a?t[o]/a:1/i));a-=t[o],e-=s,i--,t[o]+=s}t[t.length-1]+=e},sortScales:function(e){function n(e,n){var r=new Date(1970,0,1);return t.add(r,n,e)-r}e.sort(function(e,t){return n(e.unit,e.step)<n(t.unit,t.step)?1:n(e.unit,e.step)>n(t.unit,t.step)?-1:0});for(var r=0;r<e.length;r++)e[r].index=r},_prepareScaleObject:function(t){var n=t.format;return n||=t.template||t.date||`%d %M`,typeof n==`string`&&(n=e.date.date_to_str(n)),{unit:t.unit||`day`,step:t.step||1,format:n,css:t.css,projection:t.projection||null,column_width:t.column_width||null}},primaryScale:function(t){let n=(t||e.config).scales[0],r={unit:n.unit,step:n.step,template:n.template,format:n.format,date:n.date,css:n.css||e.templates.scale_cell_class,projection:n.projection||null,column_width:n.column_width||null};return this._prepareScaleObject(r)},getAdditionalScales:function(t){return(t||e.config).scales.slice(1).map((function(e){return this._prepareScaleObject(e)}).bind(this))},prepareConfigs:function(e,t,n,r,i,a,o){for(var s=this.splitSize(r,e.length),c=n,l=[],u=e.length-1;u>=0;u--){var d=u==e.length-1,f=this.initScaleConfig(e[u],i,a);d&&this.processIgnores(f),d&&f.column_width&&(c=f.column_width*(f.display_count||f.count)),this.initColSizes(f,t,c,s[u]),this.limitVisibleRange(f),d&&(c=f.full_width),l.unshift(f)}for(var u=0;u<l.length-1;u++)this.alineScaleColumns(l[l.length-1],l[u]);for(var u=0;u<l.length;u++)o&&this.reverseScale(l[u]),this.setPosSettings(l[u]);return l},reverseScale:function(e){e.width=e.width.reverse(),e.trace_x=e.trace_x.reverse();var t=e.trace_indexes;e.trace_indexes={},e.trace_index_transition={},e.rtl=!0;for(var n=0;n<e.trace_x.length;n++)e.trace_indexes[e.trace_x[n].valueOf()]=n,e.trace_index_transition[t[e.trace_x[n].valueOf()]]=n;return e},setPosSettings:function(e){for(var t=0,n=e.trace_x.length;t<n;t++)e.left.push((e.width[t-1]||0)+(e.left[t-1]||0))},_ignore_time_config:function(n,r){if(e.config.skip_off_time){for(var i=!0,a=n,o=0;o<r.step;o++)o&&(a=t.add(n,o,r.unit)),i&&=!this.isWorkTime(a,r.unit);return i}return!1},processIgnores:function(e){e.ignore_x={},e.display_count=e.count},initColSizes:function(e,n,r,i){var a=r;e.height=i;var o=e.display_count===void 0?e.count:e.display_count;o||=1;let s=!isNaN(e.column_width*1)&&e.column_width*1>0;if(s){let t=e.column_width*1;e.col_width=t,a=t*o}else e.col_width=Math.floor(a/o),n&&e.col_width<n&&(e.col_width=n,a=e.col_width*o);e.width=[];for(var c=e.ignore_x||{},l=0;l<e.trace_x.length;l++)if(c[e.trace_x[l].valueOf()]||e.display_count==e.count)s?e.width[l]=e.col_width:e.width[l]=0;else{var u=1;e.unit==`month`&&(u=Math.round((t.add(e.trace_x[l],e.step,e.unit)-e.trace_x[l])/864e5)),e.width[l]=u}s||this.adjustSize(a-this.getSum(e.width),e.width),e.full_width=this.getSum(e.width)},initScaleConfig:function(e,t,n){var r=L({count:0,col_width:0,full_width:0,height:0,width:[],left:[],trace_x:[],trace_indexes:{},min_date:new Date(t),max_date:new Date(n)},e);return this.eachColumn(e.unit,e.step,t,n,function(e){r.count++,r.trace_x.push(new Date(e)),r.trace_indexes[e.valueOf()]=r.trace_x.length-1}),r.trace_x_ascending=r.trace_x.slice(),r},iterateScales:function(e,t,n,r,i){for(var a=t.trace_x,o=e.trace_x,s=n||0,c=r||o.length-1,l=0,u=1;u<a.length;u++){var d=e.trace_indexes[+a[u]];if(d!==void 0&&d<=c){i&&i.apply(this,[l,u,s,d]),s=d,l=u;continue}}},alineScaleColumns:function(e,t,n,r){this.iterateScales(e,t,n,r,function(n,r,i,a){var o=this.getSum(e.width,i,a-1);this.getSum(t.width,n,r-1)!=o&&this.setSumWidth(o,t,n,r-1)})},eachColumn:function(n,r,i,a,o){var s=new Date(i),c=new Date(a);t[n+`_start`]&&(s=t[n+`_start`](s));var l=new Date(s);for(+l>=+c&&(c=t.add(l,r,n));+l<+c;){o.call(this,new Date(l));var u=l.getTimezoneOffset();l=t.add(l,r,n),l=e._correct_dst_change(l,u,r,n),t[n+`_start`]&&(l=t[n+`_start`](l))}},limitVisibleRange:function(e){var n=e.trace_x,r=0,i=e.width.length-1,a=0;if(+n[0]<+e.min_date&&r!=i){var o=Math.floor(e.width[0]*((n[1]-e.min_date)/(n[1]-n[0])));a+=e.width[0]-o,e.width[0]=o,n[0]=new Date(e.min_date)}var s=n.length-1,c=n[s],l=t.add(c,e.step,e.unit);if(+l>+e.max_date&&s>0){var o=e.width[s]-Math.floor(e.width[s]*((l-e.max_date)/(l-c)));a+=e.width[s]-o,e.width[s]=o}if(a){for(var u=this.getSum(e.width),d=0,f=0;f<e.width.length;f++){var p=Math.floor(a*(e.width[f]/u));e.width[f]+=p,d+=p}this.adjustSize(a-d,e.width)}}}}function Fe(e){return e.ext=e.ext||{},e.ext.export_api=e.ext.export_api||{_apiUrl:`https://export.dhtmlx.com/gantt`,_preparePDFConfigRaw(t,n){let r=null;t.start&&t.end&&(r={start_date:e.config.start_date,end_date:e.config.end_date},e.config.start_date=e.date.str_to_date(e.config.date_format)(t.start),e.config.end_date=e.date.str_to_date(e.config.date_format)(t.end)),t=e.mixin(t,{name:`gantt.`+n,data:e.ext.export_api._serializeHtml()}),r&&(e.config.start_date=r.start_date,e.config.end_date=r.end_date)},_prepareConfigPDF(t,n){return t=e.mixin(t||{},{name:`gantt.`+n,data:e.ext.export_api._serializeAll(),config:e.config}),e.ext.export_api._fixColumns(t.config.columns),t},_pdfExportRouter(t,n){t&&t.raw?e.ext.export_api._preparePDFConfigRaw(t,n):t=e.ext.export_api._prepareConfigPDF(t,n),t.version=e.version,e.ext.export_api._sendToExport(t,n)},exportToPDF(t){e.ext.export_api._pdfExportRouter(t,`pdf`)},exportToPNG(t){e.ext.export_api._pdfExportRouter(t,`png`)},exportToICal(t){t=e.mixin(t||{},{name:`gantt.ical`,data:e.ext.export_api._serializePlain().data,version:e.version}),e.ext.export_api._sendToExport(t,`ical`)},exportToExcel(t){t||={};let n,r=[],i,a,o=e.config.smart_rendering;if(t.visual===`base-colors`&&(e.config.smart_rendering=!1),t.start||t.end){i=e.getState(),r=[e.config.start_date,e.config.end_date],a=e.getScrollState();let s=e.date.str_to_date(e.config.date_format);n=e.eachTask,t.start&&(e.config.start_date=s(t.start)),t.end&&(e.config.end_date=s(t.end)),e.render(),e.config.smart_rendering=o,e.eachTask=e.ext.export_api._eachTaskTimed(e.config.start_date,e.config.end_date)}else t.visual===`base-colors`&&(e.render(),e.config.smart_rendering=o);t=e.mixin(t,{name:`gantt.xlsx`,title:`Tasks`,data:e.ext.export_api._serializeTimeline(t),columns:e.ext.export_api._serializeGrid({raw:t.raw,rawDates:!0}),version:e.version}),t.visual&&(t.scales=e.ext.export_api._serializeScales(t)),e.ext.export_api._sendToExport(t,`excel`),(t.start||t.end)&&(e.config.start_date=i.min_date,e.config.end_date=i.max_date,e.eachTask=n,e.render(),e.scrollTo(a.x,a.y),e.config.start_date=r[0],e.config.end_date=r[1])},exportToJSON(t){t=e.mixin(t||{},{name:`gantt.json`,data:e.ext.export_api._serializeAll(),config:e.config,columns:e.ext.export_api._serializeGrid(),worktime:e.ext.export_api._getWorktimeSettings(),version:e.version}),e.ext.export_api._sendToExport(t,`json`)},importFromExcel(t){try{let e=t.data;if(e instanceof File){let n=new FormData;n.append(`file`,e),t.data=n}}catch{}e.ext.export_api._sendImportAjaxExcel(t)},importFromMSProject(t){let n=t.data;try{if(n instanceof File){let e=new FormData;e.append(`file`,n),t.data=e}}catch{}e.ext.export_api._sendImportAjaxMSP(t)},importFromPrimaveraP6(t){return t.type=`primaveraP6-parse`,e.importFromMSProject(t)},exportToMSProject(t){t||={},t.skip_circular_links=t.skip_circular_links===void 0||!!t.skip_circular_links;let n=e.templates.xml_format,r=e.templates.format_date,i=e.config.xml_date,a=e.config.date_format,o=`%d-%m-%Y %H:%i:%s`;e.config.xml_date=o,e.config.date_format=o,e.templates.xml_format=e.date.date_to_str(o),e.templates.format_date=e.date.date_to_str(o);let s=e.ext.export_api._serializeAll();e.ext.export_api._customProjectProperties(s,t),e.ext.export_api._customTaskProperties(s,t),t.skip_circular_links&&e.ext.export_api._clearRecLinks(s),t=e.ext.export_api._exportConfig(s,t),e.ext.export_api._sendToExport(t,t.type||`msproject`),e.config.xml_date=i,e.config.date_format=a,e.templates.xml_format=n,e.templates.format_date=r,e.config.$custom_data=null,e.config.custom=null},exportToPrimaveraP6(t){return t||={},t.type=`primaveraP6`,e.exportToMSProject(t)},_fixColumns(t){for(let n=0;n<t.length;n++)t[n].label=t[n].label||e.locale.labels[`column_`+t[n].name],typeof t[n].width==`string`&&(t[n].width=t[n].width*1)},_xdr(t,n,r){e.ajax.post(t,n,r)},_markColumns(e){let t=e.config.columns;if(t)for(let e=0;e<t.length;e++)t[e].template&&(t[e].$template=!0)},_sendImportAjaxExcel(t){let n=t.server||e.ext.export_api._apiUrl,r=t.store||0,i=t.data,a=t.callback;i.append(`type`,`excel-parse`),i.append(`data`,JSON.stringify({sheet:t.sheet||0})),r&&i.append(`store`,r);let o=new XMLHttpRequest;o.onreadystatechange=function(e){o.readyState===4&&o.status===0&&a&&a(null)},o.onload=function(){let e=o.status>400,t=null;if(!e)try{t=JSON.parse(o.responseText)}catch{}a&&a(t)},o.open(`POST`,n,!0),o.setRequestHeader(`X-Requested-With`,`XMLHttpRequest`),o.send(i)},_ajaxToExport(t,n,r){delete t.callback;let i=t.server||e.ext.export_api._apiUrl,a=`type=`+n+`&store=1&data=`+encodeURIComponent(JSON.stringify(t));e.ext.export_api._xdr(i,a,function(e){let t=e.xmlDoc||e,n=t.status>400,i=null;if(!n)try{i=JSON.parse(t.responseText)}catch{}r(i)})},_serializableGanttConfig(t){let n=e.mixin({},t);return n.columns&&=n.columns.map(function(t){let n=e.mixin({},t);return delete n.editor,n}),delete n.editor_types,n},_sendToExport(t,n){let r=e.date.date_to_str(e.config.date_format||e.config.xml_date);if(t.skin||=e.skin,t.config&&(t.config=e.copy(e.ext.export_api._serializableGanttConfig(t.config)),e.ext.export_api._markColumns(t,n),t.config.start_date&&t.config.end_date&&(t.config.start_date instanceof Date&&(t.config.start_date=r(t.config.start_date)),t.config.end_date instanceof Date&&(t.config.end_date=r(t.config.end_date)))),t.callback)return e.ext.export_api._ajaxToExport(t,n,t.callback);let i=e.ext.export_api._createHiddenForm();i.firstChild.action=t.server||e.ext.export_api._apiUrl,i.firstChild.childNodes[0].value=JSON.stringify(t),i.firstChild.childNodes[1].value=n,i.firstChild.submit()},_createHiddenForm(){if(!e.ext.export_api._hidden_export_form){let t=e.ext.export_api._hidden_export_form=document.createElement(`div`);t.style.display=`none`,t.innerHTML=`<form method='POST' target='_blank'><textarea name='data' style='width:0px; height:0px;' readonly='true'></textarea><input type='hidden' name='type' value=''></form>`,document.body.appendChild(t)}return e.ext.export_api._hidden_export_form},_copyObjectBase(t){let n={start_date:void 0,end_date:void 0,constraint_date:void 0,deadline:void 0};for(let e in t)e.charAt(0)===`$`||e===`baselines`||(n[e]=t[e]);let r=e.templates.xml_format||e.templates.format_date;return n.start_date=r(n.start_date),n.end_date&&=r(n.end_date),n.constraint_date&&=r(n.constraint_date),n.deadline&&=r(n.deadline),n},_color_box:null,_color_hash:{},_getStyles(t){if(e.ext.export_api._color_box||(e.ext.export_api._color_box=document.createElement(`DIV`),e.ext.export_api._color_box.style.cssText=`position:absolute; display:none;`,document.body.appendChild(e.ext.export_api._color_box)),e.ext.export_api._color_hash[t])return e.ext.export_api._color_hash[t];e.ext.export_api._color_box.className=t;let n=e.ext.export_api._getColor(e.ext.export_api._color_box,`color`),r=e.ext.export_api._getColor(e.ext.export_api._color_box,`backgroundColor`);return e.ext.export_api._color_hash[t]=n+`;`+r},_getMinutesWorktimeSettings(e){let t=[];return e.forEach(function(e){t.push(e.startMinute),t.push(e.endMinute)}),t},_getWorktimeSettings(){let t={hours:[0,24],minutes:null,dates:{0:!0,1:!0,2:!0,3:!0,4:!0,5:!0,6:!0}},n;if(!e.config.work_time)n=t;else{let r=e._working_time_helper;if(r&&r.get_calendar)n=r.get_calendar();else if(r)n={hours:r.hours,minutes:null,dates:r.dates};else if(e.config.worktimes&&e.config.worktimes.global){let t=e.config.worktimes.global;if(t.parsed){n={hours:null,minutes:e.ext.export_api._getMinutesWorktimeSettings(t.parsed.hours),dates:{}};for(let r in t.parsed.dates)Array.isArray(t.parsed.dates[r])?n.dates[r]=e.ext.export_api._getMinutesWorktimeSettings(t.parsed.dates[r]):n.dates[r]=t.parsed.dates[r]}else n={hours:t.hours,minutes:null,dates:t.dates}}else n=t}return n},_eachTaskTimed(t,n){return function(r,i,a){i||=e.config.root_id,a||=e;let o=e.getChildren(i);if(o)for(let i=0;i<o.length;i++){let s=e._pull[o[i]];(!t||s.end_date>t)&&(!n||s.start_date<n)&&r.call(a,s),e.hasChild(s.id)&&e.eachTask(r,s.id,a)}}},_originalCopyObject:e.json._copyObject,_copyObjectPlainICal(t){let n=e.templates.task_text(t.start_date,t.end_date,t),r=e.ext.export_api._copyObjectBase(t);return r.text=n||r.text,r},_copyObjectPlainExcel(t){let n=e.templates.task_text(t.start_date,t.end_date,t),r=e.json.serializeTask(t);return r.text=n||r.text,r},_getColor(e,t){let n=e.currentStyle?e.currentStyle[t]:getComputedStyle(e,null)[t];e.closest(`.gantt_task_progress`)&&n===`rgba(0, 0, 0, 0.15)`&&(e=e.parentNode.parentNode,n=e.currentStyle?e.currentStyle[t]:getComputedStyle(e,null)[t]);let r=n.replace(/\s/g,``).match(/^rgba?\((\d+),(\d+),(\d+)/i);return(r&&r.length===4?(`0`+parseInt(r[1],10).toString(16)).slice(-2)+(`0`+parseInt(r[2],10).toString(16)).slice(-2)+(`0`+parseInt(r[3],10).toString(16)).slice(-2):n).replace(`#`,``)},_copyObjectTable(t){let n=e.date.date_to_str(`%Y-%m-%dT%H:%i:%s.000Z`),r=e.ext.export_api._copyObjectColumns(t,e.ext.export_api._copyObjectPlainExcel(t));return r.start_date&&(typeof r.start_date==`string`?r.original_start_date=e.date.str_to_date(e.config.date_format)(r.start_date):(r.original_start_date=r.start_date,r.start_date=n(t.start_date))),r.end_date?typeof r.end_date==`string`?r.original_end_date=e.date.str_to_date(e.config.date_format)(r.end_date):(r.original_end_date=r.end_date,r.end_date=n(t.end_date)):r.original_start_date&&(r.original_end_date=e.calculateEndDate({start_date:r.original_start_date,duration:r.duration,task:r}),r.end_date=n(r.original_end_date)),r},_generatedScales:null,_generateScales(){let t=e.getState(),n=Pe(e),r=[n.primaryScale(e.config)].concat(n.getSubScales(e.config)),i=n.prepareConfigs(r,e.config.min_column_width,1e3,e.config.scale_height-1,t.min_date,t.max_date,e.config.rtl);return e.ext.export_api._generatedScales=i,i},_getDayIndex(t,n){let r=t.trace_indexes;if(r[+n])return r[+n];{r=t.trace_x;let i=e.getState();return+n<=i.min_date?e.config.rtl?r.length:0:+n>=i.max_date?e.config.rtl?0:r.length:xe(r,+n)}},_copyObjectColors(t,n){let r=e.ext.export_api._copyObjectTable(t),i=r.original_start_date,a=r.original_end_date,o=e.columnIndexByDate,s;if(e.ext.export_api._generatedScales){let t=e.ext.export_api._generatedScales;s=t[t.length-1],r.$start=e.ext.export_api._getDayIndex(s,i),r.$end=e.ext.export_api._getDayIndex(s,a)}else s=e.getScale(),r.$start=o.call(e,i),r.$end=o.call(e,a);let c=0,l=s.width;if(l.indexOf(0)>-1){let e=0;for(;e<r.$start;e++)l[e]||c++;for(r.$start-=c;e<r.$end;e++)l[e]||c++;r.$end-=c}r.$level=t.$level,r.$type=t.$rendered_type;let u=e.templates;r.$text=u.task_text(t.start,t.end_date,t),r.$left=u.leftside_text?u.leftside_text(t.start,t.end_date,t):``,r.$right=u.rightside_text?u.rightside_text(t.start,t.end_date,t):``;let d=e.getTaskNode&&e.getTaskNode(t.id);if(d&&d.firstChild){let t=d;n.visual!==`base-colors`&&(t=d.querySelector(`.gantt_task_progress`));let i=e.ext.export_api._getColor(t,`backgroundColor`);i===`363636`&&(i=e.ext.export_api._getColor(d,`backgroundColor`)),r.$color=i}else if(t.color)r.$color=t.color;else{let n=e.templates.task_class(t.start,t.end,t);n&&(r.$color=e.ext.export_api._getStyles(n).split(`;`)[1])}return r},_copyObjectColumns(t,n){for(let r=0;r<e.config.columns.length;r++){let i=e.config.columns[r].template;if(i){let a=i(t);a instanceof Date&&(a=e.templates.date_grid(a,t)),n[`_`+r]=a}}return n},_copyObjectAll(t){let n=e.ext.export_api._copyObjectBase(t),r=[`leftside_text`,`rightside_text`,`task_text`,`progress_text`,`task_class`];for(let i=0;i<r.length;i++){let a=e.templates[r[i]];a&&(n[`$`+i]=a(t.start_date,t.end_date,t))}return e.ext.export_api._copyObjectColumns(t,n),n.open=t.$open,n},_serializeHtml(){let t=e.config.smart_scales,n=e.config.smart_rendering;(t||n)&&(e.config.smart_rendering=!1,e.config.smart_scales=!1,e.render());let r=e.$container.parentNode.innerHTML;return(t||n)&&(e.config.smart_scales=t,e.config.smart_rendering=n,e.render()),r},_serializeAll(){e.json._copyObject=e.ext.export_api._copyObjectAll;let t=e.ext.export_api._exportSerialize();return e.json._copyObject=e.ext.export_api._originalCopyObject,t},_serializePlain(){let t=e.templates.xml_format,n=e.templates.format_date;e.templates.xml_format=e.date.date_to_str(`%Y%m%dT%H%i%s`,!0),e.templates.format_date=e.date.date_to_str(`%Y%m%dT%H%i%s`,!0),e.json._copyObject=e.ext.export_api._copyObjectPlainICal;let r=e.ext.export_api._exportSerialize();return e.templates.xml_format=t,e.templates.format_date=n,e.json._copyObject=e.ext.export_api._originalCopyObject,delete r.links,r},_getRaw(){let t=e.$ui.getView(`timeline`);if(t&&e.config.show_chart){let n=t.$config.width;(e.config.autosize===`x`||e.config.autosize===`xy`)&&(n=Math.max(e.config.autosize_min_width,0));let r=e.getState(),i=t._getScales(),a=e.config.min_column_width,o=e.config.scale_height-1,s=e.config.rtl;return t.$scaleHelper.prepareConfigs(i,a,n,o,r.min_date,r.max_date,s)}else return e.ext.export_api._generateScales()},_serializeTimeline(t){e.ext.export_api._generatedScales=null;let n;t.visual&&(n=e.ext.export_api._getRaw(t.start,t.end)),t.data&&(t.custom_dataset=!0);let r=t.data||e.serialize().data;if(r.forEach(function(n,i){if(t.visual)if(n.render==`split`){let a=[];t.custom_dataset?r.forEach(function(r){if(r.parent==n.id){let n=e.ext.export_api._copyObjectColors(r,t);n.$split_subtask=!0,a.push(n)}}):e.eachTask(function(n){let r=e.ext.export_api._copyObjectColors(n,t);a.push(r)},n.id),n.split_bars=[];let o={};for(let e=0;e<a.length;e++){let t=a[e];for(let e=0;e<a.length;e++){let n=a[e];if(t.id==n.id||o[n.id])continue;let r=+t.original_start_date<+n.original_start_date&&+n.original_start_date<=+t.original_end_date,i=+n.original_start_date<=+t.original_start_date&&+t.original_end_date<=+n.original_end_date;if(r&&(t.original_end_date=n.original_start_date,t.end_date=n.start_date,t.$end=n.$start),i){o[t.id]=!0;break}}o[t.id]||n.split_bars.push(t)}r[i]=n}else n.$split_subtask||(r[i]=e.ext.export_api._copyObjectColors(n,t));else r[i]=e.ext.export_api._copyObjectTable(n)}),t.raw&&!t.data){let t=e.getDatastore(`task`).visibleOrder;if(r.length!==t.length){let e=[];r.forEach(function(n){t.indexOf(n.id)>-1&&e.push(n)}),r=e}}if(t.cellColors){let t=e.templates.timeline_cell_class||e.templates.task_cell_class;if(t){let i=n[0].trace_x;for(let e=1;e<n.length;e++)n[e].trace_x.length>i.length&&(i=n[e].trace_x);for(let n=0;n<r.length;n++){r[n].styles=[];let a=e.getTask(r[n].id);for(let o=0;o<i.length;o++){let s=i[o],c=t(a,s);c&&r[n].styles.push({index:o,styles:e.ext.export_api._getStyles(c)})}}}}return r},_serializeScales(t){let n=[],r=e.ext.export_api._getRaw(),i=1/0,a=0;for(let e=0;e<r.length;e++)i=Math.min(i,r[e].col_width);for(let o=0;o<r.length;o++){let s=0,c=0,l=[];n.push(l);let u=r[o];a=Math.max(a,u.trace_x.length);let d=u.format||u.template||e.date.date_to_str(u.date);for(let n=0;n<u.trace_x.length;n++){let r=u.trace_x[n];c=s+Math.round(u.width[n]/i);let a={text:d(r),start:s,end:c,styles:``};if(t.cellColors){let t=u.css||e.templates.scaleCell_class;if(t){let n=t(r);n&&(a.styles=e.ext.export_api._getStyles(n))}}l.push(a),s=c}}return{width:a,height:n.length,data:n}},_serializeGrid(t){e.exportMode=!0;let n=[],r=e.config.columns,i=0;for(let a=0;a<r.length;a++)r[a].name===`add`||r[a].name===`buttons`||t&&t.raw&&r[a].hide||(n[i]={id:r[a].template?`_`+a:r[a].name,header:r[a].label||e.locale.labels[`column_`+r[a].name],width:r[a].width?Math.floor(r[a].width/4):``,tree:r[a].tree||!1},r[a].name===`duration`&&(n[i].type=`number`),(r[a].name===`start_date`||r[a].name===`end_date`)&&(n[i].type=`date`,t&&t.rawDates&&(n[i].id=r[a].name)),i++);return e.exportMode=!1,n},_exportSerialize(){e.exportMode=!0;let t=e.templates.xml_format,n=e.templates.format_date;e.templates.xml_format=e.templates.format_date=e.date.date_to_str(e.config.date_format||e.config.xml_date);let r=e.serialize();return e.templates.xml_format=t,e.templates.format_date=n,e.exportMode=!1,r},_setLevel(e){for(let t=0;t<e.length;t++){e[t].parent==0&&(e[t]._lvl=1);for(let n=t+1;n<e.length;n++)e[t].id==e[n].parent&&(e[n]._lvl=e[t]._lvl+1)}},_clearLevel(e){for(let t=0;t<e.length;t++)delete e[t]._lvl},_clearRecLinks(t){e.ext.export_api._setLevel(t.data);let n={};for(let e=0;e<t.data.length;e++)n[t.data[e].id]=t.data[e];let r={};for(let i=0;i<t.links.length;i++){let a=t.links[i];e.isTaskExists(a.source)&&e.isTaskExists(a.target)&&n[a.source]&&n[a.target]&&(r[a.id]=a)}for(let t in r)e.ext.export_api._makeLinksSameLevel(r[t],n);let i={};for(let t in n)e.ext.export_api._clearCircDependencies(n[t],r,n,{},i,null);Object.keys(r)&&e.ext.export_api._clearLinksSameLevel(r,n);for(let e=0;e<t.links.length;e++)r[t.links[e].id]||(t.links.splice(e,1),e--);e.ext.export_api._clearLevel(t.data)},_clearCircDependencies(t,n,r,i,a,o){let s=t.$_source;if(!s)return;i[t.id]&&e.ext.export_api._onCircDependencyFind(o,n,i,a),i[t.id]=!0;let c={};for(let t=0;t<s.length;t++){if(a[s[t]])continue;let o=n[s[t]],l=r[o._target];c[l.id]&&e.ext.export_api._onCircDependencyFind(o,n,i,a),c[l.id]=!0,e.ext.export_api._clearCircDependencies(l,n,r,i,a,o)}i[t.id]=!1},_onCircDependencyFind(t,n,r,i){t&&(e.callEvent(`onExportCircularDependency`,[t.id,t])&&delete n[t.id],delete r[t._source],delete r[t._target],i[t.id]=!0)},_makeLinksSameLevel(e,t){let n,r,i={target:t[e.target],source:t[e.source]};if(i.target._lvl!=i.source._lvl){i.target._lvl<i.source._lvl?(n=`source`,r=i.target._lvl):(n=`target`,r=i.source._lvl);do{let e=t[i[n].parent];if(!e)break;i[n]=e}while(i[n]._lvl<r);let e=t[i.source.parent],a=t[i.target.parent];for(;e&&a&&e.id!=a.id;)i.source=e,i.target=a,e=t[i.source.parent],a=t[i.target.parent]}e._target=i.target.id,e._source=i.source.id,i.target.$_target||(i.target.$_target=[]),i.target.$_target.push(e.id),i.source.$_source||(i.source.$_source=[]),i.source.$_source.push(e.id)},_clearLinksSameLevel(e,t){for(let t in e)delete e[t]._target,delete e[t]._source;for(let e in t)delete t[e].$_source,delete t[e].$_target},_customProjectProperties(t,n){if(n&&n.project){for(let t in n.project)e.config.$custom_data||(e.config.$custom_data={}),e.config.$custom_data[t]=typeof n.project[t]==`function`?n.project[t](e.config):n.project[t];delete n.project}},_customTaskProperties(t,n){n&&n.tasks&&(t.data.forEach(function(t){for(let r in n.tasks)t.$custom_data||={},t.$custom_data[r]=typeof n.tasks[r]==`function`?n.tasks[r](t,e.config):n.tasks[r]}),delete n.tasks)},_exportConfig(t,n){let r=n.name||`gantt.xml`;delete n.name,e.config.custom=n;let i=e.ext.export_api._getWorktimeSettings(),a=e.getSubtaskDates();if(a.start_date&&a.end_date){let t=e.templates.format_date||e.templates.xml_format;e.config.start_end={start_date:t(a.start_date),end_date:t(a.end_date)}}let o=!!e._getAutoSchedulingConfig().enabled,s={callback:n.callback||null,config:e.config,data:t,manual:o,name:r,worktime:i};for(let e in n)s[e]=n[e];return s},_sendImportAjaxMSP(t){let n=t.server||e.ext.export_api._apiUrl,r=t.store||0,i=t.data,a=t.callback,o={durationUnit:t.durationUnit||void 0,projectProperties:t.projectProperties||void 0,taskProperties:t.taskProperties||void 0,resourceProperties:t.resourceProperties||void 0};i.append(`type`,t.type||`msproject-parse`),i.append(`data`,JSON.stringify(o)),r&&i.append(`store`,r);let s=new XMLHttpRequest;s.onreadystatechange=function(e){s.readyState===4&&s.status===0&&a&&a(null)},s.onload=function(){let e=s.status>400,t=null;if(!e)try{t=JSON.parse(s.responseText)}catch{}a&&a(t)},s.open(`POST`,n,!0),s.setRequestHeader(`X-Requested-With`,`XMLHttpRequest`),s.send(i)}},e.exportToPDF=e.ext.export_api.exportToPDF,e.exportToPNG=e.ext.export_api.exportToPNG,e.exportToICal=e.ext.export_api.exportToICal,e.exportToExcel=e.ext.export_api.exportToExcel,e.exportToJSON=e.ext.export_api.exportToJSON,e.importFromExcel=e.ext.export_api.importFromExcel,e.importFromMSProject=e.ext.export_api.importFromMSProject,e.exportToMSProject=e.ext.export_api.exportToMSProject,e.importFromPrimaveraP6=e.ext.export_api.importFromPrimaveraP6,e.exportToPrimaveraP6=e.ext.export_api.exportToPrimaveraP6,e.ext.export_api}function Ie(e){function t(){let e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;return!!(e&&e===document.body)}function n(){try{return document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled}catch(e){console.error(`Fullscreen is not available:`,e)}}e.$services.getService(`state`).registerProvider(`fullscreen`,()=>{if(n())return{fullscreen:t()}});let r={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},i={width:null,height:null,top:null,left:null,position:null,zIndex:null,modified:!1},a=null;function o(e){let t=e.parentNode,n=[];for(;t&&t.style;)n.push({element:t,originalPositioning:t.style.position}),t.style.position=`static`,t=t.parentNode;return n}function s(e){e.forEach(e=>{e.element.style.position=e.originalPositioning})}function c(){let t=e.ext.fullscreen.getFullscreenElement(),n=document.body;u(t.style,i),r={overflow:n.style.overflow,padding:n.style.padding?n.style.padding:null,paddingTop:n.style.paddingTop?n.style.paddingTop:null,paddingRight:n.style.paddingRight?n.style.paddingRight:null,paddingBottom:n.style.paddingBottom?n.style.paddingBottom:null,paddingLeft:n.style.paddingLeft?n.style.paddingLeft:null},n.style.padding&&(n.style.padding=`0`),n.style.paddingTop&&(n.style.paddingTop=`0`),n.style.paddingRight&&(n.style.paddingRight=`0`),n.style.paddingBottom&&(n.style.paddingBottom=`0`),n.style.paddingLeft&&(n.style.paddingLeft=`0`),n.style.overflow=`hidden`,t.style.width=`100vw`,t.style.height=`100vh`,t.style.top=`0px`,t.style.left=`0px`,t.style.position=`absolute`,t.style.zIndex=1,i.modified=!0,a=o(t)}function l(){let t=e.ext.fullscreen.getFullscreenElement(),n=document.body;i.modified&&=(r.padding&&(n.style.padding=r.padding),r.paddingTop&&(n.style.paddingTop=r.paddingTop),r.paddingRight&&(n.style.paddingRight=r.paddingRight),r.paddingBottom&&(n.style.paddingBottom=r.paddingBottom),r.paddingLeft&&(n.style.paddingLeft=r.paddingLeft),n.style.overflow=r.overflow,r={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},u(i,t.style),!1),s(a),a=null}function u(e,t){t.width=e.width,t.height=e.height,t.top=e.top,t.left=e.left,t.position=e.position,t.zIndex=e.zIndex}function d(){e.event(document,`webkitfullscreenchange`,p),e.event(document,`mozfullscreenchange`,p),e.event(document,`MSFullscreenChange`,p),e.event(document,`fullscreenChange`,p),e.event(document,`fullscreenchange`,p)}let f=!1;function p(){if(!e.$container)return;let n;t()?f&&(n=`onExpand`,c()):f&&(f=!1,n=`onCollapse`,l()),setTimeout(()=>{e.render()}),setTimeout(()=>{e.callEvent(n,[e.ext.fullscreen.getFullscreenElement()])})}function m(){return!e.$container||!e.ext.fullscreen.getFullscreenElement()?!0:n()?!1:((console.warning||console.log)("The `fullscreen` feature not being allowed, or full-screen mode not being supported"),!0)}e.ext.fullscreen={expand(){if(m()||t()||!e.callEvent(`onBeforeExpand`,[this.getFullscreenElement()]))return;f=!0;let n=document.body,r=n.webkitRequestFullscreen?[Element.ALLOW_KEYBOARD_INPUT]:[],i=n.msRequestFullscreen||n.mozRequestFullScreen||n.webkitRequestFullscreen||n.requestFullscreen;i&&i.apply(n,r)},collapse(){if(m()||!t()||!e.callEvent(`onBeforeCollapse`,[this.getFullscreenElement()]))return;let n=document.msExitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.exitFullscreen;n&&n.apply(document)},toggle(){m()||(t()?this.collapse():this.expand())},getFullscreenElement(){return e.$root}},e.expand=function(){e.ext.fullscreen.expand()},e.collapse=function(){e.ext.fullscreen.collapse()},e.attachEvent(`onGanttReady`,d)}function Le(e){e.$keyboardNavigation.shortcuts={createCommand:function(){return{modifiers:{shift:!1,alt:!1,ctrl:!1,meta:!1},keyCode:null}},parse:function(e){for(var t=[],n=this.getExpressions(this.trim(e)),r=0;r<n.length;r++){for(var i=this.getWords(n[r]),a=this.createCommand(),o=0;o<i.length;o++)this.commandKeys[i[o]]?a.modifiers[i[o]]=!0:this.specialKeys[i[o]]?a.keyCode=this.specialKeys[i[o]]:a.keyCode=i[o].charCodeAt(0);t.push(a)}return t},getCommandFromEvent:function(e){var t=this.createCommand();t.modifiers.shift=!!e.shiftKey,t.modifiers.alt=!!e.altKey,t.modifiers.ctrl=!!e.ctrlKey,t.modifiers.meta=!!e.metaKey,t.keyCode=e.which||e.keyCode,t.keyCode>=96&&t.keyCode<=105&&(t.keyCode-=48);var n=String.fromCharCode(t.keyCode);return n&&(t.keyCode=n.toLowerCase().charCodeAt(0)),t},getHashFromEvent:function(e){return this.getHash(this.getCommandFromEvent(e))},getHash:function(e){var t=[];for(var n in e.modifiers)e.modifiers[n]&&t.push(n);return t.push(e.keyCode),t.join(this.junctionChar)},getExpressions:function(e){return e.split(this.junctionChar)},getWords:function(e){return e.split(this.combinationChar)},trim:function(e){return e.replace(/\s/g,``)},junctionChar:`,`,combinationChar:`+`,commandKeys:{shift:16,alt:18,ctrl:17,meta:!0},specialKeys:{backspace:8,tab:9,enter:13,esc:27,space:32,up:38,down:40,left:37,right:39,home:36,end:35,pageup:33,pagedown:34,delete:46,insert:45,plus:107,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123}}}function Re(e){e.$keyboardNavigation.EventHandler={_handlers:null,findHandler:function(t){this._handlers||={};var n=e.$keyboardNavigation.shortcuts.getHash(t);return this._handlers[n]},doAction:function(t,n){var r=this.findHandler(t);if(r){if(e.$keyboardNavigation.facade.callEvent(`onBeforeAction`,[t,n])===!1)return;r.call(this,n),n.preventDefault?n.preventDefault():n.returnValue=!1}},bind:function(t,n){this._handlers||={};for(var r=e.$keyboardNavigation.shortcuts,i=r.parse(t),a=0;a<i.length;a++)this._handlers[r.getHash(i[a])]=n},unbind:function(t){for(var n=e.$keyboardNavigation.shortcuts,r=n.parse(t),i=0;i<r.length;i++)this._handlers[n.getHash(r[i])]&&delete this._handlers[n.getHash(r[i])]},bindAll:function(e){for(var t in e)this.bind(t,e[t])},initKeys:function(){this._handlers||={},this.keys&&this.bindAll(this.keys)}}}function ze(e){(function(){e.$keyboardNavigation.getFocusableNodes=f,e.$keyboardNavigation.trapFocus=function(t,n){if(n.keyCode!=9)return!1;for(var r=e.$keyboardNavigation.getFocusableNodes(t),i=te(),a=-1,o=0;o<r.length;o++)if(r[o]==i){a=o;break}if(n.shiftKey){if(a<=0){var s=r[r.length-1];if(s)return s.focus(),n.preventDefault(),!0}}else if(a>=r.length-1){var c=r[0];if(c)return c.focus(),n.preventDefault(),!0}return!1}})()}function Be(e){e.$keyboardNavigation.GanttNode=function(){},e.$keyboardNavigation.GanttNode.prototype=e._compose(e.$keyboardNavigation.EventHandler,{focus:function(){e.focus()},blur:function(){},isEnabled:function(){return e.$container.hasAttribute(`tabindex`)},scrollHorizontal:function(t){var n=e.dateFromPos(e.getScrollState().x),r=e.getScale(),i=t<0?-r.step:r.step;n=e.date.add(n,i,r.unit),e.scrollTo(e.posFromDate(n))},scrollVertical:function(t){var n=e.getScrollState().y,r=e.config.row_height;e.scrollTo(null,n+(t<0?-1:1)*r)},keys:{"alt+left":function(e){this.scrollHorizontal(-1)},"alt+right":function(e){this.scrollHorizontal(1)},"alt+up":function(e){this.scrollVertical(-1)},"alt+down":function(e){this.scrollVertical(1)},"ctrl+z":function(){e.undo&&e.undo()},"ctrl+r":function(){e.redo&&e.redo()}}}),e.$keyboardNavigation.GanttNode.prototype.bindAll(e.$keyboardNavigation.GanttNode.prototype.keys)}function Ve(e){e.$keyboardNavigation.KeyNavNode=function(){},e.$keyboardNavigation.KeyNavNode.prototype=e._compose(e.$keyboardNavigation.EventHandler,{isValid:function(){return!0},fallback:function(){return null},moveTo:function(t){e.$keyboardNavigation.dispatcher.setActiveNode(t)},compareTo:function(e){if(!e)return!1;for(var t in this){if(!!this[t]!=!!e[t])return!1;var n=!!(this[t]&&this[t].toString),r=!!(e[t]&&e[t].toString);if(r!=n)return!1;if(r&&n){if(e[t].toString()!=this[t].toString())return!1}else if(e[t]!=this[t])return!1}return!0},getNode:function(){},focus:function(){var t=this.getNode();if(t){var n=e.$keyboardNavigation.facade;n.callEvent(`onBeforeFocus`,[t])!==!1&&t&&(t.setAttribute(`tabindex`,`-1`),t.$eventAttached||(t.$eventAttached=!0,e.event(t,`focus`,function(e){return e.preventDefault(),!1},!1)),e.utils.dom.isChildOf(document.activeElement,t)&&(t=document.activeElement),t.focus&&t.focus(),n.callEvent(`onFocus`,[this.getNode()]))}},blur:function(){var t=this.getNode();t&&(e.$keyboardNavigation.facade.callEvent(`onBlur`,[t]),t.setAttribute(`tabindex`,`-1`))}})}function He(e){e.$keyboardNavigation.HeaderCell=function(e){this.index=e||0},e.$keyboardNavigation.HeaderCell.prototype=e._compose(e.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return!e.config.show_grid&&e.getVisibleTaskCount()?!1:!!e.getGridColumns()[this.index]||!e.getVisibleTaskCount()},fallback:function(){if(!e.config.show_grid)return e.getVisibleTaskCount()?new e.$keyboardNavigation.TaskRow:null;for(var t=e.getGridColumns(),n=this.index;n>=0&&!t[n];)n--;return t[n]?new e.$keyboardNavigation.HeaderCell(n):null},fromDomElement:function(t){var n=E(t,`gantt_grid_head_cell`);if(n){for(var r=0;n&&n.previousSibling;)n=n.previousSibling,r+=1;return new e.$keyboardNavigation.HeaderCell(r)}else return null},getNode:function(){let t=e.$grid_scale;return t?t.childNodes[this.index]:null},keys:{left:function(){this.index>0&&this.moveTo(new e.$keyboardNavigation.HeaderCell(this.index-1))},right:function(){var t=e.getGridColumns();this.index<t.length-1&&this.moveTo(new e.$keyboardNavigation.HeaderCell(this.index+1))},down:function(){var t,n=e.getChildren(e.config.root_id);e.isTaskExists(n[0])&&(t=n[0]),t&&(e.config.keyboard_navigation_cells?this.moveTo(new e.$keyboardNavigation.TaskCell(t,this.index)):this.moveTo(new e.$keyboardNavigation.TaskRow(t)))},end:function(){var t=e.getGridColumns();this.moveTo(new e.$keyboardNavigation.HeaderCell(t.length-1))},home:function(){this.moveTo(new e.$keyboardNavigation.HeaderCell(0))},"enter, space":function(){te().click()},"ctrl+enter":function(){e.isReadonly(this)||e.createTask({},this.taskId)}}}),e.$keyboardNavigation.HeaderCell.prototype.bindAll(e.$keyboardNavigation.HeaderCell.prototype.keys)}function Ue(e){e.$keyboardNavigation.TaskRow=function(t){if(!t){var n=e.getChildren(e.config.root_id);n[0]&&(t=n[0])}this.taskId=t,e.isTaskExists(this.taskId)&&(this.index=e.getTaskIndex(this.taskId),this.globalIndex=e.getGlobalTaskIndex(this.taskId),this.splitItem=!!e.getTask(this.taskId).$split_subtask,this.parentId=e.getParent(this.taskId))},e.$keyboardNavigation.TaskRow.prototype=e._compose(e.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return e.isTaskExists(this.taskId)&&e.getTaskIndex(this.taskId)>-1},fallback:function(){if(e.getVisibleTaskCount()){if(this.splitItem)return new e.$keyboardNavigation.TaskRow(this.parentId);var t=-1;if(e.getTaskByIndex(this.globalIndex-1))t=this.globalIndex-1;else if(e.getTaskByIndex(this.globalIndex+1))t=this.globalIndex+1;else for(var n=this.globalIndex;n>=0;){if(e.getTaskByIndex(n)){t=n;break}n--}if(t>-1)return new e.$keyboardNavigation.TaskRow(e.getTaskByIndex(t).id)}else{var r=new e.$keyboardNavigation.HeaderCell;return r.isValid()?r:null}},fromDomElement:function(t){if(e.config.keyboard_navigation_cells)return null;var n=e.locate(t);return e.isTaskExists(n)?new e.$keyboardNavigation.TaskRow(n):null},getNode:function(){if(e.isTaskExists(this.taskId)&&e.isTaskVisible(this.taskId))return e.config.show_grid?e.$grid.querySelector(`.gantt_row[${e.config.task_attribute}="${String(this.taskId).replaceAll(`"`,`\\"`)}"]`):e.getTaskNode(this.taskId)},focus:function(t){if(!t){let t=e.getTaskPosition(e.getTask(this.taskId)),n=e.getTaskHeight(this.taskId),r=e.getScrollState(),i;i=e.$task?e.$task.offsetWidth:r.inner_width;let a;a=e.$grid_data||e.$task_data?(e.$grid_data||e.$task_data).offsetHeight:r.inner_height;let o=e.config.show_chart&&e.$ui.getView(`timeline`);t.top<r.y||t.top+n>r.y+a?e.scrollTo(null,t.top-20):e.config.scroll_on_click&&o&&(t.left>r.x+i?e.scrollTo(t.left-e.config.task_scroll_offset):t.left+t.width<r.x&&e.scrollTo(t.left+t.width-e.config.task_scroll_offset))}e.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this,[t]),n();function n(){var t=e.$ui.getView(`grid`);if(!(!t||!t.$grid_data)){var n=parseInt(t.$grid.scrollLeft),r=parseInt(t.$grid_data.scrollTop),i=t.$config.scrollX;if(i&&t.$config.scrollable){var a=e.$ui.getView(i);a&&a.scrollTo(n,r)}var o=t.$config.scrollY;if(o){var s=e.$ui.getView(o);s&&s.scrollTo(n,r)}}}},keys:{pagedown:function(){e.getVisibleTaskCount()&&this.moveTo(new e.$keyboardNavigation.TaskRow(e.getTaskByIndex(e.getVisibleTaskCount()-1).id))},pageup:function(){e.getVisibleTaskCount()&&this.moveTo(new e.$keyboardNavigation.TaskRow(e.getTaskByIndex(0).id))},up:function(){var t=null,n=e.getPrev(this.taskId);t=e.isTaskExists(n)?new e.$keyboardNavigation.TaskRow(n):new e.$keyboardNavigation.HeaderCell,this.moveTo(t)},down:function(){var t=e.getNext(this.taskId);e.isTaskExists(t)&&this.moveTo(new e.$keyboardNavigation.TaskRow(t))},"shift+down":function(){e.hasChild(this.taskId)&&!e.getTask(this.taskId).$open&&e.open(this.taskId)},"shift+up":function(){e.hasChild(this.taskId)&&e.getTask(this.taskId).$open&&e.close(this.taskId)},"shift+right":function(){if(!e.isReadonly(this)){var t=e.getPrevSibling(this.taskId);if(e.isTaskExists(t)&&!e.isChildOf(this.taskId,t)){var n=e.getTask(t);n.$open=!0,e.moveTask(this.taskId,-1,t)!==!1&&e.updateTask(this.taskId)}}},"shift+left":function(){if(!e.isReadonly(this)){var t=e.getParent(this.taskId);e.isTaskExists(t)&&e.moveTask(this.taskId,e.getTaskIndex(t)+1,e.getParent(t))!==!1&&e.updateTask(this.taskId)}},space:function(t){e.isSelectedTask(this.taskId)?e.unselectTask(this.taskId):e.selectTask(this.taskId)},"ctrl+left":function(t){e.close(this.taskId)},"ctrl+right":function(t){e.open(this.taskId)},delete:function(t){e.isReadonly(this)||e.$click.buttons.delete(this.taskId)},enter:function(){e.isReadonly(this)||e.showLightbox(this.taskId)},"ctrl+enter":function(){e.isReadonly(this)||e.createTask({},this.taskId)}}}),e.$keyboardNavigation.TaskRow.prototype.bindAll(e.$keyboardNavigation.TaskRow.prototype.keys)}function We(e){e.$keyboardNavigation.TaskCell=function(t,n){if(t=F(t,e.config.root_id),!t){var r=e.getChildren(e.config.root_id);r[0]&&(t=r[0])}this.taskId=t,this.columnIndex=n||0,e.isTaskExists(this.taskId)&&(this.index=e.getTaskIndex(this.taskId),this.globalIndex=e.getGlobalTaskIndex(this.taskId))},e.$keyboardNavigation.TaskCell.prototype=e._compose(e.$keyboardNavigation.TaskRow,{_handlers:null,isValid:function(){return e.$keyboardNavigation.TaskRow.prototype.isValid.call(this)&&!!e.getGridColumns()[this.columnIndex]},fallback:function(){var t=e.$keyboardNavigation.TaskRow.prototype.fallback.call(this),n=t;if(t instanceof e.$keyboardNavigation.TaskRow){for(var r=e.getGridColumns(),i=this.columnIndex;i>=0&&!r[i];)i--;r[i]&&(n=new e.$keyboardNavigation.TaskCell(t.taskId,i))}return n},fromDomElement:function(t){if(!e.config.keyboard_navigation_cells)return null;var n=e.locate(t);if(e.isTaskExists(n)){var r=0,i=w(t,`data-column-index`);return i&&(r=i.getAttribute(`data-column-index`)*1),new e.$keyboardNavigation.TaskCell(n,r)}else return null},getNode:function(){if(e.isTaskExists(this.taskId)&&(e.isTaskVisible(this.taskId)||e.config.show_tasks_outside_timescale))if(e.config.show_grid&&e.$grid){var t=e.$grid.querySelector(`.gantt_row[`+e.config.task_attribute+`='`+this.taskId+`']`);return t?t.querySelector(`[data-column-index='`+this.columnIndex+`']`):null}else return e.getTaskNode(this.taskId)},keys:{up:function(){var t=null,n=e.getPrev(this.taskId);t=e.isTaskExists(n)?new e.$keyboardNavigation.TaskCell(n,this.columnIndex):new e.$keyboardNavigation.HeaderCell(this.columnIndex),this.moveTo(t)},down:function(){var t=e.getNext(this.taskId);e.isTaskExists(t)&&this.moveTo(new e.$keyboardNavigation.TaskCell(t,this.columnIndex))},left:function(){this.columnIndex>0&&this.moveTo(new e.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex-1))},right:function(){var t=e.getGridColumns();this.columnIndex<t.length-1&&this.moveTo(new e.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex+1))},end:function(){var t=e.getGridColumns();this.moveTo(new e.$keyboardNavigation.TaskCell(this.taskId,t.length-1))},home:function(){this.moveTo(new e.$keyboardNavigation.TaskCell(this.taskId,0))},pagedown:function(){e.getVisibleTaskCount()&&this.moveTo(new e.$keyboardNavigation.TaskCell(e.getTaskByIndex(e.getVisibleTaskCount()-1).id,this.columnIndex))},pageup:function(){e.getVisibleTaskCount()&&this.moveTo(new e.$keyboardNavigation.TaskCell(e.getTaskByIndex(0).id,this.columnIndex))}}}),e.$keyboardNavigation.TaskCell.prototype.bindAll(e.$keyboardNavigation.TaskRow.prototype.keys),e.$keyboardNavigation.TaskCell.prototype.bindAll(e.$keyboardNavigation.TaskCell.prototype.keys)}function Ge(e){(function(){var t=[];function n(){return!!t.length}function r(t){setTimeout(function(){n()||e.$destroyed||e.focus()},1)}function i(n){e.eventRemove(n,`keydown`,s),e.event(n,`keydown`,s),t.push(n)}function a(){var n=t.pop();n&&e.eventRemove(n,`keydown`,s),r()}function o(e){return e==t[t.length-1]}function s(t){var n=t.currentTarget;o(n)&&e.$keyboardNavigation.trapFocus(n,t)}function c(){i(e.getLightbox())}e.attachEvent(`onLightbox`,c),e.attachEvent(`onAfterLightbox`,a),e.attachEvent(`onLightboxChange`,function(){a(),c()}),e.attachEvent(`onAfterQuickInfo`,function(){r()}),e.attachEvent(`onMessagePopup`,function(e){u(),i(e)}),e.attachEvent(`onAfterMessagePopup`,function(){a(),d()});var l=null;function u(){l=e.utils.dom.getActiveElement()}function d(){setTimeout(function(){l&&l.focus&&(l.focus(),l=null)},1)}e.$keyboardNavigation.isModal=n})()}function Ke(e){e.$keyboardNavigation.dispatcher={isActive:!1,activeNode:null,globalNode:new e.$keyboardNavigation.GanttNode,enable:function(){this.isActive=!0,this.setActiveNode(this.getActiveNode())},disable:function(){this.isActive=!1},isEnabled:function(){return!!this.isActive},getDefaultNode:function(){var t;return t=e.config.keyboard_navigation_cells?new e.$keyboardNavigation.TaskCell:new e.$keyboardNavigation.TaskRow,t.isValid()||(t=t.fallback()),t},setDefaultNode:function(){this.setActiveNode(this.getDefaultNode())},getActiveNode:function(){var e=this.activeNode;return e&&!e.isValid()&&(e=e.fallback()),e},fromDomElement:function(t){for(var n=[e.$keyboardNavigation.TaskRow,e.$keyboardNavigation.TaskCell,e.$keyboardNavigation.HeaderCell],r=0;r<n.length;r++)if(n[r].prototype.fromDomElement){var i=n[r].prototype.fromDomElement(t);if(i)return i}return null},focusGlobalNode:function(){this.blurNode(this.globalNode),this.focusNode(this.globalNode)},setActiveNode:function(e){var t=!0;this.activeNode&&this.activeNode.compareTo(e)&&(t=!1),this.isEnabled()&&(t&&this.blurNode(this.activeNode),this.activeNode=e,this.focusNode(this.activeNode,!t))},focusNode:function(e,t){e&&e.focus&&e.focus(t)},blurNode:function(e){e&&e.blur&&e.blur()},keyDownHandler:function(t){if(!e.$keyboardNavigation.isModal()&&this.isEnabled()&&!t.defaultPrevented){var n=this.globalNode,r=e.$keyboardNavigation.shortcuts.getCommandFromEvent(t),i=this.getActiveNode();e.$keyboardNavigation.facade.callEvent(`onKeyDown`,[r,t])!==!1&&(i?i.findHandler(r)?i.doAction(r,t):n.findHandler(r)&&n.doAction(r,t):this.setDefaultNode())}},_timeout:null,awaitsFocus:function(){return this._timeout!==null},delay:function(t,n){clearTimeout(this._timeout),this._timeout=setTimeout(e.bind(function(){this._timeout=null,t()},this),n||1)},clearDelay:function(){clearTimeout(this._timeout)}}}function qe(e){function t(e){e.config.keyboard_navigation=!0,e.config.keyboard_navigation_cells=!1,e.$keyboardNavigation={},e._compose=function(){for(var e=Array.prototype.slice.call(arguments,0),t={},n=0;n<e.length;n++){var r=e[n];for(var i in typeof r==`function`&&(r=new r),r)t[i]=r[i]}return t},Le(e),Re(e),ze(e),Be(e),Ve(e),He(e),Ue(e),We(e),Ge(e),Ke(e),(function(){var t=e.$keyboardNavigation.dispatcher;t.isTaskFocused=function(n){var r=t.activeNode;return(r instanceof e.$keyboardNavigation.TaskRow||r instanceof e.$keyboardNavigation.TaskCell)&&r.taskId==n};var n=function(n){if(e.config.keyboard_navigation&&!(!e.config.keyboard_navigation_cells&&o(n))&&!(s(n)||c(n)))return t.keyDownHandler(n)},r=function(n){if(t.$preventDefault)return n.preventDefault(),e.$container.blur(),!1;t.awaitsFocus()||t.focusGlobalNode()},i=function(){if(!t.isEnabled())return;let n=!k(document.activeElement,e.$container)&&document.activeElement.localName!=`body`;var r=t.getActiveNode();if(!(!r||n)){var i=r.getNode(),a,o;i&&i.parentNode&&(a=i.parentNode.scrollTop,o=i.parentNode.scrollLeft),r.focus(!0),i&&i.parentNode&&(i.parentNode.scrollTop=a,i.parentNode.scrollLeft=o)}};e.attachEvent(`onDataRender`,function(){e.config.keyboard_navigation&&i()}),e.attachEvent(`onGanttRender`,function(){e.$root&&(e.eventRemove(e.$root,`keydown`,n),e.eventRemove(e.$container,`focus`,r),e.eventRemove(e.$container,`mousedown`,l),e.config.keyboard_navigation?(e.event(e.$root,`keydown`,n),e.event(e.$container,`focus`,r),e.event(e.$container,`mousedown`,l),e.$container.setAttribute(`tabindex`,`0`)):e.$container.removeAttribute(`tabindex`))});function a(){return e.config.keyboard_navigation_cells?e.$keyboardNavigation.TaskCell:e.$keyboardNavigation.TaskRow}function o(e){return!!A(e.target,`.gantt_grid_editor_placeholder`)}function s(e){return!!A(e.target,`.no_keyboard_navigation`)}function c(e){return!!A(e.target,`.gantt_cal_light`)}function l(n){if(!e.config.keyboard_navigation||!e.config.keyboard_navigation_cells&&o(n))return!0;if(!s(n)){var r,i=t.fromDomElement(n);if(i&&(t.activeNode instanceof e.$keyboardNavigation.TaskCell&&k(n.target,e.$task)&&(i=new e.$keyboardNavigation.TaskCell(i.taskId,t.activeNode.columnIndex)),r=i,e.config.show_grid&&e.$ui.getView(`grid`)&&e.config.keyboard_navigation_cells)){let t=n.target.classList.contains(`gantt_row`),i=n.target.closest(`.gantt_task_line`),a=e.utils.dom.getNodePosition(e.$grid).x,o=a+e.$grid.offsetWidth,s=e.utils.dom.getNodePosition(document.activeElement).x;if(t||i&&(s<a||o<s)){let i=e.$grid.scrollLeft,a=i+e.$grid.offsetWidth,o=0;t&&(i=e.utils.dom.getRelativeEventPosition(n,e.$grid).x);for(let t=0;t<e.config.columns.length;t++){let n=e.config.columns[t];if(!n.hide&&(o+=n.width,i<o)){a<o&&(o-=n.width),r.columnIndex=t;break}}}}r?t.isEnabled()?t.delay(function(){t.setActiveNode(r)}):t.activeNode=r:(t.$preventDefault=!0,setTimeout(function(){t.$preventDefault=!1},300))}}var u=e.attachEvent(`onGanttReady`,function(){if(e.detachEvent(u),e.$data.tasksStore.attachEvent(`onStoreUpdated`,function(n){if(e.config.keyboard_navigation&&t.isEnabled()){let r=t.getActiveNode(),a=e.$ui.getView(`grid`);if(!a||!a.$grid_data)return;let o=a.getItemTop(n),s=a.$grid_data.scrollTop,c=s+a.$grid_data.getBoundingClientRect().height;r&&r.taskId==n&&s<=o&&c>=o&&i()}}),e._smart_render){var n=e._smart_render._redrawTasks;e._smart_render._redrawTasks=function(r,i){if(e.config.keyboard_navigation&&t.isEnabled()){var a=t.getActiveNode();if(a&&a.taskId!==void 0){for(var o=!1,s=0;s<i.length;s++)if(i[s].id==a.taskId&&i[s].start_date){o=!0;break}o||i.push(e.getTask(a.taskId))}}return n.apply(this,arguments)}}});let d=null,f=!1;e.attachEvent(`onTaskCreated`,function(e){return d=e.id,!0}),e.attachEvent(`onAfterTaskAdd`,function(n,r){if(!e.config.keyboard_navigation)return!0;if(t.isEnabled()){if(n==d&&(f=!0,setTimeout(()=>{f=!1,d=null})),f&&r.type==e.config.types.placeholder)return;var i=0,o=t.activeNode;o instanceof e.$keyboardNavigation.TaskCell&&(i=o.columnIndex);var s=a();r.type==e.config.types.placeholder&&e.config.placeholder_task.focusOnCreate===!1||t.setActiveNode(new s(n,i))}}),e.attachEvent(`onTaskIdChange`,function(n,r){if(!e.config.keyboard_navigation)return!0;var i=t.activeNode;return t.isTaskFocused(n)&&(i.taskId=r),!0});var p=setInterval(function(){e.config.keyboard_navigation&&(t.isEnabled()||t.enable())},500);e.attachEvent(`onDestroy`,function(){clearInterval(p)});function m(t){return t instanceof e.$keyboardNavigation.GanttNode?`gantt`:t instanceof e.$keyboardNavigation.HeaderCell?`headerCell`:t instanceof e.$keyboardNavigation.TaskRow?`taskRow`:t instanceof e.$keyboardNavigation.TaskCell?`taskCell`:null}function h(t){var n={gantt:e.$keyboardNavigation.GanttNode,headerCell:e.$keyboardNavigation.HeaderCell,taskRow:e.$keyboardNavigation.TaskRow,taskCell:e.$keyboardNavigation.TaskCell};return n[t]||n.gantt}function g(t){for(var n=e.getGridColumns(),r=0;r<n.length;r++)if(n[r].name==t)return r;return 0}var _={};N(_),e.mixin(_,{addShortcut:function(e,t,n){var r=h(n);r&&r.prototype.bind(e,t)},getShortcutHandler:function(t,n){var r=e.$keyboardNavigation.shortcuts.parse(t);if(r.length)return _.getCommandHandler(r[0],n)},getCommandHandler:function(e,t){var n=h(t);if(n&&e)return n.prototype.findHandler(e)},removeShortcut:function(e,t){var n=h(t);n&&n.prototype.unbind(e)},focus:function(e){var n=e?e.type:null,r=h(n),i;switch(n){case`taskCell`:i=new r(e.id,g(e.column));break;case`taskRow`:i=new r(e.id);break;case`headerCell`:i=new r(g(e.column));break}t.delay(function(){i?t.setActiveNode(i):(t.enable(),t.getActiveNode()?t.awaitsFocus()||t.enable():t.setDefaultNode())})},getActiveNode:function(){if(t.isEnabled()){var n=t.getActiveNode(),r=m(n),i=e.getGridColumns();switch(r){case`taskCell`:return{type:`taskCell`,id:n.taskId,column:i[n.columnIndex].name};case`taskRow`:return{type:`taskRow`,id:n.taskId};case`headerCell`:return{type:`headerCell`,column:i[n.index].name}}}return null}}),e.$keyboardNavigation.facade=_,e.ext.keyboardNavigation=_,e.focus=function(){_.focus()},e.addShortcut=_.addShortcut,e.getShortcutHandler=_.getShortcutHandler,e.removeShortcut=_.removeShortcut})()}t(e)}var Je=class{constructor(e){this.show=(e,t)=>{t===void 0?this._showForTask(e):this._showAtCoordinates(e,t)},this.hide=e=>{let t=this._gantt,n=this._quickInfoBox;this._quickInfoBoxId=0;let r=this._quickInfoTask;if(this._quickInfoTask=null,n&&n.parentNode){if(t.config.quick_info_detached)return t.callEvent(`onAfterQuickInfo`,[r]),n.parentNode.removeChild(n);n.className+=` gantt_qi_hidden`,n.style.right===`auto`?n.style.left=`-350px`:n.style.right=`-350px`,e&&(n.style.left=n.style.right=``,n.parentNode.removeChild(n)),t.callEvent(`onAfterQuickInfo`,[r])}},this.getNode=()=>this._quickInfoBox?this._quickInfoBox:null,this.setContainer=e=>{e&&(this._container=typeof e==`string`?document.getElementById(e):e)},this.setContent=e=>{let t=this._gantt,n={taskId:null,header:{title:``,date:``},content:``,buttons:t.config.quickinfo_buttons};e||=n,e.taskId||=n.taskId,e.header||=n.header,e.header.title||(e.header.title=n.header.title),e.header.date||(e.header.date=n.header.date),e.content||=n.content,e.buttons||=n.buttons;let r=this.getNode();r||=this._createQuickInfoElement(),e.taskId&&(this._quickInfoBoxId=e.taskId);let i=r.querySelector(`.gantt_cal_qi_title`),a=i.querySelector(`.gantt_cal_qi_tcontent`),o=i.querySelector(`.gantt_cal_qi_tdate`),s=r.querySelector(`.gantt_cal_qi_content`),c=r.querySelector(`.gantt_cal_qi_controls`);t._waiAria.quickInfoHeader(r,[e.header.title,e.header.date].join(` `)),a.innerHTML=`<span>${e.header.title}</span>`,o.innerHTML=e.header.date,!e.header.title&&!e.header.date?i.style.display=`none`:i.style.display=``,s.innerHTML=e.content;let l=e.buttons;l.length?c.style.display=``:c.style.display=`none`;let u=``;for(let e=0;e<l.length;e++){let n=t._waiAria.quickInfoButtonAttrString(t.locale.labels[l[e]]);u+=`<div class="gantt_qi_big_icon ${l[e]} dhx_gantt_${l[e]}" title="${t.locale.labels[l[e]]}" ${n}>
|
|
2
|
-
<div class='dhx_menu_icon dhx_gantt_icon ${l[e]} gantt_menu_icon dhx_gantt_${l[e]}'></div>
|
|
3
|
-
<div>${t.locale.labels[l[e]]}</div>
|
|
4
|
-
</div>`}c.innerHTML=u,t.eventRemove(r,`click`,this._qiButtonClickHandler),t.eventRemove(r,`keypress`,this._qiKeyPressHandler),t.event(r,`click`,this._qiButtonClickHandler),t.event(r,`keypress`,this._qiKeyPressHandler)},this._qiButtonClickHandler=e=>{this._qi_button_click(e.target)},this._qiKeyPressHandler=e=>{let t=e.which;(t===13||t===32)&&setTimeout(()=>{this._qi_button_click(e.target)},1)},this._gantt=e}_showAtCoordinates(e,t){this.hide(!0),this._quickInfoBoxId=0,this._quickInfoTask=null,this._quickInfoBox||(this._createQuickInfoElement(),this.setContent()),this._appendAtCoordinates(e,t),this._gantt.callEvent(`onQuickInfo`,[null])}_showForTask(e){let t=this._gantt;if(e===this._quickInfoBoxId&&t.utils.dom.isChildOf(this._quickInfoBox,document.body)||!t.config.show_quick_info)return;this.hide(!0);let n=this._getContainer(),r=this._get_event_counter_part(e,6,n.xViewport,n.yViewport);r&&(this._quickInfoBox=this._init_quick_info(e),this._quickInfoTask=e,this._quickInfoBox.className=this._prepare_quick_info_classname(e),this._fill_quick_data(e),this._show_quick_info(r,6),t.callEvent(`onQuickInfo`,[e]))}_get_event_counter_part(e,t,n,r){let i=this._gantt,a=i.getTaskNode(e);if(!a&&(a=i.getTaskRowNode(e),!a))return null;let o=0,s=t+a.offsetTop+a.offsetHeight,c=a;if(i.utils.dom.isChildOf(c,n))for(;c&&c!==n;)o+=c.offsetLeft,c=c.offsetParent;let l=i.getScrollState();if(c){let e=+(o+a.offsetWidth/2-l.x>n.offsetWidth/2),t=+(s+a.offsetHeight/2-l.y>r.offsetHeight/2);return{left:o,top:s,dx:e,dy:t,width:a.offsetWidth,height:a.offsetHeight}}return null}_createQuickInfoElement(){let e=this._gantt,t=document.createElement(`div`);t.className+=`gantt_cal_quick_info`,e._waiAria.quickInfoAttr(t);var n=`
|
|
5
|
-
<div class="gantt_cal_qi_tcontrols">
|
|
6
|
-
<a class="gantt_cal_qi_close_btn dhx_gantt_icon dhx_gantt_icon_close"></a>
|
|
7
|
-
</div>
|
|
8
|
-
<div class="gantt_cal_qi_title" ${e._waiAria.quickInfoHeaderAttrString()}>
|
|
9
|
-
|
|
10
|
-
<div class="gantt_cal_qi_tcontent"></div>
|
|
11
|
-
<div class="gantt_cal_qi_tdate"></div>
|
|
12
|
-
</div>
|
|
13
|
-
<div class="gantt_cal_qi_content"></div>`;if(n+=`<div class="gantt_cal_qi_controls">`,n+=`</div>`,t.innerHTML=n,e.config.quick_info_detached){let t=this._getContainer();e.event(t.parent,`scroll`,()=>{this.hide()})}return this._quickInfoBox=t,t}_init_quick_info(e){let t=this._gantt,n=t.getTask(e);return typeof this._quickInfoReadonly==`boolean`&&t.isReadonly(n)!==this._quickInfoReadonly&&(this.hide(!0),this._quickInfoBox=null),this._quickInfoReadonly=t.isReadonly(n),this._quickInfoBox||=this._createQuickInfoElement(),this._quickInfoBox}_prepare_quick_info_classname(e){let t=this._gantt,n=t.getTask(e),r=`gantt_cal_quick_info gantt_${t.getTaskType(n)}`,i=t.templates.quick_info_class(n.start_date,n.end_date,n);return i&&(r+=` `+i),r}_fill_quick_data(e){let t=this._gantt,n=t.getTask(e);this._quickInfoBoxId=e;let r=[];if(this._quickInfoReadonly){let e=t.config.quickinfo_buttons,n={icon_delete:!0,icon_edit:!0};for(let t=0;t<e.length;t++)this._quickInfoReadonly&&n[e[t]]||r.push(e[t])}else r=t.config.quickinfo_buttons;this.setContent({header:{title:t.templates.quick_info_title(n.start_date,n.end_date,n),date:t.templates.quick_info_date(n.start_date,n.end_date,n)},content:t.templates.quick_info_content(n.start_date,n.end_date,n),buttons:r})}_appendAtCoordinates(e,t){let n=this._quickInfoBox,r=this._getContainer();(!n.parentNode||n.parentNode.nodeName.toLowerCase()===`#document-fragment`)&&r.parent.appendChild(n),n.style.left=e+`px`,n.style.top=t+`px`}_show_quick_info(e,t){let n=this._gantt,r=this._quickInfoBox;if(n.config.quick_info_detached){let i=this._getContainer();(!r.parentNode||r.parentNode.nodeName.toLowerCase()===`#document-fragment`)&&i.parent.appendChild(r);let a=r.offsetWidth,o=r.offsetHeight,s=n.getScrollState(),c=i.xViewport,l=i.yViewport,u=c.offsetWidth+s.x-a,d=e.top-s.y+o,f=e.top;d>l.offsetHeight/2&&(f=e.top-(o+e.height+2*t),f<s.y&&d<=l.offsetHeight&&(f=e.top)),f<s.y&&(f=s.y);let p=Math.min(Math.max(s.x,e.left-e.dx*(a-e.width)),u),m=f;this._appendAtCoordinates(p,m)}else r.style.top=`20px`,e.dx===1?(r.style.right=`auto`,r.style.left=`-300px`,setTimeout(()=>{r.style.left=`10px`},1)):(r.style.left=`auto`,r.style.right=`-300px`,setTimeout(()=>{r.style.right=`10px`},1)),r.className+=` gantt_qi_`+(e.dx===1?`left`:`right`),n.$root.appendChild(r)}_qi_button_click(e){let t=this._gantt,n=this._quickInfoBox;if(!e||e===n)return;if(e.closest(`.gantt_cal_qi_close_btn`)){this.hide();return}let r=e.className;if(r.indexOf(`_icon`)!==-1){let e=this._quickInfoBoxId;t.$click.buttons[r.split(` `)[1].replace(`icon_`,``)](e)}else this._qi_button_click(e.parentNode)}_getContainer(){let e=this._gantt,t=this._container?this._container:e.$task_data;return t&&t.offsetHeight&&t.offsetWidth?{parent:t,xViewport:e.$task,yViewport:e.$task_data}:(t=this._container?this._container:e.$grid_data,t&&t.offsetHeight&&t.offsetWidth?{parent:t,xViewport:e.$grid,yViewport:e.$grid_data}:{parent:this._container?this._container:e.$layout,xViewport:e.$layout,yViewport:e.$layout})}};function Ye(e){e.ext||={},e.ext.quickInfo=new Je(e),e.config.quickinfo_buttons=[`icon_edit`,`icon_delete`],e.config.quick_info_detached=!0,e.config.show_quick_info=!0,e.templates.quick_info_title=function(e,t,n){return n.text.substr(0,50)},e.templates.quick_info_content=function(e,t,n){return n.details||n.text},e.templates.quick_info_date=function(t,n,r){return e.templates.task_time(t,n,r)},e.templates.quick_info_class=function(e,t,n){return``},e.attachEvent(`onTaskClick`,function(t,n){let r=e.utils.dom.closest(n.target,`.gantt_add`),i=e.utils.dom.closest(n.target,`.gantt_close`),a=e.utils.dom.closest(n.target,`.gantt_open`);return!r&&!i&&!a&&setTimeout(function(){e.ext.quickInfo.show(t)},0),!0});let t=[`onViewChange`,`onLightbox`,`onBeforeTaskDelete`,`onBeforeDrag`],n=function(){return e.ext.quickInfo.hide(),!0};for(let r=0;r<t.length;r++)e.attachEvent(t[r],n);e.attachEvent(`onEmptyClick`,function(t){let r=!0,i=document.querySelector(`.gantt_cal_quick_info`);i&&e.utils.dom.isChildOf(t.target,i)&&(r=!1),r&&n()});function r(){return e.ext.quickInfo.hide(),e.ext.quickInfo._quickInfoBox=null,!0}e.attachEvent(`onGanttReady`,r),e.attachEvent(`onDestroy`,r),e.event(window,`keydown`,function(t){t.keyCode===27&&e.ext.quickInfo.hide()}),e.showQuickInfo=function(){e.ext.quickInfo.show.apply(e.ext.quickInfo,arguments)},e.hideQuickInfo=function(){e.ext.quickInfo.hide.apply(e.ext.quickInfo,arguments)}}function Xe(e,t){e||=je,t||=Me;var n=[],r={attach:function(t,r,i,a){n.push({element:t,event:r,callback:i,capture:a}),e(t,r,i,a)},detach:function(e,r,i,a){t(e,r,i,a);for(var o=0;o<n.length;o++){var s=n[o];s.element===e&&s.event===r&&s.callback===i&&s.capture===a&&(n.splice(o,1),o--)}},detachAll:function(){for(var e=n.slice(),t=0;t<e.length;t++){var i=e[t];r.detach(i.element,i.event,i.callback,i.capture),r.detach(i.element,i.event,i.callback,void 0),r.detach(i.element,i.event,i.callback,!1),r.detach(i.element,i.event,i.callback,!0)}n.splice(0,n.length)},extend:function(){return Xe(this.event,this.eventRemove)}};return r}var Ze=class{constructor(e){this._gantt=e}getNode(){let e=this._gantt;return this._tooltipNode||(this._tooltipNode=document.createElement(`div`),this._tooltipNode.className=`gantt_tooltip`,e._waiAria.tooltipAttr(this._tooltipNode)),this._tooltipNode}setViewport(e){return this._root=e,this}show(e,t){let n=this._gantt,r=document.body,i=this.getNode();if(k(i,r)||(this.hide(),i.style.top=i.style.top||`0px`,i.style.left=i.style.left||`0px`,r.appendChild(i)),this._isLikeMouseEvent(e)){let n=this._calculateTooltipPosition(e);t=n.top,e=n.left}return i.style.top=t+`px`,i.style.left=e+`px`,n._waiAria.tooltipVisibleAttr(i),this}hide(){let e=this._gantt,t=this.getNode();return t&&t.parentNode&&t.parentNode.removeChild(t),e._waiAria.tooltipHiddenAttr(t),this}setContent(e){let t=this.getNode();return t.innerHTML=e,this}_isLikeMouseEvent(e){return!e||typeof e!=`object`?!1:`clientX`in e&&`clientY`in e}_getViewPort(){return this._root||document.body}_calculateTooltipPosition(e){let t=this._gantt,n=this._getViewPortSize(),r=this.getNode(),i={top:0,left:0,width:r.offsetWidth,height:r.offsetHeight,bottom:0,right:0},a=t.config.tooltip_offset_x,o=t.config.tooltip_offset_y,c=document.body,l=D(e,c),u=s(c);l.y+=u.y,i.top=l.y,i.left=l.x,i.top+=o,i.left+=a,i.bottom=i.top+i.height,i.right=i.left+i.width;let d=window.scrollY+c.scrollTop;return i.top<n.top-d?(i.top=n.top,i.bottom=i.top+i.height):i.bottom>n.bottom&&(i.bottom=n.bottom,i.top=i.bottom-i.height),i.left<n.left?(i.left=n.left,i.right=n.left+i.width):i.right>n.right&&(i.right=n.right,i.left=i.right-i.width),l.x>=i.left&&l.x<=i.right&&(i.left=l.x-i.width-a,i.right=i.left+i.width),l.y>=i.top&&l.y<=i.bottom&&(i.top=l.y-i.height-o,i.bottom=i.top+i.height),i.left<0&&(i.left=0),i.right<0&&(i.right=0),i}_getViewPortSize(){let e=this._gantt,t=this._getViewPort(),n=t,r=window.scrollY+document.body.scrollTop,i=window.scrollX+document.body.scrollLeft,a;return t===e.$task_data?(n=e.$task,r=0,i=0,a=s(e.$task)):a=s(n),{left:a.x+i,top:a.y+r,width:a.width,height:a.height,bottom:a.y+a.height+r,right:a.x+a.width+i}}},Qe=class{constructor(e){this._listeners={},this.tooltip=new Ze(e),this._gantt=e,this._domEvents=Xe(),this._initDelayedFunctions()}destructor(){this.tooltip.hide(),this._domEvents.detachAll()}hideTooltip(){this.delayHide()}attach(e){let t=document.body,n=this._gantt;e.global||(t=n.$root);let r=null,i=t=>{let n=C(t),i=A(n,e.selector);if(k(n,this.tooltip.getNode()))return;let a=()=>{r=i,e.onmouseenter(t,i)};r?i&&i===r?e.onmousemove(t,i):(e.onmouseleave(t,r),r=null,i&&i!==r&&a()):i&&a()};this.detach(e.selector),this._domEvents.attach(t,`mousemove`,i),this._listeners[e.selector]={node:t,handler:i}}detach(e){let t=this._listeners[e];t&&this._domEvents.detach(t.node,`mousemove`,t.handler)}tooltipFor(e){let t=e=>{let t=e;return document.createEventObject&&!document.createEvent&&(t=document.createEventObject(e)),t};this._initDelayedFunctions(),this.attach({selector:e.selector,global:e.global,onmouseenter:(n,r)=>{let i=e.html(n,r);i&&this.delayShow(t(n),i)},onmousemove:(n,r)=>{let i=e.html(n,r);i?this.delayShow(t(n),i):(this.delayShow.$cancelTimeout(),this.delayHide())},onmouseleave:()=>{this.delayShow.$cancelTimeout(),this.delayHide()}})}_initDelayedFunctions(){let e=this._gantt;this.delayShow&&this.delayShow.$cancelTimeout(),this.delayHide&&this.delayHide.$cancelTimeout(),this.tooltip.hide(),this.delayShow=ve((t,n)=>{e.callEvent(`onBeforeTooltip`,[t])===!1?this.tooltip.hide():(this.tooltip.setContent(n),this.tooltip.show(t))},e.config.tooltip_timeout||1),this.delayHide=ve(()=>{this.delayShow.$cancelTimeout(),this.tooltip.hide()},e.config.tooltip_hide_timeout||1)}};function $e(e){e.config.tooltip_timeout=30,e.config.tooltip_offset_y=20,e.config.tooltip_offset_x=10,e.config.tooltip_hide_timeout=30;let t=new Qe(e);e.ext.tooltips=t,e.attachEvent(`onGanttReady`,function(){e.$root&&t.tooltipFor({selector:`[`+e.config.task_attribute+`]:not(.gantt_task_row)`,html:t=>{if(e.config.touch&&!e.config.touch_tooltip)return;let n=e.locate(t);if(e.isTaskExists(n)){let t=e.getTask(n);return e.templates.tooltip_text(t.start_date,t.end_date,t)}return null},global:!1})}),e.attachEvent(`onDestroy`,function(){t.destructor()}),e.attachEvent(`onLightbox`,function(){t.hideTooltip()});let n=()=>!!e.getState().link_source_id;e.attachEvent(`onBeforeTooltip`,function(){if(n())return!1}),e.attachEvent(`onGanttScroll`,function(){t.hideTooltip()})}var et={click_drag:Ce,drag_timeline:Ee,fullscreen:Ie,keyboard_navigation:qe,quick_info:Ye,tooltip:$e,export_api:Fe},tt=class{constructor(e){this.addExtension=(e,t)=>{this._extensions[e]=t},this.getExtension=e=>this._extensions[e],this._extensions={};for(let t in e)this._extensions[t]=e[t]}},nt=class{constructor(e,t){this.plugin=e=>{this._ganttPlugin.push(e),M.gantt!==void 0&&M.gantt.getTask&&e(M.gantt)},this.getGanttInstance=e=>{let t=this._factoryMethod(this._bundledExtensions);for(let e=0;e<this._ganttPlugin.length;e++)this._ganttPlugin[e](t);return t._internal_id=this._seed++,e&&this._initFromConfig(t,e),t},this._initFromConfig=(e,t)=>{if(t.plugins)for(let n in t.plugins)this._extensionsManager.getExtension(n)&&e.plugins({[n]:!0});if(t.config&&e.mixin(e.config,t.config,!0),t.templates&&e.attachEvent(`onTemplatesReady`,function(){e.mixin(e.templates,t.templates,!0)},{once:!0}),t.events)for(let n in t.events)e.attachEvent(n,t.events[n]);t.locale&&e.i18n.setLocale(t.locale),Array.isArray(t.calendars)&&t.calendars.forEach(function(t){e.addCalendar(t)}),t.container?e.init(t.container):e.init(),t.data&&(typeof t.data==`string`?e.load(t.data):e.parse(t.data))},this._seed=0,this._ganttPlugin=[],this._factoryMethod=e,this._bundledExtensions=t,this._extensionsManager=new tt(t)}},rt={KEY_CODES:{UP:38,DOWN:40,LEFT:37,RIGHT:39,SPACE:32,ENTER:13,DELETE:46,ESC:27,TAB:9}};function it(){var e={};function t(t,n){e[t]=n}function n(t){return e[t]?e[t]():null}function r(t){e[t]&&delete e[t]}return{services:{},setService:t,getService:n,dropService:r,destructor:function(){for(var t in e)if(e[t]){var n=e[t];n&&n.destructor&&n.destructor()}e=null}}}var at=()=>({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`,placeholder:`placeholder`},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,deepcopy_on_parse:!1,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,container_resize_timeout:20,deadlines:!0,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,link_arrow_size:12,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:`data-task-id`,link_attribute:`data-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:void 0,bar_height:`full`,bar_height_padding:9,min_column_width:70,min_grid_column_width:70,grid_resizer_column_attribute:`data-column-index`,keep_grid_width:!1,grid_resize:!1,grid_elastic_columns:!1,show_tasks_outside_timescale:!1,show_unscheduled:!0,resize_rows:!1,task_grid_row_resizer_attribute:`data-row-index`,min_task_grid_row_height:30,row_height:36,readonly_property:`readonly`,editable_property:`editable`,calendar_property:`calendar_id`,resource_calendars:{},dynamic_resource_calendars:!1,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`,render:!1},drag_multiple:!0,csp:`auto`,auto_scheduling:{}}),V=typeof window<`u`,H=typeof navigator<`u`?navigator:{userAgent:``},U={isIE:V&&(H.userAgent.indexOf(`MSIE`)>=0||H.userAgent.indexOf(`Trident`)>=0),isOpera:V&&(H.userAgent.indexOf(`Opera`)>=0||H.userAgent.indexOf(`OPR`)>=0),isChrome:V&&H.userAgent.indexOf(`Chrome`)>=0,isSafari:V&&(H.userAgent.indexOf(`Safari`)>=0||H.userAgent.indexOf(`Konqueror`)>=0),isFF:V&&H.userAgent.indexOf(`Firefox`)>=0,isIPad:V&&H.userAgent.search(/iPad/gi)>=0,isEdge:V&&H.userAgent.indexOf(`Edge`)!==-1,isNode:!V||typeof navigator>`u`||!1,isSalesforce:V&&(!!M.Sfdc||!!M.$A||!!M.Aura)};function ot(e){if(typeof e==`string`||typeof e==`number`)return e;let t=``;for(let n in e){let r=``;e.hasOwnProperty(n)&&(r=typeof e[n]==`string`?encodeURIComponent(e[n]):typeof e[n]==`number`?String(e[n]):encodeURIComponent(JSON.stringify(e[n])),r=n+`=`+r,t.length&&(r=`&`+r),t+=r)}return t}function st(e,t){var n={method:e};if(t.length===0)throw Error(`Arguments list of query is wrong.`);if(t.length===1)return typeof t[0]==`string`?(n.url=t[0],n.async=!0):(n.url=t[0].url,n.async=t[0].async||!0,n.callback=t[0].callback,n.headers=t[0].headers),t[0].data?typeof t[0].data==`string`?n.data=t[0].data:n.data=ot(t[0].data):n.data=``,n;switch(n.url=t[0],e){case`GET`:case`DELETE`:n.callback=t[1],n.headers=t[2];break;case`POST`:case`PUT`:t[1]?typeof t[1]==`string`?n.data=t[1]:n.data=ot(t[1]):n.data=``,n.callback=t[2],n.headers=t[3];break}return n}function ct(e){return{cache:!0,method:`get`,parse:function(e){if(typeof e!=`string`)return e;var t;return e=e.replace(/^[\s]+/,``),typeof DOMParser<`u`&&!U.isIE?t=new DOMParser().parseFromString(e,`text/xml`):typeof M.ActiveXObject<`u`&&(t=new M.ActiveXObject(`Microsoft.XMLDOM`),t.async=`false`,t.loadXML(e)),t},xmltop:function(t,n,r){if(typeof n.status>`u`||n.status<400){var i=n.responseXML?n.responseXML||n:this.parse(n.responseText||n);if(i&&i.documentElement!==null&&!i.getElementsByTagName(`parsererror`).length)return i.getElementsByTagName(t)[0]}return r!==-1&&e.callEvent(`onLoadXMLError`,[`Incorrect XML`,arguments[1],r]),document.createElement(`DIV`)},xpath:function(e,t){if(t.nodeName||(t=t.responseXML||t),U.isIE)return t.selectNodes(e)||[];for(var n=[],r,i=(t.ownerDocument||t).evaluate(e,t,null,XPathResult.ANY_TYPE,null);r=i.iterateNext(),r;)n.push(r);return n},query:function(e){return this._call(e.method||`GET`,e.url,e.data||``,e.async||!0,e.callback,e.headers)},get:function(e,t,n){var r=st(`GET`,arguments);return this.query(r)},getSync:function(e,t){var n=st(`GET`,arguments);return n.async=!1,this.query(n)},put:function(e,t,n,r){var i=st(`PUT`,arguments);return this.query(i)},del:function(e,t,n){var r=st(`DELETE`,arguments);return this.query(r)},post:function(e,t,n,r){arguments.length==1?t=``:arguments.length==2&&typeof t==`function`&&(n=t,t=``);var i=st(`POST`,arguments);return this.query(i)},postSync:function(e,t,n){t=t===null?``:String(t);var r=st(`POST`,arguments);return r.async=!1,this.query(r)},_call:function(t,n,r,i,a,o){return new e.Promise(function(s,c){var l=new XMLHttpRequest,u=navigator.userAgent.match(/AppleWebKit/)!==null&&navigator.userAgent.match(/Qt/)!==null&&navigator.userAgent.match(/Safari/)!==null;i&&(l.onreadystatechange=function(){if(l.readyState==4||u&&l.readyState==3){if((l.status<200||l.status>299||l.responseText===``)&&!e.callEvent(`onAjaxError`,[l]))return;setTimeout(function(){typeof a==`function`&&a.apply(M,[{xmlDoc:l,filePath:n}]),s(l),typeof a==`function`&&(a=null,l=null)},0)}});var d=!this||!this.cache;if(t==`GET`&&d&&(n+=(n.indexOf(`?`)>=0?`&`:`?`)+`dhxr`+new Date().getTime()+`=1`),l.open(t,n,i),o)for(var f in o)l.setRequestHeader(f,o[f]);else t.toUpperCase()==`POST`||t==`PUT`||t==`DELETE`?l.setRequestHeader(`Content-Type`,`application/x-www-form-urlencoded`):t==`GET`&&(r=null);if(l.setRequestHeader(`X-Requested-With`,`XMLHttpRequest`),l.send(r),!i)return{xmlDoc:l,filePath:n}})},urlSeparator:function(e){return e.indexOf(`?`)==-1?`?`:`&`}}}var lt=(e,t,n)=>{switch(e){case`%d`:return e=>t?n.date.to_fixed(e.getUTCDate()):n.date.to_fixed(e.getDate());case`%m`:return e=>t?n.date.to_fixed(e.getUTCMonth()+1):n.date.to_fixed(e.getMonth()+1);case`%j`:return e=>t?e.getUTCDate():e.getDate();case`%n`:return e=>t?e.getUTCMonth()+1:e.getMonth()+1;case`%y`:return e=>t?n.date.to_fixed(e.getUTCFullYear()%100):n.date.to_fixed(e.getFullYear()%100);case`%Y`:return e=>t?e.getUTCFullYear():e.getFullYear();case`%D`:return e=>t?n.locale.date.day_short[e.getUTCDay()]:n.locale.date.day_short[e.getDay()];case`%l`:return e=>t?n.locale.date.day_full[e.getUTCDay()]:n.locale.date.day_full[e.getDay()];case`%M`:return e=>t?n.locale.date.month_short[e.getUTCMonth()]:n.locale.date.month_short[e.getMonth()];case`%F`:return e=>t?n.locale.date.month_full[e.getUTCMonth()]:n.locale.date.month_full[e.getMonth()];case`%h`:return e=>t?n.date.to_fixed((e.getUTCHours()+11)%12+1):n.date.to_fixed((e.getHours()+11)%12+1);case`%g`:return e=>t?(e.getUTCHours()+11)%12+1:(e.getHours()+11)%12+1;case`%G`:return e=>t?e.getUTCHours():e.getHours();case`%H`:return e=>t?n.date.to_fixed(e.getUTCHours()):n.date.to_fixed(e.getHours());case`%i`:return e=>t?n.date.to_fixed(e.getUTCMinutes()):n.date.to_fixed(e.getMinutes());case`%a`:return e=>t?e.getUTCHours()>11?`pm`:`am`:e.getHours()>11?`pm`:`am`;case`%A`:return e=>t?e.getUTCHours()>11?`PM`:`AM`:e.getHours()>11?`PM`:`AM`;case`%s`:return e=>t?n.date.to_fixed(e.getUTCSeconds()):n.date.to_fixed(e.getSeconds());case`%W`:return e=>t?n.date.to_fixed(n.date.getUTCISOWeek(e)):n.date.to_fixed(n.date.getISOWeek(e));case`%w`:return e=>n.date.to_fixed(n.date.getWeek(e));default:return null}},ut=(e,t,n)=>{let r=[],i=/%[a-zA-Z]/g,a=0,o;for(;(o=i.exec(e))!==null;){o.index>a&&r.push(e.slice(a,o.index));let s=lt(o[0],t,n);r.push(s||o[0]),a=i.lastIndex}return a<e.length&&r.push(e.slice(a)),r},dt=(e,t,n)=>{let r=ut(e,t,n);return e=>{let t=``;for(let n=0;n<r.length;n++){let i=r[n];t+=typeof i==`string`?i:i(e)}return t}},ft=(e,t)=>{switch(e){case`%j`:case`%d`:return(e,t)=>{e[2]=t||1};case`%n`:case`%m`:return(e,t)=>{e[1]=(t||1)-1};case`%y`:return(e,t)=>{e[0]=t*1+(t>50?1900:2e3)};case`%g`:case`%G`:case`%h`:case`%H`:return(e,t)=>{e[3]=t||0};case`%i`:return(e,t)=>{e[4]=t||0};case`%Y`:return(e,t)=>{e[0]=t||0};case`%a`:case`%A`:return(e,t)=>{e[3]=e[3]%12+((t||``).toLowerCase()===`am`?0:12)};case`%s`:return(e,t)=>{e[5]=t||0};case`%M`:return(e,n)=>{e[1]=t.locale.date.month_short_hash[n]||0};case`%F`:return(e,n)=>{e[1]=t.locale.date.month_full_hash[n]||0};default:return null}},pt={date_to_str:dt,str_to_date:(e,t,n)=>{let r=(e.match(/%[a-zA-Z]/g)||[]).map(e=>ft(e,n));return e=>{let n=[0,0,1,0,0,0],i=e.match(/[a-zA-Z]+|[0-9]+/g)||[];for(let e=0;e<r.length;e++){let t=r[e];t&&t(n,i[e])}return t?new Date(Date.UTC(n[0],n[1],n[2],n[3],n[4],n[5])):new Date(n[0],n[1],n[2],n[3],n[4],n[5])}}};function mt(e){let t=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/;function n(t){if(t.indexOf(`T`)===-1&&!e.config.server_utc){let e=t.split(`-`);return new Date(parseInt(e[0],10),parseInt(e[1],10)-1,parseInt(e[2],10))}let n=new Date(t);return isNaN(n.getTime())?null:e.config.server_utc?e.date.convert_to_utc(n):n}let r={_isoDateOnly:!1,_nonIsoStringDetected:!1,formatISODate(e){return e.toISOString()},formatISODateOnly(t){return t.getFullYear()+`-`+e.date.to_fixed(t.getMonth()+1)+`-`+e.date.to_fixed(t.getDate())},init(){let t=e.locale,n=t.date.month_short,r=t.date.month_short_hash={};for(let e=0;e<n.length;e++)r[n[e]]=e;let i=t.date.month_full,a=t.date.month_full_hash={};for(let e=0;e<i.length;e++)a[i[e]]=e},date_part(e){let t=new Date(e),n=new Date(e);return n.setHours(0),n=this.hour_start(n),n.getHours()&&(n.getDate()<t.getDate()||n.getMonth()<t.getMonth()||n.getFullYear()<t.getFullYear())&&n.setTime(n.getTime()+3600*1e3*(24-n.getHours())),n},time_part(e){return(e.valueOf()/1e3-e.getTimezoneOffset()*60)%86400},week_start(t){let n=t.getDay();return e.config.start_on_monday&&(n===0?n=6:n--),this.date_part(this.add(t,-1*n,`day`))},month_start(e){let t=new Date(e);return t.setDate(1),this.date_part(t)},quarter_start(e){let t=this.month_start(e),n=t.getMonth(),r;return r=n>=9?9:n>=6?6:n>=3?3:0,t.setMonth(r),t},year_start(e){let t=new Date(e);return t.setMonth(0),this.month_start(t)},day_start(e){return this.date_part(e)},hour_start(e){let t=new Date(e);return t.getMinutes()&&t.setMinutes(0),this.minute_start(t)},minute_start(e){let t=new Date(e);return t.getSeconds()&&t.setSeconds(0),t.getMilliseconds()&&t.setMilliseconds(0),t},_add_days(e,t,n){e.setDate(e.getDate()+t);let r=t>=0,i=!n.getHours()&&e.getHours(),a=e.getDate()<=n.getDate()||e.getMonth()<n.getMonth()||e.getFullYear()<n.getFullYear();return r&&i&&a&&e.setTime(e.getTime()+3600*1e3*(24-e.getHours())),t>1&&i&&e.setHours(0),e},add(e,t,n){let r=new Date(e.valueOf());switch(n){case`day`:r=this._add_days(r,t,e);break;case`week`:r=this._add_days(r,t*7,e);break;case`month`:r.setMonth(r.getMonth()+t);break;case`year`:r.setYear(r.getFullYear()+t);break;case`hour`:r.setTime(r.getTime()+t*60*60*1e3);break;case`minute`:r.setTime(r.getTime()+t*60*1e3);break;default:return this[`add_`+n](e,t,n)}return r},add_quarter(e,t){return this.add(e,t*3,`month`)},to_fixed(e){return e<10?`0`+e:e},copy(e){return new Date(e.valueOf())},date_to_str(t,n){return pt.date_to_str(t,!!n,e)},str_to_date(t,n){return pt.str_to_date(t,!!n,e)},getISOWeek(t){return e.date._getWeekNumber(t,!0)},_getWeekNumber(e,t){if(!e)return!1;let n=e.getDay();t&&n===0&&(n=7);let r=new Date(e.valueOf());r.setDate(e.getDate()+(4-n));let i=r.getFullYear(),a=Math.round((r.getTime()-new Date(i,0,1).getTime())/864e5);return 1+Math.floor(a/7)},getWeek(t){return e.date._getWeekNumber(t,e.config.start_on_monday)},getUTCISOWeek(t){return e.date.getISOWeek(t)},convert_to_utc(e){return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())},parseDate(i,a){if(i&&!i.getFullYear){if((!a||a===`parse_date`||a===`xml_date`)&&(e.defined(e.templates.xml_date)||e.templates.parse_date&&!e.templates.parse_date._ganttAuto))typeof i==`string`&&(r._nonIsoStringDetected=!0);else if(typeof i==`string`&&t.test(i)){let e=i.indexOf(`T`)!==-1,t=n(i);if(t)return!e&&!r._isoDateOnly?r._isoDateOnly=!0:e&&(r._isoDateOnly=!1),t}else typeof i==`string`&&(r._nonIsoStringDetected=!0);typeof a!=`function`&&(a=typeof a==`string`?a===`parse_date`||a===`xml_date`?e.defined(e.templates.xml_date)?e.templates.xml_date:e.templates.parse_date:e.defined(e.templates[a])?e.templates[a]:e.date.str_to_date(a):e.defined(e.templates.xml_date)?e.templates.xml_date:e.templates.parse_date),i=i?a(i):null}return i}};return r}var ht=1,gt=2,_t=3;function vt(e,t,n,r){let i=t;i[0]===`/`&&(i=document.location.protocol+`//`+document.location.host+t),i=i.replace(/^http(s|):/,`ws$1:`);let a=i.indexOf(`?`)==-1?`?`:`&`;i=`${i}${a}token=${n}&ws=1`;let o=new WebSocket(i);return o.onclose=()=>setTimeout(()=>e.connect(),2e3),o.onmessage=t=>{let n=JSON.parse(t.data);switch(n.action){case`result`:e.result(n.body,[]);break;case`event`:e.fire(n.body.name,n.body.value);break;case`start`:r();break;default:e.onError(n.data)}},o}var yt=class{constructor(e){let{url:t,token:n}=e;this._url=t,this._token=n,this._mode=ht,this._seed=1,this._queue=[],this.data={},this.api={},this._events={}}headers(){return{Accept:`application/json`,"Content-Type":`application/json`,"Remote-Token":this._token}}fetch(e,t){let n={credentials:`include`,headers:this.headers()};return t&&(n.method=`POST`,n.body=t),fetch(e,n).then(e=>e.json())}load(e){return e&&(this._url=e),this.fetch(this._url).then(e=>this.parse(e))}parse(e){let{key:t,websocket:n}=e;t!==void 0&&(this._token=t);for(let t in e.data)this.data[t]=e.data[t];for(let t in e.api){let n=this.api[t]={},r=e.api[t];for(let e in r)n[e]=this._wrapper(t+`.`+e)}return n&&this.connect(),this}connect(){let e=this._socket;e&&(this._socket=null,e.onclose=function(){},e.close()),this._mode=gt,this._socket=vt(this,this._url,this._token,()=>{this._mode=_t,this._send(),this._resubscribe()})}_wrapper(e){return(function(){let t=[].slice.call(arguments),n=null,r=new Promise((r,i)=>{n={data:{id:this._uid(),name:e,args:t},status:1,resolve:r,reject:i},this._queue.push(n)});return n&&this.onCall(n,r),n&&this._mode===_t?this._send(n):setTimeout(()=>this._send(),1),r}).bind(this)}_uid(){return(this._seed++).toString()}_send(e){if(this._mode==gt){setTimeout(()=>this._send(),100);return}let t=e?[e]:this._queue.filter(e=>e.status===1);if(!t.length)return;let n=t.map(e=>(e.status=2,e.data));this._mode===_t?this._socket.send(JSON.stringify({action:`call`,body:n})):this.fetch(this._url,JSON.stringify(n)).catch(e=>this.onError(e)).then(e=>this.result(e,n))}result(e,t){let n={};if(e)for(let t=0;t<e.length;t++)n[e[t].id]=e[t];else for(let e=0;e<t.length;e++)n[t[e].id]={id:t[e].id,error:`Network Error`,data:null};for(let e=this._queue.length-1;e>=0;e--){let t=this._queue[e],r=n[t.data.id];r&&(this.onResponse(t,r),r.error?t.reject(r.error):t.resolve(r.data),this._queue.splice(e,1))}}on(e,t){let n=this._uid(),r=this._events[e],i=!!r;return i||(r=this._events[e]=[]),r.push({id:n,handler:t}),!i&&this._mode==_t&&this._socket.send(JSON.stringify({action:`subscribe`,name:e})),{name:e,id:n}}_resubscribe(){if(this._mode==_t)for(let e in this._events)this._socket.send(JSON.stringify({action:`subscribe`,name:e}))}detach(e){if(!e){if(this._mode==_t)for(let e in this._events)this._socket.send(JSON.stringify({action:`unsubscribe`,key:e}));this._events={};return}let{id:t,name:n}=e,r=this._events[n];if(r){let e=r.filter(e=>e.id!=t);e.length?this._events[n]=e:(delete this._events[n],this._mode==_t&&this._socket.send(JSON.stringify({action:`unsubscribe`,name:n})))}}fire(e,t){let n=this._events[e];if(n)for(let e=0;e<n.length;e++)n[e].handler(t)}onError(e){return null}onCall(e,t){}onResponse(e,t){}},bt=function(e,t){let n=new yt({url:e,token:t});n.fetch=function(e,t){let n={headers:this.headers()};return t&&(n.method=`POST`,n.body=t),fetch(e,n).then(e=>e.json())},this._ready=n.load().then(e=>this._remote=e);function r(){return this._ready}function i(e,t){this.ready().then(n=>{if(typeof e==`string`)n.on(e,t);else for(let t in e)n.on(t,e[t])})}this.ready=r,this.on=i};function xt(e,t){if(!t)return!0;if(e._on_timeout)return!1;let n=Math.ceil(1e3/t);return n<2||(setTimeout(function(){delete e._on_timeout},n),e._on_timeout=!0),!0}function St(e){function t(e){return{target:e.target||e.srcElement,pageX:e.pageX,pageY:e.pageY,clientX:e.clientX,clientY:e.clientY,metaKey:e.metaKey,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey}}function n(n,r){this._obj=n,this._settings=r||{},N(this);var i=this.getInputMethods();this._drag_start_timer=null,e.attachEvent(`onGanttScroll`,B(function(e,t){this.clearDragTimer()},this));for(var a=0,o={passive:!1},s=0;s<i.length;s++)B(function(i){e.event(n,i.down,B(function(o){if(i.accessor(o)&&!(typeof o.button<`u`&&o.button!==0)&&(r.preventDefault&&r.selector&&A(o.target,r.selector)&&o.preventDefault(),!(e.config.touch&&o.timeStamp&&o.timeStamp-a<300)))if(this._settings.original_target=t(o),this._settings.original_element_sizes={...D(o,j(n)),width:o.target.offsetWidth,height:o.target.offsetHeight},e.config.touch){let t=o.target;this.clearDragTimer(),this._drag_start_timer=setTimeout(B(function(){e.getState().lightbox||this.dragStart(n,o,i,t)},this),e.config.touch_drag)}else this.dragStart(n,o,i)},this),o);var s=document.body;e.event(s,i.up,B(function(e){i.accessor(e)&&this.clearDragTimer()},this),o)},this)(i[s])}return n.prototype={traceDragEvents:function(t,n){var r=B(function(e){return this.dragMove(t,e,n.accessor)},this);B(function(e){return this.dragScroll(t,e)},this);var i=B(function(e){if(!(this.config.started&&R(this.config.updates_per_second)&&!xt(this,this.config.updates_per_second))){var t=r(e);if(t)try{e&&e.preventDefault&&e.cancelable&&e.preventDefault()}catch{}return t}},this),a=ne(e.$root),o=this.config.mousemoveContainer||ne(e.$root),s={passive:!1},c=B(function(r){return e.eventRemove(o,n.move,i),e.eventRemove(a,n.up,c,s),this.dragEnd(t)},this);e.event(o,n.move,i,s),e.event(a,n.up,c,s)},checkPositionChange:function(e){var t=e.x-this.config.pos.x,n=e.y-this.config.pos.y;return Math.sqrt(Math.abs(t)**2+Math.abs(n)**2)>this.config.sensitivity},initDnDMarker:function(){var e=this.config.marker=document.createElement(`div`);e.className=`gantt_drag_marker`,e.innerHTML=``,document.body.appendChild(e)},backupEventTarget:function(n,r,i){if(!e.config.touch)return;var a=r(n);let o=a.target||a.srcElement;o.shadowRoot&&i&&(o=i);var s=o.cloneNode(!0);this.config.original_target=t(a),this.config.original_target.target=s,this.config.backup_element=o,o.parentNode.appendChild(s),o.style.display=`none`,(this.config.mousemoveContainer||e.$root||document.body).appendChild(o)},getInputMethods:function(){var t=[];return t.push({move:`mousemove`,down:`mousedown`,up:`mouseup`,accessor:function(e){return e}}),e.config.touch&&(!e.env.isIE||M.maxTouchPoints?t.push({move:`touchmove`,down:`touchstart`,up:`touchend`,accessor:function(e){return e.touches&&e.touches.length>1?null:e.touches[0]?{target:document.elementFromPoint(e.touches[0].clientX,e.touches[0].clientY),pageX:e.touches[0].pageX,pageY:e.touches[0].pageY,clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}:e}}):M.PointerEvent&&t.push({move:`pointermove`,down:`pointerdown`,up:`pointerup`,accessor:function(e){return e.pointerType==`mouse`?null:e}})),t},clearDragTimer:function(){this._drag_start_timer&&=(clearTimeout(this._drag_start_timer),null)},dragStart:function(t,n,r,i){this.config&&this.config.started||(this.config={obj:t,marker:null,started:!1,pos:this.getPosition(n),sensitivity:4},this._settings&&L(this.config,this._settings,!0),this.traceDragEvents(t,r),e._prevent_touch_scroll=!0,n.target.closest(`.gantt_row`)&&!e.config.order_branch&&(e._prevent_touch_scroll=!1),document.body.classList.add(`gantt_noselect`),e.config.touch&&this.dragMove(t,n,r.accessor,i))},dragMove:function(t,n,r,i){var a=r(n);if(!a)return!1;if(!this.config.marker&&!this.config.started){var o=this.getPosition(a);if(e.config.touch||this.checkPositionChange(o)){if(this.config.started=!0,this.config.ignore=!1,e._touch_drag=!0,this.callEvent(`onBeforeDragStart`,[t,this.config.original_target])===!1)return this.config.ignore=!0,!1;this.backupEventTarget(n,r,i),this.initDnDMarker(),e._touch_feedback(),this.callEvent(`onAfterDragStart`,[t,this.config.original_target])}else this.config.ignore=!0}if(!this.config.ignore){if(n.targetTouches&&!a.target)return;let r=e.$root.getRootNode();if(r instanceof ShadowRoot){if(i&&Object.getOwnPropertyDescriptor(a,`target`))a.target=i;else if(r.elementFromPoint&&n.targetTouches){let e=n.targetTouches[0];a.target=r.elementFromPoint(e.clientX,e.clientY)}}a.pos=this.getPosition(a),this.config.marker.style.left=a.pos.x+`px`,this.config.marker.style.top=a.pos.y+`px`;let o=t.parentNode.offsetWidth;return this.config.marker.style.maxWidth=o+`px`,this.config.marker.style.overflow=`hidden`,this.callEvent(`onDragMove`,[t,a,i]),!0}return!1},dragEnd:function(t){var n=this.config.backup_element;n&&n.parentNode&&n.parentNode.removeChild(n),e._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,e._touch_drag=!1,document.body.classList.remove(`gantt_noselect`)},getPosition:function(e){var t=0,n=0;return e.pageX||e.pageY?(t=e.pageX,n=e.pageY):(e.clientX||e.clientY)&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:t,y:n}}},n}var Ct=`_dhxGanttBuiltinTemplate`;function W(e){return typeof e==`function`&&(e[Ct]=!0),e}function wt(e){var t={};function n(n,r,i){i||=n;var a=e.config,o=e.templates;e.config[n]&&t[i]!=a[n]&&(r&&o[i]||(o[i]=e.date.date_to_str(a[n]),t[i]=a[n]))}function r(){var t=e.date,r=t.date_to_str,i=e.config,a=i.xml_date||i.date_format,o=a===`iso`,s=o?function(e){return t.formatISODate(e)}:r(a,i.server_utc);s._ganttAuto=!0;var c=o?function(e){return t.parseDate(e)}:t.str_to_date(a,i.server_utc);c._ganttAuto=!0,n(`date_scale`,!0,void 0,e.config,e.templates),n(`date_grid`,!0,`grid_date_format`,e.config,e.templates),n(`task_date`,!0,void 0,e.config,e.templates),e.mixin(e.templates,{xml_format:void 0,format_date:s,xml_date:void 0,parse_date:c,progress_text:function(e,t,n){return``},grid_header_class:function(e,t){return``},task_text:function(e,t,n){return n.text},task_class:function(e,t,n){return``},task_end_date:function(t){return e.templates.task_date(t)},grid_row_class:function(e,t,n){return``},task_row_class:function(e,t,n){return``},timeline_cell_class:function(e,t){return``},timeline_cell_content:function(e,t){return``},scale_cell_class:function(e){return``},scale_row_class:function(e){return``},grid_indent:W(function(e){return`<div class='gantt_tree_indent'></div>`}),grid_folder:W(function(e){return`<div class='gantt_tree_icon gantt_folder_`+(e.$open?`open`:`closed`)+`'></div>`}),grid_file:W(function(e){return`<div class='gantt_tree_icon gantt_file'></div>`}),grid_open:W(function(e){return`<div class='gantt_tree_icon gantt_`+(e.$open?`close`:`open`)+`'></div>`}),grid_blank:W(function(e){return`<div class='gantt_tree_icon gantt_blank'></div>`}),date_grid:function(t,n,r){return n&&e.isUnscheduledTask(n)&&e.config.show_unscheduled?e.templates.task_unscheduled_time(n):e.templates.grid_date_format(t,r)},task_time:function(t,n,r){return e.isUnscheduledTask(r)&&e.config.show_unscheduled?e.templates.task_unscheduled_time(r):e.templates.task_date(t)+` - `+e.templates.task_end_date(n)},task_unscheduled_time:function(e){return``},time_picker:r(i.time_picker),link_class:function(e){return``},link_description:W(function(t){var n=e.getTask(t.source),r=e.getTask(t.target);return`<b>`+n.text+`</b> – <b>`+r.text+`</b>`}),drag_link:W(function(t,n,r,i){t=e.getTask(t);var a=e.locale.labels,o=`<b>`+t.text+`</b> `+(n?a.link_start:a.link_end)+`<br/>`;return r&&(r=e.getTask(r),o+=`<b> `+r.text+`</b> `+(i?a.link_start:a.link_end)+`<br/>`),o}),drag_link_class:function(t,n,r,i){var a=``;return t&&r&&(a=` `+(e.isLinkAllowed(t,r,n,i)?`gantt_link_allow`:`gantt_link_deny`)),`gantt_link_tooltip`+a},tooltip_date_format:t.date_to_str(`%Y-%m-%d`),tooltip_text:W(function(t,n,r){return`<div>Task: ${r.text}</div>
|
|
14
|
-
<div>Start date: ${e.templates.tooltip_date_format(t)}</div>
|
|
15
|
-
<div>End date: ${e.templates.tooltip_date_format(n)}</div>`}),baseline_text:function(e,t,n){return``}})}return{initTemplates:r,initTemplate:n}}var Tt=(function(){var e={};function t(t){if(e[t])return e[t].method();var n={};for(var r in e)e[r].internal||L(n,e[r].method(),!0);return n}function n(t,n,r){e[t]={method:n,internal:r}}function r(t){delete e[t]}return{getState:t,registerProvider:n,unregisterProvider:r}}),Et=Promise,Dt=function(){return{getTask:function(e){e=F(e,this.config.root_id),this.assert(e,`Invalid argument for gantt.getTask`);var t=this.$data.tasksStore.getItem(e);return this.assert(t,`Task not found id=`+e),t},getTaskByTime:function(e,t){var n=this.$data.tasksStore.getItems(),r=[];if(!(e||t))r=n;else{e=+e||-1/0,t=+t||1/0;for(var i=0;i<n.length;i++){var a=n[i];+a.start_date<t&&+a.end_date>e&&r.push(a)}}return r},isTaskExists:function(e){return!this.$data||!this.$data.tasksStore?!1:this.$data.tasksStore.exists(e)},updateTask:function(e,t){R(t)||(t=this.getTask(e)),this.$data.tasksStore.updateItem(e,t),this.isTaskExists(e)&&this.refreshTask(e)},addTask:function(e,t,n){if(R(e.id)||(e.id=z()),this.isTaskExists(e.id)&&this.getTask(e.id).$index!=e.$index)return e.start_date&&typeof e.start_date==`string`&&(e.start_date=this.date.parseDate(e.start_date,`parse_date`)),e.end_date&&typeof e.end_date==`string`&&(e.end_date=this.date.parseDate(e.end_date,`parse_date`)),this.$data.tasksStore.updateItem(e.id,e);if(R(t)||(t=this.getParent(e)||0),this.isTaskExists(t)||(t=this.config.root_id),this.setParent(e,t),this.getState().lightbox&&this.isTaskExists(t)){var r=this.getTask(t);this.callEvent(`onAfterParentExpand`,[t,r])}return this.$data.tasksStore.addItem(e,n,t)},deleteTask:function(e){return e=F(e,this.config.root_id),this.$data.tasksStore.removeItem(e)},getTaskCount:function(){return this.$data.tasksStore.count()},getVisibleTaskCount:function(){return this.$data.tasksStore.countVisible()},getTaskIndex:function(e){return this.$data.tasksStore.getBranchIndex(e)},getGlobalTaskIndex:function(e){return e=F(e,this.config.root_id),this.assert(e,`Invalid argument`),this.$data.tasksStore.getIndexById(e)},eachTask:function(e,t,n){return this.$data.tasksStore.eachItem(B(e,n||this),t)},eachParent:function(e,t,n){return this.$data.tasksStore.eachParent(B(e,n||this),t)},changeTaskId:function(e,t){this.$data.tasksStore.changeId(e,t);var n=this.$data.tasksStore.getItem(t),r=[];n.$source&&(r=r.concat(n.$source)),n.$target&&(r=r.concat(n.$target));for(var i=0;i<r.length;i++){var a=this.getLink(r[i]);a.source==e&&(a.source=t),a.target==e&&(a.target=t)}},calculateTaskLevel:function(e){return this.$data.tasksStore.calculateItemLevel(e)},getNext:function(e){return this.$data.tasksStore.getNext(e)},getPrev:function(e){return this.$data.tasksStore.getPrev(e)},getParent:function(e){return this.$data.tasksStore.getParent(e)},setParent:function(e,t,n){return this.$data.tasksStore.setParent(e,t,n)},getSiblings:function(e){return this.$data.tasksStore.getSiblings(e).slice()},getNextSibling:function(e){return this.$data.tasksStore.getNextSibling(e)},getPrevSibling:function(e){return this.$data.tasksStore.getPrevSibling(e)},getTaskByIndex:function(e){var t=this.$data.tasksStore.getIdByIndex(e);return this.isTaskExists(t)?this.getTask(t):null},getChildren:function(e){return this.hasChild(e)?this.$data.tasksStore.getChildren(e).slice():[]},hasChild:function(e){return this.$data.tasksStore.hasChild(e)},open:function(e){this.$data.tasksStore.open(e)},close:function(e){this.$data.tasksStore.close(e)},moveTask:function(e,t,n){return n=F(n,this.config.root_id),this.$data.tasksStore.move.apply(this.$data.tasksStore,arguments)},sort:function(e,t,n,r){var i=!r;this.$data.tasksStore.sort(e,t,n),this.callEvent(`onAfterSort`,[e,t,n]),i&&this.render()}}},Ot=function(){return{getLinkCount:function(){return this.$data.linksStore.count()},getLink:function(e){return this.$data.linksStore.getItem(e)},getLinks:function(){return this.$data.linksStore.getItems()},isLinkExists:function(e){return this.$data.linksStore.exists(e)},addLink:function(e){return this.$data.linksStore.addItem(e)},updateLink:function(e,t){R(t)||(t=this.getLink(e)),this.$data.linksStore.updateItem(e,t)},deleteLink:function(e){return this.$data.linksStore.removeItem(e)},changeLinkId:function(e,t){return this.$data.linksStore.changeId(e,t)}}},G={$create:function(e){return L(e||[],this)},$removeAt:function(e,t){e>=0&&this.splice(e,t||1)},$remove:function(e){this.$removeAt(this.$find(e))},$insertAt:function(e,t){if(!t&&t!==0)this.push(e);else{var n=this.splice(t,this.length-t);this[t]=e,this.push.apply(this,n)}},$find:function(e){for(var t=0;t<this.length;t++)if(e==this[t])return t;return-1},$each:function(e,t){for(var n=0;n<this.length;n++)e.call(t||this,this[n])},$map:function(e,t){for(var n=0;n<this.length;n++)this[n]=e.call(t||this,this[n]);return this},$filter:function(e,t){for(var n=0;n<this.length;n++)e.call(t||this,this[n])||(this.splice(n,1),n--);return this}};function kt(e,t,n,r){let i=t?t.config:r;if(i&&i.placeholder_task&&n.exists(e)){let t=n.getItem(e);if(t)return t.type===i.types?.placeholder}return!1}var K=function(e){return this.pull={},this.$initItem=e.initItem,this.visibleOrder=G.$create(),this.fullOrder=G.$create(),this._skip_refresh=!1,this._filterRule=null,this._searchVisibleOrder={},this._indexRangeCache={},this._getItemsCache=null,this.$config=e,N(this),this._attachDataChange(function(){return this._indexRangeCache={},this._getItemsCache=null,!0}),this};K.prototype={_attachDataChange:function(e){this.attachEvent(`onClearAll`,e),this.attachEvent(`onBeforeParse`,e),this.attachEvent(`onBeforeUpdate`,e),this.attachEvent(`onBeforeDelete`,e),this.attachEvent(`onBeforeAdd`,e),this.attachEvent(`onParse`,e),this.attachEvent(`onBeforeFilter`,e)},_parseInner:function(e){for(var t=null,n=[],r=0,i=e.length;r<i;r++)t=e[r],this.$initItem&&(this.$config.copyOnParse()&&(t=I(t)),t=this.$initItem(t)),this.callEvent(`onItemLoading`,[t])&&(this.pull.hasOwnProperty(t.id)||this.fullOrder.push(t.id),n.push(t),this.pull[t.id]=t);return n},parse:function(e){this.isSilent()||this.callEvent(`onBeforeParse`,[e]);var t=this._parseInner(e);this.isSilent()||(this.refresh(),this.callEvent(`onParse`,[t]))},getItem:function(e){return this.pull[e]},_updateOrder:function(e){e.call(this.visibleOrder),e.call(this.fullOrder)},updateItem:function(e,t){if(R(t)||(t=this.getItem(e)),!this.isSilent()&&this.callEvent(`onBeforeUpdate`,[t.id,t])===!1)return!1;L(this.pull[e],t,!0),this.isSilent()||(this.callEvent(`onAfterUpdate`,[t.id,t]),this.callEvent(`onStoreUpdated`,[t.id,t,`update`]))},_removeItemInner:function(e){this._updateOrder(function(){this.$remove(e)}),delete this.pull[e]},removeItem:function(e){var t=this.getItem(e);if(!this.isSilent()&&this.callEvent(`onBeforeDelete`,[t.id,t])===!1)return!1;this.callEvent(`onAfterDeleteConfirmed`,[t.id,t]),this._removeItemInner(e),this.isSilent()&&this.callEvent(`onAfterSilentDelete`,[t.id,t]),this.isSilent()||(this.filter(),this.callEvent(`onAfterDelete`,[t.id,t]),this.callEvent(`onStoreUpdated`,[t.id,t,`delete`]))},_addItemInner:function(e,t){if(this.exists(e.id))this.silent(function(){this.updateItem(e.id,e)});else{var n=this.visibleOrder,r=n.length;(!R(t)||t<0)&&(t=r),t>r&&(t=Math.min(n.length,t))}this.pull[e.id]=e,this._updateOrder(function(){this.$find(e.id)===-1&&this.$insertAt(e.id,t)}),this.filter()},isVisible:function(e){return this.visibleOrder.$find(e)>-1},getVisibleItems:function(){return this.getIndexRange()},addItem:function(e,t){return R(e.id)||(e.id=z()),this.$initItem&&(e=this.$initItem(e)),!this.isSilent()&&this.callEvent(`onBeforeAdd`,[e.id,e])===!1?!1:(this._addItemInner(e,t),this.isSilent()?this.sync_link&&this.sync_link(e):(this.callEvent(`onAfterAdd`,[e.id,e]),this.callEvent(`onStoreUpdated`,[e.id,e,`add`])),e.id)},_changeIdInner:function(e,t){this.pull[e]&&(this.pull[t]=this.pull[e]);var n=this._searchVisibleOrder[e];this.pull[t].id=t,this._updateOrder(function(){this[this.$find(e)]=t}),this._searchVisibleOrder[t]=n,delete this._searchVisibleOrder[e],delete this.pull[e]},changeId:function(e,t){this._changeIdInner(e,t),this.callEvent(`onIdChange`,[e,t])},exists:function(e){return!!this.pull[e]},_moveInner:function(e,t){var n=this.getIdByIndex(e);this._updateOrder(function(){this.$removeAt(e),this.$insertAt(n,Math.min(this.length,t))})},move:function(e,t){var n=this.getIdByIndex(e),r=this.getItem(n);this._moveInner(e,t),this.isSilent()||this.callEvent(`onStoreUpdated`,[r.id,r,`move`])},clearAll:function(){this.$destroyed||(this.silent(function(){this.unselect()}),this.pull={},this.visibleOrder=G.$create(),this.fullOrder=G.$create(),!this.isSilent()&&(this.callEvent(`onClearAll`,[]),this.refresh()))},silent:function(e,t){var n=!1;this.isSilent()&&(n=!0),this._skip_refresh=!0,e.call(t||this),n||(this._skip_refresh=!1)},isSilent:function(){return!!this._skip_refresh},arraysEqual:function(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},refresh:function(e,t){if(!this.$destroyed&&!this.isSilent()){var n;e&&(n=this.getItem(e));var r;if(r=e?[e,n,`paint`]:[null,null,null],this.callEvent(`onBeforeStoreUpdate`,r)!==!1){var i=this._quick_refresh&&!this._mark_recompute;if(this._mark_recompute=!1,e){if(!t&&!i){var a=this.visibleOrder;this.filter(),this.arraysEqual(a,this.visibleOrder)||(e=void 0)}}else i||this.filter();r=e?[e,n,`paint`]:[null,null,null],this.callEvent(`onStoreUpdated`,r)}}},count:function(){return this.fullOrder.length},countVisible:function(){return this.visibleOrder.length},sort:function(e){},serialize:function(){},eachItem:function(e){for(var t=0;t<this.fullOrder.length;t++){var n=this.getItem(this.fullOrder[t]);e.call(this,n)}},find:function(e){var t=[];return this.eachItem(function(n){e(n)&&t.push(n)}),t},filter:function(e){this.isSilent()||this.callEvent(`onBeforeFilter`,[]),this.callEvent(`onPreFilter`,[]);var t=G.$create(),n=[];this.eachItem(function(e){this.callEvent(`onFilterItem`,[e.id,e])&&(kt(e.id,null,this,this._ganttConfig)?n.push(e.id):t.push(e.id))});for(var r=0;r<n.length;r++)t.push(n[r]);this.visibleOrder=t,this._searchVisibleOrder={};for(var r=0;r<this.visibleOrder.length;r++)this._searchVisibleOrder[this.visibleOrder[r]]=r;this.isSilent()||this.callEvent(`onFilter`,[])},getIndexRange:function(e,t){var n=Math.min(t||1/0,this.countVisible()-1),r=e||0,i=r+`-`+n;if(this._indexRangeCache[i])return this._indexRangeCache[i].slice();for(var a=[],o=r;o<=n;o++)a.push(this.getItem(this.visibleOrder[o]));return this._indexRangeCache[i]=a.slice(),a},getItems:function(){if(this._getItemsCache)return this._getItemsCache.slice();var e=[];for(var t in this.pull)e.push(this.pull[t]);return this._getItemsCache=e.slice(),e},getIdByIndex:function(e){return this.visibleOrder[e]},getIndexById:function(e){var t=this._searchVisibleOrder[e];return t===void 0&&(t=-1),t},_getNullIfUndefined:function(e){return e===void 0?null:e},getFirst:function(){return this._getNullIfUndefined(this.visibleOrder[0])},getLast:function(){return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length-1])},getNext:function(e){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(e)+1])},getPrev:function(e){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(e)-1])},destructor:function(){this.callEvent(`onDestroy`,[]),this.detachAllEvents(),this.$destroyed=!0,this.pull=null,this.$initItem=null,this.visibleOrder=null,this.fullOrder=null,this._skip_refresh=null,this._filterRule=null,this._searchVisibleOrder=null,this._indexRangeCache={}}};var At=class{constructor(e){this._datastore=null,this.isSplitItem=e=>e.render==`split`&&this._datastore.hasChild(e.id),this.isSubrowSplitItem=e=>e.split_placement==`subrow`,this.isDefaultSplitItem=e=>e.split_placement==`auto`||e.split_placement===void 0,this.isInlineSplitItem=e=>e.split_placement==`inline`,this._datastore=e}},jt=function(e){K.apply(this,[e]),this._branches={},this._splitTaskHelper=new At(this),this.pull={},this.$initItem=function(t){var n=t;e.initItem&&(n=e.initItem(n));var r=this.getItem(t.id);return r&&!q(r.parent,n.parent)&&this.move(n.id,n.$index||-1,n.parent||this._ganttConfig.root_id),n},this.$parentProperty=e.parentProperty||`parent`,typeof e.rootId==`function`?this.$getRootId=e.rootId:this.$getRootId=(function(e){return function(){return e}})(e.rootId||0),this.$openInitially=e.openInitially,this.visibleOrder=G.$create(),this.fullOrder=G.$create(),this._searchVisibleOrder={},this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,this._skip_refresh=!1,this._ganttConfig=null,e.getConfig&&(this._ganttConfig=e.getConfig());var t={},n={},r={},i={},a=!1;return this._attachDataChange(function(){return this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,!0}),this.attachEvent(`onPreFilter`,function(){this._indexRangeCache={},this._eachItemMainRangeCache=null,t={},n={},r={},i={},a=!1,this.eachItem(function(e){var o=this.getParent(e.id);e.$open&&r[o]!==!1?r[e.id]=!0:r[e.id]=!1,this._isSplitItem(e)&&(a=!0,t[e.id]=!0,n[e.id]=!0),a&&n[o]&&(this._isDefaultItem(e)||this._isInlineChildItem(e))&&(n[e.id]=!0),r[o]||r[o]===void 0||this._isInlineChildItem(e)?i[e.id]=!0:i[e.id]=!1})}),this.attachEvent(`onFilterItem`,function(e,r){var o=!1;if(this._ganttConfig)var o=this._ganttConfig.open_split_tasks;var s=i[r.id];return a&&(s&&n[r.id]&&!t[r.id]&&(s=!!o),n[r.id]&&!t[r.id]&&(this._isSplitChildItem(r)||(r.$split_subtask=!0))),r.$expanded_branch=!!i[r.id],this._isInlineChildItem(r)&&(s=!1),!!s}),this.attachEvent(`onFilter`,function(){t={},n={},r={},i={}}),this};jt.prototype=L({_buildTree:function(e){for(var t=null,n=this.$getRootId(),r=0,i=e.length;r<i;r++)t=e[r],this.setParent(t,F(this.getParent(t),n)||n);for(var r=0,i=e.length;r<i;r++)t=e[r],this._add_branch(t),t.$level=this.calculateItemLevel(t),t.$local_index=this.getBranchIndex(t.id),R(t.$open)||(t.$open=R(t.open)?t.open:this.$openInitially());this._updateOrder()},_isSplitItem:function(e){return this._splitTaskHelper.isSplitItem(e)},_isSplitChildItem:function(e){return this._splitTaskHelper.isSubrowSplitItem(e)},_isDefaultItem:function(e){return this._splitTaskHelper.isDefaultSplitItem(e)},_isInlineChildItem:function(e){return this._splitTaskHelper.isInlineSplitItem(e)},parse:function(e){this._skip_refresh||this.callEvent(`onBeforeParse`,[e]);var t=this._parseInner(e);this._buildTree(t),this.filter(),this._skip_refresh||this.callEvent(`onParse`,[t])},_addItemInner:function(e,t){var n=this.getParent(e);R(n)||(n=this.$getRootId(),this.setParent(e,n));var r=this.getIndexById(n)+Math.min(Math.max(t,0),this.visibleOrder.length);r*1!==r&&(r=void 0),K.prototype._addItemInner.call(this,e,r),this.setParent(e,n),e.hasOwnProperty(`$rendered_parent`)&&this._move_branch(e,e.$rendered_parent),this._add_branch(e,t)},_changeIdInner:function(e,t){var n=this.getChildren(e),r=this._searchVisibleOrder[e];K.prototype._changeIdInner.call(this,e,t);var i=this.getParent(t);this._replace_branch_child(i,e,t),this._branches[e]&&(this._branches[t]=this._branches[e]);for(var a=0;a<n.length;a++){var o=this.getItem(n[a]);o[this.$parentProperty]=t,o.$rendered_parent=t}this._searchVisibleOrder[t]=r,delete this._branches[e]},_traverseBranches:function(e,t){R(t)||(t=this.$getRootId());var n=this._branches[t];if(n)for(var r=0;r<n.length;r++){var i=n[r];e.call(this,i),this._branches[i]&&this._traverseBranches(e,i)}},_updateOrder:function(e){this.fullOrder=G.$create(),this._traverseBranches(function(e){this.fullOrder.push(e)}),e&&K.prototype._updateOrder.call(this,e)},_removeItemInner:function(e){var t=[];this.eachItem(function(e){t.push(e)},e),t.push(this.getItem(e));for(var n=0;n<t.length;n++)this._move_branch(t[n],this.getParent(t[n]),null),K.prototype._removeItemInner.call(this,t[n].id),this._move_branch(t[n],this.getParent(t[n]),null)},move:function(e,t,n){var r=arguments[3],i=(this._ganttConfig||{}).root_id||0;if(r=F(r,i),r){if(r===e)return;n=this.getParent(r),t=this.getBranchIndex(r)}if(q(e,n))return;R(n)||(n=this.$getRootId());var a=this.getItem(e),o=this.getParent(a.id),s=this.getChildren(n);let c=this.getSiblings(e);if(t==-1&&(t=s.length+1),!(q(o,n)&&(this.getBranchIndex(e)==t||n===gantt.config.root_id&&c.length<=1))){if(this.callEvent(`onBeforeItemMove`,[e,n,t])===!1)return!1;for(var l=[],u=0;u<s.length;u++)kt(s[u],null,this,this._ganttConfig)&&(l.push(s[u]),s.splice(u,1),u--);this._replace_branch_child(o,e),s=this.getChildren(n);var d=s[t];d=F(d,i),d?s=s.slice(0,t).concat([e]).concat(s.slice(t)):s.push(e),l.length&&(s=s.concat(l)),!q(a.$rendered_parent,o)&&!q(o,n)&&(a.$rendered_parent=o),this.setParent(a,n),this._branches[n]=s;var f=this.calculateItemLevel(a)-a.$level;a.$level+=f,this.eachItem(function(e){e.$level+=f},a.id,this),this._moveInner(this.getIndexById(e),this.getIndexById(n)+t),this.callEvent(`onAfterItemMove`,[e,n,t]),this.refresh()}},getBranchIndex:function(e){var t=this.getChildren(this.getParent(e));let n=t.indexOf(e+``);return n==-1&&(n=t.indexOf(+e)),n},hasChild:function(e){var t=this._branches[e];return t&&t.length},getChildren:function(e){return this._branches[e]||G.$create()},isChildOf:function(e,t){if(!this.exists(e))return!1;if(t===this.$getRootId())return!0;if(!this.hasChild(t))return!1;var n=this.getItem(e),r=this.getParent(e);if(this.getItem(t).$level>=n.$level)return!1;for(;n&&this.exists(r);){if(n=this.getItem(r),n&&q(n.id,t))return!0;r=this.getParent(n)}return!1},getSiblings:function(e){if(!this.exists(e))return G.$create();var t=this.getParent(e);return this.getChildren(t)},getNextSibling:function(e){for(var t=this.getSiblings(e),n=0,r=t.length;n<r;n++)if(q(t[n],e)){var i=t[n+1];return i===0&&n>0&&(i=`0`),i||null}return null},getPrevSibling:function(e){for(var t=this.getSiblings(e),n=0,r=t.length;n<r;n++)if(q(t[n],e)){var i=t[n-1];return i===0&&n>0&&(i=`0`),i||null}return null},getParent:function(e){var t=null;t=e.id===void 0?this.getItem(e):e;var n;return n=t?t[this.$parentProperty]:this.$getRootId(),n},clearAll:function(){this._branches={},K.prototype.clearAll.call(this)},calculateItemLevel:function(e){var t=0;return this.eachParent(function(){t++},e),t},_setParentInner:function(e,t,n){n||(e.hasOwnProperty(`$rendered_parent`)?this._move_branch(e,e.$rendered_parent,t):this._move_branch(e,e[this.$parentProperty],t))},setParent:function(e,t,n){this._setParentInner(e,t,n),e[this.$parentProperty]=t},_eachItemCached:function(e,t){for(var n=0,r=t.length;n<r;n++)e.call(this,t[n])},_eachItemIterate:function(e,t,n){var r=this.getChildren(t);for(r.length&&(r=r.slice().reverse());r.length;){var i=r.pop(),a=this.getItem(i);if(e.call(this,a),n&&n.push(a),this.hasChild(a.id))for(var o=this.getChildren(a.id),s=o.length,c=s-1;c>=0;c--)r.push(o[c])}},eachItem:function(e,t){var n=this.$getRootId();R(t)||(t=n);var r=F(t,n)||n,i=!1,a=!1,o=null;r===n&&(this._eachItemMainRangeCache?(i=!0,o=this._eachItemMainRangeCache):(a=!0,o=this._eachItemMainRangeCache=[])),i?this._eachItemCached(e,o):this._eachItemIterate(e,r,a?o:null)},eachParent:function(e,t){for(var n={},r=t,i=this.getParent(r);this.exists(i);){if(n[i])throw Error(`Invalid tasks tree. Cyclic reference has been detected on task `+i);n[i]=!0,r=this.getItem(i),e.call(this,r),i=this.getParent(r)}},_add_branch:function(e,t,n){var r=n===void 0?this.getParent(e):n;this.hasChild(r)||(this._branches[r]=G.$create());var i=this.getChildren(r);i.indexOf(e.id+``)>-1||i.indexOf(+e.id)>-1||(t*1==t?i.splice(t,0,e.id):i.push(e.id),e.$rendered_parent=r)},_move_branch:function(e,t,n){this._eachItemMainRangeCache=null,this._replace_branch_child(t,e.id),this.exists(n)||q(n,this.$getRootId())?this._add_branch(e,void 0,n):delete this._branches[e.id],e.$level=this.calculateItemLevel(e),this.eachItem(function(e){e.$level=this.calculateItemLevel(e)},e.id)},_replace_branch_child:function(e,t,n){var r=this.getChildren(e);if(r&&e!==void 0){var i=G.$create();let a=r.indexOf(t+``);a==-1&&!isNaN(+t)&&(a=r.indexOf(+t)),a>-1&&(n?r.splice(a,1,n):r.splice(a,1)),i=r,this._branches[e]=i}},sort:function(e,t,n){this.exists(n)||(n=this.$getRootId()),e||=`order`;var r=typeof e==`string`?(function(t,n){return t[e]==n[e]||P(t[e])&&P(n[e])&&t[e].valueOf()==n[e].valueOf()?0:t[e]>n[e]?1:-1}):e;if(t){var i=r;r=function(e,t){return i(t,e)}}var a=this.getChildren(n);if(a){for(var o=[],s=a.length-1;s>=0;s--)o[s]=this.getItem(a[s]);o.sort(r);for(var s=0;s<o.length;s++)a[s]=o[s].id,this.sort(e,t,a[s])}},filter:function(e){for(let e in this.pull){let t=this.pull[e].$rendered_parent,n=this.getParent(this.pull[e]);q(t,n)||this._move_branch(this.pull[e],t,n)}return K.prototype.filter.apply(this,arguments)},open:function(e){this.exists(e)&&(this.getItem(e).$open=!0,this._skipTaskRecalculation=!0,this.callEvent(`onItemOpen`,[e]))},close:function(e){this.exists(e)&&(this.getItem(e).$open=!1,this._skipTaskRecalculation=!0,this.callEvent(`onItemClose`,[e]))},destructor:function(){K.prototype.destructor.call(this),this._branches=null,this._indexRangeCache={},this._eachItemMainRangeCache=null}},K.prototype);function q(e,t){return String(e)===String(t)}function Mt(e){var t=null,n=e._removeItemInner;function r(e){t=null,this.callEvent(`onAfterUnselect`,[e])}return e._removeItemInner=function(e){return t==e&&r.call(this,e),t&&this.eachItem&&this.eachItem(function(e){e.id==t&&r.call(this,e.id)},e),n.apply(this,arguments)},e.attachEvent(`onIdChange`,function(t,n){e.getSelectedId()==t&&e.silent(function(){e.unselect(t),e.select(n)})}),{select:function(e){if(e){if(t==e)return t;if(!this._skip_refresh&&!this.callEvent(`onBeforeSelect`,[e]))return!1;this.unselect(),t=e,this._skip_refresh||(this.refresh(e),this.callEvent(`onAfterSelect`,[e]))}return t},getSelectedId:function(){return t},isSelected:function(e){return e==t},unselect:function(e){var e=e||t;e&&(t=null,this._skip_refresh||(this.refresh(e),r.call(this,e)))}}}function J(e){return U.isNode||!e.$root}var Nt={bindDataStore:function(e,t){let n=t.getDatastore(e),r={renderItem:function(e,t){let r=t.getLayers(),i=n.getItem(e);if(i&&n.isVisible(e))for(let e=0;e<r.length;e++)r[e].render_item(i)},renderItems:function(e){let t=e.getLayers();for(let e=0;e<t.length;e++)t[e].clear();let r=null,i={};for(let e=0;e<t.length;e++){let s=t[e],c;if(s.get_visible_range){var a=s.get_visible_range(n);if(a.start!==void 0&&a.end!==void 0){var o=a.start+` - `+a.end;i[o]?c=i[o]:(c=n.getIndexRange(a.start,a.end),i[o]=c)}else if(a.ids!==void 0)c=a.ids.map(function(e){return n.getItem(e)});else throw Error(`Invalid range returned from 'getVisibleRange' of the layer`)}else r||=n.getVisibleItems(),c=r;s.prepare_data&&s.prepare_data(c),t[e].render_items(c)}},updateItems:function(e){if(e.update_items){let r=[];if(e.get_visible_range){var t=e.get_visible_range(n);if(t.start!==void 0&&t.end!==void 0&&(r=n.getIndexRange(t.start,t.end)),t.ids!==void 0){let e=t.ids.map(function(e){return n.getItem(e)});e.length>0&&(e=e.filter(e=>e!==void 0),r=r.concat(e))}if((t.start==null||t.end==null)&&t.ids==null)throw Error(`Invalid range returned from 'getVisibleRange' of the layer`)}else r=n.getVisibleItems();e.prepare_data&&e.prepare_data(r,e),e.update_items(r)}}};n.attachEvent(`onStoreUpdated`,function(n,i,a){if(J(t))return!0;let o=t.$services.getService(`layers`).getDataRender(e);o&&(o.onUpdateRequest=function(e){r.updateItems(e)})});function i(e){return!!e.$services.getService(`state`).getState(`batchUpdate`).batch_update}n.attachEvent(`onStoreUpdated`,function(e,r,a){i(t)||(!e||a==`move`||a==`delete`?(n.callEvent(`onBeforeRefreshAll`,[]),n.callEvent(`onAfterRefreshAll`,[])):(n.callEvent(`onBeforeRefreshItem`,[r.id]),n.callEvent(`onAfterRefreshItem`,[r.id])))}),n.attachEvent(`onAfterRefreshAll`,function(){if(J(t))return!0;let n=t.$services.getService(`layers`).getDataRender(e);n&&!i(t)&&r.renderItems(n)}),n.attachEvent(`onAfterRefreshItem`,function(n){if(J(t))return!0;let i=t.$services.getService(`layers`).getDataRender(e);i&&r.renderItem(n,i)}),n.attachEvent(`onItemOpen`,function(){if(J(t)||n.isSilent())return!0;t.render()}),n.attachEvent(`onItemClose`,function(){if(J(t)||n.isSilent())return!0;t.render()});function a(e,t,n,r){for(let r=0;r<e.length;r++)e[r].change_id(t,n)}n.attachEvent(`onIdChange`,function(o,s){if(J(t))return!0;if(n.callEvent(`onBeforeIdChange`,[o,s]),!i(t)&&!n.isSilent()){let i=t.$services.getService(`layers`).getDataRender(e);i?(a(i.getLayers(),o,s,n.getItem(s)),r.renderItem(s,i)):t.render()}})}};function Pt(){for(var e=this.$services.getService(`datastores`),t=[],n=0;n<e.length;n++){var r=this.getDatastore(e[n]);r.$destroyed||t.push(r)}return t}var Ft=function(){return{createDatastore:function(e){var t=(e.type||``).toLowerCase()==`treedatastore`?jt:K;if(e){var n=this;e.openInitially=function(){return n.config.open_tree_initially},e.copyOnParse=function(){return n.config.deepcopy_on_parse}}var r=new t(e);if(this.mixin(r,Mt(r)),e.name){var i=`datastore:`+e.name;r.attachEvent(`onDestroy`,(function(){this.$services.dropService(i);for(var t=this.$services.getService(`datastores`),n=0;n<t.length;n++)if(t[n]===e.name){t.splice(n,1);break}}).bind(this)),this.$services.dropService(i),this.$services.setService(i,function(){return r});var a=this.$services.getService(`datastores`);a?a.indexOf(e.name)<0&&a.push(e.name):(a=[],this.$services.setService(`datastores`,function(){return a}),a.push(e.name)),Nt.bindDataStore(e.name,this)}return r},getDatastore:function(e){return this.$services.getService(`datastore:`+e)},_getDatastores:Pt,refreshData:function(){var e;J(this)||(e=this.getScrollState()),this.callEvent(`onBeforeDataRender`,[]);for(var t=Pt.call(this),n=0;n<t.length;n++)t[n].refresh();this.config.preserve_scroll&&!J(this)&&((e.x||e.y)&&this.scrollTo(e.x,e.y),this.$layout.getScrollbarsInfo().forEach(e=>{let t=this.$ui.getView(e.id);if(!t)return;let n=this.utils.dom.isChildOf(t.$view,this.$container);e.boundViews.forEach(t=>{let r=this.$ui.getView(t);e.y&&r&&!n&&r.scrollTo(void 0,0)})})),this.callEvent(`onDataRender`,[])},isChildOf:function(e,t){return this.$data.tasksStore.isChildOf(e,t)},refreshTask:function(e,t){var n=this.getTask(e),r=this;function i(){if(!(t!==void 0&&!t)){for(var e=0;e<n.$source.length;e++)r.refreshLink(n.$source[e]);for(var e=0;e<n.$target.length;e++)r.refreshLink(n.$target[e])}}if(n&&this.isTaskVisible(e))this.$data.tasksStore.refresh(e,!!this.getState(`tasksDnd`).drag_id||t===!1),i();else if(this.isTaskExists(e)&&this.isTaskExists(this.getParent(e))&&!this._bulk_dnd){this.refreshTask(this.getParent(e));var a=!1;this.eachParent(function(e){(a||this.isSplitTask(e))&&(a=!0)},e),a&&i()}},refreshLink:function(e){this.$data.linksStore.refresh(e,!!this.getState(`tasksDnd`).drag_id)},silent:function(e){var t=this;t.$data.tasksStore.silent(function(){t.$data.linksStore.silent(function(){e()})})},clearAll:function(){for(var e=Pt.call(this),t=0;t<e.length;t++)e[t].silent(function(){e[t].clearAll()});for(var t=0;t<e.length;t++)e[t].clearAll();this._update_flags(),this.date._isoDateOnly=!1,this.date._nonIsoStringDetected=!1,this.userdata={},this.callEvent(`onClear`,[]),this.render()},_clear_data:function(){this.$data.tasksStore.clearAll(),this.$data.linksStore.clearAll(),this._update_flags(),this.userdata={}},selectTask:function(e){var t=this.$data.tasksStore;if(!this.config.select_task)return!1;if(e=F(e,this.config.root_id),e){let n=this.getSelectedId();t._skipResourceRepaint=!0,t.select(e),t._skipResourceRepaint=!1,n&&t.pull[n].$split_subtask&&n!=e&&this.refreshTask(n),t.pull[e].$split_subtask&&n!=e&&this.refreshTask(e)}return t.getSelectedId()},unselectTask:function(e){var t=this.$data.tasksStore;t.unselect(e),e&&t.pull[e].$split_subtask&&this.refreshTask(e)},isSelectedTask:function(e){return this.$data.tasksStore.isSelected(e)},getSelectedId:function(){return this.$data.tasksStore.getSelectedId()}}};function It(){var e=L({},Ft());return L(e,Dt()),L(e,Ot()),e}var Lt={create:It};function Rt(e,t){var n={start_date:null,end_date:null};if(t.config.start_date&&t.config.end_date){n.start_date=t.date[e+`_start`](new Date(t.config.start_date));var r=new Date(t.config.end_date),i=t.date[e+`_start`](new Date(r));r=+r==+i?i:t.date.add(i,1,e),n.end_date=r}return n}function zt(e){let t=new Pe(e).primaryScale(),n=t.unit,r=t.step;if(e.config.scale_offset_minimal){let t=new Pe(e),i=[t.primaryScale()].concat(t.getAdditionalScales());t.sortScales(i),n=i[i.length-1].unit,r=i[i.length-1].step||1}return{unit:n,step:r}}function Bt(e){var t=zt(e),n=t.unit,r=t.step,i=Rt(n,e);if(!(i.start_date&&i.end_date)){for(var a=!0,o=e.getTaskByTime(),s=0;s<o.length;s++)if(o[s].type!==e.config.types.project){a=!1;break}if(o.length&&a){var c=o[0].start_date,l=e.date.add(c,1,e.config.duration_unit);i={start_date:new Date(c),end_date:new Date(l)}}else i=e.getSubtaskDates();(!i.start_date||!i.end_date)&&(i={start_date:new Date,end_date:new Date}),e.eachTask(function(t){e.config.deadlines&&t.deadline&&Vt(i,t.deadline,t.deadline),t.constraint_date&&t.constraint_type&&e._getAutoSchedulingConfig().apply_constraints&&e.config.constraint_types&&t.constraint_type!==e.config.constraint_types.ASAP&&t.constraint_type!==e.config.constraint_types.ALAP&&Vt(i,t.constraint_date,t.constraint_date),e.config.baselines&&t.baselines&&t.baselines.forEach(function(e){Vt(i,e.start_date,e.end_date)})}),i.start_date=e.date[n+`_start`](i.start_date),i.start_date=e.calculateEndDate({start_date:e.date[n+`_start`](i.start_date),duration:-1,unit:n,step:r}),i.end_date=e.date[n+`_start`](i.end_date),i.end_date=e.calculateEndDate({start_date:i.end_date,duration:2,unit:n,step:r})}e._min_date=i.start_date,e._max_date=i.end_date}function Vt(e,t,n){t<e.start_date&&(e.start_date=new Date(t)),n>e.end_date&&(e.end_date=new Date(n))}function Ht(e){if(e.config.fit_tasks){var t=+e._min_date,n=+e._max_date;if(+e._min_date!=t||+e._max_date!=n)return e.render(),e.callEvent(`onScaleAdjusted`,[]),!0}return!1}function Ut(e){Bt(e),Ht(e)}function Wt(e,t,n){for(let r=0;r<t.length;r++)e.isLinkExists(t[r])&&(n[String(t[r])]=e.getLink(t[r]))}function Gt(e,t,n){t.$source&&t.$target&&(Wt(e,t.$source,n),Wt(e,t.$target,n))}function Kt(e,t){let n={};return e.isTaskExists(t)&&Gt(e,e.getTask(t),n),e.eachTask(function(t){Gt(e,t,n)},t),n}function qt(e,t){let n={};return e.eachTask(function(e){n[String(e.id)]=e},t),n}var Jt={getSubtreeLinks:Kt,getSubtreeTasks:qt};function Yt(e){L(e,Lt.create());var t=e.createDatastore({name:`task`,type:`treeDatastore`,rootId:function(){return e.config.root_id},initItem:B(c,e),getConfig:function(){return e.config}}),n=e.createDatastore({name:`link`,initItem:B(l,e)});e.attachEvent(`onDestroy`,function(){t.destructor(),n.destructor()}),e.attachEvent(`onLinkValidation`,function(t){if(e.isLinkExists(t.id)||t.id===`predecessor_generated`)return!0;for(var n=e.getTask(t.source).$source,r=0;r<n.length;r++){var i=e.getLink(n[r]),a=t.source==i.source,o=t.target==i.target,s=t.type==i.type;if(a&&o&&s)return!1}return!0}),t.attachEvent(`onBeforeRefreshAll`,function(){if(!t._skipTaskRecalculation)for(var n=t.getVisibleItems(),r=0;r<n.length;r++){var i=n[r];i.$index=r,i.$local_index=e.getTaskIndex(i.id),e.resetProjectDates(i)}}),t.attachEvent(`onFilterItem`,function(t,n){if(e.config.show_tasks_outside_timescale)return!0;let r=null,i=null;if(e.config.start_date&&e.config.end_date){if(e._isAllowedUnscheduledTask(n))return!0;if(r=e.config.start_date.valueOf(),i=e.config.end_date.valueOf(),n.start_date&&+n.start_date>i||n.end_date&&+n.end_date<+r)return!1}return!0}),t.attachEvent(`onIdChange`,function(n,r){e._update_flags(n,r);var i=e.getTask(r);t.isSilent()||(i.$split_subtask||i.rollup)&&e.eachParent(function(t){e.refreshTask(t.id)},r)}),t.attachEvent(`onAfterUpdate`,function(r){if(e._update_parents(r),e.getState(`batchUpdate`).batch_update)return!0;var i=t.getItem(r);i.$source||=[];for(var a=0;a<i.$source.length;a++)n.refresh(i.$source[a]);i.$target||=[];for(var a=0;a<i.$target.length;a++)n.refresh(i.$target[a])}),t.attachEvent(`onBeforeItemMove`,function(n,r,i){return kt(n,e,t)?(console.log(`The placeholder task cannot be moved to another position.`),!1):!0}),t.attachEvent(`onAfterItemMove`,function(t,n,r){var i=e.getTask(t);this.getNextSibling(t)===null?this.getPrevSibling(t)===null?i.$drop_target=`next:null`:i.$drop_target=`next:`+this.getPrevSibling(t):i.$drop_target=this.getNextSibling(t)}),t.attachEvent(`onStoreUpdated`,function(t,r,i){if(i==`delete`&&e._update_flags(t,null),!e.$services.getService(`state`).getState(`batchUpdate`).batch_update){if(e.config.fit_tasks&&i!==`paint`){var a=e.getState();Ut(e);var o=e.getState();if(+a.min_date!=+o.min_date||+a.max_date!=+o.max_date)return e.render(),e.callEvent(`onScaleAdjusted`,[]),!0}i==`add`||i==`move`||i==`delete`?e.$layout&&(this.$config.name==`task`&&(i==`add`||i==`delete`)&&this._skipTaskRecalculation!=`lightbox`&&(this._skipTaskRecalculation=!0),e.$layout.resize()):t||n.refresh()}}),n.attachEvent(`onAfterAdd`,function(e,t){n.sync_link(t)}),n.attachEvent(`onAfterUpdate`,function(e,t){o()}),n.attachEvent(`onAfterDelete`,function(e,t){a(t)}),n.attachEvent(`onAfterSilentDelete`,function(e,t){a(t)}),n.attachEvent(`onBeforeIdChange`,function(t,r){a(e.mixin({id:t},e.$data.linksStore.getItem(r))),n.sync_link(e.$data.linksStore.getItem(r))});function r(t){var n=e.isTaskVisible(t);if(!n&&e.isTaskExists(t)){var r=e.getParent(t);e.isTaskExists(r)&&e.isTaskVisible(r)&&(r=e.getTask(r),e.isSplitTask(r)&&(n=!0))}return n}n.attachEvent(`onFilterItem`,function(t,n){if(!e.config.show_links)return!1;var i=r(n.source),a=r(n.target);return!(i&&a)||e._isAllowedUnscheduledTask(e.getTask(n.source))||e._isAllowedUnscheduledTask(e.getTask(n.target))?!1:e.callEvent(`onBeforeLinkDisplay`,[t,n])}),(function(){var t={};e.attachEvent(`onBeforeTaskDelete`,function(n,r){return t[n]=Jt.getSubtreeLinks(e,n),!0}),e.attachEvent(`onAfterTaskDelete`,function(n,r){t[n]&&e.$data.linksStore.silent(function(){for(var r in t[n])e.isLinkExists(r)&&e.$data.linksStore.removeItem(r),a(t[n][r]);t[n]=null})})})(),e.attachEvent(`onAfterLinkDelete`,function(t,n){e.isTaskExists(n.source)&&e.refreshTask(n.source),e.isTaskExists(n.target)&&e.refreshTask(n.target)}),e.attachEvent(`onParse`,o),s({source:n,target:e,events:{onItemLoading:`onLinkLoading`,onBeforeAdd:`onBeforeLinkAdd`,onAfterAdd:`onAfterLinkAdd`,onBeforeUpdate:`onBeforeLinkUpdate`,onAfterUpdate:`onAfterLinkUpdate`,onBeforeDelete:`onBeforeLinkDelete`,onAfterDelete:`onAfterLinkDelete`,onIdChange:`onLinkIdChange`}}),s({source:t,target:e,events:{onItemLoading:`onTaskLoading`,onBeforeAdd:`onBeforeTaskAdd`,onAfterAdd:`onAfterTaskAdd`,onBeforeUpdate:`onBeforeTaskUpdate`,onAfterUpdate:`onAfterTaskUpdate`,onBeforeDelete:`onBeforeTaskDelete`,onAfterDelete:`onAfterTaskDelete`,onIdChange:`onTaskIdChange`,onBeforeItemMove:`onBeforeTaskMove`,onAfterItemMove:`onAfterTaskMove`,onFilterItem:`onBeforeTaskDisplay`,onItemOpen:`onTaskOpened`,onItemClose:`onTaskClosed`,onBeforeSelect:`onBeforeTaskSelected`,onAfterSelect:`onTaskSelected`,onAfterUnselect:`onTaskUnselected`}}),e.$data={tasksStore:t,linksStore:n},n.sync_link=function(t){if(e.isTaskExists(t.source)){var n=e.getTask(t.source);n.$source=n.$source||[],i(t.id,n.$source)&&n.$source.push(t.id)}if(e.isTaskExists(t.target)){var r=e.getTask(t.target);r.$target=r.$target||[],i(t.id,r.$target)&&r.$target.push(t.id)}};function i(e,t){return t.indexOf(String(e))===-1&&t.indexOf(Number(e))===-1}function a(t){if(e.isTaskExists(t.source)){for(var n=e.getTask(t.source),r=0;r<n.$source.length;r++)if(n.$source[r]==t.id){n.$source.splice(r,1);break}}if(e.isTaskExists(t.target)){for(var i=e.getTask(t.target),r=0;r<i.$target.length;r++)if(i.$target[r]==t.id){i.$target.splice(r,1);break}}}function o(){for(var t=null,r=e.$data.tasksStore.getItems(),i=0,a=r.length;i<a;i++)t=r[i],t.$source=[],t.$target=[];for(var o=e.$data.linksStore.getItems(),i=0,a=o.length;i<a;i++){var s=o[i];n.sync_link(s)}}function s(e){var t=e.source,n=e.target;for(var r in e.events)(function(e,r){t.attachEvent(e,function(){return n.callEvent(r,Array.prototype.slice.call(arguments))},r)})(r,e.events[r])}function c(t){this.defined(t.id)||(t.id=this.uid()),t.start_date&&=e.date.parseDate(t.start_date,`parse_date`),t.end_date&&=e.date.parseDate(t.end_date,`parse_date`);var n=null;(t.duration||t.duration===0)&&(t.duration=n=t.duration*1),n&&(t.start_date&&!t.end_date?t.end_date=this.calculateEndDate(t):!t.start_date&&t.end_date&&(t.start_date=this.calculateEndDate({start_date:t.end_date,duration:-t.duration,task:t}))),e.config.deadlines!==!1&&t.deadline&&(t.deadline=e.date.parseDate(t.deadline,`parse_date`)),t.progress=Number(t.progress)||0,this._isAllowedUnscheduledTask(t)&&this._set_default_task_timing(t),this._init_task_timing(t),t.start_date&&t.end_date&&this.correctTaskWorkTime(t),t.$source=[],t.$target=[];var r=this.$data.tasksStore.getItem(t.id);return r&&!R(t.open)&&(t.$open=r.$open),t.parent===void 0&&(t.parent=this.config.root_id),t.open&&(t.$open=!0),t}function l(e){return this.defined(e.id)||(e.id=this.uid()),e}}var Xt=class{constructor(e,t){this.$gantt=e,this.$dp=t,this._dataProcessorHandlers=[]}attach(){let e=this.$dp,t=this.$gantt,n={},r=n=>this.clientSideDelete(n,e,t);function i(e){let t=[];return e.$source&&(t=t.concat(e.$source)),e.$target&&(t=t.concat(e.$target)),t}this._dataProcessorHandlers.push(t.attachEvent(`onAfterTaskAdd`,function(n,r){t.isTaskExists(n)&&(e.setGanttMode(`tasks`),e.setUpdated(n,!0,`inserted`))})),this._dataProcessorHandlers.push(t.attachEvent(`onAfterTaskUpdate`,function(n,r){t.isTaskExists(n)&&(e.setGanttMode(`tasks`),e.setUpdated(n,!0),t._sendTaskOrder&&t._sendTaskOrder(n,r))})),this._dataProcessorHandlers.push(t.attachEvent(`onBeforeTaskDelete`,function(r,i){return t.config.cascade_delete&&(n[r]={tasks:Jt.getSubtreeTasks(t,r),links:Jt.getSubtreeLinks(t,r)}),e.deleteAfterConfirmation?(e.setGanttMode(`tasks`),e.setUpdated(r,!0,`deleted`),!1):!0})),this._dataProcessorHandlers.push(t.attachEvent(`onAfterTaskDelete`,function(i,a){e.setGanttMode(`tasks`);let o=!r(i),s=t.config.cascade_delete&&n[i];if(!(!o&&!s)){if(s){let t=e.updateMode;e.setUpdateMode(`off`);let a=n[i];for(let t in a.tasks)r(t)||(e.storeItem(a.tasks[t]),e.setUpdated(t,!0,`deleted`));e.setGanttMode(`links`);for(let t in a.links)r(t)||(e.storeItem(a.links[t]),e.setUpdated(t,!0,`deleted`));n[i]=null,t!==`off`&&e.sendAllData(),e.setGanttMode(`tasks`),e.setUpdateMode(t)}o&&(e.storeItem(a),e.deleteAfterConfirmation||e.setUpdated(i,!0,`deleted`)),e.updateMode!==`off`&&!e._tSend&&e.sendAllData()}})),this._dataProcessorHandlers.push(t.attachEvent(`onAfterLinkUpdate`,function(n,r){t.isLinkExists(n)&&(e.setGanttMode(`links`),e.setUpdated(n,!0))})),this._dataProcessorHandlers.push(t.attachEvent(`onAfterLinkAdd`,function(n,r){t.isLinkExists(n)&&(e.setGanttMode(`links`),e.setUpdated(n,!0,`inserted`))})),this._dataProcessorHandlers.push(t.attachEvent(`onAfterLinkDelete`,function(t,n){e.setGanttMode(`links`),!r(t)&&(e.storeItem(n),e.setUpdated(t,!0,`deleted`))})),this._dataProcessorHandlers.push(t.attachEvent(`onRowDragEnd`,function(e,n){t._sendTaskOrder(e,t.getTask(e))}));let a=null,o=null;this._dataProcessorHandlers.push(t.attachEvent(`onTaskIdChange`,function(n,r){if(!e._waitMode)return;let s=t.getChildren(r);if(s.length){a||={};for(let e=0;e<s.length;e++){let t=this.getTask(s[e]);a[t.id]=t}}let c=i(this.getTask(r));if(c.length){o||={};for(let e=0;e<c.length;e++){let t=this.getLink(c[e]);o[t.id]=t}}})),e.attachEvent(`onAfterUpdateFinish`,function(){(a||o)&&(t.batchUpdate(function(){for(let e in a)t.updateTask(a[e].id);for(let e in o)t.updateLink(o[e].id);a=null,o=null}),a?t._dp.setGanttMode(`tasks`):t._dp.setGanttMode(`links`))}),e.attachEvent(`onBeforeDataSending`,function(){if(this._tMode===`CUSTOM`)return!0;let e=this._serverProcessor;if(this._tMode===`REST-JSON`||this._tMode===`REST`){let t=this._ganttMode;e=e.substring(0,e.indexOf(`?`)>-1?e.indexOf(`?`):e.length),this.serverProcessor=e+(e.slice(-1)===`/`?``:`/`)+t}else{let n=this._ganttMode+`s`;this.serverProcessor=e+t.ajax.urlSeparator(e)+`gantt_mode=`+n}return!0}),e.attachEvent(`insertCallback`,function(e,n,r,i){let a=e.data||t.xml._xmlNodeToJSON(e.firstChild),o={add:t.addTask,isExist:t.isTaskExists};i===`links`&&(o.add=t.addLink,o.isExist=t.isLinkExists),!o.isExist.call(t,n)&&(a.id=n,o.add.call(t,a))}),e.attachEvent(`updateCallback`,function(e,n){let r=e.data||t.xml._xmlNodeToJSON(e.firstChild);if(!t.isTaskExists(n))return;let i=t.getTask(n);for(let e in r){let n=r[e];switch(e){case`id`:continue;case`start_date`:case`end_date`:n=t.defined(t.templates.xml_date)?t.templates.xml_date(n):t.templates.parse_date(n);break;case`duration`:i.end_date=t.calculateEndDate({start_date:i.start_date,duration:n,task:i});break}i[e]=n}t.updateTask(n),t.refreshData()}),e.attachEvent(`deleteCallback`,function(e,n,r,i){let a={delete:t.deleteTask,isExist:t.isTaskExists};i===`links`?(a.delete=t.deleteLink,a.isExist=t.isLinkExists):i===`assignment`&&(a.delete=function(e){t.$data.assignmentsStore.remove(e)},a.isExist=function(e){return t.$data.assignmentsStore.exists(e)}),a.isExist.call(t,n)&&a.delete.call(t,n)}),this.handleResourceCRUD(e,t),this.handleResourceAssignmentCRUD(e,t),this.handleBaselineCRUD(e,t)}clientSideDelete(e,t,n){let r=t.updatedRows.slice(),i=!1;n.getUserData(e,`!nativeeditor_status`,t._ganttMode)===`true_deleted`&&(i=!0,t.setUpdated(e,!1));for(let a=0;a<r.length&&!t._in_progress[e];a++)r[a]===e&&(n.getUserData(e,`!nativeeditor_status`,t._ganttMode)===`inserted`&&(i=!0),t.setUpdated(e,!1));return i}handleResourceAssignmentCRUD(e,t){if(!t.config.resources||t.config.resources.dataprocessor_assignments!==!0)return;let n=t.getDatastore(t.config.resource_assignment_store),r={},i={};t.attachEvent(`onBeforeTaskAdd`,function(e,t){return r[e]=!0,!0});function a(e){i[e.id]=e,r[e.task_id]=!0}function o(t){let r=t.id;n.exists(r)&&(e.setGanttMode(`assignment`),e.setUpdated(r,!0,`inserted`)),delete i[r]}t.attachEvent(`onTaskIdChange`,function(e,t){delete r[e]}),n.attachEvent(`onAfterAdd`,(e,t)=>{r[t.task_id]?a(t):o(t)}),n.attachEvent(`onAfterUpdate`,(t,r)=>{n.exists(t)&&(i[t]?o(r):(e.setGanttMode(`assignment`),e.setUpdated(t,!0)))}),n.attachEvent(`onAfterDelete`,(n,r)=>{e.setGanttMode(`assignment`),!this.clientSideDelete(n,e,t)&&(e.storeItem(r),e.setUpdated(n,!0,`deleted`))})}handleResourceCRUD(e,t){if(!t.config.resources||t.config.resources.dataprocessor_resources!==!0)return;let n=t.getDatastore(t.config.resource_store);function r(t){let r=t.id;n.exists(r)&&(e.setGanttMode(`resource`),e.setUpdated(r,!0,`inserted`))}n.attachEvent(`onAfterAdd`,(e,t)=>{r(t)}),n.attachEvent(`onAfterUpdate`,(t,r)=>{n.exists(t)&&(e.setGanttMode(`resource`),e.setUpdated(t,!0))}),n.attachEvent(`onAfterDelete`,(n,r)=>{e.setGanttMode(`resource`),!this.clientSideDelete(n,e,t)&&(e.storeItem(r),e.setUpdated(n,!0,`deleted`))})}handleBaselineCRUD(e,t){if(!t.config.baselines||t.config.baselines.dataprocessor_baselines!==!0)return;let n=t.getDatastore(t.config.baselines.datastore);function r(t){let r=t.id;n.exists(r)&&(e.setGanttMode(`baseline`),e.setUpdated(r,!0,`inserted`))}n.attachEvent(`onAfterAdd`,(e,t)=>{r(t)}),n.attachEvent(`onAfterUpdate`,(t,r)=>{n.exists(t)&&(e.setGanttMode(`baseline`),e.setUpdated(t,!0))}),n.attachEvent(`onAfterDelete`,(n,r)=>{e.setGanttMode(`baseline`),!this.clientSideDelete(n,e,t)&&(e.storeItem(r),e.setUpdated(n,!0,`deleted`))})}detach(){ue(this._dataProcessorHandlers,e=>{this.$gantt.detachEvent(e)}),this._dataProcessorHandlers=[]}};function Zt(e,t){e.getUserData=function(e,t,n){return this.userdata||={},this.userdata[n]=this.userdata[n]||{},this.userdata[n][e]&&this.userdata[n][e][t]?this.userdata[n][e][t]:``},e.setUserData=function(e,t,n,r){this.userdata||={},this.userdata[r]=this.userdata[r]||{},this.userdata[r][e]=this.userdata[r][e]||{},this.userdata[r][e][t]=n},e._change_id=function(e,t){switch(this._dp._ganttMode){case`task`:this.changeTaskId(e,t);break;case`link`:this.changeLinkId(e,t);break;case`assignment`:this.$data.assignmentsStore.changeId(e,t);break;case`resource`:this.$data.resourcesStore.changeId(e,t);break;case`baseline`:this.$data.baselineStore.changeId(e,t);break;default:throw Error(`Invalid mode of the dataProcessor after database id is received: ${this._dp._ganttMode}, new id: ${t}`)}},e._row_style=function(t,n){if(this._dp._ganttMode!==`task`||!e.isTaskExists(t))return;let r=e.getTask(t);r.$dataprocessor_class=n,e.refreshTask(t)},e._delete_task=function(e,t){},e._sendTaskOrder=function(e,t){t.$drop_target&&(this._dp.setGanttMode(`task`),this.getTask(e).target=t.$drop_target,this._dp.setUpdated(e,!0,`order`),delete this.getTask(e).$drop_target)},e.setDp=function(){this._dp=t},e.setDp()}var Qt=class{constructor(){this.clear=()=>{this._storage={}},this.storeItem=e=>{this._storage[e.id]=I(e)},this.getStoredItem=e=>this._storage[e]||null,this._storage={}}};Qt.create=()=>new Qt;var $t=Qt;function en(e){let t,n,r;e instanceof Function?t=e:e.hasOwnProperty(`router`)?t=e.router:e.hasOwnProperty(`assignment`)||e.hasOwnProperty(`baseline`)||e.hasOwnProperty(`link`)||e.hasOwnProperty(`task`)?t=e:e.hasOwnProperty(`headers`)&&(r=e.headers),n=t?`CUSTOM`:e.mode||`REST-JSON`;let i=this,a=new tn(e.url);return a.init(i),a.setTransactionMode({mode:n,router:t,headers:r},e.batchUpdate),e.deleteAfterConfirmation&&(a.deleteAfterConfirmation=e.deleteAfterConfirmation),a}var tn=class{constructor(e){this.serverProcessor=e,this.action_param=`!nativeeditor_status`,this.updatedRows=[],this.autoUpdate=!0,this.updateMode=`cell`,this._headers=null,this._payload=null,this._postDelim=`_`,this._routerParametersFormat=`parameters`,this._waitMode=0,this._in_progress={},this._storage=$t.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)}setTransactionMode(e,t){typeof e==`object`?(this._tMode=e.mode||this._tMode,R(e.headers)&&(this._headers=e.headers),R(e.payload)&&(this._payload=e.payload),this._tSend=!!t):(this._tMode=e,this._tSend=t),this._tMode===`REST`&&(this._tSend=!1),this._tMode===`JSON`||this._tMode===`REST-JSON`?(this._tSend=!1,this._serializeAsJson=!0,this._headers=this._headers||{},this._headers[`Content-Type`]=`application/json`):this._headers&&!this._headers[`Content-Type`]&&(this._headers[`Content-Type`]=`application/x-www-form-urlencoded`),this._tMode===`CUSTOM`&&(this._tSend=!1,this._router=e.router)}escape(e){return this._utf?encodeURIComponent(e):escape(e)}enableUTFencoding(e){this._utf=!!e}getSyncState(){return!this.updatedRows.length}setUpdateMode(e,t){this.autoUpdate=e===`cell`,this.updateMode=e,this.dnd=t}ignore(e,t){this._silent_mode=!0,e.call(t||M),this._silent_mode=!1}setUpdated(e,t,n){if(this._silent_mode)return;let r=this.findRow(e);n||=`updated`;let i=this.$gantt.getUserData(e,this.action_param,this._ganttMode);i&&n===`updated`&&(n=i),t?(this.set_invalid(e,!1),this.updatedRows[r]=e,this.$gantt.setUserData(e,this.action_param,n,this._ganttMode),this._in_progress[e]&&(this._in_progress[e]=`wait`)):this.is_invalid(e)||(this.updatedRows.splice(r,1),this.$gantt.setUserData(e,this.action_param,``,this._ganttMode)),this.markRow(e,t,n),t&&this.autoUpdate&&this.sendData(e)}markRow(e,t,n){let r=``,i=this.is_invalid(e);if(i&&(r=this.styles[i],t=!0),this.callEvent(`onRowMark`,[e,t,n,i])&&(r=this.styles[t?n:`clear`]+` `+r,this.$gantt[this._methods[0]](e,r),i&&i.details)){r+=this.styles[i+`_cell`];for(let t=0;t<i.details.length;t++)i.details[t]&&this.$gantt[this._methods[1]](e,t,r)}}getActionByState(e){return e===`inserted`?`create`:e===`updated`?`update`:e===`deleted`?`delete`:`update`}getState(e){return this.$gantt.getUserData(e,this.action_param,this._ganttMode)}is_invalid(e){return this._invalid[e]}set_invalid(e,t,n){n&&(t={value:t,details:n,toString:function(){return this.value.toString()}}),this._invalid[e]=t}checkBeforeUpdate(e){return!0}sendData(e){if(this.$gantt.editStop&&this.$gantt.editStop(),typeof e>`u`||this._tSend){let e=[];if(this.modes&&[`task`,`link`,`assignment`,`baseline`].forEach(t=>{this.modes[t]&&this.modes[t].updatedRows.length&&e.push(t)}),e.length){for(let t=0;t<e.length;t++)this.setGanttMode(e[t]),this.sendAllData();return}else return this.sendAllData()}if(this._in_progress[e]||(this.messages=[],!this.checkBeforeUpdate(e)&&this.callEvent(`onValidationError`,[e,this.messages])))return!1;this._beforeSendData(this._getRowData(e),e)}serialize(e,t){if(this._serializeAsJson)return this._serializeAsJSON(e);if(typeof e==`string`)return e;if(typeof t<`u`)return this.serialize_one(e,``);{let t=[],n=[];for(let r in e)e.hasOwnProperty(r)&&(t.push(this.serialize_one(e[r],r+this._postDelim)),n.push(r));return t.push(`ids=`+this.escape(n.join(`,`))),this.$gantt.security_key&&t.push(`dhx_security=`+this.$gantt.security_key),t.join(`&`)}}serialize_one(e,t){if(typeof e==`string`)return e;let n=[],r=``;for(let i in e)if(e.hasOwnProperty(i)){if((i===`id`||i==this.action_param)&&this._tMode===`REST`)continue;r=typeof e[i]==`string`||typeof e[i]==`number`?String(e[i]):JSON.stringify(e[i]),n.push(this.escape((t||``)+i)+`=`+this.escape(r))}return n.join(`&`)}sendAllData(){if(!this.updatedRows.length)return;this.messages=[];let e=!0;if(this._forEachUpdatedRow(function(t){e&&=this.checkBeforeUpdate(t)}),!e&&!this.callEvent(`onValidationError`,[``,this.messages]))return!1;this._tSend?this._sendData(this._getAllData()):this._forEachUpdatedRow(function(e){if(!this._in_progress[e]){if(this.is_invalid(e))return;this._beforeSendData(this._getRowData(e),e)}})}findRow(e){let t=0;for(t=0;t<this.updatedRows.length&&e!=this.updatedRows[t];t++);return t}defineAction(e,t){this._uActions||={},this._uActions[e]=t}afterUpdateCallback(e,t,n,r,i){if(!this.$gantt)return;this.setGanttMode(i);let a=e,o=n!==`error`&&n!==`invalid`;if(o||this.set_invalid(e,n),this._uActions&&this._uActions[n]&&!this._uActions[n](r))return delete this._in_progress[a];this._in_progress[a]!==`wait`&&this.setUpdated(e,!1);let s=e;switch(n){case`inserted`:case`insert`:t!=e&&(this.setUpdated(e,!1),this.$gantt[this._methods[2]](e,t),e=t);break;case`delete`:case`deleted`:if(!this.deleteAfterConfirmation||this._ganttMode!==`task`)return this.$gantt.setUserData(e,this.action_param,`true_deleted`,this._ganttMode),this.$gantt[this._methods[3]](e),delete this._in_progress[a],this.callEvent(`onAfterUpdate`,[e,n,t,r]);if(this._ganttMode===`task`&&this.$gantt.isTaskExists(e)){this.$gantt.setUserData(e,this.action_param,`true_deleted`,this._ganttMode);let t=this.$gantt.getTask(e);this.$gantt.silent(()=>{this.$gantt.deleteTask(e)}),this.$gantt.callEvent(`onAfterTaskDelete`,[e,t]),this.$gantt.render(),delete this._in_progress[a]}return this.callEvent(`onAfterUpdate`,[e,n,t,r])}this._in_progress[a]===`wait`?(delete this._in_progress[a],this.setUpdated(t,!0,this.$gantt.getUserData(e,this.action_param,this._ganttMode))):(o&&this.$gantt.setUserData(e,this.action_param,``,this._ganttMode),delete this._in_progress[a]),this.callEvent(`onAfterUpdate`,[s,n,t,r])}afterUpdate(e,t,n){let r;r=arguments.length===3?arguments[1]:arguments[4];let i=this.getGanttMode(),a=r.filePath||r.url;i=this._tMode!==`REST`&&this._tMode!==`REST-JSON`?a.indexOf(`gantt_mode=links`)===-1?a.indexOf(`gantt_mode=assignments`)===-1?a.indexOf(`gantt_mode=baselines`)===-1?`task`:`baseline`:`assignment`:`link`:a.indexOf(`/link`)>=0?`link`:a.indexOf(`/assignment`)>=0?`assignment`:a.indexOf(`/baseline`)>=0?`baseline`:`task`,this.setGanttMode(i);let o=this.$gantt.ajax,s;try{s=JSON.parse(t.xmlDoc.responseText)}catch{t.xmlDoc.responseText.length||(s={})}let c=t=>{let n=s.action||this.getState(t)||`updated`,r=s.sid||t[0],a=s.tid||t[0];e.afterUpdateCallback(r,a,n,s,i)};if(s){Array.isArray(n)&&n.length>1?n.forEach(e=>c(e)):c(n),e.finalizeUpdate(),this.setGanttMode(i);return}let l=o.xmltop(`data`,t.xmlDoc);if(!l)return this.cleanUpdate(n);let u=o.xpath(`//data/action`,l);if(!u.length)return this.cleanUpdate(n);for(let t=0;t<u.length;t++){let n=u[t],r=n.getAttribute(`type`),a=n.getAttribute(`sid`),o=n.getAttribute(`tid`);e.afterUpdateCallback(a,o,r,n,i)}e.finalizeUpdate()}cleanUpdate(e){if(e)for(let t=0;t<e.length;t++)delete this._in_progress[e[t]]}finalizeUpdate(){this._waitMode&&this._waitMode--,this.callEvent(`onAfterUpdateFinish`,[]),this.updatedRows.length||this.callEvent(`onFullSync`,[])}init(e){if(this._initialized)return;this.$gantt=e,this.$gantt._dp_init&&this.$gantt._dp_init(this),this._setDefaultTransactionMode(),this.styles={updated:`gantt_updated`,order:`gantt_updated`,inserted:`gantt_inserted`,deleted:`gantt_deleted`,delete_confirmation:`gantt_deleted`,invalid:`gantt_invalid`,error:`gantt_error`,clear:``},this._methods=[`_row_style`,`setCellTextStyle`,`_change_id`,`_delete_task`],Zt(this.$gantt,this);let t=new Xt(this.$gantt,this);t.attach(),this.attachEvent(`onDestroy`,function(){delete this.setGanttMode,delete this._getRowData,delete this.$gantt._dp,delete this.$gantt._change_id,delete this.$gantt._row_style,delete this.$gantt._delete_task,delete this.$gantt._sendTaskOrder,delete this.$gantt,t.detach()}),this.$gantt.callEvent(`onDataProcessorReady`,[this]),this._initialized=!0}setOnAfterUpdate(e){this.attachEvent(`onAfterUpdate`,e)}setOnBeforeUpdateHandler(e){this.attachEvent(`onBeforeDataSending`,e)}setAutoUpdate(e,t){e||=2e3,this._user=t||new Date().valueOf(),this._needUpdate=!1,this._updateBusy=!1,this.attachEvent(`onAfterUpdate`,this.afterAutoUpdate),this.attachEvent(`onFullSync`,this.fullSync),setInterval(()=>{this.loadUpdate()},e)}afterAutoUpdate(e,t,n,r){return t===`collision`?(this._needUpdate=!0,!1):!0}fullSync(){return this._needUpdate&&(this._needUpdate=!1,this.loadUpdate()),!0}getUpdates(e,t){let n=this.$gantt.ajax;if(this._updateBusy)return!1;this._updateBusy=!0,n.get(e,t)}loadUpdate(){let e=this.$gantt.ajax,t=this.$gantt.getUserData(0,`version`,this._ganttMode),n=this.serverProcessor+e.urlSeparator(this.serverProcessor)+[`dhx_user=`+this._user,`dhx_version=`+t].join(`&`);n=n.replace(`editing=true&`,``),this.getUpdates(n,t=>{let n=e.xpath(`//userdata`,t);this.$gantt.setUserData(0,`version`,this._getXmlNodeValue(n[0]),this._ganttMode);let r=e.xpath(`//update`,t);if(r.length){this._silent_mode=!0;for(let e=0;e<r.length;e++){let t=r[e].getAttribute(`status`),n=r[e].getAttribute(`id`),i=r[e].getAttribute(`parent`);switch(t){case`inserted`:this.callEvent(`insertCallback`,[r[e],n,i]);break;case`updated`:this.callEvent(`updateCallback`,[r[e],n,i]);break;case`deleted`:this.callEvent(`deleteCallback`,[r[e],n,i]);break}}this._silent_mode=!1}this._updateBusy=!1})}destructor(){this.callEvent(`onDestroy`,[]),this.detachAllEvents(),this.updatedRows=[],this._in_progress={},this._invalid={},this._storage.clear(),this._storage=null,this._headers=null,this._payload=null,delete this._initialized}setGanttMode(e){e===`tasks`?e=`task`:e===`links`&&(e=`link`);let t=this.modes||{},n=this.getGanttMode();n&&(t[n]={_in_progress:this._in_progress,_invalid:this._invalid,_storage:this._storage,updatedRows:this.updatedRows});let r=t[e];r||=t[e]={_in_progress:{},_invalid:{},_storage:$t.create(),updatedRows:[]},this._in_progress=r._in_progress,this._invalid=r._invalid,this._storage=r._storage,this.updatedRows=r.updatedRows,this.modes=t,this._ganttMode=e}getGanttMode(){return this._ganttMode}storeItem(e){this._storage.storeItem(e)}url(e){this.serverProcessor=this._serverProcessor=e}_beforeSendData(e,t){if(!this.callEvent(`onBeforeUpdate`,[t,this.getState(t),e]))return!1;this._sendData(e,t)}_serializeAsJSON(e){if(typeof e==`string`)return e;let t=I(e);return this._tMode===`REST-JSON`&&(delete t.id,delete t[this.action_param]),JSON.stringify(t)}_applyPayload(e){let t=this.$gantt.ajax;if(this._payload)for(let n in this._payload)e=e+t.urlSeparator(e)+this.escape(n)+`=`+this.escape(this._payload[n]);return e}_cleanupArgumentsBeforeSend(e){let t;if(e[this.action_param]===void 0){t={};for(let n in e)t[n]=this._cleanupArgumentsBeforeSend(e[n])}else t=this._cleanupItemBeforeSend(e);return t}_cleanupItemBeforeSend(e){let t=null;return e&&(e[this.action_param]===`deleted`?(t={},t.id=e.id,t[this.action_param]=e[this.action_param]):t=e),t}_sendData(e,t){if(!e)return;if(!this.callEvent(`onBeforeDataSending`,t?[t,this.getState(t),e]:[null,null,e]))return!1;t&&(this._in_progress[t]=new Date().valueOf());let n=this.$gantt.ajax;if(this._tMode===`CUSTOM`){let n=this.getState(t),r=this.getActionByState(n);delete e[this.action_param];let i=this.getGanttMode(),a=e=>{let r=n||`updated`,a=t,o=t;e&&(r=e.action||n,a=e.sid||a,o=e.id||e.tid||o),this.afterUpdateCallback(a,o,r,e,i)},o;if(this._router instanceof Function)if(this._routerParametersFormat===`object`){let n={entity:i,action:r,data:e,id:t};o=this._router(n)}else o=this._router(i,r,e,t);else if(this._router[i]instanceof Function)o=this._router[i](r,e,t);else{let r=`Incorrect configuration of gantt.createDataProcessor`,a=`
|
|
16
|
-
You need to either add missing properties to the dataProcessor router object or to use a router function.
|
|
17
|
-
See https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.`;if(!this._router[i])throw Error(`${r}: router for the **${i}** entity is not defined. ${a}`);switch(n){case`inserted`:if(!this._router[i].create)throw Error(`${r}: **create** action for the **${i}** entity is not defined. ${a}`);o=this._router[i].create(e);break;case`deleted`:if(!this._router[i].delete)throw Error(`${r}: **delete** action for the **${i}** entity is not defined. ${a}`);o=this._router[i].delete(t);break;default:if(!this._router[i].update)throw Error(`${r}: **update**" action for the **${i}** entity is not defined. ${a}`);o=this._router[i].update(e,t);break}}if(o){if(!o.then&&o.id===void 0&&o.tid===void 0&&o.action===void 0)throw Error(`Incorrect router return value. A Promise or a response object is expected`);o.then?o.then(a).catch(e=>{e&&e.action?a(e):a({action:`error`,value:e})}):a(o)}else a(null);return}let r;r={callback:n=>{let r=[];if(t)r.push(t);else if(e)for(let t in e)r.push(t);return this.afterUpdate(this,n,r)},headers:this._headers};let i=`dhx_version=`+this.$gantt.getUserData(0,`version`,this._ganttMode),a=this.serverProcessor+(this._user?n.urlSeparator(this.serverProcessor)+[`dhx_user=`+this._user,i].join(`&`):``),o=this._applyPayload(a),s;switch(this._tMode){case`GET`:s=this._cleanupArgumentsBeforeSend(e),r.url=o+n.urlSeparator(o)+this.serialize(s,t),r.method=`GET`;break;case`POST`:s=this._cleanupArgumentsBeforeSend(e),r.url=o,r.method=`POST`,r.data=this.serialize(s,t);break;case`JSON`:s={};let i=this._cleanupItemBeforeSend(e);for(let e in i)e===this.action_param||e===`id`||e===`gr_id`||(s[e]=i[e]);r.url=o,r.method=`POST`,r.data=JSON.stringify({id:t,action:e[this.action_param],data:s});break;case`REST`:case`REST-JSON`:switch(o=a.replace(/(&|\?)editing=true/,``),s=``,this.getState(t)){case`inserted`:r.method=`POST`,r.data=this.serialize(e,t);break;case`deleted`:r.method=`DELETE`,o=o+(o.slice(-1)===`/`?``:`/`)+t;break;default:r.method=`PUT`,r.data=this.serialize(e,t),o=o+(o.slice(-1)===`/`?``:`/`)+t;break}r.url=this._applyPayload(o);break}return this._waitMode++,n.query(r)}_forEachUpdatedRow(e){let t=this.updatedRows.slice();for(let n=0;n<t.length;n++){let r=t[n];this.$gantt.getUserData(r,this.action_param,this._ganttMode)&&e.call(this,r)}}_setDefaultTransactionMode(){this.serverProcessor&&(this.setTransactionMode(`POST`,!0),this.serverProcessor+=(this.serverProcessor.indexOf(`?`)===-1?`?`:`&`)+`editing=true`,this._serverProcessor=this.serverProcessor)}_getXmlNodeValue(e){return e.firstChild?e.firstChild.nodeValue:``}_getAllData(){let e={},t=!1;return this._forEachUpdatedRow(function(n){if(this._in_progress[n]||this.is_invalid(n))return;let r=this._getRowData(n);this.callEvent(`onBeforeUpdate`,[n,this.getState(n),r])&&(e[n]=r,t=!0,this._in_progress[n]=new Date().valueOf())}),t?e:null}_prepareDate(e){return this.$gantt.defined(this.$gantt.templates.xml_format)?this.$gantt.templates.xml_format(e):(!this.$gantt.date._nonIsoStringDetected||this.$gantt.config.date_format===`iso`)&&this.$gantt.templates.format_date._ganttAuto?this.$gantt.date._isoDateOnly?this.$gantt.date.formatISODateOnly(e):this.$gantt.date.formatISODate(e):this.$gantt.templates.format_date(e)}_prepareArray(e,t){return t.push(e),e.map(e=>P(e)?this._prepareDate(e):Array.isArray(e)&&!pe(t,e)?this._prepareArray(e,t):e&&typeof e==`object`&&!pe(t,e)?this._prepareObject(e,t):e)}_prepareObject(e,t){let n={};t.push(e);for(let r in e){if(r.substr(0,1)===`$`)continue;let i=e[r];P(i)?n[r]=this._prepareDate(i):i===null?n[r]=``:Array.isArray(i)&&!pe(t,i)?n[r]=this._prepareArray(i,t):i&&typeof i==`object`&&!pe(t,i)?n[r]=this._prepareObject(i,t):n[r]=i}return n}_prepareDataItem(e){let t=this._prepareObject(e,[]);return t[this.action_param]=this.$gantt.getUserData(e.id,this.action_param,this._ganttMode),t}getStoredItem(e){return this._storage.getStoredItem(e)}_getRowData(e){let t,n=this.$gantt;return this.getGanttMode()===`task`?n.isTaskExists(e)&&(t=this.$gantt.getTask(e)):this.getGanttMode()===`assignment`?this.$gantt.$data.assignmentsStore.exists(e)&&(t=this.$gantt.$data.assignmentsStore.getItem(e)):this.getGanttMode()===`baseline`?this.$gantt.$data.baselineStore.exists(e)&&(t=this.$gantt.$data.baselineStore.getItem(e)):n.isLinkExists(e)&&(t=this.$gantt.getLink(e)),t||=this.getStoredItem(e),t||={id:e},this._prepareDataItem(t)}},nn={DEPRECATED_api:function(e){return new tn(e)},createDataProcessor:en};function rn(e){var t={},n=!1;function r(e,n){n=typeof n==`function`?n:function(){},t[e]||(t[e]=this[e],this[e]=n)}function i(e){t[e]&&(this[e]=t[e],t[e]=null)}function a(e){for(var t in e)r.call(this,t,e[t])}function o(){for(var e in t)i.call(this,e)}function s(e){try{e()}catch(e){M.console.error(e)}}return e.$services.getService(`state`).registerProvider(`batchUpdate`,function(){return{batch_update:n}},!1),function(e,t){if(n){s(e);return}var r=this._dp&&this._dp.updateMode!=`off`,i;r&&(i=this._dp.updateMode,this._dp.setUpdateMode(`off`));var c={};for(var l in a.call(this,{render:!0,refreshData:!0,refreshTask:!0,refreshLink:!0,resetProjectDates:function(e){c[e.id]=e}}),n=!0,this.callEvent(`onBeforeBatchUpdate`,[]),s(e),this.callEvent(`onAfterBatchUpdate`,[]),o.call(this),c)this.resetProjectDates(c[l]);n=!1,t||this.render(),r&&(this._dp.setUpdateMode(i),this._dp.setGanttMode(`task`),this._dp.sendData(),this._dp.setGanttMode(`link`),this._dp.sendData())}}function an(e){e.batchUpdate=rn(e)}function on(e){function t(t){var n=[];return e.eachTask(function(e){t(e)&&n.push(e)}),n}var n=String(Math.random());function r(e){return e===null?n+String(e):String(e)}function i(t,n,i){var a={};ue(n,function(e){a[r(e)]=!0});var o=[];return e.eachTask(function(n){if(i){if(!i[e.getTaskType(n)])return}else if(n.type==e.config.types.project)return;t in n&&ue(me(n[t])?n[t]:[n[t]],function(e){a[r(e&&e.resource_id?e.resource_id:e)]&&o.push(n)})}),o}e.getTaskBy=function(e,n,r){return typeof e==`function`?t(e):i(e,me(n)?n:[n],r)}}function sn(e){function t(){return e.config.auto_types&&e.getTaskType(e.config.types.project)==e.config.types.project}function n(e){return function(){return!t()||e.apply(this,arguments)}}function r(t,n){var r=e.getTask(t),i=l(r);i!==!1&&e.getTaskType(r)!==i&&(n.$needsUpdate=!0,n[r.id]={task:r,type:i})}function i(t,n){return n||={},r(t,n),e.eachParent(function(e){r(e.id,n)},t),n}function a(t){for(var n in t)if(t[n]&&t[n].task){var r=t[n].task;r.type=t[n].type,e.updateTask(r.id)}}function o(t){if(!e.getState().group_mode){var n=i(t);n.$needsUpdate&&e.batchUpdate(function(){a(n)})}}var s;function c(t,n){e.getState().group_mode||(t.type=n,e.updateTask(t.id))}function l(t){var n=e.config.types,r=e.hasChild(t.id),i=e.getTaskType(t.type);return r&&(i===n.task||i===n.milestone)?(i!==n.project&&(t.$originalType=i),n.project):!r&&i===n.project?t.$originalType?t.$originalType:n.task:!1}var u=!0;e.attachEvent(`onParse`,n(function(){u=!1,!e.getState().group_mode&&(e.batchUpdate(function(){e.eachTask(function(e){var t=l(e);t!==!1&&c(e,t)})}),u=!0)})),e.attachEvent(`onAfterTaskAdd`,n(function(e){u&&o(e)})),e.attachEvent(`onAfterTaskUpdate`,n(function(e){u&&o(e)}));function d(t){t!=e.config.root_id&&e.isTaskExists(t)&&o(t)}e.attachEvent(`onBeforeTaskDelete`,n(function(t,n){return s=e.getParent(t),!0})),e.attachEvent(`onAfterTaskDelete`,n(function(e,t){d(s)}));var f;e.attachEvent(`onRowDragStart`,n(function(t,n,r){return f=e.getParent(t),!0})),e.attachEvent(`onRowDragEnd`,n(function(e,t){d(f),o(e)}));var p;e.attachEvent(`onBeforeTaskMove`,n(function(t,n,r){return p=e.getParent(t),!0})),e.attachEvent(`onAfterTaskMove`,n(function(e,t,n){document.querySelector(`.gantt_drag_marker`)||(d(p),o(e))}))}var cn=class{constructor(){this.canParse=e=>!isNaN(this.parse(e)),this.format=e=>String(e),this.parse=e=>parseInt(e,10)}};cn.create=(e=null)=>new cn;var ln=cn,un=class{constructor(e){this.format=e=>this._getWBSCode(e.source),this.canParse=e=>this._linkReg.test(e),this.parse=e=>{if(!this.canParse(e))return null;let t=this._linkReg.exec(e)[0].trim();return{id:void 0,source:this._findSource(t)||null,target:null,type:this._gantt.config.links.finish_to_start,lag:0}},this._getWBSCode=e=>{let t=this._gantt.getTask(e);return this._gantt.getWBSCode?this._gantt.getWBSCode(t):String(t.id)},this._findSource=e=>{let t=RegExp(`^[0-9.]+`,`i`);if(t.exec(e)){let n=t.exec(e)[0];if(this._gantt.getTaskByWBSCode){let e=this._gantt.getTaskByWBSCode(n);if(e)return e.id}else if(this._gantt.isTaskExists(n))return n}return null},this._linkReg=/^[0-9\.]+/,this._gantt=e}};un.create=(e=null,t)=>new un(t);var dn=un;function fn(e){e.ext.formatters={durationFormatter:function(t){return t||={},t.store||=e.config.duration_unit,t.enter||=e.config.duration_unit,ln.create(t,e)},linkFormatter:function(t){return dn.create(t,e)}}}function pn(e){e.ext=e.ext||{},e.config.show_empty_state=!1,e.ext.emptyStateElement=e.ext.emptyStateElement||{isEnabled(){return e.config.show_empty_state===!0},isGanttEmpty(){return!e.getTaskByTime().length},renderContent(t){t.innerHTML=`<div class='gantt_empty_state'><div class='gantt_empty_state_image'></div>${`<div class='gantt_empty_state_text'>
|
|
18
|
-
<div class='gantt_empty_state_text_link' data-empty-state-create-task>${e.locale.labels.empty_state_text_link}</div>
|
|
19
|
-
<div class='gantt_empty_state_text_description'>${e.locale.labels.empty_state_text_description}</div>
|
|
20
|
-
</div>`}</div>`},clickEvents:[],attachAddTaskEvent(){let t=e.attachEvent(`onEmptyClick`,function(t){e.utils.dom.closest(t.target,`[data-empty-state-create-task]`)&&e.createTask({id:e.uid(),text:`New Task`})});this.clickEvents.push(t)},detachAddTaskEvents(){this.clickEvents.forEach(function(t){e.detachEvent(t)}),this.clickEvents=[]},getContainer(){if(e.$container){let t=e.utils.dom;if(e.$container.contains(e.$grid_data))return t.closest(e.$grid_data,`.gantt_layout_content`);if(e.$container.contains(e.$task_data))return t.closest(e.$task_data,`.gantt_layout_content`)}return null},getNode(){let e=this.getContainer();return e?e.querySelector(`.gantt_empty_state_wrapper`):null},show(){let t=this.getContainer();if(!t&&this.isGanttEmpty())return null;let n=document.createElement(`div`);n.className=`gantt_empty_state_wrapper`,n.style.marginTop=e.config.scale_height-t.offsetHeight+`px`;let r=e.$container.querySelectorAll(`.gantt_empty_state_wrapper`);Array.prototype.forEach.call(r,function(e){e.parentNode.removeChild(e)}),this.detachAddTaskEvents(),this.attachAddTaskEvent(),t.appendChild(n),this.renderContent(n)},hide(){let e=this.getNode();if(e)e.parentNode.removeChild(e);else return!1},init(){}},e.attachEvent(`onDataRender`,function(){let t=e.ext.emptyStateElement;t.isEnabled()&&t.isGanttEmpty()?t.show():t.hide()})}var mn=class{constructor(e,t){let n=new yt({url:e,token:t});n.fetch=function(e,t){let n={headers:this.headers()};return t&&(n.method=`POST`,n.body=t),fetch(e,n).then(e=>e.json())},this._ready=n.load().then(e=>this._remote=e)}ready(){return this._ready}on(e,t){this.ready().then(n=>{if(typeof e==`string`)n.on(e,t);else for(let t in e)n.on(t,e[t])})}};function hn(e){let t=[],n=null;function r(r){if(!r||!r.type||!(r.task?.id||r.link?.id)){console.error(`Invalid message format:`,r);return}let{type:o,task:s,link:c}=r;if(!(s&&e._dp._in_progress[s.id]||c&&e._dp._in_progress[c.id])){if(o===`add-task`){for(let t in e._dp._in_progress)if(e._dp.getState(t)===`inserted`){e._dp.attachEvent(`onFullSync`,function(){e.isTaskExists(s.id)||a(r)},{once:!0});return}}t.push(r),n&&clearTimeout(n),n=setTimeout(i,50)}}function i(){t.length!==0&&(t.length===1?a(t[0]):e.batchUpdate(function(){t.forEach(e=>{a(e)})}),t=[])}function a(e){let{type:t,task:n,link:r}=e;switch(t){case`add-task`:s(n);break;case`update-task`:c(n);break;case`delete-task`:l(n);break;case`add-link`:u(r);break;case`update-link`:d(r);break;case`delete-link`:f(r);break}}function o(t){e._dp?e._dp.ignore(t):t()}function s(t){if(e.isTaskExists(t.id)){console.warn(`Task with ID ${t.id} already exists. Skipping add.`);return}t.start_date=e.templates.parse_date(t.start_date),t.end_date&&=e.templates.parse_date(t.end_date),o(()=>{e.addTask(t)})}function c(t){let n=t.id;if(!e.getTask(n)){console.warn(`Task with ID ${n} does not exist. Skipping update.`);return}let r=e.getDatastore(`task`).$initItem.bind(e.getDatastore(`task`)),i=e.getTask(n);o(()=>{let a=r(t);for(let e in a)i[e]=a[e];a.end_date||(i.end_date=e.calculateEndDate(i)),e.updateTask(n),n!==t.id&&e.changeTaskId(n,t.id)})}function l(t){let n=t.id;e.isTaskExists(n)&&o(()=>{e.getTask(n)&&(e.getState().lightbox_id==n&&(t.id=this._lightbox_id,e.getTask(this._lightbox_id)),e.deleteTask(n,!0))})}function u(t){if(e.isLinkExists(t.id)){console.warn(`Link with ID ${t.id} already exists. Skipping add.`);return}o(()=>{e.addLink(t)})}function d(t){let n=t.id;if(!e.isLinkExists(n)){console.warn(`Link with ID ${n} does not exist. Skipping update.`);return}let r=e.getLink(n);o(()=>{Object.assign(r,t),e.updateLink(n),n!==t.id&&e.changeLinkId(n,t.id)})}function f(t){let n=t.id;e.getLink(n)&&o(()=>{e.getLink(n)&&(e.getState().lightbox_id==n&&(t.id=this._lightbox_id,e.getLink(this._lightbox_id)),e.deleteLink(n,!0))})}return{tasks:r,links:r}}function gn(e){e.ext||={},e.ext.liveUpdates={RemoteEvents:mn,remoteUpdates:hn(e)}}function _n(e){function t(){return{enabled:!1,apply_constraints:!1,gap_behavior:`preserve`,descendant_links:!1,schedule_on_parse:!0,move_projects:!0,use_progress:!1,schedule_from_end:!1,project_constraint:!1,show_constraints:!1,_engine:`v2`,_analysis_engine:`v2`}}function n(){let n=e.config;if(typeof n.auto_scheduling==`object`){let e={...t(),...n.auto_scheduling};return e.mode&&(e.apply_constraints=e.mode===`constraints`,delete e.mode),e.strict!==void 0&&(e.gap_behavior=e.strict?`compress`:`preserve`,delete e.strict),e.move_asap_tasks!==void 0&&(e.gap_behavior=e.move_asap_tasks?`compress`:`preserve`,delete e.move_asap_tasks),e}let r=!!n.auto_scheduling;return{...t(),enabled:r,apply_constraints:!(n.auto_scheduling_compatibility??!1),gap_behavior:n.auto_scheduling_strict===!0?`compress`:`preserve`,descendant_links:n.auto_scheduling_descendant_links??!1,schedule_on_parse:n.auto_scheduling_initial??!0,move_projects:n.auto_scheduling_move_projects??!0,use_progress:n.auto_scheduling_use_progress??!1,schedule_from_end:n.schedule_from_end??!1,project_constraint:n.auto_scheduling_project_constraint??!1,show_constraints:!1}}return{getDefaultAutoSchedulingConfig:t,getAutoSchedulingConfig:n}}function vn(e){e.ext||={};for(var t=[an,on,sn,fn,pn,gn],n=0;n<t.length;n++)t[n]&&t[n](e);e.config.show_unscheduled=!1;let{getAutoSchedulingConfig:r}=_n(e);e._getAutoSchedulingConfig=r}function yn(e){e.getGridColumn=function(t){for(var n=e.config.columns,r=0;r<n.length;r++)if(n[r].name==t)return n[r];return null},e.getGridColumns=function(){return e.config.columns.slice()}}function bn(e){e.isReadonly=function(t){return(typeof t==`number`||typeof t==`string`)&&e.isTaskExists(t)&&(t=e.getTask(t)),t&&t[this.config.editable_property]?!1:t&&t[this.config.readonly_property]||this.config.readonly}}function xn(e){e.load=function(){throw Error(`gantt.load() method is not available in the node.js, use gantt.parse() instead`)},e.parse=function(e,t){this.on_load({xmlDoc:{responseText:e}},t)},e.serialize=function(e){return e||=`json`,this[e].serialize()},e.on_load=function(t,n){if(t.xmlDoc&&t.xmlDoc.status===404){this.assert(!1,`Failed to load the data from <a href='`+t.xmlDoc.responseURL+`' target='_blank'>`+t.xmlDoc.responseURL+`</a>, server returns 404`);return}if(!e.$destroyed){this.callEvent(`onBeforeParse`,[]),n||=`json`,this.assert(this[n],`Invalid data type:'`+n+`'`);var r=t.xmlDoc.responseText,i=this[n].parse(r,t);this._process_loading(i)}};function t(t,n){let r={};n.forEach(e=>{r[e.task_id]||(r[e.task_id]=[]),r[e.task_id].push(e)}),t.forEach(t=>{t[e.config.resource_property]=r[t.id]||[]})}e._process_loading=function(n){n.collections&&this._load_collections(n.collections),n.resources&&this.$data.resourcesStore&&this.$data.resourcesStore.parse(n.resources),e.config.baselines&&n.baselines&&this.$data.baselineStore&&this.$data.baselineStore.parse(n.baselines);let r=n.data||n.tasks;n.assignments&&t(r&&r.length?r:e.getTasksByTime(),n.assignments),r&&this.$data.tasksStore.parse(r);var i=n.links||(n.collections&&n.collections.links?n.collections.links:[]);this.$data.linksStore.parse(i),this.callEvent(`onParse`,[]),this.render()},e._load_collections=function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){t=!0;var r=e[n];this.serverList[n]=this.serverList[n]||[];var i=this.serverList[n];if(!i)continue;i.splice(0,i.length);for(var a=0;a<r.length;a++){var o=r[a],s=this.copy(o);for(var c in s.key=s.value,o)if(o.hasOwnProperty(c)){if(c==`value`||c==`label`)continue;s[c]=o[c]}i.push(s)}}t&&this.callEvent(`onOptionsLoad`,[])},e.attachEvent(`onBeforeTaskDisplay`,function(e,t){return!t.$ignore});function n(t){throw e.assert(!1,`Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: `+JSON.stringify(t)),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: `+JSON.stringify(t))}e.json={parse:function(t){if(t||n(t),typeof t==`string`)try{t=JSON.parse(t)}catch{n(t)}return t.dhx_security&&(e.security_key=t.dhx_security),t},serializeTask:function(e){return this._copyObject(e)},serializeLink:function(e){return this._copyLink(e)},_copyLink:function(e){var t={};for(var n in e)t[n]=e[n];return t},_copyObject:function(t){var n={};for(var r in t)r.charAt(0)!=`$`&&(n[r]=t[r],P(n[r])&&(e.defined(e.templates.xml_format)?n[r]=e.templates.xml_format(n[r]):(!e.date._nonIsoStringDetected||e.config.date_format===`iso`)&&e.templates.format_date._ganttAuto?n[r]=e.date._isoDateOnly?e.date.formatISODateOnly(n[r]):e.date.formatISODate(n[r]):n[r]=e.templates.format_date(n[r])));return n},serialize:function(){var t=[],n=[];let r=[];e.eachTask(function(n){e.resetProjectDates(n),t.push(this.serializeTask(n))},e.config.root_id,this);for(var i=e.getLinks(),a=0;a<i.length;a++)n.push(this.serializeLink(i[a]));let o=e.getDatastore(`baselines`);return o&&o.eachItem(function(t){let n=e.json.serializeTask(t);r.push(n)}),{data:t,links:n,baselines:r}}};function r(t){throw e.assert(!1,`Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: `+JSON.stringify(t)),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: `+JSON.stringify(t))}e.xml={_xmlNodeToJSON:function(e,t){for(var n={},r=0;r<e.attributes.length;r++)n[e.attributes[r].name]=e.attributes[r].value;if(!t){for(var r=0;r<e.childNodes.length;r++){var i=e.childNodes[r];i.nodeType==1&&(n[i.tagName]=i.firstChild?i.firstChild.nodeValue:``)}n.text||=e.firstChild?e.firstChild.nodeValue:``}return n},_getCollections:function(t){for(var n={},r=e.ajax.xpath(`//coll_options`,t),i=0;i<r.length;i++)for(var a=r[i].getAttribute(`for`),o=n[a]=[],s=e.ajax.xpath(`.//item`,r[i]),c=0;c<s.length;c++){for(var l=s[c].attributes,u={key:s[c].getAttribute(`value`),label:s[c].getAttribute(`label`)},d=0;d<l.length;d++){var f=l[d];f.nodeName==`value`||f.nodeName==`label`||(u[f.nodeName]=f.nodeValue)}o.push(u)}return n},_getXML:function(t,n,i){i||=`data`,n.getXMLTopNode||(n=e.ajax.parse(n));var a=e.ajax.xmltop(i,n.xmlDoc);(!a||a.tagName!=i)&&r(t);var o=a.getAttribute(`dhx_security`);return o&&(e.security_key=o),a},parse:function(t,n){n=this._getXML(t,n);for(var r={},i=r.data=[],a=e.ajax.xpath(`//task`,n),o=0;o<a.length;o++)i[o]=this._xmlNodeToJSON(a[o]);return r.collections=this._getCollections(n),r},_copyLink:function(e){return`<item id='`+e.id+`' source='`+e.source+`' target='`+e.target+`' type='`+e.type+`' />`},_copyObject:function(e){return`<task id='`+e.id+`' parent='`+(e.parent||``)+`' start_date='`+e.start_date+`' duration='`+e.duration+`' open='`+!!e.open+`' progress='`+e.progress+`' end_date='`+e.end_date+`'><![CDATA[`+e.text+`]]></task>`},serialize:function(){for(var t=[],n=[],r=e.json.serialize(),i=0,a=r.data.length;i<a;i++)t.push(this._copyObject(r.data[i]));for(var i=0,a=r.links.length;i<a;i++)n.push(this._copyLink(r.links[i]));return`<data>`+t.join(``)+`<coll_options for='links'>`+n.join(``)+`</coll_options></data>`}},e.oldxml={parse:function(t,n){n=e.xml._getXML(t,n,`projects`);for(var r={collections:{links:[]}},i=r.data=[],a=e.ajax.xpath(`//task`,n),o=0;o<a.length;o++){i[o]=e.xml._xmlNodeToJSON(a[o]);var s=a[o].parentNode;s.tagName==`project`?i[o].parent=`project-`+s.getAttribute(`id`):i[o].parent=s.parentNode.getAttribute(`id`)}a=e.ajax.xpath(`//project`,n);for(var o=0;o<a.length;o++){var c=e.xml._xmlNodeToJSON(a[o],!0);c.id=`project-`+c.id,i.push(c)}for(var o=0;o<i.length;o++){var c=i[o];c.start_date=c.startdate||c.est,c.end_date=c.enddate,c.text=c.name,c.duration/=8,c.open=1,!c.duration&&!c.end_date&&(c.duration=1),c.predecessortasks&&r.collections.links.push({target:c.id,source:c.predecessortasks,type:e.config.links.finish_to_start})}return r},serialize:function(){e.message(`Serialization to 'old XML' is not implemented`)}},e.serverList=function(e,t){return t?this.serverList[e]=t.slice(0):this.serverList[e]||(this.serverList[e]=[]),this.serverList[e]}}function Sn(e,t,n,r,i){return this.date=e,this.unit=t,this.task=n,this.id=r,this.calendar=i,this}function Cn(e,t,n,r,i,a){return this.date=e,this.dir=t,this.unit=n,this.task=r,this.id=i,this.calendar=a,this}function wn(e,t,n,r,i,a,o){return this.start_date=e,this.duration=t,this.unit=n,this.step=r,this.task=i,this.id=a,this.calendar=o,this}function Tn(e,t,n,r,i,a){return this.start_date=e,this.end_date=t,this.unit=n===void 0?null:n,this.step=r===void 0?null:r,this.task=i,this.calendar=a,this}var En=function(e){return{getWorkHoursArguments:function(){var t=arguments[0];if(t=P(t)?{date:t}:L({},t),!he(t.date))throw e.assert(!1,`Invalid date argument for getWorkHours method`),Error(`Invalid date argument for getWorkHours method`);return t},setWorkTimeArguments:function(){return arguments[0]},unsetWorkTimeArguments:function(){return arguments[0]},isWorkTimeArguments:function(){var t=arguments[0];if(t instanceof Sn)return t;var n;if(n=t.date?new Sn(t.date,t.unit,t.task,null,t.calendar):new Sn(arguments[0],arguments[1],arguments[2],null,arguments[3]),n.unit=n.unit||e.config.duration_unit,!he(n.date))throw e.assert(!1,`Invalid date argument for isWorkTime method`),Error(`Invalid date argument for isWorkTime method`);return n},getClosestWorkTimeArguments:function(t){var n=arguments[0];if(n instanceof Cn)return n;var r;if(r=P(n)?new Cn(n):new Cn(n.date,n.dir,n.unit,n.task,null,n.calendar),n.id&&(r.task=n),r.dir=n.dir||`any`,r.unit=n.unit||e.config.duration_unit,!he(r.date))throw e.assert(!1,`Invalid date argument for getClosestWorkTime method`),Error(`Invalid date argument for getClosestWorkTime method`);return r},_getStartEndConfig:function(t){var n=Tn,r;if(t instanceof n)return t;if(P(t)){var i=arguments[2];r=i&&typeof i==`object`?new n(arguments[0],arguments[1],null,null,i,arguments[3]):new n(arguments[0],arguments[1],arguments[2],arguments[3])}else{let e=t.id!==null&&t.id!==void 0;r=new n(t.start_date,t.end_date,e?null:t.unit,e?null:t.step,t.task),t.id!==null&&t.id!==void 0&&(r.task=t)}if(r.unit=r.unit||e.config.duration_unit,r.step=r.step||e.config.duration_step,r.start_date=r.start_date||r.start||r.date,!he(r.start_date))throw e.assert(!1,`Invalid start_date argument for getDuration method`),Error(`Invalid start_date argument for getDuration method`);if(!he(r.end_date))throw e.assert(!1,`Invalid end_date argument for getDuration method`),Error(`Invalid end_date argument for getDuration method`);return r},getDurationArguments:function(e,t,n,r){return this._getStartEndConfig.apply(this,arguments)},hasDurationArguments:function(e,t,n,r){return this._getStartEndConfig.apply(this,arguments)},calculateEndDateArguments:function(t,n,r,i){var a=arguments[0];if(a instanceof wn)return a;var o;if(o=P(a)?new wn(arguments[0],arguments[1],arguments[2],void 0,arguments[3],void 0,arguments[4]):new wn(a.start_date,a.duration,a.unit,a.step,a.task,null,a.calendar),a.id!==null&&a.id!==void 0&&(o.task=a,o.unit=null,o.step=null),o.unit=o.unit||e.config.duration_unit,o.step=o.step||e.config.duration_step,!he(o.start_date))throw e.assert(!1,`Invalid start_date argument for calculateEndDate method`),Error(`Invalid start_date argument for calculateEndDate method`);return o}}};function Dn(){}Dn.prototype={merge:function(){return{hours:[],dates:{},customWeeks:{}}}};function On(e,t){this.argumentsHelper=t,this.$gantt=e,this._worktime=null}On.prototype={getWorkHours:function(){return[0,24]},_getWorkHours:function(){return On._warnedNoWorktime||(On._warnedNoWorktime=!0,console.error(`You are trying to use a Pro feature (scale projection / working-time calendars) that is not available in this edition of dhtmlxGantt.`)),[{start:0,end:1440*60}]},setWorkTime:function(){return!0},unsetWorkTime:function(){return!0},getConfig:function(){return this._worktime},_setConfig:function(e){this._worktime=e},_tryChangeCalendarSettings:function(e){return e(),!0},isWorkTime:function(){return!0},getClosestWorkTime:function(e){return this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments).date},calculateDuration:function(){var e=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),t=e.start_date,n=e.end_date,r=e.unit,i=e.step;return this._calculateDuration(t,n,r,i)},_calculateDuration:function(e,t,n,r){var i=this.$gantt.date,a={week:1e3*60*60*24*7,day:1e3*60*60*24,hour:1e3*60*60,minute:1e3*60},o=0;if(a[n])o=Math.round((t-e)/(r*a[n]));else{for(var s=new Date(e),c=new Date(t);s.valueOf()<c.valueOf();)o+=1,s=i.add(s,r,n);s.valueOf()!=t.valueOf()&&(o+=(c-s)/(i.add(s,r,n)-s))}return Math.round(o)},hasDuration:function(){var e=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),t=e.start_date,n=e.end_date;return e.unit?(t=new Date(t),n=new Date(n),t.valueOf()<n.valueOf()):!1},hasWorkTime:function(){return!0},equals:function(e){return e instanceof On},calculateEndDate:function(){var e=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments),t=e.start_date,n=e.duration,r=e.unit,i=e.step;return this.$gantt.date.add(t,i*n,r)}};var kn={isLegacyResourceCalendarFormat:function(e){if(!e)return!1;for(var t in e)if(e[t]&&typeof e[t]==`object`)return!0;return!1},getResourceProperty:function(e){var t=e.resource_calendars,n=e.resource_property;if(this.isLegacyResourceCalendarFormat(t))for(var r in e){n=r;break}return n},getCalendarIdFromLegacyConfig:function(e,t){if(t)for(var n in t){var r=t[n];if(e[n]){var i=r[e[n]];if(i)return i}}return null}};function An(){return{getCalendarIdFromMultipleResources:function(){return null}}}var jn=An();function Mn(e){this.$gantt=e,this._calendars={},this._legacyConfig=void 0,this.$gantt.attachEvent(`onGanttReady`,(function(){this.$gantt.config.resource_calendars&&(this._isLegacyConfig=kn.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars))}).bind(this)),this.$gantt.attachEvent(`onBeforeGanttReady`,(function(){this.createDefaultCalendars()}).bind(this)),this.$gantt.attachEvent(`onBeforeGanttRender`,(function(){this.createDefaultCalendars()}).bind(this))}Mn.prototype={_calendars:{},_convertWorkTimeSettings:function(e){let t=e.days;if(typeof t==`object`&&!Array.isArray(t)&&t!==null){let n={};if(t?.weekdays)for(let e=0;e<7;e++)n[e]=t.weekdays[e];t?.dates&&Object.entries(t.dates).forEach(([e,t])=>{n[new Date(e).valueOf()]=t}),Object.entries(n).forEach(([e,t])=>{t instanceof Array||(n[e]=!!t)}),e={...e,dates:n}}else if(t&&!e.dates){e.dates=e.dates||{};for(let n=0;n<t.length;n++)e.dates[n]=t[n],t[n]instanceof Array||(e.dates[n]=!!t[n])}return delete e.days,e},mergeCalendars:function(){var e=[],t=arguments;if(Array.isArray(t[0]))e=t[0].slice();else for(var n=0;n<arguments.length;n++)e.push(arguments[n]);var r=new Dn,i;return e.forEach((function(e){i=i?this._createCalendarFromConfig(r.merge(i,e)):e}).bind(this)),this.createCalendar(i)},_createCalendarFromConfig:function(e){var t=new On(this.$gantt,En(this.$gantt));t.id=String(z());var n=this._convertWorkTimeSettings(e);if(n.customWeeks)for(var r in n.customWeeks)n.customWeeks[r]=this._convertWorkTimeSettings(n.customWeeks[r]);return t._setConfig(n),t},createCalendar:function(e){var t;e||={},t=e.getConfig?I(e.getConfig()):e.worktime?I(e.worktime):I(e);var n=I(this.defaults.fulltime.worktime);return L(t,n),this._createCalendarFromConfig(t)},getCalendar:function(e){e||=`global`;var t=this._calendars[e];return t||=(this.createDefaultCalendars(),this._calendars[e]),t},getCalendars:function(){var e=[];for(var t in this._calendars)e.push(this.getCalendar(t));return e},_getOwnCalendar:function(e){var t=this.$gantt.config;if(e[t.calendar_property])return this.getCalendar(e[t.calendar_property]);if(t.resource_calendars){var n,r,i;if(i=this._legacyConfig===!1?t.resource_property:kn.getResourceProperty(t),Array.isArray(e[i])&&e[i].length)t.dynamic_resource_calendars?r=jn.getCalendarIdFromMultipleResources(e[i],this):n=this.getResourceCalendar(e[i]);else if(this._legacyConfig===void 0&&(this._legacyConfig=kn.isLegacyResourceCalendarFormat(t.resource_calendars)),this._legacyConfig)var r=kn.getCalendarIdFromLegacyConfig(e,t.resource_calendars);else if(i&&e[i]&&t.resource_calendars[e[i]])var n=this.getResourceCalendar(e[i]);if(r&&(n=this.getCalendar(r)),n)return n}return null},getResourceCalendar:function(e){if(e==null)return this.getCalendar();var t=null;t=typeof e==`number`||typeof e==`string`?e:e.id||e.key;var n=this.$gantt.config,r=n.resource_calendars,i=null;if(Array.isArray(e)&&e.length===1&&(t=typeof e[0]==`object`?e[0].resource_id:e[0]),r){if(this._legacyConfig===void 0&&(this._legacyConfig=kn.isLegacyResourceCalendarFormat(n.resource_calendars)),this._legacyConfig){for(var a in r)if(r[a][t]){i=r[a][t];break}}else var i=r[t];if(i)return this.getCalendar(i)}return this.getCalendar()},getTaskCalendar:function(e){var t=this.$gantt,n;if(e==null||(n=(typeof e==`number`||typeof e==`string`)&&t.isTaskExists(e)?t.getTask(e):e,!n))return this.getCalendar();var r=this._getOwnCalendar(n),i=!!t.getState().group_mode;if(!r&&t.config.inherit_calendar&&t.isTaskExists(n.parent)){for(var a=n;t.isTaskExists(a.parent)&&(a=t.getTask(a.parent),!(t.isSummaryTask(a)&&(r=this._getOwnCalendar(a),r))););i&&!r&&e.$effective_calendar&&(r=this.getCalendar(e.$effective_calendar))}return r||this.getCalendar()},addCalendar:function(e){if(!this.isCalendar(e)){var t=e.id;e=this.createCalendar(e),e.id=t}if(e._tryChangeCalendarSettings(function(){})){var n=this.$gantt.config;return e.id=e.id||z(),this._calendars[e.id]=e,n.worktimes||={},n.worktimes[e.id]=e.getConfig(),e.id}else return this.$gantt.callEvent(`onCalendarError`,[{message:`Invalid calendar settings, no worktime available`},e]),null},deleteCalendar:function(e){var t=this.$gantt.config;return e&&this._calendars[e]?(delete this._calendars[e],t.worktimes&&t.worktimes[e]&&delete t.worktimes[e],!0):!1},restoreConfigCalendars:function(e){for(var t in e)if(!this._calendars[t]){var n=e[t],r=this.createCalendar(n);r.id=t,this.addCalendar(r)}},defaults:{global:{id:`global`,worktime:{hours:[8,12,13,17],days:[0,1,1,1,1,1,0]}},fulltime:{id:`fulltime`,worktime:{hours:[0,24],days:[1,1,1,1,1,1,1]}}},createDefaultCalendars:function(){var e=this.$gantt.config;this.restoreConfigCalendars(this.defaults),this.restoreConfigCalendars(e.worktimes)},isCalendar:function(e){return[e.isWorkTime,e.setWorkTime,e.getWorkHours,e.unsetWorkTime,e.getClosestWorkTime,e.calculateDuration,e.hasDuration,e.calculateEndDate].every(function(e){return e instanceof Function})}};function Nn(e){this.$gantt=e.$gantt,this.argumentsHelper=En(this.$gantt),this.calendarManager=e,this.$disabledCalendar=new On(this.$gantt,this.argumentsHelper)}Nn.prototype={_getCalendar:function(e){var t;if(!this.$gantt.config.work_time)t=this.$disabledCalendar;else{var n=this.calendarManager;e.task?t=n.getTaskCalendar(e.task):e.id?t=n.getTaskCalendar(e):e.calendar&&(t=e.calendar),t||=n.getTaskCalendar()}return t},getWorkHours:function(e){return e=this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper,arguments),this._getCalendar(e).getWorkHours(e.date)},setWorkTime:function(e,t){return e=this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper,arguments),t||=this.calendarManager.getCalendar(),t.setWorkTime(e)},unsetWorkTime:function(e,t){return e=this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper,arguments),t||=this.calendarManager.getCalendar(),t.unsetWorkTime(e)},isWorkTime:function(e,t,n,r){var i=this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper,arguments);return r=this._getCalendar(i),r.isWorkTime(i)},getClosestWorkTime:function(e){return e=this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments),this._getCalendar(e).getClosestWorkTime(e)},calculateDuration:function(){var e=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(e).calculateDuration(e)},hasDuration:function(){var e=this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(e).hasDuration(e)},calculateEndDate:function(e){var e=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(e).calculateEndDate(e)}};var Pn={create:function(e,t){return{getWorkHours:function(e){return t.getWorkHours(e)},setWorkTime:function(e){return t.setWorkTime(e)},unsetWorkTime:function(e){t.unsetWorkTime(e)},isWorkTime:function(e,n,r){return t.isWorkTime(e,n,r)},getClosestWorkTime:function(e){return t.getClosestWorkTime(e)},calculateDuration:function(e,n,r){return t.calculateDuration(e,n,r)},_hasDuration:function(e,n,r){return t.hasDuration(e,n,r)},calculateEndDate:function(e,n,r,i){return t.calculateEndDate(e,n,r,i)},mergeCalendars:B(e.mergeCalendars,e),createCalendar:B(e.createCalendar,e),addCalendar:B(e.addCalendar,e),getCalendar:B(e.getCalendar,e),getCalendars:B(e.getCalendars,e),getResourceCalendar:B(e.getResourceCalendar,e),getTaskCalendar:B(e.getTaskCalendar,e),deleteCalendar:B(e.deleteCalendar,e)}}};function Fn(e){var t=new Mn(e),n=new Nn(t);L(e,Pn.create(t,n))}function In(e){e.isUnscheduledTask=function(t){return e.assert(t&&t instanceof Object,`Invalid argument <b>task</b>=`+t+` of gantt.isUnscheduledTask. Task object was expected`),!!t.unscheduled||!t.start_date},e._isAllowedUnscheduledTask=function(t){return!!(t.unscheduled&&e.config.show_unscheduled)},e._isTaskInTimelineLimits=function(e){var t=e.start_date?e.start_date.valueOf():null,n=e.end_date?e.end_date.valueOf():null;return!!(t&&n&&t<=this._max_date.valueOf()&&n>=this._min_date.valueOf())},e.isTaskVisible=function(e){if(!this.isTaskExists(e))return!1;var t=this.getTask(e);return this._isAllowedUnscheduledTask(t)||this._isTaskInTimelineLimits(t)?this.getGlobalTaskIndex(e)>=0:!1},e._getProjectEnd=function(){if(e.config.project_end)return e.config.project_end;var t=e.getTaskByTime();return t=t.sort(function(e,t){return+e.end_date>+t.end_date?1:-1}),t.length?t[t.length-1].end_date:null},e._getProjectStart=function(){if(e.config.project_start)return e.config.project_start;if(e.config.start_date)return e.config.start_date;if(e.getState().min_date)return e.getState().min_date;var t=e.getTaskByTime();return t=t.sort(function(e,t){return+e.start_date>+t.start_date?1:-1}),t.length?t[0].start_date:null};var t=function(n,r){var i=r&&r!=e.config.root_id&&e.isTaskExists(r)?e.getTask(r):!1,a=null;if(i)if(e._getAutoSchedulingConfig().schedule_from_end)a=e.calculateEndDate({start_date:i.end_date,duration:-e.config.duration_step,task:n});else{if(!i.start_date)return t(i,e.getParent(i));a=i.start_date}else if(e._getAutoSchedulingConfig().schedule_from_end)a=e.calculateEndDate({start_date:e._getProjectEnd(),duration:-e.config.duration_step,task:n});else{let t=e.getTaskByIndex(0),r=e.config.start_date;if(!r){let t=e.getState();if(!J(e)&&t.scale_unit&&t.scale_step){let n=e.config.duration_unit,i=t.scale_unit==`minute`&&(n!==`minute`||t.scale_step!==1),a=t.scale_unit==`hour`&&(n!==`minute`&&n!==`hour`||t.scale_step!==1),o=t.scale_unit==`day`&&t.scale_step!==1;i||a||o||!{minute:!0,hour:!0,day:!0,week:!0,month:!0,quarter:!0,year:!0}[t.scale_unit]?r=t.min_date:(r=e.calculateEndDate({start_date:t.min_date,duration:1*t.scale_step,unit:t.scale_unit}),r=e.getClosestWorkTime({date:r,dir:`future`,unit:t.scale_unit}))}else r=t.min_date}a=t?t.start_date?t.start_date:t.end_date?e.calculateEndDate({start_date:t.end_date,duration:-e.config.duration_step,task:n}):r:r}return e.assert(a,`Invalid dates`),new Date(a)};e._set_default_task_timing=function(n){n.start_date=n.start_date||t(n,e.getParent(n)),n.duration=n.duration||e.config.duration_step,n.end_date=n.end_date||e.calculateEndDate(n)},e.createTask=function(n,r,i){if(n||={},e.defined(n.id)||(n.id=e.uid()),n.start_date||=t(n,r),n.text===void 0&&(n.text=e.locale.labels.new_task),n.duration===void 0&&(n.duration=1),this.isTaskExists(r)){this.setParent(n,r,!0);var a=this.getTask(r);a.$open=!0,this.config.details_on_create||this.callEvent(`onAfterParentExpand`,[r,a])}return this.callEvent(`onTaskCreated`,[n])?(this.config.details_on_create?(e.isTaskExists(n.id)?e.getTask(n.id).$index!=n.$index&&(n.start_date&&typeof n.start_date==`string`&&(n.start_date=this.date.parseDate(n.start_date,`parse_date`)),n.end_date&&typeof n.end_date==`string`&&(n.end_date=this.date.parseDate(n.end_date,`parse_date`)),this.$data.tasksStore.updateItem(n.id,n)):(n.$new=!0,this.silent(function(){e.$data.tasksStore.addItem(n,i)})),this.selectTask(n.id),this.refreshData(),this.showLightbox(n.id)):this.addTask(n,r,i)&&(this.showTask(n.id),this.selectTask(n.id)),n.id):null},e._update_flags=function(t,n){var r=e.$data.tasksStore;t===void 0?(this._lightbox_id=null,r.silent(function(){r.unselect()}),this.getSelectedTasks&&this._multiselect.reset(),this._tasks_dnd&&this._tasks_dnd.drag&&(this._tasks_dnd.drag.id=null)):(this._lightbox_id==t&&(this._lightbox_id=n),r.getSelectedId()==t&&r.silent(function(){r.unselect(t),r.select(n)}),this._tasks_dnd&&this._tasks_dnd.drag&&this._tasks_dnd.drag.id==t&&(this._tasks_dnd.drag.id=n))};var n=function(t,n){var r=e.getTaskType(t.type),i={type:r,$no_start:!1,$no_end:!1,scheduled_summary:!1};return r===e.config.types.project&&t.auto_scheduling===!1&&(i.scheduled_summary=!0),!n&&r==t.$rendered_type?(i.$no_start=t.$no_start,i.$no_end=t.$no_end,i):(r==e.config.types.project?i.$no_end=i.$no_start=!0:r!=e.config.types.milestone&&(i.$no_end=!(t.end_date||t.duration),i.$no_start=!t.start_date,e._isAllowedUnscheduledTask(t)&&(i.$no_end=i.$no_start=!1)),i)};e._init_task_timing=function(t){var i=n(t,!0),a=t.$rendered_type!=i.type,o=i.type;a&&(t.$no_start=i.$no_start,t.$no_end=i.$no_end,t.$rendered_type=i.type),a&&o!=this.config.types.milestone&&o==this.config.types.project&&(this._set_default_task_timing(t),t.$calculate_duration=!1),o==this.config.types.milestone&&(t.end_date=t.start_date),t.start_date&&t.end_date&&t.$calculate_duration!==!1&&(t.duration=this.calculateDuration(t)),t.$calculate_duration||=!0,t.end_date||=t.start_date,t.duration=t.duration||0,this.config.min_duration===0&&t.duration===0&&(t.$no_end=!1,t.type===e.config.types.project&&e.hasChild(t.id)&&(t.$no_end=!0));var s=this.getTaskCalendar(t);t.$effective_calendar&&t.$effective_calendar!==s.id&&(r(t),this.config.inherit_calendar&&this.isSummaryTask(t)&&this.eachTask(function(e){r(e)},t.id)),t.$effective_calendar=s.id};function r(t){t.$effective_calendar=e.getTaskCalendar(t).id,t.start_date=e.getClosestWorkTime({dir:`future`,date:t.start_date,unit:e.config.duration_unit,task:t}),t.end_date=e.calculateEndDate(t)}e.isSummaryTask=function(t){e.assert(t&&t instanceof Object,`Invalid argument <b>task</b>=`+t+` of gantt.isSummaryTask. Task object was expected`);var r=n(t);return!!(r.$no_end||r.$no_start)},e.resetProjectDates=function(e){var t=n(e);if(t.$no_end||t.$no_start){var r=a(e.id);i.call(this,e,t,r.start_date,r.end_date),e.$rollup=r.rollup,e.$inlineSplit=r.splitItems}};function i(n,r,i,a){let o={start:`start_date`,end:`end_date`},s={start:`$auto_start_date`,end:`$auto_end_date`},c;c=n.type===e.config.types.project&&n.auto_scheduling===!1?s:o,r.$no_start&&(i?n[c.start]=new Date(i):n[c.start]=t(n,this.getParent(n))),r.$no_end&&(a?n[c.end]=new Date(a):n[c.end]=this.calculateEndDate({start_date:n[c.start],duration:this.config.duration_step,task:n})),(r.$no_start||r.$no_end)&&this._init_task_timing(n)}e.getSubtaskDuration=function(t){var n=0,r=t===void 0?e.config.root_id:t;return this.eachTask(function(t){this.getTaskType(t.type)==e.config.types.project||this.isUnscheduledTask(t)||(n+=t.duration)},r),n};function a(t){let n=null,r=null,i=t===void 0?e.config.root_id:t,a=[],o=[],s=null;return e.isTaskExists(i)&&(s=e.getTask(i)),e.eachTask(function(t){let i=e.getTaskType(t.type)==e.config.types.project&&t.auto_scheduling===!1;e.getTaskType(t.type)==e.config.types.project&&!i||e.isUnscheduledTask(t)||(t.rollup&&a.push(t.id),t.start_date&&(!t.$no_start||i)&&(!n||n>t.start_date.valueOf())&&(n=t.start_date.valueOf()),t.end_date&&(!t.$no_end||i)&&(!r||r<t.end_date.valueOf())&&(r=t.end_date.valueOf()),s&&s.render==`split`&&(t.split_placement===`inline`||t.split_placement!==`subrow`&&(!s.$open||!e.config.open_split_tasks))&&o.push(t))},i),{start_date:n?new Date(n):null,end_date:r?new Date(r):null,rollup:a,splitItems:o}}e.getSubtaskDates=function(e){var t=a(e);return{start_date:t.start_date,end_date:t.end_date}},e._update_parents=function(t,r,i){if(t){var a=this.getTask(t);a.rollup&&(i=!0);var o=this.getParent(a),s=n(a),c=!0;if(i||a.start_date&&a.end_date&&(s.$no_start||s.$no_end)){let t=a.$auto_start_date?`$auto_start_date`:`start_date`,n=a.$auto_end_date?`$auto_end_date`:`end_date`;var l=a[t].valueOf(),u=a[n].valueOf();e.resetProjectDates(a),!i&&l==a[t].valueOf()&&u==a[n].valueOf()&&(c=!1),c&&!r&&this.refreshTask(a.id,!0),s.scheduled_summary&&(c=!0)}c&&o&&this.isTaskExists(o)&&this._update_parents(o,r,i)}},e.roundDate=function(t){var n=e.getScale();P(t)&&(t={date:t,unit:n?n.unit:e.config.duration_unit,step:n?n.step:e.config.duration_step});var r=t.date,i=t.step,a=t.unit;if(!n)return r;var o,s,c;if(a==n.unit&&i==n.step&&+r>=+n.min_date&&+r<=+n.max_date)c=Math.floor(e.columnIndexByDate(r)),n.trace_x[c]||(--c,n.rtl&&(c=0)),s=new Date(n.trace_x[c]),o=e.date.add(s,i,a);else{for(c=Math.floor(e.columnIndexByDate(r)),o=e.date[a+`_start`](new Date(n.min_date)),n.trace_x[c]&&(o=e.date[a+`_start`](n.trace_x[c]));+o<+r;){o=e.date[a+`_start`](e.date.add(o,i,a));var l=o.getTimezoneOffset();o=e._correct_dst_change(o,l,o,a),e.date[a+`_start`]&&(o=e.date[a+`_start`](o))}s=e.date.add(o,-1*i,a)}return t.dir&&t.dir==`future`?o:t.dir&&t.dir==`past`||Math.abs(r-s)<Math.abs(o-r)?s:o},e.correctTaskWorkTime=function(t){e.config.work_time&&e.config.correct_work_time&&(this.isWorkTime(t.start_date,void 0,t)?this.isWorkTime(new Date(t.end_date-1),void 0,t)||(t.end_date=this.calculateEndDate(t)):(t.start_date=this.getClosestWorkTime({date:t.start_date,dir:`future`,task:t}),t.end_date=this.calculateEndDate(t)))},e.attachEvent(`onBeforeTaskUpdate`,function(t,n){return e._init_task_timing(n),!0}),e.attachEvent(`onBeforeTaskAdd`,function(t,n){return e._init_task_timing(n),!0}),e.attachEvent(`onAfterTaskMove`,function(t,n,r){return e._init_task_timing(e.getTask(t)),!0})}function Ln(e){e.getTaskType=function(t){var n=t;for(var r in t&&typeof t==`object`&&(n=t.type),this.config.types)if(this.config.types[r]==n)return n;return e.config.types.task}}function Rn(e){e._cached_functions={cache:{},mode:!1,critical_path_mode:!1,wrap_methods:function(e,t){if(t._prefetch_originals)for(var n in t._prefetch_originals)t[n]=t._prefetch_originals[n];t._prefetch_originals={};for(var n=0;n<e.length;n++)this.prefetch(e[n],t)},prefetch:function(e,t){var n=t[e];if(n){var r=this;t._prefetch_originals[e]=n,t[e]=function(){for(var t=Array(arguments.length),i=0,a=arguments.length;i<a;i++)t[i]=arguments[i];if(r.active){var o=r.get_arguments_hash(Array.prototype.slice.call(t));r.cache[e]||(r.cache[e]={});var s=r.cache[e];if(r.has_cached_value(s,o))return r.get_cached_value(s,o);var c=n.apply(this,t);return r.cache_value(s,o,c),c}return n.apply(this,t)}}return n},cache_value:function(e,t,n){this.is_date(n)&&(n=new Date(n)),e[t]=n},has_cached_value:function(e,t){return e.hasOwnProperty(t)},get_cached_value:function(e,t){var n=e[t];return this.is_date(n)&&(n=new Date(n)),n},is_date:function(e){return e&&e.getUTCDate},get_arguments_hash:function(e){for(var t=[],n=0;n<e.length;n++)t.push(this.stringify_argument(e[n]));return`(`+t.join(`;`)+`)`},stringify_argument:function(e){var t=``;return t=e.id?e.id:this.is_date(e)?e.valueOf():e,t+``},activate:function(){this.clear(),this.active=!0},deactivate:function(){this.clear(),this.active=!1},clear:function(){this.cache={}},setup:function(e){var t=[],n=[`_isProjectEnd`,`_getProjectEnd`,`_getSlack`];this.mode==`auto`?e.config.highlight_critical_path&&(t=n):this.mode===!0&&(t=n),this.wrap_methods(t,e)},update_if_changed:function(e){(this.critical_path_mode!=e.config.highlight_critical_path||this.mode!==e.config.optimize_render)&&(this.critical_path_mode=e.config.highlight_critical_path,this.mode=e.config.optimize_render,this.setup(e))}};function t(){return e._cached_functions.update_if_changed(e),e._cached_functions.active||e._cached_functions.activate(),!0}e.attachEvent(`onBeforeGanttRender`,t),e.attachEvent(`onBeforeDataRender`,t),e.attachEvent(`onBeforeSmartRender`,function(){t()}),e.attachEvent(`onBeforeParse`,t),e.attachEvent(`onDataRender`,function(){e._cached_functions.deactivate()});var n=null;e.attachEvent(`onSmartRender`,function(){n&&clearTimeout(n),n=setTimeout(function(){e._cached_functions.deactivate()},1e3)}),e.attachEvent(`onBeforeGanttReady`,function(){return e._cached_functions.update_if_changed(e),!0})}function zn(e){window.getComputedStyle(e.$root).getPropertyValue(`position`)==`static`&&(e.$root.style.position=`relative`);var t=document.createElement(`iframe`);t.className=`gantt_container_resize_watcher`,t.tabIndex=-1,e.config.wai_aria_attributes&&(t.setAttribute(`role`,`none`),t.setAttribute(`aria-hidden`,!0)),e.env.isSalesforce&&(e.config.container_resize_method=`timeout`),e.$root.appendChild(t),t.contentWindow?Bn(e,t.contentWindow):(e.$root.removeChild(t),Bn(e,window))}function Bn(e,t){var n=e.config.container_resize_timeout||20,r;let i=Vn(e);if(e.config.container_resize_method==`timeout`)c();else try{e.event(t,`resize`,function(){if(e.$scrollbarRepaint)e.$scrollbarRepaint=null;else{let t=Vn(e);if(i.x==t.x&&i.y==t.y)return;i=t,a()}})}catch{c()}function a(){clearTimeout(r),r=setTimeout(function(){e.$destroyed||e.render()},n)}var o=e.$root.offsetHeight,s=e.$root.offsetWidth;function c(){(e.$root.offsetHeight!=o||e.$root.offsetWidth!=s)&&a(),o=e.$root.offsetHeight,s=e.$root.offsetWidth,setTimeout(c,n)}}function Vn(e){return{x:e.$root.offsetWidth,y:e.$root.offsetHeight}}function Hn(e){return function(t,n){!t&&e.config.show_errors&&e.callEvent(`onError`,[n])!==!1&&(e.message?e.message({type:`error`,text:n,expire:-1}):console.log(n))}}function Un(e){e.assert=Hn(e);function t(e){try{e.cloneNode(!1)}catch{return!1}return!0}var n="Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.";function r(r){if(!r||typeof r==`string`&&document.getElementById(r)||t(r))return!0;throw e.assert(!1,n),Error(n)}e.init=function(t,n,i){e.env.isNode?t=null:r(t),n&&i&&(this.config.start_date=this._min_date=new Date(n),this.config.end_date=this._max_date=new Date(i)),this.date.init(),this.init=function(t){e.env.isNode?t=null:r(t),this.$container&&this.$container.parentNode&&(this.$container.parentNode.removeChild(this.$container),this.$container=null),this.$layout&&this.$layout.clear(),this._reinit(t)},this._reinit(t)},e._quickRefresh=function(e){for(var t=this._getDatastores.call(this),n=0;n<t.length;n++)t[n]._quick_refresh=!0;e();for(var n=0;n<t.length;n++)t[n]._quick_refresh=!1};var i=(function(){this._clearTaskLayers&&this._clearTaskLayers(),this._clearLinkLayers&&this._clearLinkLayers(),this.$layout&&(this.$layout.destructor(),this.$layout=null,this.$ui.reset())}).bind(e),a=(function(){J(e)||(this.$root.innerHTML=``,this.$root.gantt=this,Ut(this),this.config.layout.id=`main`,this.$layout=this.$ui.createView(`layout`,this.$root,this.config.layout),this.$layout.attachEvent(`onBeforeResize`,function(){for(var t=e.$services.getService(`datastores`),n=0;n<t.length;n++)e.getDatastore(t[n]).filter(),e.$data.tasksStore._skipTaskRecalculation?e.$data.tasksStore._skipTaskRecalculation!=`lightbox`&&(e.$data.tasksStore._skipTaskRecalculation=!1):e.getDatastore(t[n]).callEvent(`onBeforeRefreshAll`,[])}),this.$layout.attachEvent(`onResize`,function(){e._quickRefresh(function(){e.refreshData()})}),this.callEvent(`onGanttLayoutReady`,[]),this.$layout.render(),this.$container=this.$layout.$container.firstChild,zn(this))}).bind(e);e.resetLayout=function(){i(),a(),this.render()},e._reinit=function(t){this.callEvent(`onBeforeGanttReady`,[]),this._update_flags(),this.$services.getService(`templateLoader`).initTemplates(this),i(),this.$root=null,t&&(this.$root=v(t),a(),this.$mouseEvents.reset(this.$root),o(e)),this.callEvent(`onTemplatesReady`,[]),this.callEvent(`onGanttReady`,[]),this.render()};function o(e){e.$container&&!e.config.autosize&&e.$root.offsetHeight<50&&console.warn(`The Gantt container has a small height, so you cannot see its content. If it is not intended, you need to set the 'height' style rule to the container:
|
|
21
|
-
https://docs.dhtmlx.com/gantt/faq.html#theganttchartisntrenderedcorrectly`)}e.$click={buttons:{edit:function(t){e.isReadonly(e.getTask(t))||e.showLightbox(t)},delete:function(t){var n=e.getTask(t);if(!e.isReadonly(n)){var r=e.locale.labels.confirm_deleting,i=e.locale.labels.confirm_deleting_title;e._delete_task_confirm({task:n,message:r,title:i,callback:function(){if(!e.isTaskExists(t)){e.hideLightbox();return}n.$new?(e.$data.tasksStore._skipTaskRecalculation=`lightbox`,e.silent(function(){e.deleteTask(t,!0)}),e.$data.tasksStore._skipTaskRecalculation=!1,e.refreshData()):(e.$data.tasksStore._skipTaskRecalculation=!0,e.deleteTask(t)),e.hideLightbox()}})}}}},e.render=function(){this.callEvent(`onBeforeGanttRender`,[]);var t;if(!J(e)){!this.config.sort&&this._sort&&(this._sort=void 0),this.$root&&(this.config.rtl?(this.$root.classList.add(`gantt_rtl`),this.$root.firstChild.classList.add(`gantt_rtl`)):(this.$root.classList.remove(`gantt_rtl`),this.$root.firstChild.classList.remove(`gantt_rtl`)));var n=this.getScrollState(),r=n?n.x:0;this._getHorizontalScrollbar()&&(r=this._getHorizontalScrollbar().$config.codeScrollLeft||r||0),t=null,r&&(t=e.dateFromPos(r+this.config.task_scroll_offset))}if(Ut(this),J(e))e.refreshData();else{this.$layout.$config.autosize=this.config.autosize;var i=this.config.preserve_scroll;if(this.config.preserve_scroll=!1,this.$layout.resize(),this.config.preserve_scroll=i,this.config.preserve_scroll&&n){if(r||n.y){var a=e.getScrollState(),o=e.dateFromPos(a.x);if(!(+t==+o&&a.y==n.y)){var r=null,s=null;if(t)var r=Math.max(e.posFromDate(t)-e.config.task_scroll_offset,0);n.y&&(s=n.y),e.scrollTo(r,s)}}this.$layout.getScrollbarsInfo().forEach(t=>{let r=e.$ui.getView(t.id),i=e.utils.dom.isChildOf(r.$view,e.$container);t.boundViews.forEach(r=>{let a=e.$ui.getView(r);t.y&&t.y!=n.y&&a&&!i&&a.scrollTo(void 0,0),t.x_pos&&t.x_pos!=n.x&&a&&a.scrollTo(t.x_pos,void 0)})})}}this.callEvent(`onGanttRender`,[])},e.setSizes=e.render,e.getTaskRowNode=function(e){for(var t=this.$grid_data.childNodes,n=this.config.task_attribute,r=0;r<t.length;r++)if(t[r].getAttribute&&t[r].getAttribute(n)==e)return t[r];return null},e.changeLightboxType=function(t){if(this.getLightboxType()==t)return!0;e._silent_redraw_lightbox(t)},e._get_link_type=function(t,n){var r=null;return t&&n?r=e.config.links.start_to_start:!t&&n?r=e.config.links.finish_to_start:!t&&!n?r=e.config.links.finish_to_finish:t&&!n&&(r=e.config.links.start_to_finish),r},e.isLinkAllowed=function(e,t,n,r){var i=null;if(i=typeof e==`object`?e:{source:e,target:t,type:this._get_link_type(n,r)},!i||!(i.source&&i.target&&i.type)||i.source==i.target)return!1;var a=!0;return this.checkEvent(`onLinkValidation`)&&(a=this.callEvent(`onLinkValidation`,[i])),a},e._correct_dst_change=function(t,n,r,i){var a=le(i)*r;if(a>3600&&a<3600*24){var o=t.getTimezoneOffset()-n;o&&(t=e.date.add(t,o,`minute`))}return t},e.isSplitTask=function(t){return e.assert(t&&t instanceof Object,`Invalid argument <b>task</b>=`+t+` of gantt.isSplitTask. Task object was expected`),this.$data.tasksStore._isSplitItem(t)},e._is_icon_open_click=function(e){if(!e)return!1;var t=e.target||e.srcElement;if(!(t&&t.className))return!1;var n=m(t);return n.indexOf(`gantt_tree_icon`)!==-1&&(n.indexOf(`gantt_close`)!==-1||n.indexOf(`gantt_open`)!==-1)}}function Wn(e){e.destructor=function(){for(var e in this.clearAll(),this.callEvent(`onDestroy`,[]),this._getDatastores().forEach(function(e){e.destructor()}),this.$root&&delete this.$root.gantt,this._eventRemoveAll&&this._eventRemoveAll(),this.$layout&&this.$layout.destructor(),this.resetLightbox&&this.resetLightbox(),this.ext.inlineEditors&&this.ext.inlineEditors.destructor&&this.ext.inlineEditors.destructor(),this._dp&&this._dp.destructor&&this._dp.destructor(),this.$services.destructor(),this.detachAllEvents(),this)e.indexOf(`$`)===0&&delete this[e];this.$destroyed=!0}}var Gn={date:{month_full:[`Januarie`,`Februarie`,`Maart`,`April`,`Mei`,`Junie`,`Julie`,`Augustus`,`September`,`Oktober`,`November`,`Desember`],month_short:[`Jan`,`Feb`,`Mrt`,`Apr`,`Mei`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Des`],day_full:[`Sondag`,`Maandag`,`Dinsdag`,`Woensdag`,`Donderdag`,`Vrydag`,`Saterdag`],day_short:[`So`,`Ma`,`Di`,`Wo`,`Do`,`Vr`,`Sa`]},labels:{new_task:`Nuwe taak`,icon_save:`Stoor`,icon_cancel:`Kanselleer`,icon_details:`Besonderhede`,icon_edit:`Wysig`,icon_delete:`Verwyder`,confirm_deleting:`Die taak sal permanent verwyder word, is jy seker?`,section_description:`Beskrywing`,section_time:`Tydperk`,section_type:`Tipe`,section_deadline:`Sperdatum`,section_baselines:`Basislyne`,section_new_resources:`Hulpbronne`,column_wbs:`WBS`,column_text:`Taaknaam`,column_start_date:`Begintyd`,column_duration:`Duur`,column_add:``,link:`Skakel`,confirm_link_deleting:`sal verwyder word`,link_start:` (begin)`,link_end:` (einde)`,type_task:`Taak`,type_project:`Opsommingstaak`,type_milestone:`Mylpaal`,minutes:`Minute`,hours:`Uur`,days:`Dae`,weeks:`Weke`,months:`Maande`,years:`Jaar`,message_ok:`OK`,message_cancel:`Kanselleer`,section_constraint:`Beperking`,constraint_type:`Beperkingtipe`,constraint_date:`Beperkingsdatum`,asap:`So Gou As Moontlik`,alap:`So Laat As Moontlik`,snet:`Begin Nie Vroeër As`,snlt:`Begin Nie Later As`,fnet:`Voltooi Nie Vroeër As`,fnlt:`Voltooi Nie Later As`,mso:`Moet Begin Op`,mfo:`Moet Voltooi Op`,resources_add_button:`Voeg Toewysing By`,resources_filter_placeholder:`Soek...`,resources_filter_label:`versteek leë`,resources_section_placeholder:`Niks is nog toegewys nie. Klik 'Voeg Toewysing By' om hulpbronne toe te wys.`,empty_state_text_link:`Klik Hier`,empty_state_text_description:`om jou eerste taak te skep`,baselines_section_placeholder:`Begin deur 'n nuwe basislyn by te voeg`,baselines_add_button:`Voeg Basislyn By`,baselines_remove_button:`Verwyder`,baselines_remove_all_button:`Verwyder Alles`,deadline_enable_button:`Stel`,deadline_disable_button:`Verwyder`}},Kn={date:{month_full:[`كانون الثاني`,`شباط`,`آذار`,`نيسان`,`أيار`,`حزيران`,`تموز`,`آب`,`أيلول`,`تشرين الأول`,`تشرين الثاني`,`كانون الأول`],month_short:[`يناير`,`فبراير`,`مارس`,`أبريل`,`مايو`,`يونيو`,`يوليو`,`أغسطس`,`سبتمبر`,`أكتوبر`,`نوفمبر`,`ديسمبر`],day_full:[`الأحد`,`الاثنين`,`الثلاثاء`,`الأربعاء`,`الخميس`,`الجمعة`,`السبت`],day_short:[`احد`,`اثنين`,`ثلاثاء`,`اربعاء`,`خميس`,`جمعة`,`سبت`]},labels:{new_task:`مهمة جديدة`,icon_save:`احفظ`,icon_cancel:`إلغاء`,icon_details:`تفاصيل`,icon_edit:`تحرير`,icon_delete:`حذف`,confirm_deleting:`سيتم حذف العنصر نهائيًا. هل أنت متأكد؟`,section_description:`الوصف`,section_time:`الفترة الزمنية`,section_type:`النوع`,section_deadline:`الموعد النهائي`,section_baselines:`خطوط الأساس`,section_new_resources:`الموارد`,column_wbs:`WBS`,column_text:`اسم المهمة`,column_start_date:`البدء`,column_duration:`المدة`,column_add:``,link:`الارتباط`,confirm_link_deleting:`سيتم حذفه`,link_start:` (البداية)`,link_end:` (النهاية)`,type_task:`مهمة`,type_project:`مهمة موجزة`,type_milestone:`مرحلة رئيسية`,minutes:`دقائق`,hours:`ساعات`,days:`أيام`,weeks:`أسابيع`,months:`شهور`,years:`سنوات`,message_ok:`موافق`,message_cancel:`إلغاء`,section_constraint:`القيد`,constraint_type:`نوع القيد`,constraint_date:`تاريخ القيد`,asap:`في أقرب وقت ممكن`,alap:`في وقت متأخر قدر الإمكان`,snet:`البدء في وقت لا سابق له`,snlt:`البدء في موعد لا يتجاوز`,fnet:`تاريخ الانتهاء ليس قبل`,fnlt:`الانتهاء في موعد لا يتجاوز`,mso:`يجب أن يبدأ التشغيل`,mfo:`يجب الانتهاء في`,resources_add_button:`إضافة إسناد`,resources_filter_placeholder:`بحث...`,resources_filter_label:`إخفاء الفارغ`,resources_section_placeholder:`لا توجد إسنادات بعد. انقر فوق 'إضافة إسناد' لتعيين الموارد.`,empty_state_text_link:`انقر هنا`,empty_state_text_description:`لإنشاء مهمتك الأولى`,baselines_section_placeholder:`ابدأ بإضافة خط أساس جديد`,baselines_add_button:`إضافة خط أساسي`,baselines_remove_button:`إزالة`,baselines_remove_all_button:`إزالة الكل`,deadline_enable_button:`تعيين`,deadline_disable_button:`إزالة`}},qn={date:{month_full:[`Студзень`,`Люты`,`Сакавік`,`Красавік`,`Maй`,`Чэрвень`,`Ліпень`,`Жнівень`,`Верасень`,`Кастрычнік`,`Лістапад`,`Снежань`],month_short:[`Студз`,`Лют`,`Сак`,`Крас`,`Maй`,`Чэр`,`Ліп`,`Жнів`,`Вер`,`Каст`,`Ліст`,`Снеж`],day_full:[`Нядзеля`,`Панядзелак`,`Аўторак`,`Серада`,`Чацвер`,`Пятніца`,`Субота`],day_short:[`Нд`,`Пн`,`Аўт`,`Ср`,`Чцв`,`Пт`,`Сб`]},labels:{new_task:`Новае заданне`,icon_save:`Захаваць`,icon_cancel:`Адмяніць`,icon_details:`Дэталі`,icon_edit:`Змяніць`,icon_delete:`Выдаліць`,confirm_deleting:`Падзея будзе выдалена незваротна, працягнуць?`,section_description:`Апісанне`,section_time:`Перыяд часу`,section_type:`Тып`,section_deadline:`Крайні тэрмін`,section_baselines:`Базавыя планы`,section_new_resources:`Рэсурсы`,column_wbs:`ІСР`,column_text:`Задача`,column_start_date:`Пачатак`,column_duration:`Працяг`,column_add:``,link:`Сувязь`,confirm_link_deleting:`будзе выдалена`,link_start:`(пачатак)`,link_end:`(канец)`,type_task:`Задача`,type_project:`Зводная задача`,type_milestone:`Вяха`,minutes:`Хвілін`,hours:`Гадзіны`,days:`Дні`,weeks:`Тыдняў`,months:`Mесяцаў`,years:`Гадоў`,message_ok:`OK`,message_cancel:`Адмяніць`,section_constraint:`Абмежаванне`,constraint_type:`Тып абмежавання`,constraint_date:`Дата абмежавання`,asap:`Як мага раней`,alap:`Як мага пазней`,snet:`Пачатак не раней`,snlt:`Пачатак не пазней`,fnet:`Завяршэнне не раней`,fnlt:`Завяршэнне не пазней`,mso:`Павінен пачацца`,mfo:`Павінен завяршыцца`,resources_add_button:`Дадаць прызначэнне`,resources_filter_placeholder:`Пошук...`,resources_filter_label:`схаваць пустыя`,resources_section_placeholder:`Пакуль нічога не прызначана. Націсніце «Дадаць прызначэнне», каб прызначыць рэсурсы.`,empty_state_text_link:`Націсніце тут`,empty_state_text_description:`каб стварыць першую задачу`,baselines_section_placeholder:`Пачніце дадаваць новы базавы план`,baselines_add_button:`Дадаць базавы план`,baselines_remove_button:`Выдаліць`,baselines_remove_all_button:`Выдаліць усе`,deadline_enable_button:`Усталяваць`,deadline_disable_button:`Выдаліць`}},Jn={date:{month_full:[`Януари`,`Февруари`,`Март`,`Април`,`Май`,`Юни`,`Юли`,`Август`,`Септември`,`Октомври`,`Ноември`,`Декември`],month_short:[`Ян`,`Фев`,`Мар`,`Апр`,`Май`,`Юни`,`Юли`,`Авг`,`Сеп`,`Окт`,`Ное`,`Дек`],day_full:[`Неделя`,`Понеделник`,`Вторник`,`Сряда`,`Четвъртък`,`Петък`,`Събота`],day_short:[`Нд`,`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`]},labels:{new_task:`Нова задача`,icon_save:`Запиши`,icon_cancel:`Отмени`,icon_details:`Подробности`,icon_edit:`Редактиране`,icon_delete:`Изтриване`,confirm_deleting:`Задачата ще бъде изтрита окончателно. Сигурни ли сте?`,section_description:`Описание`,section_time:`Период`,section_type:`Тип`,section_deadline:`Краен срок`,section_baselines:`Базови линии`,section_new_resources:`Ресурси`,column_wbs:`WBS`,column_text:`Име на задача`,column_start_date:`Начална дата`,column_duration:`Продължителност`,column_add:``,link:`Връзка`,confirm_link_deleting:`ще бъде изтрита`,link_start:` (начало)`,link_end:` (край)`,type_task:`Задача`,type_project:`Обобщена задача`,type_milestone:`Ключов етап`,minutes:`Минути`,hours:`Часа`,days:`Дни`,weeks:`Седмици`,months:`Месеца`,years:`Години`,message_ok:`OK`,message_cancel:`Отмени`,section_constraint:`Ограничение`,constraint_type:`Тип ограничение`,constraint_date:`Дата на ограничението`,asap:`Възможно най-скоро`,alap:`Възможно най-късно`,snet:`Начало не по-рано от`,snlt:`Начало не по-късно от`,fnet:`Край не по-рано от`,fnlt:`Край не по-късно от`,mso:`Трябва да започне на`,mfo:`Трябва да завърши на`,resources_add_button:`Добави възлагане`,resources_filter_placeholder:`Търсене...`,resources_filter_label:`скрий празните`,resources_section_placeholder:`Все още няма възлагания. Щракнете върху 'Добави възлагане', за да възложите ресурси.`,empty_state_text_link:`Щракнете тук`,empty_state_text_description:`за да създадете първата си задача`,baselines_section_placeholder:`Започнете с добавяне на нова базова линия`,baselines_add_button:`Добави базова линия`,baselines_remove_button:`Премахни`,baselines_remove_all_button:`Премахни всички`,deadline_enable_button:`Задай`,deadline_disable_button:`Премахни`}},Yn={date:{month_full:[`Januar`,`Februar`,`Mart`,`April`,`Maj`,`Juni`,`Juli`,`Avgust`,`Septembar`,`Oktobar`,`Novembar`,`Decembar`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Maj`,`Jun`,`Jul`,`Avg`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Nedjelja`,`Ponedjeljak`,`Utorak`,`Srijeda`,`Četvrtak`,`Petak`,`Subota`],day_short:[`Ned`,`Pon`,`Uto`,`Sri`,`Čet`,`Pet`,`Sub`]},labels:{new_task:`Novi zadatak`,icon_save:`Sačuvaj`,icon_cancel:`Otkaži`,icon_details:`Detalji`,icon_edit:`Uredi`,icon_delete:`Obriši`,confirm_deleting:`Zadatak će biti trajno obrisan, jeste li sigurni?`,section_description:`Opis`,section_time:`Vremenski period`,section_type:`Tip`,section_deadline:`Rok`,section_baselines:`Osnovne linije`,section_new_resources:`Resursi`,column_wbs:`WBS`,column_text:`Naziv zadatka`,column_start_date:`Datum početka`,column_duration:`Trajanje`,column_add:``,link:`Veza`,confirm_link_deleting:`će biti obrisana`,link_start:` (početak)`,link_end:` (kraj)`,type_task:`Zadatak`,type_project:`Zbirni zadatak`,type_milestone:`Prekretnica`,minutes:`Minuta`,hours:`Sati`,days:`Dana`,weeks:`Sedmica`,months:`Mjeseci`,years:`Godina`,message_ok:`OK`,message_cancel:`Otkaži`,section_constraint:`Ograničenje`,constraint_type:`Tip ograničenja`,constraint_date:`Datum ograničenja`,asap:`Što je prije moguće`,alap:`Što je kasnije moguće`,snet:`Počni ne prije`,snlt:`Počni ne poslije`,fnet:`Završi ne prije`,fnlt:`Završi ne poslije`,mso:`Mora početi na`,mfo:`Mora završiti na`,resources_add_button:`Dodaj dodjelu`,resources_filter_placeholder:`Pretraži...`,resources_filter_label:`sakrij prazne`,resources_section_placeholder:`Ništa još nije dodijeljeno. Kliknite na 'Dodaj Dodjelu' da dodijelite resurse.`,empty_state_text_link:`Kliknite ovdje`,empty_state_text_description:`da kreirate svoj prvi zadatak`,baselines_section_placeholder:`Počnite dodavanjem nove osnovne linije`,baselines_add_button:`Dodaj osnovnu liniju`,baselines_remove_button:`Ukloni`,baselines_remove_all_button:`Ukloni sve`,deadline_enable_button:`Postavi`,deadline_disable_button:`Ukloni`}},Xn={date:{month_full:[`Gener`,`Febrer`,`Març`,`Abril`,`Maig`,`Juny`,`Juliol`,`Agost`,`Setembre`,`Octubre`,`Novembre`,`Desembre`],month_short:[`Gen`,`Feb`,`Mar`,`Abr`,`Mai`,`Jun`,`Jul`,`Ago`,`Set`,`Oct`,`Nov`,`Des`],day_full:[`Diumenge`,`Dilluns`,`Dimarts`,`Dimecres`,`Dijous`,`Divendres`,`Dissabte`],day_short:[`Dg`,`Dl`,`Dm`,`Dc`,`Dj`,`Dv`,`Ds`]},labels:{new_task:`Nova tasca`,icon_save:`Guardar`,icon_cancel:`Cancel·lar`,icon_details:`Detalls`,icon_edit:`Editar`,icon_delete:`Esborrar`,confirm_deleting:`La tasca s'esborrarà definitivament, continuar ?`,section_description:`Descripció`,section_time:`Període de temps`,section_type:`Tipus`,section_deadline:`Data límit`,section_baselines:`Línies de base`,section_new_resources:`Recursos`,column_wbs:`WBS`,column_text:`Nom de la tasca`,column_start_date:`Data d'inici`,column_duration:`Durada`,column_add:``,link:`Enllaç`,confirm_link_deleting:`se suprimirà`,link_start:` (inici)`,link_end:` (final)`,type_task:`Tasca`,type_project:`Tasca resum`,type_milestone:`Fita`,minutes:`Minuts`,hours:`Hores`,days:`Dies`,weeks:`Setmanes`,months:`Mesos`,years:`Anys`,message_ok:`D'acord`,message_cancel:`Cancel·lar`,section_constraint:`Restricció`,constraint_type:`Tipus de restricció`,constraint_date:`Data de restricció`,asap:`Tan aviat com sigui possible`,alap:`Tan tard com sigui possible`,snet:`No començar abans de`,snlt:`No començar després de`,fnet:`No finalitzar abans de`,fnlt:`No finalitzar després de`,mso:`Ha de començar el`,mfo:`Ha de finalitzar el`,resources_add_button:`Afegeix assignació`,resources_filter_placeholder:`Cerca...`,resources_filter_label:`amaga els buits`,resources_section_placeholder:`Encara no hi ha cap assignació. Feu clic a «Afegeix assignació» per assignar recursos.`,empty_state_text_link:`Feu clic aquí`,empty_state_text_description:`per crear la vostra primera tasca`,baselines_section_placeholder:`Comenceu a afegir una nova línia de base`,baselines_add_button:`Afegeix una línia de base`,baselines_remove_button:`Suprimeix`,baselines_remove_all_button:`Suprimeix-ho tot`,deadline_enable_button:`Defineix`,deadline_disable_button:`Suprimeix`}},Zn={date:{month_full:[`一月`,`二月`,`三月`,`四月`,`五月`,`六月`,`七月`,`八月`,`九月`,`十月`,`十一月`,`十二月`],month_short:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],day_full:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`],day_short:[`日`,`一`,`二`,`三`,`四`,`五`,`六`]},labels:{new_task:`新任务`,icon_save:`保存`,icon_cancel:`取消`,icon_details:`详情`,icon_edit:`编辑`,icon_delete:`删除`,confirm_deleting:`确定要删除该任务吗?`,section_description:`描述`,section_time:`时间范围`,section_type:`类型`,section_deadline:`期限`,section_baselines:`基线`,section_new_resources:`资源`,column_wbs:`工作分解结构`,column_text:`任务名称`,column_start_date:`开始时间`,column_duration:`持续时间`,column_add:``,link:`关联`,confirm_link_deleting:`将被删除`,link_start:` (开始)`,link_end:` (结束)`,type_task:`任务`,type_project:`摘要任务`,type_milestone:`里程碑`,minutes:`分钟`,hours:`小时`,days:`天`,weeks:`周`,months:`月`,years:`年`,message_ok:`确定`,message_cancel:`取消`,section_constraint:`限制`,constraint_type:`限制类型`,constraint_date:`限制日期`,asap:`尽快`,alap:`尽可能晚`,snet:`启动时间不早于`,snlt:`启动时间不晚于`,fnet:`完成时间不早于`,fnlt:`完成时间不晚于`,mso:`必须从`,mfo:`必须完成`,resources_add_button:`添加分配`,resources_filter_placeholder:`搜索...`,resources_filter_label:`隐藏空项`,resources_section_placeholder:`尚未分配任何内容。单击“添加分配”以分配资源。`,empty_state_text_link:`点击此处`,empty_state_text_description:`为了创建第一个任务`,baselines_section_placeholder:`开始添加新的基线`,baselines_add_button:`添加基线`,baselines_remove_button:`删除`,baselines_remove_all_button:`全部删除`,deadline_enable_button:`设置`,deadline_disable_button:`删除`}},Qn={date:{month_full:[`Leden`,`Únor`,`Březen`,`Duben`,`Květen`,`Červen`,`Červenec`,`Srpen`,`Září`,`Říjen`,`Listopad`,`Prosinec`],month_short:[`Led`,`Ún`,`Bře`,`Dub`,`Kvě`,`Čer`,`Čec`,`Srp`,`Září`,`Říj`,`List`,`Pro`],day_full:[`Neděle`,`Pondělí`,`Úterý`,`Středa`,`Čtvrtek`,`Pátek`,`Sobota`],day_short:[`Ne`,`Po`,`Út`,`St`,`Čt`,`Pá`,`So`]},labels:{new_task:`Nový úkol`,icon_save:`Uložit`,icon_cancel:`Zrušit`,icon_details:`Detail`,icon_edit:`Edituj`,icon_delete:`Smazat`,confirm_deleting:`Úkol bude trvale smazán. Opravdu chcete pokračovat?`,section_description:`Poznámky`,section_time:`Časové období`,section_type:`Typ`,section_deadline:`Konečný termín`,section_baselines:`Základní plány`,section_new_resources:`Zdroje`,column_wbs:`WBS`,column_text:`Název úkolu`,column_start_date:`Zahájení`,column_duration:`Doba trvání`,column_add:``,link:`Vazba`,confirm_link_deleting:`bude smazána`,link_start:` (začátek)`,link_end:` (konec)`,type_task:`Úkol`,type_project:`Souhrnný úkol`,type_milestone:`Milník`,minutes:`Minut`,hours:`Hodin`,days:`Dní`,weeks:`Týdnů`,months:`Měsíců`,years:`Let`,message_ok:`OK`,message_cancel:`Zrušit`,section_constraint:`Omezení`,constraint_type:`Typ omezení`,constraint_date:`Datum omezení`,asap:`Co nejdříve`,alap:`Co nejpozději`,snet:`Zahájit po dni (včetně)`,snlt:`Zahájit před dnem (včetně)`,fnet:`Dokončit po dni (včetně)`,fnlt:`Dokončit před dnem (včetně)`,mso:`Musí být zahájen`,mfo:`Musí být dokončen`,resources_add_button:`Přidat přiřazení`,resources_filter_placeholder:`Hledat...`,resources_filter_label:`skrýt prázdné`,resources_section_placeholder:`Zatím nic není přiřazeno. Kliknutím na „Přidat přiřazení“ přiřadíte zdroje.`,empty_state_text_link:`Klikněte zde`,empty_state_text_description:`pro vytvoření prvního úkolu`,baselines_section_placeholder:`Začněte přidávat nový základní plán`,baselines_add_button:`Přidat základní plán`,baselines_remove_button:`Odebrat`,baselines_remove_all_button:`Odebrat vše`,deadline_enable_button:`Nastavit`,deadline_disable_button:`Odebrat`}},$n={date:{month_full:[`Januar`,`Februar`,`Marts`,`April`,`Maj`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Maj`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Søndag`,`Mandag`,`Tirsdag`,`Onsdag`,`Torsdag`,`Fredag`,`Lørdag`],day_short:[`Søn`,`Man`,`Tir`,`Ons`,`Tor`,`Fre`,`Lør`]},labels:{new_task:`Ny opgave`,icon_save:`Gem`,icon_cancel:`Annuller`,icon_details:`Detaljer`,icon_edit:`Tilret`,icon_delete:`Slet`,confirm_deleting:`Opgaven bliver slettet permanent. Er du sikker?`,section_description:`Beskrivelse`,section_time:`Tidsperiode`,section_type:`Type`,section_deadline:`Deadline`,section_baselines:`Oprindelige planer`,section_new_resources:`Ressourcer`,column_wbs:`WBS`,column_text:`Opgavenavn`,column_start_date:`Start`,column_duration:`Varighed`,column_add:``,link:`Forbindelse`,confirm_link_deleting:`vil blive slettet`,link_start:` (start)`,link_end:` (slut)`,type_task:`Opgave`,type_project:`Hovedopgave`,type_milestone:`Milepæl`,minutes:`Minutter`,hours:`Timer`,days:`Dage`,weeks:`Uger`,months:`Måneder`,years:`År`,message_ok:`OK`,message_cancel:`Annuller`,section_constraint:`Begrænsning`,constraint_type:`Begrænsningstype`,constraint_date:`Begrænsningsdato`,asap:`Så hurtigt som muligt`,alap:`Så sent som muligt`,snet:`Start tidligst`,snlt:`Start senest`,fnet:`Afslut tidligst`,fnlt:`Afslut senest`,mso:`Skal starte den`,mfo:`Skal slutte den`,resources_add_button:`Tilføj tildeling`,resources_filter_placeholder:`Søg...`,resources_filter_label:`skjul tomme`,resources_section_placeholder:`Intet er tildelt endnu. Klik på „Tilføj tildeling“ for at tildele ressourcer.`,empty_state_text_link:`Klik her`,empty_state_text_description:`for at oprette din første opgave`,baselines_section_placeholder:`Begynd at tilføje en ny oprindelig plan`,baselines_add_button:`Tilføj oprindelig plan`,baselines_remove_button:`Fjern`,baselines_remove_all_button:`Fjern alle`,deadline_enable_button:`Angiv`,deadline_disable_button:`Fjern`}},er={date:{month_full:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`],month_short:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],day_full:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`],day_short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`]},labels:{new_task:`Neue Aufgabe`,icon_save:`Speichern`,icon_cancel:`Abbrechen`,icon_details:`Details`,icon_edit:`Ändern`,icon_delete:`Löschen`,confirm_deleting:`Der Vorgang wird dauerhaft gelöscht. Möchten Sie fortfahren?`,section_description:`Beschreibung`,section_time:`Zeitspanne`,section_type:`Typ`,section_deadline:`Stichtag`,section_baselines:`Basispläne`,section_new_resources:`Ressourcen`,column_wbs:`PSP`,column_text:`Vorgangsname`,column_start_date:`Anfang`,column_duration:`Dauer`,column_add:``,link:`Verknüpfung`,confirm_link_deleting:`werden gelöscht`,link_start:`(Start)`,link_end:`(Ende)`,type_task:`Vorgang`,type_project:`Sammelvorgang`,type_milestone:`Meilenstein`,minutes:`Minuten`,hours:`Stunden`,days:`Tage`,weeks:`Wochen`,months:`Monate`,years:`Jahre`,message_ok:`OK`,message_cancel:`Abbrechen`,section_constraint:`Einschränkung`,constraint_type:`Einschränkungsart`,constraint_date:`Einschränkungstermin`,asap:`So früh wie möglich`,alap:`So spät wie möglich`,snet:`Nicht früher als starten`,snlt:`Nicht später als starten`,fnet:`Beenden Sie nicht früher als`,fnlt:`Ende nicht später als`,mso:`Muss beginnen am`,mfo:`Muss enden am`,resources_add_button:`Zuordnung hinzufügen`,resources_filter_placeholder:`Suchen...`,resources_filter_label:`Leeres ausblenden`,resources_section_placeholder:`Noch nichts zugewiesen. Klicken Sie auf „Zuordnung hinzufügen“, um Ressourcen zuzuweisen.`,empty_state_text_link:`Hier klicken`,empty_state_text_description:`um Ihren ersten Vorgang zu erstellen`,baselines_section_placeholder:`Beginnen Sie mit dem Hinzufügen eines neuen Basisplans`,baselines_add_button:`Basisplan hinzufügen`,baselines_remove_button:`Entfernen`,baselines_remove_all_button:`Alle entfernen`,deadline_enable_button:`Festlegen`,deadline_disable_button:`Entfernen`}},tr={date:{month_full:[`Jänner`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`],month_short:[`Jän`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],day_full:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`],day_short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`]},labels:{new_task:`Neue Aufgabe`,icon_save:`Speichern`,icon_cancel:`Abbrechen`,icon_details:`Details`,icon_edit:`Bearbeiten`,icon_delete:`Löschen`,confirm_deleting:`Die Aufgabe wird endgültig gelöscht. Sind Sie sicher?`,section_description:`Beschreibung`,section_time:`Zeitraum`,section_type:`Typ`,section_deadline:`Stichtag`,section_baselines:`Basispläne`,section_new_resources:`Ressourcen`,column_wbs:`PSP`,column_text:`Aufgabenname`,column_start_date:`Startzeit`,column_duration:`Dauer`,column_add:``,link:`Verknüpfung`,confirm_link_deleting:`wird gelöscht`,link_start:` (Anfang)`,link_end:` (Ende)`,type_task:`Aufgabe`,type_project:`Sammelaufgabe`,type_milestone:`Meilenstein`,minutes:`Minuten`,hours:`Stunden`,days:`Tage`,weeks:`Wochen`,months:`Monate`,years:`Jahre`,message_ok:`OK`,message_cancel:`Abbrechen`,section_constraint:`Einschränkung`,constraint_type:`Einschränkungstyp`,constraint_date:`Einschränkungsdatum`,asap:`So früh wie möglich`,alap:`So spät wie möglich`,snet:`Anfang nicht früher als`,snlt:`Anfang nicht später als`,fnet:`Ende nicht früher als`,fnlt:`Ende nicht später als`,mso:`Muss anfangen am`,mfo:`Muss enden am`,resources_add_button:`Zuweisung hinzufügen`,resources_filter_placeholder:`Suchen...`,resources_filter_label:`leere ausblenden`,resources_section_placeholder:`Noch nichts zugewiesen. Klicken Sie auf 'Zuweisung hinzufügen', um Ressourcen zuzuweisen.`,empty_state_text_link:`Hier klicken`,empty_state_text_description:`um Ihre erste Aufgabe zu erstellen`,baselines_section_placeholder:`Beginnen Sie mit dem Hinzufügen eines neuen Basisplans`,baselines_add_button:`Basisplan hinzufügen`,baselines_remove_button:`Entfernen`,baselines_remove_all_button:`Alle entfernen`,deadline_enable_button:`Festlegen`,deadline_disable_button:`Entfernen`}},nr={date:{month_full:[`Ιανουάριος`,`Φεβρουάριος`,`Μάρτιος`,`Απρίλιος`,`Μάιος`,`Ιούνιος`,`Ιούλιος`,`Αύγουστος`,`Σεπτέμβριος`,`Οκτώβριος`,`Νοέμβριος`,`Δεκέμβριος`],month_short:[`ΙΑΝ`,`ΦΕΒ`,`ΜΑΡ`,`ΑΠΡ`,`ΜΑΙ`,`ΙΟΥΝ`,`ΙΟΥΛ`,`ΑΥΓ`,`ΣΕΠ`,`ΟΚΤ`,`ΝΟΕ`,`ΔΕΚ`],day_full:[`Κυριακή`,`Δευτέρα`,`Τρίτη`,`Τετάρτη`,`Πέμπτη`,`Παρασκευή`,`Σάββατο`],day_short:[`ΚΥ`,`ΔΕ`,`ΤΡ`,`ΤΕ`,`ΠΕ`,`ΠΑ`,`ΣΑ`]},labels:{new_task:`Νέα εργασία`,icon_save:`Αποθήκευση`,icon_cancel:`Ακύρωση`,icon_details:`Λεπτομέρειες`,icon_edit:`Επεξεργασία`,icon_delete:`Διαγραφή`,confirm_deleting:`Η εργασία θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε?`,section_description:`Περιγραφή`,section_time:`Χρονική περίοδος`,section_type:`Τύπος`,section_deadline:`Προθεσμία`,section_baselines:`Γραμμές βάσης`,section_new_resources:`Πόροι`,column_wbs:`WBS`,column_text:`Όνομα εργασίας`,column_start_date:`Έναρξη`,column_duration:`Διάρκεια`,column_add:``,link:`Σύνδεση`,confirm_link_deleting:`θα διαγραφεί`,link_start:` (έναρξη)`,link_end:` (λήξη)`,type_task:`Εργασία`,type_project:`Εργασία σύνοψης`,type_milestone:`Ορόσημο`,minutes:`Λεπτά`,hours:`Ώρες`,days:`Ημέρες`,weeks:`Εβδομάδες`,months:`Μήνες`,years:`Έτη`,message_ok:`OK`,message_cancel:`Ακύρωση`,section_constraint:`Περιορισμός`,constraint_type:`Τύπος περιορισμού`,constraint_date:`Ημερομηνία περιορισμού`,asap:`Το συντομότερο δυνατό`,alap:`Το αργότερο δυνατό`,snet:`Έναρξη όχι νωρίτερα από`,snlt:`Έναρξη το αργότερο`,fnet:`Λήξη όχι νωρίτερα από`,fnlt:`Λήξη το αργότερο`,mso:`Πρέπει να ξεκινήσει στις`,mfo:`Πρέπει να ολοκληρωθεί στις`,resources_add_button:`Προσθήκη ανάθεσης`,resources_filter_placeholder:`Αναζήτηση...`,resources_filter_label:`απόκρυψη κενών`,resources_section_placeholder:`Δεν έχει ανατεθεί τίποτα ακόμη. Κάντε κλικ στο «Προσθήκη ανάθεσης» για να αναθέσετε πόρους.`,empty_state_text_link:`Κάντε κλικ εδώ`,empty_state_text_description:`για να δημιουργήσετε την πρώτη σας εργασία`,baselines_section_placeholder:`Ξεκινήστε προσθέτοντας μια νέα γραμμή βάσης`,baselines_add_button:`Προσθήκη γραμμής βάσης`,baselines_remove_button:`Αφαίρεση`,baselines_remove_all_button:`Αφαίρεση όλων`,deadline_enable_button:`Ορισμός`,deadline_disable_button:`Αφαίρεση`}},rr={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_deleting:`Task will be deleted permanently, are you sure?`,section_description:`Description`,section_time:`Time period`,section_type:`Type`,section_deadline:`Deadline`,section_baselines:`Baselines`,section_new_resources:`Resources`,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:`Weeks`,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_add_button:`Add Assignment`,resources_filter_placeholder:`Search...`,resources_filter_label:`hide empty`,resources_section_placeholder:`Nothing assigned yet. Click 'Add Assignment' to assign resources.`,empty_state_text_link:`Click here`,empty_state_text_description:`to create your first task`,baselines_section_placeholder:`Start adding a new baseline`,baselines_add_button:`Add Baseline`,baselines_remove_button:`Remove`,baselines_remove_all_button:`Remove All`,deadline_enable_button:`Set`,deadline_disable_button:`Remove`}},ir={date:{month_full:[`Enero`,`Febrero`,`Marzo`,`Abril`,`Mayo`,`Junio`,`Julio`,`Agosto`,`Septiembre`,`Octubre`,`Noviembre`,`Diciembre`],month_short:[`Ene`,`Feb`,`Mar`,`Abr`,`May`,`Jun`,`Jul`,`Ago`,`Sep`,`Oct`,`Nov`,`Dic`],day_full:[`Domingo`,`Lunes`,`Martes`,`Miércoles`,`Jueves`,`Viernes`,`Sábado`],day_short:[`Dom`,`Lun`,`Mar`,`Mié`,`Jue`,`Vie`,`Sáb`]},labels:{new_task:`Nueva tarea`,icon_save:`Guardar`,icon_cancel:`Cancelar`,icon_details:`Detalles`,icon_edit:`Editar`,icon_delete:`Eliminar`,confirm_deleting:`La tarea se borrará definitivamente. ¿Desea continuar?`,section_description:`Descripción`,section_time:`Período`,section_type:`Tipo`,section_deadline:`Fecha límite`,section_baselines:`Líneas base`,section_new_resources:`Recursos`,column_wbs:`EDT`,column_text:`Tarea`,column_start_date:`Inicio`,column_duration:`Duración`,column_add:``,link:`Enlace`,confirm_link_deleting:`será borrada`,link_start:` (inicio)`,link_end:` (fin)`,type_task:`Tarea`,type_project:`Tarea de resumen`,type_milestone:`Hito`,minutes:`Minutos`,hours:`Horas`,days:`Días`,weeks:`Semanas`,months:`Meses`,years:`Años`,message_ok:`Aceptar`,message_cancel:`Cancelar`,section_constraint:`Restricción`,constraint_type:`Tipo de restricción`,constraint_date:`Fecha de restricción`,asap:`Lo antes posible`,alap:`Lo más tarde posible`,snet:`No iniciar antes del`,snlt:`No iniciar después del`,fnet:`No finalizar antes del`,fnlt:`No finalizar más tarde del`,mso:`Debe iniciarse el`,mfo:`Debe finalizar el`,resources_add_button:`Agregar asignación`,resources_filter_placeholder:`Buscar...`,resources_filter_label:`ocultar vacíos`,resources_section_placeholder:`Aún no hay nada asignado. Haga clic en «Agregar asignación» para asignar recursos.`,empty_state_text_link:`Haga clic aquí`,empty_state_text_description:`para crear su primera tarea`,baselines_section_placeholder:`Comience a agregar una nueva línea base`,baselines_add_button:`Agregar línea base`,baselines_remove_button:`Eliminar`,baselines_remove_all_button:`Eliminar todo`,deadline_enable_button:`Establecer`,deadline_disable_button:`Eliminar`}},ar={date:{month_full:[`Enero`,`Febrero`,`Marzo`,`Abril`,`Mayo`,`Junio`,`Julio`,`Agosto`,`Septiembre`,`Octubre`,`Noviembre`,`Diciembre`],month_short:[`Ene`,`Feb`,`Mar`,`Abr`,`May`,`Jun`,`Jul`,`Ago`,`Sep`,`Oct`,`Nov`,`Dic`],day_full:[`Domingo`,`Lunes`,`Martes`,`Miércoles`,`Jueves`,`Viernes`,`Sábado`],day_short:[`Dom`,`Lun`,`Mar`,`Mié`,`Jue`,`Vie`,`Sáb`]},labels:{new_task:`Nueva tarea`,icon_save:`Guardar`,icon_cancel:`Cancelar`,icon_details:`Detalles`,icon_edit:`Editar`,icon_delete:`Eliminar`,confirm_deleting:`La tarea se eliminará permanentemente. ¿Está seguro?`,section_description:`Descripción`,section_time:`Período de tiempo`,section_type:`Tipo`,section_deadline:`Fecha límite`,section_baselines:`Líneas base`,section_new_resources:`Recursos`,column_wbs:`EDT`,column_text:`Nombre de la tarea`,column_start_date:`Fecha de inicio`,column_duration:`Duración`,column_add:``,link:`Vínculo`,confirm_link_deleting:`se eliminará`,link_start:` (inicio)`,link_end:` (fin)`,type_task:`Tarea`,type_project:`Proyecto`,type_milestone:`Hito`,minutes:`Minutos`,hours:`Horas`,days:`Días`,weeks:`Semanas`,months:`Meses`,years:`Años`,message_ok:`OK`,message_cancel:`Cancelar`,section_constraint:`Restricción`,constraint_type:`Tipo de restricción`,constraint_date:`Fecha de restricción`,asap:`Lo antes posible`,alap:`Lo más tarde posible`,snet:`Comenzar no antes de`,snlt:`Comenzar no después de`,fnet:`Finalizar no antes de`,fnlt:`Finalizar no después de`,mso:`Debe comenzar el`,mfo:`Debe finalizar el`,resources_add_button:`Agregar asignación`,resources_filter_placeholder:`Buscar...`,resources_filter_label:`ocultar vacíos`,resources_section_placeholder:`Todavía no hay asignaciones. Haga clic en 'Agregar asignación' para asignar recursos.`,empty_state_text_link:`Haga clic aquí`,empty_state_text_description:`para crear su primera tarea`,baselines_section_placeholder:`Empiece agregando una nueva línea base`,baselines_add_button:`Agregar línea base`,baselines_remove_button:`Quitar`,baselines_remove_all_button:`Quitar todo`,deadline_enable_button:`Establecer`,deadline_disable_button:`Quitar`}},or={date:{month_full:[`Jaanuar`,`Veebruar`,`Märts`,`Aprill`,`Mai`,`Juuni`,`Juuli`,`August`,`September`,`Oktoober`,`November`,`Detsember`],month_short:[`Jaan`,`Veebr`,`Mär`,`Apr`,`Mai`,`Juun`,`Juul`,`Aug`,`Sept`,`Okt`,`Nov`,`Dets`],day_full:[`Pühapäev`,`Esmaspäev`,`Teisipäev`,`Kolmapäev`,`Neljapäev`,`Reede`,`Laupäev`],day_short:[`P`,`E`,`T`,`K`,`N`,`R`,`L`]},labels:{new_task:`Uus ülesanne`,icon_save:`Salvesta`,icon_cancel:`Tühista`,icon_details:`Üksikasjad`,icon_edit:`Muuda`,icon_delete:`Kustuta`,confirm_deleting:`Ülesanne kustutatakse jäädavalt. Kas olete kindel?`,section_description:`Kirjeldus`,section_time:`Ajavahemik`,section_type:`Tüüp`,section_deadline:`Tähtaeg`,section_baselines:`Lähteplaanid`,section_new_resources:`Ressursid`,column_wbs:`WBS`,column_text:`Ülesande nimi`,column_start_date:`Alguskuupäev`,column_duration:`Kestus`,column_add:``,link:`Seos`,confirm_link_deleting:`kustutatakse`,link_start:` (algus)`,link_end:` (lõpp)`,type_task:`Ülesanne`,type_project:`Kokkuvõttev ülesanne`,type_milestone:`Verstapost`,minutes:`Minutit`,hours:`Tundi`,days:`Päeva`,weeks:`Nädalat`,months:`Kuud`,years:`Aastat`,message_ok:`OK`,message_cancel:`Tühista`,section_constraint:`Piirang`,constraint_type:`Piirangu tüüp`,constraint_date:`Piirangu kuupäev`,asap:`Nii kiiresti kui võimalik`,alap:`Nii hilja kui võimalik`,snet:`Algus mitte varem kui`,snlt:`Algus mitte hiljem kui`,fnet:`Lõpp mitte varem kui`,fnlt:`Lõpp mitte hiljem kui`,mso:`Peab algama`,mfo:`Peab lõppema`,resources_add_button:`Lisa määrang`,resources_filter_placeholder:`Otsi...`,resources_filter_label:`peida tühjad`,resources_section_placeholder:`Midagi pole veel määratud. Ressursside määramiseks klõpsake 'Lisa määrang'.`,empty_state_text_link:`Klõpsake siia`,empty_state_text_description:`et luua oma esimene ülesanne`,baselines_section_placeholder:`Alustage uue lähteplaani lisamisest`,baselines_add_button:`Lisa lähteplaan`,baselines_remove_button:`Eemalda`,baselines_remove_all_button:`Eemalda kõik`,deadline_enable_button:`Määra`,deadline_disable_button:`Eemalda`}},sr={date:{month_full:[`ژانویه`,`فوریه`,`مارس`,`آوریل`,`مه`,`ژوئن`,`ژوئیه`,`اوت`,`سپتامبر`,`اکتبر`,`نوامبر`,`دسامبر`],month_short:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`],day_full:[`یکشنبه`,`دوشنبه`,`سهشنبه`,`چهارشنبه`,`پنجشنبه`,`جمعه`,`شنبه`],day_short:[`ی`,`د`,`س`,`چ`,`پ`,`ج`,`ش`]},labels:{new_task:`وظیفه جدید`,icon_save:`ذخیره`,icon_cancel:`لغو`,icon_details:`جزییات`,icon_edit:`ویرایش`,icon_delete:`حذف`,confirm_deleting:`این وظیفه برای همیشه حذف خواهد شد، آیا مطمئن هستید؟`,section_description:`توضیحات`,section_time:`مدت زمان`,section_type:`نوع`,section_deadline:`موعد نهایی`,section_baselines:`خطوط مبنا`,section_new_resources:`منابع`,column_wbs:`WBS`,column_text:`عنوان`,column_start_date:`تاریخ شروع`,column_duration:`مدت`,column_add:``,link:`ارتباط`,confirm_link_deleting:`حذف خواهد شد`,link_start:` (آغاز)`,link_end:` (پایان)`,type_task:`وظیفه`,type_project:`وظیفه خلاصه`,type_milestone:`نقطه عطف`,minutes:`دقایق`,hours:`ساعات`,days:`روزها`,weeks:`هفتهها`,months:`ماهها`,years:`سالها`,message_ok:`تأیید`,message_cancel:`لغو`,section_constraint:`محدودیت`,constraint_type:`نوع محدودیت`,constraint_date:`تاریخ محدودیت`,asap:`در اسرع وقت`,alap:`در دیرترین زمان ممکن`,snet:`شروع نشود قبل از`,snlt:`شروع نشود بعد از`,fnet:`پایان نیابد قبل از`,fnlt:`پایان نیابد بعد از`,mso:`باید در این تاریخ شروع شود`,mfo:`باید در این تاریخ پایان یابد`,resources_add_button:`افزودن تخصیص`,resources_filter_placeholder:`جستجو...`,resources_filter_label:`مخفی کردن موارد خالی`,resources_section_placeholder:`هنوز چیزی تخصیص داده نشده است. برای تخصیص منابع روی «افزودن تخصیص» کلیک کنید.`,empty_state_text_link:`اینجا کلیک کنید`,empty_state_text_description:`تا اولین وظیفه خود را ایجاد کنید`,baselines_section_placeholder:`افزودن یک خط مبنای جدید را شروع کنید`,baselines_add_button:`افزودن خط مبنا`,baselines_remove_button:`حذف`,baselines_remove_all_button:`حذف همه`,deadline_enable_button:`تنظیم`,deadline_disable_button:`حذف`}},cr={date:{month_full:[`Tammikuu`,`Helmikuu`,`Maaliskuu`,`Huhtikuu`,`Toukokuu`,`Kesäkuu`,`Heinäkuu`,`Elokuu`,`Syyskuu`,`Lokakuu`,`Marraskuu`,`Joulukuu`],month_short:[`Tam`,`Hel`,`Maa`,`Huh`,`Tou`,`Kes`,`Hei`,`Elo`,`Syy`,`Lok`,`Mar`,`Jou`],day_full:[`Sunnuntai`,`Maanantai`,`Tiistai`,`Keskiviikko`,`Torstai`,`Perjantai`,`Lauantai`],day_short:[`Su`,`Ma`,`Ti`,`Ke`,`To`,`Pe`,`La`]},labels:{new_task:`Uusi tehtävä`,icon_save:`Tallenna`,icon_cancel:`Peruuta`,icon_details:`Tiedot`,icon_edit:`Muokkaa`,icon_delete:`Poista`,confirm_deleting:`Haluatko varmasti poistaa tehtävän?`,section_description:`Kuvaus`,section_time:`Aikajakso`,section_type:`Tyyppi`,section_deadline:`Määräaika`,section_baselines:`Perusaikataulut`,section_new_resources:`Resurssit`,column_wbs:`WBS`,column_text:`Tehtävän nimi`,column_start_date:`Aloitus`,column_duration:`Kesto`,column_add:``,link:`Linkki`,confirm_link_deleting:`poistetaan`,link_start:` (alku)`,link_end:` (loppu)`,type_task:`Tehtävä`,type_project:`Yhteenvetotehtävä`,type_milestone:`Välitavoite`,minutes:`Minuuttia`,hours:`Tuntia`,days:`Päivää`,weeks:`Viikoa`,months:`Kuukautta`,years:`Vuotta`,message_ok:`OK`,message_cancel:`Peruuta`,section_constraint:`Rajoite`,constraint_type:`Rajoitustyyppi`,constraint_date:`Rajoituspäivä`,asap:`Mahdollisimman pian`,alap:`Mahdollisimman myöhään`,snet:`Aloitus aikaisintaan`,snlt:`Aloitus viimeistään`,fnet:`Lopetus aikaisintaan`,fnlt:`Lopetus viimeistään`,mso:`Alkamisajankohta`,mfo:`Päättymisajankohta`,resources_add_button:`Lisää määritys`,resources_filter_placeholder:`Hae...`,resources_filter_label:`piilota tyhjät`,resources_section_placeholder:`Ei vielä määrityksiä. Napsauta „Lisää määritys” määrittääksesi resurssit.`,empty_state_text_link:`Napsauta tästä`,empty_state_text_description:`luodaksesi ensimmäisen tehtäväsi`,baselines_section_placeholder:`Aloita lisäämällä uusi perusaikataulu`,baselines_add_button:`Lisää perusaikataulu`,baselines_remove_button:`Poista`,baselines_remove_all_button:`Poista kaikki`,deadline_enable_button:`Aseta`,deadline_disable_button:`Poista`}},lr={date:{month_full:[`Janvier`,`Février`,`Mars`,`Avril`,`Mai`,`Juin`,`Juillet`,`Août`,`Septembre`,`Octobre`,`Novembre`,`Décembre`],month_short:[`Jan`,`Fév`,`Mar`,`Avr`,`Mai`,`Juin`,`Juil`,`Aoû`,`Sep`,`Oct`,`Nov`,`Déc`],day_full:[`Dimanche`,`Lundi`,`Mardi`,`Mercredi`,`Jeudi`,`Vendredi`,`Samedi`],day_short:[`Dim`,`Lun`,`Mar`,`Mer`,`Jeu`,`Ven`,`Sam`]},labels:{new_task:`Nouvelle tâche`,icon_save:`Enregistrer`,icon_cancel:`Annuler`,icon_details:`Détails`,icon_edit:`Modifier`,icon_delete:`Effacer`,confirm_deleting:`La tâche sera supprimée définitivement. Voulez-vous continuer ?`,section_description:`Description`,section_time:`Période`,section_type:`Type`,section_deadline:`Échéance`,section_baselines:`Bases de référence`,section_new_resources:`Ressources`,column_wbs:`OTP`,column_text:`Nom de la tâche`,column_start_date:`Début`,column_duration:`Durée`,column_add:``,link:`Le lien`,confirm_link_deleting:`sera supprimé`,link_start:`(début)`,link_end:`(fin)`,type_task:`Tâche`,type_project:`Tâche récapitulative`,type_milestone:`Jalon`,minutes:`Minutes`,hours:`Heures`,days:`Jours`,weeks:`Semaines`,months:`Mois`,years:`Ans`,message_ok:`OK`,message_cancel:`Annuler`,section_constraint:`Contrainte`,constraint_type:`Type de contrainte`,constraint_date:`Date de contrainte`,asap:`Dès que possible`,alap:`Aussi tard que possible`,snet:`Démarrer au plus tôt`,snlt:`Démarrer au plus tard le`,fnet:`Terminer au plus tôt`,fnlt:`Terminer au plus tard`,mso:`Doit démarrer le`,mfo:`Doit se terminer le`,resources_add_button:`Ajouter une affectation`,resources_filter_placeholder:`Rechercher...`,resources_filter_label:`masquer les vides`,resources_section_placeholder:`Rien n'est encore affecté. Cliquez sur «\xA0Ajouter une affectation\xA0» pour affecter des ressources.`,empty_state_text_link:`Cliquez ici`,empty_state_text_description:`pour créer votre première tâche`,baselines_section_placeholder:`Commencez par ajouter une nouvelle ligne de base`,baselines_add_button:`Ajouter une ligne de base`,baselines_remove_button:`Supprimer`,baselines_remove_all_button:`Tout supprimer`,deadline_enable_button:`Définir`,deadline_disable_button:`Supprimer`}},ur={date:{month_full:[`Janvier`,`Février`,`Mars`,`Avril`,`Mai`,`Juin`,`Juillet`,`Août`,`Septembre`,`Octobre`,`Novembre`,`Décembre`],month_short:[`Jan`,`Fév`,`Mar`,`Avr`,`Mai`,`Jun`,`Jul`,`Aoû`,`Sep`,`Oct`,`Nov`,`Déc`],day_full:[`Dimanche`,`Lundi`,`Mardi`,`Mercredi`,`Jeudi`,`Vendredi`,`Samedi`],day_short:[`Dim`,`Lun`,`Mar`,`Mer`,`Jeu`,`Ven`,`Sam`]},labels:{new_task:`Nouvelle tâche`,icon_save:`Enregistrer`,icon_cancel:`Annuler`,icon_details:`Détails`,icon_edit:`Modifier`,icon_delete:`Supprimer`,confirm_deleting:`La tâche sera supprimée définitivement. Êtes-vous sûr ?`,section_description:`Description`,section_time:`Période`,section_type:`Type`,section_deadline:`Échéance`,section_baselines:`Lignes de base`,section_new_resources:`Ressources`,column_wbs:`WBS`,column_text:`Nom de la tâche`,column_start_date:`Date de début`,column_duration:`Durée`,column_add:``,link:`Lien`,confirm_link_deleting:`sera supprimé`,link_start:` (début)`,link_end:` (fin)`,type_task:`Tâche`,type_project:`Tâche récapitulative`,type_milestone:`Jalon`,minutes:`Minutes`,hours:`Heures`,days:`Jours`,weeks:`Semaines`,months:`Mois`,years:`Ans`,message_ok:`OK`,message_cancel:`Annuler`,section_constraint:`Contrainte`,constraint_type:`Type de contrainte`,constraint_date:`Date de contrainte`,asap:`Dès que possible`,alap:`Aussi tard que possible`,snet:`Début au plus tôt le`,snlt:`Début au plus tard le`,fnet:`Fin au plus tôt le`,fnlt:`Fin au plus tard le`,mso:`Doit commencer le`,mfo:`Doit finir le`,resources_add_button:`Ajouter une affectation`,resources_filter_placeholder:`Rechercher...`,resources_filter_label:`masquer les vides`,resources_section_placeholder:`Aucune affectation pour le moment. Cliquez sur 'Ajouter une affectation' pour affecter des ressources.`,empty_state_text_link:`Cliquez ici`,empty_state_text_description:`pour créer votre première tâche`,baselines_section_placeholder:`Commencez à ajouter une nouvelle ligne de base`,baselines_add_button:`Ajouter une ligne de base`,baselines_remove_button:`Supprimer`,baselines_remove_all_button:`Tout supprimer`,deadline_enable_button:`Définir`,deadline_disable_button:`Supprimer`}},dr={date:{month_full:[`Eanáir`,`Feabhra`,`Márta`,`Aibreán`,`Bealtaine`,`Meitheamh`,`Iúil`,`Lúnasa`,`Meán Fómhair`,`Deireadh Fómhair`,`Samhain`,`Nollaig`],month_short:[`Ean`,`Fea`,`Már`,`Aib`,`Bea`,`Mei`,`Iúil`,`Lún`,`MFó`,`DFó`,`Sam`,`Nol`],day_full:[`Dé Domhnaigh`,`Dé Luain`,`Dé Máirt`,`Dé Céadaoin`,`Déardaoin`,`Dé hAoine`,`Dé Sathairn`],day_short:[`Dom`,`Lua`,`Mái`,`Céa`,`Déa`,`Aoi`,`Sat`]},labels:{new_task:`Tasc nua`,icon_save:`Sábháil`,icon_cancel:`Cealaigh`,icon_details:`Sonraí`,icon_edit:`Cuir in Eagar`,icon_delete:`Scrios`,confirm_deleting:`Scriosfar an tasc go buan, an bhfuil tú cinnte?`,section_description:`Cur síos`,section_time:`Tréimhse ama`,section_type:`Cineál`,section_deadline:`Spriocdháta`,section_baselines:`Bunlínte`,section_new_resources:`Acmhainní`,column_wbs:`WBS`,column_text:`Ainm an taisc`,column_start_date:`Dáta tosaithe`,column_duration:`Fad`,column_add:``,link:`Nasc`,confirm_link_deleting:`scriosfar é`,link_start:` (tús)`,link_end:` (deireadh)`,type_task:`Tasc`,type_project:`Tasc achomair`,type_milestone:`Garsprioc`,minutes:`Nóiméad`,hours:`Uair an Chloig`,days:`Lá`,weeks:`Seachtain`,months:`Mhí`,years:`Bhliana`,message_ok:`OK`,message_cancel:`Cealaigh`,section_constraint:`Srian`,constraint_type:`Cineál sriain`,constraint_date:`Dáta sriain`,asap:`A Luaithe is Féidir`,alap:`A Dhéanaí is Féidir`,snet:`Ná Tosaigh Níos Luaithe Ná`,snlt:`Ná Tosaigh Níos Déanaí Ná`,fnet:`Ná Críochnaigh Níos Luaithe Ná`,fnlt:`Ná Críochnaigh Níos Déanaí Ná`,mso:`Caithfidh Sé Tosú Ar`,mfo:`Caithfidh Sé Críochnú Ar`,resources_add_button:`Cuir Sannadh Leis`,resources_filter_placeholder:`Cuardaigh...`,resources_filter_label:`folaigh folamh`,resources_section_placeholder:`Níl aon rud sannta fós. Cliceáil 'Cuir Sannadh Leis' chun acmhainní a shannadh.`,empty_state_text_link:`Cliceáil Anseo`,empty_state_text_description:`chun do chéad tasc a chruthú`,baselines_section_placeholder:`Tosaigh trí bhunlíne nua a chur leis`,baselines_add_button:`Cuir Bunlíne Leis`,baselines_remove_button:`Bain`,baselines_remove_all_button:`Bain Uile`,deadline_enable_button:`Socraigh`,deadline_disable_button:`Bain`}},fr={date:{month_full:[`ינואר`,`פברואר`,`מרץ`,`אפריל`,`מאי`,`יוני`,`יולי`,`אוגוסט`,`ספטמבר`,`אוקטובר`,`נובמבר`,`דצמבר`],month_short:[`ינו`,`פבר`,`מרץ`,`אפר`,`מאי`,`יונ`,`יול`,`אוג`,`ספט`,`אוק`,`נוב`,`דצמ`],day_full:[`ראשון`,`שני`,`שלישי`,`רביעי`,`חמישי`,`שישי`,`שבת`],day_short:[`א`,`ב`,`ג`,`ד`,`ה`,`ו`,`ש`]},labels:{new_task:`משימה חדשה`,icon_save:`שמור`,icon_cancel:`בטל`,icon_details:`פרטים`,icon_edit:`ערוך`,icon_delete:`מחק`,confirm_deleting:`המשימה תימחק לצמיתות. להמשיך?`,section_description:`הסבר`,section_time:`תקופה`,section_type:`סוג`,section_deadline:`תאריך יעד`,section_baselines:`תוכניות בסיסיות`,section_new_resources:`משאבים`,column_wbs:`WBS`,column_text:`שם המשימה`,column_start_date:`תאריך התחלה`,column_duration:`משך`,column_add:``,link:`קישור`,confirm_link_deleting:`יימחק`,link_start:` (התחלה)`,link_end:` (סיום)`,type_task:`משימה`,type_project:`פעילות ערסל`,type_milestone:`אבן דרך`,minutes:`דקות`,hours:`שעות`,days:`ימים`,weeks:`שבועות`,months:`חודשים`,years:`שנים`,message_ok:`אישור`,message_cancel:`בטל`,section_constraint:`אילוץ`,constraint_type:`סוג אילוץ`,constraint_date:`תאריך אילוץ`,asap:`בהקדם האפשרי`,alap:`מאוחר ככל האפשר`,snet:`התחלה לא לפני`,snlt:`התחלה לא אחרי`,fnet:`סיום לא לפני`,fnlt:`סיום לא אחרי`,mso:`חייב להתחיל בתאריך`,mfo:`חייב להסתיים בתאריך`,resources_add_button:`הוסף הקצאה`,resources_filter_placeholder:`חיפוש...`,resources_filter_label:`הסתר ריקים`,resources_section_placeholder:`עדיין לא הוקצה דבר. לחץ על „הוסף הקצאה” כדי להקצות משאבים.`,empty_state_text_link:`לחץ כאן`,empty_state_text_description:`כדי ליצור את המשימה הראשונה שלך`,baselines_section_placeholder:`התחל להוסיף תוכנית בסיסית חדשה`,baselines_add_button:`הוסף תוכנית בסיסית`,baselines_remove_button:`הסר`,baselines_remove_all_button:`הסר הכל`,deadline_enable_button:`הגדר`,deadline_disable_button:`הסר`}},pr={date:{month_full:[`Siječanj`,`Veljača`,`Ožujak`,`Travanj`,`Svibanj`,`Lipanj`,`Srpanj`,`Kolovoz`,`Rujan`,`Listopad`,`Studeni`,`Prosinac`],month_short:[`Sij`,`Velj`,`Ožu`,`Tra`,`Svi`,`Lip`,`Srp`,`Kol`,`Ruj`,`Lis`,`Stu`,`Pro`],day_full:[`Nedjelja`,`Ponedjeljak`,`Utorak`,`Srijeda`,`Četvrtak`,`Petak`,`Subota`],day_short:[`Ned`,`Pon`,`Uto`,`Sri`,`Čet`,`Pet`,`Sub`]},labels:{new_task:`Novi Zadatak`,icon_save:`Spremi`,icon_cancel:`Odustani`,icon_details:`Detalji`,icon_edit:`Uredi`,icon_delete:`Obriši`,confirm_deleting:`Zadatak će biti trajno izbrisan, jeste li sigurni?`,section_description:`Opis`,section_time:`Vremensko razdoblje`,section_type:`Tip`,section_deadline:`Krajnji rok`,section_baselines:`Osnovni planovi`,section_new_resources:`Resursi`,column_wbs:`WBS`,column_text:`Naziv Zadatka`,column_start_date:`Datum početka`,column_duration:`Trajanje`,column_add:``,link:`Poveznica`,confirm_link_deleting:`će biti izbrisana`,link_start:` (početak)`,link_end:` (kraj)`,type_task:`Zadatak`,type_project:`Sažeti zadatak`,type_milestone:`Prekretnica`,minutes:`Minuta`,hours:`Sati`,days:`Dana`,weeks:`Tjedana`,months:`Mjeseci`,years:`Godina`,message_ok:`OK`,message_cancel:`Odustani`,section_constraint:`Ograničenje`,constraint_type:`Vrsta ograničenja`,constraint_date:`Datum ograničenja`,asap:`Što je prije moguće`,alap:`Što je kasnije moguće`,snet:`Započni ne prije od`,snlt:`Započni ne kasnije od`,fnet:`Završi ne prije od`,fnlt:`Završi ne kasnije od`,mso:`Mora započeti na`,mfo:`Mora završiti na`,resources_add_button:`Dodaj dodjelu`,resources_filter_placeholder:`Pretraži...`,resources_filter_label:`sakrij prazne`,resources_section_placeholder:`Još ništa nije dodijeljeno. Kliknite na „Dodaj dodjelu” da biste dodijelili resurse.`,empty_state_text_link:`Kliknite ovdje`,empty_state_text_description:`za stvaranje prvog zadatka`,baselines_section_placeholder:`Počnite dodavati novi osnovni plan`,baselines_add_button:`Dodaj osnovni plan`,baselines_remove_button:`Ukloni`,baselines_remove_all_button:`Ukloni sve`,deadline_enable_button:`Postavi`,deadline_disable_button:`Ukloni`}},mr={date:{month_full:[`Január`,`Február`,`Március`,`Április`,`Május`,`Június`,`Július`,`Augusztus`,`Szeptember`,`Október`,`November`,`December`],month_short:[`Jan`,`Feb`,`Már`,`Ápr`,`Máj`,`Jún`,`Júl`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Vasárnap`,`Hétfő`,`Kedd`,`Szerda`,`Csütörtök`,`Péntek`,`Szombat`],day_short:[`Va`,`Hé`,`Ke`,`Sze`,`Csü`,`Pé`,`Szo`]},labels:{new_task:`Új feladat`,icon_save:`Mentés`,icon_cancel:`Mégse`,icon_details:`Részletek`,icon_edit:`Szerkesztés`,icon_delete:`Törlés`,confirm_deleting:`A feladat törlődik, biztosan folytatja?`,section_description:`Leírás`,section_time:`Időszak`,section_type:`Típus`,section_deadline:`Határidő`,section_baselines:`Alaptervek`,section_new_resources:`Erőforrások`,column_wbs:`WBS`,column_text:`Feladat neve`,column_start_date:`Kezdés`,column_duration:`Időtartam`,column_add:``,link:`Kapcsolat`,confirm_link_deleting:`törlődik`,link_start:` (kezdet)`,link_end:` (vége)`,type_task:`Feladat`,type_project:`Összefoglaló tevékenység`,type_milestone:`Mérföldkő`,minutes:`Perc`,hours:`Órá`,days:`Nap`,weeks:`Hét`,months:`Hónap`,years:`Év`,message_ok:`OK`,message_cancel:`Mégse`,section_constraint:`Kényszer`,constraint_type:`Kényszer típusa`,constraint_date:`Kényszer dátuma`,asap:`Minél hamarabb`,alap:`Minél később`,snet:`Kezdés legkorábban`,snlt:`Kezdés legkésőbb`,fnet:`Befejezés legkorábban`,fnlt:`Befejezés legkésőbb`,mso:`Kezdés ekkor`,mfo:`Befejezés ekkor`,resources_add_button:`Hozzárendelés hozzáadása`,resources_filter_placeholder:`Keresés...`,resources_filter_label:`üresek elrejtése`,resources_section_placeholder:`Még nincs hozzárendelés. Kattintson a „Hozzárendelés hozzáadása” gombra az erőforrások hozzárendeléséhez.`,empty_state_text_link:`Kattintson ide`,empty_state_text_description:`az első feladat létrehozásához`,baselines_section_placeholder:`Kezdje új alapterv hozzáadásával`,baselines_add_button:`Alapterv hozzáadása`,baselines_remove_button:`Eltávolítás`,baselines_remove_all_button:`Összes eltávolítása`,deadline_enable_button:`Beállítás`,deadline_disable_button:`Eltávolítás`}},hr={date:{month_full:[`Januari`,`Februari`,`Maret`,`April`,`Mei`,`Juni`,`Juli`,`Agustus`,`September`,`Oktober`,`November`,`Desember`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Mei`,`Jun`,`Jul`,`Ags`,`Sep`,`Okt`,`Nov`,`Des`],day_full:[`Minggu`,`Senin`,`Selasa`,`Rabu`,`Kamis`,`Jumat`,`Sabtu`],day_short:[`Ming`,`Sen`,`Sel`,`Rab`,`Kam`,`Jum`,`Sab`]},labels:{new_task:`Tugas baru`,icon_save:`Simpan`,icon_cancel:`Batal`,icon_details:`Detail`,icon_edit:`Ubah`,icon_delete:`Hapus`,confirm_deleting:`Tugas akan dihapus secara permanen. Anda yakin?`,section_description:`Keterangan`,section_time:`Periode`,section_type:`Tipe`,section_deadline:`Tenggat`,section_baselines:`Garis dasar`,section_new_resources:`Sumber daya`,column_wbs:`WBS`,column_text:`Nama tugas`,column_start_date:`Tanggal mulai`,column_duration:`Durasi`,column_add:``,link:`Tautan`,confirm_link_deleting:`akan dihapus`,link_start:` (awal)`,link_end:` (akhir)`,type_task:`Tugas`,type_project:`Tugas ringkasan`,type_milestone:`Tonggak`,minutes:`Menit`,hours:`Jam`,days:`Hari`,weeks:`Minggu`,months:`Bulan`,years:`Tahun`,message_ok:`OK`,message_cancel:`Batal`,section_constraint:`Batasan`,constraint_type:`Jenis batasan`,constraint_date:`Tanggal batasan`,asap:`Secepat mungkin`,alap:`Selambat mungkin`,snet:`Mulai tidak lebih awal dari`,snlt:`Mulai tidak lebih lambat dari`,fnet:`Selesai tidak lebih awal dari`,fnlt:`Selesai tidak lebih lambat dari`,mso:`Harus mulai pada`,mfo:`Harus selesai pada`,resources_add_button:`Tambah penugasan`,resources_filter_placeholder:`Cari...`,resources_filter_label:`sembunyikan yang kosong`,resources_section_placeholder:`Belum ada yang ditugaskan. Klik 'Tambah penugasan' untuk menugaskan sumber daya.`,empty_state_text_link:`Klik di sini`,empty_state_text_description:`untuk membuat tugas pertama Anda`,baselines_section_placeholder:`Mulai menambahkan garis dasar baru`,baselines_add_button:`Tambah garis dasar`,baselines_remove_button:`Hapus`,baselines_remove_all_button:`Hapus semua`,deadline_enable_button:`Tetapkan`,deadline_disable_button:`Hapus`}},gr={date:{month_full:[`Gennaio`,`Febbraio`,`Marzo`,`Aprile`,`Maggio`,`Giugno`,`Luglio`,`Agosto`,`Settembre`,`Ottobre`,`Novembre`,`Dicembre`],month_short:[`Gen`,`Feb`,`Mar`,`Apr`,`Mag`,`Giu`,`Lug`,`Ago`,`Set`,`Ott`,`Nov`,`Dic`],day_full:[`Domenica`,`Lunedì`,`Martedì`,`Mercoledì`,`Giovedì`,`Venerdì`,`Sabato`],day_short:[`Dom`,`Lun`,`Mar`,`Mer`,`Gio`,`Ven`,`Sab`]},labels:{new_task:`Nuova attività`,icon_save:`Salva`,icon_cancel:`Annulla`,icon_details:`Dettagli`,icon_edit:`Modifica`,icon_delete:`Elimina`,confirm_deleting:`L'attività verrà eliminata definitivamente. Continuare?`,section_description:`Descrizione`,section_time:`Periodo di tempo`,section_type:`Tipo`,section_deadline:`Scadenza`,section_baselines:`Linee di base`,section_new_resources:`Risorse`,column_wbs:`WBS`,column_text:`Nome Attività`,column_start_date:`Inizio`,column_duration:`Durata`,column_add:``,link:`Collegamento`,confirm_link_deleting:`sarà eliminato`,link_start:` (inizio)`,link_end:` (fine)`,type_task:`Attività`,type_project:`Attività di riepilogo`,type_milestone:`Attività cardine`,minutes:`Minuti`,hours:`Ore`,days:`Giorni`,weeks:`Settimane`,months:`Mesi`,years:`Anni`,message_ok:`OK`,message_cancel:`Annulla`,section_constraint:`Vincolo`,constraint_type:`Tipo di vincolo`,constraint_date:`Data vincolo`,asap:`Il più presto possibile`,alap:`Il più tardi possibile`,snet:`Iniziare non prima del`,snlt:`Iniziare non oltre il`,fnet:`Finire non prima di`,fnlt:`Finire non oltre il`,mso:`Deve iniziare il`,mfo:`Deve finire il`,resources_add_button:`Aggiungi assegnazione`,resources_filter_placeholder:`Cerca...`,resources_filter_label:`nascondi vuoti`,resources_section_placeholder:`Non è ancora stato assegnato nulla. Fai clic su «Aggiungi assegnazione» per assegnare le risorse.`,empty_state_text_link:`Fai clic qui`,empty_state_text_description:`per creare la tua prima attività`,baselines_section_placeholder:`Inizia aggiungendo una nuova linea di base`,baselines_add_button:`Aggiungi linea di base`,baselines_remove_button:`Rimuovi`,baselines_remove_all_button:`Rimuovi tutto`,deadline_enable_button:`Imposta`,deadline_disable_button:`Rimuovi`}},_r={date:{month_full:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],month_short:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],day_full:[`日曜日`,`月曜日`,`火曜日`,`水曜日`,`木曜日`,`金曜日`,`土曜日`],day_short:[`日`,`月`,`火`,`水`,`木`,`金`,`土`]},labels:{new_task:`新しいタスク`,icon_save:`保存`,icon_cancel:`キャンセル`,icon_details:`詳細`,icon_edit:`編集`,icon_delete:`削除`,confirm_deleting:`タスクは完全に削除されます。よろしいですか?`,section_description:`デスクリプション`,section_time:`期間`,section_type:`種類`,section_deadline:`期限`,section_baselines:`ベースライン`,section_new_resources:`リソース`,column_wbs:`WBS`,column_text:`タスク名`,column_start_date:`開始日`,column_duration:`期間`,column_add:``,link:`リンク`,confirm_link_deleting:`削除されます`,link_start:` (開始)`,link_end:` (終了)`,type_task:`タスク`,type_project:`サマリー タスク`,type_milestone:`マイルストーン`,minutes:`分`,hours:`時間`,days:`日`,weeks:`週`,months:`か月`,years:`年`,message_ok:`OK`,message_cancel:`キャンセル`,section_constraint:`制約`,constraint_type:`制約の種類`,constraint_date:`制約の指定日`,asap:`できるだけ早く`,alap:`可能な限り遅く`,snet:`指定日以後に開始`,snlt:`指定日までに開始`,fnet:`指定日以後に終了`,fnlt:`指定日までに終了`,mso:`指定日に開始`,mfo:`指定日に終了`,resources_add_button:`割り当てを追加`,resources_filter_placeholder:`検索...`,resources_filter_label:`空の項目を非表示`,resources_section_placeholder:`まだ何も割り当てられていません。[割り当てを追加]をクリックしてリソースを割り当ててください。`,empty_state_text_link:`ここをクリック`,empty_state_text_description:`最初のタスクを作成するには`,baselines_section_placeholder:`新しいベースラインの追加を開始`,baselines_add_button:`ベースラインを追加`,baselines_remove_button:`削除`,baselines_remove_all_button:`すべて削除`,deadline_enable_button:`設定`,deadline_disable_button:`削除`}},vr={date:{month_full:[`1월`,`2월`,`3월`,`4월`,`5월`,`6월`,`7월`,`8월`,`9월`,`10월`,`11월`,`12월`],month_short:[`1월`,`2월`,`3월`,`4월`,`5월`,`6월`,`7월`,`8월`,`9월`,`10월`,`11월`,`12월`],day_full:[`일요일`,`월요일`,`화요일`,`수요일`,`목요일`,`금요일`,`토요일`],day_short:[`일`,`월`,`화`,`수`,`목`,`금`,`토`]},labels:{new_task:`새 작업`,icon_save:`저장`,icon_cancel:`취소`,icon_details:`세부 사항`,icon_edit:`수정`,icon_delete:`삭제`,confirm_deleting:`작업을 삭제하시겠습니까?`,section_description:`설명`,section_time:`기간`,section_type:`유형`,section_deadline:`최종 기한`,section_baselines:`기준 계획`,section_new_resources:`리소스`,column_wbs:`WBS`,column_text:`작업 이름`,column_start_date:`시작일`,column_duration:`기간`,column_add:``,link:`연결`,confirm_link_deleting:`삭제 하시겠습니까?`,link_start:` (시작)`,link_end:` (종료)`,type_task:`작업`,type_project:`요약 작업`,type_milestone:`마일스톤`,minutes:`분`,hours:`시간`,days:`일`,weeks:`주`,months:`달`,years:`년`,message_ok:`확인`,message_cancel:`취소`,section_constraint:`제약 조건`,constraint_type:`제약 조건 형식`,constraint_date:`제약 조건 날짜`,asap:`가능한 한 빨리`,alap:`가능한 한 늦게`,snet:`이후에 시작`,snlt:`이전에 시작`,fnet:`이후에 완료`,fnlt:`이전에 완료`,mso:`날짜에 시작`,mfo:`날짜에 완료`,resources_add_button:`배정 추가`,resources_filter_placeholder:`검색...`,resources_filter_label:`빈 항목 숨기기`,resources_section_placeholder:`아직 배정된 항목이 없습니다. „배정 추가”를 클릭하여 리소스를 배정하세요.`,empty_state_text_link:`여기를 클릭`,empty_state_text_description:`첫 번째 작업을 생성하기 위해.`,baselines_section_placeholder:`새 기준 계획 추가 시작`,baselines_add_button:`기준 계획 추가`,baselines_remove_button:`제거`,baselines_remove_all_button:`모두 제거`,deadline_enable_button:`설정`,deadline_disable_button:`제거`}},yr=class{constructor(e){this.addLocale=(e,t)=>{this._locales[e]=t},this.getLocale=e=>this._locales[e],this._locales={};for(let t in e)this._locales[t]=e[t]}},br={date:{month_full:[`Sausis`,`Vasaris`,`Kovas`,`Balandis`,`Gegužė`,`Birželis`,`Liepa`,`Rugpjūtis`,`Rugsėjis`,`Spalis`,`Lapkritis`,`Gruodis`],month_short:[`Sau`,`Vas`,`Kov`,`Bal`,`Geg`,`Bir`,`Lie`,`Rgp`,`Rgs`,`Spa`,`Lap`,`Grd`],day_full:[`Sekmadienis`,`Pirmadienis`,`Antradienis`,`Trečiadienis`,`Ketvirtadienis`,`Penktadienis`,`Šeštadienis`],day_short:[`Sk`,`Pr`,`An`,`Tr`,`Kt`,`Pn`,`Št`]},labels:{new_task:`Nauja užduotis`,icon_save:`Išsaugoti`,icon_cancel:`Atšaukti`,icon_details:`Išsami informacija`,icon_edit:`Redaguoti`,icon_delete:`Ištrinti`,confirm_deleting:`Užduotis bus visam laikui ištrinta. Ar tikrai?`,section_description:`Aprašymas`,section_time:`Laikotarpis`,section_type:`Tipas`,section_deadline:`Terminas`,section_baselines:`Baziniai planai`,section_new_resources:`Ištekliai`,column_wbs:`WBS`,column_text:`Užduoties pavadinimas`,column_start_date:`Pradžios data`,column_duration:`Trukmė`,column_add:``,link:`Ryšys`,confirm_link_deleting:`bus ištrintas`,link_start:` (pradžia)`,link_end:` (pabaiga)`,type_task:`Užduotis`,type_project:`Suvestinė užduotis`,type_milestone:`Gairė`,minutes:`Minutės`,hours:`Valandos`,days:`Dienos`,weeks:`Savaitės`,months:`Mėnesiai`,years:`Metai`,message_ok:`OK`,message_cancel:`Atšaukti`,section_constraint:`Apribojimas`,constraint_type:`Apribojimo tipas`,constraint_date:`Apribojimo data`,asap:`Kaip galima anksčiau`,alap:`Kaip galima vėliau`,snet:`Pradėti ne anksčiau kaip`,snlt:`Pradėti ne vėliau kaip`,fnet:`Baigti ne anksčiau kaip`,fnlt:`Baigti ne vėliau kaip`,mso:`Privalo prasidėti`,mfo:`Privalo baigtis`,resources_add_button:`Pridėti priskyrimą`,resources_filter_placeholder:`Ieškoti...`,resources_filter_label:`slėpti tuščius`,resources_section_placeholder:`Dar nieko nepriskirta. Spustelėkite „Pridėti priskyrimą“, kad priskirtumėte išteklius.`,empty_state_text_link:`Spustelėkite čia`,empty_state_text_description:`kad sukurtumėte pirmąją užduotį`,baselines_section_placeholder:`Pradėkite pridėdami naują bazinį planą`,baselines_add_button:`Pridėti bazinį planą`,baselines_remove_button:`Pašalinti`,baselines_remove_all_button:`Pašalinti visus`,deadline_enable_button:`Nustatyti`,deadline_disable_button:`Pašalinti`}},xr={date:{month_full:[`Janvāris`,`Februāris`,`Marts`,`Aprīlis`,`Maijs`,`Jūnijs`,`Jūlijs`,`Augusts`,`Septembris`,`Oktobris`,`Novembris`,`Decembris`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Mai`,`Jūn`,`Jūl`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Svētdiena`,`Pirmdiena`,`Otrdiena`,`Trešdiena`,`Ceturtdiena`,`Piektdiena`,`Sestdiena`],day_short:[`Sv`,`Pr`,`Ot`,`Tr`,`Ce`,`Pk`,`Se`]},labels:{new_task:`Jauns uzdevums`,icon_save:`Saglabāt`,icon_cancel:`Atcelt`,icon_details:`Detalizēta informācija`,icon_edit:`Rediģēt`,icon_delete:`Dzēst`,confirm_deleting:`Uzdevums tiks neatgriezeniski dzēsts. Vai tiešām?`,section_description:`Apraksts`,section_time:`Laika periods`,section_type:`Tips`,section_deadline:`Termiņš`,section_baselines:`Bāzlīnijas`,section_new_resources:`Resursi`,column_wbs:`WBS`,column_text:`Uzdevuma nosaukums`,column_start_date:`Sākuma datums`,column_duration:`Ilgums`,column_add:``,link:`Saite`,confirm_link_deleting:`tiks dzēsta`,link_start:` (sākums)`,link_end:` (beigas)`,type_task:`Uzdevums`,type_project:`Kopsavilkuma uzdevums`,type_milestone:`Atskaites punkts`,minutes:`Minūtes`,hours:`Stundas`,days:`Dienas`,weeks:`Nedēļas`,months:`Mēneši`,years:`Gadi`,message_ok:`OK`,message_cancel:`Atcelt`,section_constraint:`Ierobežojums`,constraint_type:`Ierobežojuma tips`,constraint_date:`Ierobežojuma datums`,asap:`Pēc iespējas ātrāk`,alap:`Pēc iespējas vēlāk`,snet:`Sākt ne agrāk par`,snlt:`Sākt ne vēlāk par`,fnet:`Beigt ne agrāk par`,fnlt:`Beigt ne vēlāk par`,mso:`Jāsāk`,mfo:`Jāpabeidz`,resources_add_button:`Pievienot piešķīrumu`,resources_filter_placeholder:`Meklēt...`,resources_filter_label:`paslēpt tukšos`,resources_section_placeholder:`Vēl nekas nav piešķirts. Noklikšķiniet uz 'Pievienot piešķīrumu', lai piešķirtu resursus.`,empty_state_text_link:`Noklikšķiniet šeit`,empty_state_text_description:`lai izveidotu savu pirmo uzdevumu`,baselines_section_placeholder:`Sāciet, pievienojot jaunu bāzlīniju`,baselines_add_button:`Pievienot bāzlīniju`,baselines_remove_button:`Noņemt`,baselines_remove_all_button:`Noņemt visu`,deadline_enable_button:`Iestatīt`,deadline_disable_button:`Noņemt`}},Sr={date:{month_full:[`Јануари`,`Февруари`,`Март`,`Април`,`Мај`,`Јуни`,`Јули`,`Август`,`Септември`,`Октомври`,`Ноември`,`Декември`],month_short:[`Јан`,`Фев`,`Мар`,`Апр`,`Мај`,`Јун`,`Јул`,`Авг`,`Сеп`,`Окт`,`Ное`,`Дек`],day_full:[`Недела`,`Понеделник`,`Вторник`,`Среда`,`Четврток`,`Петок`,`Сабота`],day_short:[`Нед`,`Пон`,`Вто`,`Сре`,`Чет`,`Пет`,`Саб`]},labels:{new_task:`Нова задача`,icon_save:`Зачувај`,icon_cancel:`Откажи`,icon_details:`Детали`,icon_edit:`Уреди`,icon_delete:`Избриши`,confirm_deleting:`Задачата ќе биде трајно избришана, дали сте сигурни?`,section_description:`Опис`,section_time:`Временски период`,section_type:`Тип`,section_deadline:`Краен рок`,section_baselines:`Основни линии`,section_new_resources:`Ресурси`,column_wbs:`WBS`,column_text:`Име на задача`,column_start_date:`Датум на почеток`,column_duration:`Времетраење`,column_add:``,link:`Врска`,confirm_link_deleting:`ќе биде избришана`,link_start:` (почеток)`,link_end:` (крај)`,type_task:`Задача`,type_project:`Збирна задача`,type_milestone:`Пресвртница`,minutes:`Минути`,hours:`Часа`,days:`Дена`,weeks:`Недели`,months:`Месеци`,years:`Години`,message_ok:`OK`,message_cancel:`Откажи`,section_constraint:`Ограничување`,constraint_type:`Тип на ограничување`,constraint_date:`Датум на ограничување`,asap:`Што е можно побрзо`,alap:`Што е можно подоцна`,snet:`Започни не порано од`,snlt:`Започни не подоцна од`,fnet:`Заврши не порано од`,fnlt:`Заврши не подоцна од`,mso:`Мора да започне на`,mfo:`Мора да заврши на`,resources_add_button:`Додај доделување`,resources_filter_placeholder:`Пребарај...`,resources_filter_label:`скриј празни`,resources_section_placeholder:`Сè уште нема доделувања. Кликнете 'Додај Доделување' за да доделите ресурси.`,empty_state_text_link:`Кликнете овде`,empty_state_text_description:`за да ја креирате вашата прва задача`,baselines_section_placeholder:`Започнете со додавање нова основна линија`,baselines_add_button:`Додај основна линија`,baselines_remove_button:`Отстрани`,baselines_remove_all_button:`Отстрани ги сите`,deadline_enable_button:`Постави`,deadline_disable_button:`Отстрани`}},Cr={date:{month_full:[`Januari`,`Februari`,`Mac`,`April`,`Mei`,`Jun`,`Julai`,`Ogos`,`September`,`Oktober`,`November`,`Disember`],month_short:[`Jan`,`Feb`,`Mac`,`Apr`,`Mei`,`Jun`,`Jul`,`Ogo`,`Sep`,`Okt`,`Nov`,`Dis`],day_full:[`Ahad`,`Isnin`,`Selasa`,`Rabu`,`Khamis`,`Jumaat`,`Sabtu`],day_short:[`Ahd`,`Isn`,`Sel`,`Rab`,`Kha`,`Jum`,`Sab`]},labels:{new_task:`Tugas baharu`,icon_save:`Simpan`,icon_cancel:`Batal`,icon_details:`Butiran`,icon_edit:`Sunting`,icon_delete:`Padam`,confirm_deleting:`Tugas akan dipadam secara kekal, adakah anda pasti?`,section_description:`Penerangan`,section_time:`Tempoh masa`,section_type:`Jenis`,section_deadline:`Tarikh akhir`,section_baselines:`Garis dasar`,section_new_resources:`Sumber`,column_wbs:`WBS`,column_text:`Nama tugas`,column_start_date:`Tarikh mula`,column_duration:`Tempoh`,column_add:``,link:`Pautan`,confirm_link_deleting:`akan dipadam`,link_start:` (mula)`,link_end:` (tamat)`,type_task:`Tugas`,type_project:`Tugas ringkasan`,type_milestone:`Pencapaian`,minutes:`Minit`,hours:`Jam`,days:`Hari`,weeks:`Minggu`,months:`Bulan`,years:`Tahun`,message_ok:`OK`,message_cancel:`Batal`,section_constraint:`Kekangan`,constraint_type:`Jenis kekangan`,constraint_date:`Tarikh kekangan`,asap:`Secepat mungkin`,alap:`Selewat mungkin`,snet:`Mula tidak lebih awal daripada`,snlt:`Mula tidak lebih lewat daripada`,fnet:`Tamat tidak lebih awal daripada`,fnlt:`Tamat tidak lebih lewat daripada`,mso:`Mesti mula pada`,mfo:`Mesti tamat pada`,resources_add_button:`Tambah tugasan sumber`,resources_filter_placeholder:`Cari...`,resources_filter_label:`sembunyikan yang kosong`,resources_section_placeholder:`Belum ada tugasan sumber. Klik 'Tambah tugasan sumber' untuk menetapkan sumber.`,empty_state_text_link:`Klik di sini`,empty_state_text_description:`untuk mencipta tugas pertama anda`,baselines_section_placeholder:`Mulakan dengan menambah garis dasar baharu`,baselines_add_button:`Tambah garis dasar`,baselines_remove_button:`Alih keluar`,baselines_remove_all_button:`Alih keluar semua`,deadline_enable_button:`Tetapkan`,deadline_disable_button:`Alih keluar`}},wr={date:{month_full:[`Januar`,`Februar`,`Mars`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Desember`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Des`],day_full:[`Søndag`,`Mandag`,`Tirsdag`,`Onsdag`,`Torsdag`,`Fredag`,`Lørdag`],day_short:[`Søn`,`Man`,`Tir`,`Ons`,`Tor`,`Fre`,`Lør`]},labels:{new_task:`Ny oppgave`,icon_save:`Lagre`,icon_cancel:`Avbryt`,icon_details:`Detaljer`,icon_edit:`Rediger`,icon_delete:`Slett`,confirm_deleting:`Oppgaven vil bli slettet permanent. Er du sikker?`,section_description:`Beskrivelse`,section_time:`Tidsperiode`,section_type:`Type`,section_deadline:`Tidsfrist`,section_baselines:`Grunnlinjer`,section_new_resources:`Ressurser`,column_wbs:`WBS`,column_text:`Oppgavenavn`,column_start_date:`Startdato`,column_duration:`Varighet`,column_add:``,link:`Kobling`,confirm_link_deleting:`vil bli slettet`,link_start:` (start)`,link_end:` (slutt)`,type_task:`Oppgave`,type_project:`Hovedaktivitet`,type_milestone:`Milepæl`,minutes:`Minutter`,hours:`Timer`,days:`Dager`,weeks:`Uker`,months:`Måneder`,years:`År`,message_ok:`OK`,message_cancel:`Avbryt`,section_constraint:`Betingelse`,constraint_type:`Betingelsestype`,constraint_date:`Betingelsesdato`,asap:`Så snart som mulig`,alap:`Så sent som mulig`,snet:`Start tidligst`,snlt:`Start senest`,fnet:`Ferdig tidligst`,fnlt:`Ferdig senest`,mso:`Må starte den`,mfo:`Må avsluttes den`,resources_add_button:`Legg til tildeling`,resources_filter_placeholder:`Søk...`,resources_filter_label:`skjul tomme`,resources_section_placeholder:`Ingenting er tildelt ennå. Klikk på «Legg til tildeling» for å tildele ressurser.`,empty_state_text_link:`Klikk her`,empty_state_text_description:`for å opprette din første oppgave`,baselines_section_placeholder:`Begynn å legge til en ny grunnlinje`,baselines_add_button:`Legg til grunnlinje`,baselines_remove_button:`Fjern`,baselines_remove_all_button:`Fjern alle`,deadline_enable_button:`Angi`,deadline_disable_button:`Fjern`}},Tr={date:{month_full:[`Januari`,`Februari`,`Maart`,`April`,`Mei`,`Juni`,`Juli`,`Augustus`,`September`,`Oktober`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mrt`,`Apr`,`Mei`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Zondag`,`Maandag`,`Dinsdag`,`Woensdag`,`Donderdag`,`Vrijdag`,`Zaterdag`],day_short:[`Zo`,`Ma`,`Di`,`Wo`,`Do`,`Vr`,`Za`]},labels:{new_task:`Nieuwe taak`,icon_save:`Opslaan`,icon_cancel:`Annuleren`,icon_details:`Details`,icon_edit:`Bewerken`,icon_delete:`Verwijderen`,confirm_deleting:`De taak wordt permanent verwijderd. Doorgaan?`,section_description:`Beschrijving`,section_time:`Tijdsperiode`,section_type:`Type`,section_deadline:`Deadline`,section_baselines:`Basislijnen`,section_new_resources:`Middelen`,column_wbs:`WBS`,column_text:`Taaknaam`,column_start_date:`Startdatum`,column_duration:`Duur`,column_add:``,link:`Koppeling`,confirm_link_deleting:`zal worden verwijderd`,link_start:` (start)`,link_end:` (einde)`,type_task:`Taak`,type_project:`Samenvattingstaak`,type_milestone:`Mijlpaal`,minutes:`minuten`,hours:`uren`,days:`dagen`,weeks:`weken`,months:`maanden`,years:`jaren`,message_ok:`OK`,message_cancel:`Annuleren`,section_constraint:`Beperking`,constraint_type:`Type beperking`,constraint_date:`Datum van beperking`,asap:`Zo snel mogelijk`,alap:`Zo laat mogelijk`,snet:`Niet eerder beginnen dan`,snlt:`Niet later beginnen dan`,fnet:`Niet eerder eindigen dan`,fnlt:`Niet later eindigen dan`,mso:`Moet beginnen op`,mfo:`Moet eindigen op`,resources_add_button:`Toewijzing toevoegen`,resources_filter_placeholder:`Zoeken...`,resources_filter_label:`lege verbergen`,resources_section_placeholder:`Er is nog niets toegewezen. Klik op 'Toewijzing toevoegen' om middelen toe te wijzen.`,empty_state_text_link:`Klik hier`,empty_state_text_description:`om uw eerste taak aan te maken`,baselines_section_placeholder:`Begin met het toevoegen van een nieuwe basislijn`,baselines_add_button:`Basislijn toevoegen`,baselines_remove_button:`Verwijderen`,baselines_remove_all_button:`Alles verwijderen`,deadline_enable_button:`Instellen`,deadline_disable_button:`Verwijderen`}},Er={date:{month_full:[`Januari`,`Februari`,`Maart`,`April`,`Mei`,`Juni`,`Juli`,`Augustus`,`September`,`Oktober`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mrt`,`Apr`,`Mei`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Zondag`,`Maandag`,`Dinsdag`,`Woensdag`,`Donderdag`,`Vrijdag`,`Zaterdag`],day_short:[`Zo`,`Ma`,`Di`,`Wo`,`Do`,`Vr`,`Za`]},labels:{new_task:`Nieuwe taak`,icon_save:`Opslaan`,icon_cancel:`Annuleren`,icon_details:`Details`,icon_edit:`Bewerken`,icon_delete:`Verwijderen`,confirm_deleting:`De taak wordt permanent verwijderd. Weet u het zeker?`,section_description:`Beschrijving`,section_time:`Tijdsperiode`,section_type:`Type`,section_deadline:`Deadline`,section_baselines:`Basislijnen`,section_new_resources:`Resources`,column_wbs:`WBS`,column_text:`Taaknaam`,column_start_date:`Startdatum`,column_duration:`Duur`,column_add:``,link:`Koppeling`,confirm_link_deleting:`wordt verwijderd`,link_start:` (begin)`,link_end:` (einde)`,type_task:`Taak`,type_project:`Samenvattingstaak`,type_milestone:`Mijlpaal`,minutes:`Minuten`,hours:`Uur`,days:`Dagen`,weeks:`Weken`,months:`Maanden`,years:`Jaar`,message_ok:`OK`,message_cancel:`Annuleren`,section_constraint:`Beperking`,constraint_type:`Type beperking`,constraint_date:`Datum van beperking`,asap:`Zo snel mogelijk`,alap:`Zo laat mogelijk`,snet:`Niet eerder beginnen dan`,snlt:`Niet later beginnen dan`,fnet:`Niet eerder eindigen dan`,fnlt:`Niet later eindigen dan`,mso:`Moet beginnen op`,mfo:`Moet eindigen op`,resources_add_button:`Toewijzing toevoegen`,resources_filter_placeholder:`Zoeken...`,resources_filter_label:`lege verbergen`,resources_section_placeholder:`Nog niets toegewezen. Klik op 'Toewijzing toevoegen' om resources toe te wijzen.`,empty_state_text_link:`Klik hier`,empty_state_text_description:`om uw eerste taak te maken`,baselines_section_placeholder:`Begin met het toevoegen van een nieuwe basislijn`,baselines_add_button:`Basislijn toevoegen`,baselines_remove_button:`Verwijderen`,baselines_remove_all_button:`Alles verwijderen`,deadline_enable_button:`Instellen`,deadline_disable_button:`Verwijderen`}},Dr={date:{month_full:[`Januar`,`Februar`,`Mars`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Desember`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Des`],day_full:[`Sundag`,`Måndag`,`Tysdag`,`Onsdag`,`Torsdag`,`Fredag`,`Laurdag`],day_short:[`Sun`,`Mån`,`Tys`,`Ons`,`Tor`,`Fre`,`Lau`]},labels:{new_task:`Ny oppgåve`,icon_save:`Lagre`,icon_cancel:`Avbryt`,icon_details:`Detaljar`,icon_edit:`Rediger`,icon_delete:`Slett`,confirm_deleting:`Oppgåva blir sletta permanent. Er du sikker?`,section_description:`Skildring`,section_time:`Tidsrom`,section_type:`Type`,section_deadline:`Frist`,section_baselines:`Grunnlinjer`,section_new_resources:`Ressursar`,column_wbs:`WBS`,column_text:`Oppgåvenamn`,column_start_date:`Startdato`,column_duration:`Varigheit`,column_add:``,link:`Lenkje`,confirm_link_deleting:`blir sletta`,link_start:` (start)`,link_end:` (slutt)`,type_task:`Oppgåve`,type_project:`Samandragsoppgåve`,type_milestone:`Milepåle`,minutes:`Minutt`,hours:`Timar`,days:`Dagar`,weeks:`Veker`,months:`Månader`,years:`År`,message_ok:`OK`,message_cancel:`Avbryt`,section_constraint:`Avgrensing`,constraint_type:`Avgrensingstype`,constraint_date:`Avgrensingsdato`,asap:`Så tidleg som mogleg`,alap:`Så seint som mogleg`,snet:`Ikkje start tidlegare enn`,snlt:`Ikkje start seinare enn`,fnet:`Ikkje avslutt tidlegare enn`,fnlt:`Ikkje avslutt seinare enn`,mso:`Må starte den`,mfo:`Må avsluttast den`,resources_add_button:`Legg til tildeling`,resources_filter_placeholder:`Søk...`,resources_filter_label:`gøym tomme`,resources_section_placeholder:`Ingenting er tildelt enno. Klikk på 'Legg til tildeling' for å tildele ressursar.`,empty_state_text_link:`Klikk her`,empty_state_text_description:`for å opprette di første oppgåve`,baselines_section_placeholder:`Start med å leggje til ei ny grunnlinje`,baselines_add_button:`Legg til grunnlinje`,baselines_remove_button:`Fjern`,baselines_remove_all_button:`Fjern alle`,deadline_enable_button:`Set`,deadline_disable_button:`Fjern`}},Or={date:{month_full:[`Styczeń`,`Luty`,`Marzec`,`Kwiecień`,`Maj`,`Czerwiec`,`Lipiec`,`Sierpień`,`Wrzesień`,`Październik`,`Listopad`,`Grudzień`],month_short:[`Sty`,`Lut`,`Mar`,`Kwi`,`Maj`,`Cze`,`Lip`,`Sie`,`Wrz`,`Paź`,`Lis`,`Gru`],day_full:[`Niedziela`,`Poniedziałek`,`Wtorek`,`Środa`,`Czwartek`,`Piątek`,`Sobota`],day_short:[`Nie`,`Pon`,`Wto`,`Śro`,`Czw`,`Pią`,`Sob`]},labels:{new_task:`Nowe zadanie`,icon_save:`Zapisz`,icon_cancel:`Anuluj`,icon_details:`Szczegóły`,icon_edit:`Edytuj`,icon_delete:`Usuń`,confirm_deleting:`Zadanie zostanie trwale usunięte. Czy chcesz kontynuować?`,section_description:`Opis`,section_time:`Okres czasu`,section_type:`Typ`,section_deadline:`Termin ostateczny`,section_baselines:`Plany bazowe`,section_new_resources:`Zasoby`,column_wbs:`WBS`,column_text:`Nazwa zadania`,column_start_date:`Rozpoczęcie`,column_duration:`Czas trwania`,column_add:``,link:`Powiązanie`,confirm_link_deleting:`zostanie usunięty`,link_start:` (początek)`,link_end:` (koniec)`,type_task:`Zadanie`,type_project:`Zadanie sumaryczne`,type_milestone:`Punkt kontrolny`,minutes:`Minut`,hours:`Godzin`,days:`Dni`,weeks:`Tygodni`,months:`Miesiący`,years:`Lat`,message_ok:`OK`,message_cancel:`Anuluj`,section_constraint:`Ograniczenie`,constraint_type:`Typ ograniczenia`,constraint_date:`Data ograniczenia`,asap:`Jak najwcześniej`,alap:`Jak najpóźniej`,snet:`Rozpocznij nie wcześniej niż`,snlt:`Rozpocznij nie później niż`,fnet:`Zakończ nie wcześniej niż`,fnlt:`Zakończ nie później niż`,mso:`Musi rozpocząć się`,mfo:`Musi zakończyć się`,resources_add_button:`Dodaj przydział`,resources_filter_placeholder:`Szukaj...`,resources_filter_label:`ukryj puste`,resources_section_placeholder:`Nic jeszcze nie przydzielono. Kliknij „Dodaj przydział”, aby przydzielić zasoby.`,empty_state_text_link:`Kliknij tutaj`,empty_state_text_description:`aby utworzyć pierwsze zadanie`,baselines_section_placeholder:`Rozpocznij dodawanie nowego planu bazowego`,baselines_add_button:`Dodaj plan bazowy`,baselines_remove_button:`Usuń`,baselines_remove_all_button:`Usuń wszystko`,deadline_enable_button:`Ustaw`,deadline_disable_button:`Usuń`}},kr={date:{month_full:[`Janeiro`,`Fevereiro`,`Março`,`Abril`,`Maio`,`Junho`,`Julho`,`Agosto`,`Setembro`,`Outubro`,`Novembro`,`Dezembro`],month_short:[`Jan`,`Fev`,`Mar`,`Abr`,`Mai`,`Jun`,`Jul`,`Ago`,`Set`,`Out`,`Nov`,`Dez`],day_full:[`Domingo`,`Segunda`,`Terça`,`Quarta`,`Quinta`,`Sexta`,`Sábado`],day_short:[`Dom`,`Seg`,`Ter`,`Qua`,`Qui`,`Sex`,`Sab`]},labels:{new_task:`Nova tarefa`,icon_save:`Guardar`,icon_cancel:`Cancelar`,icon_details:`Detalhes`,icon_edit:`Editar`,icon_delete:`Eliminar`,confirm_deleting:`A tarefa será eliminada permanentemente. Tem a certeza?`,section_description:`Descrição`,section_time:`Período`,section_type:`Tipo`,section_deadline:`Prazo`,section_baselines:`Linhas de base`,section_new_resources:`Recursos`,column_wbs:`EAP`,column_text:`Nome da tarefa`,column_start_date:`Início`,column_duration:`Duração`,column_add:``,link:`Ligação`,confirm_link_deleting:`A ligação será eliminada.`,link_start:` (início)`,link_end:` (fim)`,type_task:`Tarefa`,type_project:`Tarefa de resumo`,type_milestone:`Marco`,minutes:`Minutos`,hours:`Horas`,days:`Dias`,weeks:`Semanas`,months:`Meses`,years:`Anos`,message_ok:`OK`,message_cancel:`Cancelar`,section_constraint:`Restrição`,constraint_type:`Tipo de restrição`,constraint_date:`Data da restrição`,asap:`Assim que possível`,alap:`O mais tarde possível`,snet:`Não Iniciar Antes De`,snlt:`Não Iniciar Depois De`,fnet:`Não Concluir Antes De`,fnlt:`Não Concluir Depois De`,mso:`Tem de Iniciar A`,mfo:`Tem de Concluir A`,resources_add_button:`Adicionar atribuição`,resources_filter_placeholder:`Pesquisar...`,resources_filter_label:`ocultar vazios`,resources_section_placeholder:`Ainda não foi atribuído nenhum recurso. Clique em “Adicionar atribuição” para atribuir recursos.`,empty_state_text_link:`Clique aqui`,empty_state_text_description:`para criar a sua primeira tarefa`,baselines_section_placeholder:`Comece por adicionar uma nova linha de base`,baselines_add_button:`Adicionar linha de base`,baselines_remove_button:`Remover`,baselines_remove_all_button:`Remover tudo`,deadline_enable_button:`Definir`,deadline_disable_button:`Remover`}},Ar={date:{month_full:[`Janeiro`,`Fevereiro`,`Março`,`Abril`,`Maio`,`Junho`,`Julho`,`Agosto`,`Setembro`,`Outubro`,`Novembro`,`Dezembro`],month_short:[`Jan`,`Fev`,`Mar`,`Abr`,`Mai`,`Jun`,`Jul`,`Ago`,`Set`,`Out`,`Nov`,`Dez`],day_full:[`Domingo`,`Segunda-feira`,`Terça-feira`,`Quarta-feira`,`Quinta-feira`,`Sexta-feira`,`Sábado`],day_short:[`Dom`,`Seg`,`Ter`,`Qua`,`Qui`,`Sex`,`Sáb`]},labels:{new_task:`Nova tarefa`,icon_save:`Salvar`,icon_cancel:`Cancelar`,icon_details:`Detalhes`,icon_edit:`Editar`,icon_delete:`Excluir`,confirm_deleting:`A tarefa será excluída permanentemente. Tem certeza?`,section_description:`Descrição`,section_time:`Período`,section_type:`Tipo`,section_deadline:`Data Limite`,section_baselines:`Linhas de base`,section_new_resources:`Recursos`,column_wbs:`EAP`,column_text:`Nome da tarefa`,column_start_date:`Data de início`,column_duration:`Duração`,column_add:``,link:`Vínculo`,confirm_link_deleting:`será excluído`,link_start:` (início)`,link_end:` (fim)`,type_task:`Tarefa`,type_project:`Tarefa de resumo`,type_milestone:`Marco`,minutes:`Minutos`,hours:`Horas`,days:`Dias`,weeks:`Semanas`,months:`Meses`,years:`Anos`,message_ok:`OK`,message_cancel:`Cancelar`,section_constraint:`Restrição`,constraint_type:`Tipo de restrição`,constraint_date:`Data da restrição`,asap:`O mais rápido possível`,alap:`O mais tarde possível`,snet:`Iniciar não mais cedo do que`,snlt:`Iniciar não mais tarde do que`,fnet:`Concluir não mais cedo do que`,fnlt:`Concluir não mais tarde do que`,mso:`Deve iniciar`,mfo:`Deve terminar ativado`,resources_add_button:`Adicionar atribuição`,resources_filter_placeholder:`Pesquisar...`,resources_filter_label:`ocultar vazios`,resources_section_placeholder:`Nada atribuído ainda. Clique em 'Adicionar atribuição' para atribuir recursos.`,empty_state_text_link:`Clique aqui`,empty_state_text_description:`para criar sua primeira tarefa`,baselines_section_placeholder:`Comece adicionando uma nova linha de base`,baselines_add_button:`Adicionar linha de base`,baselines_remove_button:`Remover`,baselines_remove_all_button:`Remover tudo`,deadline_enable_button:`Definir`,deadline_disable_button:`Remover`}},jr={date:{month_full:[`Ianuarie`,`Februarie`,`Martie`,`Aprilie`,`Mai`,`Iunie`,`Iulie`,`August`,`Septembrie`,`Octombrie`,`Noiembrie`,`Decembrie`],month_short:[`Ian`,`Feb`,`Mar`,`Apr`,`Mai`,`Iun`,`Iul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],day_full:[`Duminică`,`Luni`,`Marți`,`Miercuri`,`Joi`,`Vineri`,`Sâmbătă`],day_short:[`Du`,`Lu`,`Ma`,`Mi`,`Jo`,`Vi`,`Sa`]},labels:{new_task:`Sarcină nouă`,icon_save:`Salvează`,icon_cancel:`Anulează`,icon_details:`Detalii`,icon_edit:`Editează`,icon_delete:`Șterge`,confirm_deleting:`Activitatea va fi ștearsă permanent. Sigur doriți să continuați?`,section_description:`Descriere`,section_time:`Interval`,section_type:`Tip`,section_deadline:`Termen limită`,section_baselines:`Referințe`,section_new_resources:`Resurse`,column_wbs:`WBS`,column_text:`Numele sarcinii`,column_start_date:`Început`,column_duration:`Durată`,column_add:``,link:`Legătură`,confirm_link_deleting:`va fi ștearsă`,link_start:` (început)`,link_end:` (sfârșit)`,type_task:`Sarcină`,type_project:`Activitate rezumat`,type_milestone:`Jalon`,minutes:`Minute`,hours:`Ore`,days:`Zile`,weeks:`Săptămâni`,months:`Luni`,years:`Ani`,message_ok:`OK`,message_cancel:`Anulează`,section_constraint:`Constrângere`,constraint_type:`Tip de constrângere`,constraint_date:`Dată constrângere`,asap:`Cât de curând posibil`,alap:`Cât de târziu posibil`,snet:`Începe nu mai devreme de`,snlt:`Începe nu mai târziu de`,fnet:`Se termină nu mai devreme de`,fnlt:`Se termină nu mai târziu de`,mso:`Trebuie să înceapă pe`,mfo:`Trebuie să se termine pe`,resources_add_button:`Adaugă alocare`,resources_filter_placeholder:`Caută...`,resources_filter_label:`ascunde goalele`,resources_section_placeholder:`Nu este alocat încă nimic. Faceți clic pe „Adaugă alocare” pentru a aloca resurse.`,empty_state_text_link:`Faceți clic aici`,empty_state_text_description:`pentru a crea prima dvs. sarcină`,baselines_section_placeholder:`Începeți prin a adăuga o nouă referință`,baselines_add_button:`Adaugă referință`,baselines_remove_button:`Elimină`,baselines_remove_all_button:`Elimină tot`,deadline_enable_button:`Setează`,deadline_disable_button:`Elimină`}},Mr={date:{month_full:[`Январь`,`Февраль`,`Март`,`Апрель`,`Май`,`Июнь`,`Июль`,`Август`,`Сентябрь`,`Октябрь`,`Ноябрь`,`Декабрь`],month_short:[`Янв`,`Фев`,`Мар`,`Апр`,`Май`,`Июн`,`Июл`,`Авг`,`Сен`,`Окт`,`Ноя`,`Дек`],day_full:[`Воскресенье`,`Понедельник`,`Вторник`,`Среда`,`Четверг`,`Пятница`,`Суббота`],day_short:[`Вс`,`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`]},labels:{new_task:`Новая задача`,icon_save:`Сохранить`,icon_cancel:`Отменить`,icon_details:`Детали`,icon_edit:`Изменить`,icon_delete:`Удалить`,confirm_deleting:`Задача будет удалена безвозвратно, продолжить?`,section_description:`Описание`,section_time:`Период времени`,section_type:`Тип`,section_deadline:`Крайний срок`,section_baselines:`Базовые планы`,section_new_resources:`Ресурсы`,column_wbs:`ИСР`,column_text:`Задача`,column_start_date:`Начало`,column_duration:`Длительность`,column_add:``,link:`Связь`,confirm_link_deleting:`будет удалена`,link_start:` (начало)`,link_end:` (конец)`,type_task:`Задача`,type_project:`Суммарная задача`,type_milestone:`Веха`,minutes:`Минут`,hours:`Часов`,days:`Дней`,weeks:`Недель`,months:`Месяцев`,years:`Лет`,message_ok:`OK`,message_cancel:`Отменить`,section_constraint:`Ограничение`,constraint_type:`Тип ограничения`,constraint_date:`Дата ограничения`,asap:`Как можно скорее`,alap:`Как можно позже`,snet:`Начало не ранее`,snlt:`Начало не позднее`,fnet:`Окончание не ранее`,fnlt:`Окончание не позднее`,mso:`Фиксированное начало`,mfo:`Фиксированное окончание`,resources_add_button:`Добавить назначение`,resources_filter_placeholder:`Поиск...`,resources_filter_label:`скрыть пустые`,resources_section_placeholder:`Пока нет назначений. Нажмите «Добавить назначение», чтобы назначить ресурсы.`,empty_state_text_link:`Нажмите здесь`,empty_state_text_description:`чтобы создать первую задачу`,baselines_section_placeholder:`Начните добавлять новый базовый план`,baselines_add_button:`Добавить базовый план`,baselines_remove_button:`Удалить`,baselines_remove_all_button:`Удалить все`,deadline_enable_button:`Добавить`,deadline_disable_button:`Удалить`}},Nr={date:{month_full:[`Januar`,`Februar`,`Marec`,`April`,`Maj`,`Junij`,`Julij`,`Avgust`,`September`,`Oktober`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Maj`,`Jun`,`Jul`,`Avg`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Nedelja`,`Ponedeljek`,`Torek`,`Sreda`,`Četrtek`,`Petek`,`Sobota`],day_short:[`Ned`,`Pon`,`Tor`,`Sre`,`Čet`,`Pet`,`Sob`]},labels:{new_task:`Nova naloga`,icon_save:`Shrani`,icon_cancel:`Prekliči`,icon_details:`Podrobnosti`,icon_edit:`Uredi`,icon_delete:`Izbriši`,confirm_deleting:`Opravilo bo izbrisano. Želite nadaljevati?`,section_description:`Opis`,section_time:`Časovni okvir`,section_type:`Vrsta`,section_deadline:`Rok`,section_baselines:`Osnovni načrti`,section_new_resources:`Viri`,column_wbs:`WBS`,column_text:`Ime opravila`,column_start_date:`Začetek`,column_duration:`Trajanje`,column_add:``,link:`Povezava`,confirm_link_deleting:`bo izbrisana`,link_start:` (začetek)`,link_end:` (konec)`,type_task:`Opravilo`,type_project:`Opravilo povzetka`,type_milestone:`Mejnik`,minutes:`Minut`,hours:`Ur`,days:`Dni`,weeks:`Tednov`,months:`Mesecev`,years:`Let`,message_ok:`OK`,message_cancel:`Prekliči`,section_constraint:`Omejitev`,constraint_type:`Vrsta omejitve`,constraint_date:`Datum omejitve`,asap:`Čim prej`,alap:`Čim pozneje`,snet:`Ne začni pred`,snlt:`Začni najpozneje do`,fnet:`Ne dokončaj pred`,fnlt:`Dokončaj najpozneje do`,mso:`Mora se začeti na`,mfo:`Mora biti zaključeno do`,resources_add_button:`Dodaj dodelitev`,resources_filter_placeholder:`Išči...`,resources_filter_label:`skrij prazne`,resources_section_placeholder:`Nič še ni dodeljeno. Kliknite »Dodaj dodelitev«, da dodelite vire.`,empty_state_text_link:`Kliknite tukaj`,empty_state_text_description:`da ustvarite prvo opravilo`,baselines_section_placeholder:`Začnite dodajati nov osnovni načrt`,baselines_add_button:`Dodaj osnovni načrt`,baselines_remove_button:`Odstrani`,baselines_remove_all_button:`Odstrani vse`,deadline_enable_button:`Nastavi`,deadline_disable_button:`Odstrani`}},Pr={date:{month_full:[`Január`,`Február`,`Marec`,`Apríl`,`Máj`,`Jún`,`Júl`,`August`,`September`,`Október`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Máj`,`Jún`,`Júl`,`Aug`,`Sept`,`Okt`,`Nov`,`Dec`],day_full:[`Nedeľa`,`Pondelok`,`Utorok`,`Streda`,`Štvrtok`,`Piatok`,`Sobota`],day_short:[`Ne`,`Po`,`Ut`,`St`,`Št`,`Pi`,`So`]},labels:{new_task:`Nová úloha`,icon_save:`Uložiť`,icon_cancel:`Zrušiť`,icon_details:`Detail`,icon_edit:`Edituj`,icon_delete:`Zmazať`,confirm_deleting:`Úloha bude natrvalo odstránená. Naozaj?`,section_description:`Poznámky`,section_time:`Doba platnosti`,section_type:`Typ`,section_deadline:`Termín`,section_baselines:`Pôvodné plány`,section_new_resources:`Zdroje`,column_wbs:`WBS`,column_text:`Názov úlohy`,column_start_date:`Začiatok`,column_duration:`Trvanie`,column_add:``,link:`Väzba`,confirm_link_deleting:`bude odstránená`,link_start:` (začiatok)`,link_end:` (koniec)`,type_task:`Úloha`,type_project:`Súhrnná úloha`,type_milestone:`Medzník`,minutes:`Minút`,hours:`Hodín`,days:`Dní`,weeks:`Týždňov`,months:`Mesiacov`,years:`Rokov`,message_ok:`OK`,message_cancel:`Zrušiť`,section_constraint:`Obmedzenie`,constraint_type:`Typ obmedzenia`,constraint_date:`Dátum obmedzenia`,asap:`Čo najskôr`,alap:`Čo najneskoršie`,snet:`Nezačína skôr než`,snlt:`Nezačína neskôr než`,fnet:`Nekončí skôr než`,fnlt:`Nekončí neskôr než`,mso:`Musí začať`,mfo:`Musí skončiť`,resources_add_button:`Pridať priradenie`,resources_filter_placeholder:`Hľadať...`,resources_filter_label:`skryť prázdne`,resources_section_placeholder:`Zatiaľ nie je nič priradené. Kliknutím na „Pridať priradenie“ priradíte zdroje.`,empty_state_text_link:`Kliknite sem`,empty_state_text_description:`na vytvorenie prvej úlohy`,baselines_section_placeholder:`Začnite pridávať nový pôvodný plán`,baselines_add_button:`Pridať pôvodný plán`,baselines_remove_button:`Odstrániť`,baselines_remove_all_button:`Odstrániť všetko`,deadline_enable_button:`Nastaviť`,deadline_disable_button:`Odstrániť`}},Fr={date:{month_full:[`Janar`,`Shkurt`,`Mars`,`Prill`,`Maj`,`Qershor`,`Korrik`,`Gusht`,`Shtator`,`Tetor`,`Nëntor`,`Dhjetor`],month_short:[`Jan`,`Shk`,`Mar`,`Pri`,`Maj`,`Qer`,`Kor`,`Gus`,`Sht`,`Tet`,`Nën`,`Dhj`],day_full:[`E Diel`,`E Hënë`,`E Martë`,`E Mërkurë`,`E Enjte`,`E Premte`,`E Shtunë`],day_short:[`Die`,`Hën`,`Mar`,`Mër`,`Enj`,`Pre`,`Sht`]},labels:{new_task:`Detyrë e re`,icon_save:`Ruaj`,icon_cancel:`Anulo`,icon_details:`Detaje`,icon_edit:`Ndrysho`,icon_delete:`Fshij`,confirm_deleting:`Detyra do të fshihet përgjithmonë, a jeni i sigurt?`,section_description:`Përshkrimi`,section_time:`Periudha kohore`,section_type:`Lloji`,section_deadline:`Afati`,section_baselines:`Linjat bazë`,section_new_resources:`Burime`,column_wbs:`WBS`,column_text:`Emri i detyrës`,column_start_date:`Data e fillimit`,column_duration:`Kohëzgjatja`,column_add:``,link:`Lidhje`,confirm_link_deleting:`do të fshihet`,link_start:` (fillimi)`,link_end:` (fundi)`,type_task:`Detyrë`,type_project:`Detyrë përmbledhëse`,type_milestone:`Piketë`,minutes:`Minutë`,hours:`Orë`,days:`Ditë`,weeks:`Javë`,months:`Muaj`,years:`Vite`,message_ok:`OK`,message_cancel:`Anulo`,section_constraint:`Kufizim`,constraint_type:`Lloji i kufizimit`,constraint_date:`Data e kufizimit`,asap:`Sa më shpejt të jetë e mundur`,alap:`Sa më vonë të jetë e mundur`,snet:`Fillo jo më herët se`,snlt:`Fillo jo më vonë se`,fnet:`Përfundo jo më herët se`,fnlt:`Përfundo jo më vonë se`,mso:`Duhet të fillojë më`,mfo:`Duhet të përfundojë më`,resources_add_button:`Shto caktim`,resources_filter_placeholder:`Kërko...`,resources_filter_label:`fshih bosh`,resources_section_placeholder:`Asgjë nuk është caktuar ende. Klikoni 'Shto Caktim' për të caktuar burime.`,empty_state_text_link:`Kliko këtu`,empty_state_text_description:`për të krijuar detyrën tuaj të parë`,baselines_section_placeholder:`Filloni duke shtuar një linjë bazë të re`,baselines_add_button:`Shto linjë bazë`,baselines_remove_button:`Hiq`,baselines_remove_all_button:`Hiqi të gjitha`,deadline_enable_button:`Vendos`,deadline_disable_button:`Hiq`}},Ir={date:{month_full:[`Januari`,`Februari`,`Mars`,`April`,`Maj`,`Juni`,`Juli`,`Augusti`,`September`,`Oktober`,`November`,`December`],month_short:[`Jan`,`Feb`,`Mar`,`Apr`,`Maj`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dec`],day_full:[`Söndag`,`Måndag`,`Tisdag`,`Onsdag`,`Torsdag`,`Fredag`,`Lördag`],day_short:[`Sön`,`Mån`,`Tis`,`Ons`,`Tor`,`Fre`,`Lör`]},labels:{new_task:`Ny uppgift`,icon_save:`Spara`,icon_cancel:`Avbryt`,icon_details:`Detaljer`,icon_edit:`Ändra`,icon_delete:`Ta bort`,confirm_deleting:`Är du säker på att du vill ta bort uppgiften permanent?`,section_description:`Beskrivning`,section_time:`Tid`,section_type:`Typ`,section_deadline:`Tidsgräns`,section_baselines:`Baslinjer`,section_new_resources:`Resurser`,column_wbs:`WBS`,column_text:`Uppgiftsnamn`,column_start_date:`Start`,column_duration:`Varaktighet`,column_add:``,link:`Länk`,confirm_link_deleting:`kommer att tas bort`,link_start:` (start)`,link_end:` (slut)`,type_task:`Uppgift`,type_project:`Sammanfattningsaktivitet`,type_milestone:`Milstolpe`,minutes:`Minuter`,hours:`Timmar`,days:`Dagar`,weeks:`Veckor`,months:`Månader`,years:`År`,message_ok:`OK`,message_cancel:`Avbryt`,section_constraint:`Villkor`,constraint_type:`Villkorstyp`,constraint_date:`Villkorsdatum`,asap:`Så snart som möjligt`,alap:`Så sent som möjligt`,snet:`Starta tidigast`,snlt:`Starta senast`,fnet:`Avsluta tidigast`,fnlt:`Avsluta senast`,mso:`Måste starta`,mfo:`Måste avslutas`,resources_add_button:`Lägg till tilldelning`,resources_filter_placeholder:`Sök...`,resources_filter_label:`dölj tomma`,resources_section_placeholder:`Ingenting har tilldelats ännu. Klicka på ”Lägg till tilldelning” för att tilldela resurser.`,empty_state_text_link:`Klicka här`,empty_state_text_description:`för att skapa din första uppgift`,baselines_section_placeholder:`Börja lägga till en ny baslinje`,baselines_add_button:`Lägg till baslinje`,baselines_remove_button:`Ta bort`,baselines_remove_all_button:`Ta bort alla`,deadline_enable_button:`Ange`,deadline_disable_button:`Ta bort`}},Lr={date:{month_full:[`มกราคม`,`กุมภาพันธ์`,`มีนาคม`,`เมษายน`,`พฤษภาคม`,`มิถุนายน`,`กรกฎาคม`,`สิงหาคม`,`กันยายน`,`ตุลาคม`,`พฤศจิกายน`,`ธันวาคม`],month_short:[`ม.ค.`,`ก.พ.`,`มี.ค.`,`เม.ย.`,`พ.ค.`,`มิ.ย.`,`ก.ค.`,`ส.ค.`,`ก.ย.`,`ต.ค.`,`พ.ย.`,`ธ.ค.`],day_full:[`วันอาทิตย์`,`วันจันทร์`,`วันอังคาร`,`วันพุธ`,`วันพฤหัสบดี`,`วันศุกร์`,`วันเสาร์`],day_short:[`อา.`,`จ.`,`อ.`,`พ.`,`พฤ.`,`ศ.`,`ส.`]},labels:{new_task:`งานใหม่`,icon_save:`บันทึก`,icon_cancel:`ยกเลิก`,icon_details:`รายละเอียด`,icon_edit:`แก้ไข`,icon_delete:`ลบ`,confirm_deleting:`งานจะถูกลบอย่างถาวร ต้องการดำเนินการต่อหรือไม่?`,section_description:`คำอธิบาย`,section_time:`ช่วงเวลา`,section_type:`ประเภท`,section_deadline:`กำหนดส่ง`,section_baselines:`เส้นฐาน`,section_new_resources:`ทรัพยากร`,column_wbs:`WBS`,column_text:`ชื่องาน`,column_start_date:`วันที่เริ่มต้น`,column_duration:`ระยะเวลา`,column_add:``,link:`ลิงก์`,confirm_link_deleting:`จะถูกลบ`,link_start:` (เริ่มต้น)`,link_end:` (สิ้นสุด)`,type_task:`งาน`,type_project:`งานสรุป`,type_milestone:`หลักเป้าหมาย`,minutes:`นาที`,hours:`ชั่วโมง`,days:`วัน`,weeks:`สัปดาห์`,months:`เดือน`,years:`ปี`,message_ok:`ตกลง`,message_cancel:`ยกเลิก`,section_constraint:`ข้อจำกัด`,constraint_type:`ประเภทข้อจำกัด`,constraint_date:`วันที่ข้อจำกัด`,asap:`เร็วที่สุดเท่าที่เป็นไปได้`,alap:`ช้าที่สุดเท่าที่เป็นไปได้`,snet:`เริ่มไม่เร็วกว่าวันที่`,snlt:`เริ่มไม่เกินวันที่`,fnet:`สิ้นสุดไม่เร็วกว่าวันที่`,fnlt:`สิ้นสุดไม่เกินวันที่`,mso:`ต้องเริ่มในวันที่`,mfo:`ต้องเสร็จในวันที่`,resources_add_button:`เพิ่มการมอบหมาย`,resources_filter_placeholder:`ค้นหา...`,resources_filter_label:`ซ่อนรายการว่าง`,resources_section_placeholder:`ยังไม่มีการมอบหมาย คลิก 'เพิ่มการมอบหมาย' เพื่อกำหนดทรัพยากร`,empty_state_text_link:`คลิกที่นี่`,empty_state_text_description:`เพื่อสร้างงานแรกของคุณ`,baselines_section_placeholder:`เริ่มต้นด้วยการสร้างเส้นฐานใหม่`,baselines_add_button:`สร้างเส้นฐาน`,baselines_remove_button:`นำออก`,baselines_remove_all_button:`นำออกทั้งหมด`,deadline_enable_button:`ตั้งค่า`,deadline_disable_button:`นำออก`}},Rr={date:{month_full:[`Ocak`,`Şubat`,`Mart`,`Nisan`,`Mayıs`,`Haziran`,`Temmuz`,`Ağustos`,`Eylül`,`Ekim`,`Kasım`,`Aralık`],month_short:[`Oca`,`Şub`,`Mar`,`Nis`,`May`,`Haz`,`Tem`,`Ağu`,`Eyl`,`Eki`,`Kas`,`Ara`],day_full:[`Pazar`,`Pazartesi`,`Salı`,`Çarşamba`,`Perşembe`,`Cuma`,`Cumartesi`],day_short:[`Paz`,`Pzt`,`Sal`,`Çar`,`Per`,`Cum`,`Cmt`]},labels:{new_task:`Yeni görev`,icon_save:`Kaydet`,icon_cancel:`İptal`,icon_details:`Detaylar`,icon_edit:`Düzenle`,icon_delete:`Sil`,confirm_deleting:`Görev silinecek, emin misiniz?`,section_description:`Açıklama`,section_time:`Zaman Aralığı`,section_type:`Tip`,section_deadline:`Son tarih`,section_baselines:`Temel planlar`,section_new_resources:`Kaynaklar`,column_wbs:`WBS`,column_text:`Görev Adı`,column_start_date:`Başlangıç`,column_duration:`Süre`,column_add:``,link:`Bağlantı`,confirm_link_deleting:`silinecek`,link_start:` (başlangıç)`,link_end:` (bitiş)`,type_task:`Görev`,type_project:`Özet görev`,type_milestone:`Kilometre taşı`,minutes:`Dakika`,hours:`Saat`,days:`Gün`,weeks:`Hafta`,months:`Ay`,years:`Yıl`,message_ok:`OK`,message_cancel:`İptal`,section_constraint:`Kısıt`,constraint_type:`Kısıt türü`,constraint_date:`Kısıt tarihi`,asap:`En Kısa Sürede`,alap:`Olabildiğince Geç`,snet:`İlk Başlatma Tarihi`,snlt:`Son Başlatma Tarihi`,fnet:`İlk Bitiş Tarihi`,fnlt:`Son Bitiş Tarihi`,mso:`Başlatılması Gereken Tarih`,mfo:`Bitmesi Gereken Tarih`,resources_add_button:`Atama ekle`,resources_filter_placeholder:`Ara...`,resources_filter_label:`boşları gizle`,resources_section_placeholder:`Henüz bir atama yok. Kaynak atamak için „Atama ekle”ye tıklayın.`,empty_state_text_link:`Buraya tıklayın`,empty_state_text_description:`ilk görevinizi oluşturmak için`,baselines_section_placeholder:`Yeni bir temel plan eklemeye başlayın`,baselines_add_button:`Temel plan ekle`,baselines_remove_button:`Kaldır`,baselines_remove_all_button:`Tümünü kaldır`,deadline_enable_button:`Ayarla`,deadline_disable_button:`Kaldır`}},zr={date:{month_full:[`Січень`,`Лютий`,`Березень`,`Квітень`,`Травень`,`Червень`,`Липень`,`Серпень`,`Вересень`,`Жовтень`,`Листопад`,`Грудень`],month_short:[`Січ`,`Лют`,`Бер`,`Кві`,`Тра`,`Чер`,`Лип`,`Сер`,`Вер`,`Жов`,`Лис`,`Гру`],day_full:[`Неділя`,`Понеділок`,`Вівторок`,`Середа`,`Четвер`,`П'ятниця`,`Субота`],day_short:[`Нед`,`Пон`,`Вів`,`Сер`,`Чет`,`Птн`,`Суб`]},labels:{new_task:`Нове завдання`,icon_save:`Зберегти`,icon_cancel:`Відміна`,icon_details:`Деталі`,icon_edit:`Редагувати`,icon_delete:`Вилучити`,confirm_deleting:`Завдання буде видалено назавжди. Ви впевнені?`,section_description:`Опис`,section_time:`Часовий проміжок`,section_type:`Тип`,section_deadline:`Крайній термін`,section_baselines:`Базові плани`,section_new_resources:`Ресурси`,column_wbs:`WBS`,column_text:`Назва завдання`,column_start_date:`Початок`,column_duration:`Тривалість`,column_add:``,link:`Зв'язок`,confirm_link_deleting:`буде видалено`,link_start:` (початок)`,link_end:` (кінець)`,type_task:`Завдання`,type_project:`Зведене завдання`,type_milestone:`Віха`,minutes:`Хвилин`,hours:`Годин`,days:`Днів`,weeks:`Тижнів`,months:`Місяців`,years:`Років`,message_ok:`ОК`,message_cancel:`Відміна`,section_constraint:`Обмеження`,constraint_type:`Тип обмеження`,constraint_date:`Дата обмеження`,asap:`Якомога раніше`,alap:`Якомога пізніше`,snet:`Початок не раніше ніж`,snlt:`Початок не пізніше ніж`,fnet:`Завершення не раніше ніж`,fnlt:`Завершення не пізніше ніж`,mso:`Фіксований початок`,mfo:`Фіксоване завершення`,resources_add_button:`Додати призначення`,resources_filter_placeholder:`Пошук...`,resources_filter_label:`приховати порожні`,resources_section_placeholder:`Поки що нічого не призначено. Натисніть «Додати призначення», щоб призначити ресурси.`,empty_state_text_link:`Натисніть тут`,empty_state_text_description:`щоб створити перше завдання`,baselines_section_placeholder:`Почніть додавати новий базовий план`,baselines_add_button:`Додати базовий план`,baselines_remove_button:`Видалити`,baselines_remove_all_button:`Видалити все`,deadline_enable_button:`Установити`,deadline_disable_button:`Видалити`}},Br={date:{month_full:[`Tháng Một`,`Tháng Hai`,`Tháng Ba`,`Tháng Tư`,`Tháng Năm`,`Tháng Sáu`,`Tháng Bảy`,`Tháng Tám`,`Tháng Chín`,`Tháng Mười`,`Tháng Mười Một`,`Tháng Mười Hai`],month_short:[`Thg 1`,`Thg 2`,`Thg 3`,`Thg 4`,`Thg 5`,`Thg 6`,`Thg 7`,`Thg 8`,`Thg 9`,`Thg 10`,`Thg 11`,`Thg 12`],day_full:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],day_short:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`]},labels:{new_task:`Tác vụ mới`,icon_save:`Lưu`,icon_cancel:`Hủy`,icon_details:`Chi tiết`,icon_edit:`Sửa`,icon_delete:`Xóa`,confirm_deleting:`Tác vụ sẽ bị xóa vĩnh viễn, bạn có chắc chắn không?`,section_description:`Mô tả`,section_time:`Khoảng thời gian`,section_type:`Loại`,section_deadline:`Hạn chót`,section_baselines:`Đường cơ sở`,section_new_resources:`Tài nguyên`,column_wbs:`WBS`,column_text:`Tên tác vụ`,column_start_date:`Ngày bắt đầu`,column_duration:`Thời lượng`,column_add:``,link:`Liên kết`,confirm_link_deleting:`sẽ bị xóa`,link_start:` (bắt đầu)`,link_end:` (kết thúc)`,type_task:`Tác vụ`,type_project:`Tác vụ tóm tắt`,type_milestone:`Mốc`,minutes:`Phút`,hours:`Giờ`,days:`Ngày`,weeks:`Tuần`,months:`Tháng`,years:`Năm`,message_ok:`OK`,message_cancel:`Hủy`,section_constraint:`Ràng buộc`,constraint_type:`Loại ràng buộc`,constraint_date:`Ngày ràng buộc`,asap:`Càng sớm càng tốt`,alap:`Càng muộn càng tốt`,snet:`Bắt đầu không sớm hơn`,snlt:`Bắt đầu không muộn hơn`,fnet:`Kết thúc không sớm hơn`,fnlt:`Kết thúc không muộn hơn`,mso:`Phải bắt đầu vào`,mfo:`Phải kết thúc vào`,resources_add_button:`Thêm phân công`,resources_filter_placeholder:`Tìm kiếm...`,resources_filter_label:`ẩn mục trống`,resources_section_placeholder:`Chưa có phân công nào. Nhấp vào 'Thêm phân công' để gán tài nguyên.`,empty_state_text_link:`Nhấp vào đây`,empty_state_text_description:`để tạo tác vụ đầu tiên của bạn`,baselines_section_placeholder:`Bắt đầu thêm một đường cơ sở mới`,baselines_add_button:`Thêm đường cơ sở`,baselines_remove_button:`Xóa`,baselines_remove_all_button:`Xóa tất cả`,deadline_enable_button:`Đặt`,deadline_disable_button:`Xóa`}},Vr={date:{month_full:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],month_short:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],day_full:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`],day_short:[`日`,`一`,`二`,`三`,`四`,`五`,`六`]},labels:{new_task:`新任務`,icon_save:`儲存`,icon_cancel:`取消`,icon_details:`詳細資料`,icon_edit:`編輯`,icon_delete:`刪除`,confirm_deleting:`工作將被永久刪除,您確定嗎?`,section_description:`描述`,section_time:`時間範圍`,section_type:`類型`,section_deadline:`期限`,section_baselines:`基線`,section_new_resources:`資源`,column_wbs:`WBS`,column_text:`任務名稱`,column_start_date:`開始時間`,column_duration:`任務工期`,column_add:``,link:`連結`,confirm_link_deleting:`將被刪除`,link_start:` (開始)`,link_end:` (結束)`,type_task:`任務`,type_project:`摘要任務`,type_milestone:`里程碑`,minutes:`分鐘`,hours:`小時`,days:`天`,weeks:`周`,months:`月`,years:`年`,message_ok:`確定`,message_cancel:`取消`,section_constraint:`限制`,constraint_type:`限制式類型`,constraint_date:`限制式日期`,asap:`越慢越好`,alap:`越快越好`,snet:`開始時間不得早於`,snlt:`開始時間不得晚於`,fnet:`完成時間不得早於`,fnlt:`完成時間不得晚於`,mso:`必須開始於`,mfo:`必須完成於`,resources_add_button:`指派資源`,resources_filter_placeholder:`搜尋...`,resources_filter_label:`隱藏空白項目`,resources_section_placeholder:`尚未有任何指派。按一下「新增指派」以指派資源。`,empty_state_text_link:`按一下這裡`,empty_state_text_description:`以建立您的第一個工作`,baselines_section_placeholder:`開始新增基線`,baselines_add_button:`新增基線`,baselines_remove_button:`移除`,baselines_remove_all_button:`全部移除`,deadline_enable_button:`設定`,deadline_disable_button:`移除`}},Hr={date:{month_full:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],month_short:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],day_full:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`],day_short:[`日`,`一`,`二`,`三`,`四`,`五`,`六`]},labels:{new_task:`新任務`,icon_save:`儲存`,icon_cancel:`取消`,icon_details:`詳細資料`,icon_edit:`編輯`,icon_delete:`刪除`,confirm_deleting:`任務將被永久刪除,您確定嗎?`,section_description:`說明`,section_time:`時間區間`,section_type:`類型`,section_deadline:`期限`,section_baselines:`比較基準`,section_new_resources:`資源`,column_wbs:`WBS`,column_text:`任務名稱`,column_start_date:`開始時間`,column_duration:`工期`,column_add:``,link:`連結`,confirm_link_deleting:`將被刪除`,link_start:` (開始)`,link_end:` (結束)`,type_task:`任務`,type_project:`摘要任務`,type_milestone:`里程碑`,minutes:`分鐘`,hours:`小時`,days:`天`,weeks:`週`,months:`月`,years:`年`,message_ok:`確定`,message_cancel:`取消`,section_constraint:`限制`,constraint_type:`限制式類型`,constraint_date:`限制式日期`,asap:`越早越好`,alap:`越晚越好`,snet:`開始時間不得早於`,snlt:`開始時間不得晚於`,fnet:`完成時間不得早於`,fnlt:`完成時間不得晚於`,mso:`必須開始於`,mfo:`必須完成於`,resources_add_button:`新增分派`,resources_filter_placeholder:`搜尋...`,resources_filter_label:`隱藏空白`,resources_section_placeholder:`尚未有任何分派。按一下「新增分派」以分派資源。`,empty_state_text_link:`按一下這裡`,empty_state_text_description:`以建立您的第一個任務`,baselines_section_placeholder:`開始新增新的比較基準`,baselines_add_button:`新增比較基準`,baselines_remove_button:`移除`,baselines_remove_all_button:`全部移除`,deadline_enable_button:`設定`,deadline_disable_button:`移除`}};function Ur(){return new yr({af:Gn,ar:Kn,be:qn,bg:Jn,bs:Yn,ca:Xn,cn:Zn,cs:Qn,da:$n,de:er,de_at:tr,el:nr,en:rr,es:ir,es_mx:ar,et:or,fa:sr,fi:cr,fr:lr,fr_ca:ur,ga:dr,he:fr,hr:pr,hu:mr,id:hr,it:gr,jp:_r,kr:vr,lt:br,lv:xr,mk:Sr,ms:Cr,nb:wr,nl:Tr,nl_be:Er,no:Dr,pl:Or,pt:kr,pt_br:Ar,ro:jr,ru:Mr,si:Nr,sk:Pr,sq:Fr,sv:Ir,th:Lr,tr:Rr,ua:zr,vi:Br,zh_hk:Vr,zh_tw:Hr})}function Wr(){this.constants=rt,this.version=`10.0.0`,this.license=`mit`,this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}}function Gr(e){var t=new Wr,n=new tt(e),r={};t.plugins=function(e){for(var i in e)if(e[i]&&!r[i]){var a=n.getExtension(i);a&&(a(t),r[i]=!0)}return r},t.$services=it(),t.config=at(),t.ajax=ct(t),t.date=mt(t),t.RemoteEvents=bt;var i=St(t);t.$services.setService(`dnd`,function(){return i});var a=wt(t);t.$services.setService(`templateLoader`,function(){return a}),N(t);var o=new Tt;o.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=o.getState,t.$services.setService(`state`,function(){return o}),L(t,Ne),t.Promise=Et,t.env=U,Yt(t),t.dataProcessor=nn.DEPRECATED_api,t.createDataProcessor=nn.createDataProcessor,vn(t),yn(t),bn(t),xn(t),Fn(t),In(t),Ln(t),Rn(t),Un(t),Wn(t);var s=Ur();return t.i18n={addLocale:s.addLocale,setLocale:function(e){if(typeof e==`string`){var n=s.getLocale(e);n||=s.getLocale(`en`),t.locale=n}else if(e)if(!t.locale)t.locale=e;else for(var r in e)e[r]&&typeof e[r]==`object`?(t.locale[r]||(t.locale[r]={}),t.mixin(t.locale[r],e[r],!0)):t.locale[r]=e[r];let i=t.locale.labels;i.gantt_save_btn=i.gantt_save_btn||i.icon_save,i.gantt_cancel_btn=i.gantt_cancel_btn||i.icon_cancel,i.gantt_delete_btn=i.gantt_delete_btn||i.icon_delete},getLocale:s.getLocale},t.i18n.setLocale(`en`),t}function Kr(e){var t=`data-dhxbox`,n=null;function r(e,t){var r=e.callback;x.hide(e.box),n=e.box=null,r&&r(t)}function i(e){if(n){var t=e.which||e.keyCode,i=!1;if(S.keyboard){if(t==13||t==32){var a=e.target||e.srcElement;m(a).indexOf(`gantt_popup_button`)>-1&&a.click?a.click():(r(n,!0),i=!0)}t==27&&(r(n,!1),i=!0)}return i?(e.preventDefault&&e.preventDefault(),!(e.cancelBubble=!0)):void 0}}var a=ne(e.$root)||document;e.event(a,`keydown`,i,!0);function o(e){o.cover||(o.cover=document.createElement(`div`),o.cover.onkeydown=i,o.cover.className=`dhx_modal_cover`,document.body.appendChild(o.cover)),o.cover.style.display=e?`inline-block`:`none`}function s(t,n,r){var i=e._waiAria.messageButtonAttrString(t),a=`gantt_`+n.toLowerCase().replace(/ /g,`_`)+`_button`;return`<div `+i+` class='gantt_popup_button `+a+`' data-result='`+r+`' result='`+r+`' ><div>`+t+`</div></div>`}function c(t){S.area||(S.area=document.createElement(`div`),S.area.className=`gantt_message_area`,S.area.style[S.position]=`5px`),k(S.area,document.body)||document.body.appendChild(S.area),S.hide(t.id);var n=document.createElement(`div`);return n.innerHTML=`<div>`+t.text+`</div>`,n.className=`gantt-info gantt-`+t.type,n.onclick=function(){S.hide(t.id),t=null},e._waiAria.messageInfoAttr(n),S.position==`bottom`&&S.area.firstChild?S.area.insertBefore(n,S.area.firstChild):S.area.appendChild(n),t.expire>0&&(S.timers[t.id]=window.setTimeout(function(){S&&S.hide(t.id)},t.expire)),S.pull[t.id]=n,n=null,t.id}function l(){for(var e=[].slice.apply(arguments,[0]),t=0;t<e.length;t++)if(e[t])return e[t]}function u(i,a,o){var c=document.createElement(`div`),u=z();e._waiAria.messageModalAttr(c,u),c.className=` gantt_modal_box gantt-`+i.type,c.setAttribute(t,1);var d=``;if(i.width&&(c.style.width=i.width),i.height&&(c.style.height=i.height),i.title&&(d+=`<div class="gantt_popup_title">`+i.title+`</div>`),d+=`<div class="gantt_popup_text" id="`+u+`"><span>`+(i.content?``:i.text)+`</span></div><div class="gantt_popup_controls">`,a&&(d+=s(l(i.ok,e.locale.labels.message_ok,`OK`),`ok`,!0)),o&&(d+=s(l(i.cancel,e.locale.labels.message_cancel,`Cancel`),`cancel`,!1)),i.buttons)for(var f=0;f<i.buttons.length;f++){var p=i.buttons[f];if(typeof p==`object`){var m=p.label,h=p.css||`gantt_`+p.label.toLowerCase()+`_button`,g=p.value||f;d+=s(m,h,g)}else d+=s(p,p,f)}if(d+=`</div>`,c.innerHTML=d,i.content){var _=i.content;typeof _==`string`&&(_=document.getElementById(_)),_.style.display==`none`&&(_.style.display=``),c.childNodes[+!!i.title].appendChild(_)}return c.onclick=function(e){var t=e.target||e.srcElement;if(t.className||(t=t.parentNode),A(t,`.gantt_popup_button`)){var n=t.getAttribute(`data-result`);n=n==`true`||n!=`false`&&n,r(i,n)}},i.box=c,(a||o)&&(n=i),c}function d(t,n,r){var a=t.tagName?t:u(t,n,r);t.hidden||o(!0),document.body.appendChild(a);var s=Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-a.offsetWidth)/2)),c=Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-a.offsetHeight)/2));return t.position==`top`?a.style.top=`-3px`:a.style.top=c+`px`,a.style.left=s+`px`,a.onkeydown=i,x.focus(a),t.hidden&&x.hide(a),e.callEvent(`onMessagePopup`,[a]),a}function p(e){return d(e,!0,!1)}function h(e){return d(e,!0,!0)}function g(e){return d(e)}function _(e,t,n){return typeof e!=`object`&&(typeof t==`function`&&(n=t,t=``),e={text:e,type:t,callback:n}),e}function v(e,t,n,r){return typeof e!=`object`&&(e={text:e,type:t,expire:n,id:r}),e.id=e.id||z(),e.expire=e.expire||S.expire,e}var y=function(){var e=_.apply(this,arguments);return e.type=e.type||`confirm`,p(e)},b=function(){var e=_.apply(this,arguments);return e.type=e.type||`alert`,h(e)},x=function(){var e=_.apply(this,arguments);return e.type=e.type||`alert`,g(e)};x.hide=function(n){for(;n&&n.getAttribute&&!n.getAttribute(t);)n=n.parentNode;n&&(n.parentNode.removeChild(n),o(!1),e.callEvent(`onAfterMessagePopup`,[n]))},x.focus=function(e){setTimeout(function(){var t=f(e);t.length&&t[0].focus&&t[0].focus()},1)};var S=function(e,t,n,r){switch(e=v.apply(this,arguments),e.type=e.type||`info`,e.type.split(`-`)[0]){case`alert`:return p(e);case`confirm`:return h(e);case`modalbox`:return g(e);default:return c(e)}};S.seed=new Date().valueOf(),S.uid=z,S.expire=4e3,S.keyboard=!0,S.position=`top`,S.pull={},S.timers={},S.hideAll=function(){for(var e in S.pull)S.hide(e)},S.hide=function(e){var t=S.pull[e];t&&t.parentNode&&(window.setTimeout(function(){t.parentNode.removeChild(t),t=null},2e3),t.className+=` hidden`,S.timers[e]&&window.clearTimeout(S.timers[e]),delete S.pull[e])};var C=[];return e.attachEvent(`onMessagePopup`,function(e){C.push(e)}),e.attachEvent(`onAfterMessagePopup`,function(e){for(var t=0;t<C.length;t++)C[t]===e&&(C.splice(t,1),t--)}),e.attachEvent(`onDestroy`,function(){o.cover&&o.cover.parentNode&&o.cover.parentNode.removeChild(o.cover);for(var e=0;e<C.length;e++)C[e].parentNode&&C[e].parentNode.removeChild(C[e]);C=null,S.area&&S.area.parentNode&&S.area.parentNode.removeChild(S.area),S=null}),{alert:y,confirm:b,message:S,modalbox:x}}function qr(e,t){var n=this.$config[e];return n?(n.$extendedConfig||(n.$extendedConfig=!0,Object.setPrototypeOf(n,t)),n):t}var Jr=function(e){var t,n;return{$getConfig:function(){return t||=e?e.$getConfig():this.$gantt.config,this.$config.config?qr.call(this,`config`,t):t},$getTemplates:function(){return n||=e?e.$getTemplates():this.$gantt.templates,this.$config.templates?qr.call(this,`templates`,n):n}}};function Yr(e,t){L(e,Jr(t))}var Xr={createFactory:function(e){var t={};function n(e,t){var n,r=`cell`;return e.view?r=`viewcell`:e.resizer?r=`resizer`:e.rows||e.cols?r=`layout`:e.views&&(r=`multiview`),n=i.call(this,r,null,e,t),n}var r={};function i(n,i,a,o){var s=t[n];if(!s||!s.create)return!1;n==`resizer`&&!a.mode&&(o.$config.cols?a.mode=`x`:a.mode=`y`),n==`viewcell`&&a.view==`scrollbar`&&!a.scroll&&(o.$config.cols?a.scroll=`y`:a.scroll=`x`);var a=I(a);!a.id&&!r[a.view]&&(a.id=a.view),a.id&&!a.css&&(a.css=a.id+`_cell`);var c=new s.create(i,a,this,e);return s.configure&&s.configure(c),Yr(c,o),c.$id||=a.id||e.uid(),!c.$parent&&typeof i==`object`&&(c.$parent=i),c.$config||=a,r[c.$id]&&(c.$id=e.uid()),r[c.$id]=c,c}function a(){r={}}function o(e,n,r){t[e]={create:n,configure:r}}function s(e){return r[e]}return{initUI:n,reset:a,registerView:o,createView:i,getView:s}}},Zr={init:(function(e){return function(t){var n={click:{},doubleclick:{},contextMenu:{}};function r(e,t,r,i){n[e][t]||(n[e][t]=[]),n[e][t].push({handler:r,root:i})}function i(e,t,r,i){var a=n[e][t];if(a)for(var o=0;o<a.length;o++)(!(r||a[o].root)||a[o].root===r)&&a[o].handler.apply(this,i)}function a(e){e||=window.event;var r=t.locate(e),i=s(e,n.click),a=!0;if(r===null?t.callEvent(`onEmptyClick`,[e]):a=!t.checkEvent(`onTaskClick`)||t.callEvent(`onTaskClick`,[r,e]),a){if(!c(i,e,r))return;switch(e.target.nodeName){case`SELECT`:case`INPUT`:return}r&&t.getTask(r)&&!t._multiselect&&t.config.select_task&&t.selectTask(r)}}function o(e){e||=window.event;var n=e.target||e.srcElement,r=t.locate(n),i=t.locate(n,t.config.link_attribute),a=!t.checkEvent(`onContextMenu`)||t.callEvent(`onContextMenu`,[r,i,e]);return a||(e.preventDefault?e.preventDefault():e.returnValue=!1),a}function s(t,n){for(var r=t.target||t.srcElement,i=[];r;){var a=e.getClassName(r);if(a){a=a.split(` `);for(var o=0;o<a.length;o++)if(a[o]&&n[a[o]])for(var s=n[a[o]],c=0;c<s.length;c++)s[c].root&&!e.isChildOf(r,s[c].root)||i.push(s[c].handler)}r=r.parentNode}return i}function c(e,n,r){for(var i=!0,a=0;a<e.length;a++){var o=e[a].call(t,n,r,n.target||n.srcElement);i&&=!(typeof o<`u`&&o!==!0)}return i}function l(e){e||=window.event;var r=t.locate(e),i=s(e,n.doubleclick),a=!t.checkEvent(`onTaskDblClick`)||r===null||t.callEvent(`onTaskDblClick`,[r,e]);if(a){if(!c(i,e,r))return;r!==null&&t.getTask(r)&&a&&t.config.details_on_dblclick&&!t.isReadonly(r)&&t.showLightbox(r)}}function u(e){if(t.checkEvent(`onMouseMove`)){var n=t.locate(e);t._last_move_event=e,t.callEvent(`onMouseMove`,[n,e])}}function d(e,t,r,i){if(n[e]&&n[e][t]){for(var a=n[e],o=a[t],s=0;s<o.length;s++)o[s].root==i&&(o.splice(s,1),s--);o.length||delete a[t]}}var f=t._createDomEventScope();function p(e){f.detachAll(),e&&(f.attach(e,`click`,a),f.attach(e,`dblclick`,l),f.attach(e,`mousemove`,u),f.attach(e,`contextmenu`,o))}return{reset:p,global:function(e,t,n){r(e,t,n,null)},delegate:r,detach:d,callHandler:i,onDoubleClick:l,onMouseMove:u,onContextMenu:o,onClick:a,destructor:function(){p(),n=null,f=null}}}})(ie)};function Qr(e,t,n){return!(!t||t.left>e.x_end||t.left+t.width<e.x||t.top>e.y_end||t.top+t.height<e.y)}function $r(e){return e.config.smart_rendering&&e._smart_render}function ei(e,t,n){return{top:t.getItemTop(e.id),height:t.getItemHeight(e.id),left:0,right:1/0}}function Y(e,t,n,r,i){var a=1,o=t.getItemIndexByTopPosition(i.y)||0,s=t.getItemIndexByTopPosition(i.y_end)||r.count(),c=Math.max(0,o-a),l=Math.min(r.count(),s+a);let u=[];if(e.config.keyboard_navigation&&e.getSelectedId()){let t=e.getTask(e.getSelectedId());t.$expanded_branch&&!t.$split_subtask&&u.push(e.getSelectedId())}if(e.$ui.getView(`grid`)&&e.ext.inlineEditors&&e.ext.inlineEditors.getState().id){let t=e.ext.inlineEditors.getState().id;r.exists(t)&&u.push(t)}return{start:c,end:l,ids:u}}var ti=function(e){var t={},n={};function r(t){var n=null;return typeof t.view==`string`?n=e.$ui.getView(t.view):t.view&&(n=t.view),n}function i(i,a,o){if(n[i])return n[i];a.renderer||e.assert(!1,`Invalid renderer call`);var s=null,c=null,l=null,u=null,d=null;typeof a.renderer==`function`?(s=a.renderer,l=ei):(s=a.renderer.render,c=a.renderer.update,u=a.renderer.onrender,a.renderer.isInViewPort?d=a.renderer.isInViewPort:l=a.renderer.getRectangle,!l&&l!==null&&(l=ei));var f=a.filter;return o&&o.setAttribute(e.config.layer_attribute,!0),n[i]={render_item:function(t,n,i,c,p){if(n||=o,f&&!f(t)){this.remove_item(t.id);return}var m=c||r(a),h=p||(m?m.$getConfig():null),g=i;!g&&h&&h.smart_rendering&&(g=m.getViewPort());var _=null;if(!$r(e)&&(l||d)&&g){var v=!1;v=d?d(t,g,m,h,e):Qr(g,l(t,m,h,e)),v&&(_=s.call(e,t,m,h,g))}else _=s.call(e,t,m,h,g);this.append(t,_,n);var y=n.nodeType==11;u&&!y&&_&&u.call(e,t,_,m)},clear:function(e){a.renderer&&a.renderer.clear&&a.renderer.clear(),this.rendered=t[i]={},a.append||this.clear_container(e)},clear_container:function(e){e||=o,e&&(e.innerHTML=``)},get_visible_range:function(t){var n=r(a),i,o=n?n.$getConfig():null;o&&o.smart_rendering&&(i=n.getViewPort());var s;return n&&i&&(typeof a.renderer==`function`?s=Y(e,n,o,t,i):a.renderer&&a.renderer.getVisibleRange&&(s=a.renderer.getVisibleRange(e,n,o,t,i))),s||={start:0,end:t.count()},s},prepare_data:function(t){if(a.renderer&&a.renderer.prepareData)return a.renderer.prepareData(t,e,a)},render_items:function(t,n){n||=o;var i=document.createDocumentFragment();this.clear(n);var s=null,c=r(a),l=c?c.$getConfig():null;l&&l.smart_rendering&&(s=c.getViewPort());for(var d=0,f=t.length;d<f;d++)this.render_item(t[d],i,s,c,l);n.appendChild(i,n);var p={};t.forEach(function(e){p[e.id]=e});var m={};if(u){var h={};for(var d in this.rendered)m[d]||(h[d]=this.rendered[d],u.call(e,p[d],this.rendered[d],c))}},update_items:function(t,n){var i=r(a),s=i?i.$getConfig():null;if(!(!i||!i.$getConfig().smart_rendering||$r(e))&&this.rendered&&(l||d)){n||=o;var f=document.createDocumentFragment(),p=null;i&&(p=i.getViewPort());var m={};t.forEach(function(e){m[e.id]=e});var h={},g={};for(var _ in this.rendered)g[_]=!0,h[_]=!0;for(var v={},_=0,y=t.length;_<y;_++){var b=t[_],x=this.rendered[b.id];if(g[b.id]=!1,x&&x.parentNode){var S=!1;S=d?d(b,p,i,s,e):Qr(p,l(b,i,s,e)),S?(c&&c.call(e,b,x,i,s,p),this.restore(b,f)):g[b.id]=!0}else v[t[_].id]=!0,this.render_item(t[_],f,p,i,s)}for(var _ in g)g[_]&&this.hide(_);if(f.childNodes.length&&n.appendChild(f,n),u){var C={};for(var _ in this.rendered)(!h[_]||v[_])&&(C[_]=this.rendered[_],u.call(e,m[_],this.rendered[_],i))}}},append:function(e,t,n){if(this.rendered){if(!t){this.rendered[e.id]&&this.remove_item(e.id);return}this.rendered[e.id]&&this.rendered[e.id].parentNode?this.replace_item(e.id,t):n.appendChild(t),this.rendered[e.id]=t}},replace_item:function(e,t){var n=this.rendered[e];n&&n.parentNode&&n.parentNode.replaceChild(t,n),this.rendered[e]=t},remove_item:function(e){this.hide(e),delete this.rendered[e]},hide:function(e){var t=this.rendered[e];t&&t.parentNode&&t.parentNode.removeChild(t),delete this.rendered[e]},restore:function(e,t){var n=this.rendered[e.id];n?n.parentNode||this.append(e,n,t||o):this.render_item(e,t||o)},change_id:function(e,t){this.rendered[t]=this.rendered[e],delete this.rendered[e]},rendered:t[i],node:o,destructor:function(){this.clear(),delete n[i],delete t[i]}},n[i]}function a(){for(var e in n)i(e).destructor()}return{getRenderer:i,clearRenderers:a}},ni=function(e){var t=ti(e);return{createGroup:function(n,r,i,a){var o={tempCollection:[],renderers:{},container:n,filters:[],getLayers:function(){this._add();var e=[];for(var t in this.renderers)e.push(this.renderers[t]);return e},getLayer:function(e){return this.renderers[e]},_add:function(n){n&&(n.id=n.id||z(),this.tempCollection.push(n));let i=this.container(),o=this.tempCollection;for(let s=0;s<o.length;s++){if(n=o[s],!this.container()&&!(n&&n.container&&n.container.isConnected))continue;let c=n.container,l=n.id,u=n.topmost;if(!c.parentNode)if(u)i.appendChild(c);else{let e=r?r():i.firstChild;e&&e.parentNode==i?i.insertBefore(c,e):i.appendChild(c)}this.renderers[l]=t.getRenderer(l,n,c),a&&a(n,e),this.tempCollection.splice(s,1),s--}},addLayer:function(t){if(t){typeof t==`function`&&(t={renderer:t}),t.filter===void 0?t.filter=ri(i||[]):t.filter instanceof Array&&(t.filter.push(i),t.filter=ri(t.filter)),t.container||=document.createElement(`div`);var n=this;t.requestUpdate=function(){e.config.smart_rendering&&!$r(e)&&n.renderers[t.id]&&n.onUpdateRequest(n.renderers[t.id])}}return this._add(t),t?t.id:void 0},onUpdateRequest:function(e){},eachLayer:function(e){for(var t in this.renderers)e(this.renderers[t])},removeLayer:function(e){this.renderers[e]&&(this.renderers[e].destructor(),delete this.renderers[e])},clear:function(){for(var e in this.renderers)this.renderers[e].destructor();this.renderers={}}};return e.attachEvent(`onDestroy`,function(){o.clear(),o=null}),o}}};function ri(e){return e instanceof Array||(e=Array.prototype.slice.call(arguments,0)),function(t){for(var n=!0,r=0,i=e.length;r<i;r++){var a=e[r];a&&(n&&=a(t.id,t)!==!1)}return n}}function ii(e,t,n){if(!e.start_date||!e.end_date)return null;var r=200,i=t.posFromDate(e.start_date,t._getPositioningContext?t._getPositioningContext(e):null),a=t.posFromDate(e.end_date,t._getPositioningContext?t._getPositioningContext(e):null),o=Math.min(i,a)-r,s=Math.max(i,a)+r;return{top:t.getItemTop(e.id),height:t.getItemHeight(e.id),left:o,width:s-o}}function ai(e,t,n,r){if(!r.isTaskExists(e.source)||!r.isTaskExists(e.target))return null;var i=ii(r.getTask(e.source),t),a=ii(r.getTask(e.target),t);if(!i||!a)return null;var o=100,s=Math.min(i.left,a.left)-o,c=Math.max(i.left+i.width,a.left+a.width)+o,l=Math.min(i.top,a.top)-o,u=Math.max(i.top+i.height,a.top+a.height)+o;return{top:l,height:u-l,bottom:u,left:s,width:c-s,right:c}}function oi(){var e=[],t=!1;function n(){e=[],t=!1}function r(n,r,i){var a=r.$getConfig();n.getVisibleItems().forEach(function(t){var n=ai(t,r,a,i);n&&e.push({id:t.id,rec:n})}),e.sort(function(e,t){return e.rec.right<t.rec.right?-1:1}),t=!0}var i=!1;function a(e){i||(i=!0,e.attachEvent(`onPreFilter`,n),e.attachEvent(`onStoreUpdated`,n),e.attachEvent(`onClearAll`,n),e.attachEvent(`onBeforeStoreUpdate`,n))}return function(n,i,o,s,c){a(s),t||r(s,i,n);for(var l=[],u=0;u<e.length;u++){var d=e[u],f=d.rec;f.right<c.x||f.left<c.x_end&&f.right>c.x&&f.top<c.y_end&&f.bottom>c.y&&l.push(d.id)}return{ids:l}}}function si(e,t,n,r,i){var a=n.$gantt.getTask(e.source),o=n.$gantt.getTask(e.target),s=n.getItemTop(a.id),c=n.getItemHeight(a.id),l=n.getItemTop(o.id),u=n.getItemHeight(o.id);if(t.y>s+c&&t.y>l+u||t.y_end<l&&t.y_end<s)return!1;var d=100,f=n.posFromDate(a.start_date,n._getPositioningContext?n._getPositioningContext(e):null),p=n.posFromDate(a.end_date,n._getPositioningContext?n._getPositioningContext(e):null),m=n.posFromDate(o.start_date,n._getPositioningContext?n._getPositioningContext(e):null),h=n.posFromDate(o.end_date,n._getPositioningContext?n._getPositioningContext(e):null);if(f>p){var g=p;p=f,f=g}if(m>h){var g=h;h=m,m=g}return f+=-d,p+=d,m+=-d,h+=d,!(t.x>p&&t.x>h||t.x_end<f&&t.x_end<m)}function ci(e,t){if(e.view){var n=e.view;typeof n==`string`&&(n=t.$ui.getView(n)),n&&n.attachEvent&&n.attachEvent(`onScroll`,function(){!t.$services.getService(`state`).getState(`batchUpdate`).batch_update&&!n.$config.$skipSmartRenderOnScroll&&e.requestUpdate&&e.requestUpdate()})}}var li=function(e){var t=ni(e);return{getDataRender:function(t){return e.$services.getService(`layer:`+t)||null},createDataRender:function(n){var r=n.name,i=n.defaultContainer,a=n.defaultContainerSibling,o=t.createGroup(i,a,function(e,t){if(o.filters){for(var n=0;n<o.filters.length;n++)if(o.filters[n](e,t)===!1)return!1}else return!0},ci);return e.$services.setService(`layer:`+r,function(){return o}),e.attachEvent(`onGanttReady`,function(){o.addLayer()}),o},init:function(){var t=this.createDataRender({name:`task`,defaultContainer:function(){if(e.$task_data)return e.$task_data;if(e.$ui.getView(`timeline`))return e.$ui.getView(`timeline`).$task_data},defaultContainerSibling:function(){if(e.$task_links)return e.$task_links;if(e.$ui.getView(`timeline`))return e.$ui.getView(`timeline`).$task_links},filter:function(e){}},e),n=this.createDataRender({name:`link`,defaultContainer:function(){if(e.$task_data)return e.$task_data;if(e.$ui.getView(`timeline`))return e.$ui.getView(`timeline`).$task_data}},e);return{addTaskLayer:function(e){let n=Y;return typeof e==`function`?e={renderer:{render:e,getVisibleRange:n}}:e.renderer&&!e.renderer.getVisibleRange&&(e.renderer.getVisibleRange=n),e.view=`timeline`,t.addLayer(e)},_getTaskLayers:function(){return t.getLayers()},removeTaskLayer:function(e){t.removeLayer(e)},_clearTaskLayers:function(){t.clear()},addLinkLayer:function(e){let t=oi();return typeof e==`function`?e={renderer:{render:e,getVisibleRange:t}}:e.renderer&&!e.renderer.getVisibleRange&&(e.renderer.getVisibleRange=t),e.view=`timeline`,e&&e.renderer&&!e.renderer.getRectangle&&!e.renderer.isInViewPort&&(e.renderer.isInViewPort=si),n.addLayer(e)},_getLinkLayers:function(){return n.getLayers()},removeLinkLayer:function(e){n.removeLayer(e)},_clearLinkLayers:function(){n.clear()}}}}},ui=(function(){function e(e,t,n,r){e&&(this.$container=v(e),this.$parent=e),this.$config=L(t,{headerHeight:33}),this.$gantt=r,this.$domEvents=r._createDomEventScope(),this.$id=t.id||`c`+z(),this.$name=`cell`,this.$factory=n,this.$externalComponent=null,N(this)}return e.prototype.destructor=function(){this.$parent=this.$container=this.$view=null,this.$gantt.$services.getService(`mouseEvents`).detach(`click`,`gantt_header_arrow`,this._headerClickHandler),this.$domEvents.detachAll(),this.callEvent(`onDestroy`,[]),this.detachAllEvents()},e.prototype.cell=function(e){return null},e.prototype.scrollTo=function(e,t){var n=this.$view;this.$config.html&&(n=this.$view.firstChild),e*1==e&&(n.scrollLeft=e),t*1==t&&(n.scrollTop=t)},e.prototype.clear=function(){this.getNode().innerHTML=``,this.getNode().className=`gantt_layout_content`,this.getNode().style.padding=`0`},e.prototype.resize=function(e){if(this.$parent)return this.$parent.resize(e);e===!1&&(this.$preResize=!0);var t=this.$container,n=t.offsetWidth,r=t.offsetHeight,i=this.getSize();t===document.body&&(n=document.body.offsetWidth,r=document.body.offsetHeight),n<i.minWidth&&(n=i.minWidth),n>i.maxWidth&&(n=i.maxWidth),r<i.minHeight&&(r=i.minHeight),r>i.maxHeight&&(r=i.maxHeight),this.setSize(n,r),this.$preResize,this.$preResize=!1},e.prototype.hide=function(){this._hide(!0),this.resize()},e.prototype.show=function(e){this._hide(!1),e&&this.$parent&&this.$parent.show(),this.resize()},e.prototype._hide=function(e){if(e===!0&&this.$view.parentNode)this.$view.parentNode.removeChild(this.$view);else if(e===!1&&!this.$view.parentNode){var t=this.$parent.cellIndex(this.$id);this.$parent.moveView(this,t)}this.$config.hidden=e},e.prototype.$toHTML=function(e,t){e===void 0&&(e=``),t=[t||``,this.$config.css||``].join(` `);var n=this.$config,r=``;if(n.raw)e=typeof n.raw==`string`?n.raw:``;else{if(!e){let r=null;r=typeof n.html==`function`?n.html():n.html,this.$gantt.config.external_render&&this.$gantt.config.external_render.isElement(r)&&(this.$externalComponent=r,r=null),e=`<div class='gantt_layout_content' `+(t?` class='`+t+`' `:``)+` >`+(r||``)+`</div>`}n.header&&(r=`<div class='gantt_layout_header'>`+(n.canCollapse?`<div class='gantt_layout_header_arrow'></div>`:``)+`<div class='gantt_layout_header_content'>`+n.header+`</div></div>`)}return`<div class='gantt_layout_cell `+t+`' data-cell-id='`+this.$id+`'>`+r+e+`</div>`},e.prototype.$fill=function(e,t){this.$view=e,this.$parent=t,this.init()},e.prototype.getNode=function(){return this.$view.querySelector(`gantt_layout_cell`)||this.$view},e.prototype.init=function(){var e=this;this._headerClickHandler=function(t){w(t,`data-cell-id`)==e.$id&&e.toggle()},this.$gantt.$services.getService(`mouseEvents`).delegate(`click`,`gantt_header_arrow`,this._headerClickHandler),this.callEvent(`onReady`,[])},e.prototype.toggle=function(){this.$config.collapsed=!this.$config.collapsed,this.resize()},e.prototype.getSize=function(){var e={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||1e11,maxWidth:this.$config.maxWidth||1e11};if(this.$config.collapsed){var t=this.$config.mode===`x`;e[t?`width`:`height`]=e[t?`maxWidth`:`maxHeight`]=this.$config.headerHeight}return e},e.prototype.getContentSize=function(){var e=this.$lastSize.contentX;e!==e*1&&(e=this.$lastSize.width);var t=this.$lastSize.contentY;return t!==t*1&&(t=this.$lastSize.height),{width:e,height:t}},e.prototype._getBorderSizes=function(){var e={top:0,right:0,bottom:0,left:0,horizontal:0,vertical:0};return this._currentBorders&&(this._currentBorders[this._borders.left]&&(e.left=1,e.horizontal++),this._currentBorders[this._borders.right]&&(e.right=1,e.horizontal++),this._currentBorders[this._borders.top]&&(e.top=1,e.vertical++),this._currentBorders[this._borders.bottom]&&(e.bottom=1,e.vertical++)),e},e.prototype.setSize=function(e,t){this.$view.style.width=e+`px`,this.$view.style.height=t+`px`;var n=this._getBorderSizes(),r=t-n.vertical,i=e-n.horizontal;this.$lastSize={x:e,y:t,contentX:i,contentY:r},this.$config.header?this._sizeHeader():this._sizeContent()},e.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`},e.prototype._setBorders=function(e,t){t||=this;var n=t.$view;for(var r in this._borders)g(n,this._borders[r]);typeof e==`string`&&(e=[e]);for(var i={},r=0;r<e.length;r++)h(n,e[r]),i[e[r]]=!0;t._currentBorders=i},e.prototype._sizeContent=function(){var e=this.$view.childNodes[0];e&&e.className==`gantt_layout_content`&&(e.style.height=this.$lastSize.contentY+`px`)},e.prototype._sizeHeader=function(){var e=this.$lastSize;e.contentY-=this.$config.headerHeight;var t=this.$view.childNodes[0],n=this.$view.childNodes[1],r=this.$config.mode===`x`;if(this.$config.collapsed)if(n.style.display=`none`,r){t.className=`gantt_layout_header collapsed_x`,t.style.width=e.y+`px`;var i=Math.floor(e.y/2-e.x/2);t.style.transform=`rotate(90deg) translate(`+i+`px, `+i+`px)`,n.style.display=`none`}else t.className=`gantt_layout_header collapsed_y`;else r?t.className=`gantt_layout_header`:t.className=`gantt_layout_header vertical`,t.style.width=`auto`,t.style.transform=``,n.style.display=``,n.style.height=e.contentY+`px`;t.style.height=this.$config.headerHeight+`px`},e})();function X(e,t){for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var di=(function(e){X(t,e);function t(t,n,r){var i=e.apply(this,arguments)||this;return t&&(i.$root=!0),i._parseConfig(n),i.$name=`layout`,i}return t.prototype.destructor=function(){this.$container&&this.$view&&x(this.$view);for(var t=0;t<this.$cells.length;t++)this.$cells[t].destructor();this.$cells=[],e.prototype.destructor.call(this)},t.prototype._resizeScrollbars=function(e,t){var n=!1,r=[],i=[];let a=[];function o(e){e.$parent.show(),n=!0,r.push(e)}function s(e){e.$parent.hide(),n=!0,i.push(e)}for(var c,l=0;l<t.length;l++)c=t[l],e[c.$config.scroll]?s(c):c.shouldHide()?a.push(c):c.shouldShow()?o(c):c.isVisible()?r.push(c):i.push(c);for(var u={},l=0;l<r.length;l++)r[l].$config.group&&(u[r[l].$config.group]=!0);a.forEach(function(e){e.$config.group&&u[e.$config.group]||s(e)});for(var l=0;l<i.length;l++)if(c=i[l],c.$config.group&&u[c.$config.group]){o(c);for(var d=0;d<r.length;d++)if(r[d]==c){this.$gantt.$scrollbarRepaint=!0;break}}return n},t.prototype.getScrollbarsInfo=function(){let e=this.getCellsByType(`scroller`),t=[];return e.forEach(e=>{let n={},{visible:r,direction:i,size:a,scrollSize:o,position:s}=e.getScrollState(),c=e._getLinkedViews().map(e=>e.$config.id);n.id=e.$id,n.visible=r,n.boundViews=c,i===`x`?(n.x=a,n.x_inner=o,n.x_pos=s||0):(n.y=a,n.y_inner=o,n.y_pos=s||0),t.push(n)}),t},t.prototype._syncCellSizes=function(e,t){if(e){var n={};return this._eachChild(function(e){e.$config.group&&e.$name!=`scrollbar`&&e.$name!=`resizer`&&(n[e.$config.group]||(n[e.$config.group]=[]),n[e.$config.group].push(e))}),n[e]&&this._syncGroupSize(n[e],t),n[e]}},t.prototype._syncGroupSize=function(e,t){if(e.length)for(var n=e[0].$parent._xLayout?`width`:`height`,r=e[0].$parent.getNextSibling(e[0].$id)?1:-1,i=t.value,a=t.isGravity,o=0;o<e.length;o++){var s=e[o].getSize(),c=r>0?e[o].$parent.getNextSibling(e[o].$id):e[o].$parent.getPrevSibling(e[o].$id);c.$name==`resizer`&&(c=r>0?c.$parent.getNextSibling(c.$id):c.$parent.getPrevSibling(c.$id));var l=c.getSize();if(a)e[o].$config.gravity=i;else if(c[n]){var u=s.gravity+l.gravity,d=s[n]+l[n],f=u/d;e[o].$config.gravity=f*i,c.$config[n]=d-i,c.$config.gravity=u-f*i}else e[o].$config[n]=i;var p=this.$gantt.$ui.getView(`grid`);p&&e[o].$content===p&&!p.$config.scrollable&&!a&&(this.$gantt.config.grid_width=i)}},t.prototype.resize=function(t){var n=!1;if(this.$root&&!this._resizeInProgress&&(this.callEvent(`onBeforeResize`,[]),n=!0,this._resizeInProgress=!0),e.prototype.resize.call(this,!0),e.prototype.resize.call(this,!1),n){var r=[];r=r.concat(this.getCellsByType(`viewCell`)),r=r.concat(this.getCellsByType(`viewLayout`)),r=r.concat(this.getCellsByType(`hostCell`));for(var i=this.getCellsByType(`scroller`),a=0;a<r.length;a++)r[a].$config.hidden||r[a].setContentSize();var o=this._getAutosizeMode(this.$config.autosize),s=this._resizeScrollbars(o,i);if(this.$config.autosize&&(this.autosize(this.$config.autosize),r.forEach(function(e){let t=e.$parent,n=t.getContentSize(o);o.x&&(t.$config.$originalWidthStored||(t.$config.$originalWidthStored=!0,t.$config.$originalWidth=t.$config.width),t.$config.width=n.width),o.y&&(t.$config.$originalHeightStored||(t.$config.$originalHeightStored=!0,t.$config.$originalHeight=t.$config.height),t.$config.height=n.height)}),s=!0),s){this.resize();for(var a=0;a<r.length;a++)r[a].$config.hidden||r[a].setContentSize()}this.callEvent(`onResize`,[])}n&&(this._resizeInProgress=!1)},t.prototype._eachChild=function(e,t){if(t||=this,e(t),t.$cells)for(var n=0;n<t.$cells.length;n++)this._eachChild(e,t.$cells[n])},t.prototype.isChild=function(e){var t=!1;return this._eachChild(function(n){(n===e||n.$content===e)&&(t=!0)}),t},t.prototype.getCellsByType=function(e){var n=[];if(e===this.$name&&n.push(this),this.$content&&this.$content.$name==e&&n.push(this.$content),this.$cells)for(var r=0;r<this.$cells.length;r++){var i=t.prototype.getCellsByType.call(this.$cells[r],e);i.length&&n.push.apply(n,i)}return n},t.prototype.getNextSibling=function(e){var t=this.cellIndex(e);return t>=0&&this.$cells[t+1]?this.$cells[t+1]:null},t.prototype.getPrevSibling=function(e){var t=this.cellIndex(e);return t>=0&&this.$cells[t-1]?this.$cells[t-1]:null},t.prototype.cell=function(e){for(var t=0;t<this.$cells.length;t++){var n=this.$cells[t];if(n.$id===e)return n;var r=n.cell(e);if(r)return r}},t.prototype.cellIndex=function(e){for(var t=0;t<this.$cells.length;t++)if(this.$cells[t].$id===e)return t;return-1},t.prototype.moveView=function(e,t){if(this.$cells[t]!==e)return window.alert(`Not implemented`);t+=+!!this.$config.header;var n=this.$view;t>=n.childNodes.length?n.appendChild(e.$view):n.insertBefore(e.$view,n.childNodes[t])},t.prototype._parseConfig=function(e){this.$cells=[],this._xLayout=!e.rows;for(var t=e.rows||e.cols||e.views,n=0;n<t.length;n++){var r=t[n];r.mode=this._xLayout?`x`:`y`;var i=this.$factory.initUI(r,this);i?(i.$parent=this,this.$cells.push(i)):(t.splice(n,1),n--)}},t.prototype.getCells=function(){return this.$cells},t.prototype.render=function(){var e=b(this.$container,this.$toHTML());this.$fill(e,null);let t=this.$gantt;this._eachChild(e=>{e.$externalComponent&&=(t.config.external_render.renderElement(e.$externalComponent,e.$view.querySelector(`.gantt_layout_content`)),null)}),this.callEvent(`onReady`,[]),this.resize(),this.render=this.resize},t.prototype.$fill=function(e,t){this.$view=e,this.$parent=t;for(var n=S(e,`gantt_layout_cell`),r=n.length-1;r>=0;r--){var i=this.$cells[r];i.$fill(n[r],this),i.$config.hidden&&i.$view.parentNode.removeChild(i.$view)}},t.prototype.$toHTML=function(){for(var t=this._xLayout?`x`:`y`,n=[],r=0;r<this.$cells.length;r++)n.push(this.$cells[r].$toHTML());return e.prototype.$toHTML.call(this,n.join(``),(this.$root?`gantt_layout_root `:``)+`gantt_layout gantt_layout_`+t)},t.prototype.getContentSize=function(e){for(var t=0,n=0,r,i,a,o=0;o<this.$cells.length;o++)i=this.$cells[o],!i.$config.hidden&&(r=i.getContentSize(e),i.$config.view===`scrollbar`&&e[i.$config.scroll]&&(r.height=0,r.width=0),i.$config.resizer&&(this._xLayout?r.height=0:r.width=0),a=i._getBorderSizes(),this._xLayout?(t+=r.width+a.horizontal,n=Math.max(n,r.height+a.vertical)):(t=Math.max(t,r.width+a.horizontal),n+=r.height+a.vertical));return a=this._getBorderSizes(),t+=a.horizontal,n+=a.vertical,{width:t,height:n}},t.prototype._cleanElSize=function(e){return(e||``).toString().replace(`px`,``)*1||0},t.prototype._getBoxStyles=function(e){var t=null;t=window.getComputedStyle?window.getComputedStyle(e,null):{width:e.clientWidth,height:e.clientHeight};var n=[`width`,`height`,`paddingTop`,`paddingBottom`,`paddingLeft`,`paddingRight`,`borderLeftWidth`,`borderRightWidth`,`borderTopWidth`,`borderBottomWidth`],r={boxSizing:t.boxSizing==`border-box`};t.MozBoxSizing&&(r.boxSizing=t.MozBoxSizing==`border-box`);for(var i=0;i<n.length;i++)r[n[i]]=t[n[i]]?this._cleanElSize(t[n[i]]):0;var a={horPaddings:r.paddingLeft+r.paddingRight+r.borderLeftWidth+r.borderRightWidth,vertPaddings:r.paddingTop+r.paddingBottom+r.borderTopWidth+r.borderBottomWidth,borderBox:r.boxSizing,innerWidth:r.width,innerHeight:r.height,outerWidth:r.width,outerHeight:r.height};return a.borderBox?(a.innerWidth-=a.horPaddings,a.innerHeight-=a.vertPaddings):(a.outerWidth+=a.horPaddings,a.outerHeight+=a.vertPaddings),a},t.prototype._getAutosizeMode=function(e){var t={x:!1,y:!1};return e===`xy`?t.x=t.y=!0:e===`y`||e===!0?t.y=!0:e===`x`&&(t.x=!0),t},t.prototype.autosize=function(e){var t=this._getAutosizeMode(e),n=this._getBoxStyles(this.$container),r=this.getContentSize(e),i=this.$container;t.x&&(n.borderBox&&(r.width+=n.horPaddings),i.style.width=r.width+`px`),t.y&&(n.borderBox&&(r.height+=n.vertPaddings),i.style.height=r.height+`px`)},t.prototype.getSize=function(){this._sizes=[];for(var t=0,n=0,r=1e11,i=0,a=1e11,o=0,s=0;s<this.$cells.length;s++){var c=this._sizes[s]=this.$cells[s].getSize();this.$cells[s].$config.hidden||(this._xLayout?(!c.width&&c.minWidth?t+=c.minWidth:t+=c.width,r+=c.maxWidth,n+=c.minWidth,i=Math.max(i,c.height),a=Math.min(a,c.maxHeight),o=Math.max(o,c.minHeight)):(!c.height&&c.minHeight?i+=c.minHeight:i+=c.height,a+=c.maxHeight,o+=c.minHeight,t=Math.max(t,c.width),r=Math.min(r,c.maxWidth),n=Math.max(n,c.minWidth)))}var l=e.prototype.getSize.call(this);return l.maxWidth>=1e5&&(l.maxWidth=r),l.maxHeight>=1e5&&(l.maxHeight=a),l.minWidth=l.minWidth===l.minWidth?l.minWidth:0,l.minHeight=l.minHeight===l.minHeight?l.minHeight:0,this._xLayout?(l.minWidth+=this.$config.margin*this.$cells.length||0,l.minWidth+=this.$config.padding*2||0,l.minHeight+=this.$config.padding*2||0):(l.minHeight+=this.$config.margin*this.$cells.length||0,l.minHeight+=this.$config.padding*2||0),l},t.prototype._calcFreeSpace=function(e,t,n){var r=n?t.minWidth:t.minHeight,i=t.maxWidth,a=e;return a?(a>i&&(a=i),a<r&&(a=r),this._free-=a):(a=Math.floor(this._free/this._gravity*t.gravity),a>i&&(a=i,this._free-=a,this._gravity-=t.gravity),a<r&&(a=r,this._free-=a,this._gravity-=t.gravity)),a},t.prototype._calcSize=function(e,t,n){var r=e,i=n?t.minWidth:t.minHeight,a=n?t.maxWidth:t.maxHeight;return r||=Math.floor(this._free/this._gravity*t.gravity),r>a&&(r=a),r<i&&(r=i),r},t.prototype._configureBorders=function(){this.$root&&this._setBorders([this._borders.left,this._borders.top,this._borders.right,this._borders.bottom],this);for(var e=this._xLayout?this._borders.right:this._borders.bottom,t=this.$cells,n=t.length-1,r=n;r>=0;r--)if(!t[r].$config.hidden){n=r;break}for(var r=0;r<t.length;r++)if(!t[r].$config.hidden){var i=r>=n,a=``;!i&&t[r+1]&&t[r+1].$config.view==`scrollbar`&&(this._xLayout?i=!0:a=`gantt_layout_cell_border_transparent`),this._setBorders(i?[]:[e,a],t[r])}},t.prototype._updateCellVisibility=function(){for(var e=this._visibleCells||{},t=!this._visibleCells,n={},r=null,i=[],a=0;a<this._sizes.length;a++)r=this.$cells[a],r.$config.hide_empty&&i.push(r),!t&&r.$config.hidden&&e[r.$id]?r._hide(!0):!r.$config.hidden&&!e[r.$id]&&r._hide(!1),r.$config.hidden||(n[r.$id]=!0);this._visibleCells=n;for(var a=0;a<i.length;a++){var r=i[a],o=r.$cells,s=!0;o.forEach(function(e){!e.$config.hidden&&!e.$config.resizer&&(s=!1)}),r.$config.hidden=s}},t.prototype.setSize=function(t,n){this._configureBorders(),e.prototype.setSize.call(this,t,n),n=this.$lastSize.contentY,t=this.$lastSize.contentX;var r=this.$config.padding||0;this.$view.style.padding=r+`px`,this._gravity=0,this._free=this._xLayout?t:n,this._free-=r*2;var i,a;this._updateCellVisibility();for(var o=0;o<this._sizes.length;o++)if(i=this.$cells[o],!i.$config.hidden){var s=this.$config.margin||0;i.$name==`resizer`&&!s&&(s=-1);var c=i.$view,l=this._xLayout?`marginRight`:`marginBottom`;o!==this.$cells.length-1&&(c.style[l]=s+`px`,this._free-=s),a=this._sizes[o],this._xLayout?a.width||(this._gravity+=a.gravity):a.height||(this._gravity+=a.gravity)}for(var o=0;o<this._sizes.length;o++)if(i=this.$cells[o],!i.$config.hidden){a=this._sizes[o];var u=a.width,d=a.height;this._xLayout?this._calcFreeSpace(u,a,!0):this._calcFreeSpace(d,a,!1)}for(var o=0;o<this.$cells.length;o++)if(i=this.$cells[o],!i.$config.hidden){a=this._sizes[o];var f=void 0,p=void 0;this._xLayout?(f=this._calcSize(a.width,a,!0),p=n-r*2):(f=t-r*2,p=this._calcSize(a.height,a,!1)),i.setSize(f,p)}},t})(ui),fi=(function(e){X(t,e);function t(t,n,r){for(var i=e.apply(this,arguments)||this,a=0;a<i.$cells.length;a++)i.$cells[a].$config.hidden=a!==0;return i.$cell=i.$cells[0],i.$name=`viewLayout`,i}return t.prototype.cell=function(t){var n=e.prototype.cell.call(this,t);return n.$view||this.$fill(null,this),n},t.prototype.moveView=function(e){var t=this.$view;this.$cell&&(this.$cell.$config.hidden=!0,t.removeChild(this.$cell.$view)),this.$cell=e,t.appendChild(e.$view)},t.prototype.setSize=function(e,t){ui.prototype.setSize.call(this,e,t)},t.prototype.setContentSize=function(){var e=this.$lastSize;this.$cell.setSize(e.contentX,e.contentY)},t.prototype.getSize=function(){var t=e.prototype.getSize.call(this);if(this.$cell){var n=this.$cell.getSize();if(this.$config.byMaxSize)for(var r=0;r<this.$cells.length;r++){var i=this.$cells[r].getSize();for(var a in n)n[a]=Math.max(n[a],i[a])}for(var o in t)t[o]=t[o]||n[o];t.gravity=Math.max(t.gravity,n.gravity)}return t},t})(di),pi=(function(e){X(t,e);function t(t,n,r){var i=e.apply(this,arguments)||this;if(n.view){n.id&&(this.$id=z());var a=I(n);if(delete a.config,delete a.templates,this.$content=this.$factory.createView(n.view,this,a,this),!this.$content)return!1}return i.$name=`viewCell`,i}return t.prototype.destructor=function(){this.clear(),e.prototype.destructor.call(this)},t.prototype.clear=function(){if(this.$initialized=!1,this.$content){var t=this.$content.unload||this.$content.destructor;t&&t.call(this.$content)}e.prototype.clear.call(this)},t.prototype.scrollTo=function(t,n){this.$content&&this.$content.scrollTo?this.$content.scrollTo(t,n):e.prototype.scrollTo.call(this,t,n)},t.prototype._setContentSize=function(e,t){var n=this._getBorderSizes();if(typeof e==`number`){var r=e+n.horizontal;this.$config.width=r}if(typeof t==`number`){var i=t+n.vertical;this.$config.height=i}},t.prototype.setSize=function(t,n){if(e.prototype.setSize.call(this,t,n),!this.$preResize&&this.$content&&!this.$initialized){this.$initialized=!0;var r=this.$view.childNodes[0],i=this.$view.childNodes[1];i||=r,this.$content.init(i)}},t.prototype.setContentSize=function(){!this.$preResize&&this.$content&&this.$initialized&&this.$content.setSize(this.$lastSize.contentX,this.$lastSize.contentY)},t.prototype.getContentSize=function(){var t=e.prototype.getContentSize.call(this);if(this.$content&&this.$initialized){var n=this.$content.getSize();t.width=n.contentX===void 0?n.width:n.contentX,t.height=n.contentY===void 0?n.height:n.contentY}var r=this._getBorderSizes();return t.width+=r.horizontal,t.height+=r.vertical,t},t})(ui),mi=(function(e){X(t,e);function t(t,n,r){var i=e.apply(this,arguments)||this,a,o;function s(e){var t=e.pageX,n=e.pageY;return e.touches&&(t=e.touches[0].pageX,n=e.touches[0].pageY),{x:t,y:n}}return i._moveHandler=function(e){i._moveResizer(i._resizer,s(e).x,s(e).y)},i._upHandler=function(e){var t=i._getNewSizes();i.callEvent(`onResizeEnd`,[a,o,t?t.back:0,t?t.front:0])!==!1&&i._setSizes(),i._setBackground(!1),i._clearResizer(),i._clearListeneres(),e.touches&&(i.$gantt._prevent_touch_scroll=!1)},i._clearListeneres=function(){this.$domEvents.detach(document,`mouseup`,i._upHandler),this.$domEvents.detach(document,`mousemove`,i._moveHandler),this.$domEvents.detach(document,`mousemove`,i._startOnMove),this.$domEvents.detach(document,`mouseup`,i._cancelDND),this.$domEvents.detach(document,`touchend`,i._upHandler),this.$domEvents.detach(document,`touchmove`,i._startOnMove),this.$domEvents.detach(document,`touchstart`,i._downHandler)},i._callStartDNDEvent=function(){if(this._xMode?(a=this._behind.$config.width||this._behind.$view.offsetWidth,o=this._front.$config.width||this._front.$view.offsetWidth):(a=this._behind.$config.height||this._behind.$view.offsetHeight,o=this._front.$config.height||this._front.$view.offsetHeight),i.callEvent(`onResizeStart`,[a,o])===!1)return!1},i._startDND=function(e){if(this._callStartDNDEvent()!==!1){var t=!1;this._eachGroupItem(function(e){e._getSiblings(),e._callStartDNDEvent()===!1&&(t=!0)}),!t&&(i._moveHandler(e),i.$domEvents.attach(document,`mousemove`,i._moveHandler),i.$domEvents.attach(document,`mouseup`,i._upHandler))}},i._cancelDND=function(){i._setBackground(!1),i._clearResizer(),i._clearListeneres()},i._startOnMove=function(e){e.touches&&(i.$gantt._touch_drag=!0,i.$gantt._prevent_touch_scroll=!0),i._isPosChanged(e)&&(i._clearListeneres(),i._startDND(e))},i._downHandler=function(e){i._getSiblings(),!(i._behind.$config.collapsed||i._front.$config.collapsed)&&(i._setBackground(!0),i._resizer=i._setResizer(),i._positions={x:s(e).x,y:s(e).y,timestamp:Date.now()},i.$domEvents.attach(document,`mousemove`,i._startOnMove),i.$domEvents.attach(document,`mouseup`,i._cancelDND))},i.$name=`resizer`,i}return t.prototype.init=function(){var t=this;e.prototype.init.call(this),this._xMode=this.$config.mode===`x`,this._xMode&&!this.$config.width?this.$config.width=this.$config.minWidth=1:!this._xMode&&!this.$config.height&&(this.$config.height=this.$config.minHeight=1),this.$config.margin=-1,this.$domEvents.attach(this.$view,`mousedown`,t._downHandler),this.$domEvents.attach(this.$view,`touchstart`,t._downHandler),this.$domEvents.attach(this.$view,`touchmove`,t._startOnMove),this.$domEvents.attach(this.$view,`touchend`,t._upHandler)},t.prototype.$toHTML=function(){var e=this.$config.mode,t=this.$config.css||``;return`<div class='gantt_layout_cell gantt_resizer gantt_resizer_`+e+`'><div class='gantt_layout_content gantt_resizer_`+e+(t?` `+t:``)+`'></div></div>`},t.prototype._clearResizer=function(){this._resizer&&=(this._resizer.parentNode&&this._resizer.parentNode.removeChild(this._resizer),null)},t.prototype._isPosChanged=function(e){return this._positions?Math.abs(this._positions.x-e.pageX)>3||Math.abs(this._positions.y-e.pageY)>3||Date.now()-this._positions.timestamp>300:!1},t.prototype._getSiblings=function(){var e=this.$parent.getCells();this.$config.prev&&(this._behind=this.$factory.getView(this.$config.prev),this._behind instanceof ui||(this._behind=this._behind.$parent)),this.$config.next&&(this._front=this.$factory.getView(this.$config.next),this._front instanceof ui||(this._front=this._behind.$parent));for(var t=0;t<e.length;t++)this===e[t]&&(this._behind||=e[t-1],this._front||=e[t+1])},t.prototype._setBackground=function(e){var t=`gantt_resizing`;if(!e){g(this._behind.$view,t),g(this._front.$view,t),document.body.classList.remove(`gantt_noselect`);return}h(this._behind.$view,t),h(this._front.$view,t),document.body.classList.add(`gantt_noselect`)},t.prototype._setResizer=function(){var e=document.createElement(`div`);return e.className=`gantt_resizer_stick`,this.$view.appendChild(e),this.$view.style.overflow=`visible`,e.style.height=this.$view.style.height,e},t.prototype._getDirection=function(e,t){var n;return n=this._xMode?e-this._positions.x:t-this._positions.y,n?n<0?-1:1:0},t.prototype._getResizePosition=function(e,t){var n,r,i,a,o;this._xMode?(n=e-this._positions.x,r=this._behind.$config.width||this._behind.$view.offsetWidth,a=this._front.$config.width||this._front.$view.offsetWidth,i=this._behind.$config.minWidth,o=this._front.$config.minWidth):(n=t-this._positions.y,r=this._behind.$config.height||this._behind.$view.offsetHeight,a=this._front.$config.height||this._front.$view.offsetHeight,i=this._front.$config.minHeight,o=this._front.$config.minHeight);var s=this._getDirection(e,t),c,l;if(s===-1){if(l=a-n,c=r-Math.abs(n),a-n>this._front.$config.maxWidth)return;Math.abs(n)>=r&&(n=-Math.abs(r-2)),r-Math.abs(n)<=i&&(n=-Math.abs(r-i))}else l=a-Math.abs(n),c=r+n,r+n>this._behind.$config.maxWidth&&(n=this._behind.$config.maxWidth-r),Math.abs(n)>=a&&(n=a-2),a-Math.abs(n)<=o&&(n=Math.abs(a-o));return s===-1?(l=a-n,c=r-Math.abs(n)):(l=a-Math.abs(n),c=r+n),{size:n,newFrontSide:l,newBehindSide:c}},t.prototype._getGroupName=function(){return this._getSiblings(),this._front.$config.group||this._behind.$config.group},t.prototype._eachGroupItem=function(e,t){for(var n=this.$factory.getView(`main`),r=this._getGroupName(),i=n.getCellsByType(`resizer`),a=0;a<i.length;a++)i[a]._getGroupName()==r&&i[a]!=this&&e.call(t||this,i[a])},t.prototype._getGroupResizePosition=function(e,t){var n=this._getResizePosition(e,t);if(!this._getGroupName())return n;var r=[n];this._eachGroupItem(function(n){n._getSiblings();var i=I(this._positions);this._xMode?i.x+=n._behind.$config.width-this._behind.$config.width:i.y+=n._behind.$config.height-this._behind.$config.height,n._positions=i,r.push(n._getResizePosition(e,t))});for(var i,a=0;a<r.length;a++){if(!r[a])return;(i===void 0||r[a].newBehindSide>i.newBehindSide)&&(i=r[a])}return i},t.prototype._moveResizer=function(e,t,n){if(t!==0){var r=this._getGroupResizePosition(t,n);r&&Math.abs(r.size)!==1&&(this._xMode?(e.style.left=r.size+`px`,this._positions.nextX=r.size||0):(e.style.top=r.size+`px`,this._positions.nextY=r.size||0),this.callEvent(`onResize`,[r.newBehindSide,r.newFrontSide]))}},t.prototype._setGravity=function(e){var t=this._xMode?`offsetWidth`:`offsetHeight`,n=this._xMode?this._positions.nextX:this._positions.nextY,r=this._front.$view[t],i=this._behind.$view[t],a=this._front.getSize().gravity,o=this._behind.getSize().gravity,s=(r-n)/r*a,c=(i+n)/i*o;e!==`front`&&(this._front.$config.gravity=s),e!==`behind`&&(this._behind.$config.gravity=c)},t.prototype._getNewSizes=function(){var e,t,n;return this._xMode?(e=this._behind.$config.width,t=this._front.$config.width,n=this._positions.nextX):(e=this._behind.$config.height,t=this._front.$config.height,n=this._positions.nextY),!t&&!e?null:{front:t?t-n||1:0,back:e?e+n||1:0}},t.prototype._assignNewSizes=function(e){this._getSiblings();var t=this._xMode?`width`:`height`;e?(e.front?this._front.$config[t]=e.front:this._setGravity(`behind`),e.back?this._behind.$config[t]=e.back:this._setGravity(`front`)):this._setGravity()},t.prototype._setSizes=function(){this._resizer&&this.$view.removeChild(this._resizer);var e=this._getNewSizes();if(this._positions.nextX||this._positions.nextY){this._assignNewSizes(e);var t=this._xMode?`width`:`height`,n;(!e||!e.front)&&this._front.$config.group&&(n={value:this._front.$config.gravity,isGravity:!0},this.$gantt.$layout._syncCellSizes(this._front.$config.group,n)),(!e||!e.back)&&this._behind.$config.group&&(n={value:this._behind.$config.gravity,isGravity:!0},this.$gantt.$layout._syncCellSizes(this._behind.$config.group,n)),e&&(e.front?this._front.$config.group&&(n={value:this._front.$config[t],isGravity:!1},this.$gantt.$layout._syncCellSizes(this._front.$config.group,n)):e.back&&this._behind.$config.group&&(n={value:this._behind.$config[t],isGravity:!1},this.$gantt.$layout._syncCellSizes(this._behind.$config.group,n))),this._getGroupName()?this.$factory.getView(`main`).resize():this.$parent.resize()}},t})(ui),hi=(function(e){var t=[`altKey`,`shiftKey`,`metaKey`];X(n,e);function n(t,n,r,i){var a=e.apply(this,arguments)||this;this.$config=L(n,{scroll:`x`}),a._scrollHorizontalHandler=B(a._scrollHorizontalHandler,a),a._scrollVerticalHandler=B(a._scrollVerticalHandler,a),a._outerScrollVerticalHandler=B(a._outerScrollVerticalHandler,a),a._outerScrollHorizontalHandler=B(a._outerScrollHorizontalHandler,a),a._mouseWheelHandler=B(a._mouseWheelHandler,a),this.$config.hidden=!0;var o=i.config.scroll_size;return i.env.isIE&&(o+=1),this._isHorizontal()?(a.$config.height=o,a.$parent.$config.height=o):(a.$config.width=o,a.$parent.$config.width=o),this.$config.scrollPosition=0,a.$name=`scroller`,a}n.prototype.init=function(e){e.innerHTML=this.$toHTML(),this.$view=e.firstChild,this.$view||this.init(),this._isVertical()?this._initVertical():this._initHorizontal(),this._initMouseWheel(),this._initLinkedViews()},n.prototype.$toHTML=function(){return`<div class='gantt_layout_cell `+(this._isHorizontal()?`gantt_hor_scroll`:`gantt_ver_scroll`)+`'><div style='`+(this._isHorizontal()?`width:2000px`:`height:2000px`)+`'></div></div>`},n.prototype._getRootParent=function(){for(var e=this.$parent;e&&e.$parent;)e=e.$parent;if(e)return e};function r(e,t){if(t.push(e),e.$cells)for(var n=0;n<e.$cells.length;n++)r(e.$cells[n],t)}return n.prototype._eachView=function(){var e=[];return r(this._getRootParent(),e),e},n.prototype._getLinkedViews=function(){for(var e=this._eachView(),t=[],n=0;n<e.length;n++)e[n].$config&&(this._isVertical()&&e[n].$config.scrollY==this.$id||this._isHorizontal()&&e[n].$config.scrollX==this.$id)&&t.push(e[n]);return t},n.prototype._initHorizontal=function(){this.$scroll_hor=this.$view,this.$domEvents.attach(this.$view,`scroll`,this._scrollHorizontalHandler)},n.prototype._initLinkedViews=function(){for(var e=this._getLinkedViews(),t=this._isVertical()?`gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical`:`gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal`,n=0;n<e.length;n++)h(e[n].$view||e[n].getNode(),t)},n.prototype._initVertical=function(){this.$scroll_ver=this.$view,this.$domEvents.attach(this.$view,`scroll`,this._scrollVerticalHandler)},n.prototype._updateLinkedViews=function(){},n.prototype._initMouseWheel=function(){U.isFF?this.$domEvents.attach(this._getRootParent().$view,`wheel`,this._mouseWheelHandler,{passive:!1}):this.$domEvents.attach(this._getRootParent().$view,`mousewheel`,this._mouseWheelHandler,{passive:!1})},n.prototype.scrollHorizontally=function(e){if(!this._scrolling){this._scrolling=!0,this.$scroll_hor.scrollLeft=e,this.$config.codeScrollLeft=e,e=this.$scroll_hor.scrollLeft;for(var t=this._getLinkedViews(),n=0;n<t.length;n++)t[n].scrollTo&&t[n].scrollTo(e,void 0);var r=this.$config.scrollPosition;this.$config.scrollPosition=e,this.callEvent(`onScroll`,[r,e,this.$config.scroll]),this._scrolling=!1}},n.prototype.scrollVertically=function(e){if(!this._scrolling){this._scrolling=!0,this.$scroll_ver.scrollTop=e,e=this.$scroll_ver.scrollTop;for(var t=this._getLinkedViews(),n=0;n<t.length;n++)t[n].scrollTo&&t[n].scrollTo(void 0,e);var r=this.$config.scrollPosition;this.$config.scrollPosition=e,this.callEvent(`onScroll`,[r,e,this.$config.scroll]),this._scrolling=!1}},n.prototype._isVertical=function(){return this.$config.scroll==`y`},n.prototype._isHorizontal=function(){return this.$config.scroll==`x`},n.prototype._scrollHorizontalHandler=function(e){if(!(this._isVertical()||this._scrolling)){if(new Date-(this._wheel_time||0)<100)return!0;var t=this.$scroll_hor.scrollLeft;this.scrollHorizontally(t),this._oldLeft=this.$scroll_hor.scrollLeft}},n.prototype._outerScrollHorizontalHandler=function(e){this._isVertical()},n.prototype.show=function(){this.$parent.show()},n.prototype.hide=function(){this.$parent.hide()},n.prototype._getScrollSize=function(){for(var e=0,t=0,n=this._isHorizontal(),r=this._getLinkedViews(),i,a=n?`scrollWidth`:`scrollHeight`,o=n?`contentX`:`contentY`,s=n?`x`:`y`,c=this._getScrollOffset(),l=0;l<r.length;l++)if(i=r[l],i&&i.$content&&i.$content.getSize&&!i.$config.hidden){var u=i.$content.getSize(),d;if(d=u.hasOwnProperty(a)?u[a]:u[o],c)u[o]>u[s]&&u[o]>e&&d>u[s]-c+2&&(e=d+(n?0:2),t=u[s]);else{var f=Math.max(u[o]-d,0),p=Math.max(u[s]-f,0);d+=f,d>p&&d>e&&(e=d,t=u[s])}}return{outerScroll:t,innerScroll:e}},n.prototype.scroll=function(e){this._isHorizontal()?this.scrollHorizontally(e):this.scrollVertically(e)},n.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}},n.prototype.setSize=function(t,n){e.prototype.setSize.apply(this,arguments);var r=this._getScrollSize(),i=(this._isVertical()?n:t)-this._getScrollOffset()+ +!!this._isHorizontal();r.innerScroll&&i>r.outerScroll&&(r.innerScroll+=i-r.outerScroll),this.$config.scrollSize=r.innerScroll,this.$config.width=t,this.$config.height=n,this._setScrollSize(r.innerScroll)},n.prototype.isVisible=function(){return!!(this.$parent&&this.$parent.$view.parentNode)},n.prototype.shouldShow=function(){var e=this._getScrollSize();return!e.innerScroll&&this.$parent&&this.$parent.$view.parentNode?!1:!!(e.innerScroll&&!(this.$parent&&this.$parent.$view.parentNode))},n.prototype.shouldHide=function(){return!!(!this._getScrollSize().innerScroll&&this.$parent&&this.$parent.$view.parentNode)},n.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},n.prototype._getScaleOffset=function(e){var t=0;return e&&(e.$config.view==`timeline`||e.$config.view==`grid`)&&(t=e.$content.$getConfig().scale_height),t},n.prototype._getScrollOffset=function(){var e=0;if(this._isVertical()){var t=this.$parent.$parent;e=Math.max(this._getScaleOffset(t.getPrevSibling(this.$parent.$id)),this._getScaleOffset(t.getNextSibling(this.$parent.$id)))}else for(var n=this._getLinkedViews(),r=0;r<n.length;r++){var i=n[r].$parent.$cells,a=i[i.length-1];if(a&&a.$config.view==`scrollbar`&&a.$config.hidden===!1){e=a.$config.width;break}}return e||0},n.prototype._setScrollSize=function(e){var t=this._isHorizontal()?`width`:`height`,n=this._isHorizontal()?this.$scroll_hor:this.$scroll_ver,r=this._getScrollOffset(),i=n.firstChild;r?this._isVertical()?(this.$config.outerSize=this.$config.height-r+3,n.style.height=this.$config.outerSize+`px`,n.style.top=r-1+`px`,h(n,this.$parent._borders.top),h(n.parentNode,`gantt_task_vscroll`)):(this.$config.outerSize=this.$config.width-r+1,n.style.width=this.$config.outerSize+`px`):(n.style.top=`auto`,g(n,this.$parent._borders.top),g(n.parentNode,`gantt_task_vscroll`),this.$config.outerSize=this.$config.height),i.style[t]=e+`px`},n.prototype._scrollVerticalHandler=function(e){if(!(this._scrollHorizontalHandler()||this._scrolling)){var t=this.$scroll_ver.scrollTop;t!=this._oldTop&&(this.scrollVertically(t),this._oldTop=this.$scroll_ver.scrollTop)}},n.prototype._outerScrollVerticalHandler=function(e){this._scrollHorizontalHandler()},n.prototype._checkWheelTarget=function(e){for(var t=this._getLinkedViews().concat(this),n=0;n<t.length;n++){var r=t[n].$view;if(k(e,r))return!0}return!1},n.prototype._mouseWheelHandler=function(e){var n=e.target||e.srcElement;if(this._checkWheelTarget(n)){this._wheel_time=new Date;var r={},i={x:1,y:1},a=this.$gantt.config.wheel_scroll_sensitivity;typeof a==`number`&&a?i={x:a,y:a}:{}.toString.apply(a)==`[object Object]`&&(i={x:a.x,y:a.y});var o=U.isFF,s=o?e.deltaX:e.wheelDeltaX,c=o?e.deltaY:e.wheelDelta,l=-20;if(o){let t=parseInt(navigator.userAgent.split(`Firefox/`)[1]);l=t<=87?e.deltaMode===0?-10:-40:t<=90?-3:t<=96?-1.5:-1}var u=o?s*l*i.x:s*2*i.x,d=o?c*l*i.y:c*i.y,f=this.$gantt.config.horizontal_scroll_key;if(f!==!1&&t.indexOf(f)>=0&&e[f]&&!(e.deltaX||e.wheelDeltaX)&&(u=d*2,d=0),u&&Math.abs(u)>Math.abs(d)){if(this._isVertical())return;if(r.x||!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var p=u/-40,m=this._oldLeft,h=m+p*30;if(this.scrollHorizontally(h),this.$scroll_hor.scrollLeft=h,m==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(r.y||!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;var p=d/-40;typeof d>`u`&&(p=e.detail);var g=this._oldTop,_=this.$scroll_ver.scrollTop+p*30;if(this.scrollVertically(_),this.$scroll_ver.scrollTop=_,g==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,!1}},n})(ui);function gi(e){var t=-1,n=-1;return{resetCache:function(){t=-1,n=-1},_getRowHeight:function(){return t===-1&&(t=e.$getConfig().row_height),t},_refreshState:function(){this.resetCache(),n=!0;var t=e.$config.rowStore;if(t)for(var r=this._getRowHeight(),i=0;i<t.fullOrder.length;i++){var a=t.getItem(t.fullOrder[i]);if(a&&a.row_height&&a.row_height!==r){n=!1;break}}},canUseSimpleCalculation:function(){return n===-1&&this._refreshState(),n},getRowTop:function(t){return e.$config.rowStore?t*this._getRowHeight():0},getItemHeight:function(e){return this._getRowHeight()},getTotalHeight:function(){return e.$config.rowStore?e.$config.rowStore.countVisible()*this._getRowHeight():0},getItemIndexByTopPosition:function(t){return e.$config.rowStore?Math.floor(t/this._getRowHeight()):0}}}function _i(e){var t={},n={},r=null,i=-1,a=null,o=gi(e);return{_resetTopPositionHeight:function(){t={},n={},o.resetCache()},_resetHeight:function(){var e=this.$config.rowStore,t=this.getCacheStateTotalHeight(e);a?this.shouldClearHeightCache(a,t)&&(a=t,r=null):a=t,i=-1,o.resetCache()},getRowTop:function(e){if(o.canUseSimpleCalculation())return o.getRowTop(e);var t=this.$config.rowStore;if(!t)return 0;if(n[e]!==void 0)return n[e];for(var r=t.getIndexRange(),i=0,a=0,s=0;s<r.length;s++)n[s]=i,i+=this.getItemHeight(r[s].id),s<e&&(a=i);return a},getItemTop:function(e){if(this.$config.rowStore){if(t[e]!==void 0)return t[e];var n=this.$config.rowStore;if(!n)return 0;var r=n.getIndexById(e);if(r===-1&&n.getParent&&n.exists(e)){var i=n.getParent(e);if(n.exists(i)){var a=n.getItem(i);if(this.$gantt.isSplitTask(a))return this.getItemTop(i)}}return t[e]=this.getRowTop(r),t[e]}else return 0},getItemHeight:function(e){if(o.canUseSimpleCalculation())return o.getItemHeight(e);if(!r&&this.$config.rowStore&&this._fillHeightCache(this.$config.rowStore),r[e]!==void 0)return r[e];var t=this.$getConfig().row_height;if(this.$config.rowStore){var n=this.$config.rowStore;if(!n)return t;var i=n.getItem(e);return r[e]=i&&i.row_height||t}else return t},_fillHeightCache:function(e){if(e){r={};var t=this.$getConfig().row_height;e.eachItem(function(e){return r[e.id]=e&&e.row_height||t})}},getCacheStateTotalHeight:function(e){var t=this.$getConfig().row_height,n={},r=[],i=0;return e&&e.eachItem(function(e){r.push(e),n[e.id]=e.row_height,i+=e.row_height||t}),{globalHeight:t,items:r,count:r.length,sumHeight:i}},shouldClearHeightCache:function(e,t){if(e.count!=t.count||e.globalHeight!=t.globalHeight||e.sumHeight!=t.sumHeight)return!0;for(var n in e.items){var r=t.items[n];if(r!==void 0&&r!=e.items[n])return!0}return!1},getTotalHeight:function(){if(o.canUseSimpleCalculation())return o.getTotalHeight();if(i!=-1)return i;if(this.$config.rowStore){var e=this.$config.rowStore;this._fillHeightCache(e);var t=this.getItemHeight.bind(this),n=e.getVisibleItems(),r=0;return n.forEach(function(e){r+=t(e.id)}),i=r,r}else return 0},getItemIndexByTopPosition:function(e){if(this.$config.rowStore){if(o.canUseSimpleCalculation())return o.getItemIndexByTopPosition(e);for(var t=this.$config.rowStore,n=0;n<t.countVisible();n++){var r=this.getRowTop(n),i=this.getRowTop(n+1);if(!i){var a=t.getIdByIndex(n);i=r+this.getItemHeight(a)}if(e>=r&&e<i)return n}return t.countVisible()+2}else return 0}}}var vi=function(){return{render:function(){},destroy:function(){}}},yi={create:function(){return vi()}};function bi(){var e=this,t=function(){return e.isVisible()},n=function(e,t){return!t.hide_bar};let r=this.$gantt,i=function(e,t){return t.type===r.config.types.project&&t.auto_scheduling===!1};var a=[{expose:!0,renderer:this.$gantt.$ui.layers.taskBar(),container:this.$task_bars,filter:[t,n,function(e,t){return!i(e,t)}]},{renderer:this.$gantt.$ui.layers.timedProjectBar(),filter:[t,i],container:this.$task_bars,append:!0}];return a.push({renderer:this.$gantt.$ui.layers.taskBg(),container:this.$task_bg,filter:[t]}),{tasks:a,links:[{expose:!0,renderer:this.$gantt.$ui.layers.link(),container:this.$task_links,filter:[t]}]}}var xi=function(e,t,n,r){this.$config=L({},t||{}),this.$scaleHelper=new Pe(r),this.$gantt=r,this._posFromDateCache={},this._posFromWorkTimeCache={},this._timelineDragScroll=null,L(this,_i(this)),N(this)};xi.prototype={init:function(e){e.innerHTML+=`<div class='gantt_task' style='width:inherit;height:inherit;'></div>`,this.$task=e.childNodes[0],this.$task.innerHTML=`<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>`,this.$task_scale=this.$task.childNodes[0],this.$task_data=this.$task.childNodes[1],this.$task_data.innerHTML=`<div class='gantt_task_bg'></div><div class='gantt_task_baselines'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div><div class='gantt_task_constraints'></div><div class='gantt_task_deadlines'></div>`,this.$task_bg=this.$task_data.childNodes[0],this.$task_baselines=this.$task_data.childNodes[1],this.$task_links=this.$task_data.childNodes[2],this.$task_bars=this.$task_data.childNodes[3],this.$task_constraints=this.$task_data.childNodes[4],this.$task_deadlines=this.$task_data.childNodes[5],this._tasks={col_width:0,width:[],full_width:0,trace_x:[],rendered:{}};var t=this.$getConfig(),n=t[this.$config.bind+`_attribute`],r=t[this.$config.bindLinks+`_attribute`];!n&&this.$config.bind&&(n=`data-`+this.$config.bind+`-id`),!r&&this.$config.bindLinks&&(r=`data-`+this.$config.bindLinks+`-id`),this.$config.item_attribute=n||null,this.$config.link_attribute=r||null;var i=this._createLayerConfig();this.$config.layers||(this.$config.layers=i.tasks),this.$config.linkLayers||(this.$config.linkLayers=i.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(e,t){var n=this.$getConfig();if(e*1===e&&(this.$config.width=e),t*1===t){this.$config.height=t;var r=Math.max(this.$config.height-n.scale_height);this.$task_data.style.height=r+`px`}this.refresh(),this.$task_bg.style.backgroundImage=``,n.smart_rendering&&this.$config.rowStore?this.$task_bg.style.height=this.getTotalHeight()+`px`:this.$task_bg.style.height=``;for(var i=this._tasks,a=this.$task_data.childNodes,o=0,s=a.length;o<s;o++){var c=a[o];c.hasAttribute(`data-layer`)&&c.style&&(c.style.width=i.full_width+`px`)}},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$task.offsetWidth},getSize:function(){var e=this.$getConfig(),t=this.$config.rowStore?this.getTotalHeight():0,n=this.isVisible()?this._tasks.full_width:0;return{x:this.isVisible()?this.$config.width:0,y:this.isVisible()?this.$config.height:0,contentX:this.isVisible()?n:0,contentY:this.isVisible()?e.scale_height+t:0,scrollHeight:this.isVisible()?t:0,scrollWidth:this.isVisible()?n:0}},scrollTo:function(e,t){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,t*1===t&&(this.$config.scrollTop=t,this.$task_data.scrollTop=this.$config.scrollTop,n=!0),e*1===e&&(this.$task.scrollLeft=e,this.$config.scrollLeft=this.$task.scrollLeft,this._refreshScales(),n=!0),n&&this.callEvent(`onScroll`,[this.$config.scrollLeft,this.$config.scrollTop])}},_refreshScales:function(){if(this.isVisible()&&this.$getConfig().smart_scales){var e=this.getViewPort(),t=this._scales;this.$task_scale.innerHTML=this._getScaleChunkHtml(t,e.x,e.x_end)}},getViewPort:function(){var e=this.$config.scrollLeft||0,t=this.$config.scrollTop||0,n=this.$config.height||0,r=this.$config.width||0;return{y:t,y_end:t+n,x:e,x_end:e+r,height:n,width:r}},_createLayerConfig:bi,_attachLayers:function(e){this._taskLayers=[],this._linkLayers=[];var t=this,n=this.$gantt.$services.getService(`layers`);if(this.$config.bind){this._bindStore();var r=n.getDataRender(this.$config.bind);r||=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return t.$task_data}}),r.container=function(){return t.$task_data};for(var i=this.$config.layers,a=0;i&&a<i.length;a++){var o=i[a];typeof o==`string`&&(o=this.$gantt.$ui.layers[o]()),(typeof o==`function`||o&&o.render&&o.update)&&(o={renderer:o}),o.view=this;var s=r.addLayer(o);this._taskLayers.push(s),o.expose&&(this._taskRenderer=r.getLayer(s))}this._initStaticBackgroundRender()}if(this.$config.bindLinks){t.$config.linkStore=t.$gantt.getDatastore(t.$config.bindLinks);var c=n.getDataRender(this.$config.bindLinks);c||=n.createDataRender({name:this.$config.bindLinks,defaultContainer:function(){return t.$task_data}});for(var l=this.$config.linkLayers,a=0;l&&a<l.length;a++){typeof o==`string`&&(o=this.$gantt.$ui.layers[o]());var o=l[a];o.view=this;var u=c.addLayer(o);this._taskLayers.push(u),l[a].expose&&(this._linkRenderer=c.getLayer(u))}}},_initStaticBackgroundRender:function(){var e=this,t=yi.create(),n=e.$config.rowStore;n&&(this._staticBgHandler=n.attachEvent(`onStoreUpdated`,function(n,r,i){if(n===null&&e.isVisible()){var a=e.$getConfig();if(a.static_background||a.timeline_placeholder){var o=e.$gantt.getDatastore(e.$config.bind),s=e.$task_bg_static;if(s||(s=document.createElement(`div`),s.className=`gantt_task_bg`,e.$task_bg_static=s,e.$task_bg.nextSibling?e.$task_data.insertBefore(s,e.$task_bg.nextSibling):e.$task_data.appendChild(s)),o){var c=e.getTotalHeight();a.timeline_placeholder&&(c=a.timeline_placeholder.height||e.$task_data.offsetHeight||99999),t.render(s,a,e.getScale(),c,e.getItemHeight(r?r.id:null))}}else a.static_background&&e.$task_bg_static&&e.$task_bg_static.parentNode&&e.$task_bg_static.parentNode.removeChild(e.$task_bg_static)}}),this.attachEvent(`onDestroy`,function(){}),this._initStaticBackgroundRender=function(){})},_clearLayers:function(e){var t=this.$gantt.$services.getService(`layers`),n=t.getDataRender(this.$config.bind),r=t.getDataRender(this.$config.bindLinks);if(this._taskLayers)for(var i=0;i<this._taskLayers.length;i++)n.removeLayer(this._taskLayers[i]);if(this._linkLayers)for(var i=0;i<this._linkLayers.length;i++)r.removeLayer(this._linkLayers[i]);this._linkLayers=[],this._taskLayers=[]},_render_tasks_scales:function(){var e=this.$getConfig(),t=``,n=0,r=0,i=this.$gantt.getState();if(this.isVisible()){var a=this.$scaleHelper,o=this._getScales();r=e.scale_height;var s=this.$config.width;(e.autosize==`x`||e.autosize==`xy`)&&(s=Math.max(e.autosize_min_width,0));var c=a.prepareConfigs(o,e.min_column_width,s,r-1,i.min_date,i.max_date,e.rtl),l=this._tasks=c[c.length-1];if(this._scales=c,this._posFromDateCache={},this._posFromWorkTimeCache={},this._tasks.projection&&this._tasks.projection?.source===`fixedHours`){let e=`timescale-projection-calendar`;this.$gantt.getCalendar(e)&&this.$gantt.deleteCalendar(e);let{hours:t}=this._tasks.projection;this.$gantt.addCalendar({id:e,worktime:{hours:t||this.$gantt.getCalendar(`global`)._worktime.hours.slice(),days:[1,1,1,1,1,1,1]}})}t=this._getScaleChunkHtml(c,0,this.$config.width),n=l.full_width+`px`,r+=`px`}this.$task_scale.style.height=r,this.$task_data.style.width=this.$task_scale.style.width=n,this.$task_scale.innerHTML=t},_getScaleChunkHtml:function(e,t,n){for(var r=this.$gantt.templates,i=[],a=r.scale_row_class,o=0;o<e.length;o++){var s=`gantt_scale_line`,c=a(e[o]);c&&(s+=` `+c),i.push(`<div class="`+s+`" style="height:`+e[o].height+`px;position:relative;line-height:`+e[o].height+`px">`+this._prepareScaleHtml(e[o],t,n,o)+`</div>`)}return i.join(``)},_prepareScaleHtml:function(e,t,n,r){var i=this.$getConfig(),a=this.$gantt.templates,o=[],s=null,c=null,l=e.format||e.template||e.date;typeof l==`string`&&(l=this.$gantt.date.date_to_str(l));var u=0,d=e.count;i.smart_scales&&!isNaN(t)&&!isNaN(n)&&(u=xe(e.left,t),d=xe(e.left,n)+1),c=e.css||function(){},!e.css&&i.inherit_scale_class&&(c=a.scale_cell_class);for(var f=u;f<d&&e.trace_x[f];f++){s=new Date(e.trace_x[f]);var p=l.call(this,s),m=e.width[f];e.height;var h=e.left[f],g=``,_=``,v=``;if(m){var y=i.smart_scales?`position:absolute;left:`+h+`px`:``;g=`width:`+m+`px;`+y;let t=this.getViewPort(),n=(i.scales[r]||{}).sticky,a=``;if(n!==!1&&m>70||n===!0){if(h<t.x&&h+m/2-70/2<t.x)a=` style='position:absolute;left: ${t.x-h+10}px;' `;else if(h+m/2+70/2>t.x_end&&m>70){let e=t.x_end-h-10,n=`-100%`;e<70&&(e=70,n=`-${e}px`),a=` style='position:absolute;left: ${e}px;transform: translate(${n},0);' `}}v=`gantt_scale_cell`+(f==e.count-1?` gantt_last_cell`:``),_=c.call(this,s),_&&(v+=` `+_);var b=this.$gantt._waiAria.getTimelineCellAttr(p),x=`<div class='${v}' ${b} style='${g}'><span ${a}>${p}</span></div>`;o.push(x)}}return o.join(``)},_getPositioningContext:function(e){if(this._tasks.unit===this.$gantt.config.duration_unit||this._tasks.unit!==`day`&&this._tasks.unit!==`week`||!this._tasks.projection)return null;let{source:t}=this._tasks.projection||{};return t===`taskCalendar`?e?{calendar:this.$gantt.getTaskCalendar(e)}:{calendar:this.$gantt.getCalendar(`global`)}:t===`fixedHours`?{calendar:this.$gantt.getCalendar(`timescale-projection-calendar`)}:null},dateFromPos:function(e,t){var n=this._tasks;if(e<0||e>n.full_width||!n.full_width)return null;var r=xe(this._tasks.left,e),i=this._tasks.left[r],a=n.width[r]||n.col_width,o=0;a&&(o=(e-i)/a,n.rtl&&(o=1-o));let s=(t?t.calendar:null)||null;var c=0;o&&(c=this._getColumnDuration(n,n.trace_x[r]));let l=n.trace_x[r],u=new Date(n.trace_x[r].valueOf()+Math.round(o*c));if(!s)return u;let{start:d,end:f,duration:p,intervals:m}=this._getWorkTrimForCell(l,s);if(p<=0)return u;let h=Math.round(o*p),g=l.valueOf()+(d+h)*1e3;return new Date(g)},posFromDate:function(e,t){if(!this.isVisible()||!e)return 0;if(t&&t.calendar)return this.posFromWorkTime(e,t);var n=String(e.valueOf());if(this._posFromDateCache[n]!==void 0)return this._posFromDateCache[n];var r=this.columnIndexByDate(e);this.$gantt.assert(r>=0,`Invalid day index`);var i=Math.floor(r),a=r%1,o=this._tasks.left[Math.min(i,this._tasks.width.length-1)];i==this._tasks.width.length&&(o+=this._tasks.width[this._tasks.width.length-1]),a&&(i<this._tasks.width.length?o+=this._tasks.width[i]*(a%1):o+=1);var s=Math.round(o);return this._posFromDateCache[n]=s,Math.round(s)},_getWorkTrimForCell:function(e,t){let n=this._getColumnDuration(this._tasks,e),r=new Date(e.valueOf()+n),i=null,a=null,o=[];for(let n=new Date(e),s=0;n<r;n=this.$gantt.date.add(n,1,`day`),s++){let r=t._getWorkHours(n)||[],s=Math.round((n-e)/1e3);for(let e=0;e<r.length;e++){let t=s+r[e].start,n=s+r[e].end;o.push({start:t,end:n}),(i===null||t<i)&&(i=t),(a===null||n>a)&&(a=n)}}return i===null||a===null||a<=i?{start:0,end:0,duration:0,intervals:[]}:{start:i,end:a,duration:a-i,intervals:o}},posFromWorkTime:function(e,{calendar:t}){if(!this.isVisible()||!e)return 0;if(!t)return this.posFromDate(e);let n=(t?t.id:``)+String(e.valueOf());if(this._posFromWorkTimeCache[n]!==void 0)return this._posFromWorkTimeCache[n];let r=this.columnIndexByDate(e);this.$gantt.assert(r>=0,`Invalid day index`);let i=Math.floor(r),a=i,{start:o,end:s,duration:c}=this._getWorkTrimForCell(e,t);if(c===0)return this.posFromDate(e);let l=(e-this._tasks.trace_x[i])/1e3,u=0;u=l<=o?0:l>=s?1:(l-o)/c,this._tasks.rtl&&(u=1-u);let d=this._tasks.left[Math.min(a,this._tasks.width.length-1)],f=a<this._tasks.width.length?this._tasks.width[a]:this._tasks.width[this._tasks.width.length-1];return Math.round(d+f*u)},_getNextVisibleColumn:function(e,t,n){for(var r=+t[e],i=e;n[r];)i++,r=+t[i];return i},_getPrevVisibleColumn:function(e,t,n){for(var r=+t[e],i=e;n[r];)i--,r=+t[i];return i},_getClosestVisibleColumn:function(e,t,n){var r=this._getNextVisibleColumn(e,t,n);return t[r]||(r=this._getPrevVisibleColumn(e,t,n)),r},columnIndexByDate:function(e){var t=new Date(e).valueOf(),n=this._tasks.trace_x_ascending,r=this._tasks.ignore_x,i=this.$gantt.getState();if(t<=i.min_date)return this._tasks.rtl?n.length:0;if(t>=i.max_date)return this._tasks.rtl?0:n.length;var a=xe(n,t),o=this._getClosestVisibleColumn(a,n,r),s=n[o],c=this._tasks.trace_index_transition;if(!s)return c?c[0]:0;var l=(e-n[o])/this._getColumnDuration(this._tasks,n[o]);return c?c[o]+(1-l):o+l},getItemPosition:function(e,t,n){var r,i,a;let o=t||e.start_date||e.$auto_start_date,s=n||e.end_date||e.$auto_end_date,c=this._getPositioningContext(e);c&&c.calendar?this._tasks.rtl?(i=this.posFromWorkTime(o,c),r=this.posFromWorkTime(s,c)):(r=this.posFromWorkTime(o,c),i=this.posFromWorkTime(s,c)):this._tasks.rtl?(i=this.posFromDate(o),r=this.posFromDate(s)):(r=this.posFromDate(o),i=this.posFromDate(s)),a=Math.max(i-r,0);var l=this.getItemTop(e.id),u=this.getBarHeight(e.id),d=this.getItemHeight(e.id);return{left:r,top:l,height:u,width:a,rowHeight:d}},getBarHeight:function(e,t){var n=this.$getConfig(),r=this.$config.rowStore.getItem(e),i=r.task_height||r.bar_height||n.bar_height||n.task_height,a=this.getItemHeight(e);return i==`full`&&(i=a-(n.bar_height_padding||3)),i=Math.min(i,a),t&&(i=Math.round(i/Math.sqrt(2))),Math.max(i,0)},getScale:function(){return this._tasks},_getScales:function(){var e=this.$getConfig(),t=this.$scaleHelper,n=[t.primaryScale(e)].concat(t.getAdditionalScales(e));return t.sortScales(n),n},_getColumnDuration:function(e,t){return this.$gantt.date.add(t,e.step,e.unit)-t},_bindStore:function(){if(this.$config.bind){var e=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=e,e&&!e._timelineCacheAttached){var t=this;e._timelineCacheAttached=e.attachEvent(`onBeforeFilter`,function(){t._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var e=this.$gantt.getDatastore(this.$config.bind);e&&e._timelineCacheAttached&&(e.detachEvent(e._timelineCacheAttached),e._timelineCacheAttached=!1)}},refresh:function(){this._bindStore(),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._resetTopPositionHeight(),this._resetHeight(),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var e=this.$gantt;this._clearLayers(e),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(),null),this.callEvent(`onDestroy`,[]),this.detachAllEvents()}};function Si(e,t){var n=function(){for(var n=t.getGridColumns(),r=t.$getConfig(),i=0,a=t.$config.width,o=r.scale_height,s=0;s<n.length;s++){var c=n[s],l;if(i+=c.width,l=r.rtl?a-i:i,c.resize&&s!=n.length-1){var u=document.createElement(`div`);u.className=`gantt_grid_column_resize_wrap`,u.style.top=`0px`,u.style.height=o+`px`,u.innerHTML=`<div class='gantt_grid_column_resize'></div>`,u.setAttribute(r.grid_resizer_column_attribute,s),u.setAttribute(`column_index`,s),e._waiAria.gridSeparatorAttr(u),t.$grid_scale.appendChild(u),u.style.left=Math.max(0,l)+`px`}}},r={column_before_start:e.bind(function(e,n,r){var i=t.$getConfig(),a=w(r,i.grid_resizer_column_attribute);if(!a||!A(a,`.gantt_grid_column_resize_wrap`))return!1;var o=this.locate(r,i.grid_resizer_column_attribute),s=t.getGridColumns()[o];if(t.callEvent(`onColumnResizeStart`,[o,s])===!1)return!1},e),column_after_start:e.bind(function(e,n,r){var i=t.$getConfig(),a=this.locate(r,i.grid_resizer_column_attribute);e.config.marker.innerHTML=``,e.config.marker.className+=` gantt_grid_resize_area`,e.config.marker.style.height=t.$grid.offsetHeight+`px`,e.config.marker.style.top=`0px`,e.config.drag_index=a},e),column_drag_move:e.bind(function(n,r,i){var a=t.$getConfig(),o=n.config,c=t.getGridColumns(),l=parseInt(o.drag_index,10),u=c[l],d=s(t.$grid_scale),f=parseInt(o.marker.style.left,10),p=u.min_width?u.min_width:a.min_grid_column_width,m=t.$grid_data.offsetWidth,h=0,g=0;a.rtl?f=d.x+d.width-1-f:f-=d.x-1;for(var _=0;_<l;_++)p+=c[_].width,h+=c[_].width;if(f<p&&(f=p),a.keep_grid_width){for(var v=0,_=l+1;_<c.length;_++)c[_].min_width?m-=c[_].min_width:a.min_grid_column_width&&(m-=a.min_grid_column_width),c[_].max_width&&v!==!1?v+=c[_].max_width:v=!1;v&&(p=t.$grid_data.offsetWidth-v),f<p&&(f=p),f>m&&(f=m)}else if(!t.$config.scrollable){var y=f,b=e.$container.offsetWidth,x=0;if(t.$grid_data.offsetWidth<=b-25)for(var _=l+1;_<c.length;_++)x+=c[_].width;else{for(var _=l+1;_>=0;_--)x+=c[_].width;x=b-x}x>b&&(x-=b);var S=t.$parent.$parent;if(S&&S.$config.mode==`y`){var C=S.$lastSize.x;b=Math.min(b,C-(S.$cells.length-1))}y+x>b&&(f=b-x)}return o.left=f-1,g=Math.abs(f-h),u.max_width&&g>u.max_width&&(g=u.max_width),a.rtl&&(h=d.width-h+2-g),o.marker.style.top=d.y+`px`,o.marker.style.left=d.x-1+h+`px`,o.marker.style.width=g+`px`,t.callEvent(`onColumnResize`,[l,c[l],g-1]),!0},e),column_drag_end:e.bind(function(n,r,i){for(var a=t.$getConfig(),o=t.getGridColumns(),s=0,c=parseInt(n.config.drag_index,10),l=o[c],u=0;u<c;u++)s+=o[u].width;var d=l.min_width&&n.config.left-s<l.min_width?l.min_width:n.config.left-s;if(l.max_width&&l.max_width<d&&(d=l.max_width),t.callEvent(`onColumnResizeEnd`,[c,l,d])!==!1&&l.width!=d){if(l.width=d,a.keep_grid_width)s=a.grid_width;else for(var u=c,f=o.length;u<f;u++)s+=o[u].width;t.callEvent(`onColumnResizeComplete`,[o,t._setColumnsWidth(s,c)]),t.$config.scrollable||e.$layout._syncCellSizes(t.$config.group,{value:a.grid_width,isGravity:!1}),this.render()}},e)};return{init:function(){var n=e.$services.getService(`dnd`),i=t.$getConfig(),a=new n(t.$grid_scale,{updates_per_second:60});e.defined(i.dnd_sensitivity)&&(a.config.sensitivity=i.dnd_sensitivity),a.attachEvent(`onBeforeDragStart`,function(e,t){return r.column_before_start(a,e,t)}),a.attachEvent(`onAfterDragStart`,function(e,t){return r.column_after_start(a,e,t)}),a.attachEvent(`onDragMove`,function(e,t){return r.column_drag_move(a,e,t)}),a.attachEvent(`onDragEnd`,function(e,t){return r.column_drag_end(a,e,t)})},doOnRender:n}}function Ci(e,t){var n={row_before_start:e.bind(function(e,n,r){var i=t.$getConfig(),a=t.$config.rowStore;if(!w(r,i.task_grid_row_resizer_attribute))return!1;var o=this.locate(r,i.task_grid_row_resizer_attribute),s=a.getItem(o);if(t.callEvent(`onBeforeRowResize`,[s])===!1)return!1},e),row_after_start:e.bind(function(e,n,r){var i=t.$getConfig(),a=this.locate(r,i.task_grid_row_resizer_attribute);e.config.marker.innerHTML=``,e.config.marker.className+=` gantt_row_grid_resize_area`,e.config.marker.style.width=t.$grid.offsetWidth+`px`,e.config.drag_id=a},e),row_drag_move:e.bind(function(e,n,r){var i=t.$config.rowStore,a=t.$getConfig(),o=e.config,c=o.drag_id,l=t.getItemHeight(c),u=t.getItemTop(c)-n.scrollTop,d=s(t.$grid_data),f=parseInt(o.marker.style.top,10),p=u+d.y,m=0,h=a.min_task_grid_row_height;return m=f-p,m<h&&(m=h),o.marker.style.left=d.x+`px`,o.marker.style.top=p-1+`px`,o.marker.style.height=Math.abs(m)+1+`px`,o.marker_height=m,t.callEvent(`onRowResize`,[c,i.getItem(c),m+l]),!0},e),row_drag_end:e.bind(function(e,n,r){var i=t.$config.rowStore,a=e.config,o=a.drag_id,s=i.getItem(o),c=t.getItemHeight(o),l=a.marker_height;t.callEvent(`onBeforeRowResizeEnd`,[o,s,l])!==!1&&s.row_height!=l&&(s.row_height=l,i.updateItem(o),t.callEvent(`onAfterRowResize`,[o,s,c,l]),this.render())},e)};return{init:function(){var r=e.$services.getService(`dnd`),i=t.$getConfig(),a=new r(t.$grid_data,{updates_per_second:60});e.defined(i.dnd_sensitivity)&&(a.config.sensitivity=i.dnd_sensitivity),a.attachEvent(`onBeforeDragStart`,function(e,t){return n.row_before_start(a,e,t)}),a.attachEvent(`onAfterDragStart`,function(e,t){return n.row_after_start(a,e,t)}),a.attachEvent(`onDragMove`,function(e,t){return n.row_drag_move(a,e,t)}),a.attachEvent(`onDragEnd`,function(e,t){return n.row_drag_end(a,e,t)})}}}var wi=20,Ti=50,Ei=10,Di=class{constructor(e){this._scrollOrder=0;let{gantt:t,grid:n,dnd:r,getCurrentX:i}=e;this.$gantt=t,this.$grid=n,this._dnd=r,this.getCurrentX=i,this._scrollView=this.$gantt.$ui.getView(this.$grid.$config.scrollX),this.attachEvents()}attachEvents(){this.isScrollable()&&(this._dnd.attachEvent(`onDragMove`,(e,t)=>{let n=this.$grid.$grid.getBoundingClientRect(),r=n.right,i=n.left,a=this.getCurrentX(t.clientX);return a>=r-wi&&(this.autoscrollRight(),this.autoscrollStart()),a<=i+wi&&(this.autoscrollLeft(),this.autoscrollStart()),a<r-wi&&a>i+wi&&this.autoscrollStop(),!0}),this._dnd.attachEvent(`onDragEnd`,()=>{this.autoscrollStop()}))}autoscrollStart(){if(this._scrollOrder===0)return;let e=Ei*this._scrollOrder,t=this._scrollView.getScrollState();this._scrollView.scrollTo(t.position+e),setTimeout(()=>{this.autoscrollStart()},Ti)}autoscrollRight(){this._scrollOrder=1}autoscrollLeft(){this._scrollOrder=-1}autoscrollStop(){this._scrollOrder=0}getCorrection(){return this.isScrollable()?this._scrollView.getScrollState().position:0}isScrollable(){return!!this.$grid.$config.scrollable}},Oi=`data-column-id`,ki=class{constructor(e,t){this._targetMarker=null,this.calculateCurrentPosition=e=>{let t=this.$grid.$grid.getBoundingClientRect(),n=t.right,r=t.left,i=e;return i>n&&(i=n),i<r&&(i=r),i},this.$gantt=e,this.$grid=t}init(){let e=this.$gantt.$services.getService(`dnd`);this._dnd=new e(this.$grid.$grid_scale,{updates_per_second:60}),this._scrollableGrid=new Di({gantt:this.$gantt,grid:this.$grid,dnd:this._dnd,getCurrentX:this.calculateCurrentPosition}),this.attachEvents()}attachEvents(){this._dnd.attachEvent(`onBeforeDragStart`,(e,t)=>{if(this._draggedCell=this.$gantt.utils.dom.closest(t.target,`.gantt_grid_head_cell`),!this._draggedCell)return;let n=this.$grid.$getConfig().columns,r=this._draggedCell.getAttribute(Oi),i,a;return n.map(function(e,t){e.name===r&&(i=e,a=t)}),this.$grid.callEvent(`onBeforeColumnDragStart`,[{draggedColumn:i,draggedIndex:a}])===!1||!this._draggedCell||!i?!1:(this._gridConfig=this.$grid.$getConfig(),this._originAutoscroll=this.$gantt.config.autoscroll,this.$gantt.config.autoscroll=!1,!0)}),this._dnd.attachEvent(`onAfterDragStart`,(e,t)=>{this._draggedCell&&(this._dnd.config.column=this._draggedCell.getAttribute(Oi),this._dnd.config.marker.innerHTML=this._draggedCell.outerHTML,this._dnd.config.marker.classList.add(`gantt_column_drag_marker`),this._dnd.config.marker.style.height=this._gridConfig.scale_height+`px`,this._dnd.config.marker.style.lineHeight=this._gridConfig.scale_height+`px`,this._draggedCell.classList.add(`gantt_grid_head_cell_dragged`))}),this._dnd.attachEvent(`onDragMove`,(e,t)=>{if(!this._draggedCell)return;this._dragX=t.clientX;let n=this.calculateCurrentPosition(t.clientX),r=this.findColumnsIndexes();return this.setMarkerPosition(n),this.drawTargetMarker(r),!0}),this._dnd.attachEvent(`onDragEnd`,()=>{if(!this._draggedCell)return;let e=this.findColumnsIndexes(),t=e.targetIndex,n=e.draggedIndex,r=this.$grid.$getConfig().columns,i=r[n],a=r[t];if(this.$grid.callEvent(`onColumnDragMove`,[{draggedColumn:i,targetColumn:a,draggedIndex:n,targetIndex:t}])===!1){this.cleanTargetMarker(),this.$gantt.render();return}this.$gantt.config.autoscroll=this._originAutoscroll,this._draggedCell.classList.remove(`gantt_grid_head_cell_dragged`),this.cleanTargetMarker(),this.reorderColumns()})}reorderColumns(){let{targetIndex:e,draggedIndex:t}=this.findColumnsIndexes(),n=this.$grid.$getConfig().columns,r=n[t],i=n[e];this.$grid.callEvent(`onBeforeColumnReorder`,[{draggedColumn:r,targetColumn:i,draggedIndex:t,targetIndex:e}])!==!1&&e!==t&&(n.splice(t,1),n.splice(e,0,r),this.$gantt.render(),this.$grid.callEvent(`onAfterColumnReorder`,[{draggedColumn:r,targetColumn:i,draggedIndex:t,targetIndex:e}]))}findColumnsIndexes(){let e=this._dnd.config.column,t=this.$grid.$getConfig().columns,n,r,i,a,o={startX:0,endX:0},s=0,c=t.length-1,l=(e,t)=>e<=t,u=e=>++e;this.$gantt.config.rtl&&(s=t.length-1,c=0,l=(e,t)=>e>=t,u=e=>--e);let d,f=this._dragX-this.$grid.$grid.getBoundingClientRect().left+this._scrollableGrid.getCorrection();for(let p=s;l(p,c)&&!(n!==void 0&&r!==void 0);p=u(p))t[p].hide||(o.startX=o.endX,o.endX+=t[p].width,f>=o.startX&&(f<=o.endX||!l(u(p),c))&&(n=p,i=o.startX,a=o.endX,d=(f-o.startX)/(o.endX-o.startX)),e===t[p].name&&(r=p));return{targetIndex:n,draggedIndex:r,xBefore:i,xAfter:a,columnRelativePos:d}}setMarkerPosition(e,t=10){let{marker:n}=this._dnd.config,r=this._dnd._obj.getBoundingClientRect();n.style.top=`${r.y+t}px`,n.style.left=`${e}px`}drawTargetMarker({targetIndex:e,draggedIndex:t,xBefore:n,xAfter:r,columnRelativePos:i}){this._targetMarker||(this._targetMarker=document.createElement(`div`),h(this._targetMarker,`gantt_grid_target_marker`),this._targetMarker.style.display=`none`,this._targetMarker.style.height=`${this._gridConfig.scale_height}px`),this._targetMarker.parentNode||this.$grid.$grid_scale.appendChild(this._targetMarker);let a;a=e>t?r:e<t?n:i>.5?r:n,this._targetMarker.style.left=`${a}px`,this._targetMarker.style.display=`block`}cleanTargetMarker(){this._targetMarker&&this._targetMarker.parentNode&&this.$grid.$grid_scale.removeChild(this._targetMarker),this._targetMarker=null}};function Ai(e){var t=[];return{delegate:function(n,r,i,a){t.push([n,r,i,a]),e.$services.getService(`mouseEvents`).delegate(n,r,i,a)},destructor:function(){for(var n=e.$services.getService(`mouseEvents`),r=0;r<t.length;r++){var i=t[r];n.detach(i[0],i[1],i[2],i[3])}t=[]}}}var ji=function(e,t,n,r){this.$config=L({},t||{}),this.$gantt=r,this.$parent=e,N(this),this.$state={},L(this,_i(this))};ji.prototype={init:function(e){var t=this.$gantt,n=t._waiAria.gridAttrString(),r=t._waiAria.gridDataAttrString(),i=this.$getConfig(),a=i.reorder_grid_columns||!1;this.$config.reorder_grid_columns!==void 0&&(a=this.$config.reorder_grid_columns),e.innerHTML=`<div class='gantt_grid' style='height:inherit;width:inherit;' `+n+`></div>`,this.$grid=e.childNodes[0],this.$grid.innerHTML=`<div class='gantt_grid_scale' `+t._waiAria.gridScaleRowAttrString()+`></div><div class='gantt_grid_data' `+r+`></div>`,this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];var o=i[this.$config.bind+`_attribute`];if(!o&&this.$config.bind&&(o=`data-`+this.$config.bind+`-id`),this.$config.item_attribute=o||null,!this.$config.layers){var s=this._createLayerConfig();this.$config.layers=s}var c=Si(t,this);c.init(),this._renderHeaderResizers=c.doOnRender,this._mouseDelegates=Ai(t),Ci(t,this).init(),this._addLayers(this.$gantt),this._initEvents(),a&&(this._columnDND=new ki(t,this),this._columnDND.init()),this.callEvent(`onReady`,[])},_validateColumnWidth:function(e,t){var n=e[t];if(n&&n!=`*`){var r=this.$gantt,i=n*1;isNaN(i)?r.assert(!1,`Wrong `+t+` value of column `+e.name):e[t]=i}},setSize:function(e,t){this.$config.width=this.$state.width=e,this.$config.height=this.$state.height=t;for(var n=this.getGridColumns(),r=0,i=this.$getConfig(),a=i.grid_elastic_columns,o=0,s=n.length;o<s;o++)this._validateColumnWidth(n[o],`min_width`),this._validateColumnWidth(n[o],`max_width`),this._validateColumnWidth(n[o],`width`),r+=n[o].width*1;var c;if((isNaN(r)||!this.$config.scrollable)&&(c=this._setColumnsWidth(e+1),r=c),this.$config.scrollable&&a&&!isNaN(r)){let t=`width`;a==`min_width`&&(t=`min_width`);let o=0;n.forEach(function(e){o+=e[t]||i.min_grid_column_width});var l=Math.max(o,e);r=this._setColumnsWidth(l),c=e}this.$config.scrollable?(this.$grid_scale.style.width=r+`px`,this.$grid_data.style.width=r+`px`):(this.$grid_scale.style.width=`inherit`,this.$grid_data.style.width=`inherit`),--this.$config.width;var i=this.$getConfig();c!==e&&(c===void 0?isNaN(r)||(this._setColumnsWidth(r),i.grid_width=r,this.$config.width=r-1):(i.grid_width=c,this.$config.width=c-1));var u=Math.max(this.$state.height-i.scale_height,0);this.$grid_data.style.height=u+`px`,this.refresh()},getSize:function(){var e=this.$getConfig(),t=this.$config.rowStore?this.getTotalHeight():0,n=this._getGridWidth();return{x:this.$state.width,y:this.$state.height,contentX:this.isVisible()?n:0,contentY:this.isVisible()?e.scale_height+t:0,scrollHeight:this.isVisible()?t:0,scrollWidth:this.isVisible()?n:0}},_bindStore:function(){if(this.$config.bind){var e=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=e,e&&!e._gridCacheAttached){var t=this;e._gridCacheAttached=e.attachEvent(`onBeforeFilter`,function(){t._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var e=this.$gantt.getDatastore(this.$config.bind);e&&e._gridCacheAttached&&(e.detachEvent(e._gridCacheAttached),e._gridCacheAttached=!1)}},refresh:function(){this._bindStore(),this._resetTopPositionHeight(),this._resetHeight(),this._initSmartRenderingPlaceholder(),this._calculateGridWidth(),this._renderGridHeader()},getViewPort:function(){var e=this.$config.scrollLeft||0,t=this.$config.scrollTop||0,n=this.$config.height||0,r=this.$config.width||0;return{y:t,y_end:t+n,x:e,x_end:e+r,height:n,width:r}},scrollTo:function(e,t){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,e*1==e&&(this.$config.scrollLeft=this.$state.scrollLeft=this.$grid.scrollLeft=e,n=!0),t*1==t&&(this.$config.scrollTop=this.$state.scrollTop=this.$grid_data.scrollTop=t,n=!0),n&&this.callEvent(`onScroll`,[this.$config.scrollLeft,this.$config.scrollTop])}},getColumnIndex:function(e,t){for(var n=this.$getConfig().columns,r=0,i=0;i<n.length;i++)if(t&&n[i].hide&&r++,n[i].name==e)return i-r;return null},getColumn:function(e){var t=this.getColumnIndex(e);return t===null?null:this.$getConfig().columns[t]},getGridColumns:function(){return this.$getConfig().columns.slice()},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$grid.offsetWidth},_createLayerConfig:function(){var e=this.$gantt,t=this;return[{renderer:e.$ui.layers.gridLine(),container:this.$grid_data,filter:[function(){return t.isVisible()}]},{renderer:e.$ui.layers.gridTaskRowResizer(),container:this.$grid_data,append:!0,filter:[function(){return e.config.resize_rows}]}]},_addLayers:function(e){if(this.$config.bind){this._taskLayers=[];var t=this,n=this.$gantt.$services.getService(`layers`),r=n.getDataRender(this.$config.bind);r||=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return t.$grid_data}});for(var i=this.$config.layers,a=0;i&&a<i.length;a++){var o=i[a];o.view=this;var s=r.addLayer(o);this._taskLayers.push(s)}this._bindStore(),this._initSmartRenderingPlaceholder()}},_refreshPlaceholderOnStoreUpdate:function(e){var t=this.$getConfig(),n=this.$config.rowStore;if(!(!n||e!==null||!this.isVisible()||!t.smart_rendering)){var r;if(this.$config.scrollY){var i=this.$gantt.$ui.getView(this.$config.scrollY);i&&(r=i.getScrollState().scrollSize)}if(r||=n?this.getTotalHeight():0,r){this.$rowsPlaceholder&&this.$rowsPlaceholder.parentNode&&this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);var a=this.$rowsPlaceholder=document.createElement(`div`);a.style.visibility=`hidden`,a.style.height=r+`px`,a.style.width=`1px`,this.$grid_data.appendChild(a)}}},_initSmartRenderingPlaceholder:function(){var e=this.$config.rowStore;if(e)this._initSmartRenderingPlaceholder=function(){};else return;this._staticBgHandler=e.attachEvent(`onStoreUpdated`,B(this._refreshPlaceholderOnStoreUpdate,this))},_initEvents:function(){var e=this.$gantt;this._mouseDelegates.delegate(`click`,`gantt_close`,e.bind(function(e,t,n){var r=this.$config.rowStore;if(!r)return!0;var i=w(e,this.$config.item_attribute);return i&&r.close(i.getAttribute(this.$config.item_attribute)),!1},this),this.$grid),this._mouseDelegates.delegate(`click`,`gantt_open`,e.bind(function(e,t,n){var r=this.$config.rowStore;if(!r)return!0;var i=w(e,this.$config.item_attribute);return i&&r.open(i.getAttribute(this.$config.item_attribute)),!1},this),this.$grid)},_clearLayers:function(e){var t=this.$gantt.$services.getService(`layers`).getDataRender(this.$config.bind);if(this._taskLayers)for(var n=0;n<this._taskLayers.length;n++)t.removeLayer(this._taskLayers[n]);this._taskLayers=[]},_getColumnWidth:function(e,t,n){var r=e.min_width||t.min_grid_column_width,i=Math.max(n,r||10);return e.max_width&&(i=Math.min(i,e.max_width)),i},_checkGridColumnMinWidthLimits:function(e,t){for(var n=0,r=e.length;n<r;n++){var i=e[n].width*1;!e[n].min_width&&i<t.min_grid_column_width&&(e[n].min_width=i)}},_getGridWidthLimits:function(){for(var e=this.$getConfig(),t=this.getGridColumns(),n=0,r=0,i=0;i<t.length;i++)n+=t[i].min_width?t[i].min_width:e.min_grid_column_width,r!==void 0&&(r=t[i].max_width?r+t[i].max_width:void 0);return this._checkGridColumnMinWidthLimits(t,e),[n,r]},_setColumnsWidth:function(e,t){var n=this.$getConfig(),r=this.getGridColumns(),i=0,a=e;t=window.isNaN(t)?-1:t;for(var o=0,s=r.length;o<s;o++)i+=r[o].width*1;if(window.isNaN(i)){this._calculateGridWidth(),i=0;for(var o=0,s=r.length;o<s;o++)i+=r[o].width*1}for(var c=a-i,l=0,o=0;o<t+1;o++)l+=r[o].width;i-=l;for(var o=t+1;o<r.length;o++){var u=r[o],d=Math.round(c*(u.width/i));c<0?u.min_width&&u.width+d<u.min_width?d=u.min_width-u.width:!u.min_width&&n.min_grid_column_width&&u.width+d<n.min_grid_column_width&&(d=n.min_grid_column_width-u.width):u.max_width&&u.width+d>u.max_width&&(d=u.max_width-u.width),i-=u.width,u.width+=d,c-=d}for(var f=c>0?1:-1;c>0&&f===1||c<0&&f===-1;){var p=c;for(o=t+1;o<r.length;o++){var m=r[o].width+f;if(m==this._getColumnWidth(r[o],n,m)&&(c-=f,r[o].width=m),!c)break}if(p==c)break}if(c&&t>-1){var m=r[t].width+c;m==this._getColumnWidth(r[t],n,m)&&(r[t].width=m)}return this._getColsTotalWidth()},_getColsTotalWidth:function(){for(var e=this.getGridColumns(),t=0,n=0;n<e.length;n++){var r=parseFloat(e[n].width);if(window.isNaN(r))return!1;t+=r}return t},_calculateGridWidth:function(){for(var e=this.$getConfig(),t=this.getGridColumns(),n=0,r=[],i=[],a=0;a<t.length;a++){var o=parseFloat(t[a].width);window.isNaN(o)&&(o=e.min_grid_column_width||10,r.push(a)),i[a]=o,n+=o}var s=this._getGridWidth()+1;if(e.autofit||r.length){var c=s-n;if(e.autofit&&!e.grid_elastic_columns)for(var a=0;a<i.length;a++){var l=Math.round(c/(i.length-a));i[a]+=l;var u=this._getColumnWidth(t[a],e,i[a]);u!=i[a]&&(l=u-i[a],i[a]=u),c-=l}else if(r.length)for(var a=0;a<r.length;a++){var l=Math.round(c/(r.length-a)),d=r[a];i[d]+=l;var u=this._getColumnWidth(t[d],e,i[d]);u!=i[d]&&(l=u-i[d],i[d]=u),c-=l}for(var a=0;a<i.length;a++)t[a].width=i[a]}else{var f=s!=n;this.$config.width=n-1,e.grid_width=n,f&&this.$parent._setContentSize(this.$config.width,null)}},_renderGridHeader:function(){var e=this.$gantt,t=this.$getConfig(),n=this.$gantt.locale,r=this.$gantt.templates,i=this.getGridColumns();t.rtl&&(i=i.reverse());var a=[],o=0,s=n.labels,c=t.scale_height-1;let l={};for(var u=0;u<i.length;u++){var d=u==i.length-1,f=i[u];f.name||=e.uid()+``;var p=f.width*1,m=this._getGridWidth();d&&m>o+p&&(f.width=p=m-o),o+=p;var h=e._sort&&f.name==e._sort.name?`<div data-column-id="${f.name}" class="gantt_sort gantt_${e._sort.direction}"></div>`:``,g=[`gantt_grid_head_cell`,`gantt_grid_head_`+f.name,d?`gantt_last_cell`:``,r.grid_header_class(f.name,f)].join(` `),_=`width:`+(p-+!!d)+`px;`,v=f.label||s[`column_`+f.name]||s[f.name];typeof v==`function`&&(v=v.call(e,f.name,f)),v||=``;let t=!1;e.config.external_render&&e.config.external_render.isElement(v)&&(t=!0,l[f.name]=v);var y=e._waiAria.gridScaleCellAttrString(f,v),b=`<div class='`+g+`' style='`+_+`' `+y+` data-column-id='`+f.name+`' column_id='`+f.name+`' data-column-name='`+f.name+`' data-column-index='`+u+`'>`+(t?`<div data-component-container></div>`:v)+h+`</div>`;a.push(b)}this.$grid_scale.style.height=t.scale_height+`px`,this.$grid_scale.style.lineHeight=c+`px`,this.$grid_scale.innerHTML=a.join(``);for(let t in l)e.config.external_render.renderElement(l[t],this.$grid_scale.querySelector(`[data-column-id='`+t+`'] [data-component-container]`));this._renderHeaderResizers&&this._renderHeaderResizers()},_getGridWidth:function(){return this.$config.width},destructor:function(){this._clearLayers(this.$gantt),this._mouseDelegates&&=(this._mouseDelegates.destructor(),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()}};function Mi(e){if(e._delayRender&&e._delayRender.$cancelTimeout(),e.$gantt){var t=e.$gantt.$data.tasksStore,n=e.$config.rowStore;if(n){var r=`_attached_`+n.$config.name;e[r]&&(t.detachEvent(e[r]),e[r]=null),n.$attachedResourceViewHandler&&(n.detachEvent(n.$attachedResourceViewHandler),n.$attachedResourceViewHandler=null,t.detachEvent(n.$attachedTaskStoreHandler),n.$attachedTaskStoreHandler=null)}}}function Ni(e){var t=e.prototype.init,n=e.prototype.destructor;return{init:function(){t.apply(this,arguments),this._linkToTaskStore()},destructor:function(){Mi(this),n.apply(this,arguments)},previousDragId:null,relevantResources:null,_linkToTaskStore:function(){if(this.$config.rowStore&&this.$gantt.$data.tasksStore){var e=this.$gantt.$data.tasksStore,t=this.$config.rowStore;Mi(this);var n=this,r=ve(function(){if(n.$gantt.getState().lightbox)r();else{let e=n.$config.rowStore,t=n._getRelevantResources();if(t&&e.$config.name===n.$gantt.config.resource_store){if(t==`nothing_to_repaint`)return;e._quick_refresh=!0,n.relevantResources.forEach(function(t){e.refresh(t)}),e._quick_refresh=!1}else e.refresh()}},300);this._delayRender=r;var i=`_attached_`+t.$config.name;n[i]||(n[i]=e.attachEvent(`onStoreUpdated`,function(){if(!r.$pending&&!this._skipResourceRepaint){let e=n.$gantt.getState();if(e.drag_mode==`progress`)return!0;e.drag_mode&&e.drag_id&&(n.previousDragId=e.drag_id),r()}return!0})),this.$gantt.attachEvent(`onDestroy`,function(){return Mi(n),!0}),t.$attachedResourceViewHandler||(t.$attachedResourceViewHandler=t.attachEvent(`onBeforeFilter`,function(){return n.$gantt.getState().lightbox?!1:(r.$pending&&r.$cancelTimeout(),n._updateNestedTasks(),!0)}),t.$attachedTaskStoreHandler=e.attachEvent(`onAfterDelete`,function(){t._mark_recompute=!0}))}},_getRelevantResources:function(){if(!this.$gantt.getTaskAssignments)return null;let e=this.$gantt.getState(),t=this.$config.rowStore,n=[];if(e.drag_mode&&e.drag_id&&t.$config.name===this.$gantt.config.resource_store)if(this.previousDragId==e.drag_id){if(this.relevantResources)return this.relevantResources;n=this._getIdsFromAssignments(this.previousDragId)}else this.previousDragId=e.drag_id,n=this._getIdsFromAssignments(this.previousDragId);else if(this.previousDragId)n=this._getIdsFromAssignments(this.previousDragId),this.previousDragId=null;else return null;return n.length?(n.forEach(function(e){t.eachParent&&t.eachParent(function(e){n.push(e.id)},e)}),this.relevantResources=[...new Set(n)]):this.relevantResources=`nothing_to_repaint`},_getIdsFromAssignments:function(e){let t=this.$gantt,n=[],r=t.getTask(e);return t.getTaskAssignments(e).forEach(function(e){n.push(e.resource_id)}),t.isSummaryTask(r)&&t.config.drag_project&&t.eachTask(function(e){t.getTaskAssignments(e.id).forEach(function(e){n.push(e.resource_id)})},e),t.config.drag_multiple&&t.getSelectedTasks&&t.getSelectedTasks().forEach(function(e){t.getTaskAssignments(e).forEach(function(e){n.push(e.resource_id)})}),n},_updateNestedTasks:function(){var e=this.$gantt,t=e.getDatastore(e.config.resource_store);t.$config.fetchTasks&&t.silent(function(){var n=[],r={},i={};for(var a in t.eachItem(function(a){if(a.$role==`task`){i[a.id]=!0;return}var o=e.getResourceAssignments(a.id),s={};o.sort(function(e,n){let r=t.pull,i=r[`${e.task_id}_${e.resource_id}`],a=r[`${n.task_id}_${n.resource_id}`];return i&&a?i.$local_index-a.$local_index:0}),o.forEach(function(i){if(!(s[i.task_id]||!e.isTaskExists(i.task_id))){s[i.task_id]=!0;var o=e.getTask(i.task_id),c=t.$config.copyOnParse?e.copy(o):Object.create(o);c.id=o.id+`_`+a.id,c.$task_id=o.id,c.$resource_id=a.id,c[t.$parentProperty]=a.id,c.$role=`task`,n.push(c),r[c.id]=!0}})}),i)r[a]||t.removeItem(a);n.length&&t.parse(n)})}}}var Pi=(function(e){function t(t,n,r,i){return e.apply(this,arguments)||this}return X(t,e),L(t.prototype,{init:function(e){let t=this.$gantt,n=t._waiAria.gridAttrString(),r=t._waiAria.gridDataAttrString(),i=this.$getConfig();i.row_height=this._getResourceConfig().row_height?this._getResourceConfig().row_height:t.resource_table.row_height,i.reorder_grid_columns,this.$config.reorder_grid_columns!==void 0&&this.$config.reorder_grid_columns,this.$config.bind===void 0&&(this.$config.bind=`temp_resource_assignment_store`,this.$config.name=`resource_grid_lightbox`,this.$config.$id=`GridRL`),e.innerHTML=`<div class='gantt_grid' style='width:100%;' `+n+`></div>`,this.$grid=e.childNodes[0],this.$grid.innerHTML=`<div class='gantt_grid_scale' `+t._waiAria.gridScaleRowAttrString()+`></div><div class='gantt_grid_data' `+r+`></div>`,this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];let a=i[this.$config.bind+`_attribute`];if(!a&&this.$config.bind&&(a=`data-`+this.$config.bind+`-id`),this.$config.item_attribute=a||null,!this.$config.layers){let e=this._createLayerConfig();this.$config.layers=e}let o=Xe();this.event=o.attach,this.eventRemove=o.detach,this._eventRemoveAll=o.detachAll,this._createDomEventScope=o.extend,this._addLayers(this.$gantt),this._initEvents(),this.callEvent(`onReady`,[])},getColumn:function(e){let t=this.getColumnIndex(e);return t===null?null:this._getResourceColumns()[t]||null},getColumnIndex:function(e,t){let n=this._getResourceColumns(),r=0;for(let i=0;i<n.length;i++)if(t&&n[i].hide&&r++,n[i].name==e)return i-r;return null},getGridColumns:function(){let e=this._getResourceColumns(),t=[];for(let n=0;n<e.length;n++)e[n].hide||t.push(e[n]);return t},_createLayerConfig:function(){let e=this.$gantt,t=this;return[{renderer:e.$ui.layers.gridLine(),container:this.$grid_data,filter:[function(){return t.isVisible()}]},{renderer:e.$ui.layers.gridTaskRowResizer(),container:this.$grid_data,append:!0,filter:[function(){return e.config.resize_rows}]}]},_renderGridHeader:function(){let e=this.$gantt,t=this._getResourceConfig(),n=this.$gantt.locale,r=this.$getTemplates(),i=this._getResourceColumns();t.rtl&&(i=i.reverse()),t.scale_height||=e.resource_table.scale_height;let a=[],o=0,s=n.labels,c=t.scale_height-1;for(let t=0;t<i.length;t++){let n=t==i.length-1,c=i[t];c.name||=e.uid()+``;let l=c.width*1,u=this._getGridWidth();n&&u>o+l&&(c.width=l=u-o),o+=l;let d=e._sort&&c.name==e._sort.name?`<div data-column-id="${c.name}" class="gantt_sort gantt_${e._sort.direction}"></div>`:``,f=[`gantt_grid_head_cell`,`gantt_grid_head_`+c.name,n?`gantt_last_cell`:``,r.grid_header_class?r.grid_header_class(c.name,c):``].join(` `),p=`width:`+(l-+!!n)+`px;`,m=c.label||s[`column_`+c.name]||s[c.name];m||=``;let h=e._waiAria.gridScaleCellAttrString(c,m),g=`<div class='`+f+`' style='`+p+`' `+h+` data-column-id='`+c.name+`' column_id='`+c.name+`' data-column-name='`+c.name+`' data-column-index='`+t+`'>`+m+d+`</div>`;a.push(g)}this.$grid_scale.style.height=t.scale_height+`px`,this.$grid_scale.style.lineHeight=c+`px`,this.$grid_scale.style.width=`inherit`,this.$grid_scale.innerHTML=a.join(``)},isVisible:function(){return this.$parent?!this.$parent.hidden:this.$grid.offsetWidth},_initEvents:function(){},_getResourceSection:function(){return gantt.getLightboxSection(this.$config.sectionName).section},$getTemplates:function(){return this._getResourceSection().templates||{}},_getResourceConfig:function(){return this._getResourceSection().config||gantt.resource_table},_getResourceColumns:function(){return this._getResourceSection().config?.columns||gantt.resource_table.columns},destructor:function(){this._mouseDelegates&&=(this._mouseDelegates.destructor(),null),this._unbindStore(),this.$grid=null,this.$grid_scale=null,this.$grid_data=null,this._eventRemoveAll(),gantt.ext.inlineEditorsLightbox.destructor(),this.callEvent(`onDestroy`,[]),this.detachAllEvents()}},!0),L(t.prototype,Ni(t),!0),t})(ji),Fi={init:function(e,t){var n=t.$gantt;n.attachEvent(`onTaskClick`,function(t,r){if(n._is_icon_open_click(r))return!0;var i=e.getState(),a=e.locateCell(r.target);return a&&e.getEditorConfig(a.columnName)?(e.isVisible()&&i.id==a.id&&i.columnName==a.columnName||e.startEdit(a.id,a.columnName),!1):!0}),t.$config.id===`GridRL`&&(n.event(n.getLightbox(),`click`,function(r){let i=n.utils.dom,a=e.getState(),o=e.locateCell(r.target);if(o&&e.getEditorConfig(o.columnName)){if(o.columnName==`duration`||o.columnName==`end`){let t=n.getDatastore(`temp_resource_assignment_store`).getItem(o.id);if(t&&!t.start_date)return n.message({type:`warning`,text:`Specify assignment start date`}),e.hide(),!1}return e.isVisible()&&a.id==o.id&&a.columnName==o.columnName||e.startEdit(o.id,o.columnName),e.isChanged()&&e.save(),!1}if(!i.closest(r.target,`.gantt_custom_button.gantt_add_resources`)){if(i.closest(r.target,`[data-assignment-delete]`)){let e=r.target.getAttribute(`data-assignment-delete`);n.confirm({text:`Resource assignment will be deleted permanently, are you sure?`,cancel:`No`,ok:`Delete`,callback:function(r){if(r){let r=n.getDatastore(`temp_resource_assignment_store`);if(r.removeItem(e),r.getItems().length==0){let e=n.getLightboxSection(t.$config.sectionName),r=n.form_blocks.resource_selector,i=n._lightbox_root.querySelector(`#`+e.section.id).nextSibling;r.set_value.call(n,i,[],{},e.section,!0)}n.refreshData()}else return}})}e.isVisible()&&e.save(),e.hide()}}),n.lightbox_events.gantt_save_btn=function(){e.save(),n._save_lightbox()}),n.attachEvent(`onEmptyClick`,function(){return e.isVisible()&&e.isChanged()?e.save():e.hide(),!0}),n.attachEvent(`onTaskDblClick`,function(t,n){var r=e.getState(),i=e.locateCell(n.target);return!(i&&e.isVisible()&&i.columnName==r.columnName)})},onShow:function(e,t,n){var r=n.$gantt;if(r.ext&&r.ext.keyboardNavigation&&r.ext.keyboardNavigation.attachEvent(`onKeyDown`,function(t,n){var i=r.constants.KEY_CODES,a=n.keyCode,o=!1;return a===i.SPACE&&e.isVisible()&&(o=!0),!o}),t.onkeydown=function(t){t||=window.event;var n=r.constants.KEY_CODES;if(!(t.defaultPrevented||t.shiftKey&&t.keyCode!=n.TAB)){var i=!0;switch(t.keyCode){case r.keys.edit_save:e.save();break;case r.keys.edit_cancel:e.hide();break;case n.UP:case n.DOWN:e.isVisible()&&(e.hide(),i=!1);break;case n.TAB:t.shiftKey?e.editPrevCell(!0):e.editNextCell(!0);break;default:i=!1;break}i&&t.preventDefault()}},n.$config.id===`GridRL`){t.onkeyup=function(t){t||=window.event;var n=r.constants.KEY_CODES;t.defaultPrevented||t.shiftKey&&t.keyCode!=n.TAB||r._lightbox_id&&e.isChanged()&&e.save()};let n;t.onwheel=function(t){r._lightbox_id&&e.isChanged()&&(clearTimeout(n),n=setTimeout(function(){e.save()},100))}}},onHide:function(){},destroy:function(){}},Ii={init:function(e,t){var n=e,r=t.$gantt,i=null,a=r.ext.keyboardNavigation;a.attachEvent(`onBeforeFocus`,function(t){var r=e.locateCell(t);if(clearTimeout(i),r){var a=r.columnName,o=r.id,s=n.getState();if(n.isVisible()&&s.id==o&&s.columnName===a)return!1}return!0}),a.attachEvent(`onFocus`,function(t){var r=e.locateCell(t),a=e.getState();return clearTimeout(i),r&&!(r.id==a.id&&r.columnName==a.columnName)&&n.isVisible()&&n.save(),!0}),e.attachEvent(`onHide`,function(){clearTimeout(i)}),a.attachEvent(`onBlur`,function(){return i=setTimeout(function(){n.save()}),!0}),r.attachEvent(`onTaskDblClick`,function(t,n){var r=e.getState(),i=e.locateCell(n.target);return!(i&&e.isVisible()&&i.columnName==r.columnName)}),r.attachEvent(`onTaskClick`,function(t,n){if(r._is_icon_open_click(n))return!0;var i=e.getState(),a=e.locateCell(n.target);return a&&e.getEditorConfig(a.columnName)?(e.isVisible()&&i.id==a.id&&i.columnName==a.columnName||e.startEdit(a.id,a.columnName),!1):!0}),r.attachEvent(`onEmptyClick`,function(){return n.save(),!0}),a.attachEvent(`onKeyDown`,function(t,i){var o=e.locateCell(i.target),s=o?e.getEditorConfig(o.columnName):!1,c=e.getState(),l=r.constants.KEY_CODES,u=i.keyCode,d=!1;switch(u){case l.ENTER:e.isVisible()?(e.save(),i.preventDefault(),d=!0):s&&!(i.ctrlKey||i.metaKey||i.shiftKey)&&(n.startEdit(o.id,o.columnName),i.preventDefault(),d=!0);break;case l.ESC:e.isVisible()&&(e.hide(),i.preventDefault(),d=!0);break;case l.UP:case l.DOWN:break;case l.LEFT:case l.RIGHT:(s&&e.isVisible()||c.editorType===`date`)&&(d=!0);break;case l.SPACE:e.isVisible()&&(d=!0),s&&!e.isVisible()&&(n.startEdit(o.id,o.columnName),i.preventDefault(),d=!0);break;case l.DELETE:s&&!e.isVisible()?(n.startEdit(o.id,o.columnName),d=!0):s&&e.isVisible()&&(d=!0);break;case l.TAB:if(e.isVisible()){i.shiftKey?e.editPrevCell(!0):e.editNextCell(!0);var f=e.getState();f.id&&a.focus({type:`taskCell`,id:f.id,column:f.columnName}),i.preventDefault(),d=!0}break;default:if(e.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 p=t.modifiers,m=p.alt||p.ctrl||p.meta||p.shift;p.alt||i.key===`Meta`||m&&a.getCommandHandler(t,`taskCell`)||s&&!e.isVisible()&&(n.startEdit(o.id,o.columnName),d=!0)}break}return!d})},onShow:function(e,t,n){},onHide:function(e,t,n){let r=n.$gantt;r&&r.focus()},destroy:function(){}};function Li(e){var t=null;return{setMapping:function(e){t=e},getMapping:function(){return t||(e.config.keyboard_navigation_cells&&e.ext.keyboardNavigation?Ii:Fi)}}}function Ri(e){var t=function(){};return t.prototype={show:function(e,t,n,r){},hide:function(){},set_value:function(e,t,n,r){this.get_input(r).value=e},get_value:function(e,t,n){return this.get_input(n).value||``},is_changed:function(e,t,n,r){var i=this.get_value(t,n,r);return i&&e&&i.valueOf&&e.valueOf?i.valueOf()!=e.valueOf():i!=e},is_valid:function(e,t,n,r){return!0},save:function(e,t,n){},get_input:function(e){return e.querySelector(`input`)},focus:function(e){var t=this.get_input(e);t&&(t.focus&&t.focus(),t.select&&t.select())}},t}function zi(e){var t=Ri();function n(){return t.apply(this,arguments)||this}return X(n,t),L(n.prototype,{show:function(e,t,n,r){r.innerHTML=`<div role='cell'><input type='text' name='${t.name}' title='${t.name}'></div>`}},!0),n}function Bi(e){var t=Ri();function n(){return t.apply(this,arguments)||this}return X(n,t),L(n.prototype,{show:function(e,t,n,r){var i=n.min||0,a=n.max||100;r.innerHTML=`<div role='cell'><input type='number' min='${i}' max='${a}' name='${t.name}' title='${t.name}'></div>`,r.oninput=function(e){+e.target.value<i&&(e.target.value=i),+e.target.value>a&&(e.target.value=a)}},get_value:function(e,t,n){return this.get_input(n).value||``},is_valid:function(e,t,n,r){return!isNaN(parseInt(e,10))}},!0),n}function Vi(e){var t=Ri();function n(){return t.apply(this,arguments)||this}return X(n,t),L(n.prototype,{show:function(e,t,n,r){for(var i=`<div role='cell'><select name='${t.name}' title='${t.name}'>`,a=[],o=n.options||[],s=0;s<o.length;s++)a.push(`<option value='`+n.options[s].key+`'>`+o[s].label+`</option>`);i+=a.join(``)+`</select></div>`,r.innerHTML=i},get_input:function(e){return e.querySelector(`select`)}},!0),n}function Hi(e){var t=Ri(),n=`%Y-%m-%d`,r=null,i=null;function a(){r||=e.date.date_to_str(n),i||=e.date.str_to_date(n)}function o(){return t.apply(this,arguments)||this}return X(o,t),L(o.prototype,{show:function(t,n,i,o){a();var s=null,c=null;s=typeof i.min==`function`?i.min(t,n):i.min,c=typeof i.max==`function`?i.max(t,n):i.max,o.innerHTML=`<div style='width:140px' role='cell'><input type='date' ${s?` min='`+r(s)+`' `:``} ${c?` max='`+r(c)+`' `:``} name='${n.name}' title='${n.name}'></div>`,o.oninput=function(t){t.target.value&&(s||c)&&(+e.date.str_to_date(`%Y-%m-%d`)(t.target.value)<+s&&(t.target.value=e.date.date_to_str(`%Y-%m-%d`)(s)),+e.date.str_to_date(`%Y-%m-%d`)(t.target.value)>+c&&(t.target.value=e.date.date_to_str(`%Y-%m-%d`)(c)))}},set_value:function(e,t,n,i){e&&e.getFullYear?this.get_input(i).value=r(e):this.get_input(i).value=e},is_valid:function(e,t,n,r){return!(!e||isNaN(e.getTime()))},get_value:function(e,t,n){var r;try{r=i(this.get_input(n).value||``)}catch{r=null}return r}},!0),o}function Ui(e){var t=Ri();function n(){return t.apply(this,arguments)||this}X(n,t);function r(t){return t.formatter||e.ext.formatters.linkFormatter()}function i(e,t){for(var n=(e||``).split(t.delimiter||`,`),r=0;r<n.length;r++){var i=n[r].trim();i?n[r]=i:(n.splice(r,1),r--)}return n.sort(),n}function a(e,t,n){for(var i=e.$target,a=[],o=0;o<i.length;o++){var s=n.getLink(i[o]);a.push(r(t).format(s))}return a.join((t.delimiter||`,`)+` `)}function o(t,n,i){var a=[];return[...new Set(n)].forEach(function(n){var o=r(i).parse(n);o&&(o.target=t,o.id=`predecessor_generated`,e.isLinkAllowed(o)&&(o.id=void 0,a.push(o)))}),a}function s(e){return e.source+`_`+e.target+`_`+e.type+`_`+(e.lag||0)}function c(t,n,r){var i=o(t.id,n,r),a={};t.$target.forEach(function(t){var n=e.getLink(t);a[s(n)]=n.id});var c=[];i.forEach(function(e){var t=s(e);a[t]?delete a[t]:c.push(e)});var l=[];for(var u in a)l.push(a[u]);return{add:c,remove:l}}return L(n.prototype,{show:function(e,t,n,r){r.innerHTML=`<div role='cell'><input type='text' name='${t.name}' title='${t.name}'></div>`},hide:function(){},set_value:function(t,n,r,i){this.get_input(i).value=a(t,r.editor,e)},get_value:function(e,t,n){return i(this.get_input(n).value||``,t.editor)},save:function(t,n,r){var i=c(e.getTask(t),this.get_value(t,n,r),n.editor);(i.add.length||i.remove.length)&&e.batchUpdate(function(){i.add.forEach(function(t){e.addLink(t)}),i.remove.forEach(function(t){e.deleteLink(t)}),e.autoSchedule&&e.autoSchedule()})},is_changed:function(t,n,r,o){var s=this.get_value(n,r,o),c=i(a(t,r.editor,e),r.editor);return s.join()!==c.join()}},!0),n}function Wi(e){var t=Ri();function n(){return t.apply(this,arguments)||this}X(n,t);function r(t){return t.formatter||e.ext.formatters.durationFormatter()}return L(n.prototype,{show:function(e,t,n,r){r.innerHTML=`<div role='cell'><input type='text' name='${t.name}' title='${t.name}'></div>`},set_value:function(e,t,n,i){this.get_input(i).value=r(n.editor).format(e)},get_value:function(e,t,n){return r(t.editor).parse(this.get_input(n).value||``)}},!0),n}function Gi(e){return function(e,i,a){a==`keepDates`?t(e,i):a==`keepDuration`?n(e,i):r(e,i)};function t(t,n){n==`duration`?t.end_date=e.calculateEndDate(t):(n==`end_date`||n==`start_date`)&&(t.duration=e.calculateDuration(t))}function n(t,n){n==`end_date`?t.start_date=i(t):(n==`start_date`||n==`duration`)&&(t.end_date=e.calculateEndDate(t))}function r(t,n){e._getAutoSchedulingConfig().schedule_from_end?n==`end_date`||n==`duration`?t.start_date=i(t):n==`start_date`&&(t.duration=e.calculateDuration(t)):n==`start_date`||n==`duration`?t.end_date=e.calculateEndDate(t):n==`end_date`&&(t.duration=e.calculateDuration(t))}function i(t){return e.calculateEndDate({start_date:t.end_date,duration:-t.duration,task:t})}}function Ki(e){e.config.editor_types={text:new(zi()),number:new(Bi()),select:new(Vi()),date:new(Hi(e)),predecessor:new(Ui(e)),duration:new(Wi(e))}}function qi(e){var t=Li(e),n={};N(n);function r(r){function i(e){if(!k(e,r.$grid))return null;var t=w(e,r.$config.item_attribute),n=w(e,`data-column-name`);if(t&&n){var i=n.getAttribute(`data-column-name`);return{id:t.getAttribute(r.$config.item_attribute),columnName:i}}return null}function a(e,t){for(var n=r.$getConfig(),i=r.getItemTop(e),a=r.getItemHeight(e),o=r.getGridColumns(),s=0,c=0,l=0,u=0;u<o.length;u++){if(o[u].name==t){l=o[u].width;break}n.rtl?c+=o[u].width:s+=o[u].width}return n.rtl?{top:i,right:c,height:a,width:l}:{top:i,left:s,height:a,width:l}}function o(e,t){for(var n=e.getGridColumns(),r=0;r<n.length;r++)if(n[r].name==t)return r;return 0}function s(t,n){var i=r.$getConfig(),s=a(t,n),c=document.createElement(`div`);c.className=`gantt_grid_editor_placeholder`,c.setAttribute(r.$config.item_attribute,t),c.setAttribute(r.$config.bind+`_id`,t),c.setAttribute(`data-column-name`,n);var l=o(r,n);return c.setAttribute(`data-column-index`,l),e._waiAria.inlineEditorAttr(c),i.rtl?c.style.cssText=[`top:`+s.top+`px`,`right:`+s.right+`px`,`width:`+s.width+`px`,`height:`+s.height+`px`].join(`;`):c.style.cssText=[`top:`+s.top+`px`,`left:`+s.left+`px`,`width:`+s.width+`px`,`height:`+s.height+`px`].join(`;`),c}var c=Gi(e),l=[],u=[],d=null,f={_itemId:null,_columnName:null,_editor:null,_editorType:null,_placeholder:null,locateCell:i,getEditorConfig:function(e){var t=r.getColumn(e);if(t)return t.editor},init:function(){var n=t.getMapping();n.init&&n.init(this,r),d=r.$gantt.getDatastore(r.$config.bind),!d&&e.$data.tempAssignmentsStore&&(d=e.$data.tempAssignmentsStore);var i=this;l.push(d.attachEvent(`onIdChange`,function(e,t){i._itemId==e&&(i._itemId=t)})),l.push(d.attachEvent(`onStoreUpdated`,function(){r.$gantt.getState(`batchUpdate`).batch_update||i.isVisible()&&!d.isVisible(i._itemId)&&i.hide()})),u.push(e.attachEvent(`onDataRender`,function(){i._editor&&i._placeholder&&!k(i._placeholder,e.$root)&&r.$grid_data.appendChild(i._placeholder)})),this.init=function(){}},getState:function(){return{editor:this._editor,editorType:this._editorType,placeholder:this._placeholder,id:this._itemId,columnName:this._columnName}},startEdit:function(t,n){if(this.isVisible()&&this.save(),!d.exists(t))return;var r={id:t,columnName:n};if(e.isReadonly(d.getItem(t))){this.callEvent(`onEditPrevent`,[r]);return}if(this.callEvent(`onBeforeEditStart`,[r])===!1){this.callEvent(`onEditPrevent`,[r]);return}let i=this.show(r.id,r.columnName);i&&i.then?i.then((function(){this.setValue(),this.callEvent(`onEditStart`,[r])}).bind(this)):(this.setValue(),this.callEvent(`onEditStart`,[r]))},isVisible:function(){return e._lightbox_id?!!(this._editor&&k(this._placeholder,e._lightbox)):!!(this._editor&&k(this._placeholder,e.$root))},show:function(e,n){this.isVisible()&&this.save();var i={id:e,columnName:n},a=r.getColumn(i.columnName),o=this.getEditorConfig(a.name);if(!o)return;var c=r.$getConfig().editor_types[o.type],l=s(i.id,i.columnName);r.$grid_data.appendChild(l);let u=(function(){this._editor=c,this._placeholder=l,this._itemId=i.id,this._columnName=i.columnName,this._editorType=o.type;var e=t.getMapping();e.onShow&&e.onShow(this,l,r),l._onReMount=(function(){this.setValue()}).bind(this)}).bind(this),d=c.show(i.id,a,o,l);if(d&&d.then)return d.then(()=>{u()});u()},setValue:function(){var t=this.getState(),n=t.id,i=t.columnName,a=r.getColumn(i),o=d.getItem(n),s=this.getEditorConfig(i),c;if(s){if(e._lightbox_id){let t=d.getItem(this._itemId);c=s.map_to===`text`?e.getDatastore(e.config.resource_store).getItem(t.resource_id).text:s.map_to===`start_date`?o.start_date===``||o.start_date===null?e.getTask(e._lightbox_id).start_date:o.start_date:o[s.map_to]}else c=o[s.map_to];s.map_to===`auto`&&(c=d.getItem(n)),this._editor.set_value(c,n,a,this._placeholder),this.focus()}},focus:function(){this._editor.focus(this._placeholder)},getValue:function(){var e=r.getColumn(this._columnName);return this._editor.get_value(this._itemId,e,this._placeholder)},_getItemValue:function(){var t=this.getEditorConfig(this._columnName);if(t){var n;if(e._lightbox_id){let r=d.getItem(this._itemId);n=t.type===`select`&&t.map_to!==`mode`?e.getDatastore(e.config.resource_store).getItem(r.resource_id).id:r[t.map_to]}else n=e.getTask(this._itemId)[t.map_to];return t.map_to==`auto`&&(n=d.getItem(this._itemId)),n}},isChanged:function(){var e=r.getColumn(this._columnName),t=this._getItemValue();return this._editor.is_changed(t,this._itemId,e,this._placeholder)},hide:function(){if(this._itemId){var e=this._itemId,n=this._columnName,i=t.getMapping();i.onHide&&i.onHide(this,this._placeholder,r),this._itemId=null,this._columnName=null,this._editorType=null,this._placeholder&&(this._editor&&this._editor.hide&&this._editor.hide(this._placeholder),this._editor=null,this._placeholder.parentNode&&this._placeholder.parentNode.removeChild(this._placeholder),this._placeholder=null,this.callEvent(`onEditEnd`,[{id:e,columnName:n}]))}},save:function(){if(!(this.isVisible()&&d.exists(this._itemId)&&this.isChanged())){this.hide();return}var t=this._itemId,n=this._columnName;if(d.exists(t)){var i=d.getItem(t),a=this.getEditorConfig(n),o={id:t,columnName:n,newValue:this.getValue(),oldValue:this._getItemValue()};if(this.callEvent(`onBeforeSave`,[o])!==!1&&(!this._editor.is_valid||this._editor.is_valid(o.newValue,o.id,r.getColumn(n),this._placeholder))){e._lightbox_id&&o.newValue==``&&(o.newValue=o.oldValue);var s=a.map_to,l=o.newValue;s==`auto`?this._editor.save(t,r.getColumn(n),this._placeholder):(i[s]=l,c(i,s,e.config.inline_editors_date_processing),d.updateItem(t)),this.callEvent(`onSave`,[o])}e._lightbox_id||this.hide()}},_findEditableCell:function(e,t){var n=e,i=r.getGridColumns()[n],a=i?i.name:null;if(a){for(;a&&!this.getEditorConfig(a);)a=this._findEditableCell(e+t,t);return a}return null},getNextCell:function(e){return this._findEditableCell(r.getColumnIndex(this._columnName,!0)+e,e)},getFirstCell:function(){return this._findEditableCell(0,1)},getLastCell:function(){return this._findEditableCell(r.getGridColumns().length-1,-1)},editNextCell:function(e){var t=this.getNextCell(1);if(t){var n=this.getNextCell(1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(e&&this.moveRow(1)){var r=this.moveRow(1);t=this.getFirstCell(),t&&this.getEditorConfig(t)&&this.startEdit(r,t)}},editPrevCell:function(e){var t=this.getNextCell(-1);if(t){var n=this.getNextCell(-1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(e&&this.moveRow(-1)){var r=this.moveRow(-1);t=this.getLastCell(),t&&this.getEditorConfig(t)&&this.startEdit(r,t)}},moveRow:function(t){var n=t>0?e.getNext:e.getPrev;n=e.bind(n,e);for(var r=n(this._itemId);e.isTaskExists(r)&&e.isReadonly(e.getTask(r));)r=n(r);return r},editNextRow:function(t){var n=this.getState().id;if(e.isTaskExists(n)){var r=null;r=t?this.moveRow(1):e.getNext(n),e.isTaskExists(r)&&this.startEdit(r,this._columnName)}},editPrevRow:function(t){var n=this.getState().id;if(e.isTaskExists(n)){var r=null;r=t?this.moveRow(-1):e.getPrev(n),e.isTaskExists(r)&&this.startEdit(r,this._columnName)}},detachStore:function(){l.forEach(function(e){d.detachEvent(e)}),u.forEach(function(t){e.detachEvent(t)}),l=[],u=[],d=null,this.hide()},destructor:function(){this.detachStore(),this.detachAllEvents()}};return L(f,t),L(f,n),f}var i={init:Ki,createEditors:r};return L(i,t),L(i,n),i}function Ji(e,t,n,r,i){if(!e.start_date||!e.end_date)return null;var a=n.getItemTop(e.id),o=n.getItemHeight(e.id);if(a>t.y_end||a+o<t.y)return!1;var s=200,c=n.posFromDate(e.start_date,n._getPositioningContext?n._getPositioningContext(e):null),l=n.posFromDate(e.end_date,n._getPositioningContext?n._getPositioningContext(e):null),u=Math.min(c,l)-s,d=Math.max(c,l)+s;return!(u>t.x_end||d<t.x)}function Yi(e){function t(t,r,i){var i=r.$getConfig(),a=i.type_renderers[e.getTaskType(t.type)],o=n;return a?a.call(e,t,function(t){return o.call(e,t,r,i)},r):o.call(e,t,r,i)}function n(t,n,r){if(e._isAllowedUnscheduledTask(t)||!e._isTaskInTimelineLimits(t))return;var o=n.getItemPosition(t),l=r,f=n.$getTemplates(),p=e.getTaskType(t.type),m=n.getBarHeight(t.id,p==l.types.milestone),h=0;p==l.types.milestone&&(h=(m-o.height)/2);var g=Math.floor((n.getItemHeight(t.id)-m)/2);let _=e.config.baselines&&t.baselines&&t.baselines.length,v=e.config.baselines&&(e.config.baselines.render_mode==`separateRow`||e.config.baselines.render_mode==`individualRow`);if(_&&v&&t.bar_height!==`full`&&t.bar_height<t.row_height)if(p===l.types.milestone){let e=n.getBarHeight(t.id,!0),r=Math.sqrt(2*e*e);g=Math.floor((r-m)/2)+2}else g=2;p==l.types.milestone&&(o.left-=Math.round(m/2),o.width=m);var y=document.createElement(`div`),b=Math.round(o.width);n.$config.item_attribute&&(y.setAttribute(n.$config.item_attribute,t.id),y.setAttribute(n.$config.bind+`_id`,t.id)),l.show_progress&&p!=l.types.milestone&&c(t,y,b,l,f);var x=s(t,b,f);y.appendChild(x);var S=u(`gantt_task_line`,f.task_class(t.start_date,t.end_date,t),t.id,n);(t.color||t.progressColor||t.textColor)&&(S+=` gantt_task_inline_color`),o.width<20&&(S+=` gantt_thin_task`),y.className=S;var C=[`left:`+o.left+`px`,`top:`+(g+o.top)+`px`,`height:`+m+`px`,`line-height:`+Math.max(m<30?m-2:m,0)+`px`,`width:`+b+`px`];y.style.cssText=C.join(`;`),t.color&&y.style.setProperty(`--dhx-gantt-task-background`,t.color),t.textColor&&y.style.setProperty(`--dhx-gantt-task-color`,t.textColor),t.progressColor&&y.style.setProperty(`--dhx-gantt-task-progress-color`,t.progressColor);var w=i(t,l,f,h);w&&y.appendChild(w),w=a(t,l,f,h),w&&y.appendChild(w),e._waiAria.setTaskBarAttr(t,y);var T=e.getState();let E=!e.isReadonly(t),D=e.ext.dragTimeline&&e.ext.dragTimeline._isDragInProgress();return(E||D)&&(l.drag_resize&&!e.isSummaryTask(t)&&p!=l.types.milestone&&d(y,`gantt_task_drag`,t,function(e){var t=document.createElement(`div`);return t.className=e,t},l),l.drag_links&&l.show_links&&d(y,`gantt_link_control`,t,function(e){var t=document.createElement(`div`);t.className=e,t.style.cssText=[`height:`+m+`px`,`line-height:`+m+`px`].join(`;`);var n=document.createElement(`div`);n.className=`gantt_link_point`;var r=!1;return T.link_source_id&&l.touch&&(r=!0),n.style.display=r?`block`:``,t.appendChild(n),t},l,h)),y}function r(e,t,n,r){if(!t)return null;var i=t(e.start_date,e.end_date,e);if(!i)return null;var a=document.createElement(`div`);return a.className=`gantt_side_content `+n,a.innerHTML=i,r&&(a.style[r.type]=Math.abs(r.value)+`px`),a}function i(e,t,n,i){var a=`gantt_left `+o(!t.rtl,e),s=null;return i&&(s={type:`marginRight`,value:i}),r(e,n.leftside_text,a,s)}function a(e,t,n,i){var a=`gantt_right `+o(!!t.rtl,e),s=null;return i&&(s={type:`marginLeft`,value:i}),r(e,n.rightside_text,a,s)}function o(t,n){var r=l(t);for(var i in r)for(var a=n[i],o=0;o<a.length;o++)for(var s=e.getLink(a[o]),c=0;c<r[i].length;c++)if(s.type==r[i][c])return`gantt_link_crossing`;return``}function s(t,n,r){var i=document.createElement(`div`);return e.getTaskType(t.type)==e.config.types.milestone?e.getTaskType(t.type)==e.config.types.milestone&&n&&(i.style.height=i.style.width=n+`px`):i.innerHTML=r.task_text(t.start_date,t.end_date,t),i.className=`gantt_task_content`,i}function c(t,n,r,i,a){var o=t.progress*1||0;r=Math.max(r,0);var s=document.createElement(`div`),c=Math.round(r*o);c=Math.min(r,c),s.style.width=c+`px`,s.className=`gantt_task_progress`,s.innerHTML=a.progress_text(t.start_date,t.end_date,t),i.rtl&&(s.style.position=`absolute`,s.style.right=`0px`);var l=document.createElement(`div`);l.className=`gantt_task_progress_wrapper`,l.appendChild(s),n.appendChild(l);let u=!e.isReadonly(t),d=e.ext.dragTimeline&&e.ext.dragTimeline._isDragInProgress();if(e.config.drag_progress&&(u||d)){var f=document.createElement(`div`),p=c;i.rtl&&(p=r-c),f.style.left=p+`px`,f.className=`gantt_task_progress_drag`,f.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="9" viewBox="0 0 12 9" fill="none">
|
|
22
|
-
<path d="M5.58397 1.52543C5.78189 1.22856 6.21811 1.22856 6.41602 1.52543L10.5475 7.72265C10.769 8.05493 10.5308 8.5 10.1315 8.5L1.86852 8.5C1.46917 8.5 1.23097 8.05493 1.45249 7.72265L5.58397 1.52543Z" fill="var(--dhx-gantt-progress-handle-background)" stroke="var(--dhx-gantt-progress-handle-border)"/>
|
|
23
|
-
</svg>`,s.appendChild(f),n.appendChild(f)}}function l(t){return t?{$source:[e.config.links.start_to_start],$target:[e.config.links.start_to_start,e.config.links.finish_to_start]}:{$source:[e.config.links.finish_to_start,e.config.links.finish_to_finish],$target:[e.config.links.finish_to_finish]}}function u(t,n,r,i){var a=i.$getConfig(),o=[t];n&&o.push(n);var s=e.getState(),c=e.getTask(r);if(e.getTaskType(c.type)==a.types.milestone?o.push(`gantt_milestone`):e.getTaskType(c.type)==a.types.project&&o.push(`gantt_project`),o.push(`gantt_bar_`+e.getTaskType(c.type)),e.isSummaryTask(c)&&o.push(`gantt_dependent_task`),e.isSplitTask(c)&&(c.$inlineSplit&&c.$inlineSplit.length||a.open_split_tasks&&!c.$open&&c.$inlineSplit&&c.$inlineSplit.length||!a.open_split_tasks)&&o.push(`gantt_split_parent`),a.select_task&&e.isSelectedTask(r)&&o.push(`gantt_selected`),r==s.drag_id&&(o.push(`gantt_drag_`+s.drag_mode),s.touch_drag&&o.push(`gantt_touch_`+s.drag_mode)),s.link_source_id==r&&(o.push(`gantt_link_source`),s.link_from_start?o.push(`gantt_link_from_start`):o.push(`gantt_link_from_end`)),s.link_target_id==r&&o.push(`gantt_link_target`),a.highlight_critical_path&&e.isCriticalTask&&e.isCriticalTask(c)&&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&&(s.link_target_id==r||s.link_source_id==r)){var l=s.link_source_id,u=s.link_from_start,d=s.link_to_start,f=e.isLinkAllowed(l,r,u,d),p=``;p=f?d?`link_start_allow`:`link_finish_allow`:d?`link_start_deny`:`link_finish_deny`,o.push(p)}return o.join(` `)}function d(t,n,r,i,a,o){var s=e.getState(),c,l;+r.start_date>=+s.min_date&&(c=[n,a.rtl?`task_right`:`task_left`,`task_start_date`],l=i(c.join(` `)),l.setAttribute(`data-bind-property`,`start_date`),o&&(l.style.marginLeft=o+`px`),t.appendChild(l)),+r.end_date<=+s.max_date&&(c=[n,a.rtl?`task_left`:`task_right`,`task_end_date`],l=i(c.join(` `)),l.setAttribute(`data-bind-property`,`end_date`),o&&(l.style.marginRight=o+`px`),t.appendChild(l))}return t}function Xi(e){return{render:Yi(e),update:null,isInViewPort:Ji,getVisibleRange:Y}}function Zi(e,t,n,r,i){if(!(e.start_date&&e.end_date||e.$auto_start_date&&e.$auto_end_date))return null;var a=n.getItemTop(e.id),o=n.getItemHeight(e.id);if(a>t.y_end||a+o<t.y)return!1;var s=200;let c=[];e.start_date&&c.push(n.posFromDate(e.start_date,n._getPositioningContext?n._getPositioningContext(e):null)),e.end_date&&c.push(n.posFromDate(e.end_date,n._getPositioningContext?n._getPositioningContext(e):null)),e.$auto_start_date&&c.push(n.posFromDate(e.$auto_start_date,n._getPositioningContext?n._getPositioningContext(e):null)),e.$auto_end_date&&c.push(n.posFromDate(e.$auto_end_date,n._getPositioningContext?n._getPositioningContext(e):null));var l=Math.min(...c)-s,u=Math.max(...c)+s;return!(l>t.x_end||u<t.x)}function Qi(e){function t(t,r,i){var i=r.$getConfig(),a=i.type_renderers[e.getTaskType(t.type)],o=n;return a?a.call(e,t,function(t){return o.call(e,t,r,i)},r):o.call(e,t,r,i)}function n(t,n,r){if(e._isAllowedUnscheduledTask(t)||!e._isTaskInTimelineLimits(t))return;var o=n.getItemPosition(t),c=r,d=n.$getTemplates(),f=e.getTaskType(t.type),p=n.getBarHeight(t.id,f==c.types.milestone),m=0;f==c.types.milestone&&(m=(p-o.height)/2);var h=Math.floor((n.getItemHeight(t.id)-p)/2);let g=e.config.baselines&&t.baselines&&t.baselines.length,_=e.config.baselines&&(e.config.baselines.render_mode==`separateRow`||e.config.baselines.render_mode==`individualRow`);if(g&&_&&t.bar_height!==`full`&&t.bar_height<t.row_height)if(f===c.types.milestone){let e=n.getBarHeight(t.id,!0),r=Math.sqrt(2*e*e);h=Math.floor((r-p)/2)+2}else h=2;var v=document.createElement(`div`),y=Math.round(o.width);n.$config.item_attribute&&(v.setAttribute(n.$config.item_attribute,t.id),v.setAttribute(n.$config.bind+`_id`,t.id));let b=document.createElement(`div`);b.classList.add(`gantt_task_line_planned`,`gantt_task_line`,`gantt_project`);let x=n.getItemPosition(t,t.start_date,t.end_date);b.style.cssText=[`position:absolute`,`left:`+x.left+`px`,`top:`+(h/2+1)+`px`,`height:5px`,`width:`+x.width+`px`].join(`;`),b.style.setProperty(`--dhx-gantt-scheduled-summary-bracket-size`,`10px`),v.appendChild(b);let S=document.createElement(`div`),C=n.getItemPosition(t,t.$auto_start_date||t.start_date,t.$auto_end_date||t.end_date);S.classList.add(`gantt_task_line_actual`,`gantt_task_line`,`gantt_project`),S.style.cssText=[`position:absolute`,`left:`+C.left+`px`,`top:16px`,`height:8px`,`width:`+C.width+`px`].join(`;`),v.appendChild(S),c.show_progress&&f!=c.types.milestone&&s(t,S,y,c,d);var w=l(`gantt_task_line`,d.task_class(t.$auto_start_date||t.start_date,t.$auto_end_date||t.end_date,t),t.id,n);(t.color||t.progressColor||t.textColor)&&(w+=` gantt_task_inline_color`),o.width<20&&(w+=` gantt_thin_task`),(t.start_date>t.$auto_start_date||t.end_date<t.$auto_end_date)&&(w+=` gantt_project_scheduling_conflict`),v.className=w,v.style.top=h+o.top+`px`,v.style.height=(f==c.types.milestone?o.height:p)+`px`,t.color&&v.style.setProperty(`--dhx-gantt-task-background`,t.color),t.textColor&&v.style.setProperty(`--dhx-gantt-task-color`,t.textColor),t.progressColor&&v.style.setProperty(`--dhx-gantt-task-progress-color`,t.progressColor);var T=i(t,c,d,m);T&&b.appendChild(T),T=a(t,c,d,m),T&&b.appendChild(T),e._waiAria.setTaskBarAttr(t,v);var E=e.getState();return e.isReadonly(t)||(c.drag_resize&&u(b,`gantt_task_drag`,t,function(e){var t=document.createElement(`div`);return t.className=e,t},c),c.drag_links&&c.show_links&&u(b,`gantt_link_control`,t,function(e){var t=document.createElement(`div`);t.className=e,t.style.cssText=[`height:`+p+`px`,`line-height:`+p+`px`].join(`;`);var n=document.createElement(`div`);n.className=`gantt_link_point`;var r=!1;return E.link_source_id&&c.touch&&(r=!0),n.style.display=r?`block`:``,t.appendChild(n),t},c,m)),v}function r(e,t,n,r){if(!t)return null;var i=t(e.start_date,e.end_date,e);if(!i)return null;var a=document.createElement(`div`);return a.className=`gantt_side_content `+n,a.innerHTML=i,r&&(a.style[r.type]=Math.abs(r.value)+`px`),a}function i(e,t,n,i){var a=`gantt_left `+o(!t.rtl,e),s=null;return i&&(s={type:`marginRight`,value:i}),r(e,n.leftside_text,a,s)}function a(e,t,n,i){var a=`gantt_right `+o(!!t.rtl,e),s=null;return i&&(s={type:`marginLeft`,value:i}),r(e,n.rightside_text,a,s)}function o(t,n){var r=c(t);for(var i in r)for(var a=n[i],o=0;o<a.length;o++)for(var s=e.getLink(a[o]),l=0;l<r[i].length;l++)if(s.type==r[i][l])return`gantt_link_crossing`;return``}function s(t,n,r,i,a){var o=t.progress*1||0;r=Math.max(r-2,0);var s=document.createElement(`div`),c=Math.round(r*o);c=Math.min(r,c),t.progressColor&&(s.style.backgroundColor=t.progressColor,s.style.opacity=1),s.style.width=c+`px`,s.className=`gantt_task_progress`,s.innerHTML=a.progress_text(t.start_date,t.end_date,t),i.rtl&&(s.style.position=`absolute`,s.style.right=`0px`);var l=document.createElement(`div`);if(l.className=`gantt_task_progress_wrapper`,l.appendChild(s),n.appendChild(l),e.config.drag_progress&&!e.isReadonly(t)){var u=document.createElement(`div`),d=c;i.rtl&&(d=r-c),u.style.left=d+`px`,u.className=`gantt_task_progress_drag`,s.appendChild(u),n.appendChild(u)}}function c(t){return t?{$source:[e.config.links.start_to_start],$target:[e.config.links.start_to_start,e.config.links.finish_to_start]}:{$source:[e.config.links.finish_to_start,e.config.links.finish_to_finish],$target:[e.config.links.finish_to_finish]}}function l(t,n,r,i){var a=i.$getConfig(),o=[t];n&&o.push(n);var s=e.getState(),c=e.getTask(r);if(e.getTaskType(c.type)==a.types.milestone?o.push(`gantt_milestone`):e.getTaskType(c.type)==a.types.project&&o.push(`gantt_project`),o.push(`gantt_bar_`+e.getTaskType(c.type)),e.isSummaryTask(c)&&o.push(`gantt_dependent_task`),e.isSplitTask(c)&&(c.$inlineSplit&&c.$inlineSplit.length||a.open_split_tasks&&!c.$open||!a.open_split_tasks)&&o.push(`gantt_split_parent`),a.select_task&&e.isSelectedTask(r)&&o.push(`gantt_selected`),r==s.drag_id&&(o.push(`gantt_drag_`+s.drag_mode),s.touch_drag&&o.push(`gantt_touch_`+s.drag_mode)),s.link_source_id==r&&o.push(`gantt_link_source`),s.link_target_id==r&&o.push(`gantt_link_target`),a.highlight_critical_path&&e.isCriticalTask&&e.isCriticalTask(c)&&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&&(s.link_target_id==r||s.link_source_id==r)){var l=s.link_source_id,u=s.link_from_start,d=s.link_to_start,f=e.isLinkAllowed(l,r,u,d),p=``;p=f?d?`link_start_allow`:`link_finish_allow`:d?`link_start_deny`:`link_finish_deny`,o.push(p)}return o.join(` `)}function u(t,n,r,i,a,o){var s=e.getState(),c,l;+r.start_date>=+s.min_date&&(c=[n,a.rtl?`task_right`:`task_left`,`task_start_date`],l=i(c.join(` `)),l.setAttribute(`data-bind-property`,`start_date`),o&&(l.style.marginLeft=o+`px`),t.appendChild(l)),+r.end_date<=+s.max_date&&(c=[n,a.rtl?`task_left`:`task_right`,`task_end_date`],l=i(c.join(` `)),l.setAttribute(`data-bind-property`,`end_date`),o&&(l.style.marginRight=o+`px`),t.appendChild(l))}return t}function $i(e){return{render:Qi(e),update:null,isInViewPort:Zi,getVisibleRange:Y}}function ea(){return console.error(`You are trying to use a Pro feature that is not available in this edition of dhtmlxGantt.`),{render:function(){},isInViewPort:function(){},getVisibleRange:function(){}}}function ta(e,t,n){return{top:t.getItemTop(e.id),height:t.getItemHeight(e.id),left:0,right:1/0}}function na(e,t){var n=0,r=e.left.length-1;if(t)for(var i=0;i<e.left.length;i++){var a=e.left[i];if(a<t.x&&(n=i),a>t.x_end){r=i;break}}return{start:n,end:r}}function ra(e,t,n,r){var i=t.width[e];if(i<=0)return!1;if(!r.config.smart_rendering||$r(r))return!0;var a=t.left[e]-i,o=t.left[e]+i;return a<=n.x_end&&o>=n.x}function ia(e,t){var n=t.config.timeline_placeholder;if(e||=[],n&&e.filter(e=>e.id===`timeline_placeholder_task`).length===0){var r=t.getState(),i=null,a=r.min_date,o=r.max_date;e.length&&(i=e[e.length-1].id);var s={start_date:a,end_date:o,row_height:n.height||0,id:`timeline_placeholder_task`,unscheduled:!0,lastTaskId:i,calendar_id:n.calendar||`global`,$source:[],$target:[]};e.push(s)}}function aa(e){var t={},n={};function r(e){if(t[e]){for(let n in t[e]){let r=t[e][n];r&&r.parentNode&&r.parentNode.removeChild(r)}delete t[e]}n[e]&&delete n[e]}function i(){for(let e in t)r(e);t={},n={}}function a(e,n){return!!(t[e.id][n]&&t[e.id][n].parentNode)}function o(e,n){t[e]&&t[e][n]&&t[e][n].parentNode&&t[e][n].parentNode.removeChild(t[e][n])}function s(e){var t=e.$getTemplates(),n;return typeof t.task_cell_class<`u`?(n=t.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.`)):n=t.timeline_cell_class,n}function c(e){return e.$getTemplates().timeline_cell_content}function l(e,r,i,l,d){var f=i.getScale(),p=f.count,m=s(i),h=c(i);if(l.show_task_cells){t[e.id]||(t[e.id]={}),n[e.id]||(n[e.id]={});var g=na(f,d);for(var _ in n[e.id]){var v=n[e.id][_];(Number(v)<g.start||Number(v)>g.end)&&o(e.id,v)}n[e.id]={};for(var y=g.start;y<=g.end;y++){var b=u(f,y,e,d,p,m,h,l);!b&&a(e,y)?o(e.id,y):b&&!b.parentNode&&r.appendChild(b)}}}function u(r,i,a,o,s,c,l,u){var d=r.width[i],f=``;if(ra(i,r,o,e)){var p=c(a,r.trace_x[i]),m=``;if(l&&(m=l(a,r.trace_x[i])),u.static_background){var h=!!(p||m);if(!(u.static_background_cells&&h))return null}if(t[a.id][i])return n[a.id][i]=i,t[a.id][i];var g=document.createElement(`div`);return g.style.width=d+`px`,f=`gantt_task_cell`+(i==s-1?` gantt_last_cell`:``),p&&(f+=` `+p),g.className=f,m&&(g.innerHTML=m),g.style.position=`absolute`,g.style.left=r.left[i]+`px`,t[a.id][i]=g,n[a.id][i]=i,g}return null}function d(r,i,a,o){var l=i.$getTemplates(),d=i.getScale(),f=d.count;if(a.static_background&&!a.static_background_cells)return null;var p=document.createElement(`div`),m=s(i),h=c(i),g;if(g=!o||!a.smart_rendering||$r(e)?{start:0,end:f-1}:na(d,o.x),a.show_task_cells){t[r.id]={},n[r.id]={};for(var _=g.start;_<=g.end;_++){var v=u(d,_,r,o,f,m,h,a);v&&p.appendChild(v)}}let y=i.$config.rowStore,b=y.getIndexById(r.id)%2!=0;var x=l.task_row_class(r.start_date,r.end_date,r),S=`gantt_task_row`+(b?` odd`:``)+(x?` `+x:``);if(y.isSelected(r.id)&&(S+=` gantt_selected`),p.className=S,a.smart_rendering?(p.style.position=`absolute`,p.style.top=i.getItemTop(r.id)+`px`,p.style.width=`100%`):p.style.position=`relative`,p.style.height=i.getItemHeight(r.id)+`px`,r.id==`timeline_placeholder_task`){var C=0;r.lastTaskId&&(C=i.getItemTop(r.lastTaskId)+i.getItemHeight(r.lastTaskId));var w=(r.row_height||i.$task_data.offsetHeight)-C;w<0&&(w=0),a.smart_rendering&&(p.style.top=C+`px`),p.style.height=w+`px`}return i.$config.item_attribute&&(p.setAttribute(i.$config.item_attribute,r.id),p.setAttribute(i.$config.bind+`_id`,r.id)),p}return{render:d,update:l,clear:i,getRectangle:ta,getVisibleRange:Y,prepareData:ia}}var oa=function(e,t){let n=t.baselines&&t.baselines.length,r=e.config.baselines.render_mode==`separateRow`||e.config.baselines.render_mode==`individualRow`;if(n&&r)return!0},sa=function(e,t){let n=!1;return e.eachTask(function(t){n||=oa(e,t)},t),n},ca=function(e){return e.render&&e.render==`split`&&!e.$open},la=function(e,t,n,r){let i=r||t.$task_data.scrollHeight,a=!1,o=!1;return e.eachParent(function(e){if(ca(e)){o=!0;let n=t.getItemPosition(e).rowHeight;n<i&&(i=n,a=!0)}},n.id),{maxHeight:i,shrinkHeight:a,splitChild:o}};function ua(e){function t(t,o,s){var c=e.getTask(t.source);if(c.hide_bar)return;var l=e.getTask(t.target);if(l.hide_bar)return;var u=a.get_endpoint(t,o,c,l),d=u.e_y-u.y;if(!(u.e_x-u.x)&&!d)return null;var f=a.get_points(t,o,c,l);let p=n(r(i.get_lines(f,o).filter(e=>e.size>0),s),o,t,s);var m=`gantt_task_link`;t.color&&(m+=` gantt_link_inline_color`);var h=e.templates.link_class?e.templates.link_class(t):``;return h&&(m+=` `+h),s.highlight_critical_path&&e.isCriticalLink&&e.isCriticalLink(t)&&(m+=` gantt_critical_link`),p.className=m,o.$config.link_attribute&&(p.setAttribute(o.$config.link_attribute,t.id),p.setAttribute(`link_id`,t.id)),t.color&&p.style.setProperty(`--dhx-gantt-link-background`,t.color),e._waiAria.linkAttr(t,p),p}function n(e,t,n,r){let a=document.createElement(`div`);return e.forEach(e=>{let o;e.type===`line`?o=i.render_line(e.data,null,t,n.source):e.type===`corner`?o=i.render_corner(e.data,t):e.type===`arrow`&&(o=i.render_arrow(e.data,r)),a.appendChild(o)}),a}function r(e,t){let n=t.link_radius||4,r=t.link_arrow_size||6,i=[];for(let r=0;r<e.length;r++){let a=e[r],o=e[r+1];if(!o||t.link_radius<=1){i.push({type:`line`,data:a});continue}if(a.direction!==o.direction){if(a.size<n||o.size<n){i.push({type:`line`,data:a});continue}a.size-=n,i.push({type:`line`,data:a});let e=a.x,r=a.y-t.link_line_width/2;switch(a.direction){case`right`:e+=a.size;break;case`left`:e-=a.size;break;case`down`:r+=a.size;break;case`up`:r-=a.size;break}let s={x:e,y:r,direction:{from:a.direction,to:o.direction},radius:n};switch(i.push({type:`corner`,data:s}),o.direction){case`right`:o.x+=n,o.size-=n;break;case`left`:o.x-=n,o.size-=n;break;case`down`:o.y+=n,o.size-=n;break;case`up`:o.y-=n,o.size-=n;break}}else i.push({type:`line`,data:a})}let a=e[e.length-1];if(a.direction===`right`||a.direction===`left`){a.size-=r*3/4;let e=a.direction===`right`?a.x+a.size:a.x-a.size-r/2,n=a.y-t.link_line_width/2-r/2+1;a.direction===`left`?(--n,e-=2):--e;let o={x:e,y:n,size:r,direction:a.direction};i.push({type:`line`,data:a}),i.push({type:`arrow`,data:o})}else i.push({type:`line`,data:a});return i}var i={current_pos:null,dirs:{left:`left`,right:`right`,up:`up`,down:`down`},path:[],clear:function(){this.current_pos=null,this.path=[]},point:function(t){this.current_pos=e.copy(t)},get_lines:function(e){this.clear(),this.point(e[0]);for(var t=1;t<e.length;t++)this.line_to(e[t]);return this.get_path()},line_to:function(t){var n=e.copy(t),r=this.current_pos,i=this._get_line(r,n);this.path.push(i),this.current_pos=n},get_path:function(){return this.path},get_wrapper_sizes:function(e,t,n){var r=t.$getConfig(),i,a=r.link_wrapper_width,o=e.y-a/2;switch(e.direction){case this.dirs.left:i={top:o,height:a,lineHeight:a,left:e.x-e.size-a/2,width:e.size+a};break;case this.dirs.right:i={top:o,lineHeight:a,height:a,left:e.x-a/2,width:e.size+a};break;case this.dirs.up:i={top:o-e.size,lineHeight:e.size+a,height:e.size+a,left:e.x-a/2,width:a};break;case this.dirs.down:i={top:o,lineHeight:e.size+a,height:e.size+a,left:e.x-a/2,width:a};break}return i},get_line_sizes:function(e,t){var n=t.$getConfig(),r,i=n.link_line_width,a=n.link_wrapper_width,o=e.size+i;switch(e.direction){case this.dirs.left:case this.dirs.right:r={height:i,width:o,marginTop:(a-i)/2,marginLeft:(a-i)/2};break;case this.dirs.up:case this.dirs.down:r={height:o,width:i,marginTop:(a-i)/2,marginLeft:(a-i)/2};break}return r},render_line:function(e,t,n,r){var i=this.get_wrapper_sizes(e,n,r),a=document.createElement(`div`);a.style.cssText=[`top:`+i.top+`px`,`left:`+i.left+`px`,`height:`+i.height+`px`,`width:`+i.width+`px`].join(`;`),a.className=`gantt_line_wrapper`;var o=this.get_line_sizes(e,n),s=document.createElement(`div`);return s.style.cssText=[`height:`+o.height+`px`,`width:`+o.width+`px`,`margin-top:`+o.marginTop+`px`,`margin-left:`+o.marginLeft+`px`].join(`;`),s.className=`gantt_link_line_`+e.direction,a.appendChild(s),a},render_corner:function(e,t){let n=e.radius,r=t.$getConfig(),i=r.link_line_width||2,a=document.createElement(`div`);a.classList.add(`gantt_link_corner`),a.classList.add(`gantt_link_corner_${e.direction.from}_${e.direction.to}`),a.style.width=`${n}px`,a.style.height=`${n}px`;let o,s;return e.direction.from===`right`&&e.direction.to===`down`?(o=`Right`,s=`Top`,a.style.left=`${e.x-r.link_line_width/2}px`,a.style.top=`${e.y}px`):e.direction.from===`down`&&e.direction.to===`right`?(o=`Left`,s=`Bottom`,a.style.left=`${e.x-r.link_line_width/2}px`,a.style.top=`${e.y}px`):e.direction.from===`right`&&e.direction.to===`up`?(o=`Right`,s=`Bottom`,a.style.left=`${e.x-r.link_line_width/2}px`,a.style.top=`${e.y-n}px`):e.direction.from===`up`&&e.direction.to===`right`?(o=`Left`,s=`Top`,a.style.left=`${e.x-r.link_line_width/2}px`,a.style.top=`${e.y-n}px`):e.direction.from===`left`&&e.direction.to===`down`?(o=`Left`,s=`Top`,a.style.left=`${e.x-n-r.link_line_width/2}px`,a.style.top=`${e.y}px`):e.direction.from===`down`&&e.direction.to===`left`?(o=`Right`,s=`Bottom`,a.style.left=`${e.x-n-r.link_line_width/2}px`,a.style.top=`${e.y}px`):e.direction.from===`left`&&e.direction.to===`up`?(o=`Left`,s=`Bottom`,a.style.left=`${e.x-n-r.link_line_width/2}px`,a.style.top=`${e.y-n}px`):e.direction.from===`up`&&e.direction.to===`left`&&(o=`Right`,s=`Top`,a.style.left=`${e.x-n-r.link_line_width/2}px`,a.style.top=`${e.y-n}px`),a.style[`border${s}Width`]=`${i}px`,a.style[`border${o}Width`]=`${i}px`,a.style[`border${o}Style`]=`solid`,a.style[`border${s}Style`]=`solid`,a.style[`border${s}${o}Radius`]=`${n}px`,a},render_arrow(e,t){var n=document.createElement(`div`),r=e.y,i=e.x,a=t.link_arrow_size;n.style.setProperty(`--dhx-gantt-icon-size`,`${a}px`);var o=`gantt_link_arrow gantt_link_arrow_`+e.direction;return n.style.top=r+`px`,n.style.left=i+`px`,n.className=o,n},_get_line:function(e,t){var n=this.get_direction(e,t),r={x:e.x,y:e.y,direction:this.get_direction(e,t)};return n==this.dirs.left||n==this.dirs.right?r.size=Math.abs(e.x-t.x):r.size=Math.abs(e.y-t.y),r},get_direction:function(e,t){var n=0;return n=t.x<e.x?this.dirs.left:t.x>e.x?this.dirs.right:t.y>e.y?this.dirs.down:this.dirs.up,n}},a={path:[],clear:function(){this.path=[]},current:function(){return this.path[this.path.length-1]},point:function(t){return t?(this.path.push(e.copy(t)),t):this.current()},point_to:function(t,n,r){r=r?{x:r.x,y:r.y}:e.copy(this.point());var a=i.dirs;switch(t){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;break}return this.point(r)},get_points:function(t,n,r,a){var o=this.get_endpoint(t,n,r,a),s=e.config,c=o.e_y-o.y,l=o.e_x-o.x,u=i.dirs,d=n.getItemHeight(t.source);this.clear(),this.point({x:o.x,y:o.y});var f=2*s.link_arrow_size,p=this.get_line_type(t,n.$getConfig()),m=o.e_x>o.x;if(p.from_start&&p.to_start)this.point_to(u.left,f),m?(this.point_to(u.down,c),this.point_to(u.right,l)):(this.point_to(u.right,l),this.point_to(u.down,c)),this.point_to(u.right,f);else if(!p.from_start&&p.to_start)if(c!==0&&(m=o.e_x>o.x+2*f),this.point_to(u.right,f),m)l-=f,this.point_to(u.down,c),this.point_to(u.right,l);else{l-=2*f;var h=c>0?1:-1;this.point_to(u.down,d/2*h),this.point_to(u.right,l),this.point_to(u.down,h*(Math.abs(c)-d/2)),this.point_to(u.right,f)}else if(!p.from_start&&!p.to_start)this.point_to(u.right,f),m?(this.point_to(u.right,l),this.point_to(u.down,c)):(this.point_to(u.down,c),this.point_to(u.right,l)),this.point_to(u.left,f);else if(p.from_start&&!p.to_start)if(c!==0&&(m=o.e_x>o.x-2*f),this.point_to(u.left,f),!m)l+=f,this.point_to(u.down,c),this.point_to(u.right,l);else{l+=2*f;var h=c>0?1:-1;this.point_to(u.down,d/2*h),this.point_to(u.right,l),this.point_to(u.down,h*(Math.abs(c)-d/2)),this.point_to(u.left,f)}return this.path},get_line_type:function(t,n){var r=n.links,i=!1,a=!1;return t.type==r.start_to_start?i=a=!0:t.type==r.finish_to_finish?i=a=!1:t.type==r.finish_to_start?(i=!1,a=!0):t.type==r.start_to_finish?(i=!0,a=!1):e.assert(!1,`Invalid link type`),n.rtl&&(i=!i,a=!a),{from_start:i,to_start:a}},get_endpoint:function(e,t,n,r){var i=t.$getConfig(),a=this.get_line_type(e,i),s=a.from_start,c=a.to_start,l=o(n,t,i),u=o(r,t,i);return{x:s?l.left:l.left+l.width,e_x:c?u.left:u.left+u.width,y:l.top+l.rowHeight/2-1,e_y:u.top+u.rowHeight/2-1}}};function o(t,n,r){var i=n.getItemPosition(t);let a=la(e,n,t),o=a.maxHeight,s=a.splitChild,c=e.config.baselines&&(e.config.baselines.render_mode==`separateRow`||e.config.baselines.render_mode==`individualRow`)&&t.baselines&&t.baselines.length;a.shrinkHeight&&(i.rowHeight=o);let l,u=e.getTaskType(t.type)==r.types.milestone;if(u){let e=n.getBarHeight(t.id,!0);l=Math.sqrt(2*e*e),a.shrinkHeight&&o<e&&(e=o,l=o),i.left-=l/2,i.width=l}if(s)if(o>=i.height){let n=sa(e,t.parent);c||n?u?(i.rowHeight=i.height+4,i.left+=(i.width-i.rowHeight+4)/2,i.width=i.rowHeight-3):i.rowHeight=i.height+6:u&&(i.left+=(l-i.height)/2)}else i.rowHeight=o+2,u&&(i.left+=(i.width-i.rowHeight+4)/2,i.width=i.rowHeight-3);else c&&(i.rowHeight=i.height+4);return i}return{render:t,update:null,isInViewPort:si,getVisibleRange:oi()}}function da(e,t,n,r,i){if(i.$ui.getView(`grid`)&&(i.config.keyboard_navigation&&i.getSelectedId()||i.ext.inlineEditors&&i.ext.inlineEditors.getState().id))return n&&n.$config&&!n.$config.type?!0:!!e.$expanded_branch;var a=n.getItemTop(e.id),o=n.getItemHeight(e.id);return!(a>t.y_end||a+o<t.y)}function fa(e){function t(t,n,r,i){for(var a=n.getGridColumns(),o=n.$getTemplates(),s=n.$config.rowStore,c=[],l,u=0;u<a.length;u++){var d=u==a.length-1,f=a[u],p,m,h;if(f.name==`add`){var g=e._waiAria.gridAddButtonAttrString(f);m=`<div `+g+` class='gantt_add'></div>`,h=``}else m=f.template?f.template(t):t[f.name],P(m)&&(m=o.date_grid(m,t,f.name)),m??=``,h=m,m=`<div class='gantt_tree_content'>`+m+`</div>`;var _=`gantt_cell`+(d?` gantt_last_cell`:``),v=[];if(f.tree){_+=` gantt_cell_tree`;for(var y=0;y<t.$level;y++)v.push(o.grid_indent(t));l=s.hasChild(t.id)&&!(e.isSplitTask(t)&&!e.config.open_split_tasks),l?(v.push(o.grid_open(t)),v.push(o.grid_folder(t))):(v.push(o.grid_blank(t)),v.push(o.grid_file(t)))}var b=`width:`+(f.width-+!!d)+`px;`;if(this.defined(f.align)){var x={right:`flex-end`,left:`flex-start`,center:`center`}[f.align];b+=`text-align:`+f.align+`;justify-content:`+x+`;`}var g=e._waiAria.gridCellAttrString(f,h,t);v.push(m),p=`<div class='`+_+`' data-column-index='`+u+`' data-column-name='`+f.name+`' style='`+b+`' `+g+`>`+v.join(``)+`</div>`,c.push(p)}switch(_=``,s.$config.name){case`task`:_=e.getGlobalTaskIndex(t.id)%2==0?``:` odd`;break;case`resource`:_=s.visibleOrder.indexOf(t.id)%2==0?``:` odd`;break}if(_+=t.$transparent?` gantt_transparent`:``,_+=t.$dataprocessor_class?` `+t.$dataprocessor_class:``,o.grid_row_class){var S=o.grid_row_class.call(e,t.start_date,t.end_date,t);S&&(_+=` `+S)}s.isSelected(t.id)&&(_+=` gantt_selected`);var C=document.createElement(`div`);C.className=`gantt_row`+_+` gantt_row_`+e.getTaskType(t.type);var w=n.getItemHeight(t.id);return C.style.height=w+`px`,C.style.lineHeight=w+`px`,r.smart_rendering&&(C.style.position=`absolute`,C.style.left=`0px`,C.style.top=n.getItemTop(t.id)+`px`),n.$config.item_attribute&&(C.setAttribute(n.$config.item_attribute,t.id),C.setAttribute(n.$config.bind+`_id`,t.id)),e._waiAria.taskRowAttr(t,C),C.innerHTML=c.join(``),C}function n(t,n,r){for(var i=r.getGridColumns(),a=0;a<i.length;a++){var o=i[a];if(o.onrender){var s=n.querySelector(`[data-column-name="${o.name}"]`);if(s){var c=o.onrender(t,s);if(c&&typeof c==`string`)s.innerHTML=c;else if(c&&typeof c==`object`&&e.config.external_render){var l=e.config.external_render;l.isElement(c)&&l.renderElement(c,s)}}}}}return{render:t,update:null,getRectangle:ei,isInViewPort:da,getVisibleRange:Y,onrender:n}}function pa(e){let t={};e.$data.tasksStore.attachEvent(`onStoreUpdated`,function(){t={}});function n(e,n,r,a){let o=e.id+`_`+n+`_`+r.unit+`_`+r.step,s;return s=t[o]?t[o]:t[o]=i(e,n,r,a),s}function r(t,n,r){let i=n.unit,a=n.step,o={},s={};for(let c=0;c<t.length;c++){let l=t[c],u=l;if(r&&(u=e.getTask(l.task_id)),u.unscheduled)continue;let d=l.start_date||u.start_date,f=l.end_date||u.end_date;r&&(l.start_date&&(d=new Date(Math.max(l.start_date.valueOf(),u.start_date.valueOf()))),l.end_date&&(f=new Date(Math.min(l.end_date.valueOf(),u.end_date.valueOf()))),l.mode&&l.mode==`fixedDates`&&(d=l.start_date,f=l.end_date));let p=xe(n.trace_x,d.valueOf()),m=new Date(n.trace_x[p]||e.date[i+`_start`](new Date(d))),h=new Date(Math.min(d.valueOf(),m.valueOf())),g=e.config.work_time?e.getTaskCalendar(u):e;for(s[g.id]={};h<f;){let t=s[g.id],n=h.valueOf();h=e.date.add(h,a,i),t[n]!==!1&&(o[n]||(o[n]={tasks:[],assignments:[]}),o[n].tasks.push(u),r&&o[n].assignments.push(l))}}return o}function i(t,n,i,a){let o,s=!1,c={};e.config.process_resource_assignments&&n===e.config.resource_property?(o=t.$role==`task`?e.getResourceAssignments(t.$resource_id,t.$task_id):e.getResourceAssignments(t.id),s=!0):o=t.$role==`task`?[]:e.getTaskBy(n,t.id),c=r(o,i,s);let l=i.unit,u=i.step,d=[],f,p,m,h,g,_=a.$getConfig();for(let t=0;t<i.trace_x.length;t++)f=new Date(i.trace_x[t]),p=e.date.add(f,u,l),g=c[f.valueOf()]||{},m=g.tasks||[],h=g.assignments||[],m.length||_.resource_render_empty_cells?d.push({start_date:f,end_date:p,tasks:m,assignments:h}):d.push(null);return d}return n}function ma(e){var t=pa(e),n={};function r(e,t,n,r,i){var a=n.resource_cell_class(t.start_date,t.end_date,e,t.tasks,t.assignments),o=n.resource_cell_value(t.start_date,t.end_date,e,t.tasks,t.assignments),s=i.getItemHeight(e.id)-1;if(a||o){var c=i.getItemPosition(e,t.start_date,t.end_date),l=document.createElement(`div`);return l.setAttribute(i.$config.item_attribute,e.id),l.className=[`gantt_resource_marker`,a].join(` `),l.style.cssText=[`left:`+c.left+`px`,`width:`+c.width+`px`,`height:`+s+`px`,`line-height:`+s+`px`,`top:`+c.top+`px`].join(`;`),o&&(l.innerHTML=o),l}return null}function i(e,t){n[e]&&n[e][t]&&n[e][t].parentNode&&n[e][t].parentNode.removeChild(n[e][t])}function a(i,a,o,s){var c=a.$getTemplates(),l=a.getScale(),u=t(i,o.resource_property,a.getScale(),a),d=!!s,f=[];n[i.id]={};for(var p=na(l,s),m=p.start;m<=p.end;m++){var h=u[m];if(h&&!(d&&!ra(m,l,s,e))){var g=r(i,h,c,o,a);g&&(f.push(g),n[i.id][m]=g)}}var _=null;if(f.length){_=document.createElement(`div`);for(var v=0;v<f.length;v++)_.appendChild(f[v])}return _}function o(a,o,s,c,l){var u=s.$getTemplates(),d=s.getScale(),f=t(a,c.resource_property,s.getScale(),s),p=na(d,l),m={};if(n&&n[a.id])for(var h in n[a.id])m[h]=h;for(var g=p.start;g<=p.end;g++){var _=f[g];if(m[g]=!1,_){if(!ra(g,d,l,e)){i(a.id,g);continue}if(!n[a.id]||!n[a.id][g]){var v=r(a,_,u,c,s);v&&(o.appendChild(v),n[a.id][g]=v)}else n[a.id]&&n[a.id][g]&&!n[a.id][g].parentNode&&o.appendChild(n[a.id][g])}}for(var h in m)m[h]!==!1&&i(a.id,h)}return{render:a,update:o,getRectangle:ta,getVisibleRange:Y}}function ha(e){function t(t,n,r){var i=n.$getConfig(),a=document.createElement(`div`);return a.className=`gantt_task_grid_row_resize_wrap`,a.style.top=n.getItemTop(t.id)+n.getItemHeight(t.id)+`px`,a.innerHTML=`<div class='gantt_task_grid_row_resize' role='cell'></div>`,a.setAttribute(i.task_grid_row_resizer_attribute,t.id),e._waiAria.rowResizerAttr(a),a}return{render:t,update:null,getRectangle:ei,getVisibleRange:Y}}function ga(e,t){var n=e.$services.getService(`dnd`);if(!t.$config.bind||!e.getDatastore(t.$config.bind))return;function r(e){return w(e,t.$config.item_attribute)}function i(){return e.getDatastore(t.$config.bind)}function a(t){return kt(t,e,i())}var o=new n(t.$grid_data,{updates_per_second:60});e.defined(t.$getConfig().dnd_sensitivity)&&(o.config.sensitivity=t.$getConfig().dnd_sensitivity),o.attachEvent(`onBeforeDragStart`,e.bind(function(n,s){var c=r(s);if(!c||(e.hideQuickInfo&&e.hideQuickInfo(),A(s.target,`.gantt_grid_editor_placeholder`)))return!1;var l=c.getAttribute(t.$config.item_attribute);if(a(l))return!1;var u=i().getItem(l);if(e.isReadonly(u)||(o.config.initial_open_state=u.$open,!e.callEvent(`onRowDragStart`,[l,s.target||s.srcElement,s])))return!1},e)),o.attachEvent(`onAfterDragStart`,e.bind(function(e,n){var a=r(n);o.config.marker.innerHTML=a.outerHTML;var s=o.config.marker.firstChild;s&&(s.style.position=`static`),o.config.id=a.getAttribute(t.$config.item_attribute);var c=i(),l=c.getItem(o.config.id);o.config.index=c.getBranchIndex(o.config.id),o.config.parent=l.parent,l.$open=!1,l.$transparent=!0,this.refreshData()},e)),o.lastTaskOfLevel=function(e){for(var t=null,n=i().getItems(),r=0,a=n.length;r<a;r++)n[r].$level==e&&(t=n[r]);return t?t.id:null},o._getGridPos=e.bind(function(e){var n=s(t.$grid_data),r=n.x+t.$grid.scrollLeft,i=e.pos.y-10,a=t.getItemHeight(o.config.id);i<n.y&&(i=n.y);var c=t.getTotalHeight();i>n.y+c-a&&(i=n.y+c-a);let l=n.y+n.height;return i>l-a&&(i=l-a),n.x=r,n.y=i,n},e),o._getTargetY=e.bind(function(n){var r=s(t.$grid_data),i=t.$state.scrollTop||0,a=e.$grid_data.getBoundingClientRect().height+i,o=n.pageY-r.y+i;return o>a?o=a:o<i&&(o=i),o},e),o._getTaskByY=e.bind(function(e,n){var r=i();e||=0;var a=t.getItemIndexByTopPosition(e);return a=n<a?a-1:a,a>r.countVisible()-1?null:r.getIdByIndex(a)},e),o.attachEvent(`onDragMove`,e.bind(function(n,r){var c=e.$grid_data.getBoundingClientRect(),l=c.height+c.y+(t.$state.scrollTop||0)+window.scrollY,u=o.config,d=o._getGridPos(r);e._waiAria.reorderMarkerAttr(u.marker);var f=t.$getConfig(),p=i();d.y<l?u.marker.style.top=d.y+`px`:u.marker.style.top=l+`px`,u.marker.style.left=d.x+10+`px`;let m=s(e.$root);d.width>m.width&&(u.marker.style.width=m.width-10-2+`px`,u.marker.style.overflow=`hidden`);var h=p.getItem(o.config.id),g=o._getTargetY(r),_=o._getTaskByY(g,p.getIndexById(h.id));p.exists(_)||(_=o.lastTaskOfLevel(f.order_branch_free?h.$level:0),_==o.config.id&&(_=null));function v(e,t){return!p.isChildOf(y.id,t.id)&&(e.$level==t.$level||f.order_branch_free)}if(p.exists(_)){var y=p.getItem(_),b=t.getItemTop(y.id),x=t.getItemHeight(y.id);if(b+x/2<g){var S=p.getIndexById(y.id),C=p.getNext(y.id),w=p.getItem(C);if(a(C)){var T=p.getPrev(w.id);w=p.getItem(T)}if(w)if(w.id!=h.id)y=w;else if(f.order_branch_free)if(p.isChildOf(h.id,y.id)&&p.getChildren(y.id).length==1){p.move(h.id,p.getBranchIndex(y.id)+1,p.getParent(y.id));return}else return;else return;else{if(C=p.getIdByIndex(S),w=p.getItem(C),a(C)){var T=p.getPrev(w.id);w=p.getItem(T)}if(v(w,h)&&w.id!=h.id){p.move(h.id,-1,p.getParent(w.id));return}}}else if(f.order_branch_free&&y.id!=h.id&&v(y,h)&&!a(y.id)){if(!p.hasChild(y.id)){y.$open=!0,p.move(h.id,-1,y.id);return}if(p.getIndexById(y.id)||x/3<g)return}for(var S=p.getIndexById(y.id),T=p.getIdByIndex(S-1),E=p.getItem(T),D=1;(!E||E.id==y.id)&&S-D>=0;)T=p.getIdByIndex(S-D),E=p.getItem(T),D++;if(h.id==y.id||a(y.id))return;v(y,h)&&h.id!=y.id?p.move(h.id,0,0,y.id):y.$level==h.$level-1&&!p.getChildren(y.id).length?p.move(h.id,0,y.id):E&&v(E,h)&&h.id!=E.id&&p.move(h.id,-1,p.getParent(E.id))}return!0},e)),o.attachEvent(`onDragEnd`,e.bind(function(){var t=i(),n=t.getItem(o.config.id);n.$transparent=!1,n.$open=o.config.initial_open_state,this.callEvent(`onBeforeRowDragEnd`,[o.config.id,o.config.parent,o.config.index])===!1?(t.move(o.config.id,o.config.index,o.config.parent),n.$drop_target=null):this.callEvent(`onRowDragEnd`,[o.config.id,n.$drop_target]),e.render(),this.refreshData()},e))}var _a={init:ga},Z={createDropTargetObject:function(e){var t={targetParent:null,targetIndex:0,targetId:null,child:!1,nextSibling:!1,prevSibling:!1};return e&&L(t,e,!0),t},nextSiblingTarget:function(e,t,n){var r=this.createDropTargetObject();return r.targetId=t,r.nextSibling=!0,r.targetParent=n.getParent(r.targetId),r.targetIndex=n.getBranchIndex(r.targetId),(n.getParent(e)!=r.targetParent||r.targetIndex<n.getBranchIndex(e))&&(r.targetIndex+=1),r},prevSiblingTarget:function(e,t,n){var r=this.createDropTargetObject();return r.targetId=t,r.prevSibling=!0,r.targetParent=n.getParent(r.targetId),r.targetIndex=n.getBranchIndex(r.targetId),n.getParent(e)==r.targetParent&&r.targetIndex>n.getBranchIndex(e)&&--r.targetIndex,r},firstChildTarget:function(e,t,n){var r=this.createDropTargetObject();return r.targetId=t,r.targetParent=r.targetId,r.targetIndex=0,r.child=!0,r},lastChildTarget:function(e,t,n){var r=n.getChildren(t),i=this.createDropTargetObject();return i.targetId=r[r.length-1],i.targetParent=t,i.targetIndex=r.length,i.nextSibling=!0,i}};function va(e){for(var t=e.getNext();e.exists(t);){var n=e.getNext(t);if(e.exists(n))t=n;else return t}return null}function ya(e,t,n,r,i){for(var a=t;r.exists(a);){var o=r.calculateItemLevel(r.getItem(a));if((o===n||o===n-1)&&r.getBranchIndex(a)>-1)break;a=i?r.getPrev(a):r.getNext(a)}return r.exists(a)?r.calculateItemLevel(r.getItem(a))===n?i?Z.nextSiblingTarget(e,a,r):Z.prevSiblingTarget(e,a,r):Z.firstChildTarget(e,a,r):null}function ba(e,t,n,r){return ya(e,t,n,r,!0)}function xa(e,t,n,r){return ya(e,t,n,r,!1)}function Sa(e,t,n,r,i,a){var o;if(t!==i.$getRootId()){var s=i.getItem(t),c=i.calculateItemLevel(s);if(c===a){var l=i.getPrevSibling(t);n<.5&&!l?o=Z.prevSiblingTarget(e,t,i):(n<.5&&(t=l),o=Z.nextSiblingTarget(e,t,i))}else if(c>a)i.eachParent(function(e){i.calculateItemLevel(e)===a&&(t=e.id)},s),o=ba(e,t,a,i);else{var u=ba(e,t,a,i),d=xa(e,t,a,i);o=n<.5?u:d}}else{var f=i.$getRootId(),p=i.getChildren(f);o=Z.createDropTargetObject(),o=p.length&&r>=0?ba(e,va(i),a,i):xa(e,f,a,i)}return o}function Ca(e,t,n,r,i){var a;if(t!==i.$getRootId())a=n<.25?Z.prevSiblingTarget(e,t,i):n>.6&&!(i.hasChild(t)&&i.getItem(t).$open)?Z.nextSiblingTarget(e,t,i):Z.firstChildTarget(e,t,i);else{var o=i.$getRootId();a=i.hasChild(o)&&r>=0?Z.lastChildTarget(e,o,i):Z.firstChildTarget(e,o,i)}return a}function wa(e,t,n){var r=Aa(e,n);t.marker.style.left=r.x+9+`px`,t.marker.style.width=r.width+`px`,t.marker.style.overflow=`hidden`;var i=t.markerLine;i||(i=document.createElement(`div`),i.className=`gantt_drag_marker gantt_grid_dnd_marker`,i.innerHTML=`<div class='gantt_grid_dnd_marker_line'></div>`,i.style.pointerEvents=`none`),e.child?Da(e,i,n):Ea(e,i,n),i.style.maxWidth=r.x+parseInt(t.marker.style.maxWidth)-parseInt(i.style.left)+`px`,t.markerLine||=(document.body.appendChild(i),i)}function Ta(e){e.markerLine&&e.markerLine.parentNode&&e.markerLine.parentNode.removeChild(e.markerLine),e.markerLine=null}function Ea(e,t,n){var r=Oa(e,n),i=n.$grid_data.getBoundingClientRect().bottom+window.scrollY;t.innerHTML=`<div class='gantt_grid_dnd_marker_line'></div>`,t.style.left=r.x+`px`,t.style.height=`4px`;var a=r.y-2;return t.style.top=a+`px`,t.style.width=r.width+`px`,a>i&&(t.style.top=i+`px`),t}function Da(e,t,n){var r=e.targetParent,i=ka({x:0,y:n.getItemTop(r)},n),a=n.$grid_data.getBoundingClientRect().bottom+window.scrollY;let o=ja(n.$gantt,n.$grid_data.offsetWidth);return t.innerHTML=`<div class='gantt_grid_dnd_marker_folder'></div>`,t.style.width=o+`px`,t.style.top=i.y+`px`,t.style.left=i.x+`px`,t.style.height=n.getItemHeight(r)+`px`,i.y>a&&(t.style.top=a+`px`),t}function Oa(e,t){var n=t.$config.rowStore,r={x:0,y:0},i=t.$grid_data.querySelector(`.gantt_tree_indent`),a=15,o=0;i&&(a=i.offsetWidth);var s=40;if(e.targetId!==n.$getRootId()){var c=t.getItemTop(e.targetId),l=t.getItemHeight(e.targetId);if(o=n.exists(e.targetId)?n.calculateItemLevel(n.getItem(e.targetId)):0,e.prevSibling)r.y=c;else if(e.nextSibling){var u=0;n.eachItem(function(e){n.getIndexById(e.id)!==-1&&u++},e.targetId),r.y=c+l+u*l}else r.y=c+l,o+=1}return r.x=s+o*a,r.width=ja(t.$gantt,Math.max(t.$grid_data.offsetWidth-r.x,0),r.x),ka(r,t)}function ka(e,t){var n=s(t.$grid_data);return e.x+=n.x+t.$grid.scrollLeft,e.y+=n.y-t.$grid_data.scrollTop,e}function Aa(e,t){var n=s(t.$grid_data),r=D(e,t.$grid_data),i=n.x+t.$grid.scrollLeft,a=r.y-10,o=t.getItemHeight(e.targetId);a<n.y&&(a=n.y);var c=t.getTotalHeight();return a>n.y+c-o&&(a=n.y+c-o),n.x=i,n.y=a,n.width=ja(t.$gantt,n.width,9),n}function ja(e,t,n=0){let r=s(e.$root);return t>r.width&&(t=r.width-n-2),t}var Ma={removeLineHighlight:Ta,highlightPosition:wa};function Na(e,t){var n=e.$services.getService(`dnd`);if(!t.$config.bind||!e.getDatastore(t.$config.bind))return;function r(e){return w(e,t.$config.item_attribute)}function i(){return e.getDatastore(t.$config.bind)}function a(t){return kt(t,e,i())}var o=new n(t.$grid_data,{updates_per_second:60});e.defined(t.$getConfig().dnd_sensitivity)&&(o.config.sensitivity=t.$getConfig().dnd_sensitivity),o.attachEvent(`onBeforeDragStart`,e.bind(function(n,i){var s=r(i);if(!s||(e.hideQuickInfo&&e.hideQuickInfo(),A(i.target,`.gantt_grid_editor_placeholder`)))return!1;var c=s.getAttribute(t.$config.item_attribute),l=t.$config.rowStore.getItem(c);if(e.isReadonly(l)||a(c)||(o.config.initial_open_state=l.$open,!e.callEvent(`onRowDragStart`,[c,i.target||i.srcElement,i])))return!1},e)),o.attachEvent(`onAfterDragStart`,e.bind(function(e,n){var i=r(n);o.config.marker.innerHTML=i.outerHTML;var a=o.config.marker.firstChild;a&&(o.config.marker.style.opacity=.4,a.style.position=`static`,a.style.pointerEvents=`none`),o.config.id=i.getAttribute(t.$config.item_attribute);var s=t.$config.rowStore,c=s.getItem(o.config.id);o.config.level=s.calculateItemLevel(c),o.config.drop_target=Z.createDropTargetObject({targetParent:s.getParent(c.id),targetIndex:s.getBranchIndex(c.id),targetId:c.id,nextSibling:!0}),c.$open=!1,c.$transparent=!0,this.refreshData()},e));function c(n){var r=D(n,t.$grid_data).y,i=t.$config.rowStore;document.doctype||(r+=window.scrollY),r||=0;var c=t.$state.scrollTop||0,l=e.$grid_data.getBoundingClientRect().height+c+window.scrollY,u=c,d=t.getItemIndexByTopPosition(t.$state.scrollTop);if(i.exists(d)||(d=i.countVisible()-1),d<0)return i.$getRootId();var f=i.getIdByIndex(d),p=t.$state.scrollTop/t.getItemHeight(f),m=p-Math.floor(p);m>.1&&m<.9&&(l-=t.getItemHeight(f)*m,u+=t.getItemHeight(f)*(1-m));let h=s(t.$grid_data),g=h.y+h.height,_=o.config.marker.offsetHeight;r+_+window.scrollY>=l&&(o.config.marker.style.top=g-_+`px`),r>=l?r=l:r<=u&&(r=u,o.config.marker.style.top=h.y+`px`);var v=t.getItemIndexByTopPosition(r);if(v>i.countVisible()-1||v<0)return i.$getRootId();var y=i.getIdByIndex(v);return a(y)?i.getPrevSibling(y):i.getIdByIndex(v)}function l(e){var n=c(e),r=null,i=t.$config.rowStore,s=!t.$getConfig().order_branch_free,l=D(e,t.$grid_data).y;if(document.doctype||(l+=window.scrollY),n!==i.$getRootId()){var u=t.getItemTop(n),d=t.getItemHeight(n);r=(l-u)/d}var f;return s?(f=Sa(o.config.id,n,r,l,i,o.config.level),f&&f.targetParent&&a(f.targetParent)&&(n=i.getPrevSibling(f.targetParent),f=Sa(o.config.id,n,r,l,i,o.config.level))):f=Ca(o.config.id,n,r,l,i),f}o.attachEvent(`onDragMove`,e.bind(function(n,r){var i=l(r);return(!i||e.callEvent(`onBeforeRowDragMove`,[o.config.id,i.targetParent,i.targetIndex])===!1)&&(i=Z.createDropTargetObject(o.config.drop_target)),Ma.highlightPosition(i,o.config,t),o.config.drop_target=i,e._waiAria.reorderMarkerAttr(o.config.marker),this.callEvent(`onRowDragMove`,[o.config.id,i.targetParent,i.targetIndex]),!0},e)),o.attachEvent(`onDragEnd`,e.bind(function(){var n=t.$config.rowStore,r=n.getItem(o.config.id);Ma.removeLineHighlight(o.config),r.$transparent=!1,r.$open=o.config.initial_open_state;var i=o.config.drop_target;this.callEvent(`onBeforeRowDragEnd`,[o.config.id,i.targetParent,i.targetIndex])===!1?r.$drop_target=null:(n.move(o.config.id,i.targetIndex,i.targetParent),e.render(),this.callEvent(`onRowDragEnd`,[o.config.id,i.targetParent,i.targetIndex])),n.refresh(r.id)},e))}var Pa={init:Na},Fa=(function(){return function(e){return{onCreated:function(t){t.$config=L(t.$config,{bind:`task`}),t.$config.id==`grid`&&(this.extendGantt(t),e.ext.inlineEditors=e.ext._inlineEditors.createEditors(t),e.ext.inlineEditors.init()),this._mouseDelegates=Ai(e)},onInitialized:function(t){var n=t.$getConfig();n.order_branch&&(n.order_branch==`marker`?Pa.init(t.$gantt,t):_a.init(t.$gantt,t)),this.initEvents(t,e),t.$config.id==`grid`&&this.extendDom(t)},onDestroyed:function(t){t.$config.id==`grid`&&e.ext.inlineEditors.detachStore(),this.clearEvents(t,e)},initEvents:function(e,t){this._mouseDelegates.delegate(`click`,`gantt_row`,t.bind(function(n,r,i){let a=e.$getConfig();if(r!==null){let e=this.getTask(r);if(a.scroll_on_click){let r=!t._is_icon_open_click(n),i=t.$ui.getView(`timeline`);r&&i&&this.showDate(e.start_date)}t.callEvent(`onTaskRowClick`,[r,i])}},t),e.$grid),this._mouseDelegates.delegate(`click`,`gantt_grid_head_cell`,t.bind(function(n,r,i){var a=i.getAttribute(`data-column-id`);if(t.callEvent(`onGridHeaderClick`,[a,n])){var o=e.$getConfig();if(a==`add`){t.$services.getService(`mouseEvents`).callHandler(`click`,`gantt_add`,e.$grid,[n,o.root_id]);return}if(o.sort&&a){for(var s=a,c,l=0;l<o.columns.length;l++)if(o.columns[l].name==a){c=o.columns[l];break}if(c&&c.sort!==void 0&&c.sort!==!0&&(s=c.sort,!s))return;var u=this._sort&&this._sort.direction&&this._sort.name==a?this._sort.direction:`desc`;u=u==`desc`?`asc`:`desc`,this._sort={name:a,direction:u},this.sort(s,u==`desc`)}}},t),e.$grid),this._mouseDelegates.delegate(`click`,`gantt_add`,t.bind(function(n,r,i){if(!e.$getConfig().readonly)return this.createTask({},r||t.config.root_id),!1},t),e.$grid)},clearEvents:function(e,t){this._mouseDelegates.destructor(),this._mouseDelegates=null},extendDom:function(t){e.$grid=t.$grid,e.$grid_scale=t.$grid_scale,e.$grid_data=t.$grid_data},extendGantt:function(t){e.getGridColumns=e.bind(t.getGridColumns,t),t.attachEvent(`onColumnResizeStart`,function(){return e.callEvent(`onColumnResizeStart`,arguments)}),t.attachEvent(`onColumnResize`,function(){return e.callEvent(`onColumnResize`,arguments)}),t.attachEvent(`onColumnResizeEnd`,function(){return e.callEvent(`onColumnResizeEnd`,arguments)}),t.attachEvent(`onColumnResizeComplete`,function(t,n){e.config.grid_width=n}),t.attachEvent(`onBeforeRowResize`,function(){return e.callEvent(`onBeforeRowResize`,arguments)}),t.attachEvent(`onRowResize`,function(){return e.callEvent(`onRowResize`,arguments)}),t.attachEvent(`onBeforeRowResizeEnd`,function(){return e.callEvent(`onBeforeRowResizeEnd`,arguments)}),t.attachEvent(`onAfterRowResize`,function(){return e.callEvent(`onAfterRowResize`,arguments)})}}}})();function Ia(e,t){var n=t.$services;return{drag:null,dragMultiple:{},_events:{before_start:{},before_finish:{},after_finish:{}},_handlers:{},init:function(){this._domEvents=t._createDomEventScope(),this.clear_drag_state();var e=t.config.drag_mode;this.set_actions(),n.getService(`state`).registerProvider(`tasksDnd`,B(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 r={before_start:`onBeforeTaskDrag`,before_finish:`onBeforeTaskChanged`,after_finish:`onAfterTaskDrag`};for(var i in this._events)for(var a in e)this._events[i][a]=r[i];this._handlers[e.move]=this._move,this._handlers[e.resize]=this._resize,this._handlers[e.progress]=this._resize_progress},set_actions:function(){var n=e.$task_data;this._domEvents.attach(n,`mousemove`,t.bind(function(e){this.on_mouse_move(e)},this)),this._domEvents.attach(n,`mousedown`,t.bind(function(e){this.on_mouse_down(e)},this)),this._domEvents.attach(document.body,`mouseup`,t.bind(function(e){this.on_mouse_up(e)},this))},_getPositioningContext:function(t){return e._getPositioningContext?e._getPositioningContext(t):null},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(n,r,i){var a=e.$getConfig(),o=this._drag_task_coords(n,i);i.left?(n.start_date=t.dateFromPos(o.start+r,this._getPositioningContext(n)),n.start_date||=new Date(t.getState().min_date)):(n.end_date=t.dateFromPos(o.end+r,this._getPositioningContext(n)),n.end_date||=new Date(t.getState().max_date));var s=this._calculateMinDuration(a.min_duration,a.duration_unit);n.end_date-n.start_date<a.min_duration&&(i.left?n.start_date=t.calculateEndDate(n.end_date,-s,a.duration_unit,n):n.end_date=t.calculateEndDate(n.start_date,s,a.duration_unit,n)),t._init_task_timing(n)},_calculateMinDuration:function(e,t){return Math.ceil(e/{minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:31356e6}[t])},_resize_progress:function(t,n,r){var i=this._drag_task_coords(t,r),a=e.$getConfig().rtl?i.start-r.pos.x:r.pos.x-i.start;t.progress=Math.min(1,Math.max(0,a)/Math.abs(i.end-i.start))},_find_max_shift:function(e,n){var r;for(var i in e){var a=e[i],o=t.getTask(a.id);if(!o.unscheduled){var s=this._drag_task_coords(o,a),c=t.posFromDate(new Date(t.getState().min_date),this._getPositioningContext(o)),l=t.posFromDate(new Date(t.getState().max_date),this._getPositioningContext(o));if(s.end+n>l){var u=l-s.end;(u<r||r===void 0)&&(r=u)}else if(s.start+n<c){var d=c-s.start;(d>r||r===void 0)&&(r=d)}}}return r},_move:function(e,n,r,i){var a=this._drag_task_coords(e,r),o=null,s=null;i?(o=new Date(+r.obj.start_date+i),s=new Date(+r.obj.end_date+i)):(o=t.dateFromPos(a.start+n,this._getPositioningContext(e)),s=t.dateFromPos(a.end+n,this._getPositioningContext(e))),o?s?(e.start_date=o,e.end_date=s):(e.end_date=new Date(t.getState().max_date),e.start_date=t.dateFromPos(t.posFromDate(e.end_date)-(a.end-a.start),this._getPositioningContext(e))):(e.start_date=new Date(t.getState().min_date),e.end_date=t.dateFromPos(t.posFromDate(e.start_date)+(a.end-a.start),this._getPositioningContext(e)))},_drag_task_coords:function(e,n){return{start:n.obj_s_x=n.obj_s_x||t.posFromDate(e.start_date,this._getPositioningContext(e)),end:n.obj_e_x=n.obj_e_x||t.posFromDate(e.end_date,this._getPositioningContext(e))}},_mouse_position_change:function(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)},_is_number:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},on_mouse_move:function(e){if(this.drag.start_drag){var n=D(e,t.$task_data),r=this.drag.start_drag.start_x,i=this.drag.start_drag.start_y;(Date.now()-this.drag.timestamp>50||this._is_number(r)&&this._is_number(i)&&this._mouse_position_change({x:r,y:i},n)>20)&&this._start_dnd(e)}if(this.drag.mode){if(!xt(this,40))return;this._update_on_move(e)}},_update_item_on_move:function(e,n,r,i,a,o){var s=t.getTask(n),c=t.mixin({},s),l=t.mixin({},s);this._handlers[r].apply(this,[l,e,i,o]),t.mixin(s,l,!0),t.callEvent(`onTaskDrag`,[s.id,r,l,c,a]),t.mixin(s,l,!0),t.refreshTask(n)},_update_on_move:function(n){var r=this.drag,i=e.$getConfig();if(r.mode){var a=D(n,e.$task_data);if(r.pos&&r.pos.x==a.x)return;r.pos=a;let m=t.getTask(r.id);var o=t.dateFromPos(a.x,this._getPositioningContext(m));if(!o||isNaN(o.getTime()))return;var s=a.x-r.start_x;if(this._handlers[r.mode]){if(r.mode===i.drag_mode.move){var c={};this._isMultiselect()&&t.getSelectedTasks().indexOf(r.id)>=0&&(c=this.dragMultiple);var l=!1;if(t.isSummaryTask(m)&&t.config.drag_project){var u={};u[r.id]=I(r),l=!0,c=L(u,this.dragMultiple)}var d=this._find_max_shift(c,s);d!==void 0&&(s=d),this._update_item_on_move(s,r.id,r.mode,r,n);let e;if(d===void 0){let n=t.posFromDate(r.obj.start_date,this._getPositioningContext(r.obj)),i=t.posFromDate(r.obj.end_date,this._getPositioningContext(r.obj));if(r.handle_offset===void 0){let e=i-n;r.handle_offset=(r.start_x-n)/e}let a=n+Math.abs(i-n)*r.handle_offset;e=o-t.dateFromPos(a,this._getPositioningContext(r.obj))}for(var f in c){var p=c[f];l&&p.id!=r.id&&(t._bulk_dnd=!0),this._update_item_on_move(s,p.id,p.mode,p,n,e)}t._bulk_dnd=!1}else this._update_item_on_move(s,r.id,r.mode,r,n);t._update_parents(r.id)}}},on_mouse_down:function(n,r){if(!(n.button==2&&n.button!==void 0)){var i=e.$getConfig(),a=t.locate(n),o=null;if(t.isTaskExists(a)&&(o=t.getTask(a)),!(t.isReadonly(o)||this.drag.mode)){this.clear_drag_state(),r=r||n.target||n.srcElement;var s=m(r),c=this._get_drag_mode(s,r);if(!s||!c)return r.parentNode?this.on_mouse_down(n,r.parentNode):void 0;if(c)if(c.mode&&c.mode!=i.drag_mode.ignore&&i[`drag_`+c.mode]){if(a=t.locate(r),o=t.copy(t.getTask(a)||{}),t.isReadonly(o))return this.clear_drag_state(),!1;if(t.isSummaryTask(o)&&o.auto_scheduling!==!1&&!i.drag_project&&c.mode!=i.drag_mode.progress){this.clear_drag_state();return}c.id=a;var l=D(n,t.$task_data);c.start_x=l.x,c.start_y=l.y,c.obj=o,this.drag.start_drag=c,this.drag.timestamp=Date.now()}else this.clear_drag_state();else if(t.checkEvent(`onMouseDown`)&&t.callEvent(`onMouseDown`,[s.split(` `)[0]])&&r.parentNode)return this.on_mouse_down(n,r.parentNode)}}},_fix_dnd_scale_time:function(n,r){var i=e.$getConfig(),a=t.getScale().unit,o=t.getScale().step;i.round_dnd_dates||(a=`minute`,o=i.time_step);function s(n){if(t.config.correct_work_time){var r=e.$getConfig();t.isWorkTime(n.start_date,void 0,n)||(n.start_date=t.calculateEndDate({start_date:n.start_date,duration:-1,unit:r.duration_unit,task:n}))}}function c(n){if(t.config.correct_work_time){var r=e.$getConfig();t.isWorkTime(new Date(n.end_date-1),void 0,n)||(n.end_date=t.calculateEndDate({start_date:n.end_date,duration:1,unit:r.duration_unit,task:n}))}}let l=e._getPositioningContext(n);r.mode==i.drag_mode.resize?r.left?(n.start_date=t.roundDate({date:n.start_date,unit:a,step:o}),l&&l.calendar&&(n.start_date=l.calendar.getClosestWorkTime({date:n.start_date,dir:`future`})),s(n)):(n.end_date=t.roundDate({date:n.end_date,unit:a,step:o}),l&&l.calendar&&(n.end_date=l.calendar.getClosestWorkTime({date:n.end_date})),c(n)):r.mode==i.drag_mode.move&&(n.start_date=t.roundDate({date:n.start_date,unit:a,step:o}),l&&l.calendar&&(n.start_date=l.calendar.getClosestWorkTime({date:n.start_date,dir:`future`})),s(n),n.end_date=t.calculateEndDate(n))},_fix_working_times:function(n,r){var i=e.$getConfig(),r=r||{mode:i.drag_mode.move};r.mode==i.drag_mode.resize?r.left?n.start_date=t.getClosestWorkTime({date:n.start_date,dir:`future`,task:n}):n.end_date=t.getClosestWorkTime({date:n.end_date,dir:`past`,task:n}):r.mode==i.drag_mode.move&&t.correctTaskWorkTime(n)},_finalize_mouse_up:function(e,n,r,i){var a=t.getTask(e);if(n.work_time&&n.correct_work_time&&this._fix_working_times(a,r),this._fix_dnd_scale_time(a,r),this._fireEvent(`before_finish`,r.mode,[e,r.mode,t.copy(r.obj),i])){var o=e;t._init_task_timing(a),this.clear_drag_state(),t.updateTask(a.id),this._fireEvent(`after_finish`,r.mode,[o,r.mode,i])}else if(this.clear_drag_state(),e==r.id&&(r.obj._dhx_changed=!1,t.mixin(a,r.obj,!0)),t.refreshTask(a.id),a.$level>100){let e=!1;t.eachParent(function(n){if(!e&&n.type===t.config.types.project){let r={start_date:n.start_date,end_date:n.end_date};t.resetProjectDates(n),(+r.start_date!=+n.start_date||+r.end_date!=+n.end_date)&&(e=!0)}},a.id),e&&t.refreshData()}else t.eachParent(function(e){if(e.type===t.config.types.project){let n={start_date:e.start_date,end_date:e.end_date};t.resetProjectDates(e),(+n.start_date!=+e.start_date||+n.end_date!=+e.end_date)&&t.refreshTask(e.id)}},a.id)},on_mouse_up:function(n){var r=this.drag;if(r.mode&&r.id){var i=e.$getConfig(),a=t.getTask(r.id),o=this.dragMultiple,s=!1,c=0;r.mode===i.drag_mode.move&&(t.isSummaryTask(a)&&i.drag_project||this._isMultiselect())&&(s=!0,c=Object.keys(o).length);var l=function(){if(s)for(var e in o)o[e].id!=r.id&&this._finalize_mouse_up(o[e].id,i,o[e],n);this._finalize_mouse_up(r.id,i,r,n)};s&&c>10?t.batchUpdate((function(){l.call(this)}).bind(this)):l.call(this)}this.clear_drag_state()},_get_drag_mode:function(t,n){var r=e.$getConfig().drag_mode,i=(t||``).split(` `)[0],a={mode:null,left:null};switch(i){case`gantt_task_line`:case`gantt_task_content`:a.mode=r.move;break;case`gantt_task_drag`:a.mode=r.resize,n.getAttribute(`data-bind-property`)==`start_date`?a.left=!0:a.left=!1;break;case`gantt_task_progress_drag`:a.mode=r.progress;break;case`gantt_link_control`:case`gantt_link_point`:a.mode=r.ignore;break;default:a=null;break}return a},_start_dnd:function(n){var r=this.drag=this.drag.start_drag;delete r.start_drag;var i=e.$getConfig(),a=r.id;if(!i[`drag_`+r.mode]||!t.callEvent(`onBeforeDrag`,[a,r.mode,n])||!this._fireEvent(`before_start`,r.mode,[a,r.mode,n]))this.clear_drag_state();else{delete r.start_drag;var o=t.getTask(a);if(t.isReadonly(o)){this.clear_drag_state();return}if(this._isMultiselect()){var s=t.getSelectedTasks();s.indexOf(r.id)>=0&&ue(s,t.bind(function(e){var n=t.getTask(e);t.isSummaryTask(n)&&t.config.drag_project&&r.mode==i.drag_mode.move&&this._addSubtasksToDragMultiple(n.id),this.dragMultiple[e]=t.mixin({id:n.id,obj:t.copy(n)},this.drag)},this))}t.isSummaryTask(o)&&t.config.drag_project&&r.mode==i.drag_mode.move&&this._addSubtasksToDragMultiple(o.id),t.callEvent(`onTaskDragStart`,[])}},_fireEvent:function(e,n,r){t.assert(this._events[e],`Invalid stage:{`+e+`}`);var i=this._events[e][n];return t.assert(i,`Unknown after drop mode:{`+n+`}`),t.assert(r,`Invalid event arguments`),!t.checkEvent(i)||t.callEvent(i,r)},round_task_dates:function(t){var n=this.drag,r=e.$getConfig();n||={mode:r.drag_mode.move},this._fix_dnd_scale_time(t,n)},destructor:function(){this._domEvents.detachAll()},_isMultiselect:function(){return t.config.drag_multiple&&!!(t.getSelectedTasks&&t.getSelectedTasks().length>0)},_addSubtasksToDragMultiple:function(e){t.eachTask(function(e){this.dragMultiple[e.id]=t.mixin({id:e.id,obj:t.copy(e)},this.drag)},e,this)}}}function La(){var e;return{extend:function(t){t.roundTaskDates=function(t){e.round_task_dates(t)}},init:function(t,n){return e=Ia(t,n),t._tasks_dnd=e,e.init(n)},destructor:function(){e&&=(e.destructor(),null)}}}var Ra={createTaskDND:La},za=function(e,t){var n,r,i,a,o;function s(){return{link_source_id:a,link_target_id:r,link_from_start:o,link_to_start:i,link_landing_area:n}}var c=t.$services,l=c.getService(`state`),u=c.getService(`dnd`);l.registerProvider(`linksDnD`,s);var d=`task_start_date`,f=`task_end_date`,p=`gantt_link_point`,m=`gantt_link_control`,h=new u(e.$task_bars,{sensitivity:0,updates_per_second:60,mousemoveContainer:t.$root,selector:`.`+p,preventDefault:!0});h.attachEvent(`onBeforeDragStart`,t.bind(function(e,n){var r=n.target||n.srcElement;if(x(),t.getState(`tasksDnd`).drag_id)return!1;if(E(r,p)){E(r,d)&&(o=!0);var i=t.locate(n);a=i;var s=t.getTask(i);return t.isReadonly(s)?(x(),!1):(this._dir_start={x:h.config.original_element_sizes.x+h.config.original_element_sizes.width/2,y:h.config.original_element_sizes.y+h.config.original_element_sizes.height/2},!0)}else return!1},this)),h.attachEvent(`onAfterDragStart`,t.bind(function(e,n){t.config.touch&&t.refreshData(),y(h.config.marker)},this));function g(){var e=t.$root;return{right:e.offsetWidth,bottom:e.offsetHeight}}function _(e){var t=0,n=0;return e&&(t=e.offsetWidth||0,n=e.offsetHeight||0),{width:t,height:n}}function v(e,n){var r=h.getPosition(e),i=_(n),a=g(),o=t.config.tooltip_offset_x||10,s=t.config.tooltip_offset_y||10,c=t.config.scroll_size||18,l=t.$container.getBoundingClientRect().y+window.scrollY,u={y:r.y+s,x:r.x+o,bottom:r.y+i.height+s+c,right:r.x+i.width+o+c};return u.bottom>a.bottom+l&&(u.y=a.bottom+l-i.height-s),u.right>a.right&&(u.x=a.right-i.width-o),u}h.attachEvent(`onDragMove`,t.bind(function(a,o,s){var c=h.config,l=v(o,c.marker);b(c.marker,l);var u=!!E(o,m),d=r,g=n,_=i;let x=!0,w;if(w=o.target.shadowRoot&&s?s:t.locate(o),k(C(o),t.$root)||(u=!1,w=null),u&&=(x=!E(o,f),!!w),r=w,n=u,i=x,u){let t=E(o,m).querySelector(`.${p}`);if(t){let n=O(t,e.$task_bg);this._dir_end={x:n.x+t.offsetWidth/2,y:n.y+t.offsetHeight/2}}}else this._dir_end=D(o,e.$task_data),t.env.isEdge&&(this._dir_end.y+=window.scrollY);var T=!(g==u&&d==w&&_==x);return T&&(d&&t.refreshTask(d,!1),w&&t.refreshTask(w,!1)),T&&y(c.marker),S(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),h.attachEvent(`onDragEnd`,t.bind(function(){var e=s();if(e.link_source_id&&e.link_target_id&&e.link_source_id!=e.link_target_id){var n=t._get_link_type(e.link_from_start,e.link_to_start),r={source:e.link_source_id,target:e.link_target_id,type:n};r.type&&t.isLinkAllowed(r)&&t.callEvent(`onLinkCreated`,[r])&&t.addLink(r)}x(),t.config.touch?t.refreshData():(e.link_source_id&&t.refreshTask(e.link_source_id,!1),e.link_target_id&&t.refreshTask(e.link_target_id,!1)),j()},this));function y(e){var n=s();n.link_source_id&&n.link_target_id&&t.isLinkAllowed(n.link_source_id,n.link_target_id,n.link_from_start,n.link_to_start),e.innerHTML=`<div class='`+t.templates.drag_link_class(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start)+`'>`+t.templates.drag_link(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start)+`</div>`}function b(e,t){e.style.left=t.x+`px`,e.style.top=t.y+`px`}function x(){a=o=r=null,i=!0}function S(e,n,r,i){var a=A(),o=s(),c=[`gantt_link_direction`];t.templates.link_direction_class&&c.push(t.templates.link_direction_class(o.link_source_id,o.link_from_start,o.link_target_id,o.link_to_start));var l=Math.sqrt((r-e)**2+(i-n)**2);if(l=Math.max(0,l-3),l){a.className=c.join(` `);var u=(i-n)/(r-e),d=Math.atan(u);T(e,r,n,i)==2?d+=Math.PI:T(e,r,n,i)==3&&(d-=Math.PI);var f=Math.sin(d),p=Math.cos(d),m=Math.round(n),h=Math.round(e),g=[`-webkit-transform: rotate(`+d+`rad)`,`-moz-transform: rotate(`+d+`rad)`,`-ms-transform: rotate(`+d+`rad)`,`-o-transform: rotate(`+d+`rad)`,`transform: rotate(`+d+`rad)`,`width:`+Math.round(l)+`px`];if(window.navigator.userAgent.indexOf(`MSIE 8.0`)!=-1){g.push(`-ms-filter: "`+w(f,p)+`"`);var _=Math.abs(Math.round(e-r)),v=Math.abs(Math.round(i-n));switch(T(e,r,n,i)){case 1:m-=v;break;case 2:h-=_,m-=v;break;case 3:h-=_;break}}g.push(`top:`+m+`px`),g.push(`left:`+h+`px`),a.style.cssText=g.join(`;`)}}function w(e,t){return`progid:DXImageTransform.Microsoft.Matrix(M11 = `+t+`,M12 = -`+e+`,M21 = `+e+`,M22 = `+t+`,SizingMethod = 'auto expand')`}function T(e,t,n,r){return t>=e?r<=n?1:4:r<=n?2:3}function A(){return(!h._direction||!h._direction.parentNode)&&(h._direction=document.createElement(`div`),e.$task_links.appendChild(h._direction)),h._direction}function j(){h._direction&&=(h._direction.parentNode&&h._direction.parentNode.removeChild(h._direction),null)}t.attachEvent(`onGanttRender`,t.bind(function(){h._direction&&S(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y)},this))},Ba={createLinkDND:function(){return{init:za}}},Va=(function(){return function(e){var t=e.$services;return{onCreated:function(t){var n=t.$config;n.bind=R(n.bind)?n.bind:`task`,n.bindLinks=R(n.bindLinks)?n.bindLinks:`link`,t._linksDnD=Ba.createLinkDND(),t._tasksDnD=Ra.createTaskDND(),t._tasksDnD.extend(t),this._mouseDelegates=Ai(e)},onInitialized:function(t){this._attachDomEvents(e),this._attachStateProvider(e,t),t._tasksDnD.init(t,e),t._linksDnD.init(t,e),t.$config.id==`timeline`&&this.extendDom(t)},onDestroyed:function(t){this._clearDomEvents(e),this._clearStateProvider(e),t._tasksDnD&&t._tasksDnD.destructor()},extendDom:function(t){e.$task=t.$task,e.$task_scale=t.$task_scale,e.$task_data=t.$task_data,e.$task_bg=t.$task_bg,e.$task_links=t.$task_links,e.$task_bars=t.$task_bars},_clearDomEvents:function(){this._mouseDelegates.destructor(),this._mouseDelegates=null},_attachDomEvents:function(e){function t(t,n){if(t&&this.callEvent(`onLinkDblClick`,[t,n])){var r=this.getLink(t);if(this.isReadonly(r))return;var i=``,a=this.locale.labels.link+` `+this.templates.link_description(this.getLink(t))+` `+this.locale.labels.confirm_link_deleting;window.setTimeout(function(){e._delete_link_confirm({link:r,message:a,title:i,callback:function(){e.deleteLink(t)}})},this.config.touch?300:1)}}this._mouseDelegates.delegate(`click`,`gantt_task_link`,e.bind(function(e,t){var n=this.locate(e,this.config.link_attribute);n&&this.callEvent(`onLinkClick`,[n,e])},e),this.$task),this._mouseDelegates.delegate(`click`,`gantt_scale_cell`,e.bind(function(t,n){var r=D(t,e.$task_data),i=e.dateFromPos(r.x),a=Math.floor(e.columnIndexByDate(i)),o=e.getScale().trace_x[a];e.callEvent(`onScaleClick`,[t,o])},e),this.$task),this._mouseDelegates.delegate(`doubleclick`,`gantt_task_link`,e.bind(function(n,r,i){var r=this.locate(n,e.config.link_attribute);t.call(this,r,n)},e),this.$task),this._mouseDelegates.delegate(`doubleclick`,`gantt_link_point`,e.bind(function(e,n,r){var n=this.locate(e),i=this.getTask(n),a=null;return r.parentNode&&m(r.parentNode)&&(a=m(r.parentNode).indexOf(`_left`)>-1?i.$target[0]:i.$source[0]),a&&t.call(this,a,e),!1},e),this.$task)},_attachStateProvider:function(e,n){var r=n;t.getService(`state`).registerProvider(`tasksTimeline`,function(){return{scale_unit:r._tasks?r._tasks.unit:void 0,scale_step:r._tasks?r._tasks.step:void 0}})},_clearStateProvider:function(){t.getService(`state`).unregisterProvider(`tasksTimeline`)}}}})(),Ha=(function(){return function(e){return{getVerticalScrollbar:function(){return e.$ui.getView(`scrollVer`)},getHorizontalScrollbar:function(){return e.$ui.getView(`scrollHor`)},_legacyGridResizerClass:function(e){for(var t=e.getCellsByType(`resizer`),n=0;n<t.length;n++){var r=t[n],i=!1,a=r.$parent.getPrevSibling(r.$id);if(a&&a.$config&&a.$config.id===`grid`)i=!0;else{var o=r.$parent.getNextSibling(r.$id);o&&o.$config&&o.$config.id===`grid`&&(i=!0)}i&&(r.$config.css=(r.$config.css?r.$config.css+` `:``)+`gantt_grid_resize_wrap`)}},onCreated:function(t){var n=!0;this._legacyGridResizerClass(t),t.attachEvent(`onBeforeResize`,function(){var r=e.$ui.getView(`timeline`);r&&(r.$config.hidden=r.$parent.$config.hidden=!e.config.show_chart);var i=e.$ui.getView(`grid`);if(i){var a=i._getColsTotalWidth(),o=!e.config.show_grid||!e.config.grid_width||a===0;if(n&&!o&&a!==!1&&(e.config.grid_width=a),i.$config.hidden=i.$parent.$config.hidden=o,!i.$config.hidden){var s=i._getGridWidthLimits();if(s[0]&&e.config.grid_width<s[0]&&(e.config.grid_width=s[0]),s[1]&&e.config.grid_width>s[1]&&(e.config.grid_width=s[1]),r&&e.config.show_chart){if(i.$config.width=e.config.grid_width-1,!i.$config.scrollable&&i.$config.scrollY&&e.$root.offsetWidth){var c=i.$gantt.$layout.$container.offsetWidth,l=e.$ui.getView(i.$config.scrollY).$config.width,u=c-(i.$config.width+l)-4;u<0&&(i.$config.width+=u,e.config.grid_width+=u)}if(n)i.$parent.$config.width=e.config.grid_width,i.$parent.$config.group&&e.$layout._syncCellSizes(i.$parent.$config.group,{value:i.$parent.$config.width,isGravity:!1});else if(r&&!k(r.$task,t.$view)){if(!i.$config.original_grid_width){var d=e.skins[e.skin];d&&d.config&&d.config.grid_width?i.$config.original_grid_width=d.config.grid_width:i.$config.original_grid_width=0}e.config.grid_width=i.$config.original_grid_width,i.$parent.$config.width=e.config.grid_width}else i.$parent._setContentSize(i.$config.width,null),e.$layout._syncCellSizes(i.$parent.$config.group,{value:e.config.grid_width,isGravity:!1})}else r&&k(r.$task,t.$view)&&(i.$config.original_grid_width=e.config.grid_width),n||(i.$parent.$config.width=0)}n=!1}}),this._initScrollStateEvents(t)},_initScrollStateEvents:function(t){e._getVerticalScrollbar=this.getVerticalScrollbar,e._getHorizontalScrollbar=this.getHorizontalScrollbar;var n=this.getVerticalScrollbar(),r=this.getHorizontalScrollbar();n&&n.attachEvent(`onScroll`,function(t,n,r){var i=e.getScrollState();e.callEvent(`onGanttScroll`,[i.x,t,i.x,n])}),r&&r.attachEvent(`onScroll`,function(t,n,r){var i=e.getScrollState();e.callEvent(`onGanttScroll`,[t,i.y,n,i.y]);var a=e.$ui.getView(`grid`);a&&a.$grid_data&&!a.$config.scrollable&&(a.$grid_data.style.left=a.$grid.scrollLeft+`px`,a.$grid_data.scrollLeft=a.$grid.scrollLeft)}),t.attachEvent(`onResize`,function(){n&&!e.$scroll_ver&&(e.$scroll_ver=n.$scroll_ver),r&&!e.$scroll_hor&&(e.$scroll_hor=r.$scroll_hor)})},_findGridResizer:function(e,t){for(var n=e.getCellsByType(`resizer`),r=!0,i,a=0;a<n.length;a++){var o=n[a];o._getSiblings();var s=o._behind,c=o._front;if(s&&s.$content===t||s.isChild&&s.isChild(t)){i=o,r=!0;break}else if(c&&c.$content===t||c.isChild&&c.isChild(t)){i=o,r=!1;break}}return{resizer:i,gridFirst:r}},onInitialized:function(t){var n=e.$ui.getView(`grid`),r=this._findGridResizer(t,n);if(r.resizer){var i=r.gridFirst,a=r.resizer;if(a.$config.mode!==`x`)return;var o;a.attachEvent(`onResizeStart`,function(t,n){var r=e.$ui.getView(`grid`),a=r?r.$parent:null;if(a){var s=r._getGridWidthLimits();r.$config.scrollable||(a.$config.minWidth=s[0]),a.$config.maxWidth=s[1]}return o=i?t:n,e.callEvent(`onGridResizeStart`,[o])}),a.attachEvent(`onResize`,function(t,n){var r=i?t:n;return e.callEvent(`onGridResize`,[o,r])}),a.attachEvent(`onResizeEnd`,function(t,n,r,a){var o=i?t:n,s=i?r:a,c=e.$ui.getView(`grid`),l=c?c.$parent:null;l&&(l.$config.minWidth=void 0);var u=e.callEvent(`onGridResizeEnd`,[o,s]);return u&&s!==0&&(e.config.grid_width=s),u})}},onDestroyed:function(e){}}}})();function Ua(e){function t(t,n){var r=n(e);r.onCreated&&r.onCreated(t),t.attachEvent(`onReady`,function(){r.onInitialized&&r.onInitialized(t)}),t.attachEvent(`onDestroy`,function(){r.onDestroyed&&r.onDestroyed(t)})}var n=Xr.createFactory(e);n.registerView(`cell`,ui),n.registerView(`resizer`,mi),n.registerView(`scrollbar`,hi),n.registerView(`layout`,di,function(e){(e.$config?e.$config.id:null)===`main`&&t(e,Ha)}),n.registerView(`viewcell`,pi),n.registerView(`multiview`,fi),n.registerView(`timeline`,xi,function(e){((e.$config?e.$config.id:null)===`timeline`||e.$config.bind==`task`)&&t(e,Va)}),n.registerView(`grid`,ji,function(e){((e.$config?e.$config.id:null)===`grid`||e.$config.bind==`task`)&&t(e,Fa)}),n.registerView(`resourceGrid`,ji),n.registerView(`GridRL`,Pi),n.registerView(`resourceTimeline`,xi),n.registerView(`resourceHistogram`,xi);var r=li(e),i=qi(e);return e.ext.inlineEditors=i,e.ext._inlineEditors=i,i.init(e),{factory:n,mouseEvents:Zr.init(e),layersApi:r.init(),render:{gridLine:function(){return fa(e)},taskBg:function(){return aa(e)},taskBar:function(){return Xi(e)},timedProjectBar:function(){return $i(e)},taskRollupBar:function(){return ea()},taskSplitBar:function(){return ea()},taskConstraints:function(){return ea()},taskDeadline:function(){return ea()},taskBaselines:function(){return ea()},link:function(){return ua(e)},resourceRow:function(){return ma(e)},resourceHistogram:function(){return ea()},gridTaskRowResizer:function(){return ha(e)}},layersService:{getDataRender:function(t){return r.getDataRender(t,e)},createDataRender:function(t){return r.createDataRender(t,e)}}}}var Wa={init:Ua};function Ga(){function e(e){return e.$ui.getView(`timeline`)}function t(e){return e.$ui.getView(`grid`)}function n(n){var r=e(n);if(r&&!r.$config.hidden)return r;var i=t(n);return i&&!i.$config.hidden?i:null}function r(e){var r=null,i=!1;return[`.gantt_drag_marker.gantt_grid_resize_area`,`.gantt_drag_marker .gantt_row.gantt_row_task`,`.gantt_drag_marker.gantt_grid_dnd_marker`].forEach(function(e){i||=!!document.querySelector(e)}),r=i?t(e):n(e),r?a(e,r,`scrollY`):null}function i(e){var t=n(e);return!t||t.id==`grid`?null:a(e,t,`scrollX`)}function a(e,t,n){var r=t.$config[n];return e.$ui.getView(r)}var o=`DEFAULT_VALUE`;function s(e,t,n,r){var i=e(this);return i&&i.isVisible()?i[t].apply(i,n):r?r():o}return{getColumnIndex:function(e){var n=s.call(this,t,`getColumnIndex`,[e]);return n===o?0:n},dateFromPos:function(t){var n=s.call(this,e,`dateFromPos`,Array.prototype.slice.call(arguments));return n===o?this.getState().min_date:n},posFromDate:function(t){var n=s.call(this,e,`posFromDate`,Array.prototype.slice.call(arguments));return n===o?0:n},getRowTop:function(n){var r=this,i=s.call(r,e,`getRowTop`,[n],function(){return s.call(r,t,`getRowTop`,[n])});return i===o?0:i},getTaskTop:function(n){var r=this,i=s.call(r,e,`getItemTop`,[n],function(){return s.call(r,t,`getItemTop`,[n])});return i===o?0:i},getTaskPosition:function(t,n,r){var i=s.call(this,e,`getItemPosition`,[t,n,r]);return i===o?{left:0,top:this.getTaskTop(t.id),height:this.getTaskBarHeight(t.id),width:0}:i},getTaskBarHeight:function(n,r){var i=this,a=s.call(i,e,`getBarHeight`,[n,r],function(){return s.call(i,t,`getItemHeight`,[n])});return a===o?0:a},getTaskHeight:function(n){var r=this,i=s.call(r,e,`getItemHeight`,[n],function(){return s.call(r,t,`getItemHeight`,[n])});return i===o?0:i},columnIndexByDate:function(t){var n=s.call(this,e,`columnIndexByDate`,[t]);return n===o?0:n},roundTaskDates:function(){s.call(this,e,`roundTaskDates`,[])},getScale:function(){var t=s.call(this,e,`getScale`,[]);return t===o?null:t},getTaskNode:function(t){var n=e(this);if(!n||!n.isVisible())return null;var r=n._taskRenderer.rendered[t];if(!r){var i=n.$config.item_attribute;r=n.$task_bars.querySelector(`[`+i+`='`+t+`']`)}return r||null},getLinkNode:function(t){var n=e(this);return n.isVisible()?n._linkRenderer.rendered[t]:null},scrollTo:function(e,t){var n=r(this),a=i(this),o={position:0},s={position:0};n&&(s=n.getScrollState()),a&&(o=a.getScrollState());var c=a&&e*1==e,l=n&&t*1==t;if(c&&l)for(var u=n._getLinkedViews(),d=a._getLinkedViews(),f=[],p=0;p<u.length;p++)for(var m=0;m<d.length;m++)u[p].$config.id&&d[m].$config.id&&u[p].$config.id===d[m].$config.id&&f.push(u[p].$config.id);c&&(f&&f.forEach((function(e){this.$ui.getView(e).$config.$skipSmartRenderOnScroll=!0}).bind(this)),a.scroll(e),f&&f.forEach((function(e){this.$ui.getView(e).$config.$skipSmartRenderOnScroll=!1}).bind(this))),l&&n.scroll(t);var h={position:0},g={position:0};n&&(h=n.getScrollState()),a&&(g=a.getScrollState()),this.callEvent(`onGanttScroll`,[o.position,s.position,g.position,h.position])},showDate:function(e){var t=this.posFromDate(e),n=Math.max(t-this.config.task_scroll_offset,0);this.scrollTo(n)},showTask:function(n){var r=this.getTaskPosition(this.getTask(n)),i=r.left;this.config.rtl&&(i=r.left+r.width);var o=Math.max(i-this.config.task_scroll_offset,0),s=this._scroll_state().y,c=s?r.top-(s-this.getTaskBarHeight(n))/2:r.top;this.scrollTo(o,c);var l=t(this),u=e(this);l&&u&&l.$config.scrollY!=u.$config.scrollY&&a(this,l,`scrollY`).scrollTo(null,c)},_scroll_state:function(){var e={x:!1,y:!1,x_pos:0,y_pos:0,scroll_size:this.config.scroll_size+1,x_inner:0,y_inner:0},t=r(this),n=i(this);if(n){var a=n.getScrollState();a.visible&&(e.x=a.size,e.x_inner=a.scrollSize),e.x_pos=a.position||0}if(t){var o=t.getScrollState();o.visible&&(e.y=o.size,e.y_inner=o.scrollSize),e.y_pos=o.position||0}return e},getScrollState:function(){var e=this._scroll_state();return{x:e.x_pos,y:e.y_pos,inner_width:e.x,inner_height:e.y,width:e.x_inner,height:e.y_inner}},getLayoutView:function(e){return this.$ui.getView(e)},scrollLayoutCell:function(e,t,n){let r=this.$ui.getView(e);if(!r)return!1;if(t!==null){let e=this.$ui.getView(r.$config.scrollX);e&&e.scrollTo(t,null)}if(n!==null){let e=this.$ui.getView(r.$config.scrollY);e&&e.scrollTo(null,n)}}}}function Ka(e){delete e.addTaskLayer,delete e.addLinkLayer}function qa(e,t,n){for(var r in t)(typeof e[r]>`u`||n)&&(e[r]=t[r])}function Ja(e,t){let n=getComputedStyle(t.$root).getPropertyValue(`--dhx-gantt-theme`),r=!!n,i;if(r)i=n;else{var a=t.skin;if(i=a,!a||e)for(var o=document.getElementsByTagName(`link`),s=0;s<o.length;s++){var c=o[s].href.match(`dhtmlxgantt_([a-z_]+).css`);if(c&&(t.skins[c[1]]||!a)){i=c[1];break}}}t._theme_info={theme:i,cssVarTheme:r},t.skin=i||`terrace`;var l=t.skins[t.skin]||t.skins.terrace;qa(t.config,l.config,e),r||(t.config.link_radius=1);var u=t.getGridColumns();u[1]&&!t.defined(u[1].width)&&(u[1].width=l._second_column_width),u[2]&&!t.defined(u[2].width)&&(u[2].width=l._third_column_width);for(var s=0;s<u.length;s++){var d=u[s];d.name==`add`&&(d.width||=44,t.defined(d.min_width)&&t.defined(d.max_width)||(d.min_width=d.min_width||d.width,d.max_width=d.max_width||d.width),d.min_width&&=+d.min_width,d.max_width&&=+d.max_width,d.width&&=(d.width=+d.width,d.width=d.min_width&&d.min_width>d.width?d.min_width:d.width,d.max_width&&d.max_width<d.width?d.max_width:d.width))}l.config.task_height&&(t.config.task_height=l.config.task_height||`full`),l.config.bar_height&&(t.config.bar_height=l.config.bar_height||`full`),l._lightbox_template&&(t._lightbox_template=l._lightbox_template),l._redefine_lightbox_buttons&&(t.config.buttons_right=l._redefine_lightbox_buttons.buttons_right,t.config.buttons_left=l._redefine_lightbox_buttons.buttons_left),t.resetLightbox()}function Ya(e){e.resetSkin||(e.resetSkin=function(){this.skin=``,Ja(!0,this)},e.skins={},e.attachEvent(`onGanttLayoutReady`,function(){Ja(!1,this),n()})),e._addThemeClass=function(){document.documentElement.setAttribute(`data-gantt-theme`,e.skin)},e.setSkin=function(t){let r=this.skin!==t;this.skin=t,e._addThemeClass(),n(),e.$root&&(Ja(!r,e),this.render())};let t=null;function n(){let n=e.$root;t&&clearInterval(t),n&&(t=setInterval(()=>{let t=getComputedStyle(n).getPropertyValue(`--dhx-gantt-theme`);t&&t!==e.skin&&e.setSkin(t)},100))}e.attachEvent(`onDestroy`,function(){clearInterval(t)})}function Xa(e){e.skins.skyblue={config:{grid_width:370,row_height:27,bar_height_padding:4,scale_height:27,link_line_width:1,link_arrow_size:8,link_radius:2,lightbox_additional_height:75},_second_column_width:95,_third_column_width:80}}function Za(e){e.skins.meadow={config:{grid_width:380,row_height:27,scale_height:30,link_line_width:2,link_arrow_size:10,bar_height_padding:4,lightbox_additional_height:72},_second_column_width:95,_third_column_width:80}}function Qa(e){e.skins.terrace={config:{grid_width:390,row_height:36,scale_height:36,link_line_width:2,link_arrow_size:12,bar_height_padding:9,lightbox_additional_height:75},_second_column_width:100,_third_column_width:70}}function $a(e){e.skins.broadway={config:{grid_width:390,row_height:35,scale_height:35,link_line_width:1,link_arrow_size:9,bar_height_padding:4,lightbox_additional_height:86},_second_column_width:100,_third_column_width:80,_lightbox_template:`<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>`,_config_buttons_left:{},_config_buttons_right:{gantt_delete_btn:`icon_delete`,gantt_save_btn:`icon_save`}}}function eo(e){e.skins.material={config:{grid_width:411,row_height:34,scale_height:36,link_line_width:2,link_arrow_size:12,bar_height_padding:9,lightbox_additional_height:80},_second_column_width:110,_third_column_width:75,_redefine_lightbox_buttons:{buttons_left:[`dhx_delete_btn`],buttons_right:[`dhx_cancel_btn`,`dhx_save_btn`]}},e.attachEvent(`onAfterTaskDrag`,function(t){var n=e.getTaskNode(t);n&&(n.className+=` gantt_drag_animation`,setTimeout(function(){var e=n.className.indexOf(` gantt_drag_animation`);e>-1&&(n.className=n.className.slice(0,e))},200))})}function to(e){e.skins.dark={config:{grid_width:390,row_height:36,scale_height:36,link_line_width:2,link_arrow_size:12,bar_height_padding:9,lightbox_additional_height:75},_second_column_width:100,_third_column_width:70}}function no(e){e.skins.contrast_black={config:{grid_width:390,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:12,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}function ro(e){e.skins.contrast_white={config:{grid_width:390,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:12,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}function io(e){var t=null,n=!1,r=null,i={started:!1},a={};function o(t){return t&&k(t,e.$root)&&t.offsetHeight}function c(){var t;return t=o(e.$task)?e.$task:o(e.$grid)?e.$grid:e.$root,t}function l(){var t=!!document.querySelector(`.gantt_drag_marker`),r=!!document.querySelector(`.gantt_drag_marker.gantt_grid_resize_area`)||!!document.querySelector(`.gantt_drag_marker.gantt_row_grid_resize_area`),i=!!document.querySelector(`.gantt_link_direction`),a=e.getState(),o=a.autoscroll;return n=t&&!r&&!i,!(!a.drag_mode&&!t||r)||o}function u(n){if(r&&=(clearTimeout(r),null),n){var i=e.config.autoscroll_speed;i&&i<10&&(i=10),r=setTimeout(function(){t=setInterval(p,i||50)},e.config.autoscroll_delay||10)}}function d(e){e?(u(!0),i.started||=(i.x=a.x,i.y=a.y,!0)):(t&&=(clearInterval(t),null),u(!1),i.started=!1)}function f(n){var i=l();if((t||r)&&!i&&d(!1),!e.config.autoscroll||!i)return!1;a={x:n.clientX,y:n.clientY},n.type==`touchmove`&&(a.x=n.targetTouches[0].clientX,a.y=n.targetTouches[0].clientY),!t&&i&&d(!0)}function p(){if(!l())return d(!1),!1;var t=c();if(t){var r=!1;[`.gantt_drag_marker.gantt_grid_resize_area`,`.gantt_drag_marker .gantt_row.gantt_row_task`,`.gantt_drag_marker.gantt_grid_dnd_marker`].forEach(function(e){r||=!!document.querySelector(e)}),r&&(t=e.$grid);var o=s(t),u=a.x-o.x,f=a.y-o.y+window.scrollY,p=n?0:m(u,o.width,i.x-o.x),g=m(f,o.height,i.y-o.y+window.scrollY),_=e.getScrollState(),v=_.y,y=_.inner_height,b=_.height,x=_.x,S=_.inner_width,C=_.width;(g&&!y||g<0&&!v||g>0&&v+y>=b+2)&&(g=0),(p&&!S||p<0&&!x||p>0&&x+S>=C)&&(p=0);var w=e.config.autoscroll_step;w&&w<2&&(w=2),p*=w||30,g*=w||30,(p||g)&&h(p,g)}}function m(e,t,n){return e-50<0&&e<n?-1:+(e>t-50&&e>n)}function h(t,n){var r=e.getScrollState(),i=null,a=null;t&&(i=r.x+t,i=Math.min(r.width,i),i=Math.max(0,i)),n&&(a=r.y+n,a=Math.min(r.height,a),a=Math.max(0,a)),e.scrollTo(i,a)}e.attachEvent(`onGanttReady`,function(){if(!J(e)){var t=ne(e.$root)||document.body;e.eventRemove(t,`mousemove`,f),e.event(t,`mousemove`,f),e.eventRemove(t,`touchmove`,f),e.event(t,`touchmove`,f),e.eventRemove(t,`pointermove`,f),e.event(t,`pointermove`,f)}}),e.attachEvent(`onDestroy`,function(){d(!1)})}typeof window<`u`&&window.jQuery&&(function(e){var t=[];e.fn.dhx_gantt=function(n){if(n||={},typeof n==`string`){if(t[n])return t[n].apply(this,[]);e.error(`Method `+n+` does not exist on jQuery.dhx_gantt`)}else{var r=[];return this.each(function(){if(this&&this.getAttribute)if(!this.gantt&&window.gantt.$root!=this){var e=window.gantt.$container&&window.Gantt?window.Gantt.getGanttInstance():window.gantt;for(var t in n)t!=`data`&&(e.config[t]=n[t]);e.init(this),n.data&&e.parse(n.data),r.push(e)}else r.push(typeof this.gantt==`object`?this.gantt:window.gantt)}),r.length===1?r[0]:r}}})(window.jQuery);var ao=null;typeof window<`u`&&window.dhtmlx&&(window.dhtmlx.attaches||(window.dhtmlx.attaches={}),window.dhtmlx.attaches.attachGantt=function(e,t,n){var r=document.createElement(`DIV`);n||=window.gantt,r.id=`gantt_`+n.uid(),r.style.width=`100%`,r.style.height=`100%`,r.cmp=`grid`,document.body.appendChild(r),this.attachObject(r.id),this.dataType=`gantt`,this.dataObj=n;var i=this.vs[this.av];return i.grid=n,n.init(r.id,e,t),r.firstChild.style.border=`none`,i.gridId=r.id,i.gridObj=r,this.vs[this._viewRestore()].grid}),typeof window<`u`&&typeof window.dhtmlXCellObject<`u`&&(window.dhtmlXCellObject.prototype.attachGantt=function(e,t,n){n||=window.gantt;var r=document.createElement(`DIV`);return r.id=`gantt_`+n.uid(),r.style.width=`100%`,r.style.height=`100%`,r.cmp=`grid`,document.body.appendChild(r),this.attachObject(r.id),this.dataType=`gantt`,this.dataObj=n,n.init(r.id,e,t),r.firstChild.style.border=`none`,r=null,this.callEvent(`_onContentAttach`,[]),this.dataObj});var oo=null,so=[`ctrlKey`,`altKey`,`shiftKey`,`metaKey`],co={week:1e3*60*60*24*7,day:1e3*60*60*24,hour:1e3*60*60,minute:1e3*60},lo={minute:0,hour:1,day:2,week:3,month:4,quarter:5,year:6},uo=[{name:`hour`,scale_height:35,scales:[{unit:`day`,step:1,date:`%d %M`},{unit:`hour`,step:1,date:`%H:%i`}]},{name:`day`,scale_height:35,scales:[{unit:`day`,step:1,date:`%d %M`}]},{name:`week`,scale_height:70,scales:[{unit:`month`,step:1,date:`%F, %Y`},{unit:`week`,step:1,date:`Week %W`}]},{name:`month`,scale_height:70,scales:[{unit:`year`,step:1,date:`%Y`},{unit:`month`,step:1,date:`%M`}]},{name:`year`,scale_height:70,scales:[{unit:`year`,step:1,date:`%Y`}]}],fo=class{constructor(e){this.zoomIn=()=>{let e=this.getCurrentLevel()-1;e<0||this.setLevel(e)},this.zoomOut=()=>{let e=this.getCurrentLevel()+1;e>this._levels.length-1||this.setLevel(e)},this.getCurrentLevel=()=>this._activeLevelIndex,this.getLevels=()=>this._levels,this.setLevel=e=>{let t=this._getZoomIndexByName(e);t===-1&&this.$gantt.assert(t!==-1,`Invalid zoom level for gantt.ext.zoom.setLevel. `+e+` is not an expected value.`),this._exitFitMode(),this._setLevel(t,0)},this.zoomToFit=(e={})=>{if(!this._initialized||!this._levels||!this._levels.length)return!1;let t=this.$gantt,n=Object.assign({},this._fitOptions||{},e||{}),r=this._getViewPortWidth();if(!r)return!1;let i=this._resolveZoomToFitRange(n);if(!i)return!1;this._inFitMode&&this._savedState?this._applyState(this._savedState,!0):(this._savedState=this._captureState(),this._inFitMode=!0);let a=this._fitLevels&&this._fitLevels.length?this._fitLevels:this._levels,o=a!==this._levels,s=this._resolveZoomToFitLevels(n,a),c=this._resolveRangeMode(n.rangeMode),l=this._normalizeFitPadding(n.padding),u=s.maxIndex,d=!1;for(let e=s.minIndex;e<=s.maxIndex;e++){let t=a[e],n=this._getSmallestScale(t);if(!n)continue;d=!0;let o=this._normalizeRangeToScale(i,n,l),s=this._countColumns(o.start_date,o.end_date,n.unit,n.step),c=this._getEffectiveColumnWidth(t);if(u=e,s*c<=r)break}if(!d)return this._abortFit();if(this._fitHandler){let e=this._resolveHandlerLevel(this._fitHandler,{range:i,viewportWidth:r,levels:a,padding:l,defaultLevel:u},a);if(e===!1)return this._abortFit();e!==null&&(u=e)}let f=a[u],p=this._getSmallestScale(f);if(!p)return this._abortFit();let m=this._normalizeRangeToScale(i,p,l);return c===`target`&&(t.config.start_date=new Date(m.start_date),t.config.end_date=new Date(m.end_date),this._visibleDate=new Date((m.start_date.valueOf()+m.end_date.valueOf())/2)),f.min_column_width===void 0&&this._hasConfiguredMinColumnWidth&&(t.config.min_column_width=this._getEffectiveColumnWidth(f)),o?this._applyLevelConfig(f):this._setLevel(u,0),!0},this.resetZoom=()=>this._savedState?(this._applyState(this._savedState,!1),this._savedState=null,this._inFitMode=!1,!0):!1,this._abortFit=()=>(this._savedState&&this._applyState(this._savedState,!1),this._exitFitMode(),!1),this._getZoomIndexByName=(e,t=this._levels)=>{let n=-1;if(typeof e==`string`){if(!isNaN(Number(e))&&t[Number(e)])n=Number(e);else for(let r=0;r<t.length;r++)if(t[r].name===e){n=r;break}}else n=e;return n},this._resolveZoomToFitLevels=(e,t=this._levels)=>{let n=0,r=t.length-1;return e.minLevel!==void 0&&(n=this._getZoomIndexByName(e.minLevel,t),this.$gantt.assert(n!==-1,`Invalid zoom level for gantt.ext.zoom.zoomToFit minLevel. `+e.minLevel+` is not an expected value.`)),e.maxLevel!==void 0&&(r=this._getZoomIndexByName(e.maxLevel,t),this.$gantt.assert(r!==-1,`Invalid zoom level for gantt.ext.zoom.zoomToFit maxLevel. `+e.maxLevel+` is not an expected value.`)),this.$gantt.assert(n<=r,`Invalid zoom level range for gantt.ext.zoom.zoomToFit. minLevel must not be greater than maxLevel.`),{minIndex:n,maxIndex:r}},this._resolveHandlerLevel=(e,t,n)=>{let r;try{r=e.call(this,t)}catch(e){return this.$gantt.assert(!1,`gantt.ext.zoom fit.handler threw an error: `+e),null}if(r===!1)return!1;if(r==null||r===!0)return null;let i=this._getZoomIndexByName(r,n);return i<0||i>=n.length?(this.$gantt.assert(!1,`Invalid zoom level returned by gantt.ext.zoom fit.handler. `+r+` is not an expected value.`),null):i},this._resolveZoomToFitRange=e=>e.range?this._normalizeExplicitRange(e.range):e.taskId===void 0?e.scope===`visible`?this._getRangeFromTasks(this._getVisibleTasks()):this._getRangeFromTasks(this.$gantt.getTaskByTime()):this._getBranchRange(e.taskId),this._normalizeExplicitRange=e=>{if(!e||!e.start_date||!e.end_date)return null;let t=new Date(e.start_date),n=new Date(e.end_date);return isNaN(t.valueOf())||isNaN(n.valueOf())?null:t.valueOf()>n.valueOf()?(this.$gantt.assert(!1,`Invalid range for gantt.ext.zoom.zoomToFit. start_date must not be greater than end_date.`),null):{start_date:t,end_date:n}},this._getBranchRange=e=>{if(!this.$gantt.isTaskExists(e))return this.$gantt.assert(!1,`Invalid task id for gantt.ext.zoom.zoomToFit. Task `+e+` does not exist.`),null;let t=[this.$gantt.getTask(e)];return this.$gantt.eachTask(e=>{t.push(e)},e),this._getRangeFromTasks(t)},this._getVisibleTasks=()=>!this.$gantt.$data||!this.$gantt.$data.tasksStore?[]:this.$gantt.$data.tasksStore.getVisibleItems(),this._getRangeFromTasks=e=>{let t={start_date:null,end_date:null};for(let n=0;n<e.length;n++)this._extendRangeFromTask(t,e[n]);if(!(t.start_date&&t.end_date))return null;for(let n=0;n<e.length;n++)this._extendRangeWithExtras(t,e[n]);return{start_date:new Date(t.start_date),end_date:new Date(t.end_date)}},this._extendRangeFromTask=(e,t)=>{let n=this.$gantt,r=n.getTaskType(t.type)==n.config.types.project,i=r&&t.auto_scheduling===!1;n.isUnscheduledTask(t)||(t.start_date&&(r||!t.$no_start||i)&&(!e.start_date||t.start_date<e.start_date)&&(e.start_date=new Date(t.start_date)),t.end_date&&(r||!t.$no_end||i)&&(!e.end_date||t.end_date>e.end_date)&&(e.end_date=new Date(t.end_date)))},this._extendRangeWithExtras=(e,t)=>{let n=this.$gantt;e.start_date&&e.end_date&&(n.config.deadlines&&t.deadline&&this._extendRangeForDates(e,t.deadline,t.deadline),t.constraint_date&&t.constraint_type&&n._getAutoSchedulingConfig().apply_constraints&&n.config.constraint_types&&t.constraint_type!==n.config.constraint_types.ASAP&&t.constraint_type!==n.config.constraint_types.ALAP&&this._extendRangeForDates(e,t.constraint_date,t.constraint_date),n.config.baselines&&t.baselines&&t.baselines.forEach(t=>{this._extendRangeForDates(e,t.start_date,t.end_date)}),t.$auto_start_date&&t.$auto_end_date&&this._extendRangeForDates(e,t.$auto_start_date,t.$auto_end_date))},this._extendRangeForDates=(e,t,n)=>{!t||!n||((!e.start_date||t<e.start_date)&&(e.start_date=new Date(t)),(!e.end_date||n>e.end_date)&&(e.end_date=new Date(n)))},this._normalizeFitPadding=e=>e===void 0||isNaN(e)?1:Math.max(0,Math.floor(e)),this._resolveRangeMode=e=>e===`preserve`||e===`target`?e:this.$gantt.config.start_date&&this.$gantt.config.end_date?`preserve`:`target`,this._getSmallestScale=e=>{if(!e||!e.scales||!e.scales.length)return null;let t=null;return e.scales.forEach(e=>{let n={unit:e.unit,step:e.step||1};if(!t){t=n;return}(lo[n.unit]<lo[t.unit]||n.unit===t.unit&&n.step<t.step)&&(t=n)}),t},this._normalizeRangeToScale=(e,t,n)=>{let r=this.$gantt,i=r.date[t.unit+`_start`],a=i.call(r.date,new Date(e.start_date)),o=i.call(r.date,new Date(e.end_date));return{start_date:r.calculateEndDate({start_date:a,duration:-n,unit:t.unit,step:t.step}),end_date:r.calculateEndDate({start_date:o,duration:n+1,unit:t.unit,step:t.step})}},this._countColumns=(e,t,n,r)=>{if(co[n])return Math.round((t.valueOf()-e.valueOf())/(r*co[n]));let i=new Date(e),a=0;for(;i.valueOf()<t.valueOf();)a++,i=this.$gantt.date.add(i,r,n);return a},this._getEffectiveColumnWidth=e=>e.min_column_width===void 0?this._hasConfiguredMinColumnWidth?this._minColumnWidth:this.$gantt.config.min_column_width:e.min_column_width,this._getVisibleDate=()=>{if(!this.$gantt.$task)return null;let e=this.$gantt.getScrollState().x,t=this.$gantt.$task.offsetWidth;this._visibleDate=this.$gantt.dateFromPos(e+t/2)},this._getViewPortWidth=()=>{let e=0,t=this.$gantt;return t.$task&&t.$task.offsetWidth?e=t.$task.offsetWidth:[`resourceTimeline`,`resourceHistogram`].forEach(function(n){let r=t.$ui.getView(n);r&&r.$task&&r.$task.offsetWidth&&(e=r.$task.offsetWidth)}),e},this._setLevel=(e,t)=>{this._activeLevelIndex=e,this._applyChartConfig(this._levels[this._activeLevelIndex],t)},this._applyLevelConfig=e=>{this._applyChartConfig(e,0)},this._applyChartConfig=(e,t)=>{let n=this.$gantt,r=n.copy(e),i=n.copy(r);if(delete i.name,n.mixin(n.config,i,!0),this._syncResourceViews(i),n.$root){if(t){let e=n.dateFromPos(t+n.getScrollState().x);n.render();let r=n.posFromDate(e);n.scrollTo(r-t)}else{let e=this._getViewPortWidth();this._visibleDate||this._getVisibleDate();let t=this._visibleDate;if(n.render(),e){let r=n.posFromDate(t);n.scrollTo(r-e/2)}}this.callEvent(`onAfterZoom`,[this._activeLevelIndex,r])}},this._syncResourceViews=e=>{let t=this.$gantt;[`resourceTimeline`,`resourceHistogram`].forEach(function(n){let r=t.$ui.getView(n);if(r){let n=r.$getConfig();n.fixed_scales||t.mixin(n,e,!0)}})},this._exitFitMode=()=>{this._inFitMode=!1,this._savedState=null},this._captureState=()=>{let e=this.$gantt,t=e.config;return{levelIndex:this._activeLevelIndex,scales:t.scales?e.copy(t.scales):void 0,scale_height:t.scale_height,min_column_width:t.min_column_width,start_date:t.start_date?new Date(t.start_date.valueOf()):void 0,end_date:t.end_date?new Date(t.end_date.valueOf()):void 0,scroll:e.$root?e.getScrollState():null}},this._applyState=(e,t)=>{let n=this.$gantt,r=n.config;if(e.scales!==void 0&&(r.scales=n.copy(e.scales)),r.scale_height=e.scale_height,r.min_column_width=e.min_column_width,r.start_date=e.start_date?new Date(e.start_date.valueOf()):void 0,r.end_date=e.end_date?new Date(e.end_date.valueOf()):void 0,this._activeLevelIndex=e.levelIndex,t)return;let i={scale_height:e.scale_height,min_column_width:e.min_column_width};if(e.scales!==void 0&&(i.scales=n.copy(e.scales)),this._syncResourceViews(i),n.$root){if(n.render(),e.scroll){let t=e.scroll;setTimeout(function(){n.scrollTo(t.x,t.y)},4)}this.callEvent(`onAfterZoom`,[this._activeLevelIndex,n.copy(this._levels[this._activeLevelIndex])])}},this._attachWheelEvent=e=>{let t=U.isFF?`wheel`:`mousewheel`,n;n=typeof e.element==`function`?e.element():e.element,n&&this._domEvents.attach(n,t,this.$gantt.bind(function(e){if(this._useKey&&(so.indexOf(this._useKey)<0||!e[this._useKey]))return!1;if(typeof this._handler==`function`)return this._handler.apply(this,[e]),!0},this),{passive:!1})},this._defaultHandler=e=>{let t=this.$gantt.$task.getBoundingClientRect().x,n=e.clientX-t,r=this.$gantt.env.isFF?e.deltaY*-40:e.wheelDelta,i=!1;r>0&&(i=!0),e.preventDefault(),e.stopPropagation(),this._exitFitMode(),this._setScaleSettings(i,n)},this._setScaleDates=()=>{this._initialStartDate&&this._initialEndDate&&(this.$gantt.config.start_date=this._initialStartDate,this.$gantt.config.end_date=this._initialEndDate)},this.$gantt=e,this._domEvents=this.$gantt._createDomEventScope()}init(e={}){if(this.$gantt.env.isNode)return;this._initialStartDate=e.startDate,this._initialEndDate=e.endDate,this._activeLevelIndex=e.activeLevelIndex?e.activeLevelIndex:0,this._levels=this._mapScales(e.levels||uo),this._handler=e.handler||this._defaultHandler,this._hasConfiguredMinColumnWidth=e.minColumnWidth!==void 0,this._minColumnWidth=e.minColumnWidth===void 0?60:e.minColumnWidth,this._maxColumnWidth=e.maxColumnWidth===void 0?240:e.maxColumnWidth,this._widthStep=e.widthStep===void 0?e.minColumnWidth===void 0?void 0:3/8*e.minColumnWidth:e.widthStep;let t=e.fit||{};this._fitHandler=typeof t.handler==`function`?t.handler:null,this._fitLevels=t.levels?this._mapScales(t.levels):null;let n={};for(let e in t)e!==`handler`&&e!==`levels`&&(n[e]=t[e]);this._fitOptions=this.$gantt.copy(n),this._savedState=null,this._inFitMode=!1,this._useKey=e.useKey,this._initialized||(N(this),this.$gantt.attachEvent(`onGanttScroll`,()=>{this._getVisibleDate()})),this._domEvents.detachAll(),e.trigger===`wheel`&&(this.$gantt.$root?this._attachWheelEvent(e):this.$gantt.attachEvent(`onGanttLayoutReady`,()=>{this.$gantt.attachEvent(`onGanttRender`,()=>{this._attachWheelEvent(e)},{once:!0})})),this._initialized=!0,this.setLevel(this._activeLevelIndex)}_mapScales(e){return e.map(e=>Array.isArray(e)?{scales:e}:e)}_setScaleSettings(e,t){e?this._stepUp(t):this._stepDown(t)}_stepUp(e){if(this._activeLevelIndex>=this._levels.length-1)return;let t=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){let e=this.$gantt.config.min_column_width+this._widthStep;e>this._maxColumnWidth&&(e=this._minColumnWidth,t++),this.$gantt.config.min_column_width=e}else t++;this._setLevel(t,e)}_stepDown(e){if(this._activeLevelIndex<1)return;let t=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){let e=this.$gantt.config.min_column_width-this._widthStep;e<this._minColumnWidth&&(e=this._maxColumnWidth,t--),this.$gantt.config.min_column_width=e}else t--;this._setLevel(t,e)}};function po(e){e.ext||={};for(var t=[io,ao,oo],n=0;n<t.length;n++)t[n]&&t[n](e);e.ext.zoom=new fo(e)}function mo(e){e.config.touch_drag=75,e.config.touch=!0,e.config.touch_feedback=!0,e.config.touch_feedback_duration=1,e._prevent_touch_scroll=!1,e._touch_feedback=function(){e.config.touch_feedback&&navigator.vibrate&&navigator.vibrate(e.config.touch_feedback_duration)},e.attachEvent(`onGanttReady`,function(){e.$container&&t()}),e.attachEvent(`onGanttLayoutReady`,function(){e.$container&&e.attachEvent(`onGanttRender`,t,{once:!0})});function t(){e.config.touch!=`force`&&(e.config.touch=e.config.touch&&(navigator.userAgent.indexOf(`Mobile`)!=-1||navigator.userAgent.indexOf(`iPad`)!=-1||navigator.userAgent.indexOf(`Android`)!=-1||navigator.userAgent.indexOf(`Touch`)!=-1)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1),e.config.touch&&(!e.env.isIE||window.navigator.maxTouchPoints?e._touch_events([`touchmove`,`touchstart`,`touchend`],function(e){return e.touches&&e.touches.length>1?null:e.touches[0]?{target:e.target,pageX:e.touches[0].pageX,pageY:e.touches[0].pageY,clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}:e},function(e){return e.defaultPrevented}):window.PointerEvent&&e._touch_events([`pointermove`,`pointerdown`,`pointerup`],function(e){return e.pointerType==`mouse`?null:e},function(e){return!e||e.pointerType==`mouse`}))}function n(t){for(var n=e.$layout.getCellsByType(`viewCell`),r=0;r<n.length;r++){var i=n[r].$view.getBoundingClientRect();if(t.clientX>=i.left&&t.clientX<=i.right&&t.clientY<=i.bottom&&t.clientY>=i.top)return n[r]}}function r(t){var n=t.$config.scrollX?e.$ui.getView(t.$config.scrollX):null,r=t.$config.scrollY?e.$ui.getView(t.$config.scrollY):null,i={x:null,y:null};if(n){var a=n.getScrollState();a.visible&&(i.x=n.$view.scrollLeft)}if(r){var a=r.getScrollState();a.visible&&(i.y=r.$view.scrollTop)}return i}function i(t,n,r){var i=t.$config.scrollX?e.$ui.getView(t.$config.scrollX):null,a=t.$config.scrollY?e.$ui.getView(t.$config.scrollY):null;i&&i.scrollTo(n,null),a&&a.scrollTo(null,r)}function a(){var t;return e.$ui.getView(`timeline`)&&(t=e.$ui.getView(`timeline`)._tasks_dnd),t}var o=[];e._touch_events=function(t,s,c){var l=0,u=!1,d=!1,f=null,p=null,m,h=null,g=null,_=[],v=null;let y={};for(var b=0;b<o.length;b++)e.eventRemove(o[b][0],o[b][1],o[b][2]);o=[],o.push([e.$container,t[0],function(t){var n=a();if(!c(t)&&u){h&&clearTimeout(h);var o=s(t);if(n&&(n.drag.id||n.drag.start_drag))return n.on_mouse_move(o),t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1;if(!e._prevent_touch_scroll){if(o&&f){var p=f.pageX-o.pageX,g=f.pageY-o.pageY;if(!d&&(Math.abs(p)>5||Math.abs(g)>5)&&(d=!0,l=0,m=v?r(v):e.getScrollState()),d){var _,y=m.x+p,b=m.y+g;if(v?(i(v,y,b),_=r(v)):(e.scrollTo(y,b),_=e.getScrollState()),m.x!=_.x&&g>2*p||m.y!=_.y&&p>2*g)return x(t)}}return x(t)}return!0}}]);try{document.addEventListener(`touchmove`,function(t){e._touch_drag&&x(t)},{passive:!1})}catch{console.warn(`Cannot prevent touch event for the page drag`)}o.push([this.$container,`contextmenu`,function(e){if(u)return x(e)}]),o.push([this.$container,t[1],function(t){if(y=t.touches.length,document&&document.body&&document.body.classList.add(`gantt_touch_active`),!c(t)){if(t.touches&&t.touches.length>1){u=!1;return}f=s(t),v=n(f),!e._locate_css(f,`gantt_hor_scroll`)&&!e._locate_css(f,`gantt_ver_scroll`)&&(u=!0);var r=a();h=setTimeout(function(){var t=e.locate(f);r&&t&&!e._locate_css(f,`gantt_link_control`)&&!e._locate_css(f,`gantt_grid_data`)&&(r.on_mouse_down(f),r.drag&&r.drag.start_drag&&(S(t),r._start_dnd(f),e._touch_drag=!0,e.refreshTask(t),e._touch_feedback())),h=null},e.config.touch_drag)}}]),o.push([this.$container,t[2],function(t){if(document&&document.body&&document.body.classList.remove(`gantt_touch_active`),!c(t)){h&&clearTimeout(h),e._touch_drag=!1,u=!1;var n=s(t),r=a();if(r&&r.on_mouse_up(n),g&&e.isTaskExists(g)&&(e.refreshTask(g),_.length&&(_.forEach(function(e){e.parentNode&&e.parentNode.removeChild(e)}),e._touch_feedback())),u=d=!1,_=[],g=null,f&&l){var i=new Date;let n=y<=1,r=p&&p.target.innerHTML==f.target.innerHTML;i-l<500&&n&&r?(e.$services.getService(`mouseEvents`).onDoubleClick(f),x(t)):(l=i,p=f)}else l=new Date}}]);for(var b=0;b<o.length;b++)e.event(o[b][0],o[b][1],o[b][2]);function x(e){return e&&e.preventDefault&&e.cancelable&&e.preventDefault(),e.cancelBubble=!0,!1}function S(t){let n=e._getTaskLayers(),r=e.getTask(t);if(r){let i=e.isTaskVisible(t);if(i){g=t;for(let i=0;i<n.length;i++){let a=n[i].rendered[t];if(a&&a.getAttribute(e.config.task_attribute)&&a.getAttribute(e.config.task_attribute)==t){let e=a.cloneNode(!0);_.push(a),n[i].rendered[t]=e,a.style.display=`none`,e.className+=` gantt_drag_move `,a.parentNode.appendChild(e)}if(r.rollup){let t=n[i].rendered;for(let n in t){let i=t[n],a=i.querySelector(`[${e.config.task_attribute}="${r.id}"]`);if(a){let t=a.cloneNode(!0);i.appendChild(t),e.$task_bars.appendChild(a),a.style.display=`none`,_.push(a)}}}}}else if(r.$split_subtask){let a=r.$rendered_parent;if(i=e.isTaskVisible(a),!i)return;g=t;for(let t=0;t<n.length;t++){let i=n[t].rendered[a],o;if(i&&i.childNodes&&(o=i.querySelector(`[${e.config.task_attribute}="${r.id}"]`)),o){let t=o.cloneNode(!0);o.parentNode.appendChild(t),e.$task_bars.appendChild(o),o.style.display=`none`,_.push(o),o=null}}}}}}}function ho(){console.log(`Method is not implemented.`)}function go(){}go.prototype.render=ho,go.prototype.set_value=ho,go.prototype.get_value=ho,go.prototype.focus=ho;function Q(e){return go}function _o(e){let t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(e){let t=e.height?`${e.height}px`:``;return`<div class='gantt_cal_ltext gantt_cal_template gantt_section_${e.name}' ${t?`style='height:${t};'`:``}></div>`},n.prototype.set_value=function(e,t){e.innerHTML=t||``},n.prototype.get_value=function(e){return e.innerHTML||``},n.prototype.focus=function(){},n}function vo(e){let t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(e){let t=(e.height||`130`)+`px`,n=e.placeholder?`placeholder='${e.placeholder}'`:``;return`<div class='gantt_cal_ltext gantt_section_${e.name}' style='height:${t};' ${n}><textarea></textarea></div>`},n.prototype.set_value=function(t,n){e.form_blocks.textarea._get_input(t).value=n||``},n.prototype.get_value=function(t){return e.form_blocks.textarea._get_input(t).value},n.prototype.focus=function(t){var n=e.form_blocks.textarea._get_input(t);e._focus(n,!0)},n.prototype._get_input=function(e){return e.querySelector(`textarea`)},n}function yo(e){let t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(t){var n=e.form_blocks.getTimePicker.call(this,t);let r=`gantt_section_time`;t.name!==`time`&&(r+=` gantt_section_`+t.name);var i=`<div style='padding-top:0px;font-size:inherit;text-align:center;' class='`+r+`'>`;return i+=n,t.single_date?(n=e.form_blocks.getTimePicker.call(this,t,!0),i+=`<span></span>`):i+=`<span class='gantt_section_time_spacer'> – </span>`,i+=n,i+=`</div>`,i},n.prototype.set_value=function(t,n,r,i){var a=i,o=t.getElementsByTagName(`select`),s=i._time_format_order;if(a.auto_end_date)for(var c=function(){d=new Date(o[s[2]].value,o[s[1]].value,o[s[0]].value,0,0),f=e.calculateEndDate({start_date:d,duration:1,task:r}),e.form_blocks._fill_lightbox_select(o,s.size,f,s,a)},l=0;l<4;l++)o[l].onchange=c;var u=e._resolve_default_mapping(i);typeof u==`string`&&(u={start_date:u});var d=r[u.start_date]||new Date,f=r[u.end_date]||e.calculateEndDate({start_date:d,duration:1,task:r});e.form_blocks._fill_lightbox_select(o,0,d,s,a),e.form_blocks._fill_lightbox_select(o,s.size,f,s,a)},n.prototype.get_value=function(t,n,r){var i=t.getElementsByTagName(`select`),a,o=r._time_format_order;function s(t,n,i){var a=e.form_blocks.getTimePickerValue(t,r,n.size);return a<=i&&(r.autofix_end!==!1||r.single_date)?e.date.add(i,e._get_timepicker_step(),`minute`):a}return a=e.form_blocks.getTimePickerValue(i,r),typeof e._resolve_default_mapping(r)==`string`?a:{start_date:a,end_date:s(i,o,a)}},n.prototype.focus=function(t){e._focus(t.getElementsByTagName(`select`)[0])},n}var bo={getHtmlSelect:function(e,t,n){var r=``,i=this;return e||=[],ue(e,function(e){var t=[{key:`value`,value:e.key}];n==e.key&&(t[t.length]={key:`selected`,value:`selected`}),e.attributes&&(t=t.concat(e.attributes)),r+=i.getHtmlOption({innerHTML:e.label},t)}),xo(`select`,{innerHTML:r},t)},getHtmlOption:function(e,t){return xo(`option`,e,t)},getHtmlButton:function(e,t){return xo(`button`,e,t)},getHtmlDiv:function(e,t){return xo(`div`,e,t)},getHtmlLabel:function(e,t){return xo(`label`,e,t)},getHtmlInput:function(e){return`<input`+So(e||[])+`>`}};function xo(e,t,n){var r;return t||=[],r=`<`+e+So(n||[])+`>`+(t.innerHTML||``)+`</`+e+`>`,r}function So(e){var t=``;return ue(e,function(e){t+=` `+e.key+`='`+e.value+`'`}),t}function Co(e){let t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(e){let t=e.height?`height:${e.height}px;`:``,n=`<div class='gantt_cal_ltext gantt_section_${e.name}' ${t?`style='${t}'`:``}>`;return n+=bo.getHtmlSelect(e.options,[{key:`style`,value:`width:100%;`},{key:`title`,value:e.name}]),n+=`</div>`,n},n.prototype.set_value=function(e,t,n,r){var i=e.firstChild;!i._dhx_onchange&&r.onchange&&(i.onchange=r.onchange,i._dhx_onchange=!0),typeof t>`u`&&(t=(i.options[0]||{}).value),i.value=t||``},n.prototype.get_value=function(e){return e.firstChild.value},n.prototype.focus=function(t){var n=t.firstChild;e._focus(n,!0)},n}function wo(e){var t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(e){let t=e.height?`height:${e.height}px;`:``,n=`<div class='gantt_cal_ltext gantt_cal_lcheckbox gantt_section_${e.name}' ${t?`style='${t}'`:``}>`;if(e.options&&e.options.length)for(var r=0;r<e.options.length;r++)n+=`<label><input type='checkbox' value='`+e.options[r].key+`' name='`+e.name+`'>`+e.options[r].label+`</label>`;else e.single_value=!0,n+=`<label><input type='checkbox' name='`+e.name+`'></label>`;return n+=`</div>`,n},n.prototype.set_value=function(e,t,n,r){var i=Array.prototype.slice.call(e.querySelectorAll(`input[type=checkbox]`));if(!e._dhx_onchange&&r.onchange&&(e.onchange=r.onchange,e._dhx_onchange=!0),r.single_value){var a=i[0];a.checked=!!t}else ue(i,function(e){e.checked=t?t.indexOf(e.value)>=0:!1})},n.prototype.get_value=function(e,t,n){return n.single_value?e.querySelector(`input[type=checkbox]`).checked:de(Array.prototype.slice.call(e.querySelectorAll(`input[type=checkbox]:checked`)),function(e){return e.value})},n.prototype.focus=function(t){e._focus(t.querySelector(`input[type=checkbox]`))},n}function To(e){let t=Q();function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(e){let t=e.height?`${e.height}px`:``,n=`<div class='gantt_cal_ltext gantt_cal_lradio gantt_section_${e.name}' ${t?`style='height:${t};'`:``}>`;if(e.options&&e.options.length)for(var r=0;r<e.options.length;r++)n+=`<label><input type='radio' value='`+e.options[r].key+`' name='`+e.name+`'>`+e.options[r].label+`</label>`;return n+=`</div>`,n},n.prototype.set_value=function(e,t,n,r){var i;!r.options||!r.options.length||(i=e.querySelector(`input[type=radio][value='`+t+`']`)||e.querySelector(`input[type=radio][value='`+r.default_value+`']`),i&&(!e._dhx_onchange&&r.onchange&&(e.onchange=r.onchange,e._dhx_onchange=!0),i.checked=!0))},n.prototype.get_value=function(e,t){var n=e.querySelector(`input[type=radio]:checked`);return n?n.value:``},n.prototype.focus=function(t){e._focus(t.querySelector(`input[type=radio]`))},n}function Eo(e){var t=Q();function n(){return t.apply(this,arguments)||this}function r(e){return e.formatter||new ln}X(n,t),n.prototype.render=function(t){var n=`<div class='gantt_time_selects'>`+e.form_blocks.getTimePicker.call(this,t)+`</div>`,r=` `+e.locale.labels[e.config.duration_unit+`s`]+` `,i=t.single_date?` style='display:none'`:``,a=t.readonly?` disabled='disabled'`:``,o=e._waiAria.lightboxDurationInputAttrString(t),s=`gantt_duration_value`;t.formatter&&(r=``,s+=` gantt_duration_value_formatted`);var c=`<div class='gantt_duration' `+i+`><div class='gantt_duration_inputs'><input type='button' class='gantt_duration_dec' value='−'`+a+`><input type='text' value='5days' class='`+s+`'`+a+` `+o+`><input type='button' class='gantt_duration_inc' value='+'`+a+`></div><div class='gantt_duration_end_date'>`+r+`<span></span></div></div></div>`;let l=`gantt_section_time gantt_section_duration`;return t.name!==`time`&&(l+=` gantt_section_`+t.name),`<div style='padding-top:0px;font-size:inherit;' class='`+l+`'>`+n+` `+c+`</div>`},n.prototype.set_value=function(t,n,o,s){var c=t.getElementsByTagName(`select`),l=t.getElementsByTagName(`input`),u=l[1],d=[l[0],l[2]],f=t.getElementsByTagName(`span`)[0],p=s._time_format_order,m,h,g,_;function v(){var n=i.call(e,t,s),r=a.call(e,t,s),c=e.calculateEndDate({start_date:n,duration:r,task:o});f.innerHTML=(e.templates.task_end_date||e.templates.task_date)(c)}function y(e){var t=u.value;t=r(s).parse(t),window.isNaN(t)&&(t=0),t+=e,t<1&&(t=1),u.value=r(s).format(t),v()}d[0].onclick=e.bind(function(){y(-1*e.config.duration_step)},this),d[1].onclick=e.bind(function(){y(1*e.config.duration_step)},this),c[0].onchange=v,c[1].onchange=v,c[2].onchange=v,c[3]&&(c[3].onchange=v),u.onkeydown=e.bind(function(t){var n;if(t||=window.event,n=t.charCode||t.keyCode||t.which,n==e.constants.KEY_CODES.DOWN)return y(-1*e.config.duration_step),!1;if(n==e.constants.KEY_CODES.UP)return y(1*e.config.duration_step),!1;window.setTimeout(v,1)},this),u.onchange=e.bind(v,this),m=e._resolve_default_mapping(s),typeof m==`string`&&(m={start_date:m}),h=o[m.start_date]||new Date,g=o[m.end_date]||e.calculateEndDate({start_date:h,duration:1,task:o}),_=Math.round(o[m.duration])||e.calculateDuration({start_date:h,end_date:g,task:o}),_=r(s).format(_),e.form_blocks._fill_lightbox_select(c,0,h,p,s),u.value=_,v()},n.prototype.get_value=function(t,n,r){var o=i(t,r),s=a(t,r),c=e.calculateEndDate({start_date:o,duration:s,task:n});return typeof e._resolve_default_mapping(r)==`string`?o:(e.getScale().projection&&e.getCalendar(`timescale-projection-calendar`)&&(o=e.getCalendar(`timescale-projection-calendar`).getClosestWorkTime({date:o,unit:e.config.duration_unit,dir:`future`})),{start_date:o,end_date:c,duration:s})},n.prototype.focus=function(t){e._focus(t.getElementsByTagName(`select`)[0])};function i(t,n){var r=t.getElementsByTagName(`select`),i=n._time_format_order,a=0,o=0;if(e.defined(i[3])){var s=r[i[3]],c=parseInt(s.value,10);isNaN(c)&&s.hasAttribute(`data-value`)&&(c=parseInt(s.getAttribute(`data-value`),10)),a=Math.floor(c/60),o=c%60}return new Date(r[i[2]].value,r[i[1]].value,r[i[0]].value,a,o)}function a(e,t){var n=e.getElementsByTagName(`input`)[1];return n=r(t).parse(n.value),(!n||window.isNaN(n))&&(n=1),n<0&&(n*=-1),n}return n}function Do(e){var t=Co(e);function n(){return t.apply(this,arguments)||this}X(n,t),n.prototype.render=function(e){return r(e,!1)},n.prototype.set_value=function(t,n,i,a){n===0&&(n=`0`),!i.id&&e.getState().lightbox&&(i.id=e.getLightboxValues().id);var o=document.createElement(`div`);o.innerHTML=r(a,i.id);var s=o.removeChild(o.firstChild);return t.onselect=null,t.parentNode.replaceChild(s,t),e.form_blocks.select.set_value.apply(e,[s,n,i,a])};function r(t,n){var r=[],a=[];n&&(r=e.getTaskByTime(),t.allow_root&&r.unshift({id:e.config.root_id,text:t.root_label||``}),r=i(r,t,n),t.sort&&r.sort(t.sort));for(var o=t.template||e.templates.task_text,s=0;s<r.length;s++){var c=o.apply(e,[r[s].start_date,r[s].end_date,r[s]]);c===void 0&&(c=``),a.push({key:r[s].id,label:c})}return t.options=a,t.map_to=t.map_to||`parent`,e.form_blocks.select.render.apply(this,arguments)}function i(t,n,r){var i=n.filter||function(){return!0};t=t.slice(0);for(var a=0;a<t.length;a++){var o=t[a];(o.id==r||e.isChildOf(o.id,r)||i(o.id,o)===!1)&&(t.splice(a,1),a--)}return t}return n}function Oo(e){var t=Q();function n(){return t.apply(this,arguments)||this}X(n,t);function r(t){return!t||t===e.config.constraint_types.ASAP||t===e.config.constraint_types.ALAP}function i(e,t){for(var n=r(t),i=0;i<e.length;i++)e[i].disabled=n}return n.prototype.render=function(t){let n=t.height?`height:${t.height}px;`:``,r=`<div class='gantt_cal_ltext gantt_section_${t.name}' ${n?`style='${n}'`:``}>`;var i=[];for(var a in e.config.constraint_types)i.push({key:e.config.constraint_types[a],label:e.locale.labels[e.config.constraint_types[a]]});t.options=t.options||i,r+=`<span data-constraint-type-select>`+bo.getHtmlSelect(t.options,[{key:`data-type`,value:`constraint-type`}])+`</span>`;var o=e.locale.labels.constraint_date||`Constraint date`;return r+=`<label data-constraint-time-select>`+o+`: `+e.form_blocks.getTimePicker.call(this,t)+`</label>`,r+=`</div>`,r},n.prototype.set_value=function(t,n,r,a){var o=t.querySelector(`[data-constraint-type-select] select`),s=t.querySelectorAll(`[data-constraint-time-select] select`),c=a._time_format_order,l=e._resolve_default_mapping(a);o._eventsInitialized||=(o.addEventListener(`change`,function(e){i(s,e.target.value)}),!0);var u=r[l.constraint_date]||new Date;e.form_blocks._fill_lightbox_select(s,0,u,c,a);var d=r[l.constraint_type]||e.getConstraintType(r);o.value=d,i(s,d)},n.prototype.get_value=function(t,n,i){var a=t.querySelector(`[data-constraint-type-select] select`),o=t.querySelectorAll(`[data-constraint-time-select] select`),s=a.value,c=null;return r(s)||(c=e.form_blocks.getTimePickerValue(o,i)),{constraint_type:s,constraint_date:c}},n.prototype.focus=function(t){e._focus(t.querySelector(`select`))},n}function ko(e){let t=Co(e);function n(){return t.apply(this,arguments)||this}return X(n,t),n.prototype.render=function(n){var r=e.config.types,i=e.locale.labels,a=[],o=n.filter||function(e,t){return!r.placeholder||t!==r.placeholder};for(var s in r)o(s,r[s])&&a.push({key:r[s],label:i[`type_`+s]});n.options=a;var c=n.onchange;return n.onchange=function(){e._lightbox_current_type=this.value,e.changeLightboxType(this.value),typeof c==`function`&&c.apply(this,arguments)},t.prototype.render.apply(this,arguments)},n}function Ao(e){var t=Q();function n(){return t.apply(this,arguments)||this}function r(e){return e.formatter||new ln}function i(t,n,i,s){let c=`<div class='gantt_time_selects'>`+e.form_blocks.getTimePicker.call(e,s)+`</div>`,l=` `+e.locale.labels[e.config.duration_unit+`s`]+` `,u=s.single_date?` style='display:none'`:``,d=s.readonly?` disabled='disabled'`:``,f=e._waiAria.lightboxDurationInputAttrString(s),p=e.locale.labels.baselines_remove_button,m=`gantt_duration_value`;s.formatter&&(l=``,m+=` gantt_duration_value_formatted`);let h=`<div class='gantt_duration' `+u+`><div class='gantt_duration_inputs'><input type='button' class='gantt_duration_dec' value='-'`+d+`><input type='text' value='5days' class='`+m+`'`+d+` `+f+`><input type='button' class='gantt_duration_inc' value='+'`+d+`></div><div class='gantt_duration_end_date'>`+l+`<span></span></div></div></div>`,g=`<div><div class='baseline_delete_button gantt_custom_button dhx_gantt_icon dhx_gantt_icon_delete' aria-label='${p}'></div></div>`,_=document.createElement(`div`);_.className=`gantt_section_time gantt_section_duration`,_.setAttribute(`data-baseline-id`,n.id),_.innerHTML=c+h+g+`<br>`,t.appendChild(_);var v=_.getElementsByTagName(`select`),y=_.getElementsByTagName(`input`),b=y[1],x=[y[0],y[2]],S=_.getElementsByTagName(`span`)[0],C=s._time_format_order,w,T,E;let D=_.querySelector(`.baseline_delete_button`);D.onclick=function(t){let n=_.parentNode;_.innerHTML=``,_.remove(),n.innerHTML===``&&(n.innerHTML=e.locale.labels.baselines_section_placeholder)};function O(){var t=a.call(e,_,s),n=o.call(e,_,s),r=e.calculateEndDate({start_date:t,duration:n,task:i});S.innerHTML=(e.templates.task_end_date||e.templates.task_date)(r)}function k(e){var t=b.value;t=r(s).parse(t),window.isNaN(t)&&(t=0),t+=e,t<1&&(t=1),b.value=r(s).format(t),O()}x[0].onclick=e.bind(function(){k(-1*e.config.duration_step)},e),x[1].onclick=e.bind(function(){k(1*e.config.duration_step)},e),v[0].onchange=O,v[1].onchange=O,v[2].onchange=O,v[3]&&(v[3].onchange=O),b.onkeydown=e.bind(function(t){var n;if(t||=window.event,n=t.charCode||t.keyCode||t.which,n==e.constants.KEY_CODES.DOWN)return k(-1*e.config.duration_step),!1;if(n==e.constants.KEY_CODES.UP)return k(1*e.config.duration_step),!1;window.setTimeout(O,1)},e),b.onchange=e.bind(O,e),e._resolve_default_mapping(s),w=n.start_date||new Date,T=n.end_date||e.calculateEndDate({start_date:w,duration:1,task:i}),E=e.calculateDuration({start_date:w,end_date:T,task:i}),E=r(s).format(E),e.form_blocks._fill_lightbox_select(v,0,w,C,s),b.value=E,O()}X(n,t),n.prototype.render=function(e){return`<div style='height: ${e.height||110}px; font-size:inherit;' class='gantt_section_baselines'></div>`},n.prototype.set_value=function(t,n,r,a){r.baselines?(t.innerHTML=``,r.baselines.forEach(e=>{i(t,e,r,a)})):t.innerHTML=e.locale.labels.baselines_section_placeholder},n.prototype.get_value=function(t,n,r){let i=[];return t.querySelectorAll(`[data-baseline-id]`).forEach(t=>{let s=t.dataset.baselineId,c=e.getDatastore(`baselines`).getItem(s),l;l=c?e.copy(c):{id:e.uid(),task_id:n.id,text:`Baseline 1`},l.start_date=a(t,r),l.duration=o(t,r),l.end_date=e.calculateEndDate({start_date:l.start_date,duration:l.duration,task:n}),i.push(l)}),i},n.prototype.button_click=function(t,n,r,a){if(e.callEvent(`onSectionButton`,[e._lightbox_id,r])!==!1&&(n.closest(`.gantt_custom_button.gantt_remove_baselines`)&&(a.innerHTML=e.locale.labels.baselines_section_placeholder),n.closest(`.gantt_custom_button.gantt_add_baselines`))){a.innerHTML==e.locale.labels.baselines_section_placeholder&&(a.innerHTML=``);let n=e.getTask(e._lightbox_id),r={id:e.uid(),task_id:n.id,start_date:n.start_date,end_date:n.end_date},o=e._get_typed_lightbox_config()[t];i(a,r,n,o)}},n.prototype.focus=function(t){e._focus(t.getElementsByTagName(`select`)[0])};function a(t,n){var r=t.getElementsByTagName(`select`),i=n._time_format_order,a=0,o=0;if(e.defined(i[3])){var s=r[i[3]],c=parseInt(s.value,10);isNaN(c)&&s.hasAttribute(`data-value`)&&(c=parseInt(s.getAttribute(`data-value`),10)),a=Math.floor(c/60),o=c%60}return new Date(r[i[2]].value,r[i[1]].value,r[i[0]].value,a,o)}function o(e,t){var n=e.getElementsByTagName(`input`)[1];return n=r(t).parse(n.value),(!n||window.isNaN(n))&&(n=1),n<0&&(n*=-1),n}return n}function jo(e){let t=Q(),n={resourcesValues:{},filter:{},eventsInitialized:{},gridID:null,resource_filter_value:null,initialValues:[],newValues:[]},r={type:`select`,map_to:`resource_id`,options:e.serverList(`resourceOptions`)},i={type:`number`,map_to:`value`,min:0,max:100},a=e.date.date_to_str(`%d-%m-%Y`);e.resource_table={scale_height:35,row_height:35,columns:[{name:`resource`,label:`Resource`,align:`center`,width:80,editor:r,template:function(t){let n=e.getDatastore(e.config.resource_store).getItem(t.resource_id);return n?n.text:`Unassigned`}},{name:`hours/Day`,label:`Hours/Day`,align:`center`,width:70,editor:i,template:function(e){return e.value?+e.value:``}},{name:`start`,label:`Start`,align:`center`,width:100,template:function(e){return e.start_date?a(e.start_date):``}},{name:`end`,label:`End`,align:`center`,width:100,template:function(e){return e.end_date?a(e.end_date):``}},{name:`duration`,label:`Duration`,align:`center`,width:80,template:function(e){return e.duration?`${e.duration} day${e.duration==1?``:`s`}`:``}},{name:`delete`,label:`Delete`,align:`center`,width:80,template:function(e){return`<div data-assignment-id='${e.id}' data-assignment-delete='${e.id}' class='dhx_gantt_icon dhx_gantt_icon_delete'></div>`}}],resource_default_assignment:{duration:null,value:8,start_date:null,end_date:null,mode:`default`}},e.attachEvent(`onAfterLightbox`,y);function o(){return t.apply(this,arguments)||this}X(o,t);function s(t,n){return`<div class='gantt_resource_selector_filter_wrapper gantt_cal_lsection' data-section-name='${n}'>
|
|
24
|
-
<div class='gantt_cal_ltext gantt_resources_filter'>
|
|
25
|
-
<label class="dhx_gantt_icon dhx_gantt_icon_search">
|
|
26
|
-
<input type='text' class='gantt_resources_filter_input' placeholder='${e.locale.labels.resources_filter_placeholder||`Search...`}' tab-index="-1">
|
|
27
|
-
<label>
|
|
28
|
-
</div>
|
|
29
|
-
<div role='button' aria-label='Add Assignment' class='gantt_custom_button gantt_add_resources' data-index='${t}'><div class='gantt_custom_button_add_resources gantt_add'></div><div class='gantt_custom_button_label'>${e.locale.labels.resources_add_button}</div>
|
|
30
|
-
</div>
|
|
31
|
-
</div>`}function c(t,r,i,a){if(e.$ui.getView(`GridRL`)&&!n.gridID&&e.$ui.getView(`GridRL`).destructor(),!n.gridID){let r=document.createElement(`div`);r.classList.add(`gantt_resource_selector_grid`);let o=e.createDatastore({name:`temp_resource_assignment_store`,initItem:function(t){return t.id||=e.uid(),t}});e.$data.tempAssignmentsStore=o;let s={...e.config.layout,id:`GridRL`,sectionName:a.name},c=e.$ui.createView(`GridRL`,e.$root,s);c.init(r);let l=e._lightbox.offsetWidth-(e.config.wide_form?150:0);c.setSize(l,`auto`),e.ext.inlineEditorsLightbox=e.ext._inlineEditors.createEditors(c),e.ext.inlineEditorsLightbox.init(),n.gridID=c.$id,t.appendChild(r);let u=e.getDatastore(e.config.resource_assignment_store),d=[];u.eachItem(function(e){e.task_id&&e.task_id==i.id&&d.push(e)});let f=structuredClone(d);o.parse(f)}e.$data.tempAssignmentsStore.attachEvent(`onFilterItem`,function(t,r){if(r.task_id==i.id)if(n.resource_filter_value){if(e.getDatastore(e.config.resource_store).getItem(r.resource_id).text.toLowerCase().indexOf(n.resource_filter_value)>-1)return!0}else return!0;return!1}),e.refreshData()}function l(t){let n,r=e.getTask(e._lightbox_id),i=e.getTaskAssignments(r.id);if(i.length)n=i[0].resource_id;else{let t=e.serverList(`resourceOptions`);if(t.length)n=t[0].id;else throw Error(`There is no any resources in resource store, please check your data:
|
|
32
|
-
https://docs.dhtmlx.com/gantt/desktop__resource_management.html#assigningresources`)}let a=e.getDatastore(`temp_resource_assignment_store`),o=(e.getLightboxSection(t).section.config??e.resource_table).resource_default_assignment??e.resource_table.resource_default_assignment;a.addItem({resource_id:n,task_id:r.id,duration:o.duration??e.calculateDuration(r),value:o.value,start_date:o.start_date??r.start_date,end_date:o.end_date??r.end_date,mode:o.mode}),e.refreshData()}function u(t){let n=t.querySelectorAll(`.gantt_row.gantt_row_task`);if(n){let t=n[n.length-1].querySelector(`.gantt_cell`);if(t){let{id:n,columnName:r}=e.ext.inlineEditorsLightbox.locateCell(t);n&&r&&e.ext.inlineEditorsLightbox.startEdit(n,r)}}}o.prototype.render=function(t){t.options||=e.serverList(`resourceOptions`),(!t.map_to||t.map_to==`resource_selector`||t.map_to==`auto`)&&(t.map_to=e.config.resource_property);let n;return n=`<div${isNaN(t.height)?``:` style='height:auto;'`} class='gantt_section_${t.name}' data-section-name='${t.name}'>`,n+=s(t.index,t.name),n+=`</div>`,n+=`<div class="resources_section_placeholder" style='display:none;'>${e.locale.labels.resources_section_placeholder}</div>`,n},o.prototype.button_click=function(t,n,r,i){let a=r.getAttribute(`data-section-name`)||i.getAttribute(`data-section-name`),o=document.querySelector(`[data-resource-selector-section]`),s=document.querySelector(`.resources_section_placeholder`),c=document.querySelector(`.gantt_section_${a} .gantt_resource_selector_filter_wrapper`),d=document.querySelector(`.gantt_section_${a} .gantt_grid`);if(o.style.display=`none`,e.callEvent(`onSectionButton`,[e._lightbox_id,r])!==!1&&n.closest(`.gantt_custom_button.gantt_add_resources`)){s.style.display=`none`;let t=e.getDatastore(`temp_resource_assignment_store`);t&&t.getItems().length==0&&(c.style.display=`flex`,d.style.display=`block`),l(a),u(i)}};function d(t){n.initialValues=[],n.newValues=[];let r=e.$data.assignmentsStore.find(function(e){return e.task_id==t.id});for(let e=0;e<r.length;e++)n.initialValues[e]={resource_id:r[e].resource_id,value:r[e].value,id:r[e].id}}o.prototype.set_value=function(t,n,r,i,a){let o=document.querySelector(`[data-resource-selector-section]`),s=document.querySelector(`.resources_section_placeholder`);if(d(r),!a){c(t,n,r,i),_(t,i),m(t,n,i,this),o.style.display=`none`;let e=document.querySelector(`.gantt_section_${i.name} .gantt_grid`),a=document.querySelector(`.gantt_section_${i.name} .gantt_resource_selector_filter_wrapper`);e.style.display=`none`,a.style.display=`none`}let l=e.getDatastore(`temp_resource_assignment_store`);if(l){let e=document.querySelector(`.gantt_section_${i.name} .gantt_resource_selector_filter_wrapper`),t=document.querySelector(`.gantt_section_${i.name} .gantt_grid`);l.getItems().length==0?(o.style.display==`none`&&(o.style.display=`flex`),e.style.display=`none`,t.style.display=`none`,s.style.display=`block`):(e.style.display=`flex`,t.style.display=`block`,s.style.display=`none`)}e._center_lightbox(e.getLightbox())},o.prototype.get_value=function(t,r,i,a){let o=e.getDatastore(`temp_resource_assignment_store`).find(function(e){return e.task_id==r.id});for(let e=0;e<o.length;e++)n.newValues[e]={resource_id:o[e].resource_id.toString(),value:o[e].value,id:o[e].id,start_date:o[e].start_date,end_date:o[e].end_date,duration:o[e].duration,mode:o[e].mode,delay:o[e].delay};return a==`save`?n.newValues:n.initialValues};function f(t,n){let r=[],i=e.getDatastore(`temp_resource_assignment_store`).find(function(e){return e.task_id==t.id});for(let t=0;t<i.length;t++){let n=e.getDatastore(e.config.resource_store).getItem(i[t].resource_id);n&&r.push(n)}return r}function p(e){return e.value.trim()}function m(t,r,i,a){if(n.eventsInitialized[i.id])return;var o=function(o){s(i,t);var c,l,u,d=v(i);u=d.input,l=p(u),n.resource_filter_value=l.toLowerCase(),d.filterApplied=!!l,e.getState().lightbox&&(r=e.getLightboxValues()),c=h(i,r,l);var f=r[i.map_to];a.form_blocks.resource_selector.set_value(t,f,r,c)};function s(e,t){var r=g(),i=t.querySelectorAll(r);n.resourcesValues[e.id]=n.resourcesValues[e.id]||{};for(var a=0;a<i.length;a++){var o=i[a].getAttribute(`data-item-id`),s=i[a].getAttribute(`data-assignment-id`);i[a].disabled?delete n.resourcesValues[e.id][o]:n.resourcesValues[e.id][o]={value:i[a].value,id:s}}}o=_e(o,100),v(i).container.addEventListener(`keyup`,o),v(i).container.addEventListener(`input`,o,!0),v(i).container.addEventListener(`change`,o,!0),n.eventsInitialized[i.id]=!0}function h(t,r,i,a){var o,s=e.copy(t);if(i===``){s.resources=[];let t=n.newValues.map(e=>e.resource_id);if(t&&t.length>0)for(let n=0;n<t.length;n++){let r=e.getDatastore(e.config.resource_store).getItem(t[n]);r&&s.resources.push(r)}return s}return o=function(e){if(e.text.toLowerCase().indexOf(i.toLowerCase())>=0)return e},s.resources=f(r,t.options),s.resources=ge(s.resources,o),s}function g(e){return`.gantt_resource_amount_input`}function _(e,t){if(!n.filter[t.id]){var r=e.querySelector(`.gantt_resources_filter`),i=r.querySelector(`.gantt_resources_filter_input`);n.filter[t.id]={container:r,input:i,filterApplied:!1}}return n.filter[t.id]}function v(e){return n.filter[e.id]}function y(){for(var e in n.filter)n.filter[e].input.value=``,n.filter[e].filterApplied=!1;n.resourcesValues={},n.eventsInitialized={},n.resource_filter_value=null,n.gridID=null,n.initialValues=[],n.newValues=[]}return o}function Mo(e){var t=_o(),n=vo(e),r=yo(e),i=Co(e),a=wo(e),o=To(e),s=Eo(e),c=Do(e),l=Co(e),u=Oo(e),d=ko(e),f=Ao(e),p=jo(e);e._lightbox_methods={},e._lightbox_template=`<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>`,e._lightbox_template=`<div class='gantt_cal_ltitle'><div class="dhx_cal_ltitle_descr"><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='dhx_title'></span>
|
|
33
|
-
</div>
|
|
34
|
-
<div class="gantt_cal_ltitle_controls">
|
|
35
|
-
<a class="gantt_cal_ltitle_close_btn dhx_gantt_icon dhx_gantt_icon_close"></a>
|
|
36
|
-
|
|
37
|
-
</div></div><div class='gantt_cal_larea'></div>`,e._lightbox_root=e.$root;function h(){e.config.csp===!0||e.env.isSalesforce?e._lightbox_root=e.$root:e._lightbox_root=document.body}e.$services.getService(`state`).registerProvider(`lightbox`,function(){return{lightbox:e._lightbox_id}}),e.showLightbox=function(t){var n=this.getTask(t);if(!this.callEvent(`onBeforeLightbox`,[t])){e.isTaskExists(t)&&e.getTask(t).$new&&this.$data.tasksStore._updateOrder();return}var r=this.getLightbox(this.getTaskType(n.type));this.showCover(r),this._fill_lightbox(t,r),this._setLbPosition(r),this._waiAria.lightboxVisibleAttr(r),this.callEvent(`onLightbox`,[t])};function g(e){var t=e.$ui.getView(`timeline`);return!!(t&&t.isVisible())}e._get_timepicker_step=function(){if(this.config.round_dnd_dates){var t;if(g(this)){var n=e.getScale();t=le(n.unit)*n.step/60}return(!t||t>=1440)&&(t=this.config.time_step),t}return this.config.time_step},e.getLabel=function(e,t){for(var n=this._get_typed_lightbox_config(),r=0;r<n.length;r++)if(n[r].map_to==e){for(var i=n[r].options,a=0;a<i.length;a++)if(i[a].key==t)return i[a].label}return``},e.updateCollection=function(t,n){n=n.slice(0);var r=e.serverList(t);if(!r)return!1;r.splice(0,r.length),r.push.apply(r,n||[]),e.resetLightbox()},e.getLightboxType=function(){return this.getTaskType(this._lightbox_type)},e.getLightbox=function(t){var n,r,i,a,o,s=``;if(h(),t===void 0&&(t=this.getLightboxType()),!this._lightbox||this.getLightboxType()!=this.getTaskType(t)){this._lightbox_type=this.getTaskType(t),n=document.createElement(`div`),s=`gantt_cal_light`,r=this._is_lightbox_timepicker(),e.config.wide_form&&(s+=` gantt_cal_light_wide`),r&&(s+=` gantt_cal_light_full`),n.className=s,n.style.visibility=`hidden`,i=this._lightbox_template,i+=`<div class='gantt_cal_lcontrols'>`,i+=b(this.config.buttons_left),i+=`<div class='gantt_cal_lcontrols_push_right'></div>`,i+=b(this.config.buttons_right),i+=`</div>`,n.innerHTML=i,e._waiAria.lightboxAttr(n),e.config.drag_lightbox&&(n.firstChild.onmousedown=e._ready_to_dnd,n.firstChild.addEventListener(`touchstart`,function(t){e._ready_to_dnd(t.touches[0])}),n.firstChild.onselectstart=function(){return!1},n.firstChild.style.cursor=`pointer`,e._init_dnd_events()),this._lightbox&&this.resetLightbox(),_(),this._cover.insertBefore(n,this._cover.firstChild),this._lightbox=n,a=this._get_typed_lightbox_config(t),i=this._render_sections(a),o=n.querySelector(`div.gantt_cal_larea`);var c=o.style.overflow;o.style.overflow=`hidden`,o.innerHTML=i,y(a),o.style.overflow=c,this._init_lightbox_events(this),n.style.display=`none`,n.style.visibility=`visible`}return this._lightbox},e._render_sections=function(e){for(var t=``,n=0;n<e.length;n++){var r=this.form_blocks[e[n].type];if(r){e[n].id=`area_`+this.uid();var i=e[n].hidden?` style='display:none'`:``,a=``;e[n].button&&(a=`<div class='gantt_custom_button' data-index='`+n+`'><div class='gantt_custom_button_`+e[n].button+`'></div><div class='gantt_custom_button_label'>`+this.locale.labels[`button_`+e[n].button]+`</div></div>`),e[n].type==`baselines`&&(a=`<div class='gantt_custom_button gantt_remove_baselines' data-index='`+n+`'><div class='gantt_custom_button_delete_baselines'></div><div class='gantt_custom_button_label'>`+this.locale.labels.baselines_remove_all_button+`</div></div><div class='gantt_custom_button gantt_add_baselines' data-index='`+n+`'><div class='gantt_custom_button_add_baseline'></div><div class='gantt_custom_button_label'>`+this.locale.labels.baselines_add_button+`</div></div>`),e[n].type==`resource_selector`&&(e[n].index=n,a=`<div class='gantt_custom_button gantt_add_resources' data-index='${n}' data-resource-selector-section='${n}' data-section-name='${e.name}'><div class='gantt_custom_button_add_resources gantt_add'></div><div class='gantt_custom_button_label'>${this.locale.labels.resources_add_button}</div></div>`),this.config.wide_form&&(t+=`<div class='gantt_wrap_section' `+i+`>`),t+=`<div id='`+e[n].id+`' class='gantt_cal_lsection'><label>`+a+(e[n].label||this.locale.labels[`section_`+e[n].name]||e[n].name)+`</label></div>`+r.render.call(this,e[n]),t+=`</div>`}}return t},e._center_lightbox=function(t){e._setLbPosition(t)},e._setLbPosition=function(t){if(!t)return;let n=e._lightbox_root||e.$root;t.style.top=Math.max(n.offsetHeight/2-t.offsetHeight/2,0)+`px`,t.style.left=Math.max(n.offsetWidth/2-t.offsetWidth/2,0)+`px`},e.showCover=function(e){e&&(e.style.display=`block`,this._setLbPosition(e)),_(),this._cover.style.display=``};let _=function(){e._cover||(e._cover=document.createElement(`div`),e._cover.className=`gantt_cal_cover`,e._cover.style.display=`none`,e.event(e._cover,`mousemove`,e._move_while_dnd),e.event(e._cover,`mouseup`,e._finish_dnd),(e._lightbox_root||e.$root).appendChild(e._cover))};e._init_lightbox_events=function(){e.lightbox_events={},e.lightbox_events.gantt_save_btn=function(){e._save_lightbox()},e.lightbox_events.gantt_delete_btn=function(){e._lightbox_current_type=null,e.callEvent(`onLightboxDelete`,[e._lightbox_id])&&(e.isTaskExists(e._lightbox_id)?e.$click.buttons.delete(e._lightbox_id):e.hideLightbox())},e.lightbox_events.gantt_cancel_btn=function(){e._cancel_lightbox()},e.lightbox_events.default=function(t,n){if(n.getAttribute(`data-dhx-button`))e.callEvent(`onLightboxButton`,[n.className,n,t]);else{var r,i,a,o=m(n);if(o.indexOf(`gantt_custom_button`)!=-1)if(o.indexOf(`gantt_custom_button_`)!=-1)for(r=n.parentNode.getAttribute(`data-index`),a=n;a&&m(a).indexOf(`gantt_cal_lsection`)==-1;)a=a.parentNode;else r=n.getAttribute(`data-index`),a=n.closest(`.gantt_cal_lsection`),n=n.firstChild;var s=e._get_typed_lightbox_config();r&&(r*=1,i=e.form_blocks[s[r*1].type],i.button_click(r,n,a,a.nextSibling))}},this.event(e.getLightbox(),`click`,function(t){t.target.closest(`.gantt_cal_ltitle_close_btn`)&&e._cancel_lightbox();var n=C(t),r=m(n);return r||=(n=n.previousSibling,m(n)),n&&r&&r.indexOf(`gantt_btn_set`)===0&&(n=n.firstChild,r=m(n)),n&&r?(e.defined(e.lightbox_events[n.className])?e.lightbox_events[n.className]:e.lightbox_events.default)(t,n):!1}),e.getLightbox().onkeydown=function(t){var n=t||window.event,r=t.target||t.srcElement,i=m(r).indexOf(`gantt_btn_set`)>-1;switch((t||n).keyCode){case e.constants.KEY_CODES.SPACE:if((t||n).shiftKey)return;i&&r.click&&r.click();break;case e.keys.edit_save:if((t||n).shiftKey)return;i&&r.click?r.click():e._save_lightbox();break;case e.keys.edit_cancel:e._cancel_lightbox();break}}},e._cancel_lightbox=function(){var t=this.getLightboxValues(`cancel`);e._lightbox_current_type=null,this.callEvent(`onLightboxCancel`,[this._lightbox_id,t.$new]),e.isTaskExists(t.id)&&t.$new&&(this.silent(function(){e.$data.tasksStore.removeItem(t.id),e._update_flags(t.id,null)}),this.refreshData()),this.hideLightbox()},e._save_lightbox=function(){var t=this.getLightboxValues(`save`);e._lightbox_current_type=null,this.callEvent(`onLightboxSave`,[this._lightbox_id,t,!!t.$new])&&(e.$data.tasksStore._skipTaskRecalculation=`lightbox`,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)),e.$data.tasksStore._skipTaskRecalculation=!1,this.refreshData(),this.hideLightbox())},e._resolve_default_mapping=function(e){var t=e.map_to;return{time:!0,time_optional:!0,duration:!0,duration_optional:!0}[e.type]?e.map_to==`auto`?t={start_date:`start_date`,end_date:`end_date`,duration:`duration`}:typeof e.map_to==`string`&&(t={start_date:e.map_to}):e.type===`constraint`&&(!e.map_to||typeof e.map_to==`string`)&&(t={constraint_type:`constraint_type`,constraint_date:`constraint_date`}),t},e.getLightboxValues=function(t){let n={};e.isTaskExists(this._lightbox_id)&&(n=this.mixin({},this.getTask(this._lightbox_id)));let r=[...this._get_typed_lightbox_config()].sort((e,t)=>e.name===`time`?1:t.name===`time`?-1:0);for(let i=0;i<r.length;i++){let a=e._lightbox_root.querySelector(`#`+r[i].id);a&&=a.nextSibling;let o=this.form_blocks[r[i].type];if(!o)continue;let s=o.get_value.call(this,a,n,r[i],t),c=e._resolve_default_mapping(r[i]);if(typeof c==`string`&&c!=`auto`)n[c]=s;else if(typeof c==`object`)for(let e in c)c[e]&&(n[c[e]]=s[e])}return e._lightbox_current_type&&(n.type=e._lightbox_current_type),n},e.hideLightbox=function(){var e=this.getLightbox();e&&(e.style.display=`none`),this._waiAria.lightboxHiddenAttr(e),this._lightbox_id=null,this.hideCover(e),this.resetLightbox(),this.callEvent(`onAfterLightbox`,[])},e.hideCover=function(e){e&&(e.style.display=`none`),this._cover&&this._cover.parentNode.removeChild(this._cover),this._cover=null},e.resetLightbox=function(){e._lightbox&&!e._custom_lightbox&&e._lightbox.remove(),e._lightbox=null},e._set_lightbox_values=function(t,n){var r=t,i=n.getElementsByTagName(`span`),a=[];e.templates.lightbox_header?(a.push(``),a.push(e.templates.lightbox_header(r.start_date,r.end_date,r)),i[1].innerHTML=``,i[2].innerHTML=e.templates.lightbox_header(r.start_date,r.end_date,r)):(a.push(this.templates.task_time(r.start_date,r.end_date,r)),a.push(String(this.templates.task_text(r.start_date,r.end_date,r)||``).substr(0,70)),i[1].innerHTML=this.templates.task_time(r.start_date,r.end_date,r),i[2].innerHTML=String(this.templates.task_text(r.start_date,r.end_date,r)||``).substr(0,70)),i[1].innerHTML=a[0],i[2].innerHTML=a[1],e._waiAria.lightboxHeader(n,a.join(` `));for(var o=this._get_typed_lightbox_config(this.getLightboxType()),s=0;s<o.length;s++){var c=o[s];if(this.form_blocks[c.type]){var l=e._lightbox_root.querySelector(`#`+c.id).nextSibling,u=this.form_blocks[c.type],d=e._resolve_default_mapping(o[s]),f=this.defined(r[d])?r[d]:c.default_value;u.set_value.call(e,l,f,r,c),c.focus&&u.focus.call(e,l)}}e.isTaskExists(t.id)&&(e._lightbox_id=t.id)},e._fill_lightbox=function(e,t){var n=this.getTask(e);this._set_lightbox_values(n,t)},e.getLightboxSection=function(t){for(var n=this._get_typed_lightbox_config(),r=0;r<n.length&&n[r].name!=t;r++);var i=n[r];if(!i)return null;this._lightbox||this.getLightbox();var a=e._lightbox_root.querySelector(`#`+i.id),o=a.nextSibling,s={section:i,header:a,node:o,getValue:function(t){return e.form_blocks[i.type].get_value.call(e,o,t||{},i)},setValue:function(t,n){return e.form_blocks[i.type].set_value.call(e,o,t,n||{},i)}},c=this._lightbox_methods[`get_`+i.type+`_control`];return c?c(s):s},e._lightbox_methods.get_template_control=function(e){return e.control=e.node,e},e._lightbox_methods.get_select_control=function(e){return e.control=e.node.getElementsByTagName(`select`)[0],e},e._lightbox_methods.get_textarea_control=function(e){return e.control=e.node.getElementsByTagName(`textarea`)[0],e},e._lightbox_methods.get_time_control=function(e){return e.control=e.node.getElementsByTagName(`select`),e},e._init_dnd_events=function(){var t=e._lightbox_root;this.event(t,`mousemove`,e._move_while_dnd),this.event(t,`mouseup`,e._finish_dnd),this.event(t,`touchmove`,function(t){e._move_while_dnd(t.touches[0])}),this.event(t,`touchend`,function(t){e._finish_dnd(t.touches[0])})},e._move_while_dnd=function(t){if(e._dnd_start_lb){document.gantt_unselectable||(e._lightbox_root.className+=` gantt_unselectable`,document.gantt_unselectable=!0);var n=e.getLightbox(),r=[t.pageX,t.pageY];n.style.top=e._lb_start[1]+r[1]-e._dnd_start_lb[1]+`px`,n.style.left=e._lb_start[0]+r[0]-e._dnd_start_lb[0]+`px`}},e._ready_to_dnd=function(t){var n=e.getLightbox();e._lb_start=[n.offsetLeft,n.offsetTop],e._dnd_start_lb=[t.pageX,t.pageY]},e._finish_dnd=function(){e._lb_start&&(e._lb_start=e._dnd_start_lb=!1,e._lightbox_root.className=e._lightbox_root.className.replace(` gantt_unselectable`,``),document.gantt_unselectable=!1)},e._focus=function(t,n){if(t&&t.focus&&!e.config.touch)try{n&&t.select&&t.select(),t.focus()}catch{}},e.form_blocks={getTimePicker:function(t,n){var r=``,i=this.config,a,o,s,c,l,u={first:0,last:1440,date:this.date.date_part(new Date(e._min_date.valueOf())),timeFormat:x(t)};for(t._time_format_order={size:0},e.config.limit_time_select&&(u.first=60*i.first_hour,u.last=60*i.last_hour+1,u.date.setHours(i.first_hour)),a=0;a<u.timeFormat.length;a++)a>0&&(r+=` `),o=S(t,a,u),o&&(s=e._waiAria.lightboxSelectAttrString(u.timeFormat[a]),c=t.readonly?`disabled='disabled'`:``,l=n?` style='display:none' `:``,r+=`<select `+c+l+s+`>`+o+`</select>`);return r},getTimePickerValue:function(t,n,r){var i=n._time_format_order,a=e.defined(i[3]),o,s=0,c=0,l=r||0;return a&&(o=parseInt(t[i[3]+l].value,10),s=Math.floor(o/60),c=o%60),new Date(t[i[2]+l].value,t[i[1]+l].value,t[i[0]+l].value,s,c)},_fill_lightbox_select:function(t,n,r,i){if(t[n+i[0]].value=r.getDate(),t[n+i[1]].value=r.getMonth(),t[n+i[2]].value=r.getFullYear(),e.defined(i[3])){var a=r.getHours()*60+r.getMinutes();a=Math.round(a/e._get_timepicker_step())*e._get_timepicker_step();var o=t[n+i[3]];o.value=a,o.setAttribute(`data-value`,a)}},template:new t,textarea:new n,select:new i,time:new r,duration:new s,parent:new c,radio:new o,checkbox:new a,resources:new l,constraint:new u,baselines:new f,typeselect:new d,resource_selector:new p},e._is_lightbox_timepicker=function(){for(var e=this._get_typed_lightbox_config(),t=0;t<e.length;t++)if(e[t].name==`time`&&e[t].type==`time`)return!0;return!1},e._delete_task_confirm=function({task:t,message:n,title:r,callback:i,ok:a}){e._simple_confirm(n,r,i,a)},e._delete_link_confirm=function({link:t,message:n,title:r,callback:i,ok:a}){e._simple_confirm(n,r,i,a)},e._simple_confirm=function(t,n,r,i){if(!t)return r();var a={text:t};n&&(a.title=n),i&&(a.ok=i),r&&(a.callback=function(e){e&&r()}),e.confirm(a)};function v(e){for(var t in this.config.types)if(this.config.types[t]==e)return t;return`task`}e._get_typed_lightbox_config=function(t){t===void 0&&(t=this.getLightboxType());var n=v.call(this,t);return e.config.lightbox[n+`_sections`]?e.config.lightbox[n+`_sections`]:e.config.lightbox.sections},e._silent_redraw_lightbox=function(e){var t=this.getLightboxType();if(this.getState().lightbox){var n=this.getState().lightbox,r=this.getLightboxValues(),i=this.copy(this.getTask(n));this.resetLightbox();var a=this.mixin(i,r,!0),o=this.getLightbox(e||void 0);this._set_lightbox_values(a,o),this.showCover(o)}else this.resetLightbox(),this.getLightbox(e||void 0);this.callEvent(`onLightboxChange`,[t,this.getLightboxType()])};function y(t){var n,r,i,a,o,s;for(s=0;s<t.length;s++)n=t[s],i=e._lightbox_root.querySelector(`#`+n.id),!(!n.id||!i)&&(r=i.querySelector(`label`),a=i.nextSibling,a&&(o=a.querySelector(`input, select, textarea`),o&&(o.id=o.id||`input_`+e.uid(),n.inputId=o.id,r.setAttribute(`for`,n.inputId))))}function b(t,n){var r,i,a=``,o;for(o=0;o<t.length;o++)r=e.config._migrate_buttons[t[o]]?e.config._migrate_buttons[t[o]]:t[o],i=e._waiAria.lightboxButtonAttrString(r),a+=`<div `+i+` class='gantt_btn_set gantt_left_btn_set `+r+`_set'><div dhx_button='1' data-dhx-button='1' class='`+r+`'></div><div>`+e.locale.labels[r]+`</div></div>`;return a}function x(t){var n,r,i;return t.time_format?t.time_format:(i=[`%d`,`%m`,`%Y`],n=e.getScale(),r=n?n.unit:e.config.duration_unit,le(r)<le(`day`)&&i.push(`%H:%i`),i)}function S(t,n,r){var i,a,o,s,c,l,u,d,f=``;switch(r.timeFormat[n]){case`%Y`:for(t._time_format_order[2]=n,t._time_format_order.size++,t.year_range&&(isNaN(t.year_range)?t.year_range.push&&(o=t.year_range[0],s=t.year_range[1]):i=t.year_range),i||=10,a||=Math.floor(i/2),o||=r.date.getFullYear()-a,s||=e.getState().max_date.getFullYear()+a,c=o;c<=s;c++)f+=`<option value='`+c+`'>`+c+`</option>`;break;case`%m`:for(t._time_format_order[1]=n,t._time_format_order.size++,c=0;c<12;c++)f+=`<option value='`+c+`'>`+e.locale.date.month_full[c]+`</option>`;break;case`%d`:for(t._time_format_order[0]=n,t._time_format_order.size++,c=1;c<32;c++)f+=`<option value='`+c+`'>`+c+`</option>`;break;case`%H:%i`:for(t._time_format_order[3]=n,t._time_format_order.size++,c=r.first,d=r.date.getDate(),t._time_values=[];c<r.last;)l=e.templates.time_picker(r.date),f+=`<option value='`+c+`'>`+l+`</option>`,t._time_values.push(c),r.date.setTime(r.date.valueOf()+e._get_timepicker_step()*60*1e3),u=r.date.getDate()==d?0:1,c=u*24*60+r.date.getHours()*60+r.date.getMinutes();break}return f}}function No(e){e._extend_to_optional=function(t){var n=t,r={render:n.render,focus:n.focus,set_value:function(t,i,a,o){var s=e._resolve_default_mapping(o);if(!a[s.start_date]||s.start_date==`start_date`&&this._isAllowedUnscheduledTask(a)){r.disable(t,o);var c={};for(var l in s)c[s[l]]=a[l];return n.set_value.call(e,t,i,c,o)}else return r.enable(t,o),n.set_value.call(e,t,i,a,o)},get_value:function(t,r,i){return i.disabled?{start_date:null}:n.get_value.call(e,t,r,i)},update_block:function(t,n){if(e.callEvent(`onSectionToggle`,[e._lightbox_id,n]),t.style.display=n.disabled?`none`:``,n.button){var r=t.previousSibling.querySelector(`.gantt_custom_button_label`),i=e.locale.labels;r.innerHTML=n.disabled?i[n.name+`_enable_button`]:i[n.name+`_disable_button`]}},disable:function(e,t){t.disabled=!0,r.update_block(e,t)},enable:function(e,t){t.disabled=!1,r.update_block(e,t)},button_click:function(t,n,i,a){if(e.callEvent(`onSectionButton`,[e._lightbox_id,i])!==!1){var o=e._get_typed_lightbox_config()[t];o.disabled?r.enable(a,o):r.disable(a,o)}}};return r},e.form_blocks.duration_optional=e._extend_to_optional(e.form_blocks.duration),e.form_blocks.time_optional=e._extend_to_optional(e.form_blocks.time)}function Po(e){var t=RegExp(`<(?:.|
|
|
38
|
-
)*?>`,`gm`),n=RegExp(` +`,`gm`);function r(e){return(e+``).replace(t,` `).replace(n,` `)}var i=RegExp(`'`,`gm`);function a(e){return(e+``).replace(i,`'`)}e._waiAria={getAttributeString:function(e){var t=[` `];for(var n in e){var i=a(r(e[n]));t.push(n+`='`+i+`'`)}return t.push(` `),t.join(` `)},getTimelineCellAttr:function(t){return e._waiAria.getAttributeString({"aria-label":t})},_taskCommonAttr:function(t,n){t.start_date&&t.end_date&&(n.setAttribute(`aria-label`,r(e.templates.tooltip_text(t.start_date,t.end_date,t))),t.$dataprocessor_class&&n.setAttribute(`aria-busy`,!0))},setTaskBarAttr:function(t,n){this._taskCommonAttr(t,n),n.setAttribute(`role`,`img`),!e.isReadonly(t)&&e.config.drag_move&&(t.id==e.getState(`tasksDnd`).drag_id?n.setAttribute(`aria-grabbed`,!0):n.setAttribute(`aria-grabbed`,!1))},taskRowAttr:function(t,n){this._taskCommonAttr(t,n),!e.isReadonly(t)&&e.config.order_branch&&n.setAttribute(`aria-grabbed`,!1),n.setAttribute(`role`,`row`),n.setAttribute(`aria-selected`,e.isSelectedTask(t.id)?`true`:`false`),n.setAttribute(`aria-level`,t.$level+1||1),e.hasChild(t.id)&&n.setAttribute(`aria-expanded`,t.$open?`true`:`false`)},linkAttr:function(t,n){var i=e.config.links,a=t.type==i.finish_to_start||t.type==i.start_to_start,o=t.type==i.start_to_start||t.type==i.start_to_finish,s=e.locale.labels.link+` `+e.templates.drag_link(t.source,o,t.target,a);n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,r(s))},gridSeparatorAttr:function(e){e.setAttribute(`role`,`columnheader`)},rowResizerAttr:function(e){e.setAttribute(`role`,`row`)},lightboxHiddenAttr:function(e){e.setAttribute(`aria-hidden`,`true`)},lightboxVisibleAttr:function(e){e.setAttribute(`aria-hidden`,`false`)},lightboxAttr:function(e){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-hidden`,`true`),e.firstChild.setAttribute(`role`,`heading`),e.firstChild.setAttribute(`aria-level`,`1`)},lightboxButtonAttrString:function(t){return this.getAttributeString({role:`button`,"aria-label":e.locale.labels[t],tabindex:`0`})},lightboxHeader:function(e,t){e.setAttribute(`aria-label`,t)},lightboxSelectAttrString:function(t){var n=``;switch(t){case`%Y`:n=e.locale.labels.years;break;case`%m`:n=e.locale.labels.months;break;case`%d`:n=e.locale.labels.days;break;case`%H:%i`:n=e.locale.labels.hours+e.locale.labels.minutes;break}return e._waiAria.getAttributeString({"aria-label":n})},lightboxDurationInputAttrString:function(t){return this.getAttributeString({"aria-label":e.locale.labels.column_duration,"aria-valuemin":`0`,role:`spinbutton`})},inlineEditorAttr:function(e){e.setAttribute(`role`,`row`)},gridAttrString:function(){return[` role='treegrid'`,e.config.multiselect?`aria-multiselectable='true'`:`aria-multiselectable='false'`,` `].join(` `)},gridScaleRowAttrString:function(){return`role='row'`},gridScaleCellAttrString:function(t,n){var r=``;if(t.name==`add`)r=this.getAttributeString({role:`columnheader`,"aria-label":e.locale.labels.new_task});else{var i={role:`columnheader`,"aria-label":e.config.external_render&&e.config.external_render.isElement(n)?``:n};e._sort&&e._sort.name==t.name&&(e._sort.direction==`asc`?i[`aria-sort`]=`ascending`:i[`aria-sort`]=`descending`),r=this.getAttributeString(i)}return r},gridDataAttrString:function(){return`role='rowgroup'`},reorderMarkerAttr:function(e){e.setAttribute(`role`,`grid`),e.firstChild.removeAttribute(`aria-level`),e.firstChild.setAttribute(`aria-grabbed`,`true`)},gridCellAttrString:function(t,n,r){var i={role:`gridcell`,"aria-label":n};return(!t.editor||e.isReadonly(r))&&(i[`aria-readonly`]=!0),this.getAttributeString(i)},gridAddButtonAttrString:function(t){return this.getAttributeString({role:`button`,"aria-label":e.locale.labels.new_task})},messageButtonAttrString:function(e){return`tabindex='0' role='button' aria-label='`+e+`'`},messageInfoAttr:function(e){e.setAttribute(`role`,`alert`)},messageModalAttr:function(e,t){e.setAttribute(`role`,`dialog`),t&&e.setAttribute(`aria-labelledby`,t)},quickInfoAttr:function(e){e.setAttribute(`role`,`dialog`)},quickInfoHeaderAttrString:function(){return` role='heading' aria-level='1' `},quickInfoHeader:function(e,t){e.setAttribute(`aria-label`,t)},quickInfoButtonAttrString:function(t){return e._waiAria.getAttributeString({role:`button`,"aria-label":t,tabindex:`0`})},tooltipAttr:function(e){e.setAttribute(`role`,`tooltip`)},tooltipVisibleAttr:function(e){e.setAttribute(`aria-hidden`,`false`)},tooltipHiddenAttr:function(e){e.setAttribute(`aria-hidden`,`true`)}};function o(){return!e.config.wai_aria_attributes}for(var s in e._waiAria)e._waiAria[s]=(function(e){return function(){return o()?``:e.apply(this,arguments)}})(e._waiAria[s])}function Fo(e){if(!U.isNode){e.utils={arrayFind:fe,dom:ie};var t=Xe();e.event=t.attach,e.eventRemove=t.detach,e._eventRemoveAll=t.detachAll,e._createDomEventScope=t.extend,L(e,Kr(e));var n=Wa.init(e);e.$ui=n.factory,e.$ui.layers=n.render,e.$mouseEvents=n.mouseEvents,e.$services.setService(`mouseEvents`,function(){return e.$mouseEvents}),e.mixin(e,n.layersApi),Ka(e),e.$services.setService(`layers`,function(){return n.layersService}),e.mixin(e,Ga()),Ya(e),Xa(e),to(e),Za(e),Qa(e),$a(e),eo(e),no(e),ro(e),po(e),mo(e),Mo(e),No(e),Po(e),e.locate=function(e){var t=C(e);if(A(t,`.gantt_task_row`))return null;var n=arguments[1]||this.config.task_attribute,r=w(t,n);return r?r.getAttribute(n):null},e._locate_css=function(e,t,n){return E(e,t,n)},e._locateHTML=function(e,t){return w(e,t||this.config.task_attribute)}}e.attachEvent(`onParse`,function(){J(e)||e.attachEvent(`onGanttRender`,function(){if(e.config.initial_scroll){var t=e.getTaskByIndex(0),n=t?t.id:e.config.root_id;e.isTaskExists(n)&&e.$task&&e.utils.dom.isChildOf(e.$task,e.$container)&&e.showTask(n)}},{once:!0})}),e.attachEvent(`onBeforeGanttReady`,function(){this.config.scroll_size||(this.config.scroll_size=p()||15),J(e)||(this._eventRemoveAll(),this.$mouseEvents.reset(),this.resetLightbox())}),e.attachEvent(`onGanttReady`,function(){!J(e)&&e.config.rtl&&e.$layout.getCellsByType(`viewCell`).forEach(function(t){var n=t.$config.scrollX;if(n){var r=e.$ui.getView(n);r&&r.scrollTo(r.$config.scrollSize,0)}})}),e.attachEvent(`onGanttReady`,function(){if(!J(e)){var t=e.plugins(),n={auto_scheduling:e.autoSchedule,click_drag:e.ext.clickDrag,critical_path:e.isCriticalTask,drag_timeline:e.ext.dragTimeline,export_api:e.exportToPDF,fullscreen:e.ext.fullscreen,grouping:e.groupBy,keyboard_navigation:e.ext.keyboardNavigation,marker:e.addMarker,multiselect:e.eachSelectedTask,overlay:e.ext.overlay,quick_info:e.templates.quick_info_content,tooltip:e.ext.tooltips,undo:e.undo};for(let e in n)n[e]&&!t[e]&&console.warn(`You connected the '${e}' extension via an obsolete file.
|
|
39
|
-
To fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html`)}})}function Io(e){e.load=function(t,n,r){this._load_url=t,this.assert(arguments.length,`Invalid load arguments`);var i=`json`,a=null;return arguments.length>=3?(i=n,a=r):typeof arguments[1]==`string`?i=arguments[1]:typeof arguments[1]==`function`&&(a=arguments[1]),this._load_type=i,this.callEvent(`onLoadStart`,[t,i]),this.ajax.get(t,e.bind(function(e){this.on_load(e,i),this.callEvent(`onLoadEnd`,[t,i]),typeof a==`function`&&a.call(this)},this))}}function Lo(e){var t=Gr(e);return t.env.isNode||(Fo(t),Io(t)),t}var Ro=new nt(Lo,et);M.gantt=Ro.getGanttInstance(),M.Gantt=Ro;var $=e(),zo=null,Bo=[{id:`in-progress`,chineseLabel:`处理中`,englishLabel:`In progress`,statuses:[`in_progress`],defaultOpen:!0},{id:`in-review`,chineseLabel:`等你确认`,englishLabel:`In review`,statuses:[`in_review`],defaultOpen:!0},{id:`blocked`,chineseLabel:`遇到阻碍`,englishLabel:`Blocked`,statuses:[`blocked`],defaultOpen:!0},{id:`todo`,chineseLabel:`待处理`,englishLabel:`To do`,statuses:[`backlog`,`todo`],defaultOpen:!0},{id:`done`,chineseLabel:`已完成`,englishLabel:`Completed`,statuses:[`done`],defaultOpen:!1},{id:`canceled`,chineseLabel:`已取消`,englishLabel:`Canceled`,statuses:[`canceled`],defaultOpen:!1}];function Vo(e){return new Date(`${e}T00:00:00`)}function Ho(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function Uo(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Wo(e,t,n=!1){return new Intl.DateTimeFormat(t,{year:n?`numeric`:void 0,month:`short`,day:`numeric`}).format(e)}function Go(e,t){let n=t?.processing;return n?.total?Math.min(1,(n.completed??0)/n.total):+(e.status===`in_review`||e.status===`done`)}function Ko(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}function qo(e){let t=new Date,n=[];return(e.getDay()===0||e.getDay()===6)&&n.push(`is-weekend`),e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()&&n.push(`is-today`),n.join(` `)}function Jo({tasks:e,presentations:t,hasActiveFilters:s,zoom:c,hideCompleted:l,todayRequest:u,onOpenTask:d,onUpdate:f}){let{language:p,locale:m,text:h}=n(),g=(0,o.useRef)({language:p,locale:m,text:h}),_=(0,o.useRef)(null),v=(0,o.useRef)(null),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(360),[C,w]=(0,o.useState)(null),T=(0,o.useRef)(!1),E=(0,o.useRef)(360),D=(0,o.useRef)(!1),O=(0,o.useRef)(e),k=(0,o.useRef)(d),A=(0,o.useRef)(f);O.current=e,k.current=d,A.current=f,g.current={language:p,locale:m,text:h};let j=(0,o.useMemo)(()=>l?e.filter(e=>e.status!==`done`&&e.status!==`canceled`):e,[l,e]);return(0,o.useEffect)(()=>{let e=_.current;if(!e)return;let t=Ro.getGanttInstance();v.current=t,t.config.date_format=`%Y-%m-%d`,t.config.xml_date=`%Y-%m-%d`,t.config.row_height=58,t.config.bar_height=44,t.config.scale_height=66,t.config.scroll_size=1,t.config.grid_width=360,t.config.min_column_width=38,t.config.drag_progress=!1,t.config.drag_links=!1,t.config.show_progress=!0,t.config.show_unscheduled=!0,t.config.smart_rendering=!0,t.config.details_on_dblclick=!1,t.config.round_dnd_dates=!0,t.config.select_task=!1,t.config.columns=[{name:`text`,label:g.current.text(`议题`,`Issue`),tree:!0,width:`*`,min_width:190,template:e=>{let t=e;return t.taskboardGroup?`<div class="gantt-grid-group"><strong>${Ko(t.taskboardTitle)}</strong><span>${t.taskboardCount}</span></div>`:`<div class="gantt-grid-issue"><strong>${Ko(t.taskboardTitle)}</strong>${t.taskboardUnread?`<i class="task-unread-dot" aria-label="${Ko(g.current.text(`有未读更新`,`Unread updates`))}"></i>`:``}</div>`}}];let n=a(`dropdown`);t.templates.grid_open=e=>`<div class="gantt_tree_icon gantt_${e.$open?`close`:`open`}"><img src="${n}" alt=""></div>`,t.templates.grid_folder=()=>``,t.templates.grid_file=()=>``,t.templates.grid_blank=()=>``,t.templates.task_class=(e,t,n)=>{let r=n;return r.taskboardGroup?`gantt-group-task`:`gantt-status-${r.taskboardStatus}`},t.templates.task_text=(e,t,n)=>{let r=n;if(r.taskboardGroup)return``;let i=Ho(t,-1),a=e.getFullYear()===i.getFullYear()?`${Wo(e,g.current.locale)} — ${Wo(i,g.current.locale)}`:`${Wo(e,g.current.locale,!0)} — ${Wo(i,g.current.locale,!0)}`,o=r.taskboardAssigneeType===`agent`?`<img src="codex-agent-logo.png" alt="">`:r.taskboardAssigneeAvatarUrl?`<img src="${Ko(r.taskboardAssigneeAvatarUrl)}" alt="">`:`<span>${Ko(r.taskboardAssigneeInitial)}</span>`;return`<span class="gantt-bar-content"><i class="gantt-bar-assignee${r.taskboardAssigneeType===`agent`?` is-agent`:``}" title="${Ko(r.taskboardAssigneeName)}">${o}</i><span class="gantt-bar-copy"><strong>${Ko(r.taskboardTitle)}</strong><small>${a}</small></span></span>`};let r=e=>{let t=e;return t.taskboardGroup?`is-group gantt-status-${t.taskboardStatus}`:`gantt-status-${t.taskboardStatus}${t.taskboardUnread?` is-unread`:``}`};t.templates.grid_row_class=(e,t,n)=>r(n),t.templates.task_row_class=(e,t,n)=>r(n),t.templates.scale_cell_class=qo,t.templates.timeline_cell_class=(e,t)=>qo(t);let i=e=>new Intl.DateTimeFormat(g.current.locale,{year:`numeric`,month:`long`}).format(e),o=e=>`<span class="gantt-scale-date"><span class="gantt-scale-weekday">${(g.current.language===`zh`?[`日`,`一`,`二`,`三`,`四`,`五`,`六`]:[`S`,`M`,`T`,`W`,`T`,`F`,`S`])[e.getDay()]}</span><span class="gantt-scale-day">${e.getDate()}</span></span>`;t.ext.zoom.init({levels:[{name:`day`,scale_height:66,min_column_width:58,scales:[{unit:`month`,step:1,format:i},{unit:`day`,step:1,format:o,css:qo}]},{name:`week`,scale_height:66,min_column_width:42,scales:[{unit:`month`,step:1,format:i},{unit:`day`,step:1,format:o,css:qo}]},{name:`month`,scale_height:66,min_column_width:82,scales:[{unit:`year`,step:1,format:e=>new Intl.DateTimeFormat(g.current.locale,{year:`numeric`}).format(e)},{unit:`month`,step:1,format:e=>new Intl.DateTimeFormat(g.current.locale,{month:`short`}).format(e)}]}]}),t.ext.zoom.setLevel(c);let s=()=>{if(!_.current)return;let e=t.config.show_grid===!1?0:Number(t.config.grid_width),n=e+t.posFromDate(Vo(Uo(new Date)))-t.getScrollState().x;w(n>=e&&n<=_.current.clientWidth?n:null)},l=()=>{let t=e.querySelector(`.gantt_data_area`),n=e.querySelector(`.gantt_task_bg .gantt_task_row`);if(!t||!n)return;let r=t.querySelector(`:scope > .gantt-timeline-fill`);r||(r=document.createElement(`div`),r.className=`gantt-timeline-fill`,t.prepend(r)),r.replaceChildren(...Array.from(n.querySelectorAll(`.gantt_task_cell`),e=>e.cloneNode(!1)))},u=()=>{s(),l()};t.attachEvent(`onGanttScroll`,u),t.attachEvent(`onGanttRender`,u),t.attachEvent(`onAfterTaskUpdate`,(e,t)=>{let n=t,r=O.current.find(t=>t.id===String(e));if(!r||n.taskboardGroup||t.unscheduled)return!0;let i=Uo(t.start_date),a=Uo(Ho(t.end_date,-1));return r.startDate===i&&r.dueDate===a||A.current(r,{startDate:i,dueDate:a}).catch(()=>{}),!0}),t.attachEvent(`onTaskDblClick`,e=>{let n=O.current.find(t=>t.id===String(e));if(n){let e=t.getScrollState();zo={projectId:n.projectId,x:e.x,y:e.y},k.current(n)}return!1});let d=null,f=t=>{t!==d&&(e.querySelectorAll(`.gantt_row.is-linked-hover, .gantt_task_row.is-linked-hover`).forEach(e=>e.classList.remove(`is-linked-hover`)),d=t,t&&e.querySelectorAll(`.gantt_row, .gantt_task_row`).forEach(e=>{e.getAttribute(`task_id`)===t&&e.classList.add(`is-linked-hover`)}))},p=e=>{let t=e.target?.closest(`.gantt_row, .gantt_task_row, .gantt_task_line`),n=t&&!t.matches(`.is-group, .gantt-group-task`)?t.getAttribute(`task_id`):null;f(n)},m=()=>f(null),h=t.event;t.event=(...t)=>{let[n,r]=t,i=e.querySelector(`iframe.gantt_container_resize_watcher`)?.contentWindow;r===`resize`&&Object.is(n,i)||h(...t)};try{t.init(e)}finally{t.event=h}e.addEventListener(`pointermove`,p),e.addEventListener(`pointerleave`,m);let y=requestAnimationFrame(u),b=new ResizeObserver(([e])=>{let n=e.contentRect.width,r=Math.round(Math.max(300,Math.min(460,n*(n>=1200?.3:.32))));E.current=r,S(r),T.current||(t.config.grid_width=r),t.setSizes()});return b.observe(e),()=>{cancelAnimationFrame(y),b.disconnect(),e.removeEventListener(`pointermove`,p),e.removeEventListener(`pointerleave`,m),v.current=null,t.destructor()}},[]),(0,o.useEffect)(()=>{let e=v.current;if(!e)return;let t=e.getScrollState(),n=e.config.show_grid,r=e.config.grid_width,i=e.config.columns.find(e=>e.name===`text`);i&&(i.label=g.current.text(`议题`,`Issue`));for(let t of Bo){let n=`gantt-group-${t.id}`;if(!e.isTaskExists(n))continue;let r=e.getTask(n),i=r.$open,a=g.current.text(t.chineseLabel,t.englishLabel);r.text=a,r.taskboardTitle=a,r.$open=i}e.config.show_grid=n,e.config.grid_width=r,e.refreshData(),e.render(),e.config.show_grid=n,e.config.grid_width=r,e.scrollTo(t.x,t.y)},[p,m,h]),(0,o.useEffect)(()=>{let e=v.current;if(!e)return;let n=[],r=new Map;for(let t of Bo){let n=`gantt-group-${t.id}`;if(!e.isTaskExists(n))continue;let i=e.getTask(n);r.set(n,!!i.$open)}for(let e of Bo){let i=`gantt-group-${e.id}`,a=g.current.text(e.chineseLabel,e.englishLabel),o=j.filter(t=>e.statuses.includes(t.status)).sort((e,t)=>Number(!!(t.startDate&&t.dueDate))-Number(!!(e.startDate&&e.dueDate)));if(!o.length)continue;let s=o.reduce((e,n)=>e+Go(n,t[n.id]),0)/o.length;n.push({id:i,text:a,type:`project`,open:r.get(i)??e.defaultOpen,readonly:!0,row_height:46,bar_height:4,unscheduled:!0,progress:s,taskboardStatus:e.statuses[0],taskboardTitle:a,taskboardUnread:o.some(e=>t[e.id]?.unread),taskboardAssigneeType:null,taskboardAssigneeName:``,taskboardAssigneeAvatarUrl:null,taskboardAssigneeInitial:``,taskboardGroup:!0,taskboardCount:o.length});for(let e of o){let r=!!(e.startDate&&e.dueDate),a=Go(e,t[e.id]);n.push({id:e.id,parent:i,text:e.title,row_height:58,bar_height:44,...r?{start_date:Vo(e.startDate),end_date:Ho(Vo(e.dueDate),1)}:{unscheduled:!0},progress:a,taskboardStatus:e.status,taskboardTitle:e.title,taskboardUnread:t[e.id]?.unread??!1,taskboardAssigneeType:e.assignee.type,taskboardAssigneeName:e.assignee.name,taskboardAssigneeAvatarUrl:e.assignee.avatarUrl,taskboardAssigneeInitial:Array.from(e.assignee.name.trim())[0]??`·`,taskboardGroup:!1,taskboardCount:0})}}let i=j.filter(e=>e.startDate&&e.dueDate),a=new Set(i.map(e=>e.id)),o=j.flatMap(e=>e.relations.blocks.filter(t=>a.has(e.id)&&a.has(t.id)).map(t=>({id:`${e.id}:${t.id}`,source:e.id,target:t.id,type:`0`}))),s=Vo(Uo(new Date)),c=i.map(e=>Vo(e.startDate).getTime()),l=i.map(e=>Vo(e.dueDate).getTime()),u=new Date(Math.min(s.getTime(),...c)),d=new Date(Math.max(s.getTime(),...l)),f=e.getScrollState(),p=_.current?.querySelector(`.gantt_task`)?.clientWidth??0,m=zo?.projectId===j[0]?.projectId?zo:null,h=D.current&&p?e.dateFromPos(f.x+p/2):null;e.config.start_date=Ho(u,-7),e.config.end_date=Ho(d,8),e.clearAll(),e.parse({data:n,links:o}),m?e.scrollTo(m.x,m.y):h?e.scrollTo(Math.max(0,e.posFromDate(h)-p/2),f.y):c.length&&e.showDate(new Date(Math.min(...c))),m&&(zo=null),D.current=!0},[t,j]),(0,o.useEffect)(()=>{v.current?.ext.zoom.setLevel(c)},[c]),(0,o.useEffect)(()=>{u&&v.current?.showDate(new Date)},[u]),(0,$.jsx)(`div`,{className:`gantt-view`,children:(0,$.jsxs)(`div`,{className:`gantt-canvas-shell`,children:[(0,$.jsx)(`div`,{className:`gantt-canvas`,ref:_}),C!==null&&(0,$.jsx)(`div`,{className:`gantt-today-marker`,style:{left:C},"aria-label":h(`今天`,`Today`),children:(0,$.jsx)(`span`,{children:h(`今天`,`Today`)})}),(0,$.jsx)(`button`,{type:`button`,className:`gantt-grid-toggle${y?` is-collapsed`:``}`,style:{left:y?14:x},"aria-label":y?h(`展开标题区域`,`Expand title area`):h(`收起标题区域`,`Collapse title area`),"aria-expanded":!y,title:y?h(`展开标题区域`,`Expand title area`):h(`收起标题区域`,`Collapse title area`),onClick:()=>{let e=v.current;if(!e)return;let t=!T.current,n=e.getScrollState();T.current=t,b(t),e.config.show_grid=!t,e.config.grid_width=t?0:E.current,e.render(),e.scrollTo(n.x,n.y)},children:(0,$.jsx)(r,{name:y?`chevronRight`:`chevronLeft`})}),!j.length&&(0,$.jsxs)(`div`,{className:`gantt-empty-overlay`,children:[(0,$.jsx)(i,{color:`currentColor`}),(0,$.jsx)(`span`,{children:s||l?h(`当前条件下没有议题`,`No issues match the current conditions`):h(`创建议题后,可在这里安排时间线`,`Create an issue to schedule it on the timeline`)})]})]})})}export{Jo as GanttView};
|