LogViewer.MainWindow.GraphItem C# (CSharp) Method

GraphItem() private method

private GraphItem ( LogItemSchema schema ) : void
schema LogItemSchema
return void
        private void GraphItem(LogItemSchema schema)
        {
            if (schema.IsNumeric)
            {
                ChartStack.Visibility = Visibility.Visible;
                ChartStack.UpdateLayout();
                SimpleLineChart chart = new SimpleLineChart();
                chart.Margin = defaultChartMargin;
                chart.Focusable = false;
                chart.Closed += OnChartClosed;
                chart.LineColor = HlsColor.GetRandomColor();
                chart.StrokeThickness = 1;
                chart.Tag = schema;

                if (currentFlightLog != null && schema.Root == currentFlightLog.Schema)
                {
                    List<DataValue> values = new List<DataValue>(currentFlightLog.GetDataValues(schema, DateTime.MinValue, TimeSpan.MaxValue)); 
                    InitializeChartData(schema, chart, values);

                    // now turn on live scrolling...
                    chart.LiveScrolling = true;

                    // now start watching the live update for new values that need to be added to this chart.
                    Task.Run(() =>
                    {
                        LiveUpdate(chart, currentFlightLog, schema);
                    });

                }
                else
                {
                    List<DataValue> values = new List<DataValue>(GetSelectedDataValues(schema));
                    InitializeChartData(schema, chart, values);
                }

                if (chartGroup != null)
                {
                    SimpleLineChart last = null;
                    if (chartGroup.Children.Count > 0)
                    {
                        last = chartGroup.Children[chartGroup.Children.Count - 1] as SimpleLineChart;
                    }
                    chartGroup.Children.Add(chart);
                    if (chartGroup.Parent == null)
                    {
                        ChartStack.AddChart(chartGroup);
                    }
                    if (last != null)
                    {
                        last.Next = chart;
                    }
                }
                else
                {
                    ChartStack.AddChart(chart);
                }
                LayoutCharts();

                Messages.Visibility = Visibility.Collapsed;
            }
            else
            {
                Paragraph p = new Paragraph();
                foreach (var value in GetSelectedDataValues(schema))
                {
                    p.Inlines.Add(new Run(value.Label));
                    p.Inlines.Add(new LineBreak());
                }
                var doc = Messages.Document;
                doc.Blocks.Add(p);

                Messages.Visibility = Visibility.Visible;
                Messages.Focus();
            }
        }