private void AddSlice(PieChart pieChart, IThreatModel model, MitigationStatus status, int total, Color background) { var count = model.CountMitigationsByStatus(status); if (count > 0) { var slice = pieChart.ChartSeries[0].SeriesPoints .OfType <PieSeriesPoint>() .FirstOrDefault(x => string.CompareOrdinal(x.Name, status.ToString()) == 0); if (slice == null) { slice = new PieSeriesPoint() { Name = status.ToString(), ValueX = status.GetEnumLabel(), ValueY = new object[] { (object)count }, OuterSliceLabel = $"{count} ({((float) count * 100f / (float) total).ToString("F0")}%)", InnerSliceLabel = "" }; slice.SliceVisualStyles.Default.Background.Color1 = background; slice.SliceVisualStyles.Default.SliceOuterLabelStyle.TextColor = Color.Black; pieChart.ChartSeries[0].SeriesPoints.Add(slice); } else { slice.ValueY = new object[] { (object)count }; slice.OuterSliceLabel = $"{count} ({((float) count * 100f / (float) total).ToString("F0")}%)"; } } }
public IEnumerable <ChartItem> GetChart([NotNull] IThreatModel model) { IEnumerable <ChartItem> result = null; var states = EnumExtensions.GetEnumLabels <MitigationStatus>().ToArray(); if (states?.Any() ?? false) { var list = new List <ChartItem>(); foreach (var status in states) { var mitigationStatus = status.GetEnumValue <MitigationStatus>(); KnownColor color; switch (mitigationStatus) { case MitigationStatus.Existing: color = KnownColor.Green; break; case MitigationStatus.Proposed: color = KnownColor.Orange; break; case MitigationStatus.Approved: color = KnownColor.Yellow; break; case MitigationStatus.Implemented: color = KnownColor.Olive; break; case MitigationStatus.Planned: color = KnownColor.YellowGreen; break; default: color = KnownColor.Black; break; } list.Add(new ChartItem(status, model.CountMitigationsByStatus(mitigationStatus), color)); } result = list; } return(result); }
public int GetCounter(IThreatModel model) { return(model.CountMitigationsByStatus(MitigationStatus.Planned)); }
public int GetCounter(IThreatModel model) { return(model.CountMitigationsByStatus(MitigationStatus.Existing)); }