Exemple #1
0
        private FilterItem FindRecursive(FilterItem item, int tagId)
        {
            if (item.HasSubOptions)
            {
                if (item.SubOptions.Any(i => i.TagId == tagId))
                {
                    return(item.SubOptions.First(i => i.TagId == tagId));
                }

                foreach (var subItem in item.SubOptions.Where(i => i.HasSubOptions))
                {
                    var result = FindRecursive(subItem, tagId);

                    if (result != null)
                    {
                        return(result);
                    }
                }
            }

            return(null);
        }
Exemple #2
0
        public static FilterItem InitFilters()
        {
            try
            {
                var mainItem = new FilterItem();
                //mainItem.OptionText = "Lepidoptera";
                mainItem.OptionText = "Bodentiere";
                //why 7?
                mainItem.TagId                 = 0;
                mainItem.SelectedItems         = new ObservableCollection <FilterItem>();
                mainItem.ValueFilterDictionary = new Dictionary <int, List <int> >();

                //Toplevel
                var tFilterItems = Load.FromFile <TaxonFilterItem>("TaxonFilterItems.json");

                var topLevelFilterItems = tFilterItems.Select(tfi => new { tfi.TagParentId, tfi.TagParentName, tfi.KeyDataType, tfi.VisibilityCategoryId }).Distinct();
                foreach (var tfi in topLevelFilterItems)
                {
                    if (tfi.KeyDataType != "UNKNOWN" && tfi.KeyDataType != "PIC")
                    {
                        mainItem.SubOptions.Add(new FilterItem {
                            TagId = tfi.TagParentId, OptionText = tfi.TagParentName, KeyDataType = tfi.KeyDataType, VisibilityCategoryId = tfi.VisibilityCategoryId, CombineSubOptions = true, ParentItem = mainItem
                        });
                    }
                }

                //Level 2
                //var templist = Newtonsoft.Json.JsonConvert.DeserializeObject(tFilterItems);
                var idValueListValue         = tFilterItems.Where(t => t.KeyDataType == "VALUE").Select(tfi => new { tfi.TagId, tfi.ListSourceJson, tfi.VisibilityCategoryId, tfi.TagValue, tfi.KeyDataType, tfi.TagParentId, tfi.MinValue, tfi.MaxValue, tfi.TaxonId, tfi.TaxonHits });
                var idValueList              = tFilterItems.Where(t => t.KeyDataType == "VALUELIST").Select(tfi => new { tfi.TagId, tfi.ListSourceJson, tfi.VisibilityCategoryId, tfi.TagValue, tfi.KeyDataType, tfi.TagParentId, tfi.MinValue, tfi.MaxValue, tfi.TaxonId, tfi.TaxonHits }).GroupBy(tfi => tfi.TagId);
                var distinctIdValueList      = idValueList.Distinct().ToList();
                var distinctIdValueListValue = idValueListValue.Distinct().ToList();
                foreach (var tfi2 in distinctIdValueList)
                {
                    FilterItem _currentItem = mainItem.FindByTagId(tfi2.First().TagParentId, false);
                    _currentItem.SubOptions.Add(
                        new FilterItem
                    {
                        TagId                = tfi2.First().TagId,
                        TagValue             = tfi2.First().TagValue,
                        OptionText           = tfi2.First().TagValue,
                        KeyDataType          = tfi2.First().KeyDataType,
                        MinValue             = tfi2.First().MinValue,
                        MaxValue             = tfi2.First().MaxValue,
                        ListSourceJson       = tfi2.First().ListSourceJson != null ? tfi2.First().ListSourceJson.Take(3).ToList() : null,
                        ParentItem           = _currentItem,
                        TaxonId              = tfi2.First().TaxonId,
                        TaxonHits            = tfi2.First().TaxonHits,
                        VisibilityCategoryId = tfi2.First().VisibilityCategoryId
                    });
                }
                foreach (var tfi2 in distinctIdValueListValue)
                {
                    FilterItem _currentItem = mainItem.FindByTagId(tfi2.TagParentId, false);
                    _currentItem.SubOptions.Add(
                        new FilterItem
                    {
                        TagId                = tfi2.TagId,
                        TagValue             = tfi2.TagValue,
                        OptionText           = tfi2.TagValue,
                        KeyDataType          = tfi2.KeyDataType,
                        MinValue             = tfi2.MinValue,
                        MaxValue             = tfi2.MaxValue,
                        ParentItem           = _currentItem,
                        TaxonId              = tfi2.TaxonId,
                        TaxonHits            = null,
                        VisibilityCategoryId = tfi2.VisibilityCategoryId
                    });
                }

                return(mainItem);
            }
            catch (Exception e)
            {
                throw e;
            }
        }