2023-05-12 15:48:14 +02:00
|
|
|
@using SharpRss.Models;
|
2023-04-28 21:58:36 +02:00
|
|
|
@using MudBlazor.Utilities
|
2023-04-29 19:40:16 +02:00
|
|
|
@using CodeHollow.FeedReader
|
|
|
|
@using Serilog
|
2023-05-15 15:53:08 +02:00
|
|
|
@using WebSharpRSS.Models;
|
2023-05-16 14:12:36 +02:00
|
|
|
@using ToolQit.Extensions;
|
2023-05-04 21:04:44 +02:00
|
|
|
|
2023-05-07 02:42:37 +02:00
|
|
|
@inject RssService _rssService
|
|
|
|
|
2023-04-29 19:40:16 +02:00
|
|
|
<MudStack Spacing="2">
|
|
|
|
<MudNavMenu>
|
|
|
|
<MudNavLink Href="/" Icon="@Icons.Material.Filled.Home">Home</MudNavLink>
|
|
|
|
</MudNavMenu>
|
2023-05-16 14:12:36 +02:00
|
|
|
<MudDivider DividerType="DividerType.FullWidth"/>
|
|
|
|
<MudText Typo="Typo.h5" Class="ml-5">Feeds</MudText>
|
2023-05-15 20:42:42 +02:00
|
|
|
<MudTreeView Items="Categories" @bind-SelectedValue="SelectedItem" @bind-ActivatedItem="ActivatedItem" Hover="true">
|
|
|
|
<ItemTemplate>
|
2023-05-16 14:12:36 +02:00
|
|
|
<MudTreeViewItem @bind-Expanded="@context.IsExpanded" Items="@context.Feeds">
|
|
|
|
<Content>
|
|
|
|
<div style="display: grid; grid-template-columns: 1fr auto; align-items: center; width: 100%">
|
|
|
|
<div style="justify-self: start;" class="d-flex align-center">
|
|
|
|
<MudTreeViewItemToggleButton @bind-Expanded="@context.IsExpanded" Visible="@context.HasChild" />
|
|
|
|
@if (context.FaviconUrl.IsNullEmptyWhiteSpace() && context.Icon != null)
|
|
|
|
{
|
|
|
|
<MudIcon Icon="@context.Icon"/>
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
<MudImage Src="@context.FaviconUrl" ObjectFit="ObjectFit.ScaleDown"/>
|
|
|
|
}
|
|
|
|
<MudText Class="ml-2">@context.Title</MudText>
|
|
|
|
</div>
|
|
|
|
<div style="justify-self: end;">
|
|
|
|
<MudText Color="Color.Dark" Style="justify-self: end;" Typo="Typo.caption">@context.FeeditemCount</MudText>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Content>
|
|
|
|
</MudTreeViewItem>
|
2023-05-15 20:42:42 +02:00
|
|
|
</ItemTemplate>
|
|
|
|
</MudTreeView>
|
2023-04-29 19:40:16 +02:00
|
|
|
</MudStack>
|
2023-04-28 21:58:36 +02:00
|
|
|
|
|
|
|
@code {
|
2023-05-15 20:42:42 +02:00
|
|
|
public HashSet<TreeItemData> Categories = new HashSet<TreeItemData>();
|
2023-05-16 14:12:36 +02:00
|
|
|
private TreeItemData? ActivatedItem { get; set; }
|
|
|
|
private TreeItemData? SelectedItem { get; set; }
|
2023-05-15 15:53:08 +02:00
|
|
|
protected override async void OnInitialized()
|
2023-04-28 21:58:36 +02:00
|
|
|
{
|
2023-05-15 20:42:42 +02:00
|
|
|
Log.Verbose("Loading guide data...");
|
2023-05-16 14:12:36 +02:00
|
|
|
|
2023-05-15 15:53:08 +02:00
|
|
|
HashSet<CategoryModel> cats = await _rssService.GetCategories();
|
2023-05-16 14:12:36 +02:00
|
|
|
await Task.Run(() => Categories.UnionWith(cats.Select(x => new TreeItemData(x)).ToHashSet()));
|
|
|
|
|
|
|
|
Log.Verbose(" Guide initialized!");
|
|
|
|
//await Task.Run(() => Categories = cats.Select(x => new TreeItemData(x)).ToHashSet());
|
2023-04-28 21:58:36 +02:00
|
|
|
}
|
|
|
|
}
|