90 lines
3.0 KiB
Plaintext
90 lines
3.0 KiB
Plaintext
@using MoonCore.Blazor.FlyonUi.Components
|
|
@using MoonlightServers.Shared.Http.Requests.Admin.Servers
|
|
@using MoonCore.Helpers
|
|
@using MoonCore.Models
|
|
@using MoonlightServers.Frontend.UI.Views.Admin.All
|
|
@using MoonlightServers.Shared.Http.Requests.Admin.ServerVariables
|
|
@using MoonlightServers.Shared.Http.Responses.Admin.Stars
|
|
@using MoonlightServers.Shared.Http.Responses.Admin.StarVariables
|
|
|
|
@inject HttpApiClient ApiClient
|
|
|
|
<LazyLoader Load="Load">
|
|
<div class="grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6">
|
|
@foreach (var variable in StarVariables)
|
|
{
|
|
// Load value of default
|
|
var requestVar = Request.Variables.FirstOrDefault(x => x.Key == variable.Key);
|
|
var value = requestVar != null
|
|
? requestVar.Value
|
|
: variable.DefaultValue;
|
|
|
|
<div class="sm:col-span-2">
|
|
<label class="block text-sm font-medium leading-6 text-base-content">
|
|
@variable.Name
|
|
</label>
|
|
<div class="mt-2">
|
|
<input type="text"
|
|
class="input placeholder-base-content/50 w-full"
|
|
value="@value"
|
|
placeholder="@variable.DefaultValue"
|
|
@onchange="@(args => UpdateValue(variable, args))"/>
|
|
</div>
|
|
<p class="mt-1 text-sm leading-6 text-base-content/60">
|
|
@variable.Description
|
|
</p>
|
|
</div>
|
|
}
|
|
</div>
|
|
</LazyLoader>
|
|
|
|
@code
|
|
{
|
|
[Parameter] public CreateServerRequest Request { get; set; }
|
|
[Parameter] public Create Parent { get; set; }
|
|
|
|
private StarVariableDetailResponse[] StarVariables;
|
|
|
|
private async Task Load(LazyLoader _)
|
|
{
|
|
if (Parent.Star == null)
|
|
{
|
|
StarVariables = [];
|
|
return;
|
|
}
|
|
|
|
StarVariables = await PagedData<StarVariableDetailResponse>.All(async (page, pageSize) =>
|
|
await ApiClient.GetJson<PagedData<StarVariableDetailResponse>>(
|
|
$"api/admin/servers/stars/{Parent.Star.Id}/variables?page={page}&pageSize={pageSize}"
|
|
)
|
|
);
|
|
}
|
|
|
|
private async Task UpdateValue(StarVariableDetailResponse starVariable, ChangeEventArgs args)
|
|
{
|
|
var value = args.Value?.ToString() ?? "";
|
|
|
|
// Remove variable from request when set to its default value
|
|
if (value == starVariable.DefaultValue && Request.Variables.Any(x => x.Key == starVariable.Key))
|
|
Request.Variables.RemoveAll(x => x.Key == starVariable.Key);
|
|
else
|
|
{
|
|
var serverVar = Request.Variables
|
|
.FirstOrDefault(x => x.Key == starVariable.Key);
|
|
|
|
if (serverVar == null)
|
|
{
|
|
serverVar = new CreateServerVariableRequest()
|
|
{
|
|
Key = starVariable.Key
|
|
};
|
|
|
|
Request.Variables.Add(serverVar);
|
|
}
|
|
|
|
serverVar.Value = value;
|
|
}
|
|
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
} |