Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed dotnet-counters rendering issues #3353

Merged
merged 9 commits into from
Sep 14, 2022
21 changes: 18 additions & 3 deletions src/Tools/dotnet-counters/Exporters/ConsoleWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ public ObservedTagSet(string tags)
private readonly object _lock = new object();
private readonly Dictionary<string, ObservedProvider> _providers = new Dictionary<string, ObservedProvider>(); // Tracks observed providers and counters.
private const int Indent = 4; // Counter name indent size.
private int _maxNameLength = 40; // Allow room for 40 character counter names by default.
private const int CounterValueLength= 20;
dramos020 marked this conversation as resolved.
Show resolved Hide resolved

private int _maxNameLength = 60; // Allow room for 60 character counter names by default.
dramos020 marked this conversation as resolved.
Show resolved Hide resolved
private int _statusRow; // Row # of where we print the status of dotnet-counters
private int _topRow;
private bool _paused = false;
Expand All @@ -69,6 +70,9 @@ public ObservedTagSet(string tags)
private int _maxRow = -1;
private bool _useAnsi = false;

private int _consoleHeight = -1;
private int _consoleWidth = -1;

public ConsoleWriter(bool useAnsi)
{
this._useAnsi = useAnsi;
Expand Down Expand Up @@ -126,9 +130,15 @@ public void AssignRowsAndInitializeDisplay()
{
Clear();

_consoleWidth = Console.WindowWidth;
_consoleHeight = Console.WindowHeight;
_maxNameLength = _consoleWidth < 80 ? _consoleWidth - CounterValueLength: 60; // truncate the display name when the window width is less than 80
noahfalk marked this conversation as resolved.
Show resolved Hide resolved
noahfalk marked this conversation as resolved.
Show resolved Hide resolved

int row = Console.CursorTop;
_topRow = row;
Console.WriteLine("Press p to pause, r to resume, q to quit."); row++;

string instructions = "Press p to pause, r to resume, q to quit.";
Console.WriteLine((instructions.Length < _consoleWidth) ? instructions : instructions.Substring(0, _consoleWidth)); row++;
Console.WriteLine($" Status: {GetStatus()}"); _statusRow = row++;
if (_errorText != null)
{
Expand All @@ -146,7 +156,7 @@ public void AssignRowsAndInitializeDisplay()
counter.Row = row++;
if (counter.RenderValueInline)
{
Console.WriteLine($"{name} {FormatValue(counter.LastValue)}");
Console.WriteLine((_consoleWidth > CounterValueLength) ? $"{name} {FormatValue(counter.LastValue)}" : $"{FormatValue(counter.LastValue)}");
noahfalk marked this conversation as resolved.
Show resolved Hide resolved
noahfalk marked this conversation as resolved.
Show resolved Hide resolved
}
else
{
Expand Down Expand Up @@ -222,6 +232,11 @@ public void CounterPayloadReceived(CounterPayload payload, bool pauseCmdSet)
redraw = true;
}

if(Console.WindowWidth != _consoleWidth || Console.WindowHeight != _consoleHeight)
{
redraw=true;
}

if (redraw)
{
AssignRowsAndInitializeDisplay();
Expand Down