@page "/Service/{ServiceName}/Manage" @using LibSystemdCli.Models @using LibSystemdCli @using System.Text.RegularExpressions @using SystemdCtl.Client.Abstractions @* @attribute [StreamRendering] *@ @rendermode InteractiveWebAssembly @inject NavigationManager NavigationManager Manage @ServiceName

Manage @ServiceName

@* //simple log view *@

Logs

                    @foreach (var line in LogLines) {
                        @line
}
@code { [Parameter] public string ServiceName { get; set; } = ""; private static bool IsClient => !Environment.CommandLine.Contains("/"); private List LogLines { get; set; } = new(); protected override async Task OnInitializedAsync() { Console.WriteLine("OnInitializedAsync"); await Run(); } private async Task Run() { if (!IsClient) return; LogLines.Clear(); var Http = new StreamingHttpClient() { BaseAddress = new Uri(NavigationManager.BaseUri) }; var _items = Http.GetAsyncEnumerableFromJsonAsync($"/api/unit/{ServiceName}/logs"); await foreach (var item in _items) { LogLines.Add(item); if (LogLines.Count > 100) LogLines.RemoveAt(0); StateHasChanged(); } } private string Capitalize(string input) { return input switch { null => throw new ArgumentNullException(nameof(input)), "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)), _ => input.First().ToString().ToUpper() + input[1..] }; } }