73 lines
2.5 KiB
Text
73 lines
2.5 KiB
Text
@page "/raidlogs"
|
|
@page "/raidlogs/{_selectedLogFolder}"
|
|
@using Lieb.Data
|
|
@using Lieb.Models
|
|
@using Lieb.Models.GuildWars2
|
|
@using System.Security.Claims
|
|
@inject UserService UserService
|
|
@inject NavigationManager NavigationManager
|
|
@inject AuthenticationStateProvider AuthenticationStateProvider
|
|
|
|
|
|
<h3>Raid Logs</h3>
|
|
|
|
<select value=@_selectedLogFolder @onchange="args => ChangeShownLogs(args)">
|
|
@if (_logGroups.Contains(TRAINING))
|
|
{
|
|
<option value="@TRAINING">@TRAINING</option>
|
|
}
|
|
@if (_logGroups.Contains(RANDOM))
|
|
{
|
|
<option value="@RANDOM">@RANDOM</option>
|
|
}
|
|
@foreach (string group in _logGroups)
|
|
{
|
|
if (_user.RoleAssignments.FirstOrDefault(r => r.LiebRole.RoleName == group) != null)
|
|
{
|
|
<option value=@group>@group</option>
|
|
}
|
|
}
|
|
</select>
|
|
|
|
<br />
|
|
|
|
@foreach(string logFolder in _availabeLogs)
|
|
{
|
|
string path = $"{LOGS}/{_selectedLogFolder}/{logFolder}/index.html";
|
|
<NavLink class="nav-link" href="@path" target="blank"> @logFolder </NavLink>
|
|
}
|
|
|
|
|
|
@code
|
|
{
|
|
[Parameter]
|
|
public string _selectedLogFolder { get; set; } = "Training";
|
|
|
|
private const string TRAINING = "Training";
|
|
private const string RANDOM = "Random";
|
|
private const string LOGS = "logs";
|
|
private const string LOG_DIR = $"wwwroot/{LOGS}";
|
|
private LiebUser _user;
|
|
private List<string> _logGroups = new List<string>();
|
|
private List<string> _availabeLogs = new List<string>();
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if(string.IsNullOrEmpty(_selectedLogFolder))
|
|
{
|
|
_selectedLogFolder = "Training";
|
|
}
|
|
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
|
|
ulong discordId = ulong.Parse(authState.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
|
|
_user = UserService.GetLiebUser(discordId);
|
|
_logGroups = Directory.EnumerateDirectories(LOG_DIR).Select(d => Path.GetFileName(d)).ToList();
|
|
_availabeLogs = Directory.EnumerateDirectories($"{LOG_DIR}/{_selectedLogFolder}").Select(d => Path.GetFileName(d)).OrderByDescending(s => s).ToList();
|
|
}
|
|
|
|
async Task ChangeShownLogs( ChangeEventArgs e)
|
|
{
|
|
_selectedLogFolder = e.Value.ToString();
|
|
NavigationManager.NavigateTo($"/raidlogs/{_selectedLogFolder}");
|
|
_availabeLogs = Directory.EnumerateDirectories($"{LOG_DIR}/{_selectedLogFolder}").Select(d => Path.GetFileName(d)).OrderByDescending(s => s).ToList();
|
|
}
|
|
}
|