Delete
Edit
@inject IArtifactGroupingProvider GroupingProvider;
@inject IDialogService DialogService;
@inject IArtifactGroupingProvider GroupingProvider;
@code
{
public List ArtifactGroupingRows { get; set; } = new();
public MudDataGrid DataGrid { get; set; } = default!;
protected override async Task OnInitializedAsync()
{
// Load inital data
List groupings = await GroupingProvider.GetGroupingsPaged(1, 25);
SetGroupingRows(groupings);
await base.OnInitializedAsync();
StateHasChanged();
}
private void SetGroupingRows(IEnumerable 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("Edit Grouping", parameters, options);
var result = await dialog.Result;
if (result is not null && !result.Canceled)
{
var validationModel = (ArtifactGroupingValidationModel)result.Data!;
await GroupingProvider.UpdateGroupingAsync(validationModel.ToArtifactGrouping());
await DataGrid.ReloadServerData();
}
}
private async Task OnDeleteClicked(MouseEventArgs args)
{
HashSet 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> ServerReload(GridState state)
{
int totalItems = await GroupingProvider.GetTotalCount();
IEnumerable 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()
{
TotalItems = totalItems,
Items = pagedItems
};
}
}