void CommitFilterOpCombo() { var dataGridViewComboBoxEditingControl = dataGridViewFilter.EditingControl as DataGridViewComboBoxEditingControl; if (dataGridViewComboBoxEditingControl == null || dataGridViewFilter.CurrentRow == null) { return; } var rowIndex = dataGridViewFilter.CurrentRow.Index; var filterOperation = FilterOperationFromDisplayName(dataGridViewComboBoxEditingControl.Text); if (filterOperation == null) { return; } if (filterOperation == ViewInfo.Filters[rowIndex].FilterSpec.Operation) { return; } var newFilters = ViewSpec.Filters.ToArray(); var columnDescriptor = ViewInfo.Filters[rowIndex].ColumnDescriptor; newFilters[rowIndex] = newFilters[rowIndex].SetPredicate( FilterPredicate.CreateFilterPredicate(columnDescriptor.DataSchema, columnDescriptor.PropertyType, filterOperation, dataGridViewFilter.CurrentRow.Cells[colFilterOperand.Index].Value as string)); ViewSpec = ViewSpec.SetFilters(newFilters); }
private static ViewSpec MapViewSpec(IEnumerable <KeyValuePair <PropertyPath, PropertyPath> > mapping, ViewSpec viewSpec, Type newRowType) { viewSpec = viewSpec.SetColumns(viewSpec.Columns.Select( col => col.SetPropertyPath(MapPropertyPath(mapping, col.PropertyPath)))); viewSpec = viewSpec.SetFilters(viewSpec.Filters.Select( filter => filter.SetColumnId(MapPropertyPath(mapping, filter.ColumnId)))); //viewSpec = viewSpec.SetSublistId(MapPropertyPath(mapping, viewSpec.SublistId)); viewSpec = viewSpec.SetRowType(newRowType); return(viewSpec); }
private void AddFilter(ColumnDescriptor columnDescriptor) { var newFilters = new List <FilterSpec>(ViewSpec.Filters) { new FilterSpec(columnDescriptor.PropertyPath, FilterPredicate.HAS_ANY_VALUE) }; SetViewSpec(ViewSpec.SetFilters(newFilters), null); dataGridViewFilter.CurrentCell = dataGridViewFilter.Rows[dataGridViewFilter.Rows.Count - 1].Cells[colFilterOperation.Index]; }
public void TestDataBindingIsNotNullFilter() { var dataSchema = new DataSchema(); var viewSpec = new ViewSpec().SetColumns(new[] {new ColumnSpec(PropertyPath.Parse("AminoAcidsDict!*.Value")),}) .SetSublistId(PropertyPath.Parse("AminoAcidsDict!*")); var viewSpecWithFilter = viewSpec.SetFilters(new[] { new FilterSpec(PropertyPath.Parse("AminoAcidsDict!*.Value"), FilterOperations.OP_IS_NOT_BLANK, null), }); var bindingListSource = new BindingListSource(); var bindingListSourceWithFilter = new BindingListSource(); bindingListSource.SetView(new ViewInfo(dataSchema, typeof(Peptide), viewSpec), null); bindingListSourceWithFilter.SetView(new ViewInfo(dataSchema, typeof(Peptide), viewSpecWithFilter), new[] {new Peptide("")}); Assert.AreEqual(0, bindingListSourceWithFilter.Count); bindingListSource.RowSource = bindingListSourceWithFilter.RowSource; Assert.AreEqual(1, bindingListSource.Count); }
public void TestDataBindingIsNotNullFilter() { var dataSchema = new DataSchema(); var viewSpec = new ViewSpec().SetColumns(new[] { new ColumnSpec(PropertyPath.Parse("AminoAcidsDict!*.Value")), }) .SetSublistId(PropertyPath.Parse("AminoAcidsDict!*")); var viewSpecWithFilter = viewSpec.SetFilters(new[] { new FilterSpec(PropertyPath.Parse("AminoAcidsDict!*.Value"), FilterPredicate.IS_NOT_BLANK), }); var bindingListSource = new BindingListSource(); var bindingListSourceWithFilter = new BindingListSource(); bindingListSource.SetView(new ViewInfo(dataSchema, typeof(Peptide), viewSpec), null); bindingListSourceWithFilter.SetView(new ViewInfo(dataSchema, typeof(Peptide), viewSpecWithFilter), new[] { new Peptide("") }); Assert.AreEqual(0, bindingListSourceWithFilter.Count); bindingListSource.RowSource = bindingListSourceWithFilter.RowSource; Assert.AreEqual(1, bindingListSource.Count); }
private void DataGridViewFilterOnCellEndEdit(object sender, DataGridViewCellEventArgs e) { if (InChangeView) { return; } if (e.ColumnIndex == colFilterOperation.Index || e.ColumnIndex == colFilterOperand.Index) { var newFilters = ViewSpec.Filters.ToArray(); var filterInfo = ViewInfo.Filters[e.RowIndex]; var filterPredicate = SafeCreateFilterPredicate( filterInfo.ColumnDescriptor.DataSchema, filterInfo.ColumnDescriptor.PropertyType, FilterOperationFromDisplayName( dataGridViewFilter.Rows[e.RowIndex].Cells[colFilterOperation.Index].Value as string), dataGridViewFilter.Rows[e.RowIndex].Cells[colFilterOperand.Index].Value as string); newFilters[e.RowIndex] = new FilterSpec(filterInfo.ColumnDescriptor.PropertyPath, filterPredicate); ViewSpec = ViewSpec.SetFilters(newFilters); } }
private void DataGridViewFilterOnCellEndEdit(object sender, DataGridViewCellEventArgs e) { if (InChangeView) { return; } if (e.ColumnIndex == colFilterOperation.Index) { var newFilters = ViewSpec.Filters.ToArray(); var cell = dataGridViewFilter.Rows[e.RowIndex].Cells[e.ColumnIndex]; newFilters[e.RowIndex] = newFilters[e.RowIndex].SetOperation(FilterOperationFromDisplayName(cell.Value as string)); ViewSpec = ViewSpec.SetFilters(newFilters); } else if (e.ColumnIndex == colFilterOperand.Index) { var newFilters = ViewSpec.Filters.ToArray(); var cell = dataGridViewFilter.Rows[e.RowIndex].Cells[e.ColumnIndex]; newFilters[e.RowIndex] = newFilters[e.RowIndex].SetOperand((string)cell.Value); ViewSpec = ViewSpec.SetFilters(newFilters); } }
/// <summary> /// In old custom reports, if the report was showing rows from a Results table, /// the report would not include any DocNode's which did not have any results. /// To preserve this behavior we add a filter that only DocNode's which have at /// least one Result get included. /// </summary> public static ViewSpec AddFilter(ViewSpec viewSpec, ReportSpec reportSpec) { var propertyPaths = new HashSet <PropertyPath>(); IEnumerable <ReportColumn> columns = reportSpec.Select; if (reportSpec.CrossTabValues != null) { columns = columns.Concat(reportSpec.CrossTabValues); } foreach (var reportColumn in columns) { var databindingTableAttribute = GetDatabindingTableAttribute(reportColumn); if (null != databindingTableAttribute.Property && !databindingTableAttribute.Property.EndsWith(@"Summary")) { propertyPaths.Add(PropertyPath.Parse(databindingTableAttribute.Property)); } } var newFilters = propertyPaths.Select(propertyPath => new FilterSpec(propertyPath, FilterPredicate.IS_NOT_BLANK)); viewSpec = viewSpec.SetFilters(viewSpec.Filters.Concat(newFilters)); return(viewSpec); }
/// <summary> /// In old custom reports, if the report was showing rows from a Results table, /// the report would not include any DocNode's which did not have any results. /// To preserve this behavior we add a filter that only DocNode's which have at /// least one Result get included. /// </summary> public static ViewSpec AddFilter(ViewSpec viewSpec, ReportSpec reportSpec) { var propertyPaths = new HashSet<PropertyPath>(); IEnumerable<ReportColumn> columns = reportSpec.Select; if (reportSpec.CrossTabValues != null) { columns = columns.Concat(reportSpec.CrossTabValues); } foreach (var reportColumn in columns) { var databindingTableAttribute = GetDatabindingTableAttribute(reportColumn); if (null != databindingTableAttribute.Property && !databindingTableAttribute.Property.EndsWith("Summary")) // Not L10N { propertyPaths.Add(PropertyPath.Parse(databindingTableAttribute.Property)); } } var newFilters = propertyPaths.Select( propertyPath => new FilterSpec(propertyPath, FilterOperations.OP_IS_NOT_BLANK, null)); viewSpec = viewSpec.SetFilters(viewSpec.Filters.Concat(newFilters)); return viewSpec; }
void CommitFilterOpCombo() { var dataGridViewComboBoxEditingControl = dataGridViewFilter.EditingControl as DataGridViewComboBoxEditingControl; if (dataGridViewComboBoxEditingControl == null || dataGridViewFilter.CurrentRow == null) { return; } var rowIndex = dataGridViewFilter.CurrentRow.Index; var filterOperation = FilterOperationFromDisplayName(dataGridViewComboBoxEditingControl.Text); if (filterOperation == null) { return; } if (filterOperation == ViewInfo.Filters[rowIndex].FilterSpec.Operation) { return; } var newFilters = ViewSpec.Filters.ToArray(); newFilters[rowIndex] = newFilters[rowIndex].SetOperation(filterOperation); ViewSpec = ViewSpec.SetFilters(newFilters); }
public void DeleteSelectedFilters() { var newFilters = ViewSpec.Filters.Where((filterSpec, index) => !dataGridViewFilter.Rows[index].Selected); ViewSpec = ViewSpec.SetFilters(newFilters); }