示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }
示例#4
0
        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();
            }
        }