using Microsoft.AspNetCore.Components; namespace Connected.Components; partial class Pie : Chart { [CascadingParameter] public Chart ChartParent { get; set; } private List _paths = new(); private List _legends = new(); protected override void OnParametersSet() { _paths.Clear(); _legends.Clear(); double startx, starty, endx, endy; var ndata = GetNormalizedData(); double cumulativeRadians = 0; for (var i = 0; i < ndata.Length; i++) { var data = ndata[i]; startx = Math.Cos(cumulativeRadians); starty = Math.Sin(cumulativeRadians); cumulativeRadians += 2 * Math.PI * data; endx = Math.Cos(cumulativeRadians); endy = Math.Sin(cumulativeRadians); var largeArcFlag = data > 0.5 ? 1 : 0; var path = new SvgPath() { Index = i, Data = $"M {ToS(startx)} {ToS(starty)} A 1 1 0 {ToS(largeArcFlag)} 1 {ToS(endx)} {ToS(endy)} L 0 0" }; _paths.Add(path); } var counter = 0; foreach (var data in ndata) { var percent = data * 100; var labels = ""; if (counter < InputLabels.Length) { labels = InputLabels[counter]; } var legend = new SvgLegend() { Index = counter, Labels = labels, Data = ToS(Math.Round(percent, 1)) }; _legends.Add(legend); counter += 1; } } }