111 lines
4.0 KiB
Plaintext
111 lines
4.0 KiB
Plaintext
@using MoonCore.Blazor.FlyonUi.Alerts
|
|
@using MoonCore.Blazor.FlyonUi.Components
|
|
@using MoonCore.Blazor.FlyonUi.Modals
|
|
@using MoonCore.Blazor.FlyonUi.Toasts
|
|
@using MoonCore.Helpers
|
|
@using MoonCore.Models
|
|
@using MoonlightServers.Frontend.UI.Components.Stars.Modals
|
|
@using MoonlightServers.Shared.Http.Requests.Admin.StarVariables
|
|
@using MoonlightServers.Shared.Http.Responses.Admin.Stars
|
|
@using MoonlightServers.Shared.Http.Responses.Admin.StarVariables
|
|
|
|
@inject HttpApiClient ApiClient
|
|
@inject ModalService ModalService
|
|
@inject AlertService AlertService
|
|
@inject ToastService ToastService
|
|
|
|
<div class="flex justify-end mb-5">
|
|
<button type="button" @onclick="AddVariableAsync" class="btn btn-primary">Add variable</button>
|
|
</div>
|
|
|
|
<LazyLoader @ref="LazyLoader" Load="LoadAsync">
|
|
<div class="grid sm:grid-cols-2 xl:grid-cols-3 gap-4">
|
|
@foreach (var variable in CurrentVariables)
|
|
{
|
|
<div class="col-span-1 card card-body p-2.5">
|
|
<div class="flex items-center justify-between">
|
|
<div class="ml-3">
|
|
<i class="icon-variable text-xl align-middle mr-2"></i>
|
|
<span class="align-middle text-lg">@variable.Name</span>
|
|
</div>
|
|
|
|
<div class="gap-x-2">
|
|
<button type="button" @onclick="() => UpdateVariableAsync(variable)" class="btn btn-primary">
|
|
<i class="icon-settings text-base"></i>
|
|
</button>
|
|
|
|
<button type="button" @onclick="() => DeleteVariableAsync(variable)" class="btn btn-error">
|
|
<i class="icon-trash text-base"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</LazyLoader>
|
|
|
|
@code
|
|
{
|
|
[Parameter] public StarResponse Star { get; set; }
|
|
|
|
private StarVariableResponse[] CurrentVariables;
|
|
private LazyLoader LazyLoader;
|
|
|
|
private async Task LoadAsync(LazyLoader arg)
|
|
{
|
|
var pagedVariables = await ApiClient.GetJson<CountedData<StarVariableResponse>>(
|
|
$"api/admin/servers/stars/{Star.Id}/variables?startIndex=0&count=100"
|
|
);
|
|
|
|
CurrentVariables = pagedVariables.Items;
|
|
}
|
|
|
|
private async Task AddVariableAsync()
|
|
{
|
|
Func<CreateStarVariableRequest, Task> onSubmit = async request =>
|
|
{
|
|
await ApiClient.Post($"api/admin/servers/stars/{Star.Id}/variables", request);
|
|
|
|
await ToastService.SuccessAsync("Successfully created variable");
|
|
await LazyLoader.ReloadAsync();
|
|
};
|
|
|
|
await ModalService.LaunchAsync<CreateVariableModal>(parameters =>
|
|
{
|
|
parameters.Add("OnSubmit", onSubmit);
|
|
}, "max-w-xl");
|
|
}
|
|
|
|
private async Task UpdateVariableAsync(StarVariableResponse variable)
|
|
{
|
|
Func<UpdateStarVariableRequest, Task> onSubmit = async request =>
|
|
{
|
|
await ApiClient.Patch($"api/admin/servers/stars/{Star.Id}/variables/{variable.Id}", request);
|
|
|
|
await ToastService.SuccessAsync("Successfully updated variable");
|
|
await LazyLoader.ReloadAsync();
|
|
};
|
|
|
|
await ModalService.LaunchAsync<UpdateVariableModal>(parameters =>
|
|
{
|
|
parameters.Add("OnSubmit", onSubmit);
|
|
parameters.Add("Variable", variable);
|
|
}, "max-w-xl");
|
|
}
|
|
|
|
private async Task DeleteVariableAsync(StarVariableResponse variable)
|
|
{
|
|
await AlertService.ConfirmDangerAsync(
|
|
"Delete variable",
|
|
"Do you really want to delete the selected variable? This cannot be undone",
|
|
async () =>
|
|
{
|
|
await ApiClient.Delete($"api/admin/servers/stars/{Star.Id}/variables/{variable.Id}");
|
|
|
|
await ToastService.SuccessAsync("Successfully deleted variable");
|
|
await LazyLoader.ReloadAsync();
|
|
}
|
|
);
|
|
}
|
|
}
|