Changeset 16308 for branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs
- Timestamp:
- 11/20/18 13:52:40 (5 years ago)
- Location:
- branches/2845_EnhancedProgress
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2845_EnhancedProgress
- Property svn:mergeinfo changed
/stable reverse-merged: 15587-15588 /trunk/sources removed
- Property svn:mergeinfo changed
-
branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing.Views
- Property svn:mergeinfo changed
-
branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs
r16307 r16308 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using System; 23 using System.Collections.Generic; 23 24 using System.Linq; 24 25 using HeuristicLab.Collections; … … 43 44 } 44 45 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 45 53 protected override void OnContentChanged() { 46 54 base.OnContentChanged(); 47 55 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(); 54 58 } 55 59 } 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 }68 60 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 Events95 //whenever a new filter is added the preprocessing data is set to the filter96 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 }108 61 private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) { 109 62 if (Content != null) { … … 111 64 filter.Active = checkedFilterView.Content.ItemChecked(filter); 112 65 } 113 UpdateFilter ();66 UpdateFilterInfo(); 114 67 } 115 68 } 116 #endregion117 69 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(); 124 85 } 86 125 87 private void applyFilterButton_Click(object sender, EventArgs e) { 126 88 if (Content != null) { 89 List<IFilter> filters = Content.Filters.ToList(); 127 90 //apply filters 128 Content.PreprocessingData.PersistFilter(); 129 Content.PreprocessingData.ResetFilter(); 91 Content.FilterLogic.Apply(filters, rBtnAnd.Checked); 130 92 //deactivate checked filters 131 foreach (var filter in Content.Filters.CheckedItems.ToList()) { 93 filters = checkedFilterView.Content.CheckedItems.ToList(); 94 foreach (IFilter filter in filters) { 132 95 checkedFilterView.Content.SetItemCheckedState(filter, false); 133 96 filter.Active = false; 134 97 } 135 UpdateFilter ();98 UpdateFilterInfo(); 136 99 } 137 100 } 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 } 139 123 } 140 124 }
Note: See TracChangeset
for help on using the changeset viewer.