From 831c3c4fa4cdd5c6c3bc2e424bd53d1671c1bb46 Mon Sep 17 00:00:00 2001 From: Atanas Korchev Date: Mon, 22 Apr 2024 12:52:15 +0300 Subject: [PATCH] Column and bar radius is not applied in some cases. Fixes #1464. --- Radzen.Blazor/IChartStackedBarSeries.cs | 6 ++++++ Radzen.Blazor/IChartStackedColumnSeries.cs | 7 +++++++ Radzen.Blazor/RadzenStackedBarSeries.razor | 10 ++++++++-- Radzen.Blazor/RadzenStackedBarSeries.razor.cs | 12 ++++++++++++ Radzen.Blazor/RadzenStackedColumnSeries.razor | 9 +++++++-- Radzen.Blazor/RadzenStackedColumnSeries.razor.cs | 12 ++++++++++++ 6 files changed, 52 insertions(+), 4 deletions(-) diff --git a/Radzen.Blazor/IChartStackedBarSeries.cs b/Radzen.Blazor/IChartStackedBarSeries.cs index 47fae19c8..1fe9c73fe 100644 --- a/Radzen.Blazor/IChartStackedBarSeries.cs +++ b/Radzen.Blazor/IChartStackedBarSeries.cs @@ -16,5 +16,11 @@ namespace Radzen.Blazor /// Gets the values for category. /// IEnumerable ValuesForCategory(double category); + /// + /// Gets the items for category. + /// + /// + /// + IEnumerable ItemsForCategory(double category); } } \ No newline at end of file diff --git a/Radzen.Blazor/IChartStackedColumnSeries.cs b/Radzen.Blazor/IChartStackedColumnSeries.cs index 2a7b9c167..57176b5ea 100644 --- a/Radzen.Blazor/IChartStackedColumnSeries.cs +++ b/Radzen.Blazor/IChartStackedColumnSeries.cs @@ -18,6 +18,13 @@ namespace Radzen.Blazor /// IEnumerable ValuesForCategory(double category); + /// + /// Gets the items for category. + /// + /// + /// + IEnumerable ItemsForCategory(double category); + /// /// Gets the value at the specified index. /// diff --git a/Radzen.Blazor/RadzenStackedBarSeries.razor b/Radzen.Blazor/RadzenStackedBarSeries.razor index 4212dda32..1e9d869eb 100644 --- a/Radzen.Blazor/RadzenStackedBarSeries.razor +++ b/Radzen.Blazor/RadzenStackedBarSeries.razor @@ -32,9 +32,15 @@ var itemValue = Value(data); var radius = Chart.BarOptions.Radius; - if (radius > height / 2 || barIndex < barSeries.Count - 1) + if (radius > 0) { - radius = 0; + var items = barSeries.SelectMany(series => series.ItemsForCategory(category(data))).ToList(); + var index = items.IndexOf(data); + + if (radius > height / 2 || index < items.Count - 1) + { + radius = 0; + } } var x0 = GetBarLeft(data, barIndex, category, barSeries); diff --git a/Radzen.Blazor/RadzenStackedBarSeries.razor.cs b/Radzen.Blazor/RadzenStackedBarSeries.razor.cs index d3b4edc93..86996b10a 100644 --- a/Radzen.Blazor/RadzenStackedBarSeries.razor.cs +++ b/Radzen.Blazor/RadzenStackedBarSeries.razor.cs @@ -216,6 +216,18 @@ namespace Radzen.Blazor return Items.Where(item => category(item) == value).Select(Value); } + IEnumerable IChartStackedBarSeries.ItemsForCategory(double value) + { + if (Items == null) + { + return Enumerable.Empty(); + } + + var category = ComposeCategory(Chart.ValueScale); + + return Items.Where(item => category(item) == value).Cast(); + } + /// public override bool Contains(double x, double y, double tolerance) { diff --git a/Radzen.Blazor/RadzenStackedColumnSeries.razor b/Radzen.Blazor/RadzenStackedColumnSeries.razor index a50069ccd..399280a89 100644 --- a/Radzen.Blazor/RadzenStackedColumnSeries.razor +++ b/Radzen.Blazor/RadzenStackedColumnSeries.razor @@ -28,9 +28,14 @@ var itemValue = Value(data); var radius = Chart.ColumnOptions.Radius; - if (radius > width / 2 || columnIndex < stackedColumnSeries.Count - 1) + if (radius > 0) { - radius = 0; + var items = stackedColumnSeries.SelectMany(series => series.ItemsForCategory(category(data))).ToList(); + var index = items.IndexOf(data); + if (radius > width / 2 || index < items.Count - 1) + { + radius = 0; + } } var y0 = GetColumnBottom(data, columnIndex, category, stackedColumnSeries); diff --git a/Radzen.Blazor/RadzenStackedColumnSeries.razor.cs b/Radzen.Blazor/RadzenStackedColumnSeries.razor.cs index d19ccecef..4bfa8dc8a 100644 --- a/Radzen.Blazor/RadzenStackedColumnSeries.razor.cs +++ b/Radzen.Blazor/RadzenStackedColumnSeries.razor.cs @@ -102,6 +102,18 @@ namespace Radzen.Blazor return Items.Where(item => category(item) == value).Select(Value); } + IEnumerable IChartStackedColumnSeries.ItemsForCategory(double value) + { + if (Items == null) + { + return Enumerable.Empty(); + } + + var category = ComposeCategory(Chart.CategoryScale); + + return Items.Where(item => category(item) == value).Cast(); + } + double IChartStackedColumnSeries.ValueAt(int index) { if (Items == null || index < 0 || index >= Items.Count)