UNPKG

@progress/kendo-react-gantt

Version:

React Gantt enables the display of self-referencing tabular data with many features. KendoReact Gantt package

9 lines (8 loc) 6.3 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const le=require("react"),l=require("@progress/kendo-react-form"),me=require("@progress/kendo-react-treelist"),ue=require("../context/GanttContext.js"),W=require("./FormInput.js"),pe=require("@progress/kendo-react-intl"),f=require("@progress/kendo-react-layout"),i=require("../messages/index.js"),k=require("./FormDateTimePicker.js"),H=require("./FormNumericTextBox.js"),ye=require("./FormDropDownList.js"),b=require("@progress/kendo-react-common"),Te=require("./GanttEditorPredecessors.js"),De=require("./GanttEditorSuccessors.js"),m=require("../interfaces/DependencyType.js"),J=require("@progress/kendo-react-dropdowns");function Fe(a){const y=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const u in a)if(u!=="default"){const c=Object.getOwnPropertyDescriptor(a,u);Object.defineProperty(y,u,c.get?c:{enumerable:!0,get:()=>a[u]})}}return y.default=a,Object.freeze(y)}const t=Fe(le),ge=[{type:m.DependencyType.FF},{type:m.DependencyType.FS},{type:m.DependencyType.SF},{type:m.DependencyType.SS}],fe=a=>{const[y,u]=t.useState(0),[c,S]=t.useState(),[r,T]=t.useState([...a.dependencyData||[]]),[E,M]=t.useState([]),n=ue.useGanttTaskModelFieldsContext(),K=pe.useLocalization(),o=e=>K.toLanguageString(e,i.messages[e]),C=o(i.editorTaskTitle),q=o(i.editorTaskStart),v=o(i.editorTaskEnd),P=o(i.editorTaskComplete),Q=o(i.editorTaskParent),U=o(i.editorTabGeneral),X=o(i.editorTabPredecessors),Y=o(i.editorTabSuccessors),D=o(i.editorValidationRequired),w=o(i.editorValidationStart),x=o(i.editorValidationEnd),R=o(i.editorValidationPercentCompleteRange),F=t.useMemo(()=>me.flatData(a.taskData||[],e=>e.children||[],e=>{const d={title:e[n.title],id:e[n.id],start:e[n.start],end:e[n.end],parentId:null};return n.parentId&&(d.parentId=e[n.parentId]),d}),[a.taskData,n]),Z=t.useMemo(()=>F.filter(e=>e.id!==a.dataItem.id),[F,a.dataItem]),ee=t.useMemo(()=>r.filter(e=>e.toId===a.dataItem.id),[r,a.dataItem]),te=t.useMemo(()=>r.filter(e=>e.fromId===a.dataItem.id),[r,a.dataItem]),_=t.useMemo(()=>r.filter(e=>e.id===null).map(e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})),[r]),V=t.useMemo(()=>r.filter(e=>e.id!==null&&e.uid).map(e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})),[r]),G=()=>{if(c){if(c.id){const e=r.filter(s=>s.id!==c.id);T(e);const d=r.filter(s=>s.id===c.id);M(s=>[...s,...d])}else{const e=r.filter(s=>s.uid!==c.uid);T(e);const d=r.filter(s=>s.uid===c.uid);M(s=>[...s,...d])}S(void 0)}},p=t.useCallback(e=>e||e===0?void 0:D,[D]),$=t.useCallback(e=>e||e===0?e>=0&&e<=1?void 0:R:D,[D,R]),h=t.useCallback((e,d)=>e&&d(n.end)&&e.getTime()>d(n.end).getTime()?w:void 0,[n,w]),N=t.useCallback((e,d)=>e&&d(n.start)&&e.getTime()<d(n.start).getTime()?x:void 0,[n,x]),B=t.useMemo(()=>[p,h],[p,h]),O=t.useMemo(()=>[p,N],[p,N]),ne=t.useMemo(()=>J.findByFieldValue(r,"fromId",null)||J.findByFieldValue(r,"toId",null),[r]),ae=e=>{ne||(u(e.selected),S(void 0))},z=e=>{S(e.dataItem)},de=()=>{const e={uid:b.guid(),id:null,fromId:null,toId:a.dataItem.id,type:m.DependencyType.FS};T([...r,e])},re=()=>{const e={uid:b.guid(),id:null,fromId:a.dataItem.id,toId:null,type:m.DependencyType.FS};T([...r,e])},L=(e,d,s)=>{const I={...e,uid:e.uid||b.guid(),[d]:s},A=r.findIndex(g=>g.id&&g.id===I.id||g.uid&&g.uid===I.uid);A>-1&&(r.splice(A,1,I),T([...r]))},j=t.useMemo(()=>ge.map(e=>{let d;switch(e.type){case m.DependencyType.FF:d=o(i.editorDependencyTypesFF);break;case m.DependencyType.FS:d=o(i.editorDependencyTypesFS);break;case m.DependencyType.SF:d=o(i.editorDependencyTypesSF);break;case m.DependencyType.SS:d=o(i.editorDependencyTypesSS);break;default:d=o(i.editorDependencyTypesFF);break}return{...e,name:d}}),[o]);t.useEffect(()=>{a.onDependencyCreate&&a.onDependencyCreate.call(void 0,{createdDependencies:_,updatedDependencies:V,deletedDependencies:E})},[_,V,E,a.onDependencyCreate]);const oe=a.dependencyData&&a.taskData,ie=t.createElement(l.FormElement,{style:{width:400},horizontal:!0},t.createElement(l.Field,{id:`${n.title}_gantteditor`,name:n.title,label:C,component:W.FormInput,validator:p}),t.createElement(l.Field,{id:`${n.start}_gantteditor`,name:n.start,label:q,component:k.FormDateTimePicker,validator:B}),t.createElement(l.Field,{id:`${n.end}_gantteditor`,name:n.end,label:v,component:k.FormDateTimePicker,validator:O}),t.createElement(l.Field,{id:`${n.percentComplete}_gantteditor`,name:n.percentComplete,label:P,component:H.FormNumericTextBox,validator:$})),se=t.createElement(l.FormElement,{style:{paddingInline:"4px"}},t.createElement("div",{className:"k-form-fieldset"},t.createElement("div",{className:"k-form-layout k-d-grid k-grid-cols-4 k-gap-x-2"},t.createElement(l.Field,{id:`${n.title}_gantteditor`,name:n.title,label:C,component:W.FormInput,validator:p}),t.createElement(l.Field,{id:`${n.start}_gantteditor`,name:n.start,label:q,component:k.FormDateTimePicker,validator:B}),t.createElement(l.Field,{id:`${n.end}_gantteditor`,name:n.end,label:v,component:k.FormDateTimePicker,validator:O}),t.createElement(l.Field,{id:`${n.percentComplete}_gantteditor`,name:n.percentComplete,label:P,component:H.FormNumericTextBox,validator:$}),n.parentId&&t.createElement(l.Field,{id:`${n.parentId}_gantteditor`,name:n.parentId||"",idField:n.id,label:Q,component:ye.FormDropDownList,data:Z,dataItem:a.dataItem})))),ce=t.createElement(f.TabStrip,{selected:y,onSelect:ae},t.createElement(f.TabStripTab,{title:U},se),t.createElement(f.TabStripTab,{title:X},t.createElement(Te.GanttEditorPredecessors,{flatTasks:F,predecessors:ee,dependencyTypes:j,selectedItem:c,onSelectRow:z,addPredecessorsDependency:de,deleteDependency:G,updateDependency:L})),t.createElement(f.TabStripTab,{title:Y},t.createElement(De.GanttEditorSuccessors,{flatTasks:F,successors:te,dependencyTypes:j,selectedItem:c,onSelectRow:z,addSuccessorsDependency:re,deleteDependency:G,updateDependency:L})));return oe?ce:ie};exports.GanttEditor=fe;