--- a/busui/schedule_viewer.py +++ b/busui/schedule_viewer.py @@ -88,8 +88,11 @@ def StopToTuple(stop): """Return tuple as expected by javascript function addStopMarkerFromList""" return (stop.stop_id, stop.stop_name, float(stop.stop_lat), - float(stop.stop_lon), stop.location_type) - + float(stop.stop_lon), stop.location_type, stop.stop_code) +def StopZoneToTuple(stop): + """Return tuple as expected by javascript function addStopMarkerFromList""" + return (stop.stop_id, stop.stop_name, float(stop.stop_lat), + float(stop.stop_lon), stop.location_type, stop.stop_code, stop.zone_id) class ScheduleRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_GET(self): @@ -256,7 +259,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 @@ -273,8 +281,6 @@ for t in schedule.GetTripList(): if t.route_id == query: result.append ( (t.GetStartTime(), t.trip_id) ) - """ UGH fails for 300s """ - """return result""" return sorted(result, key=lambda trip: trip[0]) def handle_json_GET_triprows(self, params): @@ -298,11 +304,11 @@ except KeyError: # if a non-existent trip is searched for, the return nothing return - time_stops = trip.GetTimeStops() + time_stops = trip.GetTimeInterpolatedStops() stops = [] times = [] - for arr,dep,stop in time_stops: - stops.append(StopToTuple(stop)) + for arr,ts,is_timingpoint in time_stops: + stops.append(StopToTuple(ts.stop)) times.append(arr) return [stops, times] @@ -363,7 +369,34 @@ query = params.get('q', None).lower() matches = [] for s in schedule.GetStopList(): - if s.stop_id.lower().find(query) != -1 or s.stop_name.lower().find(query) != -1: + if s.stop_name.lower().find(query) != -1 or s.stop_code.lower().find(query) != -1: + matches.append(StopToTuple(s)) + return matches + + def handle_json_GET_stopnamesearch(self, params): + schedule = self.server.schedule + query = params.get('q', None).lower() + matches = [] + for s in schedule.GetStopList(): + if s.stop_name.lower().find(query) != -1: + matches.append(StopToTuple(s)) + return matches + + def handle_json_GET_stopcodesearch(self, params): + schedule = self.server.schedule + query = params.get('q', None).lower() + matches = [] + for s in schedule.GetStopList(): + if s.stop_code.lower().find(query) != -1: + matches.append(StopToTuple(s)) + return matches + + def handle_json_GET_stopzonesearch(self, params): + schedule = self.server.schedule + query = params.get('q', None).lower() + matches = [] + for s in schedule.GetStopList(): + if s.zone_id != None and s.zone_id.lower().find(query) != -1: matches.append(StopToTuple(s)) return matches @@ -388,7 +421,6 @@ # Need make a tuple to find correct bisect point time_trips = time_trips[bisect.bisect_left(time_trips, (time, 0)):] time_trips = time_trips[:15] - # TODO: combine times for a route to show next 2 departure times result = [] for time, (trip, index), tp in time_trips: headsign = None @@ -408,8 +440,9 @@ if len(trip_name): trip_name += " - " trip_name += route.route_long_name - if headsign: - trip_name += " (Direction: %s)" % headsign + # comment out directions because we already have them in the long name + #if headsign: + # trip_name += " (Direction: %s)" % headsign if service_period == None or trip.service_id == service_period: result.append((time, (trip.trip_id, trip_name, trip.service_id), tp)) return result