Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/20/18 13:52:40 (5 years ago)
Author:
pfleck
Message:

#2845 reverted the last merge (r16307) because some revisions were missing

Location:
branches/2845_EnhancedProgress
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2845_EnhancedProgress

  • branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing.Views

  • branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs

    r16307 r16308  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System;
     23using System.Collections.Generic;
    2324using System.Linq;
    2425using HeuristicLab.Collections;
     
    4344    }
    4445
     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
    4553    protected override void OnContentChanged() {
    4654      base.OnContentChanged();
    4755      if (Content != null) {
    48         checkedFilterView.Content = Content.Filters;
    49         rBtnAnd.Checked = Content.IsAndCombination;
    50         rBtnOr.Checked = !Content.IsAndCombination;
    51         UpdateFilter();
    52       } else {
    53         checkedFilterView.Content = null;
     56        InitData();
     57        UpdateFilterInfo();
    5458      }
    5559    }
    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     }
    6860
    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     }
    10861    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
    10962      if (Content != null) {
     
    11164          filter.Active = checkedFilterView.Content.ItemChecked(filter);
    11265        }
    113         UpdateFilter();
     66        UpdateFilterInfo();
    11467      }
    11568    }
    116     #endregion
    11769
    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       }
     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();
    12485    }
     86
    12587    private void applyFilterButton_Click(object sender, EventArgs e) {
    12688      if (Content != null) {
     89        List<IFilter> filters = Content.Filters.ToList();
    12790        //apply filters
    128         Content.PreprocessingData.PersistFilter();
    129         Content.PreprocessingData.ResetFilter();
     91        Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
    13092        //deactivate checked filters
    131         foreach (var filter in Content.Filters.CheckedItems.ToList()) {
     93        filters = checkedFilterView.Content.CheckedItems.ToList();
     94        foreach (IFilter filter in filters) {
    13295          checkedFilterView.Content.SetItemCheckedState(filter, false);
    13396          filter.Active = false;
    13497        }
    135         UpdateFilter();
     98        UpdateFilterInfo();
    13699      }
    137100    }
    138     #endregion
     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    }
    139123  }
    140124}
Note: See TracChangeset for help on using the changeset viewer.