Commit: 2adbb03
Parent: cfd663c

Filter out trams from Svingeln

Mårten Åsberg committed on 2026-06-07 at 13:08
src/App/ViewModels/MainViewModel.cs +1 -0
diff --git a/src/App/ViewModels/MainViewModel.cs b/src/App/ViewModels/MainViewModel.cs
index 298d185..b1b9ad0 100644
@@ -23,6 +23,7 @@ public partial class MainViewModel : ViewModelBase
svingeln.StopName = "Svingeln";
svingeln.StopId = "9021014006480000";
svingeln.Platforms = ["C", "D", "E", "F", "G"];
Svingeln = svingeln;
UpperRight = dateTimePanelViewModel;
src/App/ViewModels/Panels/VasttrafikPanelViewModel.cs +2 -1
diff --git a/src/App/ViewModels/Panels/VasttrafikPanelViewModel.cs b/src/App/ViewModels/Panels/VasttrafikPanelViewModel.cs
index e8e7f53..403133b 100644
@@ -28,6 +28,7 @@ public partial class VasttrafikPanelViewModel : ViewModelBase
public required partial string StopName { get; set; }
public required string StopId { get; set; }
public string[] Platforms { get; set; } = [];
public VasttrafikPanelViewModel(TimeProvider timeProvider, VasttrafikClient vasttrafikClient)
{
@@ -63,7 +64,7 @@ public partial class VasttrafikPanelViewModel : ViewModelBase
{
while (!cancellationToken.IsCancellationRequested)
{
Departures = [.. await vasttrafikClient.GetDeparturesFrom(StopId, cancellationToken)];
Departures = [.. await vasttrafikClient.GetDeparturesFrom(StopId, Platforms, cancellationToken)];
CurrentTime = timeProvider.GetLocalNow();
await Task.Delay(TimeSpan.FromMinutes(1), timeProvider, cancellationToken);
src/App/Views/MainView.axaml +1 -1
diff --git a/src/App/Views/MainView.axaml b/src/App/Views/MainView.axaml
index 7ad5495..7e61b6b 100644
@@ -11,7 +11,7 @@
</Design.DataContext>
<Grid RowDefinitions="*,*,*" ColumnDefinitions="*,*,*" Margin="64">
<StackPanel Classes="fade" Grid.Row="0" Grid.Column="0" Spacing="8">
<StackPanel Classes="fade" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Spacing="8">
<ContentControl Content="{Binding Olskrokstorget}" />
<ContentControl Content="{Binding Svingeln}" />
</StackPanel>
src/Integrations/Vasttrafik/VasttrafikClient.cs +3 -2
diff --git a/src/Integrations/Vasttrafik/VasttrafikClient.cs b/src/Integrations/Vasttrafik/VasttrafikClient.cs
index 769c127..c3c5e45 100644
@@ -9,11 +9,12 @@ namespace MMirror.Integrations.Vasttrafik;
public sealed class VasttrafikClient(HttpClient httpClient, TimeProvider timeProvider)
{
public async Task<Departure[]> GetDeparturesFrom(string id, CancellationToken cancellationToken)
public async Task<Departure[]> GetDeparturesFrom(string id, string[] platforms, CancellationToken cancellationToken)
{
var platformsParameter = platforms.Length is 0 ? "" : $"&platforms={string.Join(",", platforms)}";
var response =
await httpClient.GetFromJsonAsync(
$"/pr/v4/stop-areas/{id}/departures?timeSpanInMinutes=60&maxDeparturesPerLineAndDirection=2&limit=32",
$"/pr/v4/stop-areas/{id}/departures?timeSpanInMinutes=60&maxDeparturesPerLineAndDirection=2&limit=32{platformsParameter}",
VasttrafikJsonSerializerContext.Default.DeparturesResponse,
cancellationToken
) ?? throw new Exception("Received literal null from Vasttrafik departures endpoint.");
tests/Integrations/Vasttrafik/VasttrafikClientTests/IntegrationTests.cs +2 -2
diff --git a/tests/Integrations/Vasttrafik/VasttrafikClientTests/IntegrationTests.cs b/tests/Integrations/Vasttrafik/VasttrafikClientTests/IntegrationTests.cs
index 4f3f799..720c712 100644
@@ -20,7 +20,7 @@ public sealed class IntegrationTests
host.Services.AddVasttrafikServices();
var app = host.Build();
var client = app.Services.GetRequiredService<VasttrafikClient>();
var departures = await client.GetDeparturesFrom("9021014005160000", CancellationToken.None);
departures.Select(d => d.Departures[0]).ShouldBeInOrder();
var departures = await client.GetDeparturesFrom("9021014005160000", [], CancellationToken.None);
departures.Select(d => d.Next).ShouldBeInOrder();
}
}