Пример #1
0
        private bool UpdateFilter(bool filter)
        {
            if (!IsHandleCreated || _bindingListSource == null)
            {
                return(false);
            }

            if (!_bindingListSource.IsComplete)
            {
                return(true);
            }

            var columnFilters = _bindingListSource.RowFilter.ColumnFilters.ToList();
            var columns       = _bindingListSource.ViewSpec.Columns;

            var absLog2FCExists = columns.Any(c => c.Name == "FoldChangeResult.AbsLog2FoldChange"); // Not L10N
            var pValueExists    = columns.Any(c => c.Name == "FoldChangeResult.AdjustedPValue");    // Not L10N

            bool foldChangeUpdate;
            var  foldChangeFilter = FindFoldChangeFilter(columnFilters, out foldChangeUpdate);

            bool pValueUpdate;
            var  pValueFilter = FindPValueFilter(columnFilters, out pValueUpdate);

            if (filter)
            {
                if (foldChangeFilter != null)
                {
                    _absLog2FoldChangeFilter = foldChangeFilter;
                }

                if (pValueFilter != null)
                {
                    _pValueFilter = pValueFilter;
                }

                if (FoldChangCutoffValid == (foldChangeFilter != null) &&
                    PValueCutoffValid == (pValueFilter != null) && !foldChangeUpdate && !pValueUpdate)
                {
                    return(false);
                }
            }
            else
            {
                if (_absLog2FoldChangeFilter == null && _pValueFilter == null)
                {
                    return(false);
                }
            }

            var removeAbsLog2 = !filter && absLog2FCExists && _absLog2FoldChangeFilter != null;

            columnFilters.Remove(_absLog2FoldChangeFilter);
            columnFilters.Remove(_pValueFilter);
            _absLog2FoldChangeFilter = _pValueFilter = null;

            if (AnyCutoffSettingsValid && filter)
            {
                var missingColumns = new List <ColumnSpec>();
                if (FoldChangCutoffValid && !absLog2FCExists)
                {
                    missingColumns.Add(new ColumnSpec(PropertyPath.Root.Property("FoldChangeResult").Property("AbsLog2FoldChange"))); // Not L10N
                }
                if (PValueCutoffValid && !pValueExists)
                {
                    missingColumns.Add(new ColumnSpec(PropertyPath.Root.Property("FoldChangeResult").Property("AdjustedPValue"))); // Not L10N
                }
                if (missingColumns.Any())
                {
                    SetColumns(_bindingListSource.ViewSpec.Columns.Concat(missingColumns));
                }

                columnFilters.Clear();
                if (FoldChangCutoffValid)
                {
                    _absLog2FoldChangeFilter = CreateColumnFilter(new ColumnId("AbsLog2FoldChange"), // Not L10N
                                                                  FilterOperations.OP_IS_GREATER_THAN, Settings.Default.Log2FoldChangeCutoff);
                    columnFilters.Add(_absLog2FoldChangeFilter);
                }

                if (PValueCutoffValid)
                {
                    _pValueFilter = CreateColumnFilter(new ColumnId("AdjustedPValue"), // Not L10N
                                                       FilterOperations.OP_IS_LESS_THAN, Math.Pow(10, -Settings.Default.PValueCutoff));
                    columnFilters.Add(_pValueFilter);
                }
            }
            else
            {
                if (removeAbsLog2)
                {
                    // Remove AbsLog2FoldChange column
                    SetColumns(columns.Except(columns.Where(c => c.Name == "FoldChangeResult.AbsLog2FoldChange"))); // Not L10N
                }
            }

            _bindingListSource.RowFilter = _bindingListSource.RowFilter.SetColumnFilters(columnFilters);
            return(true);
        }
Пример #2
0
 private void SetFilterOperation(ComboBox comboOperation, TextBox textBoxOperand, RowFilter.ColumnFilter columnFilter)
 {
     for (int i = 0; i < comboOperation.Items.Count; i++)
     {
         FilterItem filterItem = comboOperation.Items[i] as FilterItem;
         if (null != filterItem && Equals(columnFilter.Predicate.FilterOperation, filterItem.FilterOperation))
         {
             comboOperation.SelectedIndex = i;
             break;
         }
     }
     textBoxOperand.Text = columnFilter.Predicate.GetOperandDisplayText(DataSchema, PropertyDescriptor.PropertyType);
 }
Пример #3
0
 private void SetFilterOperation(ComboBox comboOperation, TextBox textBoxOperand, RowFilter.ColumnFilter columnFilter)
 {
     for (int i = 0; i < comboOperation.Items.Count; i++)
     {
         FilterItem filterItem = comboOperation.Items[i] as FilterItem;
         if (null != filterItem && Equals(columnFilter.FilterOperation, filterItem.FilterOperation))
         {
             comboOperation.SelectedIndex = i;
             break;
         }
     }
     textBoxOperand.Text = columnFilter.Operand;
 }