Reverse geocoding of minor stops to street names
[bus.git] / busui / schedule_viewer.py
blob:a/busui/schedule_viewer.py -> blob:b/busui/schedule_viewer.py
--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -256,7 +256,12 @@
     schedule = self.server.schedule
     result = []
     for r in schedule.GetRouteList():
-      result.append( (r.route_id, r.route_short_name, r.route_long_name) )
+      servicep = None
+      for t in schedule.GetTripList():
+        if t.route_id == r.route_id:
+          servicep = t.service_period
+          break
+      result.append( (r.route_id, r.route_short_name, r.route_long_name, servicep.service_id) )
     result.sort(key = lambda x: x[1:3])
     return result
 
@@ -264,7 +269,17 @@
     schedule = self.server.schedule
     route = schedule.GetRoute(params.get('route', None))
     return [transitfeed.Route._FIELD_NAMES, route.GetFieldValuesTuple()]
-
+    
+  def handle_json_GET_routetrips(self, params):
+    """ Get a trip for a route_id (preferablly the next one) """
+    schedule = self.server.schedule
+    query = params.get('route_id', None).lower()
+    result = []
+    for t in schedule.GetTripList():
+      if t.route_id == query:
+        result.append ( (t.GetStartTime(), t.trip_id) )
+    return sorted(result, key=lambda trip: trip[0])
+  
   def handle_json_GET_triprows(self, params):
     """Return a list of rows from the feed file that are related to this
     trip."""
@@ -369,6 +384,7 @@
     schedule = self.server.schedule
     stop = schedule.GetStop(params.get('stop', None))
     time = int(params.get('time', 0))
+    service_period = params.get('service_period', None)
     time_trips = stop.GetStopTimeTrips(schedule)
     time_trips.sort()  # OPT: use bisect.insort to make this O(N*ln(N)) -> O(N)
     # Keep the first 15 after param 'time'.
@@ -397,8 +413,8 @@
         trip_name += route.route_long_name
       if headsign:
         trip_name += " (Direction: %s)" % headsign
-
-      result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
+      if service_period == None or trip.service_id == service_period:
+        result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
     return result
 
   def handle_GET_ttablegraph(self,params):