@progress/kendo-react-gantt 7.2.4-develop.2 → 7.2.4-develop.4
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/Gantt.js +8 -0
- package/Gantt.mjs +411 -0
- package/cells/FilterCells/GanttBooleanFilter.js +8 -0
- package/cells/FilterCells/GanttBooleanFilter.mjs +27 -0
- package/cells/FilterCells/GanttDateFilter.js +8 -0
- package/cells/FilterCells/GanttDateFilter.mjs +27 -0
- package/cells/FilterCells/GanttNumericFilter.js +8 -0
- package/cells/FilterCells/GanttNumericFilter.mjs +27 -0
- package/cells/FilterCells/GanttTextFilter.js +8 -0
- package/cells/FilterCells/GanttTextFilter.mjs +27 -0
- package/cells/FilterCells/utils.js +8 -0
- package/cells/FilterCells/utils.mjs +59 -0
- package/components/BaseView.js +8 -0
- package/components/BaseView.mjs +239 -0
- package/components/GanttDependency.js +8 -0
- package/components/GanttDependency.mjs +58 -0
- package/components/GanttTask.js +8 -0
- package/components/GanttTask.mjs +169 -0
- package/components/GanttTreelist.js +8 -0
- package/components/GanttTreelist.mjs +571 -0
- package/components/toolbar/AddButton.js +8 -0
- package/components/toolbar/AddButton.mjs +56 -0
- package/components/toolbar/Toolbar.js +8 -0
- package/components/toolbar/Toolbar.mjs +34 -0
- package/components/toolbar/view-selector/ViewSelector.js +8 -0
- package/components/toolbar/view-selector/ViewSelector.mjs +32 -0
- package/components/toolbar/view-selector/ViewSelectorItem.js +8 -0
- package/components/toolbar/view-selector/ViewSelectorItem.mjs +39 -0
- package/components/toolbar/view-selector/ViewSelectorList.js +8 -0
- package/components/toolbar/view-selector/ViewSelectorList.mjs +36 -0
- package/constants/index.js +8 -0
- package/constants/index.mjs +52 -0
- package/context/GanttContext.js +8 -0
- package/context/GanttContext.mjs +103 -0
- package/context/GanttViewContext.js +8 -0
- package/context/GanttViewContext.mjs +38 -0
- package/dist/cdn/js/kendo-react-gantt.js +8 -5
- package/editors/FormDateTimePicker.js +8 -0
- package/editors/FormDateTimePicker.mjs +29 -0
- package/editors/FormDropDownList.js +8 -0
- package/editors/FormDropDownList.mjs +62 -0
- package/editors/FormInput.js +8 -0
- package/editors/FormInput.mjs +29 -0
- package/editors/FormNumericTextBox.js +8 -0
- package/editors/FormNumericTextBox.mjs +30 -0
- package/editors/GanttEditor.js +8 -0
- package/editors/GanttEditor.mjs +260 -0
- package/editors/GanttEditorPredecessors.js +8 -0
- package/editors/GanttEditorPredecessors.mjs +121 -0
- package/editors/GanttEditorSuccessors.js +8 -0
- package/editors/GanttEditorSuccessors.mjs +121 -0
- package/editors/GanttForm.js +8 -0
- package/editors/GanttForm.mjs +113 -0
- package/editors/GanttRemoveDialog.js +8 -0
- package/editors/GanttRemoveDialog.mjs +49 -0
- package/hooks/useControlledState.js +8 -0
- package/hooks/useControlledState.mjs +21 -0
- package/hooks/useDictionaryStore.js +8 -0
- package/hooks/useDictionaryStore.mjs +30 -0
- package/hooks/useGanttTask.js +8 -0
- package/hooks/useGanttTask.mjs +35 -0
- package/index.d.mts +1394 -5
- package/index.d.ts +1394 -32
- package/index.js +8 -5
- package/index.mjs +50 -3087
- package/interfaces/DependencyType.js +8 -0
- package/interfaces/DependencyType.mjs +12 -0
- package/messages/index.js +8 -0
- package/messages/index.mjs +137 -0
- package/package-metadata.js +8 -0
- package/package-metadata.mjs +19 -0
- package/package.json +12 -12
- package/rows/GanttRow.js +8 -0
- package/rows/GanttRow.mjs +13 -0
- package/utils/data-operations.js +8 -0
- package/utils/data-operations.mjs +183 -0
- package/utils/index.js +8 -0
- package/utils/index.mjs +263 -0
- package/views/GanttDayView.js +8 -0
- package/views/GanttDayView.mjs +94 -0
- package/views/GanttMonthView.js +8 -0
- package/views/GanttMonthView.mjs +82 -0
- package/views/GanttWeekView.js +8 -0
- package/views/GanttWeekView.mjs +81 -0
- package/views/GanttYearView.js +8 -0
- package/views/GanttYearView.mjs +73 -0
- package/Gantt.d.ts +0 -29
- package/cells/FilterCells/GanttBooleanFilter.d.ts +0 -14
- package/cells/FilterCells/GanttDateFilter.d.ts +0 -14
- package/cells/FilterCells/GanttNumericFilter.d.ts +0 -14
- package/cells/FilterCells/GanttTextFilter.d.ts +0 -14
- package/cells/FilterCells/utils.d.ts +0 -42
- package/components/BaseView.d.ts +0 -24
- package/components/GanttDependency.d.ts +0 -13
- package/components/GanttTask.d.ts +0 -16
- package/components/GanttTreelist.d.ts +0 -143
- package/components/toolbar/AddButton.d.ts +0 -16
- package/components/toolbar/Toolbar.d.ts +0 -25
- package/components/toolbar/view-selector/ViewSelector.d.ts +0 -28
- package/components/toolbar/view-selector/ViewSelectorItem.d.ts +0 -15
- package/components/toolbar/view-selector/ViewSelectorList.d.ts +0 -7
- package/constants/index.d.ts +0 -57
- package/context/GanttContext.d.ts +0 -125
- package/context/GanttViewContext.d.ts +0 -44
- package/editors/FormDateTimePicker.d.ts +0 -9
- package/editors/FormDropDownList.d.ts +0 -9
- package/editors/FormInput.d.ts +0 -9
- package/editors/FormNumericTextBox.d.ts +0 -9
- package/editors/GanttEditor.d.ts +0 -21
- package/editors/GanttEditorPredecessors.d.ts +0 -25
- package/editors/GanttEditorSuccessors.d.ts +0 -25
- package/editors/GanttForm.d.ts +0 -70
- package/editors/GanttRemoveDialog.d.ts +0 -48
- package/hooks/useControlledState.d.ts +0 -8
- package/hooks/useDictionaryStore.d.ts +0 -22
- package/hooks/useGanttTask.d.ts +0 -8
- package/interfaces/AddDirection.d.ts +0 -10
- package/interfaces/DataItem.d.ts +0 -10
- package/interfaces/DateRange.d.ts +0 -12
- package/interfaces/DependencyModelFields.d.ts +0 -29
- package/interfaces/DependencyType.d.ts +0 -19
- package/interfaces/GanttBaseProps.d.ts +0 -66
- package/interfaces/GanttCellProps.d.ts +0 -45
- package/interfaces/GanttColumnProps.d.ts +0 -40
- package/interfaces/GanttDependency.d.ts +0 -30
- package/interfaces/GanttDependencyModelFields.d.ts +0 -29
- package/interfaces/GanttFilterCellProps.d.ts +0 -10
- package/interfaces/GanttFilterOperator.d.ts +0 -10
- package/interfaces/GanttHeaderCellProps.d.ts +0 -10
- package/interfaces/GanttNoRecordsProps.d.ts +0 -13
- package/interfaces/GanttProps.d.ts +0 -151
- package/interfaces/GanttRowProps.d.ts +0 -95
- package/interfaces/GanttSelectableSettings.d.ts +0 -22
- package/interfaces/GanttSlotType.d.ts +0 -8
- package/interfaces/GanttSortSettings.d.ts +0 -17
- package/interfaces/GanttTaskModelFields.d.ts +0 -64
- package/interfaces/GanttView.d.ts +0 -80
- package/interfaces/GanttViewTimelineHeaderCellProps.d.ts +0 -23
- package/interfaces/Rectangle.d.ts +0 -10
- package/interfaces/Slot.d.ts +0 -16
- package/interfaces/TaskModelFields.d.ts +0 -20
- package/interfaces/events.d.ts +0 -298
- package/messages/index.d.ts +0 -194
- package/package-metadata.d.ts +0 -9
- package/rows/GanttRow.d.ts +0 -8
- package/utils/data-operations.d.ts +0 -47
- package/utils/index.d.ts +0 -182
- package/views/GanttDayView.d.ts +0 -21
- package/views/GanttMonthView.d.ts +0 -17
- package/views/GanttWeekView.d.ts +0 -17
- package/views/GanttYearView.d.ts +0 -17
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"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]),B=t.useCallback((e,d)=>e&&d(n.start)&&e.getTime()<d(n.start).getTime()?x:void 0,[n,x]),N=t.useMemo(()=>[p,h],[p,h]),O=t.useMemo(()=>[p,B],[p,B]),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:N}),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:N}),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;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as t from "react";
|
|
10
|
+
import { FormElement as A, Field as c } from "@progress/kendo-react-form";
|
|
11
|
+
import { flatData as le } from "@progress/kendo-react-treelist";
|
|
12
|
+
import { useGanttTaskModelFieldsContext as me } from "../context/GanttContext.mjs";
|
|
13
|
+
import { FormInput as W } from "./FormInput.mjs";
|
|
14
|
+
import { useLocalization as pe } from "@progress/kendo-react-intl";
|
|
15
|
+
import { TabStrip as ue, TabStripTab as T } from "@progress/kendo-react-layout";
|
|
16
|
+
import { messages as fe, editorTaskTitle as ye, editorTaskStart as Ie, editorTaskEnd as De, editorTaskComplete as Se, editorTaskParent as Te, editorTabGeneral as ge, editorTabPredecessors as ke, editorTabSuccessors as be, editorValidationRequired as Ee, editorValidationStart as Fe, editorValidationEnd as Me, editorValidationPercentCompleteRange as Ce, editorDependencyTypesFF as H, editorDependencyTypesSS as ve, editorDependencyTypesSF as Pe, editorDependencyTypesFS as we } from "../messages/index.mjs";
|
|
17
|
+
import { FormDateTimePicker as I } from "./FormDateTimePicker.mjs";
|
|
18
|
+
import { FormNumericTextBox as J } from "./FormNumericTextBox.mjs";
|
|
19
|
+
import { FormDropDownList as Ve } from "./FormDropDownList.mjs";
|
|
20
|
+
import { guid as g } from "@progress/kendo-react-common";
|
|
21
|
+
import { GanttEditorPredecessors as _e } from "./GanttEditorPredecessors.mjs";
|
|
22
|
+
import { GanttEditorSuccessors as $e } from "./GanttEditorSuccessors.mjs";
|
|
23
|
+
import { DependencyType as s } from "../interfaces/DependencyType.mjs";
|
|
24
|
+
import { findByFieldValue as K } from "@progress/kendo-react-dropdowns";
|
|
25
|
+
const he = [
|
|
26
|
+
{ type: s.FF },
|
|
27
|
+
{ type: s.FS },
|
|
28
|
+
{ type: s.SF },
|
|
29
|
+
{ type: s.SS }
|
|
30
|
+
], Xe = (r) => {
|
|
31
|
+
const [O, Q] = t.useState(0), [l, D] = t.useState(), [d, p] = t.useState([...r.dependencyData || []]), [k, b] = t.useState([]), n = me(), U = pe(), o = (e) => U.toLanguageString(e, fe[e]), E = o(ye), F = o(Ie), M = o(De), C = o(Se), X = o(Te), Y = o(ge), Z = o(ke), j = o(be), u = o(Ee), v = o(Fe), P = o(Me), w = o(Ce), f = t.useMemo(
|
|
32
|
+
() => le(
|
|
33
|
+
r.taskData || [],
|
|
34
|
+
(e) => e.children || [],
|
|
35
|
+
(e) => {
|
|
36
|
+
const a = {
|
|
37
|
+
title: e[n.title],
|
|
38
|
+
id: e[n.id],
|
|
39
|
+
start: e[n.start],
|
|
40
|
+
end: e[n.end],
|
|
41
|
+
parentId: null
|
|
42
|
+
};
|
|
43
|
+
return n.parentId && (a.parentId = e[n.parentId]), a;
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
[r.taskData, n]
|
|
47
|
+
), ee = t.useMemo(
|
|
48
|
+
() => f.filter((e) => e.id !== r.dataItem.id),
|
|
49
|
+
[f, r.dataItem]
|
|
50
|
+
), te = t.useMemo(
|
|
51
|
+
() => d.filter((e) => e.toId === r.dataItem.id),
|
|
52
|
+
[d, r.dataItem]
|
|
53
|
+
), ne = t.useMemo(
|
|
54
|
+
() => d.filter((e) => e.fromId === r.dataItem.id),
|
|
55
|
+
[d, r.dataItem]
|
|
56
|
+
), V = t.useMemo(
|
|
57
|
+
() => d.filter((e) => e.id === null).map((e) => ({ id: e.id, fromId: e.fromId, toId: e.toId, type: e.type })),
|
|
58
|
+
[d]
|
|
59
|
+
), _ = t.useMemo(
|
|
60
|
+
() => d.filter((e) => e.id !== null && e.uid).map((e) => ({ id: e.id, fromId: e.fromId, toId: e.toId, type: e.type })),
|
|
61
|
+
[d]
|
|
62
|
+
), $ = () => {
|
|
63
|
+
if (l) {
|
|
64
|
+
if (l.id) {
|
|
65
|
+
const e = d.filter((i) => i.id !== l.id);
|
|
66
|
+
p(e);
|
|
67
|
+
const a = d.filter((i) => i.id === l.id);
|
|
68
|
+
b((i) => [...i, ...a]);
|
|
69
|
+
} else {
|
|
70
|
+
const e = d.filter((i) => i.uid !== l.uid);
|
|
71
|
+
p(e);
|
|
72
|
+
const a = d.filter((i) => i.uid === l.uid);
|
|
73
|
+
b((i) => [...i, ...a]);
|
|
74
|
+
}
|
|
75
|
+
D(void 0);
|
|
76
|
+
}
|
|
77
|
+
}, m = t.useCallback(
|
|
78
|
+
(e) => e || e === 0 ? void 0 : u,
|
|
79
|
+
[u]
|
|
80
|
+
), h = t.useCallback(
|
|
81
|
+
(e) => e || e === 0 ? e >= 0 && e <= 1 ? void 0 : w : u,
|
|
82
|
+
[u, w]
|
|
83
|
+
), x = t.useCallback(
|
|
84
|
+
(e, a) => e && a(n.end) && e.getTime() > a(n.end).getTime() ? v : void 0,
|
|
85
|
+
[n, v]
|
|
86
|
+
), R = t.useCallback(
|
|
87
|
+
(e, a) => e && a(n.start) && e.getTime() < a(n.start).getTime() ? P : void 0,
|
|
88
|
+
[n, P]
|
|
89
|
+
), B = t.useMemo(
|
|
90
|
+
() => [m, x],
|
|
91
|
+
[m, x]
|
|
92
|
+
), G = t.useMemo(
|
|
93
|
+
() => [m, R],
|
|
94
|
+
[m, R]
|
|
95
|
+
), ae = t.useMemo(
|
|
96
|
+
() => K(d, "fromId", null) || K(d, "toId", null),
|
|
97
|
+
[d]
|
|
98
|
+
), de = (e) => {
|
|
99
|
+
ae || (Q(e.selected), D(void 0));
|
|
100
|
+
}, N = (e) => {
|
|
101
|
+
D(e.dataItem);
|
|
102
|
+
}, oe = () => {
|
|
103
|
+
const e = { uid: g(), id: null, fromId: null, toId: r.dataItem.id, type: s.FS };
|
|
104
|
+
p([...d, e]);
|
|
105
|
+
}, re = () => {
|
|
106
|
+
const e = { uid: g(), id: null, fromId: r.dataItem.id, toId: null, type: s.FS };
|
|
107
|
+
p([...d, e]);
|
|
108
|
+
}, z = (e, a, i) => {
|
|
109
|
+
const S = {
|
|
110
|
+
...e,
|
|
111
|
+
uid: e.uid || g(),
|
|
112
|
+
[a]: i
|
|
113
|
+
}, L = d.findIndex(
|
|
114
|
+
(y) => y.id && y.id === S.id || y.uid && y.uid === S.uid
|
|
115
|
+
);
|
|
116
|
+
L > -1 && (d.splice(L, 1, S), p([...d]));
|
|
117
|
+
}, q = t.useMemo(() => he.map((e) => {
|
|
118
|
+
let a;
|
|
119
|
+
switch (e.type) {
|
|
120
|
+
case s.FF:
|
|
121
|
+
a = o(H);
|
|
122
|
+
break;
|
|
123
|
+
case s.FS:
|
|
124
|
+
a = o(we);
|
|
125
|
+
break;
|
|
126
|
+
case s.SF:
|
|
127
|
+
a = o(Pe);
|
|
128
|
+
break;
|
|
129
|
+
case s.SS:
|
|
130
|
+
a = o(ve);
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
133
|
+
a = o(H);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
...e,
|
|
138
|
+
name: a
|
|
139
|
+
};
|
|
140
|
+
}), [o]);
|
|
141
|
+
t.useEffect(() => {
|
|
142
|
+
r.onDependencyCreate && r.onDependencyCreate.call(void 0, {
|
|
143
|
+
createdDependencies: V,
|
|
144
|
+
updatedDependencies: _,
|
|
145
|
+
deletedDependencies: k
|
|
146
|
+
});
|
|
147
|
+
}, [V, _, k, r.onDependencyCreate]);
|
|
148
|
+
const ie = r.dependencyData && r.taskData, se = /* @__PURE__ */ t.createElement(A, { style: { width: 400 }, horizontal: !0 }, /* @__PURE__ */ t.createElement(
|
|
149
|
+
c,
|
|
150
|
+
{
|
|
151
|
+
id: `${n.title}_gantteditor`,
|
|
152
|
+
name: n.title,
|
|
153
|
+
label: E,
|
|
154
|
+
component: W,
|
|
155
|
+
validator: m
|
|
156
|
+
}
|
|
157
|
+
), /* @__PURE__ */ t.createElement(
|
|
158
|
+
c,
|
|
159
|
+
{
|
|
160
|
+
id: `${n.start}_gantteditor`,
|
|
161
|
+
name: n.start,
|
|
162
|
+
label: F,
|
|
163
|
+
component: I,
|
|
164
|
+
validator: B
|
|
165
|
+
}
|
|
166
|
+
), /* @__PURE__ */ t.createElement(
|
|
167
|
+
c,
|
|
168
|
+
{
|
|
169
|
+
id: `${n.end}_gantteditor`,
|
|
170
|
+
name: n.end,
|
|
171
|
+
label: M,
|
|
172
|
+
component: I,
|
|
173
|
+
validator: G
|
|
174
|
+
}
|
|
175
|
+
), /* @__PURE__ */ t.createElement(
|
|
176
|
+
c,
|
|
177
|
+
{
|
|
178
|
+
id: `${n.percentComplete}_gantteditor`,
|
|
179
|
+
name: n.percentComplete,
|
|
180
|
+
label: C,
|
|
181
|
+
component: J,
|
|
182
|
+
validator: h
|
|
183
|
+
}
|
|
184
|
+
)), ce = /* @__PURE__ */ t.createElement(A, { style: { paddingInline: "4px" } }, /* @__PURE__ */ t.createElement("div", { className: "k-form-fieldset" }, /* @__PURE__ */ t.createElement("div", { className: "k-form-layout k-d-grid k-grid-cols-4 k-gap-x-2" }, /* @__PURE__ */ t.createElement(
|
|
185
|
+
c,
|
|
186
|
+
{
|
|
187
|
+
id: `${n.title}_gantteditor`,
|
|
188
|
+
name: n.title,
|
|
189
|
+
label: E,
|
|
190
|
+
component: W,
|
|
191
|
+
validator: m
|
|
192
|
+
}
|
|
193
|
+
), /* @__PURE__ */ t.createElement(
|
|
194
|
+
c,
|
|
195
|
+
{
|
|
196
|
+
id: `${n.start}_gantteditor`,
|
|
197
|
+
name: n.start,
|
|
198
|
+
label: F,
|
|
199
|
+
component: I,
|
|
200
|
+
validator: B
|
|
201
|
+
}
|
|
202
|
+
), /* @__PURE__ */ t.createElement(
|
|
203
|
+
c,
|
|
204
|
+
{
|
|
205
|
+
id: `${n.end}_gantteditor`,
|
|
206
|
+
name: n.end,
|
|
207
|
+
label: M,
|
|
208
|
+
component: I,
|
|
209
|
+
validator: G
|
|
210
|
+
}
|
|
211
|
+
), /* @__PURE__ */ t.createElement(
|
|
212
|
+
c,
|
|
213
|
+
{
|
|
214
|
+
id: `${n.percentComplete}_gantteditor`,
|
|
215
|
+
name: n.percentComplete,
|
|
216
|
+
label: C,
|
|
217
|
+
component: J,
|
|
218
|
+
validator: h
|
|
219
|
+
}
|
|
220
|
+
), n.parentId && /* @__PURE__ */ t.createElement(
|
|
221
|
+
c,
|
|
222
|
+
{
|
|
223
|
+
id: `${n.parentId}_gantteditor`,
|
|
224
|
+
name: n.parentId || "",
|
|
225
|
+
idField: n.id,
|
|
226
|
+
label: X,
|
|
227
|
+
component: Ve,
|
|
228
|
+
data: ee,
|
|
229
|
+
dataItem: r.dataItem
|
|
230
|
+
}
|
|
231
|
+
))));
|
|
232
|
+
return ie ? /* @__PURE__ */ t.createElement(ue, { selected: O, onSelect: de }, /* @__PURE__ */ t.createElement(T, { title: Y }, ce), /* @__PURE__ */ t.createElement(T, { title: Z }, /* @__PURE__ */ t.createElement(
|
|
233
|
+
_e,
|
|
234
|
+
{
|
|
235
|
+
flatTasks: f,
|
|
236
|
+
predecessors: te,
|
|
237
|
+
dependencyTypes: q,
|
|
238
|
+
selectedItem: l,
|
|
239
|
+
onSelectRow: N,
|
|
240
|
+
addPredecessorsDependency: oe,
|
|
241
|
+
deleteDependency: $,
|
|
242
|
+
updateDependency: z
|
|
243
|
+
}
|
|
244
|
+
)), /* @__PURE__ */ t.createElement(T, { title: j }, /* @__PURE__ */ t.createElement(
|
|
245
|
+
$e,
|
|
246
|
+
{
|
|
247
|
+
flatTasks: f,
|
|
248
|
+
successors: ne,
|
|
249
|
+
dependencyTypes: q,
|
|
250
|
+
selectedItem: l,
|
|
251
|
+
onSelectRow: N,
|
|
252
|
+
addSuccessorsDependency: re,
|
|
253
|
+
deleteDependency: $,
|
|
254
|
+
updateDependency: z
|
|
255
|
+
}
|
|
256
|
+
))) : se;
|
|
257
|
+
};
|
|
258
|
+
export {
|
|
259
|
+
Xe as GanttEditor
|
|
260
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),d=require("@progress/kendo-react-dropdowns"),f=require("@progress/kendo-react-grid"),C=require("@progress/kendo-react-buttons"),S=require("@progress/kendo-svg-icons"),T=require("@progress/kendo-react-common"),m=require("../messages/index.js"),E=require("@progress/kendo-react-intl"),h=require("@progress/kendo-data-query");function R(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const a=R(v),q=(e,t,n,i)=>{const[o,c]=a.useState(e),r=a.useRef(null),s=l=>{i(t,"fromId",l.target.value.id)},g=()=>{if(n&&!t.uid)return n.id===t.id;if(n&&t.id===null)return n.uid===t.uid},D=a.useMemo(()=>d.findByFieldValue(e,"id",t.fromId),[e,t.fromId]),y=l=>{const u=h.filterBy(e,l.filter);c(u)};return a.createElement("td",{ref:r,className:T.classNames(g()&&"k-selected")},a.createElement(d.DropDownList,{textField:"title",data:o,value:D,onChange:s,filterable:!0,onFilterChange:y,required:!0}))},M=(e,t,n,i)=>{const o=s=>{i(t,"type",s.target.value.type)},c=()=>{if(n&&!t.uid)return n.id===t.id;if(n&&t.id===null)return n.uid===t.uid},r=a.useMemo(()=>d.findByFieldValue(e,"type",t.type),[e,t.type]);return a.createElement("td",{className:T.classNames(c()&&"k-selected")},a.createElement(d.DropDownList,{textField:"name",data:e,value:r,onChange:o}))},B=e=>{var y;const[t,n]=a.useState([]),i=E.useLocalization(),o=l=>i.toLanguageString(l,m.messages[l]),c=o(m.editorAdd),r=o(m.editorRemove),s=o(m.editorDependencyNameLabel),g=o(m.editorDependencyTypeLabel),D=a.useMemo(()=>{const l=e.predecessors.map(u=>{const k=d.findByFieldValue(e.flatTasks,"id",u.fromId),b=d.findByFieldValue(e.dependencyTypes,"type",u.type);return{...u,taskTitle:k?k.title:"",typeName:b?b.type:""}});return h.orderBy(l,t)},[e.predecessors,e.dependencyTypes,e.flatTasks,t]);return a.createElement(f.Grid,{data:D,sort:t,sortable:!0,onRowClick:e.onSelectRow,onSortChange:l=>{n(l.sort)},style:{height:"23em"}},a.createElement(f.GridToolbar,null,a.createElement(C.Button,{icon:"plus",svgIcon:S.plusIcon,onClick:e.addPredecessorsDependency},c),a.createElement(C.Button,{icon:"minus",svgIcon:S.minusIcon,onClick:e.deleteDependency,disabled:((y=e.selectedItem)==null?void 0:y.id)===void 0},r)),a.createElement(f.GridColumn,{field:"taskTitle",title:s,cell:l=>q(e.flatTasks,l.dataItem,e.selectedItem,e.updateDependency)}),a.createElement(f.GridColumn,{field:"typeName",title:g,cell:l=>M(e.dependencyTypes,l.dataItem,e.selectedItem,e.updateDependency)}))};exports.GanttEditorPredecessors=B;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as n from "react";
|
|
10
|
+
import { findByFieldValue as u, DropDownList as T } from "@progress/kendo-react-dropdowns";
|
|
11
|
+
import { Grid as k, GridToolbar as v, GridColumn as C } from "@progress/kendo-react-grid";
|
|
12
|
+
import { Button as D } from "@progress/kendo-react-buttons";
|
|
13
|
+
import { plusIcon as S, minusIcon as b } from "@progress/kendo-svg-icons";
|
|
14
|
+
import { classNames as E } from "@progress/kendo-react-common";
|
|
15
|
+
import { messages as M, editorAdd as I, editorRemove as L, editorDependencyNameLabel as N, editorDependencyTypeLabel as R } from "../messages/index.mjs";
|
|
16
|
+
import { useLocalization as F } from "@progress/kendo-react-intl";
|
|
17
|
+
import { orderBy as B, filterBy as G } from "@progress/kendo-data-query";
|
|
18
|
+
const P = (e, t, l, o) => {
|
|
19
|
+
const [i, d] = n.useState(e), r = n.useRef(null), c = (a) => {
|
|
20
|
+
o(t, "fromId", a.target.value.id);
|
|
21
|
+
}, f = () => {
|
|
22
|
+
if (l && !t.uid)
|
|
23
|
+
return l.id === t.id;
|
|
24
|
+
if (l && t.id === null)
|
|
25
|
+
return l.uid === t.uid;
|
|
26
|
+
}, y = n.useMemo(
|
|
27
|
+
() => u(e, "id", t.fromId),
|
|
28
|
+
[e, t.fromId]
|
|
29
|
+
), m = (a) => {
|
|
30
|
+
const s = G(e, a.filter);
|
|
31
|
+
d(s);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ n.createElement("td", { ref: r, className: E(f() && "k-selected") }, /* @__PURE__ */ n.createElement(
|
|
34
|
+
T,
|
|
35
|
+
{
|
|
36
|
+
textField: "title",
|
|
37
|
+
data: i,
|
|
38
|
+
value: y,
|
|
39
|
+
onChange: c,
|
|
40
|
+
filterable: !0,
|
|
41
|
+
onFilterChange: m,
|
|
42
|
+
required: !0
|
|
43
|
+
}
|
|
44
|
+
));
|
|
45
|
+
}, w = (e, t, l, o) => {
|
|
46
|
+
const i = (c) => {
|
|
47
|
+
o(t, "type", c.target.value.type);
|
|
48
|
+
}, d = () => {
|
|
49
|
+
if (l && !t.uid)
|
|
50
|
+
return l.id === t.id;
|
|
51
|
+
if (l && t.id === null)
|
|
52
|
+
return l.uid === t.uid;
|
|
53
|
+
}, r = n.useMemo(
|
|
54
|
+
() => u(e, "type", t.type),
|
|
55
|
+
[e, t.type]
|
|
56
|
+
);
|
|
57
|
+
return /* @__PURE__ */ n.createElement("td", { className: E(d() && "k-selected") }, /* @__PURE__ */ n.createElement(
|
|
58
|
+
T,
|
|
59
|
+
{
|
|
60
|
+
textField: "name",
|
|
61
|
+
data: e,
|
|
62
|
+
value: r,
|
|
63
|
+
onChange: i
|
|
64
|
+
}
|
|
65
|
+
));
|
|
66
|
+
}, K = (e) => {
|
|
67
|
+
var m;
|
|
68
|
+
const [t, l] = n.useState([]), o = F(), i = (a) => o.toLanguageString(a, M[a]), d = i(I), r = i(L), c = i(N), f = i(R), y = n.useMemo(() => {
|
|
69
|
+
const a = e.predecessors.map((s) => {
|
|
70
|
+
const g = u(e.flatTasks, "id", s.fromId), h = u(e.dependencyTypes, "type", s.type);
|
|
71
|
+
return {
|
|
72
|
+
...s,
|
|
73
|
+
taskTitle: g ? g.title : "",
|
|
74
|
+
typeName: h ? h.type : ""
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
return B(a, t);
|
|
78
|
+
}, [e.predecessors, e.dependencyTypes, e.flatTasks, t]);
|
|
79
|
+
return /* @__PURE__ */ n.createElement(
|
|
80
|
+
k,
|
|
81
|
+
{
|
|
82
|
+
data: y,
|
|
83
|
+
sort: t,
|
|
84
|
+
sortable: !0,
|
|
85
|
+
onRowClick: e.onSelectRow,
|
|
86
|
+
onSortChange: (a) => {
|
|
87
|
+
l(a.sort);
|
|
88
|
+
},
|
|
89
|
+
style: { height: "23em" }
|
|
90
|
+
},
|
|
91
|
+
/* @__PURE__ */ n.createElement(v, null, /* @__PURE__ */ n.createElement(D, { icon: "plus", svgIcon: S, onClick: e.addPredecessorsDependency }, d), /* @__PURE__ */ n.createElement(
|
|
92
|
+
D,
|
|
93
|
+
{
|
|
94
|
+
icon: "minus",
|
|
95
|
+
svgIcon: b,
|
|
96
|
+
onClick: e.deleteDependency,
|
|
97
|
+
disabled: ((m = e.selectedItem) == null ? void 0 : m.id) === void 0
|
|
98
|
+
},
|
|
99
|
+
r
|
|
100
|
+
)),
|
|
101
|
+
/* @__PURE__ */ n.createElement(
|
|
102
|
+
C,
|
|
103
|
+
{
|
|
104
|
+
field: "taskTitle",
|
|
105
|
+
title: c,
|
|
106
|
+
cell: (a) => P(e.flatTasks, a.dataItem, e.selectedItem, e.updateDependency)
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
/* @__PURE__ */ n.createElement(
|
|
110
|
+
C,
|
|
111
|
+
{
|
|
112
|
+
field: "typeName",
|
|
113
|
+
title: f,
|
|
114
|
+
cell: (a) => w(e.dependencyTypes, a.dataItem, e.selectedItem, e.updateDependency)
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
);
|
|
118
|
+
};
|
|
119
|
+
export {
|
|
120
|
+
K as GanttEditorPredecessors
|
|
121
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("react"),r=require("@progress/kendo-react-dropdowns"),m=require("@progress/kendo-react-grid"),b=require("@progress/kendo-react-buttons"),C=require("@progress/kendo-svg-icons"),v=require("@progress/kendo-react-common"),y=require("../messages/index.js"),h=require("@progress/kendo-react-intl"),T=require("@progress/kendo-data-query");function R(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,l.get?l:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const a=R(E),q=(e,t,n,l)=>{const[i,c]=a.useState(e),s=o=>{l(t,"toId",o.target.value.id)},u=()=>{if(n&&!t.uid)return n.id===t.id;if(n&&t.id===null)return n.uid===t.uid},f=a.useMemo(()=>r.findByFieldValue(e,"id",t.toId),[e,t.toId]),g=o=>{const d=T.filterBy(e,o.filter);c(d)};return a.createElement("td",{className:v.classNames(u()&&"k-selected")},a.createElement(r.DropDownList,{textField:"title",data:i,value:f,onChange:s,filterable:!0,onFilterChange:g,required:!0}))},M=(e,t,n,l)=>{const i=u=>{l(t,"type",u.target.value.type)},c=()=>{if(n&&!t.uid)return n.id===t.id;if(n&&t.id===null)return n.uid===t.uid},s=a.useMemo(()=>r.findByFieldValue(e,"type",t.type),[e,t.type]);return a.createElement("td",{className:v.classNames(c()&&"k-selected")},a.createElement(r.DropDownList,{textField:"name",data:e,value:s,onChange:i}))},p=e=>{var o;const[t,n]=a.useState([]),l=h.useLocalization(),i=d=>l.toLanguageString(d,y.messages[d]),c=i(y.editorAdd),s=i(y.editorRemove),u=i(y.editorDependencyNameLabel),f=i(y.editorDependencyTypeLabel),g=a.useMemo(()=>{const d=e.successors.map(D=>{const S=r.findByFieldValue(e.flatTasks,"id",D.toId),k=r.findByFieldValue(e.dependencyTypes,"type",D.type);return{...D,taskTitle:S?S.title:"",typeName:k?k.type:""}});return T.orderBy(d,t)},[e.successors,e.dependencyTypes,e.flatTasks,t]);return a.createElement(m.Grid,{data:g,sort:t,sortable:!0,onRowClick:e.onSelectRow,onSortChange:d=>{n(d.sort)},style:{height:"23em"}},a.createElement(m.GridToolbar,null,a.createElement(b.Button,{icon:"plus",svgIcon:C.plusIcon,onClick:e.addSuccessorsDependency},c),a.createElement(b.Button,{icon:"minus",svgIcon:C.minusIcon,onClick:e.deleteDependency,disabled:((o=e.selectedItem)==null?void 0:o.id)===void 0},s)),a.createElement(m.GridColumn,{field:"taskTitle",title:u,cell:d=>q(e.flatTasks,d.dataItem,e.selectedItem,e.updateDependency)}),a.createElement(m.GridColumn,{field:"type",title:f,cell:d=>M(e.dependencyTypes,d.dataItem,e.selectedItem,e.updateDependency)}))};exports.GanttEditorSuccessors=p;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as n from "react";
|
|
10
|
+
import { findByFieldValue as s, DropDownList as h } from "@progress/kendo-react-dropdowns";
|
|
11
|
+
import { Grid as T, GridToolbar as k, GridColumn as D } from "@progress/kendo-react-grid";
|
|
12
|
+
import { Button as S } from "@progress/kendo-react-buttons";
|
|
13
|
+
import { plusIcon as p, minusIcon as v } from "@progress/kendo-svg-icons";
|
|
14
|
+
import { classNames as E } from "@progress/kendo-react-common";
|
|
15
|
+
import { messages as b, editorAdd as M, editorRemove as I, editorDependencyNameLabel as L, editorDependencyTypeLabel as F } from "../messages/index.mjs";
|
|
16
|
+
import { useLocalization as N } from "@progress/kendo-react-intl";
|
|
17
|
+
import { orderBy as R, filterBy as x } from "@progress/kendo-data-query";
|
|
18
|
+
const B = (e, t, l, o) => {
|
|
19
|
+
const [i, r] = n.useState(e), c = (d) => {
|
|
20
|
+
o(t, "toId", d.target.value.id);
|
|
21
|
+
}, m = () => {
|
|
22
|
+
if (l && !t.uid)
|
|
23
|
+
return l.id === t.id;
|
|
24
|
+
if (l && t.id === null)
|
|
25
|
+
return l.uid === t.uid;
|
|
26
|
+
}, u = n.useMemo(
|
|
27
|
+
() => s(e, "id", t.toId),
|
|
28
|
+
[e, t.toId]
|
|
29
|
+
), y = (d) => {
|
|
30
|
+
const a = x(e, d.filter);
|
|
31
|
+
r(a);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ n.createElement("td", { className: E(m() && "k-selected") }, /* @__PURE__ */ n.createElement(
|
|
34
|
+
h,
|
|
35
|
+
{
|
|
36
|
+
textField: "title",
|
|
37
|
+
data: i,
|
|
38
|
+
value: u,
|
|
39
|
+
onChange: c,
|
|
40
|
+
filterable: !0,
|
|
41
|
+
onFilterChange: y,
|
|
42
|
+
required: !0
|
|
43
|
+
}
|
|
44
|
+
));
|
|
45
|
+
}, G = (e, t, l, o) => {
|
|
46
|
+
const i = (m) => {
|
|
47
|
+
o(t, "type", m.target.value.type);
|
|
48
|
+
}, r = () => {
|
|
49
|
+
if (l && !t.uid)
|
|
50
|
+
return l.id === t.id;
|
|
51
|
+
if (l && t.id === null)
|
|
52
|
+
return l.uid === t.uid;
|
|
53
|
+
}, c = n.useMemo(
|
|
54
|
+
() => s(e, "type", t.type),
|
|
55
|
+
[e, t.type]
|
|
56
|
+
);
|
|
57
|
+
return /* @__PURE__ */ n.createElement("td", { className: E(r() && "k-selected") }, /* @__PURE__ */ n.createElement(
|
|
58
|
+
h,
|
|
59
|
+
{
|
|
60
|
+
textField: "name",
|
|
61
|
+
data: e,
|
|
62
|
+
value: c,
|
|
63
|
+
onChange: i
|
|
64
|
+
}
|
|
65
|
+
));
|
|
66
|
+
}, K = (e) => {
|
|
67
|
+
var d;
|
|
68
|
+
const [t, l] = n.useState([]), o = N(), i = (a) => o.toLanguageString(a, b[a]), r = i(M), c = i(I), m = i(L), u = i(F), y = n.useMemo(() => {
|
|
69
|
+
const a = e.successors.map((f) => {
|
|
70
|
+
const g = s(e.flatTasks, "id", f.toId), C = s(e.dependencyTypes, "type", f.type);
|
|
71
|
+
return {
|
|
72
|
+
...f,
|
|
73
|
+
taskTitle: g ? g.title : "",
|
|
74
|
+
typeName: C ? C.type : ""
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
return R(a, t);
|
|
78
|
+
}, [e.successors, e.dependencyTypes, e.flatTasks, t]);
|
|
79
|
+
return /* @__PURE__ */ n.createElement(
|
|
80
|
+
T,
|
|
81
|
+
{
|
|
82
|
+
data: y,
|
|
83
|
+
sort: t,
|
|
84
|
+
sortable: !0,
|
|
85
|
+
onRowClick: e.onSelectRow,
|
|
86
|
+
onSortChange: (a) => {
|
|
87
|
+
l(a.sort);
|
|
88
|
+
},
|
|
89
|
+
style: { height: "23em" }
|
|
90
|
+
},
|
|
91
|
+
/* @__PURE__ */ n.createElement(k, null, /* @__PURE__ */ n.createElement(S, { icon: "plus", svgIcon: p, onClick: e.addSuccessorsDependency }, r), /* @__PURE__ */ n.createElement(
|
|
92
|
+
S,
|
|
93
|
+
{
|
|
94
|
+
icon: "minus",
|
|
95
|
+
svgIcon: v,
|
|
96
|
+
onClick: e.deleteDependency,
|
|
97
|
+
disabled: ((d = e.selectedItem) == null ? void 0 : d.id) === void 0
|
|
98
|
+
},
|
|
99
|
+
c
|
|
100
|
+
)),
|
|
101
|
+
/* @__PURE__ */ n.createElement(
|
|
102
|
+
D,
|
|
103
|
+
{
|
|
104
|
+
field: "taskTitle",
|
|
105
|
+
title: m,
|
|
106
|
+
cell: (a) => B(e.flatTasks, a.dataItem, e.selectedItem, e.updateDependency)
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
/* @__PURE__ */ n.createElement(
|
|
110
|
+
D,
|
|
111
|
+
{
|
|
112
|
+
field: "type",
|
|
113
|
+
title: u,
|
|
114
|
+
cell: (a) => G(e.dependencyTypes, a.dataItem, e.selectedItem, e.updateDependency)
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
);
|
|
118
|
+
};
|
|
119
|
+
export {
|
|
120
|
+
K as GanttEditorSuccessors
|
|
121
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),_=require("react-dom"),z=require("@progress/kendo-react-common"),G=require("@progress/kendo-react-form"),I=require("@progress/kendo-react-dialogs"),u=require("@progress/kendo-react-buttons"),T=require("./GanttEditor.js"),V=require("@progress/kendo-react-intl"),d=require("../messages/index.js"),m=require("@progress/kendo-svg-icons"),g=require("@progress/kendo-react-dropdowns");function b(e){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const l=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(i,o,l.get?l:{enumerable:!0,get:()=>e[o]})}}return i.default=e,Object.freeze(i)}const n=b(p),W=b(_),L=e=>{const{onCancel:i,onDelete:o,onClose:l,onSubmit:r,...C}=e,f=n.useRef(e.dataItem),[a,k]=n.useState({}),S=V.useLocalization(),s=t=>S.toLanguageString(t,d.messages[t]),h=s(d.editorSave),E=s(d.editorCancel),M=s(d.editorDelete),y=s(d.editorTitle),q=n.useCallback(t=>{if(i){const c={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};i.call(void 0,c)}},[i,e.dataItem]),R=n.useCallback(t=>{if(o){const c={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};o.call(void 0,c)}},[o,e.dataItem]),O=n.useCallback(({syntheticEvent:t})=>{if(l){const c={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};l.call(void 0,c)}},[l,e.dataItem]),v=n.useCallback((t,c)=>{if(r){const j={dataItem:t,initialDataItem:f.current,syntheticEvent:c,nativeEvent:c&&c.nativeEvent,dependencies:a};r.call(void 0,j)}},[r,a]),D=n.useMemo(()=>g.findByFieldValue(a.createdDependencies,"fromId",null)||g.findByFieldValue(a.createdDependencies,"toId",null),[a]),w=n.useMemo(()=>a.createdDependencies&&a.createdDependencies.length&&D===void 0||a.updatedDependencies&&a.updatedDependencies.length||a.deletedDependencies&&a.deletedDependencies.length,[a,D]),B=n.useCallback(t=>{k(t)},[]),F=n.createElement(G.Form,{initialValues:e.dataItem,onSubmit:v,render:t=>n.createElement(I.Window,{title:y,minWidth:90,width:554,modal:!0,height:0,onClose:O},n.createElement(T.GanttEditor,{taskData:e.taskData,dependencyData:e.dependencyData,dataItem:e.dataItem,onDependencyCreate:B}),n.createElement(I.WindowActionsBar,{layout:"start"},n.createElement(u.Button,{disabled:!t.allowSubmit&&!w,onClick:t.allowSubmit?t.onSubmit:c=>v(e.dataItem,c),icon:"save",svgIcon:m.saveIcon,themeColor:"primary"},h),n.createElement(u.Button,{onClick:q,type:"button",icon:"cancel",svgIcon:m.cancelIcon},E),n.createElement("div",{className:"k-spacer"}),o&&n.createElement(u.Button,{onClick:R,icon:"trash",svgIcon:m.trashIcon,fillMode:"flat",themeColor:"primary"},M))),...C});return z.canUseDOM?W.createPortal(F,document&&document.body):null};exports.GanttForm=L;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as t from "react";
|
|
10
|
+
import * as B from "react-dom";
|
|
11
|
+
import { canUseDOM as F } from "@progress/kendo-react-common";
|
|
12
|
+
import { Form as O } from "@progress/kendo-react-form";
|
|
13
|
+
import { Window as R, WindowActionsBar as W } from "@progress/kendo-react-dialogs";
|
|
14
|
+
import { Button as s } from "@progress/kendo-react-buttons";
|
|
15
|
+
import { GanttEditor as G } from "./GanttEditor.mjs";
|
|
16
|
+
import { useLocalization as L } from "@progress/kendo-react-intl";
|
|
17
|
+
import { messages as T, editorSave as V, editorCancel as x, editorDelete as A, editorTitle as N } from "../messages/index.mjs";
|
|
18
|
+
import { saveIcon as U, cancelIcon as j, trashIcon as q } from "@progress/kendo-svg-icons";
|
|
19
|
+
import { findByFieldValue as v } from "@progress/kendo-react-dropdowns";
|
|
20
|
+
const P = (a) => {
|
|
21
|
+
const { onCancel: l, onDelete: c, onClose: d, onSubmit: m, ...D } = a, I = t.useRef(a.dataItem), [n, f] = t.useState({}), C = L(), i = (e) => C.toLanguageString(e, T[e]), g = i(V), h = i(x), b = i(A), E = i(N), k = t.useCallback(
|
|
22
|
+
(e) => {
|
|
23
|
+
if (l) {
|
|
24
|
+
const o = { syntheticEvent: e, nativeEvent: e.nativeEvent, dataItem: a.dataItem };
|
|
25
|
+
l.call(void 0, o);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
[l, a.dataItem]
|
|
29
|
+
), S = t.useCallback(
|
|
30
|
+
(e) => {
|
|
31
|
+
if (c) {
|
|
32
|
+
const o = { syntheticEvent: e, nativeEvent: e.nativeEvent, dataItem: a.dataItem };
|
|
33
|
+
c.call(void 0, o);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
[c, a.dataItem]
|
|
37
|
+
), M = t.useCallback(
|
|
38
|
+
({ syntheticEvent: e }) => {
|
|
39
|
+
if (d) {
|
|
40
|
+
const o = { syntheticEvent: e, nativeEvent: e.nativeEvent, dataItem: a.dataItem };
|
|
41
|
+
d.call(void 0, o);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
[d, a.dataItem]
|
|
45
|
+
), r = t.useCallback(
|
|
46
|
+
(e, o) => {
|
|
47
|
+
if (m) {
|
|
48
|
+
const z = {
|
|
49
|
+
dataItem: e,
|
|
50
|
+
initialDataItem: I.current,
|
|
51
|
+
syntheticEvent: o,
|
|
52
|
+
nativeEvent: o && o.nativeEvent,
|
|
53
|
+
dependencies: n
|
|
54
|
+
};
|
|
55
|
+
m.call(void 0, z);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
[m, n]
|
|
59
|
+
), u = t.useMemo(
|
|
60
|
+
() => v(n.createdDependencies, "fromId", null) || v(n.createdDependencies, "toId", null),
|
|
61
|
+
[n]
|
|
62
|
+
), p = t.useMemo(
|
|
63
|
+
() => n.createdDependencies && n.createdDependencies.length && u === void 0 || n.updatedDependencies && n.updatedDependencies.length || n.deletedDependencies && n.deletedDependencies.length,
|
|
64
|
+
[n, u]
|
|
65
|
+
), y = t.useCallback(
|
|
66
|
+
(e) => {
|
|
67
|
+
f(e);
|
|
68
|
+
},
|
|
69
|
+
[]
|
|
70
|
+
), w = /* @__PURE__ */ t.createElement(
|
|
71
|
+
O,
|
|
72
|
+
{
|
|
73
|
+
initialValues: a.dataItem,
|
|
74
|
+
onSubmit: r,
|
|
75
|
+
render: (e) => /* @__PURE__ */ t.createElement(
|
|
76
|
+
R,
|
|
77
|
+
{
|
|
78
|
+
title: E,
|
|
79
|
+
minWidth: 90,
|
|
80
|
+
width: 554,
|
|
81
|
+
modal: !0,
|
|
82
|
+
height: 0,
|
|
83
|
+
onClose: M
|
|
84
|
+
},
|
|
85
|
+
/* @__PURE__ */ t.createElement(
|
|
86
|
+
G,
|
|
87
|
+
{
|
|
88
|
+
taskData: a.taskData,
|
|
89
|
+
dependencyData: a.dependencyData,
|
|
90
|
+
dataItem: a.dataItem,
|
|
91
|
+
onDependencyCreate: y
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
/* @__PURE__ */ t.createElement(W, { layout: "start" }, /* @__PURE__ */ t.createElement(
|
|
95
|
+
s,
|
|
96
|
+
{
|
|
97
|
+
disabled: !e.allowSubmit && !p,
|
|
98
|
+
onClick: e.allowSubmit ? e.onSubmit : (o) => r(a.dataItem, o),
|
|
99
|
+
icon: "save",
|
|
100
|
+
svgIcon: U,
|
|
101
|
+
themeColor: "primary"
|
|
102
|
+
},
|
|
103
|
+
g
|
|
104
|
+
), /* @__PURE__ */ t.createElement(s, { onClick: k, type: "button", icon: "cancel", svgIcon: j }, h), /* @__PURE__ */ t.createElement("div", { className: "k-spacer" }), c && /* @__PURE__ */ t.createElement(s, { onClick: S, icon: "trash", svgIcon: q, fillMode: "flat", themeColor: "primary" }, b))
|
|
105
|
+
),
|
|
106
|
+
...D
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
return F ? B.createPortal(w, document && document.body) : null;
|
|
110
|
+
};
|
|
111
|
+
export {
|
|
112
|
+
P as GanttForm
|
|
113
|
+
};
|