gantt-task-react-powern 0.4.98 → 0.5.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/gantt.d.ts +1 -0
- package/dist/index.js +123 -11
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +123 -11
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.modern.js
CHANGED
|
@@ -432,6 +432,18 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
432
432
|
return t.id;
|
|
433
433
|
}));
|
|
434
434
|
}, [leafTasks]);
|
|
435
|
+
|
|
436
|
+
var hasSelectedAncestor = function hasSelectedAncestor(taskId, selectedSet, allTasks) {
|
|
437
|
+
var task = allTasks.find(function (t) {
|
|
438
|
+
return t.id === taskId;
|
|
439
|
+
});
|
|
440
|
+
if (!task) return false;
|
|
441
|
+
var parentWbs = getParentWbs(task.id);
|
|
442
|
+
if (!parentWbs) return false;
|
|
443
|
+
if (selectedSet.has(parentWbs)) return true;
|
|
444
|
+
return hasSelectedAncestor(parentWbs, selectedSet, allTasks);
|
|
445
|
+
};
|
|
446
|
+
|
|
435
447
|
return React.createElement("div", {
|
|
436
448
|
className: styles$1.taskListWrapper,
|
|
437
449
|
style: {
|
|
@@ -450,6 +462,7 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
450
462
|
}
|
|
451
463
|
|
|
452
464
|
var isSelected = selectedTasks.includes(t.id);
|
|
465
|
+
var isAncestorSelected = hasSelectedAncestor(t.id, new Set(selectedTasks), tasks);
|
|
453
466
|
return React.createElement("div", {
|
|
454
467
|
className: t.type === "milestone" ? styles$1.taskListMilestoneRow : scheduleType === "lookAhead" ? styles$1.taskListLookAheadRow : styles$1.taskListTableRow,
|
|
455
468
|
style: {
|
|
@@ -475,6 +488,7 @@ var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
|
475
488
|
}, React.createElement("input", {
|
|
476
489
|
type: "checkbox",
|
|
477
490
|
checked: isSelected,
|
|
491
|
+
disabled: isAncestorSelected,
|
|
478
492
|
onChange: function onChange(e) {
|
|
479
493
|
return onTaskSelect(t.id, e.target.checked);
|
|
480
494
|
}
|
|
@@ -739,7 +753,12 @@ var TaskList = function TaskList(_ref) {
|
|
|
739
753
|
selectedTasks = _useState[0],
|
|
740
754
|
setSelectedTasks = _useState[1];
|
|
741
755
|
|
|
756
|
+
var _useState2 = useState([]),
|
|
757
|
+
pendingTaskSelect = _useState2[0],
|
|
758
|
+
setPendingTaskSelect = _useState2[1];
|
|
759
|
+
|
|
742
760
|
var prevSelectedTasksRef = useRef([]);
|
|
761
|
+
var expandedTasks = useRef([]);
|
|
743
762
|
useEffect(function () {
|
|
744
763
|
if (horizontalContainerRef.current) {
|
|
745
764
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
@@ -754,28 +773,116 @@ var TaskList = function TaskList(_ref) {
|
|
|
754
773
|
onMultiSelect(selectedTaskObjects);
|
|
755
774
|
}
|
|
756
775
|
}, [selectedTasks, tasks, onMultiSelect]);
|
|
776
|
+
useEffect(function () {
|
|
777
|
+
if (pendingTaskSelect.length === 0) return;
|
|
778
|
+
var newSelected = new Set(selectedTasks);
|
|
779
|
+
pendingTaskSelect.forEach(function (_ref2) {
|
|
780
|
+
var taskId = _ref2.taskId,
|
|
781
|
+
selected = _ref2.selected;
|
|
782
|
+
|
|
783
|
+
if (selected) {
|
|
784
|
+
recursiveOpen(taskId, tasks);
|
|
785
|
+
var descendants = getDescendants(taskId, tasks);
|
|
786
|
+
newSelected.add(taskId);
|
|
787
|
+
descendants.forEach(function (d) {
|
|
788
|
+
return newSelected.add(d);
|
|
789
|
+
});
|
|
790
|
+
} else {
|
|
791
|
+
var _descendants = getDescendants(taskId, tasks);
|
|
757
792
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
});
|
|
763
|
-
} else {
|
|
764
|
-
setSelectedTasks(function (prev) {
|
|
765
|
-
return prev.filter(function (id) {
|
|
766
|
-
return id !== taskId;
|
|
793
|
+
newSelected["delete"](taskId);
|
|
794
|
+
|
|
795
|
+
_descendants.forEach(function (d) {
|
|
796
|
+
return newSelected["delete"](d);
|
|
767
797
|
});
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
setSelectedTasks(Array.from(newSelected));
|
|
801
|
+
setPendingTaskSelect([]);
|
|
802
|
+
}, [pendingTaskSelect]);
|
|
803
|
+
useEffect(function () {
|
|
804
|
+
expandedTasks.current = expandedTasks.current.filter(function (id) {
|
|
805
|
+
var t = tasks.find(function (task) {
|
|
806
|
+
return task.id === id;
|
|
768
807
|
});
|
|
808
|
+
return t && !t.hideChildren;
|
|
809
|
+
});
|
|
810
|
+
if (selectedTasks.length === 0) return;
|
|
811
|
+
var newSelected = new Set();
|
|
812
|
+
selectedTasks.forEach(function (taskId) {
|
|
813
|
+
if (tasks.find(function (t) {
|
|
814
|
+
return t.id === taskId;
|
|
815
|
+
})) {
|
|
816
|
+
recursiveOpen(taskId, tasks);
|
|
817
|
+
newSelected.add(taskId);
|
|
818
|
+
var descendants = getDescendants(taskId, tasks);
|
|
819
|
+
descendants.forEach(function (d) {
|
|
820
|
+
return newSelected.add(d);
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
var newSelectedArray = Array.from(newSelected);
|
|
825
|
+
|
|
826
|
+
if (JSON.stringify(newSelectedArray) !== JSON.stringify(selectedTasks)) {
|
|
827
|
+
setSelectedTasks(newSelectedArray);
|
|
769
828
|
}
|
|
829
|
+
}, [tasks.length]);
|
|
830
|
+
|
|
831
|
+
var getDescendants = function getDescendants(taskId, allTasks) {
|
|
832
|
+
var task = allTasks.find(function (t) {
|
|
833
|
+
return t.id === taskId;
|
|
834
|
+
});
|
|
835
|
+
if (!task) return [];
|
|
836
|
+
var children = allTasks.filter(function (t) {
|
|
837
|
+
return getParentWbs(t.id) === taskId;
|
|
838
|
+
});
|
|
839
|
+
return children.flatMap(function (child) {
|
|
840
|
+
return [child.id].concat(getDescendants(child.id, allTasks));
|
|
841
|
+
});
|
|
842
|
+
};
|
|
843
|
+
|
|
844
|
+
var recursiveOpen = function recursiveOpen(taskId, allTasks) {
|
|
845
|
+
var task = allTasks.find(function (t) {
|
|
846
|
+
return t.id === taskId;
|
|
847
|
+
});
|
|
848
|
+
if (!task) return;
|
|
849
|
+
|
|
850
|
+
if (!expandedTasks.current.includes(taskId) && task.hideChildren) {
|
|
851
|
+
onExpanderClick(task);
|
|
852
|
+
expandedTasks.current = [].concat(expandedTasks.current, [taskId]);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
var children = allTasks.filter(function (t) {
|
|
856
|
+
return getParentWbs(t.id) === taskId;
|
|
857
|
+
});
|
|
858
|
+
children.forEach(function (c) {
|
|
859
|
+
return recursiveOpen(c.id, allTasks);
|
|
860
|
+
});
|
|
861
|
+
};
|
|
862
|
+
|
|
863
|
+
var handleTaskSelect = function handleTaskSelect(taskId, selected) {
|
|
864
|
+
setPendingTaskSelect(function (prev) {
|
|
865
|
+
return [].concat(prev, [{
|
|
866
|
+
taskId: taskId,
|
|
867
|
+
selected: selected
|
|
868
|
+
}]);
|
|
869
|
+
});
|
|
770
870
|
};
|
|
771
871
|
|
|
772
872
|
var handleSelectAll = function handleSelectAll(selected) {
|
|
773
873
|
if (selected) {
|
|
774
|
-
|
|
775
|
-
return task.id;
|
|
874
|
+
var topLevelTasks = tasks.filter(function (task) {
|
|
875
|
+
return !getParentWbs(task.id);
|
|
876
|
+
});
|
|
877
|
+
setPendingTaskSelect(topLevelTasks.map(function (task) {
|
|
878
|
+
return {
|
|
879
|
+
taskId: task.id,
|
|
880
|
+
selected: true
|
|
881
|
+
};
|
|
776
882
|
}));
|
|
777
883
|
} else {
|
|
778
884
|
setSelectedTasks([]);
|
|
885
|
+
setPendingTaskSelect([]);
|
|
779
886
|
}
|
|
780
887
|
};
|
|
781
888
|
|
|
@@ -3497,6 +3604,11 @@ function colorPath(path, color, tasks, criticalPathType) {
|
|
|
3497
3604
|
_loop(_i7);
|
|
3498
3605
|
}
|
|
3499
3606
|
}
|
|
3607
|
+
var getParentWbs = function getParentWbs(wbs) {
|
|
3608
|
+
var segments = wbs.split('.');
|
|
3609
|
+
if (segments.length <= 1) return undefined;
|
|
3610
|
+
return segments.slice(0, -1).join('.');
|
|
3611
|
+
};
|
|
3500
3612
|
|
|
3501
3613
|
export { Gantt, ViewMode, getCriticalPaths };
|
|
3502
3614
|
//# sourceMappingURL=index.modern.js.map
|