public override async Task DidLoad() { // Only fetch new comments as needed if (PrimaryCardViewModel.CommentCount != 0 || PrimaryCardViewModel.CommentViewModels.Count == 0) { await PrimaryCardViewModel.GetComments(); } // populate all cards var viewModels = PrimaryCardViewModel.CommentViewModels.OrderBy(vm => vm.OrderByDateTime).ToList(); // Group by the relative string of the 15 minute increment var groups = viewModels.GroupBy(x => { var stamp = x.OrderByDateTime; stamp = stamp.AddMinutes(-(stamp.Minute % 15)); stamp = stamp.AddMilliseconds(-stamp.Millisecond - 1000 * stamp.Second); return(stamp.ToRelativeString()); }) .Select(g => new CommentGroup(new HeaderCardViewModel(g.Key), g.Distinct())); var contentViewModels = new List <BaseCardViewModel> (); // Format the new grouping by including the headers in the main list PrimaryCardViewModel.ShowCommentButton = false; contentViewModels.Add(PrimaryCardViewModel); for (int i = 0; i < groups.Count(); i++) { var commentGroup = groups.ElementAtOrDefault(i); if (i == 0) { commentGroup.Header.Position = Position.Top; } contentViewModels.Add(commentGroup.Header); foreach (BaseContentCardViewModel viewModel in commentGroup.Content) { contentViewModels.Add(viewModel); } } // Add the footer header for "now" contentViewModels.Add(new HeaderCardViewModel(ApplicationResources.Now, Position.Bottom)); CardViewModels.Clear(); CardViewModels.AddRange(contentViewModels); }
private void RemoveCardsIfNeeded() { // Remove cards that no longer have an associated account // This is to protected against a user signing out of an account in the menu // And then trying to take action on a card var removableViewModels = CardViewModels.Where(vm => vm.ListItemType == ListItemType.Default); var cardsToRemove = new List <IListItem> (); if (_twitterHelper.GetAccount() == null) { var tViewModels = removableViewModels.Where(vm => ((BaseContentCardViewModel)vm).SocialType == SocialType.Twitter); cardsToRemove.AddRange(tViewModels); } if (_facebookHelper.GetAccount() == null) { var fViewModels = removableViewModels.Where(vm => ((BaseContentCardViewModel)vm).SocialType == SocialType.Facebook); cardsToRemove.AddRange(fViewModels); } CardViewModels.RemoveRange(cardsToRemove); }
public IActionResult Index() { var cards = _CardRepository.Cards(); var menhgias = (from mg in _menhgiaRepository.MenhGias() orderby mg.Price group mg by mg.DaiLy into dl select new DaiLyThe { LoaiTaiKhoan = dl.Key ? "Đại lý" : "Thường dân", key = dl.Key?"true":"false", MenhGias = dl.Where(x => x.DaiLy == dl.Key).ToList() }).ToList(); var cardVM = new CardViewModels { Cards = cards, DaiLyThes = menhgias }; return(View(cardVM)); }
public async Task GetPosts() { var facebookViewModels = await GetFacebookFeed(); var twitterViewModels = await GetTwitterFeed(); var allViewModels = new ObservableRangeCollection <BaseContentCardViewModel> (); // TODO: Need to further develop this system of ordering // Need to be able to toggle between popularity and time // allViewModels.AddRange (facebookViewModels); // allViewModels.AddRange (twitterViewModels); Random rnd = new Random(); int total = facebookViewModels.Count + twitterViewModels.Count; double fbLuck = 0; double tLuck = 0; fbLuck = facebookViewModels.Count / (double)total; tLuck = twitterViewModels.Count / (double)total; for (int i = 0; i < total; i++) { int newTotal = 0; var dicey = rnd.NextDouble(); if (dicey < fbLuck) { allViewModels.Add(facebookViewModels.First()); facebookViewModels.RemoveAt(0); } else { allViewModels.Add(twitterViewModels.First()); twitterViewModels.RemoveAt(0); } newTotal = facebookViewModels.Count + twitterViewModels.Count; if (newTotal != 0) { fbLuck = facebookViewModels.Count / (double)newTotal; tLuck = twitterViewModels.Count / (double)newTotal; } } // // if(OrderBy == OrderBy.Time) // { // allViewModels = new ObservableRangeCollection<BaseContentCardViewModel> (allViewModels.OrderByDescending (vm => vm.OrderByDateTime)); // } // CardViewModels.Clear(); CardViewModels.AddRange(allViewModels); foreach (BaseContentCardViewModel viewModel in CardViewModels) { viewModel.RequestMovieViewer = RequestMovieViewer; viewModel.RequestPhotoViewer = RequestPhotoViewer; viewModel.RequestCommentPage = OnRequestCommentPage; } IsRefreshing = false; if (RequestCompleted != null) { RequestCompleted(); } }