/// <exception cref="DeprecatedWrapperException"></exception> internal async Task <ISearchResultContainer> ExtractResultsFrom(string html) { var context = BrowsingContext.New(Configuration.Default); var document = await context.OpenAsync(req => req.Content(html)).ConfigureAwait(false); IElement resultsContainerNode = document.QuerySelector("div#main_tartalom div.lista_all div.box_torrent_all"); if (resultsContainerNode == null) { throw new DeprecatedWrapperException("Couldn't find the container for the search results!", document.DocumentElement); } IElement noResultNode = resultsContainerNode.QuerySelector("div.lista_mini_error"); if (noResultNode != null && noResultNode.TextContent == _userConfig.Language.NoSearchResults) { return(new SearchResultContainer()); } IElement topPaginationElement = document.QuerySelector("#pager_top"); if (topPaginationElement == null) { throw new DeprecatedWrapperException("Couldn't find the container for the pagination!"); } SearchResultContainer resultContainer = new SearchResultContainer(); resultContainer.HasPreviousPage = topPaginationElement.QuerySelector("#pPa") != null; resultContainer.HasNextPage = topPaginationElement.QuerySelector("#nPa") != null; if (resultContainer.HasPreviousPage) { IElement prevPageLink = topPaginationElement.QuerySelector("#pPa"); resultContainer.CurrentPage = GetPageFrom(prevPageLink) + 1; } else if (resultContainer.HasNextPage) { IElement nextPageLink = topPaginationElement.QuerySelector("#nPa"); resultContainer.CurrentPage = GetPageFrom(nextPageLink) - 1; } IHtmlCollection <IElement> resultNodes = resultsContainerNode.QuerySelectorAll("div.box_torrent"); if (resultNodes == null) { throw new DeprecatedWrapperException("Couldn't find the container for the search results!", resultsContainerNode); } foreach (IElement result in resultNodes) { resultContainer.Torrents.Add(ParseAsTorrent(result)); } return(resultContainer); }
private SearchResultContainer CreateSearchResult(CardWrapper[] vCards) { SearchResultContainer retVal = new SearchResultContainer(); Log.WriteLine("Creating search result...", LogType.Debug); DataGridCardItem[] vItems = new DataGridCardItem[vCards.Length]; for (int i = 0; i < vCards.Length; i++) { CardWrapper wrapper = vCards[i]; switch (wrapper.DbCard.Rarity) { case HearthDb.Enums.Rarity.COMMON: retVal.CommonsCount += wrapper.Count; break; case HearthDb.Enums.Rarity.RARE: retVal.RaresCount += wrapper.Count; break; case HearthDb.Enums.Rarity.EPIC: retVal.EpicsCount += wrapper.Count; break; case HearthDb.Enums.Rarity.LEGENDARY: retVal.LegendariesCount += wrapper.Count; break; } DataGridCardItem item = DataGridCardItem.FromCardWrapper(wrapper); retVal.TotalCount += item.Count; retVal.Dust += item.Dust; vItems[i] = item; } //Sort vItems = OrderItems(vItems).ToArray(); for (int i = 0; i < vItems.Length; i++) { retVal.GridItems.Add(vItems[i]); } return(retVal); }
private void OnSortOrderClick(object sender, System.Windows.RoutedEventArgs e) { SortOrderDialog dialog = new SortOrderDialog() { Owner = this }; if (dialog.ShowDialog().Value) { //dataGrid.ItemsSource = OrderItems(dataGrid.ItemsSource as IEnumerable<GridItem>); SearchResultContainer container = GetSearchResultContainerComponent(); container.SetGridItems(OrderItems(container.GridItems)); } else { } }