@page "/details/{folder}/{specName}"
@using Generator.Controllers
@using WebServer.Components.Molecule
@using WebServer.Components.Organism
@using Core.SpecConfig
@using Core.Events
@rendermode InteractiveServer
Details
Details
@SpecName
@if (CanBeGenerated())
{
}
@GetSpecText()
@_actionState
@code {
[Inject] private AnalyzeController AnalyzeController { get; set; } = null!;
[Inject] private GenerationController GenerationController { get; set; } = null!;
[Inject] private PreGenerationController PreGenController { get; set; } = null!;
[Parameter] public string Folder{ get; set; } = null!;
[Parameter] public string SpecName{ get; set; } = null!;
private string? _actionState;
private DisplayEmitter _emitter = null!;
protected override void OnInitialized()
{
_emitter = GenerationController.Emitter;
_emitter.OnSay += DisplayState;
_emitter.OnWarn += DisplayState;
}
private async void DisplayState(object? sender, DisplayEventArgs e)
{
_actionState = e.Content;
await InvokeAsync(StateHasChanged);
}
private async void Generate()
{
_emitter.Say(this, "Starting generation..");
var process = PreGenController.ComputeGeneration(
$"{Folder}/{SpecName}", null, PublishType.No
);
await GenerationController.Launch(process);
_emitter.Say(this,"Generation completed");
}
private void Publish()
{
_emitter.Say(this, "Publishing not available at the moment");
}
private string GetSpecText() => AnalyzeController.GetSpecText(Folder, SpecName);
private bool CanBeGenerated() => AnalyzeController.CanBeGenerated(Folder, SpecName);
}