Ejemplo n.º 1
0
        private static bool filter(Item item, FilterDescriptor filterDescriptor)
        {
            string value = CustomServerItemsProvider.getMemberValue(item, filterDescriptor.path);

            if (!String.IsNullOrEmpty(value))
            {
                if (!CustomServerItemsProvider.isFiltering(value, filterDescriptor.value, (int)filterDescriptor.condition))
                {
                    if (filterDescriptor.children.Count == 0)
                    {
                        return(true);
                    }
                    else
                    {
                        int result = 0;
                        for (var i = 0; i < filterDescriptor.children.Count; i++)
                        {
                            string collapsedValue = CustomServerItemsProvider.getMemberValue(item, filterDescriptor.children[i].path);
                            if (!CustomServerItemsProvider.isFiltering(collapsedValue, filterDescriptor.children[i].value, (int)filterDescriptor.children[i].condition))
                            {
                                result++;
                            }
                        }
                        if (result == filterDescriptor.children.Count)
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
 public static int getTotalItemsCount(List <FilterDescriptor> filterDescriptors)
 {
     CustomServerItemsProvider.sendItems = new List <Item>(100000);
     foreach (var item in CustomServerItemsProvider.items)
     {
         CustomServerItemsProvider.sendItems.Add(item);
     }
     return(CustomServerItemsProvider.onFiltering(filterDescriptors, null).Count);
 }
Ejemplo n.º 3
0
 private static int sortingRecursive(Item a, Item b)
 {
     CustomServerItemsProvider.i = 0;
     if (CustomServerItemsProvider.sortDescriptors.Count > 0)
     {
         if (CustomServerItemsProvider.i != CustomServerItemsProvider.sortDescriptors.Count - 1)
         {
             if (getMemberValue(a, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path).CompareTo(getMemberValue(a, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path)) > 0)
             {
                 return(CustomServerItemsProvider.sortingOrder(sortDescriptors[i]));
             }
             if (getMemberValue(b, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path).CompareTo(getMemberValue(a, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path)) > 0)
             {
                 return(CustomServerItemsProvider.sortingOrderDesc(sortDescriptors[i]));
             }
             CustomServerItemsProvider.i++;
             return(CustomServerItemsProvider.sortingRecursive(a, b));
         }
         else
         {
             return(getMemberValue(a, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path).CompareTo(getMemberValue(b, CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i].path)) > 0
                 ? CustomServerItemsProvider.sortingOrder(CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i])
                 : CustomServerItemsProvider.sortingOrderDesc(CustomServerItemsProvider.sortDescriptors[CustomServerItemsProvider.i]));
         }
     }
     else
     {
         return(0);
     }
     //if (i != sortDescriptors.Count - 1) {
     //    if (getMemberValue(a, sortDescriptors[i].Path).CompareTo(getMemberValue(b, sortDescriptors[i].Path)) > 0)
     //        return CustomServerItemsProvider.sortingOrder(sortDescriptors[i]);
     //    if (getMemberValue(b, sortDescriptors[i].Path).CompareTo(getMemberValue(a, sortDescriptors[i].Path)) > 0)
     //        return CustomServerItemsProvider.sortingOrderDesc(sortDescriptors[i]);
     //    return CustomServerItemsProvider.sortingRecursive(a, b, sortDescriptors, i + 1);
     //    } else {
     //    return getMemberValue(a, sortDescriptors[i].Path).CompareTo(getMemberValue(b, sortDescriptors[i].Path)) > 0 ? CustomServerItemsProvider.sortingOrder(sortDescriptors[i]) : CustomServerItemsProvider.sortingOrderDesc(sortDescriptors[i]);
     //}
     //return 1;
 }
Ejemplo n.º 4
0
        public static List <Item> getItems(int?firstItem, int?itemsNumber, List <SortDescriptor> sortDescriptors, List <FilterDescriptor> filterDescriptors, List <FilterDescriptor> collapsedFilterDescriptors)
        {
            CustomServerItemsProvider.sendItems = new List <Item>(100000);
            foreach (var item in CustomServerItemsProvider.items)
            {
                CustomServerItemsProvider.sendItems.Add(item);
            }
            CustomServerItemsProvider.sortDescriptors = new List <SortDescriptor>();
            if (sortDescriptors != null)
            {
                CustomServerItemsProvider.sortDescriptors = sortDescriptors;
            }
            if (sortDescriptors[CustomServerItemsProvider.i].asc != null)
            {
                bool isOrderAsc = sortDescriptors[CustomServerItemsProvider.i].asc ?? false;
                switch (sortDescriptors[CustomServerItemsProvider.i].path)
                {
                case "Number":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.Number).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.Number).ToList();
                    }
                    break;

                case "PictureName":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.PictureName).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.PictureName).ToList();
                    }
                    break;

                case "Brand":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.Brand).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.Brand).ToList();
                    }
                    break;

                case "Type":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.Type).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.Type).ToList();
                    }
                    break;

                case "Year":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.Year).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.Year).ToList();
                    }
                    break;

                case "EnginePower":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.EnginePower).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.EnginePower).ToList();
                    }
                    break;

                case "Cabin":
                    if (isOrderAsc)
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderBy(x => x.Cabin).ToList();
                    }
                    else
                    {
                        CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.OrderByDescending(x => x.Cabin).ToList();
                    }
                    break;
                }
            }
            CustomServerItemsProvider.sendItems = CustomServerItemsProvider.onFiltering(filterDescriptors, collapsedFilterDescriptors).Skip(firstItem ?? 0).ToList().Take(itemsNumber ?? 0).ToList();
            //CustomServerItemsProvider.sendItems = CustomServerItemsProvider.sendItems.Skip(firstItem ?? 0).ToList().Take(itemsNumber ?? 0).ToList();
            return(CustomServerItemsProvider.sendItems);
        }
Ejemplo n.º 5
0
        private static List <Item> onFiltering(List <FilterDescriptor> filterDescriptors, List <FilterDescriptor> collapsedFilterDescriptors)
        {
            if ((filterDescriptors == null || filterDescriptors.Count == 0) && (collapsedFilterDescriptors == null || collapsedFilterDescriptors.Count == 0))
            {
                return(CustomServerItemsProvider.sendItems);
            }

            if (collapsedFilterDescriptors == null)
            {
                collapsedFilterDescriptors = new List <FilterDescriptor>();
            }

            List <bool> isCollapsedItem = new List <bool>();

            for (int c = 0; c < collapsedFilterDescriptors.Count; c++)
            {
                isCollapsedItem.Add(false);
            }

            List <Item> filteredItems = new List <Item>();

            for (var j = 0; j < CustomServerItemsProvider.sendItems.Count; j++)
            {
                // filtering common filters
                var isFiltered = 0;
                if (filterDescriptors != null)
                {
                    for (var i = 0; i < filterDescriptors.Count; i++)
                    {
                        if (CustomServerItemsProvider.filter(CustomServerItemsProvider.sendItems[j], filterDescriptors[i]))
                        {
                            isFiltered++;
                        }
                    }
                }

                // filtering collapsed filter
                bool isCollapsedFiltered = false;
                var  numberfilter        = -1;
                if (collapsedFilterDescriptors != null)
                {
                    for (var i = 0; i < collapsedFilterDescriptors.Count; i++)
                    {
                        if (CustomServerItemsProvider.filter(CustomServerItemsProvider.sendItems[j], collapsedFilterDescriptors[i]))
                        {
                            isCollapsedFiltered = true;
                            numberfilter        = i;
                            i = collapsedFilterDescriptors.Count;
                        }
                    }
                }

                //add fake item for creating collapsing group
                if (isFiltered == 0 && !isCollapsedFiltered)
                {
                    filteredItems.Add(CustomServerItemsProvider.sendItems[j]);
                }
                else
                {
                    if (isFiltered == 0)
                    {
                        if (isCollapsedFiltered && !isCollapsedItem[numberfilter])
                        {
                            Item fakeItem = new Item();
                            CustomServerItemsProvider.setMemberValue(fakeItem, collapsedFilterDescriptors[numberfilter].path, collapsedFilterDescriptors[numberfilter].value);
                            for (var i = 0; i < collapsedFilterDescriptors[numberfilter].children.Count; i++)
                            {
                                CustomServerItemsProvider.setMemberValue(fakeItem, collapsedFilterDescriptors[numberfilter].children[i].path, collapsedFilterDescriptors[numberfilter].children[i].value);
                            }
                            filteredItems.Add(fakeItem);
                            isCollapsedItem[numberfilter] = true;
                        }
                    }
                }
            }

            return(filteredItems);
        }