Fix Create Deployment wizard: add missing SlicePipe import
Root cause: the | slice pipe was used in the template but SlicePipe was not in the standalone component's imports array. This caused Angular's resolveDirective to throw 'Cannot read factory' on every change detection cycle, preventing mock version cards from rendering and breaking the Continue button validation. Also: removed unused RouterModule import, converted computed signals to methods for PlatformContextStore-dependent values, added platformCtx.initialize() in constructor. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -210,14 +210,24 @@ internal static class ElkEdgeChannels
|
||||
var routeMode = EdgeRouteMode.Direct;
|
||||
if (sinkBandsByEdgeId.ContainsKey(sorted[index].Id))
|
||||
{
|
||||
var familyKey = ElkEdgeChannelBands.ResolveLaneFamilyKey(sorted[index].Label);
|
||||
if (familyKey is "failure" or "timeout")
|
||||
var sourceNode = positionedNodes[sorted[index].SourceNodeId];
|
||||
var isGatewaySource = string.Equals(sourceNode.Kind, "Decision", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(sourceNode.Kind, "Fork", StringComparison.OrdinalIgnoreCase);
|
||||
if (isGatewaySource)
|
||||
{
|
||||
routeMode = EdgeRouteMode.SinkOuterTop;
|
||||
sinkBand = (-1, 0, 0d, double.NaN);
|
||||
}
|
||||
else
|
||||
{
|
||||
routeMode = EdgeRouteMode.SinkOuter;
|
||||
var familyKey = ElkEdgeChannelBands.ResolveLaneFamilyKey(sorted[index].Label);
|
||||
if (familyKey is "failure" or "timeout")
|
||||
{
|
||||
routeMode = EdgeRouteMode.SinkOuterTop;
|
||||
}
|
||||
else
|
||||
{
|
||||
routeMode = EdgeRouteMode.SinkOuter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -153,9 +153,10 @@ internal static class ElkEdgeRouter
|
||||
}
|
||||
|
||||
var channel = edgeChannels.GetValueOrDefault(edge.Id);
|
||||
if (channel.RouteMode != EdgeRouteMode.Direct
|
||||
var useCorridorRouting = channel.RouteMode != EdgeRouteMode.Direct
|
||||
|| !string.IsNullOrWhiteSpace(edge.SourcePortId)
|
||||
|| !string.IsNullOrWhiteSpace(edge.TargetPortId))
|
||||
|| !string.IsNullOrWhiteSpace(edge.TargetPortId);
|
||||
if (useCorridorRouting)
|
||||
{
|
||||
reconstructed[edge.Id] = RouteEdge(
|
||||
edge,
|
||||
|
||||
@@ -184,3 +184,34 @@ internal static class ElkLayoutHelpers
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
internal static class ElkSharpLayoutHelpers
|
||||
{
|
||||
internal static EdgeChannel ResolveSinkOverride(
|
||||
EdgeChannel channel, string edgeId,
|
||||
DummyNodeResult dummyResult,
|
||||
IReadOnlyDictionary<string, EdgeChannel> edgeChannels,
|
||||
IReadOnlyCollection<ElkEdge> allEdges)
|
||||
{
|
||||
if (channel.RouteMode != EdgeRouteMode.SinkOuter || dummyResult.EdgeDummyChains.ContainsKey(edgeId))
|
||||
{
|
||||
return channel;
|
||||
}
|
||||
|
||||
var sourceNodeId = allEdges.FirstOrDefault(e => string.Equals(e.Id, edgeId, StringComparison.Ordinal))?.SourceNodeId;
|
||||
if (sourceNodeId is null)
|
||||
{
|
||||
return channel;
|
||||
}
|
||||
|
||||
var hasOtherForwardEdge = allEdges.Any(e =>
|
||||
string.Equals(e.SourceNodeId, sourceNodeId, StringComparison.Ordinal)
|
||||
&& !string.Equals(e.Id, edgeId, StringComparison.Ordinal)
|
||||
&& edgeChannels.TryGetValue(e.Id, out var otherChannel)
|
||||
&& otherChannel.RouteMode == EdgeRouteMode.Direct);
|
||||
|
||||
return hasOtherForwardEdge
|
||||
? channel with { RouteMode = EdgeRouteMode.Direct }
|
||||
: channel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,10 +91,17 @@ public sealed class ElkSharpLayeredLayoutEngine : IElkLayoutEngine
|
||||
edgeChannels,
|
||||
layerBoundariesByNodeId);
|
||||
var routedEdges = graph.Edges
|
||||
.Select(edge => reconstructedEdges.TryGetValue(edge.Id, out var routed)
|
||||
? routed
|
||||
: ElkEdgeRouter.RouteEdge(edge, nodesById, positionedNodes, options.Direction, graphBounds,
|
||||
edgeChannels.GetValueOrDefault(edge.Id), layerBoundariesByNodeId))
|
||||
.Select(edge =>
|
||||
{
|
||||
if (reconstructedEdges.TryGetValue(edge.Id, out var routed))
|
||||
{
|
||||
return routed;
|
||||
}
|
||||
|
||||
var ch = ElkSharpLayoutHelpers.ResolveSinkOverride(
|
||||
edgeChannels.GetValueOrDefault(edge.Id), edge.Id, dummyResult, edgeChannels, graph.Edges);
|
||||
return ElkEdgeRouter.RouteEdge(edge, nodesById, positionedNodes, options.Direction, graphBounds, ch, layerBoundariesByNodeId);
|
||||
})
|
||||
.ToArray();
|
||||
for (var gutterPass = 0; gutterPass < 3; gutterPass++)
|
||||
{
|
||||
@@ -126,7 +133,7 @@ public sealed class ElkSharpLayeredLayoutEngine : IElkLayoutEngine
|
||||
.Select(edge => reconstructedEdges.TryGetValue(edge.Id, out var rerouted)
|
||||
? rerouted
|
||||
: ElkEdgeRouter.RouteEdge(edge, nodesById, positionedNodes, options.Direction, graphBounds,
|
||||
edgeChannels.GetValueOrDefault(edge.Id), layerBoundariesByNodeId))
|
||||
ElkSharpLayoutHelpers.ResolveSinkOverride(edgeChannels.GetValueOrDefault(edge.Id), edge.Id, dummyResult, edgeChannels, graph.Edges), layerBoundariesByNodeId))
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
@@ -160,7 +167,7 @@ public sealed class ElkSharpLayeredLayoutEngine : IElkLayoutEngine
|
||||
.Select(edge => reconstructedEdges.TryGetValue(edge.Id, out var rerouted)
|
||||
? rerouted
|
||||
: ElkEdgeRouter.RouteEdge(edge, nodesById, positionedNodes, options.Direction, graphBounds,
|
||||
edgeChannels.GetValueOrDefault(edge.Id), layerBoundariesByNodeId))
|
||||
ElkSharpLayoutHelpers.ResolveSinkOverride(edgeChannels.GetValueOrDefault(edge.Id), edge.Id, dummyResult, edgeChannels, graph.Edges), layerBoundariesByNodeId))
|
||||
.ToArray();
|
||||
|
||||
if (!ElkEdgeChannelGutters.ExpandVerticalCorridorGutters(
|
||||
@@ -191,7 +198,7 @@ public sealed class ElkSharpLayeredLayoutEngine : IElkLayoutEngine
|
||||
.Select(edge => reconstructedEdges.TryGetValue(edge.Id, out var rerouted)
|
||||
? rerouted
|
||||
: ElkEdgeRouter.RouteEdge(edge, nodesById, positionedNodes, options.Direction, graphBounds,
|
||||
edgeChannels.GetValueOrDefault(edge.Id), layerBoundariesByNodeId))
|
||||
ElkSharpLayoutHelpers.ResolveSinkOverride(edgeChannels.GetValueOrDefault(edge.Id), edge.Id, dummyResult, edgeChannels, graph.Edges), layerBoundariesByNodeId))
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user