Example #1
0
 private void ExecuteSelectItem(MarketTreeNode node)
 {
     if (node == null || node.InvType == null)
     {
         return;
     }
     SelectedItem = InvTypes.Single(t => t.TypeId == node.InvType.TypeId);
 }
        public async Task <BindableCollection <MarketTreeNode> > GetMarketTreeAsync(
            PropertyChangedEventHandler itemPropertyChanged)
        {
            var            tree  = new BindableCollection <MarketTreeNode>();
            List <InvType> items = await _eveProfiteerRepository.GetMarketTypes().Include(f => f.Orders).ToListAsync().ConfigureAwait(false);

            List <InvMarketGroup> groupList = await _staticData.GetMarketGroups().ToListAsync().ConfigureAwait(false);

            ILookup <int, MarketTreeNode> groups = groupList.Select(t => new MarketTreeNode(t)).ToLookup(t => t.Id);

            foreach (InvType item in items)
            {
                var node  = new MarketTreeNode(item);
                int id    = item.MarketGroupId.GetValueOrDefault();
                var group = groups[id].Single();
                if (group != null)
                {
                    group.Children.Add(node);
                    node.Parent = group;
                }
                node.PropertyChanged += itemPropertyChanged;
            }
            foreach (var key in groupList)
            {
                var node = groups[key.MarketGroupId].Single();
                if (key.ParentGroupId.HasValue)
                {
                    var parent = groups[key.ParentGroupId.GetValueOrDefault()].Single();
                    parent.Children.Add(node);
                    node.Parent = parent;
                }
                else
                {
                    tree.Add(node);
                }
            }
            return(tree);
        }
Example #3
0
        public async Task <BindableCollection <MarketTreeNode> > GetMarketTree()
        {
            var            rootList = new BindableCollection <MarketTreeNode>();
            List <InvType> items    = await GetMarketTypes().ToListAsync().ConfigureAwait(false);

            List <InvMarketGroup> groupList = await GetMarketGroups().ToListAsync().ConfigureAwait(false);

            ILookup <int, MarketTreeNode> groups = groupList.Select(t => new MarketTreeNode(t)).ToLookup(t => t.Id);

            foreach (InvType item in items)
            {
                var node  = new MarketTreeNode(item);
                int id    = item.MarketGroupId.GetValueOrDefault();
                var group = groups[id].Single();
                if (group != null)
                {
                    group.Children.Add(node);
                    node.Parent = group;
                }
            }

            foreach (var key in groupList)
            {
                var node = groups[key.MarketGroupId].Single();
                if (key.ParentGroupId.HasValue)
                {
                    var parent = groups[key.ParentGroupId.GetValueOrDefault()].Single();
                    parent.Children.Add(node);
                    node.Parent = parent;
                }
                else
                {
                    rootList.Add(node);
                }
            }
            return(rootList);
        }