Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/06/18 18:15:29 (6 years ago)
Author:
jkarder
Message:

#2839:

Location:
branches/2839_HiveProjectManagement
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2839_HiveProjectManagement

  • branches/2839_HiveProjectManagement/HeuristicLab.DataPreprocessing.Views

  • branches/2839_HiveProjectManagement/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs

    r15110 r16057  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Linq;
    2524using HeuristicLab.Collections;
     
    4443    }
    4544
    46     private void InitData() {
    47       checkedFilterView.Content = Content.Filters;
    48       checkedFilterView.Content.ItemsAdded += Content_ItemsAdded;
    49       checkedFilterView.Content.ItemsRemoved += Content_ItemsRemoved;
    50       checkedFilterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
    51     }
    52 
    5345    protected override void OnContentChanged() {
    5446      base.OnContentChanged();
    5547      if (Content != null) {
    56         InitData();
    57         UpdateFilterInfo();
     48        checkedFilterView.Content = Content.Filters;
     49        rBtnAnd.Checked = Content.IsAndCombination;
     50        rBtnOr.Checked = !Content.IsAndCombination;
     51        UpdateFilter();
     52      } else {
     53        checkedFilterView.Content = null;
    5854      }
    5955    }
     56    protected override void RegisterContentEvents() {
     57      base.RegisterContentEvents();
     58      Content.Filters.ItemsAdded += Content_ItemsAdded;
     59      Content.Filters.ItemsRemoved += Content_ItemsRemoved;
     60      Content.Filters.CheckedItemsChanged += Content_CheckedItemsChanged;
     61    }
     62    protected override void DeregisterContentEvents() {
     63      Content.Filters.ItemsAdded -= Content_ItemsAdded;
     64      Content.Filters.ItemsRemoved -= Content_ItemsRemoved;
     65      Content.Filters.CheckedItemsChanged -= Content_CheckedItemsChanged;
     66      base.DeregisterContentEvents();
     67    }
    6068
     69    private void UpdateFilter() {
     70      bool activeFilters = Content.ActiveFilters.Any();
     71      applyFilterButton.Enabled = activeFilters;
     72
     73      Content.PreprocessingData.ResetFilter();
     74
     75      int numTotal = Content.PreprocessingData.Rows;
     76      int numRemaining = numTotal;
     77
     78      if (activeFilters) {
     79        var remainingRows = Content.GetRemainingRows();
     80        numRemaining = remainingRows.Count(x => x);
     81
     82        if (numRemaining < numTotal) {
     83          Content.PreprocessingData.SetFilter(remainingRows);
     84        }
     85      }
     86
     87      tbRemaining.Text = numRemaining.ToString();
     88      double ratio = numTotal > 0 ? numRemaining / (double)numTotal : 0.0;
     89      tbPercentage.Text = ratio.ToString("P4");
     90      tbTotal.Text = numTotal.ToString();
     91    }
     92
     93
     94    #region Content Events
     95    //whenever a new filter is added the preprocessing data is set to the filter
     96    private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
     97      if (Content != null) {
     98        foreach (IFilter filter in e.Items) {
     99          filter.ConstrainedValue = Content.PreprocessingData;
     100        }
     101      }
     102    }
     103    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
     104      if (Content != null) {
     105        UpdateFilter();
     106      }
     107    }
    61108    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
    62109      if (Content != null) {
     
    64111          filter.Active = checkedFilterView.Content.ItemChecked(filter);
    65112        }
    66         UpdateFilterInfo();
     113        UpdateFilter();
    67114      }
    68115    }
     116    #endregion
    69117
    70     private void UpdateFilterInfo() {
    71       List<IFilter> filters = Content.Filters.ToList();
    72       int activeFilters = filters.Count(c => c.Active);
    73       applyFilterButton.Enabled = (activeFilters > 0);
    74       rBtnAnd.Enabled = (activeFilters > 0);
    75       rBtnOr.Enabled = (activeFilters > 0);
    76       Content.FilterLogic.Reset();
    77       bool[] result = Content.FilterLogic.Preview(filters, rBtnAnd.Checked);
    78 
    79       int filteredCnt = result.Count(c => !c);
    80 
    81       tbRemaining.Text = filteredCnt.ToString();
    82       double percentage = result.Length == 0 ? 0.0 : filteredCnt * 100 / (double)result.Length;
    83       tbPercentage.Text = String.Format("{0:0.0000}%", percentage);
    84       tbTotal.Text = result.Length.ToString();
     118    #region Controls Events
     119    private void rBtnAnd_CheckedChanged(object sender, EventArgs e) {
     120      if (Content != null) {
     121        Content.IsAndCombination = rBtnAnd.Checked;
     122        UpdateFilter();
     123      }
    85124    }
    86 
    87125    private void applyFilterButton_Click(object sender, EventArgs e) {
    88126      if (Content != null) {
    89         List<IFilter> filters = Content.Filters.ToList();
    90127        //apply filters
    91         Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
     128        Content.PreprocessingData.PersistFilter();
     129        Content.PreprocessingData.ResetFilter();
    92130        //deactivate checked filters
    93         filters = checkedFilterView.Content.CheckedItems.ToList();
    94         foreach (IFilter filter in filters) {
     131        foreach (var filter in Content.Filters.CheckedItems.ToList()) {
    95132          checkedFilterView.Content.SetItemCheckedState(filter, false);
    96133          filter.Active = false;
    97134        }
    98         UpdateFilterInfo();
     135        UpdateFilter();
    99136      }
    100137    }
    101 
    102     //whenever a new filter is added the preprocessing data is set to the filter
    103     private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
    104       if (Content != null) {
    105         foreach (IFilter filter in e.Items) {
    106           filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
    107         }
    108       }
    109     }
    110 
    111     private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
    112       if (Content != null) {
    113         UpdateFilterInfo();
    114       }
    115     }
    116 
    117     private void rBtnAnd_CheckedChanged(object sender, EventArgs e) {
    118       if (Content != null) {
    119         UpdateFilterInfo();
    120         Content.IsAndCombination = rBtnAnd.Checked;
    121       }
    122     }
     138    #endregion
    123139  }
    124140}
Note: See TracChangeset for help on using the changeset viewer.