@using MudBlazor @using OpenArchival.DataAccess @using Microsoft.AspNetCore.Components; @namespace OpenArchival.Blazor.ArtifactGroupingDisplay @page "/sr/{StringId}" @if (_displayImageId >= 0) { } @if (ArtifactGrouping is not null) { @ArtifactGrouping.Title @ArtifactGrouping.Description } @inject IArtifactGroupingProvider GroupingProvider; @inject NavigationManager NavigationManager; @code { [Parameter] public ArtifactGrouping? ArtifactGrouping { get; set; } private int _displayImageId = -1; /// /// Allows the component to fetch its own data from the database. If set it will query the database for an artifact groupign with this id /// [Parameter] public int Id { get; set; } = 0; [Parameter] public string? StringId { get; set; } [Parameter] public int Height { get; set; } = 350; protected override async Task OnParametersSetAsync() { if (!string.IsNullOrEmpty(StringId)) { if (!int.TryParse(StringId, out int parsedId)) { NavigationManager.NavigateTo($"/grouping-not-found/{System.Net.WebUtility.UrlEncode("Failed to parse ID")}"); } else { Id = parsedId; } } if (ArtifactGrouping is null) { var grouping = await GroupingProvider.GetGroupingAsync(Id); if (grouping is null) { NavigationManager.NavigateTo("/grouping-not-found"); } ArtifactGrouping = grouping!; } if (ArtifactGrouping is not null) { if (ArtifactGrouping.ChildArtifactEntries.Count > 0 && ArtifactGrouping.ChildArtifactEntries[0].Files.Count > 0) { _displayImageId = ArtifactGrouping.ChildArtifactEntries[0].Files[0].Id; } } StateHasChanged(); } private async Task NavigateToArchive() { await Task.Delay(4); if (ArtifactGrouping is not null) { NavigationManager.NavigateTo($"/archive/{ArtifactGrouping.Id}"); } } }