- Timestamp:
- 07/14/17 10:29:51 (7 years ago)
- Location:
- stable
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 15110,15119,15210
- Property svn:mergeinfo changed
-
stable/HeuristicLab.DataPreprocessing.Views
- Property svn:mergeinfo changed
-
stable/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs
r14186 r15242 21 21 22 22 using System; 23 using System.Collections.Generic; 24 using System.Linq; 23 25 using HeuristicLab.Analysis; 26 using HeuristicLab.Analysis.Views; 27 using HeuristicLab.Collections; 28 using HeuristicLab.Data; 24 29 using HeuristicLab.MainForm; 30 using HeuristicLab.Visualization.ChartControlsExtensions; 25 31 26 32 namespace HeuristicLab.DataPreprocessing.Views { 27 28 33 [View("Line Chart View")] 29 34 [Content(typeof(LineChartContent), true)] 30 35 public partial class LineChartView : PreprocessingChartView { 31 32 private const string LINE_CHART_TITLE = "Line Chart"; 33 34 public LineChartView() { 35 InitializeComponent(); 36 chartType = DataRowVisualProperties.DataRowChartType.Line; 37 chartTitle = LINE_CHART_TITLE; 38 } 36 protected Dictionary<string, DataRow> allInOneDataRows; 37 protected DataTable allInOneDataTable; 38 protected DataTableView allInOneDataTableView; 39 39 40 40 public new LineChartContent Content { … … 43 43 } 44 44 45 public LineChartView() { 46 InitializeComponent(); 47 sizeGroupBox.Visible = false; 48 49 allInOneDataRows = new Dictionary<string, DataRow>(); 50 allInOneDataTable = new DataTable(); 51 } 52 53 protected override void InitData() { 54 base.InitData(); 55 56 allInOneDataRows.Clear(); 57 foreach (var x in Content.VariableItemList.Select((v, i) => new { variable = v.Value, i })) { 58 var row = Content.CreateDataRow(x.variable, DataRowVisualProperties.DataRowChartType.Line); 59 row.VisualProperties.Color = Colors[x.i % Colors.Length]; 60 allInOneDataRows.Add(x.variable, row); 61 } 62 63 allInOneDataTable.Rows.Clear(); 64 var rows = Content.VariableItemList.CheckedItems.Select(v => allInOneDataRows[v.Value.Value]); 65 allInOneDataTable.Rows.AddRange(rows); 66 } 67 68 protected override int GetNumberOfVisibleDataTables() { 69 return Content.AllInOneMode ? 1 : base.GetNumberOfVisibleDataTables(); 70 } 71 protected override IEnumerable<DataTableView> GetVisibleDataTables() { 72 if (Content.AllInOneMode) { 73 if (allInOneDataTableView == null) 74 allInOneDataTableView = new DataTableView() { Content = allInOneDataTable, ShowChartOnly = true }; 75 return new[] { allInOneDataTableView }; 76 } 77 return base.GetVisibleDataTables(); 78 } 79 protected override DataTable CreateDataTable(string variableName) { 80 var dt = new DataTable(); 81 var row = Content.CreateDataRow(variableName, DataRowVisualProperties.DataRowChartType.Line); 82 dt.Rows.Add(row); 83 84 var validValues = row.Values.Where(x => !double.IsNaN(x) && !double.IsInfinity(x)).ToList(); 85 if (validValues.Any()) { 86 try { 87 double axisMin, axisMax, axisInterval; 88 ChartUtil.CalculateOptimalAxisInterval(validValues.Min(), validValues.Max(), out axisMin, out axisMax, out axisInterval); 89 dt.VisualProperties.YAxisMinimumAuto = false; 90 dt.VisualProperties.YAxisMaximumAuto = false; 91 dt.VisualProperties.YAxisMinimumFixedValue = axisMin; 92 dt.VisualProperties.YAxisMaximumFixedValue = axisMax; 93 } catch (ArgumentOutOfRangeException) { } 94 } 95 return dt; 96 } 97 45 98 private void allInOneCheckBox_CheckedChanged(object sender, EventArgs e) { 46 99 Content.AllInOneMode = allInOneCheckBox.Checked; 47 100 48 GenerateChart(); 101 sizeGroupBox.Visible = !allInOneCheckBox.Checked; 102 103 GenerateLayout(); 49 104 } 50 105 … … 55 110 } 56 111 } 112 113 protected override void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) { 114 base.CheckedItemsChanged(sender, checkedItems); 115 116 foreach (IndexedItem<StringValue> item in checkedItems.Items) { 117 string variableName = item.Value.Value; 118 119 if (IsVariableChecked(variableName)) { 120 // ToDo: avoid clearing all rows, but how? 121 allInOneDataTable.Rows.Clear(); 122 var rows = Content.VariableItemList.CheckedItems.Select(r => allInOneDataRows[r.Value.Value]); 123 allInOneDataTable.Rows.AddRange(rows); 124 } else { 125 allInOneDataTable.Rows.Remove(variableName); 126 } 127 } 128 } 129 130 #region Add/Remove/Update Variable, Reset 131 protected override void AddVariable(string name) { 132 base.AddVariable(name); 133 var row = Content.CreateDataRow(name, DataRowVisualProperties.DataRowChartType.Line); 134 allInOneDataTable.Rows.Add(row); 135 } 136 137 // remove variable from data table and item list 138 protected override void RemoveVariable(string name) { 139 base.RemoveVariable(name); 140 allInOneDataTable.Rows.Remove(name); 141 } 142 143 protected override void UpdateVariable(string name) { 144 base.UpdateVariable(name); 145 allInOneDataTable.Rows.Remove(name); 146 var newRow = Content.CreateDataRow(name, DataRowVisualProperties.DataRowChartType.Line); 147 allInOneDataTable.Rows.Add(newRow); 148 } 149 #endregion 57 150 } 58 151 }
Note: See TracChangeset
for help on using the changeset viewer.