You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
@page "/weather" |
|
@attribute [StreamRendering] |
|
|
|
<PageTitle>Weather</PageTitle> |
|
|
|
<h1>Weather</h1> |
|
|
|
<p>This component demonstrates showing data.</p> |
|
|
|
@if (forecasts == null) |
|
{ |
|
<p><em>Loading...</em></p> |
|
} |
|
else |
|
{ |
|
<table class="table"> |
|
<thead> |
|
<tr> |
|
<th>Date</th> |
|
<th>Temp. (C)</th> |
|
<th>Temp. (F)</th> |
|
<th>Summary</th> |
|
</tr> |
|
</thead> |
|
<tbody> |
|
@foreach (var forecast in forecasts) |
|
{ |
|
<tr> |
|
<td>@forecast.Date.ToShortDateString()</td> |
|
<td>@forecast.TemperatureC</td> |
|
<td>@forecast.TemperatureF</td> |
|
<td>@forecast.Summary</td> |
|
</tr> |
|
} |
|
</tbody> |
|
</table> |
|
} |
|
|
|
@code { |
|
private WeatherForecast[]? forecasts; |
|
|
|
protected override async Task OnInitializedAsync() |
|
{ |
|
// Simulate asynchronous loading to demonstrate streaming rendering |
|
await Task.Delay(500); |
|
|
|
var startDate = DateOnly.FromDateTime(DateTime.Now); |
|
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; |
|
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast |
|
{ |
|
Date = startDate.AddDays(index), |
|
TemperatureC = Random.Shared.Next(-20, 55), |
|
Summary = summaries[Random.Shared.Next(summaries.Length)] |
|
}).ToArray(); |
|
} |
|
|
|
private class WeatherForecast |
|
{ |
|
public DateOnly Date { get; set; } |
|
public int TemperatureC { get; set; } |
|
public string? Summary { get; set; } |
|
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); |
|
} |
|
}
|
|
|