Free cookie consent management tool by TermsFeed Policy Generator

source: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs @ 10979

Last change on this file since 10979 was 10979, checked in by psteiner, 10 years ago

datacompleteness view
formating filter percentage

File size: 4.0 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Windows.Forms;
5using HeuristicLab.Collections;
6using HeuristicLab.Core;
7using HeuristicLab.Core.Views;
8using HeuristicLab.Data;
9using HeuristicLab.DataPreprocessing.Filter;
10using HeuristicLab.MainForm;
11
12namespace HeuristicLab.DataPreprocessing.Views {
13  [View("CheckedFilterCollection View")]
14  [Content(typeof(FilterContent), true)]
15  public partial class FilterView : ItemView {
16
17    public FilterView() {
18      InitializeComponent();
19      tbTotal.Text = "0";
20      tbFiltered.Text = "0";
21      tbPercentage.Text = "0%";
22    }
23
24    private void InitData()
25    {
26        checkedFilterView.Content = Content.Filters;
27        checkedFilterView.Content.ItemsAdded += Content_ItemsAdded;
28        checkedFilterView.Content.ItemsRemoved += Content_ItemsRemoved;
29        checkedFilterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
30    }
31
32    public new FilterContent Content {
33      get { return (FilterContent)base.Content; }
34      set { base.Content = value; }
35    }
36
37    protected override void OnContentChanged()
38    {
39      base.OnContentChanged();
40      if (Content != null)
41      {
42        InitData();
43        UpdateFilterInfo();
44      }
45    }
46
47    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
48      if (Content != null)
49      {
50        foreach (IFilter filter in e.Items)
51        {
52          filter.Active = checkedFilterView.Content.ItemChecked(filter);
53        }
54        UpdateFilterInfo();
55      }
56    }
57
58    private void UpdateFilterInfo() {
59        //List<IFilter> filters = checkedFilterView.ItemCollection.ToList<IFilter>();
60        List<IFilter> filters = Content.Filters.ToList();
61
62        int activeFilters = filters.Count(c => c.Active);
63
64        applyFilterButton.Enabled = (activeFilters > 0);
65        rBtnAnd.Enabled = (activeFilters > 0);
66        rBtnOr.Enabled = (activeFilters > 0);
67        //btnReset.Enabled = (activeFilters > 0);
68        Content.FilterLogic.Reset();
69        bool[] result = Content.FilterLogic.Preview(filters, rBtnAnd.Checked);
70
71        int filteredCnt = result.Count(c => c);
72
73        tbFiltered.Text = filteredCnt.ToString();
74        double percentage = result.Length == 0 ? 0.0 : filteredCnt * 100 / (double)result.Length;
75        tbPercentage.Text = String.Format("{0:0.0000}%", percentage);
76        tbTotal.Text = result.Length.ToString();
77    }
78
79    private void applyFilterButton_Click(object sender, EventArgs e) {
80      if (Content != null)
81      {
82        List<IFilter> filters = Content.Filters.ToList();
83        //apply filters
84        Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
85        //deactivate checked filters
86        filters = checkedFilterView.Content.CheckedItems.ToList();
87        foreach (IFilter filter in filters)
88        {
89          checkedFilterView.Content.SetItemCheckedState(filter, false);
90          filter.Active = false;
91        }
92        UpdateFilterInfo();
93      }
94    }
95
96    //whenever a new filter is added the preprocessing data is set to the filter
97    private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
98      if (Content != null)
99      {
100        foreach (IFilter filter in e.Items)
101        {
102          filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
103        }
104      }
105    }
106
107    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
108      if (Content != null)
109      {
110        UpdateFilterInfo();
111      }
112    }
113
114    private void rBtnAnd_CheckedChanged(object sender, EventArgs e)
115    {
116      if (Content != null)
117      {
118        UpdateFilterInfo();
119        Content.isAndCombination = rBtnAnd.Checked;
120      }
121    }
122
123    /*
124    private void btnReset_Click(object sender, EventArgs e)
125    {
126      if (Content != null)
127      {
128        Content.FilterLogic.Reset();
129      }
130    }
131     * */
132
133  }
134}
Note: See TracBrowser for help on using the repository browser.