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)); }
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); } }
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; } }