gantt-task-react-powern 0.4.96 → 0.4.97
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 +80 -53
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +80 -53
- 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
|
}
|
|
@@ -756,15 +770,54 @@ var TaskList = function TaskList(_ref) {
|
|
|
756
770
|
}
|
|
757
771
|
}, [selectedTasks, tasks, onMultiSelect]);
|
|
758
772
|
|
|
773
|
+
var getDescendants = function getDescendants(taskId, allTasks) {
|
|
774
|
+
var task = allTasks.find(function (t) {
|
|
775
|
+
return t.id === taskId;
|
|
776
|
+
});
|
|
777
|
+
if (!task) return [];
|
|
778
|
+
var children = allTasks.filter(function (t) {
|
|
779
|
+
return getParentWbs(t.id) === taskId;
|
|
780
|
+
});
|
|
781
|
+
return children.flatMap(function (child) {
|
|
782
|
+
return [child.id].concat(getDescendants(child.id, allTasks));
|
|
783
|
+
});
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
var recursiveOpen = function recursiveOpen(taskId, allTasks) {
|
|
787
|
+
var task = allTasks.find(function (t) {
|
|
788
|
+
return t.id === taskId;
|
|
789
|
+
});
|
|
790
|
+
if (!task) return;
|
|
791
|
+
|
|
792
|
+
if (task.hideChildren === true) {
|
|
793
|
+
onExpanderClick(task);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
var children = allTasks.filter(function (t) {
|
|
797
|
+
return getParentWbs(t.id) === taskId;
|
|
798
|
+
});
|
|
799
|
+
children.forEach(function (c) {
|
|
800
|
+
return recursiveOpen(c.id, allTasks);
|
|
801
|
+
});
|
|
802
|
+
};
|
|
803
|
+
|
|
759
804
|
var handleTaskSelect = function handleTaskSelect(taskId, selected) {
|
|
805
|
+
var descendants = getDescendants(taskId, tasks);
|
|
806
|
+
|
|
760
807
|
if (selected) {
|
|
761
808
|
setSelectedTasks(function (prev) {
|
|
762
|
-
|
|
809
|
+
var newSelected = new Set(prev);
|
|
810
|
+
newSelected.add(taskId);
|
|
811
|
+
descendants.forEach(function (d) {
|
|
812
|
+
return newSelected.add(d);
|
|
813
|
+
});
|
|
814
|
+
return Array.from(newSelected);
|
|
763
815
|
});
|
|
816
|
+
recursiveOpen(taskId, tasks);
|
|
764
817
|
} else {
|
|
765
818
|
setSelectedTasks(function (prev) {
|
|
766
819
|
return prev.filter(function (id) {
|
|
767
|
-
return id !== taskId;
|
|
820
|
+
return id !== taskId && !descendants.includes(id);
|
|
768
821
|
});
|
|
769
822
|
});
|
|
770
823
|
}
|
|
@@ -772,9 +825,19 @@ var TaskList = function TaskList(_ref) {
|
|
|
772
825
|
|
|
773
826
|
var handleSelectAll = function handleSelectAll(selected) {
|
|
774
827
|
if (selected) {
|
|
775
|
-
|
|
776
|
-
return task.id;
|
|
777
|
-
})
|
|
828
|
+
var topLevelTasks = tasks.filter(function (task) {
|
|
829
|
+
return !getParentWbs(task.id);
|
|
830
|
+
});
|
|
831
|
+
var newSelected = new Set();
|
|
832
|
+
topLevelTasks.forEach(function (task) {
|
|
833
|
+
newSelected.add(task.id);
|
|
834
|
+
var descendants = getDescendants(task.id, tasks);
|
|
835
|
+
descendants.forEach(function (d) {
|
|
836
|
+
return newSelected.add(d);
|
|
837
|
+
});
|
|
838
|
+
recursiveOpen(task.id, tasks);
|
|
839
|
+
});
|
|
840
|
+
setSelectedTasks(Array.from(newSelected));
|
|
778
841
|
} else {
|
|
779
842
|
setSelectedTasks([]);
|
|
780
843
|
}
|
|
@@ -2020,7 +2083,7 @@ var Bar = function Bar(_ref) {
|
|
|
2020
2083
|
var handleHeight = task.height / 2 - 1;
|
|
2021
2084
|
|
|
2022
2085
|
if (type == "planned") {
|
|
2023
|
-
if ((task === null || task === void 0 ? void 0 : task.x1) >= 0 && (task === null || task === void 0 ? void 0 : task.x2)
|
|
2086
|
+
if ((task === null || task === void 0 ? void 0 : task.x1) >= 0 && (task === null || task === void 0 ? void 0 : task.x2) >= 0) return React__default.createElement("g", {
|
|
2024
2087
|
className: styles$6.barWrapper,
|
|
2025
2088
|
tabIndex: 0
|
|
2026
2089
|
}, React__default.createElement(BarDisplay, {
|
|
@@ -2068,7 +2131,7 @@ var Bar = function Bar(_ref) {
|
|
|
2068
2131
|
className: styles$6.barWrapper,
|
|
2069
2132
|
tabIndex: 0
|
|
2070
2133
|
});
|
|
2071
|
-
} else if ((task === null || task === void 0 ? void 0 : task.actualx1) >= 0 && (task === null || task === void 0 ? void 0 : task.actualx2)
|
|
2134
|
+
} else if ((task === null || task === void 0 ? void 0 : task.actualx1) >= 0 && (task === null || task === void 0 ? void 0 : task.actualx2) >= 0) {
|
|
2072
2135
|
return React__default.createElement("g", {
|
|
2073
2136
|
className: styles$6.barWrapper,
|
|
2074
2137
|
tabIndex: 0
|
|
@@ -3394,7 +3457,6 @@ function getCriticalPaths(leafTasks) {
|
|
|
3394
3457
|
primaryLeaf = taskMap[primaryLeaf].next;
|
|
3395
3458
|
}
|
|
3396
3459
|
|
|
3397
|
-
console.debug(taskMap);
|
|
3398
3460
|
var secondaryLeaf;
|
|
3399
3461
|
var secondaryDuration = 0;
|
|
3400
3462
|
|
|
@@ -3421,54 +3483,14 @@ function getCriticalPaths(leafTasks) {
|
|
|
3421
3483
|
function computeCriticalPath(taskID, taskMap) {
|
|
3422
3484
|
var task = taskMap[taskID].task;
|
|
3423
3485
|
var dependents = taskMap[taskID].dependents;
|
|
3424
|
-
taskMap[taskID].start = task.start.getTime();
|
|
3425
3486
|
taskMap[taskID].end = task.end.getTime();
|
|
3426
|
-
var start = taskMap[taskID].start;
|
|
3427
|
-
|
|
3428
|
-
for (var _iterator = _createForOfIteratorHelperLoose(dependents), _step; !(_step = _iterator()).done;) {
|
|
3429
|
-
var _dependentTask$depend;
|
|
3430
3487
|
|
|
3431
|
-
|
|
3432
|
-
var
|
|
3433
|
-
var dependency = (_dependentTask$depend = dependentTask.dependencies) === null || _dependentTask$depend === void 0 ? void 0 : _dependentTask$depend.find(function (d) {
|
|
3434
|
-
return d.id === taskID;
|
|
3435
|
-
});
|
|
3436
|
-
console.debug(dependency);
|
|
3437
|
-
if (!dependency) continue;
|
|
3438
|
-
|
|
3439
|
-
switch (dependency.type) {
|
|
3440
|
-
case "FS":
|
|
3441
|
-
if (taskMap[depID].end > taskMap[taskID].end) {
|
|
3442
|
-
taskMap[taskID].next = depID;
|
|
3443
|
-
taskMap[taskID].end = taskMap[depID].end;
|
|
3444
|
-
}
|
|
3445
|
-
|
|
3446
|
-
break;
|
|
3447
|
-
|
|
3448
|
-
case "SS":
|
|
3449
|
-
if (taskMap[depID].start > start) {
|
|
3450
|
-
taskMap[taskID].next = depID;
|
|
3451
|
-
start = taskMap[depID].start;
|
|
3452
|
-
taskMap[taskID].end = taskMap[depID].end;
|
|
3453
|
-
}
|
|
3488
|
+
for (var j = 0; j < dependents.length; j++) {
|
|
3489
|
+
var newDependentEnd = taskMap[dependents[j]].end;
|
|
3454
3490
|
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
if (taskMap[depID].end > taskMap[taskID].end) {
|
|
3459
|
-
taskMap[taskID].next = depID;
|
|
3460
|
-
taskMap[taskID].end = taskMap[depID].end;
|
|
3461
|
-
}
|
|
3462
|
-
|
|
3463
|
-
break;
|
|
3464
|
-
|
|
3465
|
-
case "SF":
|
|
3466
|
-
if (taskMap[depID].start > taskMap[taskID].end) {
|
|
3467
|
-
taskMap[taskID].next = depID;
|
|
3468
|
-
taskMap[taskID].end = taskMap[depID].start;
|
|
3469
|
-
}
|
|
3470
|
-
|
|
3471
|
-
break;
|
|
3491
|
+
if (newDependentEnd > taskMap[taskID].end) {
|
|
3492
|
+
taskMap[taskID].next = dependents[j];
|
|
3493
|
+
taskMap[taskID].end = newDependentEnd;
|
|
3472
3494
|
}
|
|
3473
3495
|
}
|
|
3474
3496
|
}
|
|
@@ -3539,6 +3561,11 @@ function colorPath(path, color, tasks, criticalPathType) {
|
|
|
3539
3561
|
_loop(_i7);
|
|
3540
3562
|
}
|
|
3541
3563
|
}
|
|
3564
|
+
var getParentWbs = function getParentWbs(wbs) {
|
|
3565
|
+
var segments = wbs.split('.');
|
|
3566
|
+
if (segments.length <= 1) return undefined;
|
|
3567
|
+
return segments.slice(0, -1).join('.');
|
|
3568
|
+
};
|
|
3542
3569
|
|
|
3543
3570
|
exports.Gantt = Gantt;
|
|
3544
3571
|
exports.getCriticalPaths = getCriticalPaths;
|