Changeset 10972


Ignore:
Timestamp:
06/11/14 11:39:24 (8 years ago)
Author:
aesterer
Message:

Chart view refactoring

Location:
branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs

    r10952 r10972  
    4848
    4949    private const string DEFAULT_CHART_TITLE = "Chart";
     50    private const int FIXED_CHART_SIZE = 300;
     51    private const int MAX_TABLE_ROWS = 3;
    5052
    5153    public IEnumerable<double> Classification { get; set; }
     
    5759    }
    5860
     61    //Variable selection changed
     62    //Add or remove data row
    5963    private void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
    6064      foreach (IndexedItem<StringValue> item in checkedItems.Items) {
     
    7175          DataRow selectedRow = GetSelectedDataRow(variableName);
    7276          dataTable.Rows.Add(row);
    73           PreprocessingDataTable d = new PreprocessingDataTable(variableName);
    74           d.Rows.Add(row);
    75           dataTablePerVariable.Add(d);
     77
     78          PreprocessingDataTable pdt = new PreprocessingDataTable(variableName);
     79          pdt.Rows.Add(row);
     80          dataTablePerVariable.Add(pdt);
     81
     82          //update selection
    7683          if (selectedRow != null)
    7784          {
    7885            dataTable.SelectedRows.Add(selectedRow);
    79             d.SelectedRows.Add(selectedRow);
     86            pdt.SelectedRows.Add(selectedRow);
    8087        }
    8188      }
    8289      }
    8390
     91      // update chart if not in all in one mode
    8492      if (Content != null && !Content.AllInOneMode)
    8593        GenerateChart();
     
    120128      }
    121129      checkedItemList.Content = Content.VariableItemList;
     130
     131      //Create data tables and data rows
    122132      dataRows = logic.CreateAllDataRows(chartType);
    123 
    124133      dataTable = new PreprocessingDataTable(chartTitle);
    125134      dataTablePerVariable = new List<PreprocessingDataTable>();
     
    261270
    262271      ClearTableLayout();
    263 
    264272      if (Content.AllInOneMode)
    265273      {
     
    289297    }
    290298
     299    private int GetNrOfMultiChartColumns(int itemCount) {
     300      int columns = 0;
     301      if (itemCount <= 2)
     302        columns = 1;
     303      else if (itemCount <= 6)
     304        columns = 2;
     305      else
     306        columns = 3;
     307      return columns;
     308    }
     309
     310    private int GetNrOfMultiChartRows(int itemCount, int columns) {
     311      int rows = 0;
     312      if (columns == 3)
     313        rows = (itemCount + 2) / columns;
     314      else if (columns == 2)
     315        rows = (itemCount + 1) / columns;
     316      else
     317        rows = itemCount / columns;
     318      return rows;
     319    }
     320
     321
    291322    private void GenerateMultiChartLayout() {
    292323      int checkedItemsCnt = 0;
     
    294325        checkedItemsCnt++;
    295326
    296       int rows = 0;
    297       int columns = 0;
    298 
    299327      // set columns and rows based on number of items
    300       if (checkedItemsCnt <= 2)
    301         columns = 1;
    302       else if (checkedItemsCnt <= 6)
    303         columns = 2;
    304       else
    305         columns = 3;
    306 
    307       if (columns == 3)
    308         rows = (checkedItemsCnt + 2) / columns;
    309       else if (columns == 2)
    310         rows = (checkedItemsCnt + 1) / columns;
    311       else
    312         rows = checkedItemsCnt / columns;
    313 
    314       //Now we will generate the table, setting up the row and column counts first
     328      int columns = GetNrOfMultiChartColumns(checkedItemsCnt);
     329      int rows = GetNrOfMultiChartRows(checkedItemsCnt, columns);
     330     
    315331      tableLayoutPanel.ColumnCount = columns;
    316332      tableLayoutPanel.RowCount = rows;
     
    319335      for (int x = 0; x < columns; x++) {
    320336
    321         if (rows <= 3)
     337        if (rows <= MAX_TABLE_ROWS)
    322338          tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100 / columns));
    323339        else
     
    328344          if (x == 0) {
    329345            // fixed chart size when there are more than 3 tables
    330             if (rows > 3)
    331               tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 300));
     346            if (rows > MAX_TABLE_ROWS)
     347              tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, FIXED_CHART_SIZE));
    332348            else
    333349              tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100 / rows));
    334350          }
    335351
    336           PreprocessingDataTableView dataView = new PreprocessingDataTableView();
    337           dataView.Classification = Classification;
    338352          enumerator.MoveNext();
    339353          PreprocessingDataTable d = enumerator.Current;
    340           if (d == null) {
    341             // dummy panel for empty field
    342             Panel p = new Panel();
    343             p.Dock = DockStyle.Fill;
    344             tableLayoutPanel.Controls.Add(p, y, x);
    345           } else {
    346             dataView.Content = d;
    347             dataView.Dock = DockStyle.Fill;
    348             tableLayoutPanel.Controls.Add(dataView, y, x);
    349           }
     354          AddDataTableToTableLayout(d, x, y);
     355         
    350356        }
     357      }
     358    }
     359
     360    private void AddDataTableToTableLayout(PreprocessingDataTable dataTable, int x, int y) {
     361      PreprocessingDataTableView dataView = new PreprocessingDataTableView();
     362      dataView.Classification = Classification;
     363
     364      if (dataTable == null) {
     365        // dummy panel for empty field
     366        Panel p = new Panel();
     367        p.Dock = DockStyle.Fill;
     368        tableLayoutPanel.Controls.Add(p, y, x);
     369      } else {
     370        dataView.Content = dataTable;
     371        dataView.Dock = DockStyle.Fill;
     372        tableLayoutPanel.Controls.Add(dataView, y, x);
    351373      }
    352374    }
     
    364386    }
    365387
    366     private void radioButton1_CheckedChanged(object sender, EventArgs e) {
    367       if (Content.AllInOneMode == false)
    368         Content.AllInOneMode = true;
    369       else
    370         Content.AllInOneMode = false;
    371       GenerateChart();
    372     }
    373 
    374 
    375388  }
    376389}
  • branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/SingleScatterPlotView.cs

    r10952 r10972  
    3636
    3737      IEnumerable<string> variables = logic.GetVariableNames();
     38
     39      // add variables to combo boxes
    3840      comboBoxXVariable.Items.Clear();
    3941      comboBoxYVariable.Items.Clear();
    40 
    4142      comboBoxXVariable.Items.AddRange(variables.ToArray());
    4243      comboBoxYVariable.Items.AddRange(variables.ToArray());
     
    5455        }
    5556      }
    56 
    5757    }
    5858
     
    7171    private void UpdateScatterPlot() {
    7272      if (comboBoxXVariable.SelectedItem != null && comboBoxYVariable.SelectedItem != null) {
     73        //get scatter plot with selected x and y variable
    7374        ScatterPlot scatterPlot = logic.CreateScatterPlot((string)comboBoxXVariable.SelectedItem, (string)comboBoxYVariable.SelectedItem);
    7475        scatterPlotView.Content = scatterPlot;
Note: See TracChangeset for help on using the changeset viewer.