gantt-task-react-powern 0.4.33 → 0.4.34

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.
@@ -1,3 +1,8 @@
1
1
  import React from "react";
2
- import { GanttProps } from "../../types/public-types";
2
+ import { GanttProps, Task } from "../../types/public-types";
3
3
  export declare const Gantt: React.FunctionComponent<GanttProps>;
4
+ export declare function topologicalOrderingHelper(taskID: string, taskMap: {}, sortedTaskList: string[]): boolean;
5
+ export declare function getCriticalPaths(leafTasks: Task[]): any[][];
6
+ export declare function computeCriticalPath(taskID: string, taskMap: {}): void;
7
+ export declare function uncolorAll(tasks: Task[]): void;
8
+ export declare function colorPath(path: Task[], color: string, tasks: Task[]): void;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { Gantt } from "./components/gantt/gantt";
2
2
  export { ViewMode } from "./types/public-types";
3
3
  export type { GanttProps, Task, StylingOption, DisplayOption, EventOption, } from "./types/public-types";
4
+ export { getCriticalPaths } from "./components/gantt/gantt";
package/dist/index.js CHANGED
@@ -2394,8 +2394,6 @@ var Gantt = function Gantt(_ref) {
2394
2394
  milestoneBackgroundSelectedColor = _ref$milestoneBackgro2 === void 0 ? "#f29e4c" : _ref$milestoneBackgro2,
2395
2395
  _ref$rtl = _ref.rtl,
2396
2396
  rtl = _ref$rtl === void 0 ? false : _ref$rtl,
2397
- _ref$criticalPathExpa = _ref.criticalPathExpand,
2398
- criticalPathExpand = _ref$criticalPathExpa === void 0 ? true : _ref$criticalPathExpa,
2399
2397
  _ref$handleWidth = _ref.handleWidth,
2400
2398
  handleWidth = _ref$handleWidth === void 0 ? 8 : _ref$handleWidth,
2401
2399
  _ref$timeStep = _ref.timeStep,
@@ -2745,232 +2743,6 @@ var Gantt = function Gantt(_ref) {
2745
2743
  }
2746
2744
  };
2747
2745
 
2748
- React.useEffect(function () {
2749
- var _getCriticalPaths2 = getCriticalPaths(leafTasks),
2750
- primaryPath = _getCriticalPaths2[0];
2751
-
2752
- console.debug("Primary path", primaryPath);
2753
-
2754
- var isCPhidden = function isCPhidden(p) {
2755
- var _tasks$find;
2756
-
2757
- return (_tasks$find = tasks.find(function (t) {
2758
- return t.id === p.id.split(".").slice(0, p.id.split(".").length - 1).join(".");
2759
- })) === null || _tasks$find === void 0 ? void 0 : _tasks$find.hideChildren;
2760
- };
2761
-
2762
- var toggleCP = function toggleCP(p) {
2763
- if (onExpanderClick) {
2764
- (function () {
2765
- var _id = p.id;
2766
- console.debug("toggleCP id ", _id);
2767
-
2768
- for (var i = 0; i < p.id.split(".").length; i++) {
2769
- console.debug("toggleCP id ", _id);
2770
- var t = tasks.find(function (t) {
2771
- return t.id === _id;
2772
- });
2773
-
2774
- if (t) {
2775
- handleExpanderClick(t);
2776
- _id = _id.split(".").slice(0, _id.split(".").length - 1).join(".");
2777
- }
2778
- }
2779
- })();
2780
- }
2781
- };
2782
-
2783
- if (criticalPathExpand) {
2784
- primaryPath.forEach(function (p) {
2785
- if (isCPhidden(p)) {
2786
- console.debug("CP hidden ", p);
2787
- toggleCP(p);
2788
- }
2789
- });
2790
- } else {
2791
- primaryPath.forEach(function (p) {
2792
- if (isCPhidden(p) === false) {
2793
- toggleCP(p);
2794
- }
2795
- });
2796
- }
2797
- }, [criticalPathExpand, leafTasks, tasks]);
2798
-
2799
- function topologicalOrderingHelper(taskID, taskMap, sortedTaskList) {
2800
- if (!taskMap[taskID]) return true;
2801
- if (taskMap[taskID].finished) return true;
2802
-
2803
- if (taskMap[taskID].started) {
2804
- console.log("Cycle involving " + taskID);
2805
- return false;
2806
- }
2807
-
2808
- taskMap[taskID].started = true;
2809
- var task = taskMap[taskID].task;
2810
- if (task.dependencies) for (var i = 0; i < task.dependencies.length; i++) {
2811
- var successVal = topologicalOrderingHelper(task.dependencies[i], taskMap, sortedTaskList);
2812
- if (!successVal) return false;
2813
- }
2814
- taskMap[taskID].finished = true;
2815
- sortedTaskList.push(taskID);
2816
- return true;
2817
- }
2818
-
2819
- function getCriticalPaths(leafTasks) {
2820
- var taskMap = {};
2821
-
2822
- for (var i = 0; i < leafTasks.length; i++) {
2823
- taskMap[leafTasks[i].id] = {
2824
- task: leafTasks[i]
2825
- };
2826
- }
2827
-
2828
- var sortedTaskList = [];
2829
-
2830
- for (var _i = 0; _i < leafTasks.length; _i++) {
2831
- var successVal = topologicalOrderingHelper(leafTasks[_i].id, taskMap, sortedTaskList);
2832
- if (!successVal) return [[], []];
2833
- }
2834
-
2835
- for (var _i2 = 0; _i2 < leafTasks.length; _i2++) {
2836
- taskMap[leafTasks[_i2].id].dependents = [];
2837
- }
2838
-
2839
- for (var _i3 = 0; _i3 < leafTasks.length; _i3++) {
2840
- var task = leafTasks[_i3];
2841
- if (task.dependencies) for (var j = 0; j < task.dependencies.length; j++) {
2842
- var _taskMap$task$depende;
2843
-
2844
- (_taskMap$task$depende = taskMap[task.dependencies[j]]) === null || _taskMap$task$depende === void 0 ? void 0 : _taskMap$task$depende.dependents.push(task.id);
2845
- }
2846
- }
2847
-
2848
- for (var _i4 = sortedTaskList.length - 1; _i4 >= 0; _i4--) {
2849
- computeCriticalPath(sortedTaskList[_i4], taskMap);
2850
- }
2851
-
2852
- var primaryLeaf;
2853
- var primaryDuration = 0;
2854
-
2855
- for (var _i5 = 0; _i5 < sortedTaskList.length; _i5++) {
2856
- var newDuration = taskMap[sortedTaskList[_i5]].end - taskMap[sortedTaskList[_i5]].task.start.getTime();
2857
-
2858
- if (primaryDuration < newDuration) {
2859
- primaryLeaf = sortedTaskList[_i5];
2860
- primaryDuration = newDuration;
2861
- }
2862
- }
2863
-
2864
- var primaryPath = [];
2865
-
2866
- while (primaryLeaf !== undefined) {
2867
- taskMap[primaryLeaf].excluded = true;
2868
- primaryPath.push(taskMap[primaryLeaf].task);
2869
- primaryLeaf = taskMap[primaryLeaf].next;
2870
- }
2871
-
2872
- var secondaryLeaf;
2873
- var secondaryDuration = 0;
2874
-
2875
- for (var _i6 = 0; _i6 < sortedTaskList.length; _i6++) {
2876
- if (taskMap[sortedTaskList[_i6]].excluded) continue;
2877
-
2878
- var _newDuration = taskMap[sortedTaskList[_i6]].end - taskMap[sortedTaskList[_i6]].task.start.getTime();
2879
-
2880
- if (secondaryDuration < _newDuration) {
2881
- secondaryLeaf = sortedTaskList[_i6];
2882
- secondaryDuration = _newDuration;
2883
- }
2884
- }
2885
-
2886
- var secondaryPath = [];
2887
-
2888
- while (secondaryLeaf !== undefined) {
2889
- secondaryPath.push(taskMap[secondaryLeaf].task);
2890
- secondaryLeaf = taskMap[secondaryLeaf].next;
2891
- }
2892
-
2893
- return [primaryPath, secondaryPath];
2894
- }
2895
-
2896
- function computeCriticalPath(taskID, taskMap) {
2897
- var task = taskMap[taskID].task;
2898
- var dependents = taskMap[taskID].dependents;
2899
- taskMap[taskID].end = task.end.getTime();
2900
-
2901
- for (var j = 0; j < dependents.length; j++) {
2902
- var newDependentEnd = taskMap[dependents[j]].end;
2903
-
2904
- if (newDependentEnd > taskMap[taskID].end) {
2905
- taskMap[taskID].next = dependents[j];
2906
- taskMap[taskID].end = newDependentEnd;
2907
- }
2908
- }
2909
- }
2910
-
2911
- function uncolorAll(tasks) {
2912
- tasks.forEach(function (task) {
2913
- if (task.styles) delete task.styles.criticalPathColor;
2914
- delete task.criticalPathArrows;
2915
- });
2916
- }
2917
-
2918
- function colorPath(path, color, tasks) {
2919
- for (var i = 0; i < path.length; i++) {
2920
- var longestIDLength = 0;
2921
- var longestTask = void 0;
2922
-
2923
- for (var j = 0; j < tasks.length; j++) {
2924
- if (path[i].id === tasks[j].id) {
2925
- longestTask = tasks[j];
2926
- break;
2927
- }
2928
-
2929
- if (path[i].id.startsWith(tasks[j].id + ".") && tasks[j].id.length > longestIDLength) {
2930
- longestIDLength = tasks[j].id.length;
2931
- longestTask = tasks[j];
2932
- }
2933
- }
2934
-
2935
- if (longestTask) {
2936
- var _longestTask$styles;
2937
-
2938
- var _styles = (_longestTask$styles = longestTask.styles) != null ? _longestTask$styles : {};
2939
-
2940
- _styles.criticalPathColor = color;
2941
- longestTask.styles = _styles;
2942
- }
2943
- }
2944
-
2945
- var _loop = function _loop(_i7) {
2946
- var taskFromTasks = void 0;
2947
-
2948
- for (var _j = 0; _j < tasks.length; _j++) {
2949
- if (path[_i7].id === tasks[_j].id) {
2950
- taskFromTasks = tasks[_j];
2951
- break;
2952
- }
2953
- }
2954
-
2955
- if (taskFromTasks) {
2956
- var arrows = taskFromTasks.criticalPathArrows;
2957
- if (!arrows) arrows = [];
2958
- var arrow = arrows.find(function (arrow) {
2959
- return arrow.taskId === path[_i7 + 1].id;
2960
- });
2961
- if (arrow) arrow.arrowColor = color;else arrows.push({
2962
- taskId: path[_i7 + 1].id,
2963
- arrowColor: color
2964
- });
2965
- taskFromTasks.criticalPathArrows = arrows;
2966
- }
2967
- };
2968
-
2969
- for (var _i7 = 0; _i7 + 1 < path.length; _i7++) {
2970
- _loop(_i7);
2971
- }
2972
- }
2973
-
2974
2746
  var gridProps = {
2975
2747
  columnWidth: columnWidth,
2976
2748
  svgWidth: svgWidth,
@@ -3077,6 +2849,177 @@ var Gantt = function Gantt(_ref) {
3077
2849
  onScroll: handleScrollX
3078
2850
  }));
3079
2851
  };
2852
+ function topologicalOrderingHelper(taskID, taskMap, sortedTaskList) {
2853
+ if (!taskMap[taskID]) return true;
2854
+ if (taskMap[taskID].finished) return true;
2855
+
2856
+ if (taskMap[taskID].started) {
2857
+ console.log("Cycle involving " + taskID);
2858
+ return false;
2859
+ }
2860
+
2861
+ taskMap[taskID].started = true;
2862
+ var task = taskMap[taskID].task;
2863
+ if (task.dependencies) for (var i = 0; i < task.dependencies.length; i++) {
2864
+ var successVal = topologicalOrderingHelper(task.dependencies[i], taskMap, sortedTaskList);
2865
+ if (!successVal) return false;
2866
+ }
2867
+ taskMap[taskID].finished = true;
2868
+ sortedTaskList.push(taskID);
2869
+ return true;
2870
+ }
2871
+ function getCriticalPaths(leafTasks) {
2872
+ var taskMap = {};
2873
+
2874
+ for (var i = 0; i < leafTasks.length; i++) {
2875
+ taskMap[leafTasks[i].id] = {
2876
+ task: leafTasks[i]
2877
+ };
2878
+ }
2879
+
2880
+ var sortedTaskList = [];
2881
+
2882
+ for (var _i = 0; _i < leafTasks.length; _i++) {
2883
+ var successVal = topologicalOrderingHelper(leafTasks[_i].id, taskMap, sortedTaskList);
2884
+ if (!successVal) return [[], []];
2885
+ }
2886
+
2887
+ for (var _i2 = 0; _i2 < leafTasks.length; _i2++) {
2888
+ taskMap[leafTasks[_i2].id].dependents = [];
2889
+ }
2890
+
2891
+ for (var _i3 = 0; _i3 < leafTasks.length; _i3++) {
2892
+ var task = leafTasks[_i3];
2893
+ if (task.dependencies) for (var j = 0; j < task.dependencies.length; j++) {
2894
+ var _taskMap$task$depende;
2895
+
2896
+ (_taskMap$task$depende = taskMap[task.dependencies[j]]) === null || _taskMap$task$depende === void 0 ? void 0 : _taskMap$task$depende.dependents.push(task.id);
2897
+ }
2898
+ }
2899
+
2900
+ for (var _i4 = sortedTaskList.length - 1; _i4 >= 0; _i4--) {
2901
+ computeCriticalPath(sortedTaskList[_i4], taskMap);
2902
+ }
2903
+
2904
+ var primaryLeaf;
2905
+ var primaryDuration = 0;
2906
+
2907
+ for (var _i5 = 0; _i5 < sortedTaskList.length; _i5++) {
2908
+ var newDuration = taskMap[sortedTaskList[_i5]].end - taskMap[sortedTaskList[_i5]].task.start.getTime();
2909
+
2910
+ if (primaryDuration < newDuration) {
2911
+ primaryLeaf = sortedTaskList[_i5];
2912
+ primaryDuration = newDuration;
2913
+ }
2914
+ }
2915
+
2916
+ var primaryPath = [];
2917
+
2918
+ while (primaryLeaf !== undefined) {
2919
+ taskMap[primaryLeaf].excluded = true;
2920
+ primaryPath.push(taskMap[primaryLeaf].task);
2921
+ primaryLeaf = taskMap[primaryLeaf].next;
2922
+ }
2923
+
2924
+ var secondaryLeaf;
2925
+ var secondaryDuration = 0;
2926
+
2927
+ for (var _i6 = 0; _i6 < sortedTaskList.length; _i6++) {
2928
+ if (taskMap[sortedTaskList[_i6]].excluded) continue;
2929
+
2930
+ var _newDuration = taskMap[sortedTaskList[_i6]].end - taskMap[sortedTaskList[_i6]].task.start.getTime();
2931
+
2932
+ if (secondaryDuration < _newDuration) {
2933
+ secondaryLeaf = sortedTaskList[_i6];
2934
+ secondaryDuration = _newDuration;
2935
+ }
2936
+ }
2937
+
2938
+ var secondaryPath = [];
2939
+
2940
+ while (secondaryLeaf !== undefined) {
2941
+ secondaryPath.push(taskMap[secondaryLeaf].task);
2942
+ secondaryLeaf = taskMap[secondaryLeaf].next;
2943
+ }
2944
+
2945
+ return [primaryPath, secondaryPath];
2946
+ }
2947
+ function computeCriticalPath(taskID, taskMap) {
2948
+ var task = taskMap[taskID].task;
2949
+ var dependents = taskMap[taskID].dependents;
2950
+ taskMap[taskID].end = task.end.getTime();
2951
+
2952
+ for (var j = 0; j < dependents.length; j++) {
2953
+ var newDependentEnd = taskMap[dependents[j]].end;
2954
+
2955
+ if (newDependentEnd > taskMap[taskID].end) {
2956
+ taskMap[taskID].next = dependents[j];
2957
+ taskMap[taskID].end = newDependentEnd;
2958
+ }
2959
+ }
2960
+ }
2961
+ function uncolorAll(tasks) {
2962
+ tasks.forEach(function (task) {
2963
+ if (task.styles) delete task.styles.criticalPathColor;
2964
+ delete task.criticalPathArrows;
2965
+ });
2966
+ }
2967
+ function colorPath(path, color, tasks) {
2968
+ for (var i = 0; i < path.length; i++) {
2969
+ var longestIDLength = 0;
2970
+ var longestTask = void 0;
2971
+
2972
+ for (var j = 0; j < tasks.length; j++) {
2973
+ if (path[i].id === tasks[j].id) {
2974
+ longestTask = tasks[j];
2975
+ break;
2976
+ }
2977
+
2978
+ if (path[i].id.startsWith(tasks[j].id + ".") && tasks[j].id.length > longestIDLength) {
2979
+ longestIDLength = tasks[j].id.length;
2980
+ longestTask = tasks[j];
2981
+ }
2982
+ }
2983
+
2984
+ if (longestTask) {
2985
+ var _longestTask$styles;
2986
+
2987
+ var _styles = (_longestTask$styles = longestTask.styles) != null ? _longestTask$styles : {};
2988
+
2989
+ _styles.criticalPathColor = color;
2990
+ longestTask.styles = _styles;
2991
+ }
2992
+ }
2993
+
2994
+ var _loop = function _loop(_i7) {
2995
+ var taskFromTasks = void 0;
2996
+
2997
+ for (var _j = 0; _j < tasks.length; _j++) {
2998
+ if (path[_i7].id === tasks[_j].id) {
2999
+ taskFromTasks = tasks[_j];
3000
+ break;
3001
+ }
3002
+ }
3003
+
3004
+ if (taskFromTasks) {
3005
+ var arrows = taskFromTasks.criticalPathArrows;
3006
+ if (!arrows) arrows = [];
3007
+ var arrow = arrows.find(function (arrow) {
3008
+ return arrow.taskId === path[_i7 + 1].id;
3009
+ });
3010
+ if (arrow) arrow.arrowColor = color;else arrows.push({
3011
+ taskId: path[_i7 + 1].id,
3012
+ arrowColor: color
3013
+ });
3014
+ taskFromTasks.criticalPathArrows = arrows;
3015
+ }
3016
+ };
3017
+
3018
+ for (var _i7 = 0; _i7 + 1 < path.length; _i7++) {
3019
+ _loop(_i7);
3020
+ }
3021
+ }
3080
3022
 
3081
3023
  exports.Gantt = Gantt;
3024
+ exports.getCriticalPaths = getCriticalPaths;
3082
3025
  //# sourceMappingURL=index.js.map