public static void NavigateToRouteStopPage(Page sourcePage, Route route, StopGroup stop) { Frame frame = sourcePage != null ? sourcePage.Frame : (Frame)Window.Current.Content; if (App.Config.DefaultRouteStopPage == DefaultPageType.TimetablePage) { frame.Navigate(typeof(TimetablePage), new TimetableParameter { Stop = stop, Route = route }); } else if (App.Config.DefaultRouteStopPage == DefaultPageType.TripPage) { var trip = TransitProvider.GetCurrentTrips(DateTime.Now, route, stop, 0, 1).SingleOrDefault(); if (trip != null) { frame.Navigate(typeof(TripPage), new TripParameter { Stop = stop, Trip = trip.Item2, NextTrips = true }); } else { frame.Navigate(typeof(TimetablePage), new TimetableParameter { Stop = stop, Route = route }); } } }
public void SetNextArrive(DateTime startTime) { DateTime nextStartTime = NextTripTime != null ? NextTripTime.Value + TimeSpan.FromMinutes(1) : startTime + WalkTime; var firstTrip = TransitProvider.GetCurrentTrips(nextStartTime, Route, Stop, 0, 1).Single(); if (firstTrip != null) { DateTime nextTime = firstTrip.Item1; if (nextTime - startTime < TimeSpan.FromMinutes(100)) { NextTrip = firstTrip.Item2; NextTripTime = nextTime; NextTime = (int)Math.Ceiling((nextTime - startTime).TotalMinutes); } else { NextTrip = null; NextTripTime = null; NextTime = null; } HasAnyTrip = true; } else { HasAnyTrip = false; } }
private void setNextTripsAtTime(DateTime time, DateTime referenceTime) { var trips = TransitProvider.GetCurrentTrips(time, Trip.Route, Stop, 1, 3, limit: TimeSpan.FromDays(1)); var newHeaderSource = new TabHeaderText[4]; for (int i = 0; i < newHeaderSource.Length; i++) { newHeaderSource[i] = new TabHeaderText(); if (trips[i] != null) { DateTime time0 = trips[i].Item1; double mins = Math.Ceiling((trips[i].Item1 - referenceTime).TotalMinutes); newHeaderSource[i].PrimaryLine = time0.ShortTimeString(); newHeaderSource[i].SecondaryLine = ((mins >= 0) ? "+" : "") + mins + "'"; newHeaderSource[i].Tag = trips[i]; } else { newHeaderSource[i].PrimaryLine = ""; newHeaderSource[i].SecondaryLine = ""; newHeaderSource[i].Tag = null; } } this.HeaderSource = newHeaderSource; }
public async Task ReverseDirection(Route targetRoute = null) { //if (TimeStripGrid.Visibility == Visibility.Visible) var routes = Trip.Route.RouteGroup.Routes; if (routes.Count == 1) { return; } var nextRoute = targetRoute ?? routes[(routes.IndexOf(Trip.Route) + 1) % routes.Count]; var nextStop = Stop.OppositeOn(nextRoute); var tripTime = TransitProvider.GetCurrentTrips(DateTime, nextRoute, nextStop, 0, 1).Single(); if (tripTime == null) { return; } this.Trip = tripTime.Item2; this.Stop = nextStop; if (Trip.Stops.Last().Item2.Group == Stop) { this.Stop = Trip.Stops.First().Item2.Group; } await setNextTrips(DateTime); this.HeaderSelectedIndex = 1; this.Trip = (this.HeaderSource[1].Tag as Tuple <DateTime, Trip>).Item2; this.IsBarrierFree = Trip.WheelchairAccessible ?? false; setAmPmText(); setItemsSource(getTripStopsList(DateTime)); this.HeadsignText = Trip.GetNameAt(Stop, NextTripTime); //TODO továbbfejlesztési lehetőség: A visszafele irányú járat a mostani irányba közlekedő járathoz időben legközelebb eső járat legyen és az a header listának ne a második eleme legyen.. }
public void UpdateNextTrips() { string paddingText = new string(Enumerable.Repeat(' ', Padding).ToArray()); NextTrips = TransitProvider.GetCurrentTrips(DateTime.Now, Route, Stop, 1, 4) .Select(x => x != null ? x.Item1.ShortTimeString() + paddingText : "") .ToArray(); //if (int.Parse(DateTime.Now.ToShortTimeString().Split(':')[0]) >= 20) if (!Route.RouteGroup.GetNames().IsVeryLongNameVisible&& NextTrips.Count(h => h.Cast <char>().Count(ch => char.IsDigit(ch)) > 3) >= 3) { NextTrips[4] = ""; } AreNextVisibles = NextTrips.Select(t => t != "").ToArray(); if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("NextTrips")); PropertyChanged(this, new PropertyChangedEventArgs("AreNextVisibles")); } }
public override void Initialize(TimetableParameter timetableParam) { if (timetableParam.Stop == null) { timetableParam.Stop = timetableParam.Route.TravelRoute.First().Stop; NoInitialStop = true; } Timetable = new TimetableViewModel(); Timetable.Initialize(timetableParam); AddTasksToSchedule(Timetable.TasksToSchedule); var nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 0, 1).Single(); if (nextTrip == null) { nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 1, 0).Single(); } if (nextTrip == null) { nextTrip = Tuple.Create(DateTime.Now, timetableParam.Route.Trips.First()); } this.TripParam = new TripParameter { Trip = nextTrip.Item2, Stop = timetableParam.Stop, DateTime = timetableParam.SelectedTime }; Trip = new TripViewModel(); Trip.Initialize(TripParam); AddTasksToSchedule(Trip.TasksToSchedule); setTripList(); Trip.PropertyChanged += (sender, args) => { if (args.PropertyName == "ItemsSource") { setTripList(); } }; }
private TimeTableBodySource calculateBodyContent(DateTime selectedDate) { DateTime dateNow = SelectedTime ?? DateTime.Now; var nextArrival = (TransitProvider.GetCurrentTrips(dateNow, Route, Stop, 0, 1).SingleOrDefault() ?? Tuple.Create(DateTime.Now, (Trip)null)).Item1; var list = new List <TimeTableBodyHourGroup>(); if (ShowNeighborDays) { //tegnapi járatok: if (DateTime.Now.Hour < 2 && selectedDate == DateTime.Today || DateTime.Now.Hour >= 22 && selectedDate == DateTime.Today + TimeSpan.FromDays(1)) { var yesterdayLast2Hour = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate - TimeSpan.FromDays(1)).Where(t => t.Item1.Hour >= 22); if (yesterdayLast2Hour.Count() > 0) { list.Add(new TimeTableBodyLabelGroup { Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableYesterday") : Services.Resources.LocalizedStringOf("TimeTablePreviousDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost") }); list.AddRange(createListFromTimetable(yesterdayLast2Hour, nextArrival)); list.Add(new TimeTableBodyLabelGroup { Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableToday") : Services.Resources.LocalizedStringOf("TimeTableThisDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost") }); } } } //mai járatok: var timeTable = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate); list.AddRange(createListFromTimetable(timeTable, nextArrival)); if (ShowNeighborDays) { //holnapi járatok: if (DateTime.Now.Hour >= 22 && selectedDate == DateTime.Today || DateTime.Now.Hour < 2 && selectedDate == DateTime.Today - TimeSpan.FromDays(1)) { var tomorrowFirst2Hour = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate + TimeSpan.FromDays(1)).Where(t => t.Item1.Hour < 2); if (tomorrowFirst2Hour.Count() > 0) { list.Add(new TimeTableBodyLabelGroup { Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableTomorrow") : Services.Resources.LocalizedStringOf("TimeTableNextDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost") }); list.AddRange(createListFromTimetable(tomorrowFirst2Hour, nextArrival)); } } } //görgessünk a következő indulás járata fölé var nextHour = list.SingleOrDefault(hour => hour.Trips.Any(t => t.Time == nextArrival)); TimeTableBodyHourGroup scrollTarget = null; if (nextHour != null) { int index = Math.Max(0, list.IndexOf(nextHour) - 1); while (index > 0 && list[index] is TimeTableBodyLabelGroup) { index--; } scrollTarget = list[index]; } else { scrollTarget = null; } return(new TimeTableBodySource { HourList = list, ScrollTarget = scrollTarget }); }