Changeset 16057 for branches/2839_HiveProjectManagement/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs
- Timestamp:
- 08/06/18 18:15:29 (6 years ago)
- Location:
- branches/2839_HiveProjectManagement
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2839_HiveProjectManagement
- Property svn:mergeinfo changed
-
branches/2839_HiveProjectManagement/HeuristicLab.DataPreprocessing.Views
- Property svn:mergeinfo changed
-
branches/2839_HiveProjectManagement/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs
r15110 r16057 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 6Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2018 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;24 23 using System.Linq; 25 24 using HeuristicLab.Collections; … … 44 43 } 45 44 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 53 45 protected override void OnContentChanged() { 54 46 base.OnContentChanged(); 55 47 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; 58 54 } 59 55 } 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 } 60 68 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 } 61 108 private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) { 62 109 if (Content != null) { … … 64 111 filter.Active = checkedFilterView.Content.ItemChecked(filter); 65 112 } 66 UpdateFilter Info();113 UpdateFilter(); 67 114 } 68 115 } 116 #endregion 69 117 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 } 85 124 } 86 87 125 private void applyFilterButton_Click(object sender, EventArgs e) { 88 126 if (Content != null) { 89 List<IFilter> filters = Content.Filters.ToList();90 127 //apply filters 91 Content.FilterLogic.Apply(filters, rBtnAnd.Checked); 128 Content.PreprocessingData.PersistFilter(); 129 Content.PreprocessingData.ResetFilter(); 92 130 //deactivate checked filters 93 filters = checkedFilterView.Content.CheckedItems.ToList(); 94 foreach (IFilter filter in filters) { 131 foreach (var filter in Content.Filters.CheckedItems.ToList()) { 95 132 checkedFilterView.Content.SetItemCheckedState(filter, false); 96 133 filter.Active = false; 97 134 } 98 UpdateFilter Info();135 UpdateFilter(); 99 136 } 100 137 } 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 123 139 } 124 140 }
Note: See TracChangeset
for help on using the changeset viewer.