gantt-task-react-powern 0.6.1 → 0.6.3
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/components/gantt/task-gantt-content.d.ts +4 -0
- package/dist/components/grid/grid-body.d.ts +4 -0
- package/dist/components/task-list/task-list-table.d.ts +2 -0
- package/dist/components/task-list/task-list.d.ts +2 -0
- package/dist/index.js +214 -99
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +214 -99
- package/dist/index.modern.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VirtualItem } from "@tanstack/react-virtual";
|
|
2
3
|
import { EventOption } from "../../types/public-types";
|
|
3
4
|
import { BarTask } from "../../types/bar-task";
|
|
4
5
|
import { GanttEvent } from "../../types/gantt-task-actions";
|
|
@@ -18,6 +19,9 @@ export declare type TaskGanttContentProps = {
|
|
|
18
19
|
fontSize: string;
|
|
19
20
|
fontFamily: string;
|
|
20
21
|
rtl: boolean;
|
|
22
|
+
virtualItems?: VirtualItem[];
|
|
23
|
+
visibleStartY: number;
|
|
24
|
+
visibleEndY: number;
|
|
21
25
|
setGanttEvent: (value: GanttEvent) => void;
|
|
22
26
|
setFailedTask: (value: BarTask | null) => void;
|
|
23
27
|
setSelectedTask: (taskId: string) => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VirtualItem } from "@tanstack/react-virtual";
|
|
2
3
|
import { Task } from "../../types/public-types";
|
|
3
4
|
export declare type GridBodyProps = {
|
|
4
5
|
tasks: Task[];
|
|
@@ -10,5 +11,8 @@ export declare type GridBodyProps = {
|
|
|
10
11
|
todayColor: string;
|
|
11
12
|
weekendColor: string;
|
|
12
13
|
rtl: boolean;
|
|
14
|
+
virtualItems?: VirtualItem[];
|
|
15
|
+
visibleStartY: number;
|
|
16
|
+
visibleEndY: number;
|
|
13
17
|
};
|
|
14
18
|
export declare const GridBody: React.FC<GridBodyProps>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VirtualItem } from "@tanstack/react-virtual";
|
|
2
3
|
import { Task } from "../../types/public-types";
|
|
3
4
|
export declare const TaskListTableDefault: React.FC<{
|
|
4
5
|
rowHeight: number;
|
|
@@ -15,4 +16,5 @@ export declare const TaskListTableDefault: React.FC<{
|
|
|
15
16
|
selectedTasks?: string[];
|
|
16
17
|
onTaskSelect?: (taskId: string, selected: boolean) => void;
|
|
17
18
|
taskLabelRenderer?: (Task: Task) => React.ReactNode;
|
|
19
|
+
virtualItems?: VirtualItem[];
|
|
18
20
|
}>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VirtualItem } from "@tanstack/react-virtual";
|
|
2
3
|
import { EventOption } from "../../types/public-types";
|
|
3
4
|
import { BarTask } from "../../types/bar-task";
|
|
4
5
|
import { Task } from "../../types/public-types";
|
|
@@ -44,6 +45,7 @@ export declare type TaskListProps = {
|
|
|
44
45
|
selectedTasks?: string[];
|
|
45
46
|
onTaskSelect?: (taskId: string, selected: boolean) => void;
|
|
46
47
|
taskLabelRenderer?: (Task: Task) => React.ReactNode;
|
|
48
|
+
virtualItems?: VirtualItem[];
|
|
47
49
|
}>;
|
|
48
50
|
} & EventOption;
|
|
49
51
|
export declare const TaskList: React.FC<TaskListProps>;
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var React__default = _interopDefault(React);
|
|
5
|
+
var reactVirtual = require('@tanstack/react-virtual');
|
|
5
6
|
|
|
6
7
|
function _extends() {
|
|
7
8
|
_extends = Object.assign || function (target) {
|
|
@@ -424,7 +425,8 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
424
425
|
_ref$taskLabelRendere = _ref.taskLabelRenderer,
|
|
425
426
|
taskLabelRenderer = _ref$taskLabelRendere === void 0 ? function (t) {
|
|
426
427
|
return " " + t.name;
|
|
427
|
-
} : _ref$taskLabelRendere
|
|
428
|
+
} : _ref$taskLabelRendere,
|
|
429
|
+
virtualItems = _ref.virtualItems;
|
|
428
430
|
var toLocaleDateString = React.useMemo(function () {
|
|
429
431
|
return toLocaleDateStringFactory(locale);
|
|
430
432
|
}, [locale]);
|
|
@@ -445,13 +447,25 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
445
447
|
return hasSelectedAncestor(parentWbs, selectedSet, allTasks);
|
|
446
448
|
};
|
|
447
449
|
|
|
450
|
+
var itemsToRender = virtualItems || tasks.map(function (_, index) {
|
|
451
|
+
return {
|
|
452
|
+
index: index,
|
|
453
|
+
start: index * rowHeight,
|
|
454
|
+
size: rowHeight,
|
|
455
|
+
key: index,
|
|
456
|
+
end: (index + 1) * rowHeight,
|
|
457
|
+
lane: 0,
|
|
458
|
+
measureElement: function measureElement() {}
|
|
459
|
+
};
|
|
460
|
+
});
|
|
448
461
|
return React__default.createElement("div", {
|
|
449
462
|
className: styles$1.taskListWrapper,
|
|
450
463
|
style: {
|
|
451
464
|
fontFamily: fontFamily,
|
|
452
465
|
fontSize: fontSize
|
|
453
466
|
}
|
|
454
|
-
},
|
|
467
|
+
}, itemsToRender.map(function (vi) {
|
|
468
|
+
var t = tasks[vi.index];
|
|
455
469
|
var expanderSymbol = "";
|
|
456
470
|
|
|
457
471
|
if (!(leafTaskIds.has(t.id) || t.type === "milestone")) {
|
|
@@ -465,6 +479,17 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
465
479
|
var isSelected = selectedTasks.includes(t.id);
|
|
466
480
|
var isAncestorSelected = hasSelectedAncestor(t.id, new Set(selectedTasks), tasks);
|
|
467
481
|
return React__default.createElement("div", {
|
|
482
|
+
key: "" + vi.key,
|
|
483
|
+
"data-index": vi.index,
|
|
484
|
+
style: {
|
|
485
|
+
position: "absolute",
|
|
486
|
+
top: 0,
|
|
487
|
+
left: 0,
|
|
488
|
+
width: "100%",
|
|
489
|
+
height: vi.size + "px",
|
|
490
|
+
transform: "translateY(" + vi.start + "px)"
|
|
491
|
+
}
|
|
492
|
+
}, React__default.createElement("div", {
|
|
468
493
|
className: t.type === "milestone" ? styles$1.taskListMilestoneRow : scheduleType === "lookAhead" ? styles$1.taskListLookAheadRow : styles$1.taskListTableRow,
|
|
469
494
|
style: {
|
|
470
495
|
height: rowHeight
|
|
@@ -568,7 +593,7 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
568
593
|
}
|
|
569
594
|
}, React__default.createElement("div", {
|
|
570
595
|
className: styles$1.taskListText
|
|
571
|
-
}, "\xA0", toLocaleDateString(t.actualEnd, dateTimeOptions))));
|
|
596
|
+
}, "\xA0", toLocaleDateString(t.actualEnd, dateTimeOptions)))));
|
|
572
597
|
}));
|
|
573
598
|
};
|
|
574
599
|
|
|
@@ -760,6 +785,16 @@ var TaskList = function TaskList(_ref) {
|
|
|
760
785
|
|
|
761
786
|
var prevSelectedTasksRef = React.useRef([]);
|
|
762
787
|
var expandedTasks = React.useRef([]);
|
|
788
|
+
var virtualizer = reactVirtual.useVirtualizer({
|
|
789
|
+
count: tasks.length,
|
|
790
|
+
getScrollElement: function getScrollElement() {
|
|
791
|
+
return horizontalContainerRef.current;
|
|
792
|
+
},
|
|
793
|
+
estimateSize: function estimateSize() {
|
|
794
|
+
return rowHeight;
|
|
795
|
+
},
|
|
796
|
+
overscan: 10
|
|
797
|
+
});
|
|
763
798
|
React.useEffect(function () {
|
|
764
799
|
if (horizontalContainerRef.current) {
|
|
765
800
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
@@ -911,8 +946,10 @@ var TaskList = function TaskList(_ref) {
|
|
|
911
946
|
onExpanderClick: onExpanderClick,
|
|
912
947
|
selectedTasks: onMultiSelect ? selectedTasks : undefined,
|
|
913
948
|
onTaskSelect: onMultiSelect ? handleTaskSelect : undefined,
|
|
914
|
-
taskLabelRenderer: taskLabelRenderer
|
|
949
|
+
taskLabelRenderer: taskLabelRenderer,
|
|
950
|
+
virtualItems: virtualizer.getVirtualItems()
|
|
915
951
|
};
|
|
952
|
+
console.debug(virtualizer.getTotalSize());
|
|
916
953
|
return React__default.createElement("div", {
|
|
917
954
|
ref: taskListRef
|
|
918
955
|
}, React__default.createElement(TaskListHeader, Object.assign({}, headerProps)), React__default.createElement("div", {
|
|
@@ -921,7 +958,13 @@ var TaskList = function TaskList(_ref) {
|
|
|
921
958
|
style: ganttHeight ? {
|
|
922
959
|
height: ganttHeight
|
|
923
960
|
} : {}
|
|
924
|
-
}, React__default.createElement(
|
|
961
|
+
}, React__default.createElement("div", {
|
|
962
|
+
style: {
|
|
963
|
+
height: virtualizer.getTotalSize() + "px",
|
|
964
|
+
width: "100%",
|
|
965
|
+
position: "relative"
|
|
966
|
+
}
|
|
967
|
+
}, React__default.createElement(TaskListTable, Object.assign({}, tableProps)))));
|
|
925
968
|
};
|
|
926
969
|
|
|
927
970
|
var styles$4 = {"gridRow":"_2dZTy","gridRowLookAhead":"_2RRca","gridRowLine":"_3rUKi","gridTick":"_RuwuK","darkerGridRow":"_2M-tt"};
|
|
@@ -935,103 +978,128 @@ var GridBody = function GridBody(_ref) {
|
|
|
935
978
|
columnWidth = _ref.columnWidth,
|
|
936
979
|
todayColor = _ref.todayColor,
|
|
937
980
|
weekendColor = _ref.weekendColor,
|
|
938
|
-
rtl = _ref.rtl
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
y1: 0,
|
|
945
|
-
x2: svgWidth,
|
|
946
|
-
y2: 0,
|
|
947
|
-
className: styles$4.gridRowLine
|
|
948
|
-
})];
|
|
949
|
-
|
|
950
|
-
for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
|
|
951
|
-
var task = _step.value;
|
|
952
|
-
var isDarkerRow = task.type === "milestone";
|
|
953
|
-
gridRows.push(React__default.createElement("rect", {
|
|
954
|
-
key: "Row" + task.id,
|
|
955
|
-
x: "0",
|
|
956
|
-
y: y,
|
|
957
|
-
width: svgWidth,
|
|
958
|
-
height: rowHeight,
|
|
959
|
-
className: isDarkerRow ? styles$4.darkerGridRow : scheduleType === "lookAhead" ? styles$4.gridRowLookAhead : styles$4.gridRow
|
|
960
|
-
}));
|
|
961
|
-
rowLines.push(React__default.createElement("line", {
|
|
962
|
-
key: "RowLine" + task.id,
|
|
963
|
-
x: "0",
|
|
964
|
-
y1: y + rowHeight,
|
|
965
|
-
x2: svgWidth,
|
|
966
|
-
y2: y + rowHeight,
|
|
967
|
-
className: styles$4.gridRowLine
|
|
968
|
-
}));
|
|
969
|
-
y += rowHeight;
|
|
970
|
-
}
|
|
971
|
-
|
|
981
|
+
rtl = _ref.rtl,
|
|
982
|
+
_ref$virtualItems = _ref.virtualItems,
|
|
983
|
+
virtualItems = _ref$virtualItems === void 0 ? [] : _ref$virtualItems,
|
|
984
|
+
visibleStartY = _ref.visibleStartY,
|
|
985
|
+
visibleEndY = _ref.visibleEndY;
|
|
986
|
+
var visibleHeight = visibleEndY - visibleStartY;
|
|
972
987
|
var now = new Date();
|
|
973
|
-
var
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
988
|
+
var items = virtualItems.length > 0 ? virtualItems : tasks.map(function (_, i) {
|
|
989
|
+
return {
|
|
990
|
+
index: i,
|
|
991
|
+
start: i * rowHeight,
|
|
992
|
+
end: (i + 1) * rowHeight,
|
|
993
|
+
size: rowHeight,
|
|
994
|
+
key: i
|
|
995
|
+
};
|
|
996
|
+
});
|
|
997
|
+
|
|
998
|
+
var isWeekend = function isWeekend(date) {
|
|
999
|
+
var d = date.getDay();
|
|
1000
|
+
return d === 0 || d === 6;
|
|
1001
|
+
};
|
|
977
1002
|
|
|
978
|
-
|
|
1003
|
+
var isTodayColumn = function isTodayColumn(i) {
|
|
979
1004
|
var date = dates[i];
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
}
|
|
1005
|
+
var next = dates[i + 1];
|
|
1006
|
+
if (next && date <= now && next > now) return true;
|
|
1007
|
+
|
|
1008
|
+
if (!next && date <= now) {
|
|
1009
|
+
var step = date.getTime() - dates[i - 1].getTime();
|
|
1010
|
+
var end = addToDate(date, step, "millisecond");
|
|
1011
|
+
return end > now;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
return false;
|
|
1015
|
+
};
|
|
1016
|
+
|
|
1017
|
+
var todayRects = [];
|
|
1018
|
+
var weekendRects = [];
|
|
988
1019
|
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
1020
|
+
for (var i = 0, x = 0; i < dates.length; i++, x += columnWidth) {
|
|
1021
|
+
if (isTodayColumn(i)) {
|
|
1022
|
+
todayRects.push(React__default.createElement("rect", {
|
|
1023
|
+
key: "today-" + i,
|
|
1024
|
+
x: rtl ? x + columnWidth : x,
|
|
1025
|
+
y: visibleStartY,
|
|
993
1026
|
width: columnWidth,
|
|
994
|
-
height:
|
|
1027
|
+
height: visibleHeight,
|
|
995
1028
|
fill: todayColor
|
|
996
|
-
});
|
|
1029
|
+
}));
|
|
997
1030
|
}
|
|
998
1031
|
|
|
999
|
-
if (
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1032
|
+
if (isWeekend(dates[i])) {
|
|
1033
|
+
weekendRects.push(React__default.createElement("rect", {
|
|
1034
|
+
key: "weekend-" + i,
|
|
1035
|
+
x: x,
|
|
1036
|
+
y: visibleStartY,
|
|
1003
1037
|
width: columnWidth,
|
|
1004
|
-
height:
|
|
1038
|
+
height: visibleHeight,
|
|
1005
1039
|
fill: weekendColor
|
|
1006
1040
|
}));
|
|
1007
1041
|
}
|
|
1042
|
+
}
|
|
1008
1043
|
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
}
|
|
1044
|
+
var tickLines = dates.map(function (_, i) {
|
|
1045
|
+
return React__default.createElement("line", {
|
|
1046
|
+
key: "tick-" + i,
|
|
1047
|
+
x1: i * columnWidth,
|
|
1048
|
+
y1: visibleStartY,
|
|
1049
|
+
x2: i * columnWidth,
|
|
1050
|
+
y2: visibleEndY,
|
|
1051
|
+
className: styles$4.gridTick
|
|
1052
|
+
});
|
|
1053
|
+
});
|
|
1054
|
+
var rowBackgrounds = [];
|
|
1055
|
+
var rowLines = [];
|
|
1056
|
+
rowLines.push(React__default.createElement("line", {
|
|
1057
|
+
key: "top-line",
|
|
1058
|
+
x1: 0,
|
|
1059
|
+
y1: visibleStartY,
|
|
1060
|
+
x2: svgWidth,
|
|
1061
|
+
y2: visibleStartY,
|
|
1062
|
+
className: styles$4.gridRowLine
|
|
1063
|
+
}));
|
|
1018
1064
|
|
|
1019
|
-
|
|
1065
|
+
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
1066
|
+
var vi = _step.value;
|
|
1067
|
+
var task = tasks[vi.index];
|
|
1068
|
+
if (!task) break;
|
|
1069
|
+
var y = vi.start;
|
|
1070
|
+
var isMilestone = task.type === "milestone";
|
|
1071
|
+
var rowClass = isMilestone ? styles$4.darkerGridRow : scheduleType === "lookAhead" ? styles$4.gridRowLookAhead : styles$4.gridRow;
|
|
1072
|
+
rowBackgrounds.push(React__default.createElement("rect", {
|
|
1073
|
+
key: "bg-" + vi.key,
|
|
1074
|
+
x: 0,
|
|
1075
|
+
y: y,
|
|
1076
|
+
width: svgWidth,
|
|
1077
|
+
height: rowHeight,
|
|
1078
|
+
className: rowClass
|
|
1079
|
+
}));
|
|
1080
|
+
rowLines.push(React__default.createElement("line", {
|
|
1081
|
+
key: "line-" + vi.key,
|
|
1082
|
+
x1: 0,
|
|
1083
|
+
y1: y + rowHeight,
|
|
1084
|
+
x2: svgWidth,
|
|
1085
|
+
y2: y + rowHeight,
|
|
1086
|
+
className: styles$4.gridRowLine
|
|
1087
|
+
}));
|
|
1020
1088
|
}
|
|
1021
1089
|
|
|
1022
1090
|
return React__default.createElement("g", {
|
|
1023
1091
|
className: "gridBody"
|
|
1024
1092
|
}, React__default.createElement("g", {
|
|
1025
1093
|
className: "rows"
|
|
1026
|
-
},
|
|
1094
|
+
}, rowBackgrounds), React__default.createElement("g", {
|
|
1027
1095
|
className: "rowLines"
|
|
1028
1096
|
}, rowLines), React__default.createElement("g", {
|
|
1029
1097
|
className: "ticks"
|
|
1030
|
-
},
|
|
1098
|
+
}, tickLines), scheduleType === "lookAhead" && React__default.createElement("g", {
|
|
1031
1099
|
className: "weekend"
|
|
1032
|
-
},
|
|
1100
|
+
}, weekendRects), React__default.createElement("g", {
|
|
1033
1101
|
className: "today"
|
|
1034
|
-
},
|
|
1102
|
+
}, todayRects));
|
|
1035
1103
|
};
|
|
1036
1104
|
|
|
1037
1105
|
var Grid = function Grid(props) {
|
|
@@ -2464,6 +2532,8 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2464
2532
|
fontFamily = _ref.fontFamily,
|
|
2465
2533
|
fontSize = _ref.fontSize,
|
|
2466
2534
|
rtl = _ref.rtl,
|
|
2535
|
+
_ref$virtualItems = _ref.virtualItems,
|
|
2536
|
+
virtualItems = _ref$virtualItems === void 0 ? [] : _ref$virtualItems,
|
|
2467
2537
|
setGanttEvent = _ref.setGanttEvent,
|
|
2468
2538
|
setFailedTask = _ref.setFailedTask,
|
|
2469
2539
|
setSelectedTask = _ref.setSelectedTask,
|
|
@@ -2471,7 +2541,9 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2471
2541
|
onProgressChange = _ref.onProgressChange,
|
|
2472
2542
|
onDoubleClick = _ref.onDoubleClick,
|
|
2473
2543
|
onClick = _ref.onClick,
|
|
2474
|
-
onDelete = _ref.onDelete
|
|
2544
|
+
onDelete = _ref.onDelete,
|
|
2545
|
+
visibleStartY = _ref.visibleStartY,
|
|
2546
|
+
visibleEndY = _ref.visibleEndY;
|
|
2475
2547
|
var point = svg === null || svg === void 0 ? void 0 : (_svg$current = svg.current) === null || _svg$current === void 0 ? void 0 : _svg$current.createSVGPoint();
|
|
2476
2548
|
|
|
2477
2549
|
var _useState = React.useState(0),
|
|
@@ -2683,12 +2755,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2683
2755
|
var task = _task.start.getTime() > 0 && _task.end.getTime() > 0 ? _task : undefined;
|
|
2684
2756
|
|
|
2685
2757
|
if (!task) {
|
|
2686
|
-
return [
|
|
2687
|
-
key: _task.id + (isCritical ? "-critical" : "-normal"),
|
|
2688
|
-
style: {
|
|
2689
|
-
height: taskHeight
|
|
2690
|
-
}
|
|
2691
|
-
})];
|
|
2758
|
+
return [];
|
|
2692
2759
|
}
|
|
2693
2760
|
|
|
2694
2761
|
return task.barChildren.map(function (child) {
|
|
@@ -2698,6 +2765,15 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2698
2765
|
var criticalTask = (_task$criticalPathArr = task.criticalPathArrows) === null || _task$criticalPathArr === void 0 ? void 0 : _task$criticalPathArr.find(function (arrow) {
|
|
2699
2766
|
return arrow.taskId === tasks[child.index].id && (!!arrow.criticalPathType ? arrow.criticalPathType === criticalPathType : !criticalPathType);
|
|
2700
2767
|
});
|
|
2768
|
+
var taskTo = tasks[child.index];
|
|
2769
|
+
var yFrom = task.y + taskHeight / 2;
|
|
2770
|
+
var yTo = taskTo.y + taskHeight / 2;
|
|
2771
|
+
var minY = Math.min(yFrom, yTo);
|
|
2772
|
+
var maxY = Math.max(yFrom, yTo);
|
|
2773
|
+
|
|
2774
|
+
if (maxY < visibleStartY || minY > visibleEndY) {
|
|
2775
|
+
return null;
|
|
2776
|
+
}
|
|
2701
2777
|
|
|
2702
2778
|
if (!!criticalTask === isCritical) {
|
|
2703
2779
|
return React__default.createElement(Arrow, {
|
|
@@ -2726,34 +2802,44 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2726
2802
|
className: "bar",
|
|
2727
2803
|
fontFamily: fontFamily,
|
|
2728
2804
|
fontSize: fontSize
|
|
2729
|
-
},
|
|
2730
|
-
var
|
|
2805
|
+
}, virtualItems.map(function (vi) {
|
|
2806
|
+
var _task = tasks[vi.index];
|
|
2807
|
+
|
|
2808
|
+
var task = _extends({}, _task, {
|
|
2809
|
+
y: 0
|
|
2810
|
+
});
|
|
2731
2811
|
|
|
2732
2812
|
if (!task && _task.typeInternal === "milestone") {
|
|
2733
|
-
return React__default.createElement(
|
|
2734
|
-
|
|
2813
|
+
return React__default.createElement("g", {
|
|
2814
|
+
key: _task.id,
|
|
2815
|
+
transform: "translate(0, " + vi.start + ")"
|
|
2816
|
+
}, React__default.createElement(Milestone, {
|
|
2817
|
+
task: task,
|
|
2735
2818
|
arrowIndent: arrowIndent,
|
|
2736
2819
|
taskHeight: taskHeight,
|
|
2737
2820
|
isProgressChangeable: false,
|
|
2738
2821
|
isDateChangeable: false,
|
|
2739
2822
|
isDelete: !_task.isDisabled,
|
|
2740
2823
|
onEventStart: handleBarEventStart,
|
|
2741
|
-
key: _task.id,
|
|
2742
2824
|
isSelected: !!selectedTask && _task.id === selectedTask.id,
|
|
2743
2825
|
rtl: rtl
|
|
2744
|
-
});
|
|
2826
|
+
}));
|
|
2745
2827
|
}
|
|
2746
2828
|
|
|
2747
2829
|
if (!task) {
|
|
2748
2830
|
return React__default.createElement("g", {
|
|
2749
2831
|
key: _task.id,
|
|
2832
|
+
transform: "translate(0, " + vi.start + ")",
|
|
2750
2833
|
style: {
|
|
2751
2834
|
height: taskHeight
|
|
2752
2835
|
}
|
|
2753
2836
|
});
|
|
2754
2837
|
}
|
|
2755
2838
|
|
|
2756
|
-
return React__default.createElement(
|
|
2839
|
+
return React__default.createElement("g", {
|
|
2840
|
+
key: task.id,
|
|
2841
|
+
transform: "translate(0, " + vi.start + ")"
|
|
2842
|
+
}, React__default.createElement(TaskItem, {
|
|
2757
2843
|
task: task,
|
|
2758
2844
|
arrowIndent: arrowIndent,
|
|
2759
2845
|
taskHeight: taskHeight,
|
|
@@ -2761,10 +2847,9 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2761
2847
|
isDateChangeable: !!onDateChange && !task.isDisabled,
|
|
2762
2848
|
isDelete: !task.isDisabled,
|
|
2763
2849
|
onEventStart: handleBarEventStart,
|
|
2764
|
-
key: task.id,
|
|
2765
2850
|
isSelected: !!selectedTask && task.id === selectedTask.id,
|
|
2766
2851
|
rtl: rtl
|
|
2767
|
-
});
|
|
2852
|
+
}));
|
|
2768
2853
|
})));
|
|
2769
2854
|
};
|
|
2770
2855
|
|
|
@@ -2782,9 +2867,24 @@ var TaskGantt = function TaskGantt(_ref) {
|
|
|
2782
2867
|
var verticalGanttContainerRef = React.useRef(null);
|
|
2783
2868
|
|
|
2784
2869
|
var newBarProps = _extends({}, barProps, {
|
|
2785
|
-
svg: ganttSVGRef
|
|
2870
|
+
svg: ganttSVGRef,
|
|
2871
|
+
ganttHeight: ganttHeight,
|
|
2872
|
+
scrollY: scrollY
|
|
2786
2873
|
});
|
|
2787
2874
|
|
|
2875
|
+
var buffer = barProps.rowHeight * 10;
|
|
2876
|
+
var visibleStartY = scrollY - buffer;
|
|
2877
|
+
var visibleEndY = scrollY + ganttHeight + buffer;
|
|
2878
|
+
var virtualizer = reactVirtual.useVirtualizer({
|
|
2879
|
+
count: barProps.tasks.length,
|
|
2880
|
+
getScrollElement: function getScrollElement() {
|
|
2881
|
+
return horizontalContainerRef.current;
|
|
2882
|
+
},
|
|
2883
|
+
estimateSize: function estimateSize() {
|
|
2884
|
+
return barProps.rowHeight;
|
|
2885
|
+
},
|
|
2886
|
+
overscan: 10
|
|
2887
|
+
});
|
|
2788
2888
|
React.useEffect(function () {
|
|
2789
2889
|
if (horizontalContainerRef.current) {
|
|
2790
2890
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
@@ -2816,10 +2916,18 @@ var TaskGantt = function TaskGantt(_ref) {
|
|
|
2816
2916
|
}, React__default.createElement("svg", {
|
|
2817
2917
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2818
2918
|
width: gridProps.svgWidth,
|
|
2819
|
-
height:
|
|
2919
|
+
height: virtualizer.getTotalSize(),
|
|
2820
2920
|
fontFamily: barProps.fontFamily,
|
|
2821
2921
|
ref: ganttSVGRef
|
|
2822
|
-
}, React__default.createElement(Grid, Object.assign({}, gridProps
|
|
2922
|
+
}, React__default.createElement(Grid, Object.assign({}, gridProps, {
|
|
2923
|
+
virtualItems: virtualizer.getVirtualItems(),
|
|
2924
|
+
visibleStartY: visibleStartY,
|
|
2925
|
+
visibleEndY: visibleEndY
|
|
2926
|
+
})), React__default.createElement(TaskGanttContent, Object.assign({}, newBarProps, {
|
|
2927
|
+
visibleStartY: visibleStartY,
|
|
2928
|
+
visibleEndY: visibleEndY,
|
|
2929
|
+
virtualItems: virtualizer.getVirtualItems()
|
|
2930
|
+
})))));
|
|
2823
2931
|
};
|
|
2824
2932
|
|
|
2825
2933
|
var styles$a = {"scrollWrapper":"_2k9Ys","scroll":"_19jgW"};
|
|
@@ -3020,6 +3128,9 @@ var Gantt = function Gantt(_ref) {
|
|
|
3020
3128
|
lastTouchY = _useState14[0],
|
|
3021
3129
|
setLastTouchY = _useState14[1];
|
|
3022
3130
|
|
|
3131
|
+
var buffer = rowHeight * 10;
|
|
3132
|
+
var visibleStartY = scrollY - buffer;
|
|
3133
|
+
var visibleEndY = scrollY + ganttHeight + buffer;
|
|
3023
3134
|
React.useEffect(function () {
|
|
3024
3135
|
if (scheduleType === "lookAhead" && startDate && endDate) {
|
|
3025
3136
|
setDateSetup({
|
|
@@ -3076,7 +3187,7 @@ var Gantt = function Gantt(_ref) {
|
|
|
3076
3187
|
}
|
|
3077
3188
|
|
|
3078
3189
|
setBarTasks(convertToBarTasks(filteredTasks, newDates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
|
|
3079
|
-
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl,
|
|
3190
|
+
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, onExpanderClick]);
|
|
3080
3191
|
React.useEffect(function () {
|
|
3081
3192
|
if (viewMode === dateSetup.viewMode && (viewDate && !currentViewDate || viewDate && (currentViewDate === null || currentViewDate === void 0 ? void 0 : currentViewDate.valueOf()) !== viewDate.valueOf())) {
|
|
3082
3193
|
var dates = dateSetup.dates;
|
|
@@ -3351,7 +3462,9 @@ var Gantt = function Gantt(_ref) {
|
|
|
3351
3462
|
dates: dateSetup.dates,
|
|
3352
3463
|
todayColor: todayColor,
|
|
3353
3464
|
weekendColor: weekendColor,
|
|
3354
|
-
rtl: rtl
|
|
3465
|
+
rtl: rtl,
|
|
3466
|
+
visibleStartY: visibleStartY,
|
|
3467
|
+
visibleEndY: visibleEndY
|
|
3355
3468
|
};
|
|
3356
3469
|
var calendarProps = {
|
|
3357
3470
|
dateSetup: dateSetup,
|
|
@@ -3385,7 +3498,9 @@ var Gantt = function Gantt(_ref) {
|
|
|
3385
3498
|
onProgressChange: onProgressChange,
|
|
3386
3499
|
onDoubleClick: onDoubleClick,
|
|
3387
3500
|
onClick: onClick,
|
|
3388
|
-
onDelete: onDelete
|
|
3501
|
+
onDelete: onDelete,
|
|
3502
|
+
visibleStartY: visibleStartY,
|
|
3503
|
+
visibleEndY: visibleEndY
|
|
3389
3504
|
};
|
|
3390
3505
|
var tableProps = {
|
|
3391
3506
|
rowHeight: rowHeight,
|