diff --git a/examples/Console/Charts/Program.cs b/examples/Console/Charts/Program.cs index b107f6b..5aadfa8 100644 --- a/examples/Console/Charts/Program.cs +++ b/examples/Console/Charts/Program.cs @@ -23,6 +23,7 @@ public static class Program .FullSize() .Width(60) .ShowPercentage() + .WithValueColor(Color.Orange1) .AddItem("SCSS", 37, Color.Red) .AddItem("HTML", 28.3, Color.Blue) .AddItem("C#", 22.6, Color.Green) diff --git a/src/Spectre.Console/Extensions/BreakdownChartExtensions.cs b/src/Spectre.Console/Extensions/BreakdownChartExtensions.cs index 5ace7a9..ed3610f 100644 --- a/src/Spectre.Console/Extensions/BreakdownChartExtensions.cs +++ b/src/Spectre.Console/Extensions/BreakdownChartExtensions.cs @@ -297,4 +297,21 @@ public static class BreakdownChartExtensions chart.Compact = compact; return chart; } + + /// + /// Sets the . + /// + /// The breakdown chart. + /// The to set. + /// The same instance so that multiple calls can be chained. + public static BreakdownChart WithValueColor(this BreakdownChart chart, Color color) + { + if (chart is null) + { + throw new ArgumentNullException(nameof(chart)); + } + + chart.ValueColor = color; + return chart; + } } \ No newline at end of file diff --git a/src/Spectre.Console/Widgets/Charts/BreakdownChart.cs b/src/Spectre.Console/Widgets/Charts/BreakdownChart.cs index 85067c9..7ed9ce8 100644 --- a/src/Spectre.Console/Widgets/Charts/BreakdownChart.cs +++ b/src/Spectre.Console/Widgets/Charts/BreakdownChart.cs @@ -30,6 +30,11 @@ public sealed class BreakdownChart : Renderable, IHasCulture, IExpandable /// public Func? ValueFormatter { get; set; } + /// + /// Gets or sets the Color in which the values will be shown. + /// + public Color ValueColor { get; set; } = Color.Grey; + /// /// Gets or sets a value indicating whether or not the /// chart and tags should be rendered in compact mode. @@ -94,6 +99,7 @@ public sealed class BreakdownChart : Renderable, IHasCulture, IExpandable Culture = Culture, ShowTagValues = ShowTagValues, ValueFormatter = ValueFormatter, + ValueColor = ValueColor, }); } diff --git a/src/Spectre.Console/Widgets/Charts/BreakdownTags.cs b/src/Spectre.Console/Widgets/Charts/BreakdownTags.cs index a747345..67a4909 100644 --- a/src/Spectre.Console/Widgets/Charts/BreakdownTags.cs +++ b/src/Spectre.Console/Widgets/Charts/BreakdownTags.cs @@ -8,6 +8,7 @@ internal sealed class BreakdownTags : Renderable public CultureInfo? Culture { get; set; } public bool ShowTagValues { get; set; } = true; public Func? ValueFormatter { get; set; } + public Color ValueColor { get; set; } = Color.Grey; public BreakdownTags(List data) { @@ -55,8 +56,9 @@ internal sealed class BreakdownTags : Renderable if (ShowTagValues) { - return string.Format(culture, "{0} [grey]{1}[/]", + return string.Format(culture, "{0} [{1}]{2}[/]", item.Label.EscapeMarkup(), + ValueColor.ToMarkup(), formatter(item.Value, culture)); } diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt b/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt new file mode 100644 index 0000000..5b95b8b --- /dev/null +++ b/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt @@ -0,0 +1,3 @@ +████████████████████████████████████████████████████████████ +■ SCSS 37 ■ HTML 28.3 ■ C# 22.6 ■ JavaScript 6 +■ Ruby 6 ■ Shell 0.1 diff --git a/test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs b/test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs index ab92efb..4fdc7d1 100644 --- a/test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs +++ b/test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs @@ -127,6 +127,21 @@ public sealed class BreakdownChartTests await Verifier.Verify(console.Output); } + [Fact] + [Expectation("ValueColor")] + public async Task Should_Render_Correct_ValueColor() + { + // Given + var console = new TestConsole().EmitAnsiSequences(); + var chart = Fixture.GetChart().Width(60).WithValueColor(Color.Red); + + // When + console.Write(chart); + + // Then + await Verifier.Verify(console.Output); + } + public static class Fixture { public static BreakdownChart GetChart()