Even more UI tweaks
This commit is contained in:
parent
47b0528275
commit
7bf87b95a4
@ -515,6 +515,42 @@ const VisualiserTab: React.FC<VisualiserTabProps> = ({
|
|||||||
|
|
||||||
return eligibility;
|
return eligibility;
|
||||||
}, [edges, levelByGuid]);
|
}, [edges, levelByGuid]);
|
||||||
|
const mergedRightSourcesByTarget = React.useMemo(() => {
|
||||||
|
const map = new Map<string, Set<string>>();
|
||||||
|
|
||||||
|
edges.forEach((edge) => {
|
||||||
|
const sourceLevel = levelByGuid.get(edge.sourceGuid) ?? 0;
|
||||||
|
const targetLevel = levelByGuid.get(edge.targetGuid) ?? 0;
|
||||||
|
const levelDelta = targetLevel - sourceLevel;
|
||||||
|
if (levelDelta <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mergedRightIncomingByTarget.has(edge.targetGuid)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const eligibility = rightMergeEligibleByTarget.get(edge.targetGuid);
|
||||||
|
const isMergedEdge =
|
||||||
|
(levelDelta > 1 && eligibility?.mergeLong) ||
|
||||||
|
(levelDelta === 1 && eligibility?.mergeAdjacent);
|
||||||
|
|
||||||
|
if (!isMergedEdge) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const contributors = map.get(edge.targetGuid) ?? new Set<string>();
|
||||||
|
contributors.add(edge.sourceGuid);
|
||||||
|
map.set(edge.targetGuid, contributors);
|
||||||
|
});
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}, [
|
||||||
|
edges,
|
||||||
|
levelByGuid,
|
||||||
|
mergedRightIncomingByTarget,
|
||||||
|
rightMergeEligibleByTarget,
|
||||||
|
]);
|
||||||
const connectedByGuid = React.useMemo(() => {
|
const connectedByGuid = React.useMemo(() => {
|
||||||
const map = new Map<string, Set<string>>();
|
const map = new Map<string, Set<string>>();
|
||||||
|
|
||||||
@ -706,13 +742,12 @@ const VisualiserTab: React.FC<VisualiserTabProps> = ({
|
|||||||
const mergedRightLaneX = mergedRightIncomingByTarget.get(
|
const mergedRightLaneX = mergedRightIncomingByTarget.get(
|
||||||
edge.targetGuid,
|
edge.targetGuid,
|
||||||
);
|
);
|
||||||
const rightMergeEligibility = rightMergeEligibleByTarget.get(
|
const mergedRightSources = mergedRightSourcesByTarget.get(
|
||||||
edge.targetGuid,
|
edge.targetGuid,
|
||||||
);
|
);
|
||||||
const isMergedRight =
|
const isMergedRight =
|
||||||
mergedRightLaneX !== undefined &&
|
mergedRightLaneX !== undefined &&
|
||||||
((levelDelta > 1 && rightMergeEligibility?.mergeLong) ||
|
(mergedRightSources?.has(edge.sourceGuid) ?? false);
|
||||||
(levelDelta === 1 && rightMergeEligibility?.mergeAdjacent));
|
|
||||||
|
|
||||||
let path = "";
|
let path = "";
|
||||||
let labelX = 0;
|
let labelX = 0;
|
||||||
@ -907,16 +942,11 @@ const VisualiserTab: React.FC<VisualiserTabProps> = ({
|
|||||||
|
|
||||||
const endX = target.x + target.width / 2;
|
const endX = target.x + target.width / 2;
|
||||||
const endY = target.y;
|
const endY = target.y;
|
||||||
|
const mergedSources =
|
||||||
|
mergedRightSourcesByTarget.get(targetGuid) ?? new Set<string>();
|
||||||
const mergedIsActive =
|
const mergedIsActive =
|
||||||
hoveredGuid !== null &&
|
hoveredGuid !== null &&
|
||||||
(hoveredGuid === targetGuid ||
|
(hoveredGuid === targetGuid || mergedSources.has(hoveredGuid));
|
||||||
edges.some(
|
|
||||||
(edge) =>
|
|
||||||
edge.targetGuid === targetGuid &&
|
|
||||||
edge.sourceGuid === hoveredGuid &&
|
|
||||||
(levelByGuid.get(edge.targetGuid) ?? 0) >
|
|
||||||
(levelByGuid.get(edge.sourceGuid) ?? 0),
|
|
||||||
));
|
|
||||||
const mergedIsDim = hoveredGuid !== null && !mergedIsActive;
|
const mergedIsDim = hoveredGuid !== null && !mergedIsActive;
|
||||||
const mergedIntensityClass =
|
const mergedIntensityClass =
|
||||||
hoveredGuid === targetGuid
|
hoveredGuid === targetGuid
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user