public static StopGroup BestStop(Route selectedRoute)
        {
            var lastStop   = selectedRoute.TravelRoute.Last().Stop;
            var recentStop = CommonComponent.Current.UB.History.GetRecentStop(selectedRoute);

            if (recentStop != null && recentStop != lastStop)
            {
                return(recentStop);
            }
            else
            {
                var stop = CommonComponent.Current.UB.History.TimetableEntries
                           //.Where(h => h.RouteID == selectedRoute.ID && h.StopID != lastStop.ID)
                           .Where(h => h.Route == selectedRoute && h.Stop != lastStop)
                           .GroupBy(x => x.Stop)
                           .Select(x => new { Stop = x.Key, Rating1 = x.Min(y => HistoryHelpers.DayPartDistance(y)), Rating2 = x.Sum(y => y.CurrentCount) })
                           .OrderByDescending(x => x.Rating2).OrderBy(x => x.Rating1)
                           .FirstOrDefault();
                if (stop != null && stop.Rating2 > StopHistoryCountLimit)
                {
                    return(stop.Stop);
                }
                else
                {
                    return(selectedRoute.TravelRoute.First().Stop);
                }
            }
        }
        public static Route BestRoute(RouteGroup selectedRouteGroup)
        {
            var recentEntry = CommonComponent.Current.UB.History.GetRecentRoute(selectedRouteGroup);

            if (recentEntry != null)
            {
                return(recentEntry.Route);
            }
            else
            {
                var route = CommonComponent.Current.UB.History.TimetableEntries
                            .Where(h => h.Route.RouteGroup == selectedRouteGroup)
                            .GroupBy(x => x.Route)
                            .Select(x => new { Route = x.Key, Rating1 = x.Min(y => HistoryHelpers.DayPartDistance(y)), Rating2 = x.Sum(y => y.CurrentCount) })
                            .OrderByDescending(x => x.Rating2).OrderBy(x => x.Rating1)
                            .FirstOrDefault();
                if (route != null && route.Rating2 > RouteHistoryCountLimit)
                {
                    return(route.Route);
                }
                else
                {
                    return(selectedRouteGroup.Routes.First());
                }
            }
        }
 public static IEnumerable <StopGroup> GetPlanningHistory(bool isSource)
 {
     return(CommonComponent.Current.UB.History.SourceTargetEntries.Where(x => x.IsSource == isSource)
            .GroupBy(x => x.Stop)
            .Select(x => new { Stop = x.Key, Dist = x.Min(p => HistoryHelpers.DayPartDistance(p)), Count = x.Sum(p => p.RawCount) })
            .OrderByDescending(x => x.Count)
            .OrderBy(x => x.Dist)
            .Select(x => x.Stop)
            .Take(6));
 }
Exemple #4
0
        public void SetContent()
        {
            var favoriteList = CommonComponent.Current.UB.Favorites
                               .OrderBy(fav => fav.Position ?? -1)
                               .Select(x => new RouteStopModel {
                Route = x.Route, Stop = x.Stop
            })
                               .ToList();

            foreach (var item in favoriteList)
            {
                item.UpdateNextTrips();
            }
            Favorites.Clear();
            foreach (var fav in favoriteList)
            {
                Favorites.Add(fav);
            }
            base.OnPropertyChanged("FavoritesEmpty");
            base.OnPropertyChanged("FavoritesAny");

            rowCount = (int)Services.Resources.ValueOf("HistoryRowCount");

            var history = CommonComponent.Current.UB.History.TimetableEntries;

            History = history
                      .GroupBy(p => p.Route.RouteGroup)
                      .Select(x => new { RouteGroup = x.Key, Rating1 = x.Min(y => HistoryHelpers.DayPartDistance(y)), Rating2 = x.Sum(y => y.RawCount) })
                      .OrderByDescending(t => t.Rating2).OrderBy(t => t.Rating1)
                      .Select(t0 => t0.RouteGroup)
                      .Take(rowCount * 4)
                      .ToList();
            base.OnPropertyChanged("HistoryAny");

            var recent = CommonComponent.Current.UB.History.GetRecents();

            Recent = recent
                     .Select(x => x.Route.RouteGroup)
                     .Distinct()
                     .Take(rowCount)
                     .ToList();
            base.OnPropertyChanged("RecentAny");
            base.OnPropertyChanged("RecentHistory");
            //base.OnPropertyChanged("RecentEmpty");
        }
        public async void InitializePageState(object parameter)
        {
            route       = (RouteGroup)parameter;
            DataContext = this;

            await Task.Delay(25);

            if (route.FirstRoute != null)
            {
                Dir1Text.Text = route.FirstRoute.Name;
            }
            if (route.SecondRoute != null)
            {
                Dir2Text.Text = route.SecondRoute.Name;
            }

            bool even = true;

            //var stops = route.FirstRoute.StopTimes.Select(x => x.Item2).Union(route.SecondRoute.StopTimes.Select(x0 => x0.Item2));
            ListView.ItemsSource = App.UB.History.TimetableEntries
                                   .Where(item => item.Route.RouteGroup == route)
                                   .GroupBy(x => x.Stop)
                                   .Select(x => new
            {
                Stop     = x.Key,
                Rating1  = x.Min(y => HistoryHelpers.DayPartDistance(y)),
                Rating2  = x.Sum(y => y.RawCount),
                RouteDir = x.GroupBy(y => y.Route).MaxBy(y => y.Sum(z => z.RawCount)).Key
            })
                                   .OrderByDescending(x => x.Rating2).OrderBy(x => x.Rating1)
                                   .Take(5)
                                   .Select(s => new HistoryItem {
                Even = (even = !even), Stop = s.Stop, Route = s.RouteDir
            })
                                   .ToList();
        }
        public void SetContent()
        {
            var favoriteList = App.UB.Favorites
                               .OrderBy(fav => fav.Position ?? -1)
                               .Select(x => new RouteStopModel {
                Route = x.Route, Stop = x.Stop, Padding = 2
            })
                               .ToList();

            if (favoriteList.Count > 0)
            {
                foreach (var item in favoriteList)
                {
                    item.UpdateNextTrips();
                }

                FavoriteEmpty = false;
                FavoriteList.ItemsSource.Clear();
                FavoriteList.ItemsSource.AddObjectRange(favoriteList);
                FavoriteList.Height        = double.NaN;
                NoFavoritesText.Visibility = Visibility.Collapsed;
            }
            else
            {
                NoFavoritesText.Visibility = Visibility.Visible;
                FavoriteList.Height        = 0;
            }

            int rowCount = (int)Math.Floor(Application.Current.Host.Content.ActualWidth / 100.0);
            var history  = App.UB.History.TimetableEntries;

            if (history.Count() > 0)
            {
                HistoryList.Height      = double.NaN;
                HistoryList.ItemsSource = history
                                          .GroupBy(p => p.Route.RouteGroup)
                                          .Select(x => new { RouteGroup = x.Key, Rating1 = x.Min(y => HistoryHelpers.DayPartDistance(y)), Rating2 = x.Sum(y => y.RawCount) })
                                          .OrderByDescending(t => t.Rating2).OrderBy(t => t.Rating1)
                                          .Select(t0 => t0.RouteGroup)
                                          .Take(rowCount * 4)
                                          .ToList();
            }
            else
            {
                HistoryList.Height = 0;
            }

            var recent = App.UB.History.GetRecents().ToList();

            if (recent.Count > 0)
            {
                RecentList.Height      = double.NaN;
                RecentLabel.Visibility = Visibility.Visible;
                RecentList.ItemsSource = recent
                                         .Select(x => x.Route.RouteGroup)
                                         .Distinct()
                                         .Take(rowCount)
                                         .ToList();
            }
            else
            {
                RecentList.Height      = 0;
                RecentLabel.Visibility = Visibility.Collapsed;
            }
        }
        public async Task SetContent(bool full, Func <object, bool> searchFilter = null)
        {
            searchFilter = searchFilter ?? (o => true);

            if (SearchText.Text.Length == 0)
            {
                var history = await Task.Run(() =>
                                             App.UB.History.StopEntries
                                             .GroupBy(p => p.Stop)
                                             .Select(x => Tuple.Create(x.Key, x.Min(e => HistoryHelpers.DayPartDistance(e)), x.Sum(p => p.RawCount)))
                                             .OrderByDescending(t => t.Item3)
                                             .OrderBy(t => t.Item2)
                                             );

                ClearContent();
                CategorySelector.Visibility = Visibility.Visible;
                HistoryList.Visibility      = Visibility.Visible;
                HistoryList.ItemsSource     = history.Select(t => new StopModel(t.Item1)).Take(8).ToArray();
                ResetSearchResult();
            }
            else
            {
                IEnumerable <StopModel>  stops  = new StopModel[0];
                IEnumerable <RouteGroup> routes = new RouteGroup[0];
                string searchText = SearchText.Text;

                if (searchText.Length > 0)
                {
                    routes = await Task.Run(() =>
                                            App.Model.FindRoutes(searchText)
                                            .OrderByText(r => r.Name)
                                            .ToList()
                                            );
                }

                if (searchText.Length >= 3)
                {
                    //elvileg nem teljesen pontos, mert lehetnek azonos route-ok a szummában de közelítésnek megteszi
                    //+ A megálló végállomásként is számít
                    stops = await Task.Run(() =>
                                           App.Model
                                           .FindStops(searchText)
                                           .Select(s => new StopModel(s, true, true))
                                           .OrderByText(s => s.Name)
                                           .OrderByDescending(s => s.RouteCount)
                                           .OrderBy(s => s.HighestPriority)
                                           .ToList()
                                           );
                }

                ClearContent();
                if (stops.Take(1).Count() == 0)
                {
                    RouteList.Visibility  = Visibility.Visible;
                    RouteList.ItemsSource = full ? routes.Where(o => searchFilter(o)).ToList() : routes.Take(5).ToList();
                }
                else if (routes.Take(1).Count() == 0)
                {
                    var stops1 = full ? stops.ToList() : stops.Take(5).ToList();
                    StopList.Visibility  = Visibility.Visible;
                    StopList.ItemsSource = stops1.Where(searchFilter).ToList();
                }
                else
                {
                    var firstRoutes    = routes.Where(r => r.Name.Normalize().Contains(searchText.Normalize())).Cast <object>().ToList();
                    var lastRoutes     = routes.Cast <object>().Except(firstRoutes);
                    var routesAndStops = firstRoutes.Concat(stops).Concat(lastRoutes).ToList();
                    RouteStopList.Visibility  = Visibility.Visible;
                    RouteStopList.ItemsSource = full ? routesAndStops.Where(searchFilter).ToList() : routesAndStops.Take(5).ToList();
                }
                SetSearchResult(stops.Select(s => s.Stop), routes);
            }
        }
Exemple #8
0
        public async Task SetContent(bool full)
        {
            if (SearchText.Text.Length == 0)
            {
                var history = await Task.Run(() =>
                                             App.UB.History.StopEntries
                                             .GroupBy(p => p.Stop)
                                             .Select(x => Tuple.Create(x.Key, x.Min(e => HistoryHelpers.DayPartDistance(e)), x.Sum(p => p.RawCount)))
                                             .OrderByDescending(t => t.Item3)
                                             .OrderBy(t => t.Item2)
                                             );

                ClearContent();
                CategorySelector.Visibility = Visibility.Visible;
                HistoryList.Visibility      = Visibility.Visible;
                HistoryList.ItemsSource     = history.Select(t => new StopModel(t.Item1)).Take(8).ToArray();
                SearchList.ResetSearchResult();
            }
            else
            {
                ClearContent();
                await SearchList.SetContent(SearchText.Text, full);

                SearchList.Visibility = Visibility.Visible;
            }
        }