radzenhq / radzen-blazor

Radzen Blazor is a set of 90+ free native Blazor UI components packed with DataGrid, Scheduler, Charts and robust theming including Material design and FluentUI.
https://www.radzen.com
MIT License
3.52k stars 786 forks source link

Error: System.InvalidOperationException: More than one sibling of component 'Radzen.Blazor.Rendering.Path' has the same key value #888

Closed h2002d closed 1 year ago

h2002d commented 1 year ago

Hey Radzen Team, starting yesterday we are facing this issue while using Radzencharts. There was no updates made to the project during that time.

blazor.server.js:1 [2023-03-29T15:15:03.089Z] Error: System.InvalidOperationException: More than one sibling of component 'Radzen.Blazor.Rendering.Path' has the same key value, 'M 602.7802419354839 78 A 0 0 0 0 1 602.7802419354839 78 L 608.4548891129033 78 A 0 0 0 0 1 608.4548891129033 78 L 608.4548891129033 78 L 602.7802419354839 78 Z'. Key values must be unique. at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ThrowExceptionForDuplicateKey(Object key, RenderTreeFrame& frame) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.BuildKeyToInfoLookup(DiffContext diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange1 oldTree, ArrayRange1 newTree) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue() image

akorchev commented 1 year ago

Hi @h2002d,

We will need a reproduction of the issue - a runnable code snippet. You can use our online demos as a basis.

h2002d commented 1 year ago

Hi @akorchev , thanks for the quick reply, here is the code snippet that we are using

<RadzenChart @ref="@shipmentsThisMonthMini">
                                <RadzenChartTooltipOptions Style=""></RadzenChartTooltipOptions>

                                <RadzenColumnSeries Data="@shipmentsThisMonthByDays" CategoryProperty="Quarter" ValueProperty="Revenue" Title="This month" Fill="#0078D4" Stroke="#0078D4" StrokeWidth="2" Visible="true">
                                    <TooltipTemplate Context="item">
                                        <div class="flex-col">
                                            <div><b>Date:</b> @DateTime.Parse(item.Quarter).Date.ToString("ddd"),  @DateTime.Parse(item.Quarter).Date.ToString("MMM") @DateTime.Parse(item.Quarter).Day</div>
                                            <div><b>This month:</b> @(item.Revenue > 1000000 ? $"{Math.Round((decimal)item.Revenue / 1000000, 2)}M" : $"{Math.Round((decimal)item.Revenue / 1000, 2)}K") BBLS</div>
                                        </div>
                                    </TooltipTemplate>
                                </RadzenColumnSeries>
                                <RadzenColumnSeries Data="@shipmentsPrevMonthByDays" CategoryProperty="Quarter" ValueProperty="Revenue" Title="Last month" Fill="#e6e6e6" Stroke="#e6e6e6" StrokeWidth="2" Visible="true">
                                    <TooltipTemplate Context="item">
                                        <div class="flex-col">
                                            <div><b>Date:</b> @DateTime.Parse(item.Quarter).AddMonths(-1).Date.ToString("ddd"),  @DateTime.Parse(item.Quarter).AddMonths(-1).Date.ToString("MMM") @DateTime.Parse(item.Quarter).AddMonths(-1).Day</div>
                                            <div><b>Last month:</b> @(item.Revenue > 1000000 ? $"{Math.Round((decimal)item.Revenue / 1000000, 2)}M" : $"{Math.Round((decimal)item.Revenue / 1000, 2)}K") BBLS</div>
                                        </div>
                                    </TooltipTemplate>
                                </RadzenColumnSeries>

                                <RadzenLegend Position="LegendPosition.Bottom" />

                                @{
                                    var maxAndStepForMiniChart = GetMaxAndStepForChart(Enumerable.Union(shipmentsThisMonthByDays, shipmentsPrevMonthByDays).ToArray());
                                }
                                <RadzenValueAxis Visible="false" Formatter="@FormatAsUSD" Min="0" Max="maxAndStepForMiniChart.Item1" Step="maxAndStepForMiniChart.Item2">
                                    <RadzenGridLines Visible="false" />
                                </RadzenValueAxis>
                                <RadzenCategoryAxis Visible="false">
                                    <RadzenGridLines Visible="false" />
                                </RadzenCategoryAxis>
                            </RadzenChart>
akorchev commented 1 year ago

I am afraid this isn't a code snippet that we can run. We need a self-contained snippet that builds and runs.