private void InitializeCharts() { ChartsStackPanel.Children.Clear(); foreach (var channelName in activeChannelNames) { var chart = new Chart(channelName); chart.AddChannelName(channelName); charts.Add(chart); ChartsStackPanel.Children.Add(chart); } foreach (var group in activeGroups) { var chart = new Chart(group.Name); foreach (var attribute in group.Attributes) { chart.AddChannelName(attribute.Name); } charts.Add(chart); ChartsStackPanel.Children.Add(chart); } }
/// <summary> /// Builds one <see cref="Chart"/> with the <paramref name="group"/>s values. /// </summary> /// <param name="group"><see cref="Group"/> that will shown on the <see cref="Chart"/></param> /// <returns>A <see cref="Chart"/> with the <paramref name="group"/>s values.</returns> private Chart BuildGroupChart(Group group) { var chart = new Chart(group.Name); int dataIndex = (int)DataSlider.Value; var addedChannelNames = new List <string>(); foreach (var channelName in ChannelNames) { var attribute = group.GetAttribute(channelName.Item1); if (attribute != null) { foreach (var inputFile in channelName.Item2) { int lineWidth = group.GetAttribute(channelName.Item1).LineWidth; var channel = GetChannel(inputFile.Item1, channelName.Item1); if (inputFile.Item2) // aktiv e a channel { var actHorizontalAxisData = GetChannel(inputFile.Item1, group.HorizontalAxis).Data; if (actHorizontalAxisData == null) { ShowError.ShowErrorMessage($"Can't find '{group.HorizontalAxis}', so can't show diagram properly"); } if (actHorizontalAxisData.Count > horizontalAxisData.Count) { horizontalAxisData = new List <double>(actHorizontalAxisData); } var channelDataPlotData = ConvertChannelDataToPlotData(channel.Data.ToArray(), actHorizontalAxisData); var color = group.GetAttribute(channel.Name).Color; chart.AddPlot(xAxisValues: channelDataPlotData.Item1, yAxisValues: channelDataPlotData.Item2, lineWidth: lineWidth, lineColor: ColorTranslator.FromHtml(color), xAxisLabel: group.HorizontalAxis); chart.AddSideValue(channelName: channelName.Item1, xAxisValues: channelDataPlotData.Item2, isActive: true, inputFileID: inputFile.Item1, color: color, lineWidth: lineWidth); } else { chart.AddSideValue(channelName: channelName.Item1, xAxisValues: new double[0], inputFileID: inputFile.Item1); } chart.AddChannelName(channelName.Item1); addedChannelNames.Add(channelName.Item1); } } } foreach (var attribute in group.Attributes) { if (!addedChannelNames.Contains(attribute.Name)) { chart.AddChannelName(attribute.Name); chart.AddSideValue(channelName: attribute.Name, xAxisValues: new double[0]); } } if (horizontalAxisData.Count > 0) { double xValue = dataIndex < horizontalAxisData.Count ? horizontalAxisData[dataIndex] : horizontalAxisData.Last(); chart.UpdateHighlight(xValue); } chart.SetAxisLimitsToAuto(); return(chart); }