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