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