gantt-task-react-v 1.4.2 → 1.4.3
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/other/arrow.d.ts +4 -0
- package/dist/gantt-task-react.es.js +107 -25
- package/dist/gantt-task-react.umd.js +107 -25
- package/dist/style.css +12 -8
- package/package.json +1 -1
|
@@ -17,6 +17,10 @@ type ArrowProps = {
|
|
|
17
17
|
isCritical: boolean;
|
|
18
18
|
rtl: boolean;
|
|
19
19
|
onArrowDoubleClick?: (taskFrom: Task, taskTo: Task) => void;
|
|
20
|
+
fromConnectionIndex?: number;
|
|
21
|
+
fromTotalConnections?: number;
|
|
22
|
+
toConnectionIndex?: number;
|
|
23
|
+
toTotalConnections?: number;
|
|
20
24
|
};
|
|
21
25
|
export declare const Arrow: React.NamedExoticComponent<ArrowProps>;
|
|
22
26
|
export {};
|
|
@@ -11727,9 +11727,9 @@ const generateTrianglePoints = (x, y, width, isLeftDirected) => {
|
|
|
11727
11727
|
${x - width},${y - width}
|
|
11728
11728
|
${x - width},${y + width}`;
|
|
11729
11729
|
};
|
|
11730
|
-
const arrow_clickable = "
|
|
11731
|
-
const mainPath = "
|
|
11732
|
-
const clickZone = "
|
|
11730
|
+
const arrow_clickable = "_arrow_clickable_m4fqb_1";
|
|
11731
|
+
const mainPath = "_mainPath_m4fqb_11";
|
|
11732
|
+
const clickZone = "_clickZone_m4fqb_57";
|
|
11733
11733
|
const styles$a = {
|
|
11734
11734
|
arrow_clickable,
|
|
11735
11735
|
mainPath,
|
|
@@ -11752,7 +11752,11 @@ const ArrowInner = (props) => {
|
|
|
11752
11752
|
taskHeight,
|
|
11753
11753
|
isCritical,
|
|
11754
11754
|
rtl,
|
|
11755
|
-
onArrowDoubleClick = void 0
|
|
11755
|
+
onArrowDoubleClick = void 0,
|
|
11756
|
+
fromConnectionIndex = 0,
|
|
11757
|
+
fromTotalConnections = 1,
|
|
11758
|
+
toConnectionIndex = 0,
|
|
11759
|
+
toTotalConnections = 1
|
|
11756
11760
|
} = props;
|
|
11757
11761
|
const indexFrom = useMemo(
|
|
11758
11762
|
() => Math.floor(fromY / fullRowHeight),
|
|
@@ -11781,7 +11785,11 @@ const ArrowInner = (props) => {
|
|
|
11781
11785
|
targetTo === "startOfTask" !== rtl,
|
|
11782
11786
|
fullRowHeight,
|
|
11783
11787
|
taskHeight,
|
|
11784
|
-
arrowIndent
|
|
11788
|
+
arrowIndent,
|
|
11789
|
+
fromConnectionIndex,
|
|
11790
|
+
fromTotalConnections,
|
|
11791
|
+
toConnectionIndex,
|
|
11792
|
+
toTotalConnections
|
|
11785
11793
|
),
|
|
11786
11794
|
[
|
|
11787
11795
|
indexFrom,
|
|
@@ -11797,7 +11805,11 @@ const ArrowInner = (props) => {
|
|
|
11797
11805
|
rtl,
|
|
11798
11806
|
fullRowHeight,
|
|
11799
11807
|
taskHeight,
|
|
11800
|
-
arrowIndent
|
|
11808
|
+
arrowIndent,
|
|
11809
|
+
fromConnectionIndex,
|
|
11810
|
+
fromTotalConnections,
|
|
11811
|
+
toConnectionIndex,
|
|
11812
|
+
toTotalConnections
|
|
11801
11813
|
]
|
|
11802
11814
|
);
|
|
11803
11815
|
const color = useMemo(() => {
|
|
@@ -11851,31 +11863,46 @@ const roundedPath = (points, radius) => {
|
|
|
11851
11863
|
d += ` L ${last[0]} ${last[1]}`;
|
|
11852
11864
|
return d;
|
|
11853
11865
|
};
|
|
11854
|
-
const ARROW_CORNER_RADIUS =
|
|
11855
|
-
const
|
|
11866
|
+
const ARROW_CORNER_RADIUS = 8;
|
|
11867
|
+
const MAX_EXTRA_INDENT = 20;
|
|
11868
|
+
const CONNECTION_SPREAD_RATIO = 0.35;
|
|
11869
|
+
const MAX_CORRIDOR_SPREAD = 20;
|
|
11870
|
+
const drownPathAndTriangle = (indexForm, fromX1, fromX2, fromY, isTaskFromLeftSide, indexTo, toX1, toX2, toY, isTaskToLeftSide, fullRowHeight, taskHeight, arrowIndent, fromConnectionIndex, fromTotalConnections, toConnectionIndex, toTotalConnections) => {
|
|
11856
11871
|
const isDownDirected = indexTo > indexForm;
|
|
11857
|
-
const
|
|
11858
|
-
|
|
11859
|
-
);
|
|
11860
|
-
const
|
|
11861
|
-
const
|
|
11862
|
-
const
|
|
11863
|
-
const
|
|
11864
|
-
const
|
|
11865
|
-
const
|
|
11872
|
+
const fromVertOffset = fromTotalConnections <= 1 ? 0 : (fromConnectionIndex / (fromTotalConnections - 1) - 0.5) * taskHeight * CONNECTION_SPREAD_RATIO;
|
|
11873
|
+
const toVertOffset = toTotalConnections <= 1 ? 0 : (toConnectionIndex / (toTotalConnections - 1) - 0.5) * taskHeight * CONNECTION_SPREAD_RATIO;
|
|
11874
|
+
const fromIndentSpacing = fromTotalConnections <= 1 ? 0 : MAX_EXTRA_INDENT / (fromTotalConnections - 1);
|
|
11875
|
+
const toIndentSpacing = toTotalConnections <= 1 ? 0 : MAX_EXTRA_INDENT / (toTotalConnections - 1);
|
|
11876
|
+
const fromIndent = arrowIndent + fromConnectionIndex * fromIndentSpacing;
|
|
11877
|
+
const toIndent = arrowIndent + toConnectionIndex * toIndentSpacing;
|
|
11878
|
+
const corridorHash = (fromConnectionIndex * 7 + toConnectionIndex * 13) % 11 / 10;
|
|
11879
|
+
const corridorSpread = Math.min(fullRowHeight * 0.35, MAX_CORRIDOR_SPREAD);
|
|
11880
|
+
const corridorOffset = (corridorHash - 0.5) * corridorSpread;
|
|
11881
|
+
const horizontalDockingY = isDownDirected ? (indexForm + 1) * fullRowHeight + corridorOffset : indexForm * fullRowHeight + corridorOffset;
|
|
11882
|
+
const taskFromEndPositionX = isTaskFromLeftSide ? fromX1 - fromIndent : fromX2 + fromIndent;
|
|
11883
|
+
const taskToEndPositionX = isTaskToLeftSide ? toX1 - toIndent : toX2 + toIndent;
|
|
11866
11884
|
const startX = isTaskFromLeftSide ? fromX1 : fromX2;
|
|
11867
|
-
const startY = fromY + taskHeight / 2;
|
|
11885
|
+
const startY = fromY + taskHeight / 2 + fromVertOffset;
|
|
11868
11886
|
const endX = isTaskToLeftSide ? toX1 : toX2;
|
|
11869
|
-
const
|
|
11887
|
+
const endY = toY + taskHeight / 2 + toVertOffset;
|
|
11888
|
+
const rawWaypoints = [
|
|
11870
11889
|
[startX, startY],
|
|
11871
11890
|
[taskFromEndPositionX, startY],
|
|
11872
11891
|
[taskFromEndPositionX, horizontalDockingY],
|
|
11873
11892
|
[taskToEndPositionX, horizontalDockingY],
|
|
11874
|
-
[taskToEndPositionX,
|
|
11875
|
-
[endX,
|
|
11893
|
+
[taskToEndPositionX, endY],
|
|
11894
|
+
[endX, endY]
|
|
11876
11895
|
];
|
|
11896
|
+
const waypoints = [rawWaypoints[0]];
|
|
11897
|
+
for (let i = 1; i < rawWaypoints.length; i++) {
|
|
11898
|
+
const prev = waypoints[waypoints.length - 1];
|
|
11899
|
+
const curr = rawWaypoints[i];
|
|
11900
|
+
if (Math.abs(curr[0] - prev[0]) > 0.5 || Math.abs(curr[1] - prev[1]) > 0.5) {
|
|
11901
|
+
waypoints.push(curr);
|
|
11902
|
+
}
|
|
11903
|
+
}
|
|
11877
11904
|
const path = roundedPath(waypoints, ARROW_CORNER_RADIUS);
|
|
11878
|
-
const trianglePoints = isTaskToLeftSide ? generateTrianglePoints(toX1,
|
|
11905
|
+
const trianglePoints = isTaskToLeftSide ? generateTrianglePoints(toX1, endY, 5, false) : generateTrianglePoints(toX2, endY, 5, true);
|
|
11879
11906
|
return [path, trianglePoints];
|
|
11880
11907
|
};
|
|
11881
11908
|
const relationLine = "_relationLine_wh2qy_1";
|
|
@@ -13174,6 +13201,31 @@ const TaskGanttContentInner = (props) => {
|
|
|
13174
13201
|
taskById.set(task.id, task);
|
|
13175
13202
|
}
|
|
13176
13203
|
});
|
|
13204
|
+
const connectionTotals = /* @__PURE__ */ new Map();
|
|
13205
|
+
for (const [, dependenciesByLevel] of dependencyMap) {
|
|
13206
|
+
for (const [taskId, dependencies] of dependenciesByLevel) {
|
|
13207
|
+
for (const dep of dependencies) {
|
|
13208
|
+
if (!visibleTasksMirror[dep.source.id])
|
|
13209
|
+
continue;
|
|
13210
|
+
const sourceKey = `${dep.source.id}|${dep.sourceTarget}|out`;
|
|
13211
|
+
connectionTotals.set(
|
|
13212
|
+
sourceKey,
|
|
13213
|
+
(connectionTotals.get(sourceKey) || 0) + 1
|
|
13214
|
+
);
|
|
13215
|
+
const targetKey = `${taskId}|${dep.ownTarget}|in`;
|
|
13216
|
+
connectionTotals.set(
|
|
13217
|
+
targetKey,
|
|
13218
|
+
(connectionTotals.get(targetKey) || 0) + 1
|
|
13219
|
+
);
|
|
13220
|
+
}
|
|
13221
|
+
}
|
|
13222
|
+
}
|
|
13223
|
+
const connectionIndices = /* @__PURE__ */ new Map();
|
|
13224
|
+
const getConnectionIndex = (key2) => {
|
|
13225
|
+
const idx = connectionIndices.get(key2) || 0;
|
|
13226
|
+
connectionIndices.set(key2, idx + 1);
|
|
13227
|
+
return idx;
|
|
13228
|
+
};
|
|
13177
13229
|
const addedSelectedTasks = {};
|
|
13178
13230
|
const addedDependencies = {};
|
|
13179
13231
|
for (let index2 = start; index2 <= end; ++index2) {
|
|
@@ -13383,7 +13435,17 @@ const TaskGanttContentInner = (props) => {
|
|
|
13383
13435
|
taskHeight,
|
|
13384
13436
|
isCritical: isCritical2,
|
|
13385
13437
|
rtl,
|
|
13386
|
-
onArrowDoubleClick
|
|
13438
|
+
onArrowDoubleClick,
|
|
13439
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13440
|
+
`${source.id}|${sourceTarget}|out`
|
|
13441
|
+
),
|
|
13442
|
+
fromTotalConnections: connectionTotals.get(
|
|
13443
|
+
`${source.id}|${sourceTarget}|out`
|
|
13444
|
+
) || 1,
|
|
13445
|
+
toConnectionIndex: getConnectionIndex(
|
|
13446
|
+
`${taskId}|${ownTarget}|in`
|
|
13447
|
+
),
|
|
13448
|
+
toTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|in`) || 1
|
|
13387
13449
|
}
|
|
13388
13450
|
)
|
|
13389
13451
|
},
|
|
@@ -13457,7 +13519,17 @@ const TaskGanttContentInner = (props) => {
|
|
|
13457
13519
|
taskHeight,
|
|
13458
13520
|
isCritical: isCritical2,
|
|
13459
13521
|
rtl,
|
|
13460
|
-
onArrowDoubleClick
|
|
13522
|
+
onArrowDoubleClick,
|
|
13523
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13524
|
+
`${taskId}|${ownTarget}|out`
|
|
13525
|
+
),
|
|
13526
|
+
fromTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|out`) || 1,
|
|
13527
|
+
toConnectionIndex: getConnectionIndex(
|
|
13528
|
+
`${dependent.id}|${dependentTarget}|in`
|
|
13529
|
+
),
|
|
13530
|
+
toTotalConnections: connectionTotals.get(
|
|
13531
|
+
`${dependent.id}|${dependentTarget}|in`
|
|
13532
|
+
) || 1
|
|
13461
13533
|
}
|
|
13462
13534
|
)
|
|
13463
13535
|
},
|
|
@@ -13544,7 +13616,17 @@ const TaskGanttContentInner = (props) => {
|
|
|
13544
13616
|
taskHeight,
|
|
13545
13617
|
isCritical,
|
|
13546
13618
|
rtl,
|
|
13547
|
-
onArrowDoubleClick
|
|
13619
|
+
onArrowDoubleClick,
|
|
13620
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13621
|
+
`${source.id}|${sourceTarget}|out`
|
|
13622
|
+
),
|
|
13623
|
+
fromTotalConnections: connectionTotals.get(
|
|
13624
|
+
`${source.id}|${sourceTarget}|out`
|
|
13625
|
+
) || 1,
|
|
13626
|
+
toConnectionIndex: getConnectionIndex(
|
|
13627
|
+
`${taskId}|${ownTarget}|in`
|
|
13628
|
+
),
|
|
13629
|
+
toTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|in`) || 1
|
|
13548
13630
|
}
|
|
13549
13631
|
)
|
|
13550
13632
|
},
|
|
@@ -11744,9 +11744,9 @@
|
|
|
11744
11744
|
${x - width},${y - width}
|
|
11745
11745
|
${x - width},${y + width}`;
|
|
11746
11746
|
};
|
|
11747
|
-
const arrow_clickable = "
|
|
11748
|
-
const mainPath = "
|
|
11749
|
-
const clickZone = "
|
|
11747
|
+
const arrow_clickable = "_arrow_clickable_m4fqb_1";
|
|
11748
|
+
const mainPath = "_mainPath_m4fqb_11";
|
|
11749
|
+
const clickZone = "_clickZone_m4fqb_57";
|
|
11750
11750
|
const styles$a = {
|
|
11751
11751
|
arrow_clickable,
|
|
11752
11752
|
mainPath,
|
|
@@ -11769,7 +11769,11 @@
|
|
|
11769
11769
|
taskHeight,
|
|
11770
11770
|
isCritical,
|
|
11771
11771
|
rtl,
|
|
11772
|
-
onArrowDoubleClick = void 0
|
|
11772
|
+
onArrowDoubleClick = void 0,
|
|
11773
|
+
fromConnectionIndex = 0,
|
|
11774
|
+
fromTotalConnections = 1,
|
|
11775
|
+
toConnectionIndex = 0,
|
|
11776
|
+
toTotalConnections = 1
|
|
11773
11777
|
} = props;
|
|
11774
11778
|
const indexFrom = React.useMemo(
|
|
11775
11779
|
() => Math.floor(fromY / fullRowHeight),
|
|
@@ -11798,7 +11802,11 @@
|
|
|
11798
11802
|
targetTo === "startOfTask" !== rtl,
|
|
11799
11803
|
fullRowHeight,
|
|
11800
11804
|
taskHeight,
|
|
11801
|
-
arrowIndent
|
|
11805
|
+
arrowIndent,
|
|
11806
|
+
fromConnectionIndex,
|
|
11807
|
+
fromTotalConnections,
|
|
11808
|
+
toConnectionIndex,
|
|
11809
|
+
toTotalConnections
|
|
11802
11810
|
),
|
|
11803
11811
|
[
|
|
11804
11812
|
indexFrom,
|
|
@@ -11814,7 +11822,11 @@
|
|
|
11814
11822
|
rtl,
|
|
11815
11823
|
fullRowHeight,
|
|
11816
11824
|
taskHeight,
|
|
11817
|
-
arrowIndent
|
|
11825
|
+
arrowIndent,
|
|
11826
|
+
fromConnectionIndex,
|
|
11827
|
+
fromTotalConnections,
|
|
11828
|
+
toConnectionIndex,
|
|
11829
|
+
toTotalConnections
|
|
11818
11830
|
]
|
|
11819
11831
|
);
|
|
11820
11832
|
const color = React.useMemo(() => {
|
|
@@ -11868,31 +11880,46 @@
|
|
|
11868
11880
|
d += ` L ${last[0]} ${last[1]}`;
|
|
11869
11881
|
return d;
|
|
11870
11882
|
};
|
|
11871
|
-
const ARROW_CORNER_RADIUS =
|
|
11872
|
-
const
|
|
11883
|
+
const ARROW_CORNER_RADIUS = 8;
|
|
11884
|
+
const MAX_EXTRA_INDENT = 20;
|
|
11885
|
+
const CONNECTION_SPREAD_RATIO = 0.35;
|
|
11886
|
+
const MAX_CORRIDOR_SPREAD = 20;
|
|
11887
|
+
const drownPathAndTriangle = (indexForm, fromX1, fromX2, fromY, isTaskFromLeftSide, indexTo, toX1, toX2, toY, isTaskToLeftSide, fullRowHeight, taskHeight, arrowIndent, fromConnectionIndex, fromTotalConnections, toConnectionIndex, toTotalConnections) => {
|
|
11873
11888
|
const isDownDirected = indexTo > indexForm;
|
|
11874
|
-
const
|
|
11875
|
-
|
|
11876
|
-
);
|
|
11877
|
-
const
|
|
11878
|
-
const
|
|
11879
|
-
const
|
|
11880
|
-
const
|
|
11881
|
-
const
|
|
11882
|
-
const
|
|
11889
|
+
const fromVertOffset = fromTotalConnections <= 1 ? 0 : (fromConnectionIndex / (fromTotalConnections - 1) - 0.5) * taskHeight * CONNECTION_SPREAD_RATIO;
|
|
11890
|
+
const toVertOffset = toTotalConnections <= 1 ? 0 : (toConnectionIndex / (toTotalConnections - 1) - 0.5) * taskHeight * CONNECTION_SPREAD_RATIO;
|
|
11891
|
+
const fromIndentSpacing = fromTotalConnections <= 1 ? 0 : MAX_EXTRA_INDENT / (fromTotalConnections - 1);
|
|
11892
|
+
const toIndentSpacing = toTotalConnections <= 1 ? 0 : MAX_EXTRA_INDENT / (toTotalConnections - 1);
|
|
11893
|
+
const fromIndent = arrowIndent + fromConnectionIndex * fromIndentSpacing;
|
|
11894
|
+
const toIndent = arrowIndent + toConnectionIndex * toIndentSpacing;
|
|
11895
|
+
const corridorHash = (fromConnectionIndex * 7 + toConnectionIndex * 13) % 11 / 10;
|
|
11896
|
+
const corridorSpread = Math.min(fullRowHeight * 0.35, MAX_CORRIDOR_SPREAD);
|
|
11897
|
+
const corridorOffset = (corridorHash - 0.5) * corridorSpread;
|
|
11898
|
+
const horizontalDockingY = isDownDirected ? (indexForm + 1) * fullRowHeight + corridorOffset : indexForm * fullRowHeight + corridorOffset;
|
|
11899
|
+
const taskFromEndPositionX = isTaskFromLeftSide ? fromX1 - fromIndent : fromX2 + fromIndent;
|
|
11900
|
+
const taskToEndPositionX = isTaskToLeftSide ? toX1 - toIndent : toX2 + toIndent;
|
|
11883
11901
|
const startX = isTaskFromLeftSide ? fromX1 : fromX2;
|
|
11884
|
-
const startY = fromY + taskHeight / 2;
|
|
11902
|
+
const startY = fromY + taskHeight / 2 + fromVertOffset;
|
|
11885
11903
|
const endX = isTaskToLeftSide ? toX1 : toX2;
|
|
11886
|
-
const
|
|
11904
|
+
const endY = toY + taskHeight / 2 + toVertOffset;
|
|
11905
|
+
const rawWaypoints = [
|
|
11887
11906
|
[startX, startY],
|
|
11888
11907
|
[taskFromEndPositionX, startY],
|
|
11889
11908
|
[taskFromEndPositionX, horizontalDockingY],
|
|
11890
11909
|
[taskToEndPositionX, horizontalDockingY],
|
|
11891
|
-
[taskToEndPositionX,
|
|
11892
|
-
[endX,
|
|
11910
|
+
[taskToEndPositionX, endY],
|
|
11911
|
+
[endX, endY]
|
|
11893
11912
|
];
|
|
11913
|
+
const waypoints = [rawWaypoints[0]];
|
|
11914
|
+
for (let i = 1; i < rawWaypoints.length; i++) {
|
|
11915
|
+
const prev = waypoints[waypoints.length - 1];
|
|
11916
|
+
const curr = rawWaypoints[i];
|
|
11917
|
+
if (Math.abs(curr[0] - prev[0]) > 0.5 || Math.abs(curr[1] - prev[1]) > 0.5) {
|
|
11918
|
+
waypoints.push(curr);
|
|
11919
|
+
}
|
|
11920
|
+
}
|
|
11894
11921
|
const path = roundedPath(waypoints, ARROW_CORNER_RADIUS);
|
|
11895
|
-
const trianglePoints = isTaskToLeftSide ? generateTrianglePoints(toX1,
|
|
11922
|
+
const trianglePoints = isTaskToLeftSide ? generateTrianglePoints(toX1, endY, 5, false) : generateTrianglePoints(toX2, endY, 5, true);
|
|
11896
11923
|
return [path, trianglePoints];
|
|
11897
11924
|
};
|
|
11898
11925
|
const relationLine = "_relationLine_wh2qy_1";
|
|
@@ -13191,6 +13218,31 @@
|
|
|
13191
13218
|
taskById.set(task.id, task);
|
|
13192
13219
|
}
|
|
13193
13220
|
});
|
|
13221
|
+
const connectionTotals = /* @__PURE__ */ new Map();
|
|
13222
|
+
for (const [, dependenciesByLevel] of dependencyMap) {
|
|
13223
|
+
for (const [taskId, dependencies] of dependenciesByLevel) {
|
|
13224
|
+
for (const dep of dependencies) {
|
|
13225
|
+
if (!visibleTasksMirror[dep.source.id])
|
|
13226
|
+
continue;
|
|
13227
|
+
const sourceKey = `${dep.source.id}|${dep.sourceTarget}|out`;
|
|
13228
|
+
connectionTotals.set(
|
|
13229
|
+
sourceKey,
|
|
13230
|
+
(connectionTotals.get(sourceKey) || 0) + 1
|
|
13231
|
+
);
|
|
13232
|
+
const targetKey = `${taskId}|${dep.ownTarget}|in`;
|
|
13233
|
+
connectionTotals.set(
|
|
13234
|
+
targetKey,
|
|
13235
|
+
(connectionTotals.get(targetKey) || 0) + 1
|
|
13236
|
+
);
|
|
13237
|
+
}
|
|
13238
|
+
}
|
|
13239
|
+
}
|
|
13240
|
+
const connectionIndices = /* @__PURE__ */ new Map();
|
|
13241
|
+
const getConnectionIndex = (key2) => {
|
|
13242
|
+
const idx = connectionIndices.get(key2) || 0;
|
|
13243
|
+
connectionIndices.set(key2, idx + 1);
|
|
13244
|
+
return idx;
|
|
13245
|
+
};
|
|
13194
13246
|
const addedSelectedTasks = {};
|
|
13195
13247
|
const addedDependencies = {};
|
|
13196
13248
|
for (let index2 = start; index2 <= end; ++index2) {
|
|
@@ -13400,7 +13452,17 @@
|
|
|
13400
13452
|
taskHeight,
|
|
13401
13453
|
isCritical: isCritical2,
|
|
13402
13454
|
rtl,
|
|
13403
|
-
onArrowDoubleClick
|
|
13455
|
+
onArrowDoubleClick,
|
|
13456
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13457
|
+
`${source.id}|${sourceTarget}|out`
|
|
13458
|
+
),
|
|
13459
|
+
fromTotalConnections: connectionTotals.get(
|
|
13460
|
+
`${source.id}|${sourceTarget}|out`
|
|
13461
|
+
) || 1,
|
|
13462
|
+
toConnectionIndex: getConnectionIndex(
|
|
13463
|
+
`${taskId}|${ownTarget}|in`
|
|
13464
|
+
),
|
|
13465
|
+
toTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|in`) || 1
|
|
13404
13466
|
}
|
|
13405
13467
|
)
|
|
13406
13468
|
},
|
|
@@ -13474,7 +13536,17 @@
|
|
|
13474
13536
|
taskHeight,
|
|
13475
13537
|
isCritical: isCritical2,
|
|
13476
13538
|
rtl,
|
|
13477
|
-
onArrowDoubleClick
|
|
13539
|
+
onArrowDoubleClick,
|
|
13540
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13541
|
+
`${taskId}|${ownTarget}|out`
|
|
13542
|
+
),
|
|
13543
|
+
fromTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|out`) || 1,
|
|
13544
|
+
toConnectionIndex: getConnectionIndex(
|
|
13545
|
+
`${dependent.id}|${dependentTarget}|in`
|
|
13546
|
+
),
|
|
13547
|
+
toTotalConnections: connectionTotals.get(
|
|
13548
|
+
`${dependent.id}|${dependentTarget}|in`
|
|
13549
|
+
) || 1
|
|
13478
13550
|
}
|
|
13479
13551
|
)
|
|
13480
13552
|
},
|
|
@@ -13561,7 +13633,17 @@
|
|
|
13561
13633
|
taskHeight,
|
|
13562
13634
|
isCritical,
|
|
13563
13635
|
rtl,
|
|
13564
|
-
onArrowDoubleClick
|
|
13636
|
+
onArrowDoubleClick,
|
|
13637
|
+
fromConnectionIndex: getConnectionIndex(
|
|
13638
|
+
`${source.id}|${sourceTarget}|out`
|
|
13639
|
+
),
|
|
13640
|
+
fromTotalConnections: connectionTotals.get(
|
|
13641
|
+
`${source.id}|${sourceTarget}|out`
|
|
13642
|
+
) || 1,
|
|
13643
|
+
toConnectionIndex: getConnectionIndex(
|
|
13644
|
+
`${taskId}|${ownTarget}|in`
|
|
13645
|
+
),
|
|
13646
|
+
toTotalConnections: connectionTotals.get(`${taskId}|${ownTarget}|in`) || 1
|
|
13565
13647
|
}
|
|
13566
13648
|
)
|
|
13567
13649
|
},
|
package/dist/style.css
CHANGED
|
@@ -439,31 +439,35 @@
|
|
|
439
439
|
._calendarDragging_15t8b_85 {
|
|
440
440
|
cursor: ew-resize;
|
|
441
441
|
}
|
|
442
|
-
.
|
|
442
|
+
._arrow_clickable_m4fqb_1 {
|
|
443
443
|
cursor: pointer;
|
|
444
444
|
}
|
|
445
445
|
|
|
446
446
|
/*noinspection CssUnresolvedCustomProperty*/
|
|
447
|
-
.
|
|
447
|
+
._arrow_clickable_m4fqb_1:hover ._mainPath_m4fqb_11 {
|
|
448
448
|
filter: var(--gantt-hover-filter);
|
|
449
449
|
stroke: var(--gantt-arrow-hover-color, red);
|
|
450
|
-
stroke-width:
|
|
450
|
+
stroke-width: 2.5px;
|
|
451
|
+
opacity: 1;
|
|
451
452
|
}
|
|
452
453
|
|
|
453
454
|
/*noinspection CssUnresolvedCustomProperty*/
|
|
454
|
-
.
|
|
455
|
+
._arrow_clickable_m4fqb_1:hover polygon {
|
|
455
456
|
fill: var(--gantt-arrow-hover-color, red);
|
|
456
457
|
}
|
|
457
458
|
|
|
458
|
-
.
|
|
459
|
+
._mainPath_m4fqb_11 {
|
|
459
460
|
fill: none;
|
|
460
|
-
stroke-width: 1.
|
|
461
|
+
stroke-width: 1.4px;
|
|
461
462
|
stroke-linecap: round;
|
|
462
463
|
stroke-linejoin: round;
|
|
463
|
-
opacity: 0.
|
|
464
|
+
opacity: 0.7;
|
|
465
|
+
transition:
|
|
466
|
+
stroke-width 0.15s ease,
|
|
467
|
+
opacity 0.15s ease;
|
|
464
468
|
}
|
|
465
469
|
|
|
466
|
-
.
|
|
470
|
+
._clickZone_m4fqb_57 {
|
|
467
471
|
fill: none;
|
|
468
472
|
stroke: transparent;
|
|
469
473
|
stroke-width: 10px;
|
package/package.json
CHANGED