private void SetupGraphTabs(int numberOfBenchmarks, int clientsPerGraph) { int graphs = 1; if (GraphLayoutType.Equals(GraphLayoutType.ClientsPerGraph)) { graphs = (int)Math.Ceiling(numberOfBenchmarks / (double)clientsPerGraph); if (graphs == 0) { graphs = 1; } } if (graphs > _currentNumberOfGraphs) { for (int i = _currentNumberOfGraphs + 1; i <= graphs; i++) { tabControl1.TabPages.Add("tabGraphFrameTime" + i, "Graph - Frame Time (" + i + ")"); var zgFrameTime = new ZedGraphControl(); zgFrameTime.Name = "zgFrameTime" + i; zgFrameTime.Dock = DockStyle.Fill; tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(zgFrameTime); tabControl1.TabPages.Add("tabGraphPPD" + i, "Graph - PPD (" + i + ")"); var zgPpd = new ZedGraphControl(); zgPpd.Name = "zgPpd" + i; zgPpd.Dock = DockStyle.Fill; tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(zgPpd); } } else if (graphs < _currentNumberOfGraphs) { for (int i = _currentNumberOfGraphs; i > graphs; i--) { tabControl1.TabPages.RemoveByKey("tabGraphFrameTime" + i); tabControl1.TabPages.RemoveByKey("tabGraphPPD" + i); } } _currentNumberOfGraphs = graphs; }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { txtBenchmarks.Text = String.Empty; int projectId = (int)listBox1.SelectedItem; Protein protein = _proteinService.Get(projectId); if (protein == null) { Logger.WarnFormat("Could not find Project {0}.", projectId); } var projectInfoLines = new List <string>(); PopulateProteinInformation(protein, projectInfoLines); List <ProteinBenchmark> list = _benchmarkService.GetBenchmarks(_currentSlotIdentifier, projectId).ToList(); list.Sort((benchmark1, benchmark2) => benchmark1.OwningSlotName.CompareTo(benchmark2.OwningSlotName)); var benchmarkInfoLines = new List <string>(projectInfoLines); foreach (ProteinBenchmark benchmark in list) { UnitInfoModel unitInfoModel = null; SlotStatus status = SlotStatus.Unknown; var slotModel = _clientConfiguration.Slots.FirstOrDefault(x => x.Name == benchmark.OwningSlotName && x.Settings.DataPath() == benchmark.OwningClientPath && x.UnitInfoModel.UnitInfoData.ProjectID == benchmark.ProjectID); if (slotModel != null && slotModel.ProductionValuesOk) { unitInfoModel = slotModel.UnitInfoModel; status = slotModel.Status; } PopulateBenchmarkInformation(protein, benchmark, unitInfoModel, status, _prefs.GetPpdFormatString(), benchmarkInfoLines); } UpdateBenchmarkText(benchmarkInfoLines); tabControl1.SuspendLayout(); int clientsPerGraph = _prefs.Get <int>(Preference.BenchmarksClientsPerGraph); SetupGraphTabs(list.Count, clientsPerGraph); int tabIndex = 1; if (GraphLayoutType.Equals(GraphLayoutType.ClientsPerGraph)) { int lastDisplayed = 0; for (int i = 1; i < list.Count; i++) { if (i % clientsPerGraph == 0) { var benchmarks = new ProteinBenchmark[clientsPerGraph]; list.CopyTo(lastDisplayed, benchmarks, 0, clientsPerGraph); DrawGraphs(tabIndex, projectInfoLines, benchmarks, protein); tabIndex++; lastDisplayed = i; } } if (lastDisplayed < list.Count) { var benchmarks = new ProteinBenchmark[list.Count - lastDisplayed]; list.CopyTo(lastDisplayed, benchmarks, 0, list.Count - lastDisplayed); DrawGraphs(tabIndex, projectInfoLines, benchmarks, protein); } } else { DrawGraphs(tabIndex, projectInfoLines, list, protein); } tabControl1.ResumeLayout(true); }