Skip to content

Commit a41952a

Browse files
love-lingerJC-Chung
andcommitted
ux: pie-chart
- Use `Brushes.Gray` for `Others` group - Rename `_lastHoverred` to `_lastHovered` - Make sure that the last slice uses a different color with the first one Co-authored-by: JC-Chung <52159296+JC-Chung@users.noreply.github.com> Signed-off-by: leo <longshuang@msn.cn>
1 parent 4433baf commit a41952a

1 file changed

Lines changed: 16 additions & 15 deletions

File tree

‎src/Views/PieChart.cs‎

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public override void Render(DrawingContext context)
7878
base.Render(context);
7979

8080
_arcs.Clear();
81-
_lastHoverred = null;
81+
_lastHovered = null;
8282

8383
var w = Bounds.Width;
8484
var h = Bounds.Height;
@@ -122,12 +122,13 @@ public override void Render(DrawingContext context)
122122
var brushIndex = 0;
123123
var leftArcs = new List<Arc>();
124124
var rightArcs = new List<Arc>();
125-
foreach (var author in _report.Authors)
125+
for (var i = 0; i < _report.Authors.Count; i++)
126126
{
127+
var author = _report.Authors[i];
127128
var percent = (double)author.Count / total;
128-
var brush = s_brushes[brushIndex];
129129
if (percent > 0.01)
130130
{
131+
var brush = (i == _report.Authors.Count - 1 && i % s_brushes.Length == 0) ? s_brushes[1] : s_brushes[brushIndex];
131132
var sweepAngle = percent * 2 * Math.PI;
132133
DrawArc(context, startAngle, sweepAngle, brush);
133134

@@ -147,9 +148,9 @@ public override void Render(DrawingContext context)
147148
{
148149
var sweepAngle = remaining;
149150
var count = total - renderedCount;
150-
DrawArc(context, startAngle, sweepAngle, brush);
151+
DrawArc(context, startAngle, sweepAngle, Brushes.Gray);
151152

152-
var arc = new Arc(startAngle, sweepAngle, "Others", count, (double)count / total, brush, null);
153+
var arc = new Arc(startAngle, sweepAngle, "Others", count, (double)count / total, Brushes.Gray, null);
153154
_arcs.Add(arc);
154155
if (arc.IsLeftSide)
155156
leftArcs.Add(arc);
@@ -248,7 +249,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
248249

249250
if (change.Property == ReportProperty)
250251
{
251-
_lastHoverred = null;
252+
_lastHovered = null;
252253
HoveringTip = null;
253254
}
254255

@@ -265,7 +266,7 @@ protected override void OnPointerMoved(PointerEventArgs e)
265266

266267
if (_report == null || _report.Authors.Count == 0)
267268
{
268-
_lastHoverred = null;
269+
_lastHovered = null;
269270
HoveringTip = null;
270271
return;
271272
}
@@ -274,7 +275,7 @@ protected override void OnPointerMoved(PointerEventArgs e)
274275
var distance = Math.Sqrt(Math.Pow(pos.X - _center.X, 2) + Math.Pow(pos.Y - _center.Y, 2));
275276
if (distance > _radius)
276277
{
277-
_lastHoverred = null;
278+
_lastHovered = null;
278279
HoveringTip = null;
279280
return;
280281
}
@@ -287,32 +288,32 @@ protected override void OnPointerMoved(PointerEventArgs e)
287288
{
288289
if (angle >= arc.StartAngle && angle < arc.EndAngle)
289290
{
290-
if (_lastHoverred == arc)
291+
if (_lastHovered == arc)
291292
return;
292293

293-
_lastHoverred = arc;
294+
_lastHovered = arc;
294295
HoveringTip = arc.Tip;
295296
return;
296297
}
297298
}
298299

299-
_lastHoverred = null;
300+
_lastHovered = null;
300301
HoveringTip = null;
301302
}
302303

303304
protected override void OnPointerPressed(PointerPressedEventArgs e)
304305
{
305306
base.OnPointerPressed(e);
306307

307-
if (_lastHoverred != null)
308+
if (_lastHovered != null)
308309
{
309310
var statisticsView = this.FindAncestorOfType<Statistics>();
310311
if (statisticsView is { DataContext: ViewModels.Statistics vm })
311312
{
312-
if (_lastHoverred.Author == null || _lastHoverred.Author == vm.SelectedAuthor)
313+
if (_lastHovered.Author == null || _lastHovered.Author == vm.SelectedAuthor)
313314
vm.ChangeAuthor(null);
314315
else
315-
vm.ChangeAuthor(_lastHoverred.Author);
316+
vm.ChangeAuthor(_lastHovered.Author);
316317
}
317318
}
318319
}
@@ -370,7 +371,7 @@ public Arc(double startAngle, double sweepAngle, string title, int count, double
370371
private Point _center = new Point(0, 0);
371372
private double _radius = 0;
372373
private List<Arc> _arcs = new List<Arc>();
373-
private Arc _lastHoverred = null;
374+
private Arc _lastHovered = null;
374375
private PieChartToolTip _hoveringTip = null;
375376
}
376377
}

0 commit comments

Comments
 (0)