From e756600b9755f6c3958c7f557ddec044c488fb55 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:59:34 +1000 Subject: [PATCH] display logs --- .../Features/Build/BuildService.cs | 4 ++- .../Components/TerminalOutputDisplay.razor | 30 +++++++++++++++++-- src/SharpIDE.Photino/wwwroot/index.html | 1 + src/SharpIDE.Photino/wwwroot/scripts2.js | 6 ++++ 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/SharpIDE.Photino/wwwroot/scripts2.js diff --git a/src/SharpIDE.Application/Features/Build/BuildService.cs b/src/SharpIDE.Application/Features/Build/BuildService.cs index 1f2575b..f661c29 100644 --- a/src/SharpIDE.Application/Features/Build/BuildService.cs +++ b/src/SharpIDE.Application/Features/Build/BuildService.cs @@ -16,6 +16,7 @@ public enum BuildType } public class BuildService { + public event Func BuildStarted = () => Task.CompletedTask; public Channel BuildOutputChannel { get; } = Channel.CreateUnbounded(); public async Task MsBuildSolutionAsync(string solutionFilePath, BuildType buildType = BuildType.Build) { @@ -24,7 +25,7 @@ public class BuildService Loggers = [ //new BinaryLogger { Parameters = "msbuild.binlog" }, - new ConsoleLogger(LoggerVerbosity.Normal, message => BuildOutputChannel.Writer.TryWrite(message), s => { }, () => { }), + new ConsoleLogger(LoggerVerbosity.Minimal, message => BuildOutputChannel.Writer.TryWrite(message), s => { }, () => { }), //new InMemoryLogger(LoggerVerbosity.Normal) ], }; @@ -46,6 +47,7 @@ public class BuildService await Task.Run(async () => { + await BuildStarted.Invoke(); var buildCompleteTcs = new TaskCompletionSource(); BuildManager.DefaultBuildManager.BeginBuild(buildParameters); var buildResult2 = BuildManager.DefaultBuildManager.PendBuildRequest(buildRequest); diff --git a/src/SharpIDE.Photino/Components/TerminalOutputDisplay.razor b/src/SharpIDE.Photino/Components/TerminalOutputDisplay.razor index 3e37b44..0c016c8 100644 --- a/src/SharpIDE.Photino/Components/TerminalOutputDisplay.razor +++ b/src/SharpIDE.Photino/Components/TerminalOutputDisplay.razor @@ -1,8 +1,12 @@ @using SharpIDE.Application.Features.Build -@inject BuildService BuildService -
- @foreach(var line in _outputLines) +@inject BuildService BuildService +@inject IJSRuntime JsRuntime + +@implements IDisposable + +
+ @foreach (var line in _outputLines) { @line } @@ -10,12 +14,32 @@ @code { private List _outputLines = []; + private ElementReference _logContainer; + protected override async Task OnInitializedAsync() { + BuildService.BuildStarted += ClearPreviousOutput; await foreach (var logLine in BuildService.BuildOutputChannel.Reader.ReadAllAsync()) { _outputLines.Add(logLine); await InvokeAsync(StateHasChanged); + await ScrollToBottomAsync(); } } + + private async Task ClearPreviousOutput() + { + _outputLines.Clear(); + await InvokeAsync(StateHasChanged); + } + + private async Task ScrollToBottomAsync() + { + await JsRuntime.InvokeVoidAsync("scrollToBottom", _logContainer); + } + + public void Dispose() + { + BuildService.BuildStarted -= ClearPreviousOutput; + } } diff --git a/src/SharpIDE.Photino/wwwroot/index.html b/src/SharpIDE.Photino/wwwroot/index.html index d4eb76d..aa06f56 100644 --- a/src/SharpIDE.Photino/wwwroot/index.html +++ b/src/SharpIDE.Photino/wwwroot/index.html @@ -18,6 +18,7 @@ 🗙
+ diff --git a/src/SharpIDE.Photino/wwwroot/scripts2.js b/src/SharpIDE.Photino/wwwroot/scripts2.js new file mode 100644 index 0000000..492b677 --- /dev/null +++ b/src/SharpIDE.Photino/wwwroot/scripts2.js @@ -0,0 +1,6 @@ + +window.scrollToBottom = function(element) { + if (element) { + element.scrollTop = element.scrollHeight; + } +}