Fixed bug where deletes of artifact groupings would not cascade
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
@using MudExRichTextEditor
|
||||
@using MudBlazor
|
||||
@using OpenArchival.Blazor
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@using OpenArchival.Blazor.Config
|
||||
|
||||
<MudText Typo="Typo.h6">About Page Editor</MudText>
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
@using Microsoft.AspNetCore.Components.Routing
|
||||
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
||||
@using MudBlazor
|
||||
@inherits LayoutComponentBase
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<MudThemeProvider />
|
||||
<MudPopoverProvider />
|
||||
<MudDialogProvider />
|
||||
<MudSnackbarProvider />
|
||||
|
||||
<MudLayout>
|
||||
<MudAppBar Elevation="1">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@ToggleDrawer" />
|
||||
<MudText Typo="Typo.h5" Class="ml-3">Admin Console</MudText>
|
||||
<MudSpacer />
|
||||
<MudIconButton Icon="@Icons.Material.Filled.MoreVert" Color="Color.Inherit" Edge="Edge.End" />
|
||||
</MudAppBar>
|
||||
|
||||
<MudDrawer @bind-Open="_drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="2">
|
||||
<MudNavMenu>
|
||||
<MudNavLink Href="/admin/archiveadmin" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Dashboard">Archive Entry Management</MudNavLink>
|
||||
<MudNavLink Href="/admin/searchpage" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Search">Search Page Settings</MudNavLink>
|
||||
<MudNavLink Href="/admin/homepageeditor" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Home">Home Page Editor</MudNavLink>
|
||||
<MudNavLink Href="/admin/aboutpageeditor" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.QuestionMark">About Page Editor</MudNavLink>
|
||||
|
||||
<MudNavGroup Title="Blog" Icon="@Icons.Material.Filled.Book">
|
||||
<MudNavLink Href="/admin/blogedit" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Edit">Create Blog Post</MudNavLink>
|
||||
<MudNavLink Href="/admin/viewblogs" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Edit">View/Edit Blog Posts</MudNavLink>
|
||||
</MudNavGroup>
|
||||
</MudNavMenu>
|
||||
</MudDrawer>
|
||||
|
||||
<MudMainContent>
|
||||
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pa-8">
|
||||
@Body
|
||||
</MudContainer>
|
||||
</MudMainContent>
|
||||
</MudLayout>
|
||||
|
||||
<div id="blazor-error-ui" data-nosnippet>
|
||||
An unhandled error has occurred.
|
||||
<a href="." class="reload">Reload</a>
|
||||
<span class="dismiss">🗙</span>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private bool _drawerOpen = true;
|
||||
|
||||
private void ToggleDrawer()
|
||||
{
|
||||
_drawerOpen = !_drawerOpen;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@page "/admin"
|
||||
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@layout AdminControlPanelLayout
|
||||
|
||||
<h3>Admin Home</h3>
|
||||
|
||||
@@ -1,358 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using System.ComponentModel.DataAnnotations
|
||||
@using MudBlazor
|
||||
@using global::OpenArchival.DataAccess
|
||||
@using OpenArchival.Blazor.CustomComponents
|
||||
|
||||
@inject IDialogService DialogService
|
||||
@inject NavigationManager NavigationManager;
|
||||
@inject IArchiveCategoryProvider CategoryProvider;
|
||||
@inject ArtifactEntrySharedHelpers Helpers;
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<MudText Typo="Typo.h5" Color="Color.Primary">Add an Archive Item</MudText>
|
||||
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
|
||||
@foreach (var result in ValidationResults)
|
||||
{
|
||||
<MudAlert Severity="Severity.Error">@result.ErrorMessage</MudAlert>
|
||||
}
|
||||
|
||||
<MudGrid Justify="Justify.Center" Class="pt-4">
|
||||
<MudItem>
|
||||
<MudAutocomplete
|
||||
T="ArchiveCategory"
|
||||
ToStringFunc="@(val => val?.Name)"
|
||||
Label="Category"
|
||||
@bind-Value="Model.Category"
|
||||
@bind-Value:after=OnCategoryChanged
|
||||
SearchFunc="SearchCategory"
|
||||
CoerceValue=false
|
||||
CoerceText=false
|
||||
/>
|
||||
</MudItem>
|
||||
|
||||
<MudItem>
|
||||
<MudFab Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add" OnClick="OnAddCategoryClicked"/>
|
||||
</MudItem>
|
||||
|
||||
</MudGrid>
|
||||
</MudPaper>
|
||||
|
||||
<div @ref="_formDiv" style="@_formDivStyle">
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Identifier</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<IdentifierTextBox @ref="_identifierTextBox" IdentifierFields="@Model.IdentifierFieldValues"></IdentifierTextBox>
|
||||
</MudPaper>
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Title</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField
|
||||
T="string"
|
||||
For="@(() => Model.Title)"
|
||||
Placeholder="Grouping Title"
|
||||
@bind-Value=Model.Title></MudTextField>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Description</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField
|
||||
T="string"
|
||||
For="@(() => Model.Description)"
|
||||
Lines="5"
|
||||
Placeholder="Grouping Description"
|
||||
@bind-Value=Model.Description></MudTextField>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Type</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudAutocomplete
|
||||
For="@(() => Model.Type)"
|
||||
T="string"
|
||||
Label="Artifact Type"
|
||||
Class="pt-0 mt-0 pl-2 pr-2"
|
||||
@bind-Value=Model.Type
|
||||
SearchFunc="Helpers.SearchItemTypes"
|
||||
CoerceValue=true></MudAutocomplete>
|
||||
</MudPaper>
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<UploadDropBox
|
||||
@ref="@_uploadComponent"
|
||||
FilesUploaded="OnFilesUploaded"
|
||||
ClearClicked="OnClearFilesClicked"
|
||||
ExistingFiles="ExistingFiles"></UploadDropBox>
|
||||
</MudPaper>
|
||||
@if (Model is not null)
|
||||
{
|
||||
@for (int index = 0; index < Model.ArtifactEntries.Count; ++index)
|
||||
{
|
||||
// Capture the current item in a local variable for the lambda
|
||||
var currentEntry = Model.ArtifactEntries[index];
|
||||
|
||||
<ArchiveEntryCreatorCard Model="currentEntry"
|
||||
ModelChanged="(updatedEntry) => HandleEntryUpdate(currentEntry, updatedEntry)"
|
||||
InputsChanged="OnChanged"
|
||||
@key="currentEntry"
|
||||
ArtifactEntryIndex="index"
|
||||
OnEntryDeletedClicked="OnDeleteEntryClicked"/>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
|
||||
<MudGrid Justify="Justify.FlexEnd" Class="pt-6">
|
||||
<MudItem>
|
||||
<MudCheckBox Label="Publicly Visible" T="bool" @bind-Value=Model.IsPublicallyVisible></MudCheckBox>
|
||||
</MudItem>
|
||||
|
||||
@if (FormButtonsEnabled)
|
||||
{
|
||||
<MudItem Class="pr-0">
|
||||
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="CancelClicked">Cancel</MudButton>
|
||||
</MudItem>
|
||||
|
||||
<MudItem Class="pl-2">
|
||||
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="PublishClicked" Disabled="@(!IsValid)" >Publish</MudButton>
|
||||
</MudItem>
|
||||
}
|
||||
</MudGrid>
|
||||
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public bool ClearOnPublish { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// The URI to navigate to if cancel is pressed. null to navigate to no page
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string? BackLink { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// The URI to navigate to if publish is pressed, null to navigate to no page
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string? ForwardLink { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Called when publish is clicked
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<ArtifactGroupingValidationModel> GroupingPublished { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The model to display on the form
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public ArtifactGroupingValidationModel Model { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Determines if the cancel and publish buttons should be show to the user or if the containing component will
|
||||
/// handle their functionality (ie if used in a dialog and you want to use the dialog buttons instead of this component's handlers)
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public bool FormButtonsEnabled { get; set; } = true;
|
||||
|
||||
private UploadDropBox _uploadComponent = default!;
|
||||
|
||||
private IdentifierTextBox _identifierTextBox = default!;
|
||||
|
||||
private ElementReference _formDiv = default!;
|
||||
|
||||
private bool _isFormDivVisible = false;
|
||||
|
||||
private string _formDivStyle => _isFormDivVisible ? "" : "display: none;";
|
||||
|
||||
public List<string> DatesData { get; set; } = [];
|
||||
|
||||
public List<ArchiveCategory> Categories { get; set; } = new();
|
||||
|
||||
private List<FilePathListing> _filePathListings = new();
|
||||
|
||||
private bool _categorySelected = false;
|
||||
|
||||
public bool IsValid { get; set; } = false;
|
||||
|
||||
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
||||
|
||||
// Used to store the files that have already been uploaded if this component is being displayed
|
||||
// with a filled in model. Used to populate the upload drop box
|
||||
private List<FilePathListing> ExistingFiles { get; set; } = new();
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
// Ensure to reload the component if a model has been supplied so that the full
|
||||
// component will render
|
||||
if (Model?.Category is not null)
|
||||
{
|
||||
await OnCategoryChanged();
|
||||
}
|
||||
|
||||
if (Model is not null && Model.Category is not null)
|
||||
{
|
||||
// The data entry should only be shown if a category has been selected
|
||||
_isFormDivVisible = true;
|
||||
} else
|
||||
{
|
||||
_isFormDivVisible = false;
|
||||
}
|
||||
|
||||
if (Model is not null)
|
||||
{
|
||||
ExistingFiles = Model.ArtifactEntries
|
||||
.Where(e => e.Files.Any())
|
||||
.Select(e => e.Files[0])
|
||||
.ToList();
|
||||
}
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task PublishClicked(MouseEventArgs args)
|
||||
{
|
||||
var validationContext = new ValidationContext(Model);
|
||||
var validationResult = new List<ValidationResult>();
|
||||
|
||||
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
||||
ArtifactGroupingValidationModel oldModel = Model;
|
||||
if (ForwardLink is not null)
|
||||
{
|
||||
if (IsValid)
|
||||
{
|
||||
NavigationManager.NavigateTo(ForwardLink);
|
||||
}
|
||||
}
|
||||
|
||||
if (IsValid && ClearOnPublish)
|
||||
{
|
||||
Model = new();
|
||||
await _uploadComponent.ClearClicked.InvokeAsync();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
await GroupingPublished.InvokeAsync(oldModel);
|
||||
}
|
||||
|
||||
private void CancelClicked(MouseEventArgs args)
|
||||
{
|
||||
if (BackLink is not null) {
|
||||
NavigationManager.NavigateTo(BackLink);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentNullException("No back link provided for the add archive item page.");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task HandleEntryUpdate(ArtifactEntryValidationModel originalEntry, ArtifactEntryValidationModel updatedEntry)
|
||||
{
|
||||
// Find the index of the original object in our list
|
||||
var index = Model.ArtifactEntries.IndexOf(originalEntry);
|
||||
|
||||
// If found, replace it with the updated version
|
||||
if (index != -1)
|
||||
{
|
||||
Model.ArtifactEntries[index] = updatedEntry;
|
||||
}
|
||||
|
||||
// Now, run the validation logic
|
||||
await OnChanged();
|
||||
}
|
||||
|
||||
// You can now simplify your OnFilesUploaded method slightly
|
||||
private async Task OnFilesUploaded(List<FilePathListing> args)
|
||||
{
|
||||
_filePathListings = args;
|
||||
|
||||
// This part is tricky. Adding items while iterating can be problematic.
|
||||
// A better approach is to create the entries first, then tell Blazor to render.
|
||||
var newEntries = new List<ArtifactEntryValidationModel>();
|
||||
foreach (var file in args)
|
||||
{
|
||||
// Associate the file with the entry if needed
|
||||
newEntries.Add(new ArtifactEntryValidationModel { Files = [file]});
|
||||
}
|
||||
Model.ArtifactEntries.AddRange(newEntries);
|
||||
|
||||
// StateHasChanged() is implicitly called by OnChanged() if validation passes
|
||||
await OnChanged();
|
||||
}
|
||||
|
||||
private async Task OnClearFilesClicked()
|
||||
{
|
||||
_filePathListings = [];
|
||||
Model.ArtifactEntries = [];
|
||||
StateHasChanged();
|
||||
await OnChanged();
|
||||
}
|
||||
|
||||
async Task OnChanged()
|
||||
{
|
||||
var validationContext = new ValidationContext(Model);
|
||||
var validationResult = new List<ValidationResult>();
|
||||
|
||||
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
||||
|
||||
if (IsValid)
|
||||
{
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
async Task OnCategoryChanged()
|
||||
{
|
||||
if (Model.Category is not null && _identifierTextBox is not null)
|
||||
{
|
||||
_identifierTextBox.VerifyFormatCategory = Model.Category;
|
||||
_isFormDivVisible = true;
|
||||
if (!_categorySelected)
|
||||
{
|
||||
_categorySelected = true;
|
||||
}
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
await OnChanged();
|
||||
}
|
||||
|
||||
public async Task OnAddCategoryClicked()
|
||||
{
|
||||
var options = new DialogOptions { CloseOnEscapeKey = true, BackdropClick = false };
|
||||
var dialog = await DialogService.ShowAsync<CategoryCreatorDialog>("Create a Category", options);
|
||||
|
||||
var result = await dialog.Result;
|
||||
|
||||
if (result is not null && !result.Canceled)
|
||||
{
|
||||
await CategoryProvider.CreateCategoryAsync(CategoryValidationModel.ToArchiveCategory((CategoryValidationModel)result.Data));
|
||||
StateHasChanged();
|
||||
await OnChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<ArchiveCategory>> SearchCategory(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<ArchiveCategory> categories;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
categories = new(await CategoryProvider.Top(25) ?? []);
|
||||
}
|
||||
else
|
||||
{
|
||||
categories = new((await CategoryProvider.Search(value) ?? []));
|
||||
}
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
private async void OnDeleteEntryClicked((int index, string filename) data)
|
||||
{
|
||||
Model.ArtifactEntries.RemoveAt(data.index);
|
||||
_uploadComponent.RemoveFile(data.filename);
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using MudBlazor
|
||||
|
||||
<MudDialog>
|
||||
<TitleContent>
|
||||
<MudText Typo="Typo.h6">Edit a Category</MudText>
|
||||
</TitleContent>
|
||||
|
||||
<DialogContent>
|
||||
<AddArchiveGroupingComponent
|
||||
Model="Model"
|
||||
FormButtonsEnabled=false></AddArchiveGroupingComponent>
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
<MudButton OnClick="OnCancel">Cancel</MudButton>
|
||||
<MudButton Color="Color.Primary" OnClick="OnSubmit">OK</MudButton>
|
||||
</DialogActions>
|
||||
</MudDialog>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public required ArtifactGroupingValidationModel Model { get; set; }
|
||||
|
||||
[CascadingParameter]
|
||||
IMudDialogInstance MudDialog { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public bool IsUpdate { get; set; } = false;
|
||||
|
||||
|
||||
private void OnCancel(MouseEventArgs args)
|
||||
{
|
||||
MudDialog.Cancel();
|
||||
}
|
||||
private void OnSubmit(MouseEventArgs args)
|
||||
{
|
||||
MudDialog.Close(DialogResult.Ok(Model));
|
||||
}
|
||||
}
|
||||
@@ -1,331 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using OpenArchival.DataAccess
|
||||
@using System.ComponentModel.DataAnnotations
|
||||
@using OpenArchival.Blazor.CustomComponents
|
||||
@using MudBlazor
|
||||
|
||||
@inject ArtifactEntrySharedHelpers Helpers;
|
||||
@inject IArtifactDefectProvider DefectsProvider;
|
||||
@inject IArtifactStorageLocationProvider StorageLocationProvider;
|
||||
@inject IArchiveEntryTagProvider TagsProvider;
|
||||
@inject IArtifactTypeProvider TypesProvider;
|
||||
@inject IListedNameProvider ListedNameProvider;
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<MudGrid>
|
||||
<MudItem>
|
||||
@if (Model.Files.Count > 0) {
|
||||
<MudText Typo="Typo.h6">@(Model.Files[0].OriginalName)</MudText>
|
||||
}
|
||||
</MudItem>
|
||||
<MudItem>
|
||||
<MudButton
|
||||
Variant="Variant.Filled"
|
||||
StartIcon="@Icons.Material.Filled.Delete"
|
||||
Color="Color.Error"
|
||||
OnClick="OnDeleteEntryClicked"
|
||||
>Delete</MudButton>
|
||||
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
|
||||
@foreach (var error in ValidationResults)
|
||||
{
|
||||
<MudAlert Severity="Severity.Error">
|
||||
@error.ErrorMessage
|
||||
</MudAlert>
|
||||
}
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Title</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField For="@(() => Model.Title)" Required=true Placeholder="Archive Item Title" T="string" Class="pl-4 pr-4" @bind-Value=Model.Title @bind-Value:after=OnInputsChanged></MudTextField>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Numbering</MudText>
|
||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Enter a unique ID for this entry</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField For="@(() => Model.ArtifactNumber)" Placeholder="Numbering" T="string" @bind-Value=Model.ArtifactNumber @bind-Value:after=OnInputsChanged/>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Item Description</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField For="@(() => Model.Description)" Lines=8 Placeholder="Description" T="string" Class="pl-4 pr-4" @bind-Value=Model.Description @bind-Value:after=OnInputsChanged></MudTextField>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Item Quantity</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudNumericField Min="0" @bind-Value=Model.Quantity></MudNumericField>
|
||||
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Storage Location</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudAutocomplete For="@(() => Model.StorageLocation)" T="string" Label="Storage Location" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.StorageLocation @bind-Value:after=OnInputsChanged SearchFunc="Helpers.SearchStorageLocation" CoerceValue=true></MudAutocomplete>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Type</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudAutocomplete For="@(() => Model.Type)" T="string" Label="Artifact Type" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.Type @bind-Value:after=OnInputsChanged SearchFunc="Helpers.SearchItemTypes" CoerceValue=true></MudAutocomplete>
|
||||
|
||||
@* Tags entry *@
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Tags</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<ChipContainer T="string" @ref="@_tagsChipContainer" @bind-Items="Model.Tags">
|
||||
<InputContent>
|
||||
<MudAutocomplete T="string"
|
||||
OnInternalInputChanged="OnInputsChanged"
|
||||
SearchFunc="Helpers.SearchTags"
|
||||
Value="_tagsInputValue"
|
||||
ValueChanged="OnTagsInputTextChanged"
|
||||
OnKeyDown="@(ev => HandleChipContainerEnter<string>(ev, _tagsChipContainer, _tagsInputValue, () => _tagsInputValue = string.Empty))"
|
||||
CoerceValue=true
|
||||
Placeholder="Add Tags..."
|
||||
ShowProgressIndicator="true"
|
||||
>
|
||||
</MudAutocomplete>
|
||||
</InputContent>
|
||||
</ChipContainer>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Listed Names</MudText>
|
||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Enter any names of the people associated with this entry.</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<ChipContainer T="string" @ref=_listedNamesChipContainer @bind-Items="Model.ListedNames">
|
||||
<InputContent>
|
||||
<MudAutocomplete T="string"
|
||||
SearchFunc="Helpers.SearchListedNames"
|
||||
OnInternalInputChanged="OnInputsChanged"
|
||||
Value="_listedNamesInputValue"
|
||||
ValueChanged="OnListedNamesTextChanged"
|
||||
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _listedNamesChipContainer, _listedNamesInputValue, () => _listedNamesInputValue = string.Empty))"
|
||||
CoerceValue=true
|
||||
Placeholder="Add Listed Names..."
|
||||
ShowProgressIndicator=true>
|
||||
</MudAutocomplete>
|
||||
</InputContent>
|
||||
</ChipContainer>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Associated Dates</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<ChipContainer T="DateTime" @ref="_assocaitedDatesChipContainer" @bind-Items="Model.AssociatedDates" DisplayFunc="date => date.ToShortDateString()">
|
||||
<InputContent>
|
||||
<MudDatePicker @bind-Date=_associatedDateInputValue MinDate="new DateTime(1000, 1, 1)">
|
||||
</MudDatePicker>
|
||||
</InputContent>
|
||||
<SubmitButton>
|
||||
<MudButton Color="Color.Primary"
|
||||
OnClick="HandleAssociatedDateChipContainerAdd">+</MudButton>
|
||||
</SubmitButton>
|
||||
</ChipContainer>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Defects</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<ChipContainer T="string" @ref=_defectsChipContainer @bind-Items="Model.Defects">
|
||||
<InputContent>
|
||||
<MudAutocomplete T="string"
|
||||
SearchFunc="Helpers.SearchDefects"
|
||||
OnInternalInputChanged="OnInputsChanged"
|
||||
Value="_defectsInputValue"
|
||||
ValueChanged="OnDefectsValueChanged"
|
||||
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _defectsChipContainer, _defectsInputValue, () => _defectsInputValue = string.Empty))"
|
||||
CoerceValue=true
|
||||
Placeholder="Add Defects..."
|
||||
ShowProgressIndicator=true>
|
||||
</MudAutocomplete>
|
||||
</InputContent>
|
||||
</ChipContainer>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Related Artifacts</MudText>
|
||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Tag this entry with the identifier of any other entry to link them.</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<ChipContainer T="ArtifactEntry" @ref="_assocaitedArtifactsChipContainer" @bind-Items="Model.RelatedArtifacts" DisplayFunc="artifact => artifact.ArtifactIdentifier">
|
||||
<InputContent>
|
||||
<MudAutocomplete T="ArtifactEntry"
|
||||
OnInternalInputChanged="OnInputsChanged"
|
||||
Value="_associatedArtifactValue"
|
||||
ValueChanged="OnAssociatedArtifactChanged"
|
||||
OnKeyDown="@(EventArgs=>HandleChipContainerEnter<ArtifactEntry>(EventArgs, _assocaitedArtifactsChipContainer, _associatedArtifactValue, () => _associatedArtifactValue = null))"
|
||||
CoerceValue="false"
|
||||
Placeholder="Link artifact groupings..."
|
||||
ShowProgressIndicator=true>
|
||||
</MudAutocomplete>
|
||||
</InputContent>
|
||||
</ChipContainer>
|
||||
|
||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Text Contents</MudText>
|
||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Input the text transcription of the words on the artifact if applicable to aid the search engine.</MudText>
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudTextField T="string"
|
||||
Value=Model.FileTextContent
|
||||
ValueChanged="OnArtifactTextContentChanged"
|
||||
Lines="5"
|
||||
For="@(() => Model.FileTextContent)"></MudTextField>
|
||||
|
||||
<MudText Typo=Typo.h6 Color="Color.Primary">Additional files</MudText>
|
||||
<UploadDropBox @ref=_uploadDropBox FilesUploaded="OnFilesUploaded"></UploadDropBox>
|
||||
</MudPaper>
|
||||
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public required FilePathListing MainFilePath { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<ArtifactEntryValidationModel> ModelChanged { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback InputsChanged { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public required ArtifactEntryValidationModel Model { get; set; } = new() { StorageLocation = "hello", Title = "Hello" };
|
||||
|
||||
[Parameter]
|
||||
public required int ArtifactEntryIndex {get; set;}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<(int index, string filename)> OnEntryDeletedClicked { get; set; }
|
||||
|
||||
private ChipContainer<string> _tagsChipContainer;
|
||||
|
||||
private string _tagsInputValue { get; set; } = "";
|
||||
|
||||
private ChipContainer<DateTime> _assocaitedDatesChipContainer;
|
||||
|
||||
private DateTime? _associatedDateInputValue { get; set; } = default;
|
||||
|
||||
private ChipContainer<string> _listedNamesChipContainer;
|
||||
|
||||
private string _listedNamesInputValue { get; set; } = "";
|
||||
|
||||
private ChipContainer<string> _defectsChipContainer;
|
||||
|
||||
private string _defectsInputValue = "";
|
||||
|
||||
private ChipContainer<ArtifactEntry> _assocaitedArtifactsChipContainer;
|
||||
|
||||
private ArtifactEntry? _associatedArtifactValue = null;
|
||||
|
||||
private string _artifactTextContent = "";
|
||||
|
||||
public bool IsValid { get; set; }
|
||||
|
||||
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
||||
|
||||
public UploadDropBox _uploadDropBox = default!;
|
||||
|
||||
protected override Task OnParametersSetAsync()
|
||||
{
|
||||
if (_uploadDropBox is not null && Model is not null && Model.Files is not null)
|
||||
{
|
||||
_uploadDropBox.ExistingFiles = Model.Files.GetRange(1, Model.Files.Count - 1);
|
||||
}
|
||||
|
||||
if (Model.Files is not null && Model.Files.Any())
|
||||
{
|
||||
MainFilePath = Model.Files[0];
|
||||
}
|
||||
|
||||
return base.OnParametersSetAsync();
|
||||
}
|
||||
|
||||
public async Task OnInputsChanged()
|
||||
{
|
||||
// 1. Clear previous validation errors
|
||||
ValidationResults.Clear();
|
||||
|
||||
var validationContext = new ValidationContext(Model);
|
||||
|
||||
// 2. Run the validator
|
||||
IsValid = Validator.TryValidateObject(Model, validationContext, ValidationResults, validateAllProperties: true);
|
||||
// 3. REMOVE this line. Let the parent's update trigger the re-render.
|
||||
// StateHasChanged();
|
||||
|
||||
await InputsChanged.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task OnFilesUploaded(List<FilePathListing> filePathListings)
|
||||
{
|
||||
if (MainFilePath is not null)
|
||||
{
|
||||
var oldFiles = Model.Files.GetRange(1, Model.Files.Count - 1);
|
||||
Model.Files = [MainFilePath];
|
||||
Model.Files.AddRange(oldFiles);
|
||||
Model.Files.AddRange(filePathListings);
|
||||
} else
|
||||
{
|
||||
Model.Files = [];
|
||||
}
|
||||
Model.Files.AddRange(filePathListings);
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task OnFilesCleared()
|
||||
{
|
||||
if (MainFilePath is not null) {
|
||||
Model.Files = [MainFilePath];
|
||||
} else
|
||||
{
|
||||
Model.Files = [];
|
||||
}
|
||||
}
|
||||
|
||||
private Task OnDefectsValueChanged(string text)
|
||||
{
|
||||
_defectsInputValue = text;
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
private Task OnTagsInputTextChanged(string text)
|
||||
{
|
||||
_tagsInputValue = text;
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
private Task OnListedNamesTextChanged(string text)
|
||||
{
|
||||
_listedNamesInputValue = text;
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
private Task OnAssociatedArtifactChanged(ArtifactEntry grouping)
|
||||
{
|
||||
if (grouping is not null)
|
||||
{
|
||||
_associatedArtifactValue = grouping;
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
private Task OnArtifactTextContentChanged(string value)
|
||||
{
|
||||
Model.FileTextContent = value;
|
||||
return ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
|
||||
public async Task HandleChipContainerEnter<Type>(KeyboardEventArgs args, ChipContainer<Type> container, Type value, Action resetInputAction)
|
||||
{
|
||||
if (args.Key == "Enter")
|
||||
{
|
||||
await container.AddItem(value);
|
||||
resetInputAction?.Invoke();
|
||||
StateHasChanged();
|
||||
await ModelChanged.InvokeAsync(Model);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task HandleAssociatedDateChipContainerAdd(MouseEventArgs args)
|
||||
{
|
||||
if (_associatedDateInputValue is not null)
|
||||
{
|
||||
DateTime unspecifiedDate = (DateTime)_associatedDateInputValue;
|
||||
|
||||
DateTime utcDate = DateTime.SpecifyKind(unspecifiedDate, DateTimeKind.Utc);
|
||||
|
||||
await _assocaitedDatesChipContainer.AddItem(utcDate);
|
||||
|
||||
_associatedDateInputValue = default;
|
||||
}
|
||||
}
|
||||
private async Task OnDeleteEntryClicked(MouseEventArgs args)
|
||||
{
|
||||
await OnEntryDeletedClicked.InvokeAsync((ArtifactEntryIndex, MainFilePath.OriginalName));
|
||||
}
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using MudBlazor
|
||||
@using MudExtensions
|
||||
@using OpenArchival.DataAccess
|
||||
|
||||
<MudDataGrid
|
||||
T="ArtifactGroupingRowElement"
|
||||
MultiSelection=true
|
||||
Filterable=false
|
||||
SelectOnRowClick=true
|
||||
ServerData="new Func<GridState<ArtifactGroupingRowElement>, Task<GridData<ArtifactGroupingRowElement>>>(ServerReload)"
|
||||
@key=@ArtifactGroupingRows
|
||||
@ref=@DataGrid>
|
||||
|
||||
<ToolBarContent>
|
||||
<MudButton
|
||||
Variant="Variant.Filled"
|
||||
StartIcon="@Icons.Material.Filled.Delete"
|
||||
Color="Color.Error"
|
||||
OnClick="OnDeleteClicked">Delete</MudButton>
|
||||
</ToolBarContent>
|
||||
|
||||
<Columns>
|
||||
<SelectColumn T="ArtifactGroupingRowElement"/>
|
||||
|
||||
<PropertyColumn
|
||||
Title="Id"
|
||||
Property="x=>x.ArtifactGroupingIdentifier"
|
||||
Filterable="false"/>
|
||||
|
||||
<PropertyColumn
|
||||
Title="Category"
|
||||
Property="x=>x.CategoryName"
|
||||
Filterable="false"/>
|
||||
|
||||
<PropertyColumn
|
||||
Title="Title"
|
||||
Property="x=>x.Title"
|
||||
Filterable="false"/>
|
||||
|
||||
<PropertyColumn
|
||||
Title="Publically Visible"
|
||||
Property="x=>x.IsPublicallyVisible"
|
||||
Filterable="false"/>
|
||||
|
||||
<TemplateColumn Title="Edit">
|
||||
<CellTemplate>
|
||||
<MudIconButton
|
||||
Color="Color.Primary"
|
||||
Icon="@Icons.Material.Filled.Edit"
|
||||
Variant="Variant.Filled"
|
||||
OnClick="() => OnRowEditClick(context.Item)">Edit</MudIconButton>
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
|
||||
</Columns>
|
||||
|
||||
<PagerContent>
|
||||
<MudDataGridPager T="ArtifactGroupingRowElement"/>
|
||||
</PagerContent>
|
||||
</MudDataGrid>
|
||||
|
||||
|
||||
@inject IArtifactGroupingProvider GroupingProvider;
|
||||
@inject IDialogService DialogService;
|
||||
@inject IArtifactGroupingProvider GroupingProvider;
|
||||
@inject ArtifactEntrySharedHelpers Helpers;
|
||||
|
||||
@code
|
||||
{
|
||||
public List<ArtifactGroupingRowElement> ArtifactGroupingRows { get; set; } = new();
|
||||
|
||||
public MudDataGrid<ArtifactGroupingRowElement> DataGrid { get; set; } = default!;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// Load inital data
|
||||
List<ArtifactGrouping> groupings = await GroupingProvider.GetGroupingsPaged(1, 25);
|
||||
SetGroupingRows(groupings);
|
||||
|
||||
await base.OnInitializedAsync();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private void SetGroupingRows(IEnumerable<ArtifactGrouping> groupings)
|
||||
{
|
||||
ArtifactGroupingRows.Clear();
|
||||
|
||||
foreach (var grouping in groupings)
|
||||
{
|
||||
ArtifactGroupingRows.Add(new ArtifactGroupingRowElement()
|
||||
{
|
||||
ArtifactGroupingIdentifier=grouping.ArtifactGroupingIdentifier ?? throw new ArgumentNullException(nameof(grouping), "Got a null grouping identifier"),
|
||||
CategoryName=grouping.Category.Name,
|
||||
Title=grouping.Title,
|
||||
IsPublicallyVisible=grouping.IsPublicallyVisible,
|
||||
Id=grouping.Id
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnRowEditClick(ArtifactGroupingRowElement row)
|
||||
{
|
||||
var parameters = new DialogParameters();
|
||||
|
||||
var model = await GroupingProvider.GetGroupingAsync(row.Id);
|
||||
|
||||
parameters.Add("Model", ArtifactGroupingValidationModel.ToValidationModel(model));
|
||||
|
||||
var options = new DialogOptions()
|
||||
{
|
||||
MaxWidth = MaxWidth.ExtraExtraLarge,
|
||||
FullWidth = true
|
||||
};
|
||||
|
||||
var dialog = await DialogService.ShowAsync<AddGroupingDialog>("Edit Grouping", parameters, options);
|
||||
|
||||
var result = await dialog.Result;
|
||||
|
||||
if (result is not null && !result.Canceled)
|
||||
{
|
||||
var validationModel = (ArtifactGroupingValidationModel)result.Data!;
|
||||
|
||||
await Helpers.OnGroupingPublished(validationModel);
|
||||
|
||||
await DataGrid.ReloadServerData();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnDeleteClicked(MouseEventArgs args)
|
||||
{
|
||||
HashSet<ArtifactGroupingRowElement> selected = DataGrid.SelectedItems;
|
||||
|
||||
bool? confirmed = await DialogService.ShowMessageBox
|
||||
(
|
||||
new MessageBoxOptions(){
|
||||
Message=$"Are you sure you want to delete {selected.Count} groupings?",
|
||||
Title="Delete Groupings",
|
||||
CancelText="Cancel",
|
||||
YesText="Delete"
|
||||
});
|
||||
|
||||
if (confirmed is not null && (confirmed ?? throw new ArgumentNullException("confirmed was null")))
|
||||
{
|
||||
foreach (var grouping in selected)
|
||||
{
|
||||
await GroupingProvider.DeleteGroupingAsync(grouping.Id);
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<GridData<ArtifactGroupingRowElement>> ServerReload(GridState<ArtifactGroupingRowElement> state)
|
||||
{
|
||||
int totalItems = await GroupingProvider.GetTotalCount();
|
||||
|
||||
IEnumerable<ArtifactGrouping> groupings = await GroupingProvider.GetGroupingsPaged(state.Page + 1, state.PageSize);
|
||||
|
||||
var pagedItems = groupings.Select(grouping => new ArtifactGroupingRowElement()
|
||||
{
|
||||
Id = grouping.Id,
|
||||
Title = grouping.Title,
|
||||
ArtifactGroupingIdentifier = grouping.ArtifactGroupingIdentifier ?? throw new ArgumentNullException(nameof(grouping), "Got a null ArtifactGroupingIdentifier"),
|
||||
CategoryName = grouping.Category.Name,
|
||||
IsPublicallyVisible = grouping.IsPublicallyVisible,
|
||||
});
|
||||
|
||||
return new GridData<ArtifactGroupingRowElement>()
|
||||
{
|
||||
TotalItems = totalItems,
|
||||
Items = pagedItems
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,259 +0,0 @@
|
||||
namespace OpenArchival.Blazor.AdminPages;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OpenArchival.DataAccess;
|
||||
|
||||
public class ArtifactEntrySharedHelpers
|
||||
{
|
||||
IArtifactDefectProvider DefectsProvider { get; set; }
|
||||
|
||||
IArtifactStorageLocationProvider StorageLocationProvider { get; set; }
|
||||
|
||||
IArchiveEntryTagProvider TagsProvider { get; set; }
|
||||
|
||||
IArtifactTypeProvider TypesProvider { get; set; }
|
||||
|
||||
IListedNameProvider ListedNameProvider { get; set; }
|
||||
|
||||
IDbContextFactory<ApplicationDbContext> DbContextFactory { get; set; }
|
||||
|
||||
IArtifactGroupingProvider GroupingProvider { get; set; }
|
||||
|
||||
|
||||
public ArtifactEntrySharedHelpers(IArtifactDefectProvider defectsProvider, IArtifactStorageLocationProvider storageLocationProvider, IArchiveEntryTagProvider tagsProvider, IArtifactTypeProvider typesProvider, IListedNameProvider listedNamesProvider, IDbContextFactory<ApplicationDbContext> contextFactory, IArtifactGroupingProvider groupingProvider)
|
||||
{
|
||||
DefectsProvider = defectsProvider;
|
||||
StorageLocationProvider = storageLocationProvider;
|
||||
TagsProvider = tagsProvider;
|
||||
TypesProvider = typesProvider;
|
||||
ListedNameProvider = listedNamesProvider;
|
||||
DbContextFactory = contextFactory;
|
||||
GroupingProvider = groupingProvider;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchDefects(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> defects;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
defects = new((await DefectsProvider.Top(25) ?? []).Select(prop => prop.Description));
|
||||
}
|
||||
else
|
||||
{
|
||||
defects = new((await DefectsProvider.Search(value) ?? []).Select(prop => prop.Description));
|
||||
}
|
||||
|
||||
return defects;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchStorageLocation(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> storageLocations;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
storageLocations = new((await StorageLocationProvider.Top(25) ?? []).Select(prop => prop.Location));
|
||||
}
|
||||
else
|
||||
{
|
||||
storageLocations = new((await StorageLocationProvider.Search(value) ?? []).Select(prop => prop.Location));
|
||||
}
|
||||
|
||||
return storageLocations;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchTags(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> tags;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
tags = new((await TagsProvider.Top(25) ?? []).Select(prop => prop.Name));
|
||||
}
|
||||
else
|
||||
{
|
||||
tags = new((await TagsProvider.Search(value) ?? []).Select(prop => prop.Name));
|
||||
}
|
||||
|
||||
return tags;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchItemTypes(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> itemTypes;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
itemTypes = new((await TypesProvider.Top(25) ?? []).Select(prop => prop.Name));
|
||||
}
|
||||
else
|
||||
{
|
||||
itemTypes = new((await TypesProvider.Search(value) ?? []).Select(prop => prop.Name));
|
||||
}
|
||||
|
||||
return itemTypes;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchListedNames(string value, CancellationToken cancellationToken)
|
||||
{
|
||||
List<ListedName> names;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
names = new((await ListedNameProvider.Top(25) ?? []));
|
||||
}
|
||||
else
|
||||
{
|
||||
names = new((await ListedNameProvider.Search(value) ?? []));
|
||||
}
|
||||
|
||||
return names.Select(p => p.Value);
|
||||
}
|
||||
|
||||
/*
|
||||
public async Task OnGroupingPublished(ArtifactGroupingValidationModel model)
|
||||
{
|
||||
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var grouping = model.ToArtifactGrouping();
|
||||
|
||||
// The old logic for attaching the category is still good.
|
||||
context.Attach(grouping.Category);
|
||||
|
||||
// 1. Handle ArtifactType (no change, this was fine)
|
||||
if (grouping.Type is not null)
|
||||
{
|
||||
var existingType = await context.ArtifactTypes
|
||||
.FirstOrDefaultAsync(t => t.Name == grouping.Type.Name);
|
||||
|
||||
if (existingType is not null)
|
||||
{
|
||||
grouping.Type = existingType;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Process ChildArtifactEntries
|
||||
foreach (var entry in grouping.ChildArtifactEntries)
|
||||
{
|
||||
// Handle ArtifactStorageLocation (no change, this was fine)
|
||||
var existingLocation = await context.ArtifactStorageLocations
|
||||
.FirstOrDefaultAsync(l => l.Location == entry.StorageLocation.Location);
|
||||
|
||||
if (existingLocation is not null)
|
||||
{
|
||||
entry.StorageLocation = existingLocation;
|
||||
}
|
||||
|
||||
// Handle Defects
|
||||
if (entry.Defects is not null && entry.Defects.Any())
|
||||
{
|
||||
var defectDescriptions = entry.Defects.Select(d => d.Description).ToList();
|
||||
var existingDefects = await context.ArtifactDefects
|
||||
.Where(d => defectDescriptions.Contains(d.Description))
|
||||
.ToListAsync();
|
||||
|
||||
// Replace in-memory defects with existing ones
|
||||
for (int i = 0; i < entry.Defects.Count; i++)
|
||||
{
|
||||
var existingDefect = existingDefects
|
||||
.FirstOrDefault(ed => ed.Description == entry.Defects[i].Description);
|
||||
|
||||
if (existingDefect is not null)
|
||||
{
|
||||
entry.Defects[i] = existingDefect;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle ListedNames
|
||||
if (entry.ListedNames is not null && entry.ListedNames.Any())
|
||||
{
|
||||
var listedNamesValues = entry.ListedNames.Select(n => n.Value).ToList();
|
||||
var existingNames = await context.ArtifactAssociatedNames
|
||||
.Where(n => listedNamesValues.Contains(n.Value))
|
||||
.ToListAsync();
|
||||
|
||||
for (int i = 0; i < entry.ListedNames.Count; i++)
|
||||
{
|
||||
var existingName = existingNames
|
||||
.FirstOrDefault(en => en.Value == entry.ListedNames[i].Value);
|
||||
|
||||
if (existingName is not null)
|
||||
{
|
||||
entry.ListedNames[i] = existingName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle Tags
|
||||
if (entry.Tags is not null && entry.Tags.Any())
|
||||
{
|
||||
var tagNames = entry.Tags.Select(t => t.Name).ToList();
|
||||
var existingTags = await context.ArtifactEntryTags
|
||||
.Where(t => tagNames.Contains(t.Name))
|
||||
.ToListAsync();
|
||||
|
||||
for (int i = 0; i < entry.Tags.Count; i++)
|
||||
{
|
||||
var existingTag = existingTags
|
||||
.FirstOrDefault(et => et.Name == entry.Tags[i].Name);
|
||||
|
||||
if (existingTag is not null)
|
||||
{
|
||||
entry.Tags[i] = existingTag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 💡 NEW: Handle pre-existing FilePathListings
|
||||
// This is the key change to resolve the exception
|
||||
if (entry.Files is not null)
|
||||
{
|
||||
foreach (var filepath in entry.Files)
|
||||
{
|
||||
// The issue is trying to add a new entity that has an existing primary key.
|
||||
// Since you stated that all files are pre-added, you must attach them.
|
||||
// Attach() tells EF Core to track the entity, assuming it already exists.
|
||||
context.Attach(filepath);
|
||||
// Also ensure the parent-child relationship is set correctly, though it's likely set by ToArtifactGrouping
|
||||
filepath.ParentArtifactEntry = entry;
|
||||
}
|
||||
}
|
||||
// Tag each entry with the parent grouping so it is linked correctly in the database
|
||||
entry.ArtifactGrouping = grouping;
|
||||
}
|
||||
|
||||
// 3. Add the main grouping object and let EF Core handle the graph
|
||||
// The previous issues with the graph are resolved, so this line should now work.
|
||||
context.ArtifactGroupings.Add(grouping);
|
||||
|
||||
// 4. Save all changes in a single transaction
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
*/
|
||||
|
||||
public async Task OnGroupingPublished(ArtifactGroupingValidationModel model)
|
||||
{
|
||||
// The OnGroupingPublished method in this class should not contain DbContext logic.
|
||||
// It should orchestrate the data flow by calling the appropriate provider methods.
|
||||
var isNew = model.Id == 0 || model.Id is null;
|
||||
|
||||
// Convert the validation model to an entity
|
||||
var grouping = model.ToArtifactGrouping();
|
||||
|
||||
if (isNew)
|
||||
{
|
||||
// For a new grouping, use the CreateGroupingAsync method.
|
||||
// The provider method will handle the file path logic.
|
||||
await GroupingProvider.CreateGroupingAsync(grouping);
|
||||
}
|
||||
else
|
||||
{
|
||||
// For an existing grouping, use the UpdateGroupingAsync method.
|
||||
// The provider method will handle the change tracking.
|
||||
await GroupingProvider.UpdateGroupingAsync(grouping);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using System.Text
|
||||
@using MudBlazor
|
||||
|
||||
<MudText Typo="Typo.body2" Color="Color.Primary">Item Identifier: @Value</MudText>
|
||||
@if (_identifierError)
|
||||
{
|
||||
<MudAlert Severity="Severity.Error" Class="mt-4">
|
||||
All identifier fields must be filled in.
|
||||
</MudAlert>
|
||||
}
|
||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||
<MudGrid Class="pt-0 pl-4 pr-4" Justify="Justify.FlexStart" AlignItems="AlignItems.Center">
|
||||
|
||||
@for (int index = 0; index < IdentifierFields.Count; index++)
|
||||
{
|
||||
// You must create a local variable inside the loop for binding to work correctly.
|
||||
var field = IdentifierFields[index];
|
||||
|
||||
<MudItem Class="pt-6">
|
||||
<MudTextField Label="@field.Name"
|
||||
@bind-Value="@field.Value"
|
||||
@bind-Value:after="OnInputChanged"
|
||||
DebounceInterval="100"
|
||||
Required=true/>
|
||||
</MudItem>
|
||||
|
||||
@if (index < IdentifierFields.Count - 1)
|
||||
{
|
||||
<MudItem Class="pt-6">
|
||||
<MudText>@FieldSeparator</MudText>
|
||||
</MudItem>
|
||||
}
|
||||
}
|
||||
</MudGrid>
|
||||
|
||||
@using OpenArchival.DataAccess;
|
||||
@inject IArchiveCategoryProvider CategoryProvider;
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public required string FieldSeparator { get; set; } = "-";
|
||||
|
||||
private List<IdentifierFieldValidationModel> _identifierFields = new();
|
||||
|
||||
[Parameter]
|
||||
public required List<IdentifierFieldValidationModel> IdentifierFields
|
||||
{
|
||||
get => _identifierFields;
|
||||
set => _identifierFields = value ?? new();
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> ValueChanged { get; set; }
|
||||
|
||||
private ArchiveCategory _verifyFormatCategory;
|
||||
public ArchiveCategory? VerifyFormatCategory
|
||||
{
|
||||
get
|
||||
{
|
||||
return _verifyFormatCategory;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value is not null)
|
||||
{
|
||||
_identifierFields.Clear();
|
||||
_verifyFormatCategory = value;
|
||||
foreach (var field in value.FieldNames)
|
||||
{
|
||||
_identifierFields.Add(new IdentifierFieldValidationModel() {Name=field, Value=""});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsValid { get; set; } = false;
|
||||
|
||||
// Computed property that builds the final string
|
||||
public string Value => string.Join(FieldSeparator, IdentifierFields.Select(f => f.Value).Where(v => !string.IsNullOrEmpty(v)));
|
||||
|
||||
private bool _identifierError = false;
|
||||
|
||||
/// <summary>
|
||||
/// This runs when parameters are first set, ensuring the initial state is correct.
|
||||
/// </summary>
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
ValidateFields();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This runs after the user types into a field.
|
||||
/// </summary>
|
||||
private async Task OnInputChanged()
|
||||
{
|
||||
ValidateFields();
|
||||
await ValueChanged.InvokeAsync(this.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reusable method to check the validity of the identifier fields.
|
||||
/// </summary>
|
||||
private void ValidateFields()
|
||||
{
|
||||
// Set to true if ANY field is empty or null.
|
||||
_identifierError = IdentifierFields.Any(f => string.IsNullOrEmpty(f.Value));
|
||||
IsValid = !_identifierError;
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
namespace OpenArchival.Blazor;
|
||||
|
||||
using OpenArchival.DataAccess;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
public class ArtifactEntryValidationModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Used when translating between the validation model and the database model
|
||||
/// </summary>
|
||||
public int? Id { get; set; }
|
||||
|
||||
[Required(AllowEmptyStrings = false, ErrorMessage = "An artifact numbering must be supplied")]
|
||||
public string? ArtifactNumber { get; set; }
|
||||
|
||||
[Required(AllowEmptyStrings = false, ErrorMessage = "A title must be provided")]
|
||||
public string? Title { get; set; }
|
||||
|
||||
public string? Description { get; set; }
|
||||
|
||||
public string? Type { get; set; }
|
||||
|
||||
public string? StorageLocation { get; set; }
|
||||
|
||||
public List<string>? Tags { get; set; } = [];
|
||||
|
||||
public List<string>? ListedNames { get; set; } = [];
|
||||
|
||||
public List<DateTime>? AssociatedDates { get; set; } = [];
|
||||
|
||||
public List<string>? Defects { get; set; } = [];
|
||||
|
||||
public List<string>? Links { get; set; } = [];
|
||||
|
||||
public List<FilePathListing>? Files { get; set; } = [];
|
||||
|
||||
public string? FileTextContent { get; set; }
|
||||
|
||||
public List<ArtifactEntry> RelatedArtifacts { get; set; } = [];
|
||||
|
||||
public bool IsPublicallyVisible { get; set; } = true;
|
||||
|
||||
public int Quantity { get; set; }
|
||||
|
||||
public ArtifactEntry ToArtifactEntry(ArtifactGrouping? parent = null)
|
||||
{
|
||||
List<ArtifactEntryTag> tags = new();
|
||||
if (Tags is not null)
|
||||
{
|
||||
foreach (var tag in Tags)
|
||||
{
|
||||
tags.Add(new ArtifactEntryTag() { Name = tag });
|
||||
}
|
||||
}
|
||||
|
||||
List<ArtifactDefect> defects = new();
|
||||
foreach (var defect in Defects)
|
||||
{
|
||||
defects.Add(new ArtifactDefect() { Description=defect});
|
||||
}
|
||||
|
||||
var entry = new ArtifactEntry()
|
||||
{
|
||||
Id = Id ?? 0,
|
||||
Files = Files,
|
||||
Type = new DataAccess.ArtifactType() { Name = Type },
|
||||
ArtifactNumber = ArtifactNumber,
|
||||
AssociatedDates = AssociatedDates,
|
||||
Defects = defects,
|
||||
Links = Links,
|
||||
StorageLocation = null,
|
||||
Description = Description,
|
||||
FileTextContent = FileTextContent,
|
||||
IsPubliclyVisible = IsPublicallyVisible,
|
||||
Tags = tags,
|
||||
Title = Title,
|
||||
ArtifactGrouping = parent,
|
||||
RelatedTo = RelatedArtifacts,
|
||||
Quantity = Quantity
|
||||
};
|
||||
|
||||
List<ListedName> listedNames = new();
|
||||
foreach (var name in ListedNames)
|
||||
{
|
||||
listedNames.Add(new ListedName() { Value=name });
|
||||
}
|
||||
|
||||
entry.ListedNames = listedNames;
|
||||
|
||||
if (!string.IsNullOrEmpty(StorageLocation))
|
||||
{
|
||||
entry.StorageLocation = new ArtifactStorageLocation() { Location = StorageLocation };
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
@@ -1,140 +0,0 @@
|
||||
using OpenArchival.DataAccess;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace OpenArchival.Blazor;
|
||||
|
||||
public class ArtifactGroupingValidationModel : IValidatableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Used by update code to track the database record that corresponds to the data within this DTO
|
||||
/// </summary>
|
||||
public int? Id { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "A grouping title is required.")]
|
||||
public string? Title { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "A grouping description is required.")]
|
||||
public string? Description { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "A type is required.")]
|
||||
public string? Type { get; set; }
|
||||
|
||||
public ArchiveCategory? Category { get; set; }
|
||||
|
||||
public List<IdentifierFieldValidationModel> IdentifierFieldValues { get; set; } = new();
|
||||
|
||||
public List<ArtifactEntryValidationModel> ArtifactEntries { get; set; } = new();
|
||||
|
||||
public bool IsPublicallyVisible { get; set; } = true;
|
||||
|
||||
public ArtifactGrouping ToArtifactGrouping()
|
||||
{
|
||||
IdentifierFields identifierFields = new();
|
||||
identifierFields.Values = IdentifierFieldValues.Select(p => p.Value).ToList();
|
||||
|
||||
List<ArtifactEntry> entries = [];
|
||||
foreach (var entry in ArtifactEntries)
|
||||
{
|
||||
entries.Add(entry.ToArtifactEntry());
|
||||
}
|
||||
|
||||
var grouping = new ArtifactGrouping()
|
||||
{
|
||||
Id = Id ?? default,
|
||||
Title = Title,
|
||||
Description = Description,
|
||||
Category = Category,
|
||||
IdentifierFields = identifierFields,
|
||||
IsPublicallyVisible = true,
|
||||
ChildArtifactEntries = entries,
|
||||
Type = new ArtifactType() { Name = Type }
|
||||
};
|
||||
|
||||
// Create the parent link
|
||||
foreach (var entry in grouping.ChildArtifactEntries)
|
||||
{
|
||||
entry.ArtifactGrouping = grouping;
|
||||
}
|
||||
|
||||
return grouping;
|
||||
}
|
||||
|
||||
public static ArtifactGroupingValidationModel ToValidationModel(ArtifactGrouping grouping)
|
||||
{
|
||||
var entries = new List<ArtifactEntryValidationModel>();
|
||||
|
||||
foreach (var entry in grouping.ChildArtifactEntries)
|
||||
{
|
||||
var defects = new List<string>();
|
||||
|
||||
if (entry.Defects is not null)
|
||||
{
|
||||
defects.AddRange(entry.Defects.Select(defect => defect.Description));
|
||||
}
|
||||
|
||||
var validationModel = new ArtifactEntryValidationModel()
|
||||
{
|
||||
Id = entry.Id,
|
||||
Title = entry.Title,
|
||||
StorageLocation = entry.StorageLocation.Location,
|
||||
ArtifactNumber = entry.ArtifactNumber,
|
||||
AssociatedDates = entry.AssociatedDates,
|
||||
Defects = entry?.Defects?.Select(defect => defect.Description).ToList(),
|
||||
Description = entry?.Description,
|
||||
Files = entry?.Files,
|
||||
FileTextContent = entry?.FileTextContent,
|
||||
IsPublicallyVisible = entry.IsPubliclyVisible,
|
||||
Links = entry.Links,
|
||||
ListedNames = entry?.ListedNames?.Select(name => name.Value).ToList(),
|
||||
RelatedArtifacts = entry.RelatedTo,
|
||||
Tags = entry?.Tags?.Select(tag => tag.Name).ToList(),
|
||||
Type = entry?.Type.Name,
|
||||
Quantity = entry.Quantity
|
||||
};
|
||||
|
||||
entries.Add(validationModel);
|
||||
}
|
||||
|
||||
var identifierFieldsStrings = grouping.IdentifierFields.Values;
|
||||
List<IdentifierFieldValidationModel> identifierFields = new();
|
||||
for (int index = 0; index < identifierFieldsStrings.Count; ++index)
|
||||
{
|
||||
identifierFields.Add(new IdentifierFieldValidationModel()
|
||||
{
|
||||
Value = identifierFieldsStrings[index],
|
||||
Name = grouping.Category.FieldNames[index]
|
||||
});
|
||||
}
|
||||
return new ArtifactGroupingValidationModel()
|
||||
{
|
||||
Id = grouping.Id,
|
||||
Title = grouping.Title,
|
||||
ArtifactEntries = entries,
|
||||
Category = grouping.Category,
|
||||
Description = grouping.Description,
|
||||
IdentifierFieldValues = identifierFields,
|
||||
IsPublicallyVisible = grouping.IsPublicallyVisible,
|
||||
Type = grouping.Type.Name
|
||||
};
|
||||
}
|
||||
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
foreach (var entry in ArtifactEntries)
|
||||
{
|
||||
var context = new ValidationContext(entry);
|
||||
var validationResult = new List<ValidationResult>();
|
||||
|
||||
bool valid = Validator.TryValidateObject(entry, context, validationResult);
|
||||
foreach (var result in validationResult)
|
||||
{
|
||||
yield return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (ArtifactEntries.Count == 0)
|
||||
{
|
||||
yield return new ValidationResult("Must upload one or more files");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace OpenArchival.Blazor;
|
||||
|
||||
public class IdentifierFieldValidationModel
|
||||
{
|
||||
public string Name { get; set; } = "";
|
||||
public string Value { get; set; } = "";
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MudBlazor
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
||||
|
||||
@rendermode InteractiveServer
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
@page
|
||||
@model OpenArchival.Blazor.AdminPages.MyFeature.Pages.Page1Model
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>Page1</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,13 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
|
||||
namespace OpenArchival.Blazor.AdminPages.MyFeature.Pages
|
||||
{
|
||||
public class Page1Model : PageModel
|
||||
{
|
||||
public void OnGet()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
12
OpenArchival.Blazor.AdminPages/BlogPostsTablePage.razor
Normal file
12
OpenArchival.Blazor.AdminPages/BlogPostsTablePage.razor
Normal file
@@ -0,0 +1,12 @@
|
||||
@page "/admin/blogstable"
|
||||
|
||||
@using OpenArchival.Blazor.AdminPages
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@using OpenArchival.Blazor.Blog
|
||||
@layout AdminControlPanelLayout
|
||||
|
||||
<BlogPostTable></BlogPostTable>
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using Microsoft.EntityFrameworkCore;
|
||||
@using Microsoft.Extensions.Logging
|
||||
@using MudBlazor.Interfaces
|
||||
@using OpenArchival.DataAccess
|
||||
@using MudBlazor
|
||||
@using MudExtensions
|
||||
|
||||
@page "/categorieslist"
|
||||
|
||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||
<MudText Typo="Typo.h6">Categories</MudText>
|
||||
<MudDivider Class="mb-2"></MudDivider>
|
||||
<MudList T="string" Clickable="true">
|
||||
@foreach (ArchiveCategory category in _categories)
|
||||
{
|
||||
<MudListItem OnClick="@(() => OnCategoryItemClicked(category))">
|
||||
@category.Name
|
||||
@if (ShowDeleteButton)
|
||||
{
|
||||
<MudListItemMeta ActionPosition="ActionPosition.End">
|
||||
<MudIconButton
|
||||
Icon="@Icons.Material.Filled.Delete"
|
||||
Color="Color.Error"
|
||||
Size="Size.Small"
|
||||
OnClick="@((e) => HandleDeleteClick(category))"
|
||||
/>
|
||||
</MudListItemMeta>
|
||||
}
|
||||
</MudListItem>
|
||||
}
|
||||
</MudList>
|
||||
@ChildContent
|
||||
</MudPaper>
|
||||
|
||||
@inject IArchiveCategoryProvider CategoryProvider;
|
||||
@inject ILogger<CategoriesListComponent> Logger;
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public RenderFragment ChildContent { get; set; } = default!;
|
||||
|
||||
[Parameter]
|
||||
public bool ShowDeleteButton { get; set; } = false;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<ArchiveCategory> ListItemClickedCallback { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<ArchiveCategory> OnDeleteClickedCallback { get; set; }
|
||||
|
||||
private List<ArchiveCategory> _categories = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadCategories();
|
||||
}
|
||||
|
||||
private async Task LoadCategories()
|
||||
{
|
||||
var categories = await CategoryProvider.GetAllArchiveCategories();
|
||||
if (categories is null)
|
||||
{
|
||||
Logger.LogError("There were no categories in the database when attempting to load the list of categories.");
|
||||
_categories.Clear();
|
||||
return;
|
||||
}
|
||||
_categories = categories.ToList();
|
||||
}
|
||||
|
||||
public async Task RefreshData()
|
||||
{
|
||||
await LoadCategories();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task OnCategoryItemClicked(ArchiveCategory category)
|
||||
{
|
||||
await ListItemClickedCallback.InvokeAsync(category);
|
||||
}
|
||||
|
||||
private async Task HandleDeleteClick(ArchiveCategory category)
|
||||
{
|
||||
await OnDeleteClickedCallback.InvokeAsync(category);
|
||||
}
|
||||
}
|
||||
@@ -1,165 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using System.ComponentModel.DataAnnotations;
|
||||
@using OpenArchival.DataAccess;
|
||||
@using MudBlazor
|
||||
|
||||
<MudDialog>
|
||||
<TitleContent>
|
||||
<MudText Typo="Typo.h6">Create a Category</MudText>
|
||||
</TitleContent>
|
||||
<DialogContent>
|
||||
<MudForm @ref="_form">
|
||||
<MudTextField @bind-Value="ValidationModel.Name"
|
||||
For="@(() => ValidationModel.Name)"
|
||||
Label="Category Name"
|
||||
Variant="Variant.Filled" />
|
||||
|
||||
<MudDivider Class="pt-4" DividerType="DividerType.Middle"/>
|
||||
|
||||
<MudText Typo="Typo.h6">Item Tag Identifier</MudText>
|
||||
<MudText Typo="Typo.subtitle2">This will be the format of the identifier used for each archive entry.</MudText>
|
||||
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
||||
<MudText Typo="Typo.body2">Format Preview: </MudText>
|
||||
<MudText Type="Typo.body2" Color="Color.Primary">@FormatPreview</MudText>
|
||||
</MudStack>
|
||||
|
||||
<MudTextField @bind-Value="ValidationModel.FieldSeparator"
|
||||
@bind-Value:after="UpdateFormatPreview"
|
||||
For="@(() => ValidationModel.FieldSeparator)"
|
||||
Label="Field Separator"
|
||||
Variant="Variant.Filled"
|
||||
MaxLength="1" />
|
||||
|
||||
<MudDivider Class="pt-4" />
|
||||
|
||||
<MudNumericField
|
||||
Value="ValidationModel.NumFields"
|
||||
ValueChanged="@((int newCount) => OnNumFieldsChanged(newCount))"
|
||||
Label="Number of fields in the item identifiers"
|
||||
Variant="Variant.Filled"
|
||||
Min="1"></MudNumericField>
|
||||
|
||||
<MudDivider Class="pt-4" />
|
||||
|
||||
<MudGrid Class="pr-2 pt-2 pb-2 pl-8" Justify="Justify.FlexStart" Spacing="3">
|
||||
@for (int index = 0; index < ValidationModel.FieldNames.Count; ++index)
|
||||
{
|
||||
var localIndex = index;
|
||||
|
||||
<MudItem xs="12" sm="6" md="6">
|
||||
<CategoryFieldCardComponent Index="localIndex"
|
||||
FieldName="@ValidationModel.FieldNames[localIndex]"
|
||||
FieldDescription="@ValidationModel.FieldDescriptions[localIndex]"
|
||||
OnNameUpdate="HandleNameUpdate"
|
||||
OnDescriptionUpdate="HandleDescriptionUpdate"/>
|
||||
</MudItem>
|
||||
}
|
||||
</MudGrid>
|
||||
</MudForm>
|
||||
</DialogContent>
|
||||
<DialogActions>
|
||||
<MudButton OnClick="Cancel">Cancel</MudButton>
|
||||
<MudButton Color="Color.Primary" OnClick="Submit">OK</MudButton>
|
||||
</DialogActions>
|
||||
</MudDialog>
|
||||
|
||||
@inject IArchiveCategoryProvider CategoryProvider;
|
||||
|
||||
@code {
|
||||
[CascadingParameter]
|
||||
private IMudDialogInstance MudDialog { get; set; } = default!;
|
||||
|
||||
[Parameter]
|
||||
public CategoryValidationModel ValidationModel { get; set; } = default!;
|
||||
|
||||
[Parameter]
|
||||
public bool IsUpdate { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string OriginalName { get; set; } = string.Empty;
|
||||
|
||||
|
||||
private MudForm _form = default!;
|
||||
private string FormatPreview { get; set; } = string.Empty;
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
if (ValidationModel is null)
|
||||
{
|
||||
ValidationModel = new CategoryValidationModel { NumFields = 1 };
|
||||
} else
|
||||
{
|
||||
ValidationModel.NumFields = ValidationModel.FieldNames.Count;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNumFieldsChanged(int newCount)
|
||||
{
|
||||
if (newCount < 1) return;
|
||||
ValidationModel.NumFields = newCount;
|
||||
UpdateStateFromModel();
|
||||
}
|
||||
|
||||
private void UpdateStateFromModel()
|
||||
{
|
||||
ValidationModel.FieldNames ??= new List<string>();
|
||||
ValidationModel.FieldDescriptions ??= new List<string>();
|
||||
|
||||
while (ValidationModel.FieldNames.Count < ValidationModel.NumFields)
|
||||
{
|
||||
ValidationModel.FieldNames.Add($"Field {ValidationModel.FieldNames.Count + 1}");
|
||||
}
|
||||
while (ValidationModel.FieldNames.Count > ValidationModel.NumFields)
|
||||
{
|
||||
ValidationModel.FieldNames.RemoveAt(ValidationModel.FieldNames.Count - 1);
|
||||
}
|
||||
|
||||
while (ValidationModel.FieldDescriptions.Count < ValidationModel.NumFields)
|
||||
{
|
||||
ValidationModel.FieldDescriptions.Add("");
|
||||
}
|
||||
while (ValidationModel.FieldDescriptions.Count > ValidationModel.NumFields)
|
||||
{
|
||||
ValidationModel.FieldDescriptions.RemoveAt(ValidationModel.FieldDescriptions.Count - 1);
|
||||
}
|
||||
|
||||
UpdateFormatPreview();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private void UpdateFormatPreview()
|
||||
{
|
||||
var fieldNames = ValidationModel.FieldNames.Select(name => string.IsNullOrEmpty(name) ? "<...>" : $"<{name}>");
|
||||
FormatPreview = string.Join(ValidationModel.FieldSeparator, fieldNames);
|
||||
}
|
||||
|
||||
private async Task Submit()
|
||||
{
|
||||
await _form.Validate();
|
||||
if (!_form.IsValid) return;
|
||||
|
||||
MudDialog.Close(DialogResult.Ok(ValidationModel));
|
||||
}
|
||||
|
||||
private void Cancel() => MudDialog.Cancel();
|
||||
|
||||
// In your MudDialog component's @code block
|
||||
|
||||
private void HandleNameUpdate((int Index, string NewValue) data)
|
||||
{
|
||||
if (data.Index < ValidationModel.FieldNames.Count)
|
||||
{
|
||||
ValidationModel.FieldNames[data.Index] = data.NewValue;
|
||||
UpdateFormatPreview(); // Update the preview in real-time
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleDescriptionUpdate((int Index, string NewValue) data)
|
||||
{
|
||||
if (data.Index < ValidationModel.FieldDescriptions.Count)
|
||||
{
|
||||
ValidationModel.FieldDescriptions[data.Index] = data.NewValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using MudBlazor
|
||||
|
||||
<MudCard Outlined="true">
|
||||
<MudCardContent>
|
||||
<MudTextField @bind-Value="FieldName"
|
||||
@bind-Value:after="OnNameChanged"
|
||||
Label="Field Name"
|
||||
Variant="Variant.Filled"
|
||||
Immediate="true"
|
||||
/>
|
||||
|
||||
<MudTextField @bind-Value="FieldDescription"
|
||||
@bind-Value:after="OnDescriptionChanged"
|
||||
Label="Field Description"
|
||||
Variant="Variant.Filled"
|
||||
Lines="2"
|
||||
Class="mt-3"
|
||||
Immediate="true"
|
||||
/>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
|
||||
@code {
|
||||
[Parameter] public int Index { get; set; }
|
||||
|
||||
[Parameter] public string FieldName { get; set; } = "";
|
||||
[Parameter] public string FieldDescription { get; set; } = "";
|
||||
|
||||
[Parameter] public EventCallback<(int Index, string NewValue)> OnNameUpdate { get; set; }
|
||||
[Parameter] public EventCallback<(int Index, string NewValue)> OnDescriptionUpdate { get; set; }
|
||||
|
||||
private async Task OnNameChanged()
|
||||
{
|
||||
await OnNameUpdate.InvokeAsync((Index, FieldName));
|
||||
}
|
||||
|
||||
private async Task OnDescriptionChanged()
|
||||
{
|
||||
await OnDescriptionUpdate.InvokeAsync((Index, FieldDescription));
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
namespace OpenArchival.Blazor;
|
||||
|
||||
public class ArtifactGroupingRowElement
|
||||
{
|
||||
public required int Id { get; set; }
|
||||
|
||||
public required string ArtifactGroupingIdentifier { get; set; }
|
||||
|
||||
public required string CategoryName { get; set; }
|
||||
|
||||
public required string Title { get; set; }
|
||||
|
||||
public bool IsPublicallyVisible { get; set; }
|
||||
|
||||
public bool Equals(ArtifactGroupingRowElement? other)
|
||||
{
|
||||
if (other is null) return false;
|
||||
if (ReferenceEquals(this, other)) return true;
|
||||
return Id == other.Id; // Compare based on the unique Id
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj) => Equals(obj as ArtifactGroupingRowElement);
|
||||
|
||||
public override int GetHashCode() => Id.GetHashCode();
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
namespace OpenArchival.Blazor;
|
||||
|
||||
using Microsoft.IdentityModel.Abstractions;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using OpenArchival.DataAccess;
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
public class CategoryValidationModel
|
||||
{
|
||||
public int? DatabaseId { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Category name is required.")]
|
||||
public string? Name { get; set; }
|
||||
|
||||
public string? Description { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Field separator is required.")]
|
||||
[StringLength(1, ErrorMessage = "Separator must be a single character.")]
|
||||
public string FieldSeparator { get; set; } = "-";
|
||||
|
||||
[Required(ErrorMessage = "At least one field is needed")]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "At least one field must be created.")]
|
||||
public int NumFields { get; set; } = 1;
|
||||
|
||||
public List<string> FieldNames { get; set; } = [""];
|
||||
|
||||
public List<string> FieldDescriptions { get; set; } = [""];
|
||||
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext context)
|
||||
{
|
||||
if ((FieldNames is null || FieldNames.Count == 0) || (FieldDescriptions is null || FieldDescriptions.Count > 0))
|
||||
{
|
||||
yield return new ValidationResult(
|
||||
"Either the FieldNames or FieldDescriptions were null or empty. At least one is required",
|
||||
new[] { nameof(FieldNames), nameof(FieldDescriptions) }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static CategoryValidationModel FromArchiveCategory(ArchiveCategory category)
|
||||
{
|
||||
return new CategoryValidationModel()
|
||||
{
|
||||
Name = category.Name,
|
||||
Description = category.Description,
|
||||
DatabaseId = category.Id,
|
||||
FieldSeparator = category.FieldSeparator,
|
||||
FieldNames = category.FieldNames,
|
||||
FieldDescriptions = category.FieldDescriptions,
|
||||
};
|
||||
}
|
||||
|
||||
public static ArchiveCategory ToArchiveCategory(CategoryValidationModel model)
|
||||
{
|
||||
return new ArchiveCategory()
|
||||
{
|
||||
Name = model.Name,
|
||||
FieldSeparator = model.FieldSeparator,
|
||||
Description = model.Description,
|
||||
FieldNames = model.FieldNames,
|
||||
FieldDescriptions = model.FieldDescriptions
|
||||
};
|
||||
}
|
||||
|
||||
public static void UpdateArchiveValidationModel(CategoryValidationModel model, ArchiveCategory category)
|
||||
{
|
||||
category.Name = model.Name ?? throw new ArgumentNullException(nameof(model.Name), "The model name was null.");
|
||||
category.Description = model.Description;
|
||||
category.FieldSeparator = model.FieldSeparator;
|
||||
category.FieldNames = model.FieldNames;
|
||||
category.FieldDescriptions = model.FieldDescriptions;
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
@page "/categories"
|
||||
|
||||
@namespace OpenArchival.Blazor.AdminPages
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Microsoft.EntityFrameworkCore
|
||||
@using Microsoft.Extensions.Logging
|
||||
@using MudBlazor
|
||||
@using OpenArchival.DataAccess;
|
||||
|
||||
@inject IDialogService DialogService
|
||||
@inject IArchiveCategoryProvider CategoryProvider;
|
||||
@inject IDbContextFactory<ApplicationDbContext> DbContextFactory;
|
||||
@inject ILogger<ViewAddCategoriesComponent> Logger;
|
||||
|
||||
<CategoriesListComponent
|
||||
@ref=_categoriesListComponent
|
||||
ListItemClickedCallback="ShowFilledDialog"
|
||||
ShowDeleteButton=true
|
||||
OnDeleteClickedCallback="DeleteCategory">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OnAddClick">Add Category</MudButton>
|
||||
</CategoriesListComponent>
|
||||
|
||||
|
||||
@code {
|
||||
CategoriesListComponent _categoriesListComponent = default!;
|
||||
|
||||
private async Task DeleteCategory(ArchiveCategory category)
|
||||
{
|
||||
// 1. Show a confirmation dialog (recommended)
|
||||
var confirmed = await DialogService.ShowMessageBox("Confirm", $"Delete {category.Name}?", yesText:"Delete", cancelText:"Cancel");
|
||||
if (confirmed != true) return;
|
||||
|
||||
await CategoryProvider.DeleteCategoryAsync(category);
|
||||
await _categoriesListComponent.RefreshData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task ShowFilledDialog(ArchiveCategory category)
|
||||
{
|
||||
CategoryValidationModel validationModel = CategoryValidationModel.FromArchiveCategory(category);
|
||||
|
||||
var parameters = new DialogParameters { ["ValidationModel"] = validationModel, ["IsUpdate"] = true, ["OriginalName"] = category.Name};
|
||||
|
||||
var options = new DialogOptions { CloseOnEscapeKey = true, BackdropClick=false};
|
||||
|
||||
var dialog = await DialogService.ShowAsync<CategoryCreatorDialog>("Create a Category", parameters, options);
|
||||
var result = await dialog.Result;
|
||||
|
||||
if (result is not null && !result.Canceled && _categoriesListComponent is not null)
|
||||
{
|
||||
if (result.Data is null)
|
||||
{
|
||||
Logger.LogError($"The new category received by the result had a null data result member.");
|
||||
throw new NullReferenceException($"The new category received by the result had a null data result member.");
|
||||
}
|
||||
|
||||
CategoryValidationModel model = (CategoryValidationModel)result.Data;
|
||||
CategoryValidationModel.UpdateArchiveValidationModel(model, category);
|
||||
|
||||
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||
await context.SaveChangesAsync();
|
||||
|
||||
StateHasChanged();
|
||||
await _categoriesListComponent.RefreshData();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnAddClick()
|
||||
{
|
||||
var options = new DialogOptions { CloseOnEscapeKey = true, BackdropClick=false };
|
||||
var dialog = await DialogService.ShowAsync<CategoryCreatorDialog>("Create a Category", options);
|
||||
|
||||
var result = await dialog.Result;
|
||||
|
||||
if (result is not null && !result.Canceled && _categoriesListComponent is not null && result.Data is not null)
|
||||
{
|
||||
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||
CategoryValidationModel model = (CategoryValidationModel)result.Data;
|
||||
context.ArchiveCategories.Add(CategoryValidationModel.ToArchiveCategory(model));
|
||||
|
||||
await context.SaveChangesAsync();
|
||||
StateHasChanged();
|
||||
await _categoriesListComponent.RefreshData();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
@using MudExRichTextEditor
|
||||
@using MudBlazor
|
||||
@using OpenArchival.Blazor
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@using OpenArchival.Blazor.Config
|
||||
|
||||
<MudText Typo="Typo.h6">Home Page Editor</MudText>
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenArchival.Blazor.AdminPages.Shared\OpenArchival.Blazor.AdminPages.Shared.csproj" />
|
||||
<ProjectReference Include="..\OpenArchival.Blazor.ArchiveSearch\OpenArchival.Blazor.ArchiveSearch.csproj" />
|
||||
<ProjectReference Include="..\OpenArchival.Blazor.Blog\OpenArchival.Blazor.Blog.csproj" />
|
||||
<ProjectReference Include="..\OpenArchival.Blazor.Config\OpenArchival.Blazor.Config.csproj" />
|
||||
<ProjectReference Include="..\OpenArchival.Blazor.CustomComponents\OpenArchival.Blazor.CustomComponents.csproj" />
|
||||
<ProjectReference Include="..\OpenArchival.DataAccess\OpenArchival.DataAccess.csproj" />
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Microsoft.EntityFrameworkCore
|
||||
@using OpenArchival.Blazor.AdminPages.Shared
|
||||
@using OpenArchival.Blazor.CustomComponents
|
||||
@using MudBlazor
|
||||
@using OpenArchival.DataAccess
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
"Microsoft.IdentityModel.Tokens": "8.14.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"MudExRichTextEditor": "8.13.0",
|
||||
"OpenArchival.Blazor.AdminPages.Shared": "1.0.0",
|
||||
"OpenArchival.Blazor.ArchiveSearch": "1.0.0",
|
||||
"OpenArchival.Blazor.Blog": "1.0.0",
|
||||
"OpenArchival.Blazor.Config": "1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
@@ -991,6 +994,66 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.AdminPages.Shared/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.14.0",
|
||||
"Microsoft.IdentityModel.Tokens": "8.14.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.ArchiveSearch": "1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.AdminPages.Shared.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.ArchiveSearch/1.0.0": {
|
||||
"dependencies": {
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.ArchiveSearch.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay/1.0.0": {
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.Blazor.FileViewer": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.Blog/1.0.0": {
|
||||
"dependencies": {
|
||||
"MudBlazor": "8.13.0",
|
||||
"MudExRichTextEditor": "8.13.0",
|
||||
"OpenArchival.Blazor.AdminPages.Shared": "1.0.0",
|
||||
"OpenArchival.Blazor.Config": "1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.Blog.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.Config/1.0.0": {
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.Config.dll": {
|
||||
@@ -1003,6 +1066,7 @@
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.Config": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
@@ -1012,6 +1076,19 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.FileViewer/1.0.0": {
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenArchival.Blazor.FileViewer.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenArchival.DataAccess/1.0.0": {
|
||||
"dependencies": {
|
||||
"EntityFramework": "6.5.1",
|
||||
@@ -1695,6 +1772,26 @@
|
||||
"path": "zstdsharp.port/0.8.5",
|
||||
"hashPath": "zstdsharp.port.0.8.5.nupkg.sha512"
|
||||
},
|
||||
"OpenArchival.Blazor.AdminPages.Shared/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.Blazor.ArchiveSearch/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.Blazor.Blog/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.Blazor.Config/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
@@ -1705,6 +1802,11 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.Blazor.FileViewer/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"OpenArchival.DataAccess/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -14,7 +14,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.Blazor.AdminPages")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0e24ce207395fb1c32a87d10049c1d81dc4784fe")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b34449808fa29388ff6ca79b560f657d74738fdd")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.Blazor.AdminPages")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.Blazor.AdminPages")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
1999676c2e39ed7655de012aa20c50d16eaa8954d13ff03c71308aba4df1d206
|
||||
5dd13044308b5b7b2644a6e0b9714ed0a24d9f1d599346705c849cdb11095190
|
||||
|
||||
@@ -27,52 +27,16 @@ build_property.EnableCodeStyleSeverity =
|
||||
build_metadata.AdditionalFiles.TargetPath = QWJvdXRQYWdlRWRpdG9yLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/AdminControlPanelLayout.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QWRtaW5Db250cm9sUGFuZWxMYXlvdXQucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/AdminHome.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QWRtaW5Ib21lLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveItems/AddArchiveGroupingComponent.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZUl0ZW1zXEFkZEFyY2hpdmVHcm91cGluZ0NvbXBvbmVudC5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveItems/AddGroupingDialog.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZUl0ZW1zXEFkZEdyb3VwaW5nRGlhbG9nLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveItems/ArchiveEntryCreatorCard.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZUl0ZW1zXEFyY2hpdmVFbnRyeUNyZWF0b3JDYXJkLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveItems/ArchiveGroupingsTable.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZUl0ZW1zXEFyY2hpdmVHcm91cGluZ3NUYWJsZS5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveItems/IdentifierTextBox.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZUl0ZW1zXElkZW50aWZpZXJUZXh0Qm94LnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/ArchiveManagement.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJjaGl2ZU1hbmFnZW1lbnQucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/Categories/CategoriesListComponent.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q2F0ZWdvcmllc1xDYXRlZ29yaWVzTGlzdENvbXBvbmVudC5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/Categories/CategoryCreatorDialog.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q2F0ZWdvcmllc1xDYXRlZ29yeUNyZWF0b3JEaWFsb2cucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/Categories/CategoryFieldCardComponent.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q2F0ZWdvcmllc1xDYXRlZ29yeUZpZWxkQ2FyZENvbXBvbmVudC5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/Categories/ViewAddCategoriesComponent.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q2F0ZWdvcmllc1xWaWV3QWRkQ2F0ZWdvcmllc0NvbXBvbmVudC5yYXpvcg==
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/BlogPostsTablePage.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QmxvZ1Bvc3RzVGFibGVQYWdlLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/HomePageEditor.razor]
|
||||
@@ -82,3 +46,7 @@ build_metadata.AdditionalFiles.CssScope =
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/SearchPageSettings.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = U2VhcmNoUGFnZVNldHRpbmdzLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/vtall/source/repos/vtallen/Open-Archival/OpenArchival.Blazor.AdminPages/Areas/MyFeature/Pages/Page1.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXJlYXNcTXlGZWF0dXJlXFBhZ2VzXFBhZ2UxLmNzaHRtbA==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
cd77d473066694d90adbd3c207c6e29431a22a5d905d0b01001e9e6c37ed7282
|
||||
8579fc445bbc22ef76c681f616873728ea28622341fe31bcbf18de7d0deb14c1
|
||||
|
||||
@@ -4,24 +4,46 @@ C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.DataAccess.exe
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.CustomComponents.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.CustomComponents.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.FileViewer.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.FileViewer.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArtifactGroupingDisplay.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArtifactGroupingDisplay.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArchiveSearch.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArchiveSearch.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.Shared.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.Shared.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Blog.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Blog.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.staticwebassets.runtime.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.staticwebassets.endpoints.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.deps.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.runtimeconfig.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.Shared.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArchiveSearch.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArtifactGroupingDisplay.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Blog.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Config.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.CustomComponents.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.FileViewer.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.DataAccess.dll
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.AdminPages.Shared.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArchiveSearch.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Blog.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.Config.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.CustomComponents.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.DataAccess.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.ArtifactGroupingDisplay.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\bin\Debug\net9.0\OpenArchival.Blazor.FileViewer.pdb
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.csproj.AssemblyReference.cache
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\rpswa.dswa.cache.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.AssemblyInfoInputs.cache
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.AssemblyInfo.cs
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.csproj.CoreCompileInputs.cache
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.RazorAssemblyInfo.cache
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.RazorAssemblyInfo.cs
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\OpenArchival.Blazor.AdminPages.sourcelink.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\rjimswa.dswa.cache.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\rjsmrazor.dswa.cache.json
|
||||
@@ -708,7 +730,7 @@ C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\compressed\21hnyluk87-jo45u8913j.gz
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\compressed\pm14qrlwbb-tkxqvq0zjw.gz
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\compressed\vuc6jv94xw-tf5u2o3oxg.gz
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\compressed\t5y2tgc8np-a9ucq0wzsm.gz
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\compressed\t5y2tgc8np-w2ijupf7qe.gz
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\staticwebassets.build.json.cache
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages\obj\Debug\net9.0\staticwebassets.development.json
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
{"documents":{"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/0e24ce207395fb1c32a87d10049c1d81dc4784fe/*"}}
|
||||
{"documents":{"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/b34449808fa29388ff6ca79b560f657d74738fdd/*"}}
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"MRiB4IDUD95tznQVFDSUB/ZRBiL0l7NqvypMyWisBKY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["yNASx2WVYnox7Rf0nRebIyEfzcxIHDp/Pb47b3qclZk=","5i4uB6FXFTMSwuITJArdIE4L1BFP0XwqpjmTIerviVM=","N4NvN2nZR/kOB4KK4/SyeGaNDwhoZplbvxum1\u002BUkgPI=","4GEmwvUAYPnwuwfQ7Kgd0bTvShxDlKFJCvNWYf/2m8Y=","gWjtd7QMqmKugLcjoA\u002Bz7uTk/kPdK0OzWgPxibM4Q80=","q5\u002BBQ0cq6yYjQt7fjTb0P66tO5bxjIqGHFBjOiPuszQ=","lao90sMVLCx33PwCNC6c7eEpsWPlbqDw7v4MrMzvC8c=","fS8D7hjkphJRf6C\u002Bm/Qnypds9mEqiMfsUqX6crY95Cg=","cF3g8FswId5g9A1UyRGfJgcpgxL4XwcQUsisKXtrqjw=","LTKqIVmh6nq1MbEhySE0uxyFyWff9WrU1ON1M\u002BHeHU8=","sJjcvxwurmrqwAU/4zgO4hND3LvV36eZllxUbJFEZq4=","y1UjlmRucY2a7SZOaTcGmX43sccL/D64K/06s2Lir1U=","S2UnhitwgLXL4NKKJv8zqoaNXqB2nMFTAVHkB/UeLhk=","MDaymOOBTf9aIEzQEvxamD7RXb4UCN/BaiI/tZTy\u002BFc=","viW3wF06mFdTO24KOFsfjpjmAHhCve7VMomZdzTnw24="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"MRiB4IDUD95tznQVFDSUB/ZRBiL0l7NqvypMyWisBKY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["hdkbLfBW80O6V8mRPDKVS4GxQBJ5Yq0//0f//uD6hCk=","ckfKiN/UexJCvNpv0IgeNIJ6YAGvgCi3MC1sfmYkoN0=","pbSNtMQDhFMOMtwKLca6IMii/j8hkhz/CWdMueUvqio=","GAOQQkPakdbiy9rSer1zfDSSyrRdi0aIzirRUblnpoU=","fIF/NHmkDZl/7KNBYJnkVWBYCllBDN72oTSxX0ge2yU=","NditJ\u002BqRyztCABpJJTUoV1KZMCGC3kRDrcfYTbZHb5g=","Yexa2RDYJdaq6TJVMfDtPNPpPgBmMC9np3fo6eRlcD4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"pFI6wgQWnM801WhA+kBqb87aAQ1SYD4hIz9ddwGuTRY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["yNASx2WVYnox7Rf0nRebIyEfzcxIHDp/Pb47b3qclZk=","5i4uB6FXFTMSwuITJArdIE4L1BFP0XwqpjmTIerviVM=","N4NvN2nZR/kOB4KK4/SyeGaNDwhoZplbvxum1\u002BUkgPI=","4GEmwvUAYPnwuwfQ7Kgd0bTvShxDlKFJCvNWYf/2m8Y=","gWjtd7QMqmKugLcjoA\u002Bz7uTk/kPdK0OzWgPxibM4Q80=","q5\u002BBQ0cq6yYjQt7fjTb0P66tO5bxjIqGHFBjOiPuszQ=","lao90sMVLCx33PwCNC6c7eEpsWPlbqDw7v4MrMzvC8c=","fS8D7hjkphJRf6C\u002Bm/Qnypds9mEqiMfsUqX6crY95Cg=","cF3g8FswId5g9A1UyRGfJgcpgxL4XwcQUsisKXtrqjw=","LTKqIVmh6nq1MbEhySE0uxyFyWff9WrU1ON1M\u002BHeHU8=","sJjcvxwurmrqwAU/4zgO4hND3LvV36eZllxUbJFEZq4=","y1UjlmRucY2a7SZOaTcGmX43sccL/D64K/06s2Lir1U=","S2UnhitwgLXL4NKKJv8zqoaNXqB2nMFTAVHkB/UeLhk=","MDaymOOBTf9aIEzQEvxamD7RXb4UCN/BaiI/tZTy\u002BFc=","viW3wF06mFdTO24KOFsfjpjmAHhCve7VMomZdzTnw24="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"pFI6wgQWnM801WhA+kBqb87aAQ1SYD4hIz9ddwGuTRY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["hdkbLfBW80O6V8mRPDKVS4GxQBJ5Yq0//0f//uD6hCk=","ckfKiN/UexJCvNpv0IgeNIJ6YAGvgCi3MC1sfmYkoN0=","pbSNtMQDhFMOMtwKLca6IMii/j8hkhz/CWdMueUvqio=","GAOQQkPakdbiy9rSer1zfDSSyrRdi0aIzirRUblnpoU=","fIF/NHmkDZl/7KNBYJnkVWBYCllBDN72oTSxX0ge2yU=","NditJ\u002BqRyztCABpJJTUoV1KZMCGC3kRDrcfYTbZHb5g=","Yexa2RDYJdaq6TJVMfDtPNPpPgBmMC9np3fo6eRlcD4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"zNJXz5rQrCxSXKP7vOgOdkHaQH0t0RaJ9A6BsbVWhRo=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["5FYHdDpB/w9zgB42aIZXYNd5GUAQ2FtE1I/WTu04vIs=","TdaDWuRc1qjNpNDXZXgdepjK99ZMLKNb1l6c7haV0Es=","VT/GaZ7Ab\u002BNpRK9L5cmjsK80YbIYszAeLOk49kSkUaQ=","MjbUDu7L2AHbMq8\u002BfIQ5o9R1tMT28TQhppM8Z0hH4Fw=","NJX1DoLCS76R8Ya2DcTwkSj46QhcH6070l9VbngqqvM=","4w9GIxrOkKjQzjCQuxA\u002BR\u002BJbZDNA\u002BSXSFDobAntsTSQ=","vH6ZV\u002BdjcRzsq5yMoti6BFVvUM8HoPPsA7rcKsMGGGg=","8hUS3woWS6spbIauTI/Y56WYgds/lARH5p2YNH0zZbc=","ptK5lsbMMAF0MyfmXnXU0QoC0HJxlfM9v6gLIoJTbOU=","uRurSxZAEKPpQhTAARkYymmooR4UmE\u002Bgv/DLtdyvYd0=","fQZMXudOPo1zhfhLFcNVfKnr2EUaUQuMoTsXBSpQgbU=","Vd0O9sdyyXroAIEWXKMP0l6ejQ31ESX7qvIwEqJlqQc=","JDq35wZFjR6BR0th1mOaInyWsHAwiS3cadTNqIXpQwM=","KIc4Xg9bLENyVevCGosxCAfl48\u002BTWy\u002BG2OgadQk2MFQ=","gzECo3WgQldP5aVzMEsxwgkYTlGFI648GTf7zELSwpg="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"zNJXz5rQrCxSXKP7vOgOdkHaQH0t0RaJ9A6BsbVWhRo=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["8rwJW2oJ1N6avlB8aPUwJUw5ecsbB\u002Be8EVy698wb3Wk=","aIKWbliFkXTwMrmbq5VXtD\u002B\u002BibXnYpkRoAI/R9zrVc8=","PRgC7yKZYWW1HSmLLx7mFFjTsfnsSKZiWTubGfwop08=","GSj14sBlTN30VbywZSk/fdP7tmoXRFedlx\u002BiXkmTFmg=","BdvWuioCvJaYr3ccQPGGBr00IS0hQq/qmdfSXAG7/6Y=","wNN\u002B5ItYUgNVeQzGO8qCQ2yGyy7T0rECqedhBQC8U\u002BY=","1WESorfAcDx3QVqwphw2p6ZA8trBMrcqaH1gD3hkPBs="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
vbnlO0s+h2GHPLEX05mBMBFzd0NgcWtiZQ9ZxvkIhPg=
|
||||
zpfJB2FFQN9dfjA4njRPgIiyBlXQHGgSUN/OsW2WpLo=
|
||||
File diff suppressed because one or more lines are too long
@@ -1,104 +1,119 @@
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.AdminPages.Shared\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArchiveSearch\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.Blog\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.CustomComponents\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.ArtifactGroupingDisplay\obj\Debug\net9.0\staticwebassets.build.json
|
||||
C:\Users\vtall\source\repos\vtallen\Open-Archival\OpenArchival.Blazor.FileViewer\obj\Debug\net9.0\staticwebassets.build.json
|
||||
|
||||
@@ -4,6 +4,99 @@
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages\\OpenArchival.Blazor.AdminPages.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj",
|
||||
"projectName": "OpenArchival.Blazor.AdminPages.Shared",
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj",
|
||||
"packagesPath": "C:\\Users\\vtall\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\NuGet.Config",
|
||||
"C:\\Users\\vtall\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": {
|
||||
"target": "Package",
|
||||
"version": "[8.14.0, )"
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens": {
|
||||
"target": "Package",
|
||||
"version": "[8.14.0, )"
|
||||
},
|
||||
"MudBlazor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.AspNetCore.App": {
|
||||
"privateAssets": "none"
|
||||
},
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages\\OpenArchival.Blazor.AdminPages.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
@@ -33,6 +126,15 @@
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj"
|
||||
},
|
||||
@@ -105,6 +207,269 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj",
|
||||
"projectName": "OpenArchival.Blazor.ArchiveSearch",
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj",
|
||||
"packagesPath": "C:\\Users\\vtall\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\NuGet.Config",
|
||||
"C:\\Users\\vtall\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\OpenArchival.Blazor.ArtifactGroupingDisplay.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\OpenArchival.Blazor.ArtifactGroupingDisplay.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"MudBlazor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.AspNetCore.App": {
|
||||
"privateAssets": "none"
|
||||
},
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\OpenArchival.Blazor.ArtifactGroupingDisplay.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\OpenArchival.Blazor.ArtifactGroupingDisplay.csproj",
|
||||
"projectName": "OpenArchival.Blazor.ArtifactGroupingDisplay",
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\OpenArchival.Blazor.ArtifactGroupingDisplay.csproj",
|
||||
"packagesPath": "C:\\Users\\vtall\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArtifactGroupingDisplay\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\NuGet.Config",
|
||||
"C:\\Users\\vtall\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\OpenArchival.Blazor.FileViewer.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\OpenArchival.Blazor.FileViewer.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": {
|
||||
"target": "Package",
|
||||
"version": "[6.3.0, )"
|
||||
},
|
||||
"MudBlazor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.AspNetCore.App": {
|
||||
"privateAssets": "none"
|
||||
},
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj",
|
||||
"projectName": "OpenArchival.Blazor.Blog",
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj",
|
||||
"packagesPath": "C:\\Users\\vtall\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\NuGet.Config",
|
||||
"C:\\Users\\vtall\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.CustomComponents\\OpenArchival.Blazor.CustomComponents.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"MudBlazor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
},
|
||||
"MudExRichTextEditor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.AspNetCore.App": {
|
||||
"privateAssets": "none"
|
||||
},
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
@@ -196,6 +561,92 @@
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.DataAccess\\OpenArchival.DataAccess.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": {
|
||||
"target": "Package",
|
||||
"version": "[6.3.0, )"
|
||||
},
|
||||
"MudBlazor": {
|
||||
"target": "Package",
|
||||
"version": "[8.13.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.AspNetCore.App": {
|
||||
"privateAssets": "none"
|
||||
},
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\OpenArchival.Blazor.FileViewer.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\OpenArchival.Blazor.FileViewer.csproj",
|
||||
"projectName": "OpenArchival.Blazor.FileViewer",
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\OpenArchival.Blazor.FileViewer.csproj",
|
||||
"packagesPath": "C:\\Users\\vtall\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.FileViewer\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\NuGet.Config",
|
||||
"C:\\Users\\vtall\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
|
||||
@@ -1584,6 +1584,86 @@
|
||||
"lib/net9.0/ZstdSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"OpenArchival.Blazor.AdminPages.Shared/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.14.0",
|
||||
"Microsoft.IdentityModel.Tokens": "8.14.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.ArchiveSearch": "1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/OpenArchival.Blazor.AdminPages.Shared.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/OpenArchival.Blazor.AdminPages.Shared.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.ArchiveSearch/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/OpenArchival.Blazor.ArchiveSearch.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/OpenArchival.Blazor.ArchiveSearch.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.Blazor.FileViewer": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/OpenArchival.Blazor.ArtifactGroupingDisplay.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/OpenArchival.Blazor.ArtifactGroupingDisplay.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.Blog/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"MudBlazor": "8.13.0",
|
||||
"MudExRichTextEditor": "8.13.0",
|
||||
"OpenArchival.Blazor.AdminPages.Shared": "1.0.0",
|
||||
"OpenArchival.Blazor.Config": "1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/OpenArchival.Blazor.Blog.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/OpenArchival.Blazor.Blog.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.Config/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
@@ -1600,6 +1680,7 @@
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.Blazor.Config": "1.0.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
@@ -1612,6 +1693,24 @@
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.FileViewer/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"CodeBeam.MudExtensions": "6.3.0",
|
||||
"MudBlazor": "8.13.0",
|
||||
"OpenArchival.DataAccess": "1.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/OpenArchival.Blazor.FileViewer.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/OpenArchival.Blazor.FileViewer.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenArchival.DataAccess/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
@@ -4980,6 +5079,26 @@
|
||||
"zstdsharp.port.nuspec"
|
||||
]
|
||||
},
|
||||
"OpenArchival.Blazor.AdminPages.Shared/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.AdminPages.Shared/OpenArchival.Blazor.AdminPages.Shared.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.AdminPages.Shared/OpenArchival.Blazor.AdminPages.Shared.csproj"
|
||||
},
|
||||
"OpenArchival.Blazor.ArchiveSearch/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.ArchiveSearch/OpenArchival.Blazor.ArchiveSearch.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.ArchiveSearch/OpenArchival.Blazor.ArchiveSearch.csproj"
|
||||
},
|
||||
"OpenArchival.Blazor.ArtifactGroupingDisplay/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.ArtifactGroupingDisplay/OpenArchival.Blazor.ArtifactGroupingDisplay.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.ArtifactGroupingDisplay/OpenArchival.Blazor.ArtifactGroupingDisplay.csproj"
|
||||
},
|
||||
"OpenArchival.Blazor.Blog/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.Blog/OpenArchival.Blazor.Blog.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.Blog/OpenArchival.Blazor.Blog.csproj"
|
||||
},
|
||||
"OpenArchival.Blazor.Config/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.Config/OpenArchival.Blazor.Config.csproj",
|
||||
@@ -4990,6 +5109,11 @@
|
||||
"path": "../OpenArchival.Blazor.CustomComponents/OpenArchival.Blazor.CustomComponents.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.CustomComponents/OpenArchival.Blazor.CustomComponents.csproj"
|
||||
},
|
||||
"OpenArchival.Blazor.FileViewer/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.Blazor.FileViewer/OpenArchival.Blazor.FileViewer.csproj",
|
||||
"msbuildProject": "../OpenArchival.Blazor.FileViewer/OpenArchival.Blazor.FileViewer.csproj"
|
||||
},
|
||||
"OpenArchival.DataAccess/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../OpenArchival.DataAccess/OpenArchival.DataAccess.csproj",
|
||||
@@ -5003,6 +5127,9 @@
|
||||
"Microsoft.IdentityModel.Tokens >= 8.14.0",
|
||||
"MudBlazor >= 8.13.0",
|
||||
"MudExRichTextEditor >= 8.13.0",
|
||||
"OpenArchival.Blazor.AdminPages.Shared >= 1.0.0",
|
||||
"OpenArchival.Blazor.ArchiveSearch >= 1.0.0",
|
||||
"OpenArchival.Blazor.Blog >= 1.0.0",
|
||||
"OpenArchival.Blazor.Config >= 1.0.0",
|
||||
"OpenArchival.Blazor.CustomComponents >= 1.0.0",
|
||||
"OpenArchival.DataAccess >= 1.0.0"
|
||||
@@ -5041,6 +5168,15 @@
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages.Shared\\OpenArchival.Blazor.AdminPages.Shared.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.ArchiveSearch\\OpenArchival.Blazor.ArchiveSearch.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Blog\\OpenArchival.Blazor.Blog.csproj"
|
||||
},
|
||||
"C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj": {
|
||||
"projectPath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.Config\\OpenArchival.Blazor.Config.csproj"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "p8NDI2KjxEY=",
|
||||
"dgSpecHash": "h4IBbjhZjtg=",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\vtall\\source\\repos\\vtallen\\Open-Archival\\OpenArchival.Blazor.AdminPages\\OpenArchival.Blazor.AdminPages.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
Reference in New Issue
Block a user