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")}%)";
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public int GetCounter(IThreatModel model)
 {
     return(model.CountMitigationsByStatus(MitigationStatus.Planned));
 }
Esempio n. 4
0
 public int GetCounter(IThreatModel model)
 {
     return(model.CountMitigationsByStatus(MitigationStatus.Existing));
 }