Implemented template crud, db entities, import/export, ptero and pelican import

This commit is contained in:
2026-03-12 13:00:32 +00:00
parent 7c5dc657dc
commit e7b1e77d0a
68 changed files with 4269 additions and 24 deletions

View File

@@ -0,0 +1,76 @@
@using LucideBlazor
@using MoonlightServers.Shared.Admin.Templates
@using ShadcnBlazor.Accordions
@using ShadcnBlazor.Buttons
@using ShadcnBlazor.Fields
@using ShadcnBlazor.Inputs
<div class="mb-5 flex justify-end">
<Button @onclick="Add">
<PlusIcon/>
Create
</Button>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
@foreach (var file in FilesConfig.ConfigurationFiles)
{
<Accordion ClassName="-space-y-px" Type="AccordionType.Single">
<AccordionItem
ClassName="overflow-hidden border bg-card px-4 first:rounded-t-lg last:rounded-b-lg last:border-b"
Value="element">
<AccordionTrigger ClassName="hover:no-underline">
<div class="flex items-center gap-3">
<FileCogIcon/>
<span class="text-left">@file.Path</span>
</div>
</AccordionTrigger>
<AccordionContent ClassName="ps-7">
<FieldGroup>
<FieldSet>
<Field>
@{
var id = $"configFilePath{file.GetHashCode()}";
}
<FieldLabel for="@id">Path</FieldLabel>
<TextInputField
@bind-Value="file.Path"
id="@id"/>
</Field>
<Field>
@{
var id = $"configFileParser{file.GetHashCode()}";
}
<FieldLabel for="@id">Parser</FieldLabel>
<TextInputField
@bind-Value="file.Parser"
id="@id"/>
</Field>
</FieldSet>
<FieldSet>
<ConfigFileMappingEditor @bind-Value="file.Mappings" />
</FieldSet>
<Field Orientation="FieldOrientation.Horizontal" ClassName="justify-end">
<Button Variant="ButtonVariant.Destructive"
@onclick="() => Delete(file)">
Delete
</Button>
</Field>
</FieldGroup>
</AccordionContent>
</AccordionItem>
</Accordion>
}
</div>
@code
{
[Parameter] public UpdateFilesConfigDto FilesConfig { get; set; }
private void Add()
=> FilesConfig.ConfigurationFiles.Add(new());
private void Delete(UpdateConfigurationFileDto dto)
=> FilesConfig.ConfigurationFiles.Remove(dto);
}