private static void BuildSpecification(RadDataFilter dataFilter)
        {
            SpecificationDto specificationDto = GetFilter(dataFilter);

            specificationDto.CompositeFilter.Filters.Clear();

            if (dataFilter.ViewModel.CompositeFilter.LogicalOperator == Telerik.Windows.Data.FilterCompositionLogicalOperator.And)
            {
                specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.And;
            }
            else
            {
                specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.Or;
            }

            foreach (FilterViewModel filter in dataFilter.ViewModel.CompositeFilter.Filters)
            {
                if (filter.SimpleFilter.Member != null)
                {
                    var rule = new Filter()
                    {
                        Property = filter.SimpleFilter.Member,
                        Operator = filter.SimpleFilter.Operator.ToString(),
                        Value    = filter.SimpleFilter.Value.ToString()
                    };

                    specificationDto.CompositeFilter.Filters.Add(rule);
                }
            }
        }
示例#2
0
        private static void BuildSpecification(RadDataFilter dataFilter)
        {
            SpecificationDto specificationDto = GetFilter(dataFilter);
            specificationDto.CompositeFilter.Filters.Clear();

            if (dataFilter.ViewModel.CompositeFilter.LogicalOperator == Telerik.Windows.Data.FilterCompositionLogicalOperator.And)
            {
                specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.And;
            }
            else
            {
                specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.Or;
            }

            foreach (FilterViewModel filter in dataFilter.ViewModel.CompositeFilter.Filters)
            {
                if (filter.SimpleFilter.Member != null)
                {
                    var rule = new Filter()
                    {
                        Property = filter.SimpleFilter.Member,
                        Operator = filter.SimpleFilter.Operator.ToString(),
                        Value = filter.SimpleFilter.Value.ToString()
                    };

                    specificationDto.CompositeFilter.Filters.Add(rule);
                }
            }
        }
示例#3
0
        private static void OnItemPropertyDefinitionsPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            RadDataFilter dataFilter = dependencyObject as RadDataFilter;
            IEnumerable <ItemPropertyDefinition> definitions = e.NewValue as IEnumerable <ItemPropertyDefinition>;

            if (dataFilter != null && definitions != null)
            {
                dataFilter.ItemPropertyDefinitions.Clear();
                dataFilter.ItemPropertyDefinitions.AddRange(definitions);
            }
        }
示例#4
0
        private static void OnFilterDescriptorsPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            RadDataFilter            dataFilter  = dependencyObject as RadDataFilter;
            INotifyCollectionChanged descriptors = e.NewValue as INotifyCollectionChanged;

            if (dataFilter != null && descriptors != null)
            {
                FilterDescriptorBindingBehavior behavior = new FilterDescriptorBindingBehavior(dataFilter, descriptors);
                behavior.Attach();
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="FieldPathPropertyDefinition"/> class.
        /// </summary>
        /// <param name="dataFilter">
        /// The data filter.
        /// </param>
        /// <param name="memberDefinition">
        /// The member definition.
        /// </param>
        public FieldPathPropertyDefinition(RadDataFilter dataFilter, IFilterMemberDefinition memberDefinition)
        {
            if (dataFilter == null)
                throw new ArgumentNullException("dataFilter");

            if (memberDefinition == null)
                throw new ArgumentNullException("memberDefinition");

            _dataFilter = dataFilter;
            _memberDefinition = memberDefinition;
            PropertyName = memberDefinition.MemberName;
            PropertyType = memberDefinition.MemberType;
            DisplayName = memberDefinition.DisplayName;
        }
        public RadDataFilterHelper(RadDataFilter dataFilter)
        {
            dataFilter.CanUserCreateCompositeFilters = false;

            dataFilter.ViewModel.CompositeFilter.PropertyChanged += (sender, args) =>
            {
                BuildSpecification(dataFilter);
            };

            dataFilter.ViewModel.CompositeFilter.Filters.CollectionChanged += (sender, args) =>
            {
                foreach (FilterViewModel filterViewModel in dataFilter.ViewModel.CompositeFilter.Filters)
                {
                    filterViewModel.SimpleFilter.PropertyChanged += (grid, arguments) =>
                    {
                        BuildSpecification(dataFilter);
                    };
                }
            };

            dataFilter.FilterDescriptors.Add(new Telerik.Windows.Data.FilterDescriptor("IsActive", Telerik.Windows.Data.FilterOperator.IsEqualTo, true));
            BuildSpecification(dataFilter);
        }
示例#7
0
        public RadDataFilterHelper(RadDataFilter dataFilter)
        {
            dataFilter.CanUserCreateCompositeFilters = false;

            dataFilter.ViewModel.CompositeFilter.PropertyChanged += (sender, args) =>
                {
                    BuildSpecification(dataFilter);
                };

            dataFilter.ViewModel.CompositeFilter.Filters.CollectionChanged += (sender, args) =>
            {
                foreach (FilterViewModel filterViewModel in dataFilter.ViewModel.CompositeFilter.Filters)
                {
                    filterViewModel.SimpleFilter.PropertyChanged += (grid, arguments) =>
                    {
                        BuildSpecification(dataFilter);
                    };
                }
            };

            dataFilter.FilterDescriptors.Add(new Telerik.Windows.Data.FilterDescriptor("IsActive", Telerik.Windows.Data.FilterOperator.IsEqualTo, true));
            BuildSpecification(dataFilter);
        }
示例#8
0
        /// <summary>
        /// Get FilterDescriptorCollection from Expression
        /// </summary>
        /// <param name="filterExpression">Expression</param>
        /// <param name="radDataFilter">The RAD data filter.</param>
        /// <returns>CompositeFilterDescriptorCollection</returns>
        public static CompositeFilterDescriptorCollection GetFilterDescriptorCollection(this string filterExpression, RadDataFilter radDataFilter)
        {
            var descriptor = Veyron.SharedTypes.FilterDescriptor.FromJSON(filterExpression);
            var result = new CompositeFilterDescriptorCollection { LogicalOperator = descriptor.LogicalOperator.ToRadLogicalOperator() };

            if (descriptor.FilterDescriptors == null || descriptor.FilterDescriptors.Count == 0)
            {
                if (descriptor.Operator != FilterOperator.Any)
                {
                    result.Add(GetRadFilterDescriptor(descriptor, radDataFilter));
                }
            }
            else
            {
                CompositeFilterDescriptor(descriptor, result, radDataFilter);
            }

            return result;
        }
示例#9
0
 public static SpecificationDto GetFilter(RadDataFilter dataFilter)
 {
     return (SpecificationDto)dataFilter.GetValue(FilterProperty);
 }
 public static void SetFilter(RadDataFilter dataFilter, SpecificationDto value)
 {
     dataFilter.SetValue(FilterProperty, value);
 }
 public static SpecificationDto GetFilter(RadDataFilter dataFilter)
 {
     return((SpecificationDto)dataFilter.GetValue(FilterProperty));
 }
示例#12
0
        private static FilterDescriptor GetRadFilterDescriptor(Veyron.SharedTypes.IFilterDescriptor descriptor, RadDataFilter radDataFilter)
        {
            var filterDescriptor = new FilterDescriptor
                                       {
                                           Member = descriptor.ColumnName,
                                           Operator =
                                               (Telerik.Windows.Data.FilterOperator)
                                               Enum.Parse(typeof(Telerik.Windows.Data.FilterOperator), descriptor.Operator.ToString(), true)
                                       };

            var fieldValue = descriptor.Value as FilterValue;
            if (fieldValue != null)
            {
                if (filterDescriptor.MemberType == typeof(string))
                {
                    filterDescriptor.Value = fieldValue.ToString();
                }

                DynamicDataFilterBehavior.SetSystemValue(filterDescriptor, fieldValue);
            }
            else
            {
                DynamicDataFilterBehavior.SetSystemValue(filterDescriptor, null);

                var itemDef = radDataFilter.ItemPropertyDefinitions.FirstOrDefault(x => x.PropertyName == filterDescriptor.Member);
                if (itemDef != null)
                {
                    if (itemDef.PropertyType == typeof(IStateInfo))
                    {
                        Guid stateGuid;

                        filterDescriptor.Value = Guid.TryParse(SafeTypeConverter.Convert<string>(descriptor.Value), out stateGuid)
                                                     ? new StateInfoClass { Guid = stateGuid }
                                                     : new StateInfoClass { Id = SafeTypeConverter.Convert<int>(descriptor.Value) };
                    }
                    else
                    {
                        filterDescriptor.Value = itemDef.PropertyType == typeof(IInfoClass)
                                                     ? new InfoClassPlaceholder(descriptor.Value)
                                                     : SafeTypeConverter.Convert(descriptor.Value, itemDef.PropertyType);
                    }
                }
                else
                {
                    filterDescriptor.Value = descriptor.Value;
                }
            }

            return filterDescriptor;
        }
示例#13
0
 /// <summary>
 /// Composites the filter descriptor.
 /// </summary>
 /// <param name="descriptor">The descriptor.</param>
 /// <param name="result">The result.</param>
 /// <param name="radDataFilter">The RAD data filter.</param>
 private static void CompositeFilterDescriptor(Veyron.SharedTypes.IFilterDescriptor descriptor, ICompositeFilterDescriptor result, RadDataFilter radDataFilter)
 {
     foreach (var filter in descriptor.FilterDescriptors)
     {
         if (filter.FilterDescriptors == null || filter.FilterDescriptors.Count == 0)
             result.FilterDescriptors.Add(GetRadFilterDescriptor(filter, radDataFilter));
         else
         {
             var r = new CompositeFilterDescriptor
                         {
                             LogicalOperator = filter.LogicalOperator.ToRadLogicalOperator()
                         };
             CompositeFilterDescriptor(filter, r, radDataFilter);
             result.FilterDescriptors.Add(r);
         }
     }
 }
示例#14
0
        //void dataFilter_Loaded(object sender, RoutedEventArgs e)
        //{
        //    Transfer(GetFilterDescriptors(dataFilter) as IList, dataFilter.FilterDescriptors);

        //    descriptors.CollectionChanged -= CollectionChanged;
        //    descriptors.CollectionChanged += CollectionChanged;
        //}

        public FilterDescriptorBindingBehavior(RadDataFilter dataFilter, INotifyCollectionChanged descriptors)
        {
            this.dataFilter  = dataFilter;
            this.descriptors = descriptors;
        }
示例#15
0
        /// <summary>
        /// Get FilterDescriptorCollection from Expression.
        /// </summary>
        /// <param name="filterDescriptor">Filter Descriptor.</param>
        /// <param name="radDataFilter">The RAD data filter.</param>
        /// <returns>CompositeFilterDescriptorCollection.</returns>
        public static CompositeFilterDescriptorCollection GetFilterDescriptorCollection(this Veyron.SharedTypes.IFilterDescriptor filterDescriptor, RadDataFilter radDataFilter)
        {
            if (filterDescriptor == null)
                return null;

            var result = new CompositeFilterDescriptorCollection { LogicalOperator = filterDescriptor.LogicalOperator.ToRadLogicalOperator() };

            if (filterDescriptor.FilterDescriptors == null || filterDescriptor.FilterDescriptors.Count == 0)
            {
                if (filterDescriptor.Operator != FilterOperator.Any)
                    result.Add(GetRadFilterDescriptor(filterDescriptor, radDataFilter));
            }
            else
                CompositeFilterDescriptor(filterDescriptor, result, radDataFilter);

            return result;
        }
 public MyFilterDescriptorBindingBehavior(RadDataFilter dataFilter, INotifyCollectionChanged descriptors)
 {
     this.dataFilter = dataFilter;
     this.descriptors = descriptors;
 }
示例#17
0
 public static void SetFilter(RadDataFilter dataFilter, SpecificationDto value)
 {
     dataFilter.SetValue(FilterProperty, value);
 }