61 lines
2.4 KiB
Plaintext
61 lines
2.4 KiB
Plaintext
@page "/weather"
|
|
|
|
|
|
|
|
<PageTitle>Weather</PageTitle>
|
|
|
|
<MudText Typo="Typo.h3" GutterBottom="true">Weather forecast</MudText>
|
|
<MudText Class="mb-8">This component demonstrates fetching data from the server.</MudText>
|
|
|
|
@if (forecasts == null)
|
|
{
|
|
<MudProgressCircular Color="Color.Default" Indeterminate="true" />
|
|
}
|
|
else
|
|
{
|
|
<MudTable Items="forecasts" Hover="true" SortLabel="Sort By" Elevation="0" AllowUnsorted="false">
|
|
<HeaderContent>
|
|
<MudTh><MudTableSortLabel InitialDirection="SortDirection.Ascending" SortBy="new Func<WeatherForecast, object>(x=>x.Date)">Date</MudTableSortLabel></MudTh>
|
|
<MudTh><MudTableSortLabel SortBy="new Func<WeatherForecast, object>(x=>x.TemperatureC)">Temp. (C)</MudTableSortLabel></MudTh>
|
|
<MudTh><MudTableSortLabel SortBy="new Func<WeatherForecast, object>(x=>x.TemperatureF)">Temp. (F)</MudTableSortLabel></MudTh>
|
|
<MudTh><MudTableSortLabel SortBy="new Func<WeatherForecast, object>(x=>x.Summary!)">Summary</MudTableSortLabel></MudTh>
|
|
</HeaderContent>
|
|
<RowTemplate>
|
|
<MudTd DataLabel="Date">@context.Date</MudTd>
|
|
<MudTd DataLabel="Temp. (C)">@context.TemperatureC</MudTd>
|
|
<MudTd DataLabel="Temp. (F)">@context.TemperatureF</MudTd>
|
|
<MudTd DataLabel="Summary">@context.Summary</MudTd>
|
|
</RowTemplate>
|
|
<PagerContent>
|
|
<MudTablePager PageSizeOptions="new int[]{50, 100}" />
|
|
</PagerContent>
|
|
</MudTable>
|
|
}
|
|
|
|
@code {
|
|
private WeatherForecast[]? forecasts;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
// Simulate asynchronous loading to demonstrate a loading indicator
|
|
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);
|
|
}
|
|
}
|