|
7 | 7 | <h1>Christmas</h1> |
8 | 8 | <div style="height:70vh;"> |
9 | 9 | <GraphEditor @ref=GraphEditor |
10 | | - TNode="Point" |
11 | | - TEdge="Edge" |
12 | | - NodeIdMapper="n => n.Id" |
13 | | - NodeColorMapper=@(_ => "#FF4444") |
14 | | - NodeRadiusMapper="_ => 20" |
15 | | - EdgeFromMapper="e => e.From" |
16 | | - EdgeToMapper="e => e.To" |
17 | | - EdgeWidthMapper="e => e.Width" |
18 | | - EdgeSpringLengthMapper="e => e.Length" /> |
| 10 | + TNode="Point" |
| 11 | + TEdge="Edge" |
| 12 | + NodeIdMapper="n => n.Id" |
| 13 | + NodeColorMapper=@(_ => "#FF4444") |
| 14 | + NodeRadiusMapper="_ => 20" |
| 15 | + EdgeFromMapper="e => e.From" |
| 16 | + EdgeToMapper="e => e.To" |
| 17 | + EdgeWidthMapper="e => e.Width" |
| 18 | + EdgeSpringLengthMapper="e => e.Length" /> |
19 | 19 | </div> |
20 | 20 |
|
21 | 21 | @code { |
|
24 | 24 |
|
25 | 25 | private GraphEditor.GraphEditor<Point, Edge> GraphEditor = default!; |
26 | 26 | private bool running = true; |
| 27 | + private bool refitToScreen = true; |
27 | 28 |
|
28 | 29 | protected override async Task OnAfterRenderAsync(bool firstRender) |
29 | 30 | { |
|
46 | 47 | while (running) |
47 | 48 | { |
48 | 49 | await GraphEditor.ForceDirectedLayout(); |
49 | | - if (edges.Count > 0) |
| 50 | + if (edges.Count > 0 && refitToScreen) |
50 | 51 | GraphEditor.SVGEditor.FitViewportToAllShapes(delta: 0.1); |
51 | 52 | await Task.Delay(10); |
52 | 53 | } |
|
69 | 70 | new (pointsToAdd[0], pointsToAdd[7], 200), |
70 | 71 | new (pointsToAdd[0], pointsToAdd[2], 170), |
71 | 72 | new (pointsToAdd[0], pointsToAdd[10], 170), |
72 | | - ]; |
| 73 | + ]; |
73 | 74 |
|
| 75 | + refitToScreen = true; |
74 | 76 | for (int i = 0; i < edgesToAdd.Count && running; i++) |
75 | 77 | { |
76 | 78 | Edge edge = edgesToAdd[i]; |
|
85 | 87 | await GraphEditor.UpdateGraph(points, edges); |
86 | 88 | await Task.Delay(2000); |
87 | 89 | } |
| 90 | + refitToScreen = false; |
88 | 91 | } |
89 | 92 |
|
90 | 93 | public record Point(string Id); |
|
0 commit comments