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