Skip to content

Commit 660d28e

Browse files
More distance.
1 parent 47dc167 commit 660d28e

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
NodeImageMapper="n => n.Image"
3838
NodeRepulsionMapper="_ => 1200"
3939
EdgeSpringConstantMapper="_ => 0.8"
40-
EdgeSpringLengthMapper="_ => 250"
41-
EdgeFromMapper="e => e.from"
42-
EdgeToMapper="e => e.to"
40+
EdgeSpringLengthMapper="e => e.EdgeLength"
41+
EdgeFromMapper="e => e.From"
42+
EdgeToMapper="e => e.To"
4343
EdgeWidthMapper="_ => 5"
4444
NodeSelectionCallback="async (user) => { selectedUser = user; await InvokeAsync(StateHasChanged); }" />
4545
</div>
@@ -94,6 +94,9 @@
9494

9595
private async Task AddMoreUsers(User fromUser, int size)
9696
{
97+
selectedUser = null;
98+
StateHasChanged();
99+
97100
var response = await httpClient.GetAsync($"https://kristoffer-strube.dk/API/mastodon/Following/{fromUser.Id}");
98101

99102
if (!response.IsSuccessStatusCode)
@@ -114,12 +117,18 @@
114117

115118
users = [.. users, .. allNewUsers];
116119

120+
// Increase distance to this user to make room for new neighbors.
121+
foreach (var edge in edges.Where(e => e.To.Equals(fromUser) || e.From.Equals(fromUser)))
122+
{
123+
edge.EdgeLength = 500;
124+
}
125+
117126
foreach (var follow in following)
118127
{
119128
var newEdge = new Follow(fromUser, follow);
120-
if (!edges.Contains(newEdge))
129+
if (!edges.Any(e => e.Equals(newEdge)))
121130
{
122-
edges.Add(new Follow(fromUser, follow));
131+
edges.Add(newEdge);
123132
}
124133
}
125134

@@ -152,7 +161,15 @@
152161

153162
public override int GetHashCode() => Id.GetHashCode();
154163
}
155-
public record Follow(User from, User to);
164+
public class Follow(User from, User to) : IEquatable<Follow>
165+
{
166+
public User From => from;
167+
public User To => to;
168+
169+
public float EdgeLength { get; set; } = 250;
170+
171+
public bool Equals(Follow? other) => other is not null && other.From.Equals(From) && other.To.Equals(To);
172+
}
156173

157174
public void Dispose()
158175
{

0 commit comments

Comments
 (0)