ArcGISPortalViewer.Popup.Primitives.Charting.BarChart.GenerateDataPoint C# (CSharp) Method

GenerateDataPoint() private method

private GenerateDataPoint ( double>.KeyValuePair kvp, Range range ) : void
kvp double>.KeyValuePair
range Range
return void
        private void GenerateDataPoint(KeyValuePair<string, double> kvp, Range range)
        {
            // Add a row and add a grid in this row
            _series.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
            Grid point = new Grid();
            Grid.SetRow(point, _series.RowDefinitions.Count - 1);
            _series.Children.Add(point);

            // Divide the grid in 3 columns
            double val = kvp.Value;
            double negativeFraction = range.Fraction(Math.Min(val, 0));
            double positiveFraction = 1 - range.Fraction(Math.Max(val, 0));

            point.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(negativeFraction, GridUnitType.Star) });
            point.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1 - positiveFraction - negativeFraction, GridUnitType.Star), MinWidth = MinBarSize });
            point.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(positiveFraction, GridUnitType.Star) });

            Border axisY = new Border
            {
                BorderThickness = new Thickness(0.75),
                BorderBrush = ForegroundColor,
                Opacity = 0.5,
                HorizontalAlignment = val > 0.0 ? HorizontalAlignment.Left : HorizontalAlignment.Right,
                VerticalAlignment = VerticalAlignment.Stretch,
                Margin = new Thickness(0, -5, 0, -5)
            };
            Grid.SetColumn(axisY, 1);
            point.Children.Add(axisY);

            // Put a bar in the middle column
            Border bar = new Border
            {
                Margin = new Thickness(0, MarginBetweenBars, 0, MarginBetweenBars),
                Background = GetColorByIndex(0)
            };

            Grid.SetColumn(bar, 1);
            SetTooltip(bar, kvp.Key, FormattedValue(kvp.Value));
            point.Children.Add(bar);
        }