gantt-task-react-powern 0.4.25 → 0.4.27

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.
@@ -2746,58 +2746,109 @@ var Gantt = function Gantt(_ref) {
2746
2746
  }
2747
2747
  };
2748
2748
 
2749
+ function topologicalOrderingHelper(taskID, taskMap, sortedTaskList) {
2750
+ if (!taskMap[taskID]) return false;
2751
+ if (taskMap[taskID].finished) return true;
2752
+ if (taskMap[taskID].started) return false;
2753
+ taskMap[taskID].started = true;
2754
+ var task = taskMap[taskID].task;
2755
+ if (task.dependencies) for (var i = 0; i < task.dependencies.length; i++) {
2756
+ var successVal = topologicalOrderingHelper(task.dependencies[i], taskMap, sortedTaskList);
2757
+ if (!successVal) return false;
2758
+ }
2759
+ taskMap[taskID].finished = true;
2760
+ sortedTaskList.push(taskID);
2761
+ return true;
2762
+ }
2763
+
2749
2764
  function getCriticalPaths(leafTasks) {
2750
- var _leafTasks$reduce = leafTasks.reduce(function (_ref2, leafTask) {
2751
- var primaryPath = _ref2[0],
2752
- secondaryPath = _ref2[1],
2753
- primaryDuration = _ref2[2],
2754
- secondaryDuration = _ref2[3];
2755
- var newPath = criticalPath(leafTask, leafTasks);
2756
- var newDuration = computeDuration(newPath);
2757
- if (newDuration <= secondaryDuration) return [primaryPath, secondaryPath, primaryDuration, secondaryDuration];
2758
-
2759
- if (newDuration > primaryDuration) {
2760
- var _primaryPath$;
2761
-
2762
- if (((_primaryPath$ = primaryPath[0]) === null || _primaryPath$ === void 0 ? void 0 : _primaryPath$.id) !== newPath[0].id) return [newPath, primaryPath, newDuration, primaryDuration];else return [newPath, secondaryPath, newDuration, secondaryDuration];
2763
- } else {
2764
- var _primaryPath$2;
2765
+ var taskMap = {};
2765
2766
 
2766
- if (((_primaryPath$2 = primaryPath[0]) === null || _primaryPath$2 === void 0 ? void 0 : _primaryPath$2.id) !== newPath[0].id) return [primaryPath, newPath, primaryDuration, newDuration];else return [primaryPath, secondaryPath, primaryDuration, secondaryDuration];
2767
+ for (var i = 0; i < leafTasks.length; i++) {
2768
+ taskMap[leafTasks[i].id] = {
2769
+ task: leafTasks[i]
2770
+ };
2771
+ }
2772
+
2773
+ for (var _i = 0; _i < leafTasks.length; _i++) {
2774
+ taskMap[leafTasks[_i].id].dependents = [];
2775
+ }
2776
+
2777
+ for (var _i2 = 0; _i2 < leafTasks.length; _i2++) {
2778
+ var task = leafTasks[_i2];
2779
+ if (task.dependencies) for (var j = 0; j < task.dependencies.length; j++) {
2780
+ taskMap[task.dependencies[j]].dependents.push(task.id);
2767
2781
  }
2768
- }, [[], [], 0, 0]),
2769
- primaryPath = _leafTasks$reduce[0],
2770
- secondaryPath = _leafTasks$reduce[1];
2782
+ }
2771
2783
 
2772
- return [primaryPath, secondaryPath];
2773
- }
2784
+ var sortedTaskList = [];
2774
2785
 
2775
- function computeDuration(path) {
2776
- return path.length ? path[path.length - 1].end.getTime() - path[0].start.getTime() : 0;
2777
- }
2786
+ for (var _i3 = 0; _i3 < leafTasks.length; _i3++) {
2787
+ var successVal = topologicalOrderingHelper(leafTasks[_i3].id, taskMap, sortedTaskList);
2788
+ if (!successVal) return [[], []];
2789
+ }
2778
2790
 
2779
- function criticalPath(task, tasks) {
2780
- var _task$dependencies;
2791
+ for (var _i4 = sortedTaskList.length - 1; _i4 >= 0; _i4--) {
2792
+ computeCriticalPath(sortedTaskList[_i4], taskMap);
2793
+ }
2781
2794
 
2782
- if (!task) {
2783
- return [];
2795
+ var primaryLeaf;
2796
+ var primaryDuration = 0;
2797
+
2798
+ for (var _i5 = 0; _i5 < sortedTaskList.length; _i5++) {
2799
+ var newDuration = taskMap[sortedTaskList[_i5]].end - taskMap[sortedTaskList[_i5]].task.start.getTime();
2800
+
2801
+ if (primaryDuration < newDuration) {
2802
+ primaryLeaf = sortedTaskList[_i5];
2803
+ primaryDuration = newDuration;
2804
+ }
2784
2805
  }
2785
2806
 
2786
- if (!task.dependencies) return [task];
2807
+ var primaryPath = [];
2787
2808
 
2788
- var _task$dependencies$re = (_task$dependencies = task.dependencies) === null || _task$dependencies === void 0 ? void 0 : _task$dependencies.reduce(function (_ref3, dependencyTaskId) {
2789
- var longestPath = _ref3[0],
2790
- longestDuration = _ref3[1];
2791
- var dependencyTask = tasks.find(function (otherTask) {
2792
- return otherTask.id === dependencyTaskId;
2793
- });
2794
- var dependencyPath = criticalPath(dependencyTask, tasks);
2795
- var dependencyDuration = computeDuration(dependencyPath);
2796
- if (dependencyDuration > longestDuration) return [dependencyPath, dependencyDuration];else return [longestPath, longestDuration];
2797
- }, [[], 0]),
2798
- longestPath = _task$dependencies$re[0];
2809
+ while (primaryLeaf) {
2810
+ taskMap[primaryLeaf].excluded = true;
2811
+ primaryPath.push(taskMap[primaryLeaf].task);
2812
+ primaryLeaf = taskMap[primaryLeaf].next;
2813
+ }
2814
+
2815
+ var secondaryLeaf;
2816
+ var secondaryDuration = 0;
2817
+
2818
+ for (var _i6 = 0; _i6 < sortedTaskList.length; _i6++) {
2819
+ if (taskMap[sortedTaskList[_i6]].excluded) continue;
2799
2820
 
2800
- return [].concat(longestPath, [task]);
2821
+ var _newDuration = taskMap[sortedTaskList[_i6]].end - taskMap[sortedTaskList[_i6]].task.start.getTime();
2822
+
2823
+ if (secondaryDuration < _newDuration) {
2824
+ secondaryLeaf = sortedTaskList[_i6];
2825
+ secondaryDuration = _newDuration;
2826
+ }
2827
+ }
2828
+
2829
+ var secondaryPath = [];
2830
+
2831
+ while (secondaryLeaf) {
2832
+ secondaryPath.push(taskMap[secondaryLeaf].task);
2833
+ secondaryLeaf = taskMap[secondaryLeaf].next;
2834
+ }
2835
+
2836
+ return [primaryPath, secondaryPath];
2837
+ }
2838
+
2839
+ function computeCriticalPath(taskID, taskMap) {
2840
+ var task = taskMap[taskID].task;
2841
+ var dependents = taskMap[taskID].dependents;
2842
+ taskMap[taskID].end = task.end.getTime();
2843
+
2844
+ for (var j = 0; j < dependents.length; j++) {
2845
+ var newDependentEnd = taskMap[dependents[j]].end;
2846
+
2847
+ if (newDependentEnd > taskMap[taskID].end) {
2848
+ taskMap[taskID].next = dependents[j];
2849
+ taskMap[taskID].end = newDependentEnd;
2850
+ }
2851
+ }
2801
2852
  }
2802
2853
 
2803
2854
  function uncolorAll(tasks) {
@@ -2836,21 +2887,21 @@ var Gantt = function Gantt(_ref) {
2836
2887
  }
2837
2888
  }
2838
2889
 
2839
- var _loop = function _loop(_i) {
2840
- var arrows = path[_i].criticalPathArrows;
2890
+ var _loop = function _loop(_i7) {
2891
+ var arrows = path[_i7].criticalPathArrows;
2841
2892
  if (!arrows) arrows = [];
2842
2893
  var arrow = arrows.find(function (arrow) {
2843
- return arrow.taskId === path[_i + 1].id;
2894
+ return arrow.taskId === path[_i7 + 1].id;
2844
2895
  });
2845
2896
  if (arrow) arrow.arrowColor = color;else arrows.push({
2846
- taskId: path[_i + 1].id,
2897
+ taskId: path[_i7 + 1].id,
2847
2898
  arrowColor: color
2848
2899
  });
2849
- path[_i].criticalPathArrows = arrows;
2900
+ path[_i7].criticalPathArrows = arrows;
2850
2901
  };
2851
2902
 
2852
- for (var _i = 0; _i + 1 < path.length; _i++) {
2853
- _loop(_i);
2903
+ for (var _i7 = 0; _i7 + 1 < path.length; _i7++) {
2904
+ _loop(_i7);
2854
2905
  }
2855
2906
  }
2856
2907