Skip to content

Commit fb752b7

Browse files
Prepare for christmas.
1 parent e9d4921 commit fb752b7

File tree

2 files changed

+98
-110
lines changed

2 files changed

+98
-110
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
@page "/Christmas"
2+
@implements IDisposable
3+
@using KristofferStrube.Blazor.GraphEditor
4+
5+
<PageTitle>Blazor.GraphEditor - Christmas</PageTitle>
6+
7+
<h1>Christmas</h1>
8+
<div style="height:70vh;">
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" />
19+
</div>
20+
21+
@code {
22+
private List<Point> points = new();
23+
private List<Edge> edges = new();
24+
25+
private GraphEditor.GraphEditor<Point, Edge> GraphEditor = default!;
26+
private bool running = true;
27+
28+
protected override async Task OnAfterRenderAsync(bool firstRender)
29+
{
30+
if (!firstRender) return;
31+
while (!GraphEditor.IsReadyToLoad)
32+
{
33+
await Task.Delay(50);
34+
}
35+
36+
await GraphEditor.LoadGraph(points, edges);
37+
38+
await Task.WhenAll(
39+
Layout(),
40+
AddEdges()
41+
);
42+
}
43+
44+
private async Task Layout()
45+
{
46+
while (running)
47+
{
48+
await GraphEditor.ForceDirectedLayout();
49+
if (edges.Count > 0)
50+
GraphEditor.SVGEditor.FitViewportToAllShapes(delta: 0.1);
51+
await Task.Delay(10);
52+
}
53+
}
54+
55+
private async Task AddEdges()
56+
{
57+
List<Point> pointsToAdd = Enumerable.Range(0, 12)
58+
.Select(i => new Point(i.ToString()))
59+
.ToList();
60+
61+
List<Edge> edgesToAdd = [
62+
.. Enumerable.Range(0, 12).Select(i => new Edge(pointsToAdd[i], pointsToAdd[(i + 1) % 12], Width: 5)),
63+
new (pointsToAdd[0], pointsToAdd[6], 250),
64+
new (pointsToAdd[0], pointsToAdd[4], 200),
65+
new (pointsToAdd[0], pointsToAdd[8], 200),
66+
new (pointsToAdd[0], pointsToAdd[3], 200),
67+
new (pointsToAdd[0], pointsToAdd[9], 200),
68+
new (pointsToAdd[0], pointsToAdd[5], 200),
69+
new (pointsToAdd[0], pointsToAdd[7], 200),
70+
new (pointsToAdd[0], pointsToAdd[2], 170),
71+
new (pointsToAdd[0], pointsToAdd[10], 170),
72+
];
73+
74+
for (int i = 0; i < edgesToAdd.Count && running; i++)
75+
{
76+
Edge edge = edgesToAdd[i];
77+
78+
if (!points.Contains(edge.From))
79+
points.Add(edge.From);
80+
if (!points.Contains(edge.To))
81+
points.Add(edge.To);
82+
83+
edges.Add(edgesToAdd[i]);
84+
85+
await GraphEditor.UpdateGraph(points, edges);
86+
await Task.Delay(200);
87+
}
88+
}
89+
90+
public record Point(string Id);
91+
92+
public record Edge(Point From, Point To, float Length = 100, float Width = 1);
93+
94+
public void Dispose()
95+
{
96+
running = false;
97+
}
98+
}

samples/KristofferStrube.Blazor.GraphEditor.WasmExample/Pages/Dotnet8.razor

Lines changed: 0 additions & 110 deletions
This file was deleted.

0 commit comments

Comments
 (0)