@@ -15,6 +15,7 @@ export default class GtfsSearch extends Component {
1515 }
1616
1717 static defaultProps = {
18+ autoload : false , // prevent options from auto-loading, esp. when rendering multiple
1819 entities : [ 'routes' , 'stops' ] ,
1920 minimumInput : 1
2021 }
@@ -43,18 +44,19 @@ export default class GtfsSearch extends Component {
4344 }
4445
4546 _getRoutes = ( input ) => {
46- const feedIds = this . props . feeds . map ( getFeedId )
47+ const { feeds, filterByStop} = this . props
48+ const feedIds = feeds . map ( getFeedId )
4749
4850 if ( ! feedIds . length ) return [ ]
4951
5052 // don't need to use limit here
51- // const limit = this.props. limit ? '&limit=' + this.props. limit : ''
53+ // const limit = limit ? '&limit=' + limit : ''
5254 const nameQuery = input ? '&name=' + input : ''
53- const url = this . props . filterByStop ? `/api/manager/routes?stop=${ this . props . filterByStop . stop_id } &feed=${ feedIds . toString ( ) } ` : `/api/manager/routes?feed=${ feedIds . toString ( ) } ${ nameQuery } `
55+ const url = filterByStop
56+ ? `/api/manager/routes?stop=${ filterByStop . stop_id } &feed=${ feedIds . toString ( ) } `
57+ : `/api/manager/routes?feed=${ feedIds . toString ( ) } ${ nameQuery } `
5458 return fetch ( url )
55- . then ( ( response ) => {
56- return response . json ( )
57- } )
59+ . then ( ( response ) => response . json ( ) )
5860 . then ( ( routes ) => {
5961 const routeOptions = routes !== null && routes . length > 0
6062 ? routes . sort ( ( a , b ) => {
@@ -65,14 +67,7 @@ export default class GtfsSearch extends Component {
6567 } else {
6668 return bRouteName . startsWith ( input ) ? 1 : aRouteName . localeCompare ( bRouteName )
6769 }
68- // return 0
69- } ) . map ( route => (
70- {
71- route,
72- value : route . route_id ,
73- label : `${ this . getRouteName ( route ) } (${ route . route_id } )` ,
74- agency : getFeed ( this . props . feeds , route . feed_id ) }
75- ) )
70+ } ) . map ( this . _routeToOption )
7671 : [ ]
7772 return routeOptions
7873 } )
@@ -89,11 +84,11 @@ export default class GtfsSearch extends Component {
8984
9085 const limit = this . props . limit ? '&limit=' + this . props . limit : ''
9186 const nameQuery = input ? '&name=' + input : ''
92- const url = this . props . filterByRoute ? `/api/manager/stops?route=${ this . props . filterByRoute . route_id } &feed=${ feedIds . toString ( ) } ${ limit } ` : `/api/manager/stops?feed=${ feedIds . toString ( ) } ${ nameQuery } ${ limit } `
87+ const url = this . props . filterByRoute
88+ ? `/api/manager/stops?route=${ this . props . filterByRoute . route_id } &feed=${ feedIds . toString ( ) } ${ limit } `
89+ : `/api/manager/stops?feed=${ feedIds . toString ( ) } ${ nameQuery } ${ limit } `
9390 return fetch ( url )
94- . then ( ( response ) => {
95- return response . json ( )
96- } )
91+ . then ( ( response ) => response . json ( ) )
9792 . then ( ( stops ) => {
9893 const stopOptions = stops !== null && stops . length > 0
9994 ? stops . sort ( ( a , b ) => {
@@ -104,16 +99,7 @@ export default class GtfsSearch extends Component {
10499 } else {
105100 return bStopName . startsWith ( input ) ? 1 : aStopName . localeCompare ( bStopName )
106101 }
107- } ) . map ( stop => {
108- const agency = getFeed ( this . props . feeds , stop . feed_id )
109- const id = stop . stop_code ? stop . stop_code : stop . stop_id
110- return {
111- stop,
112- value : stop . stop_id ,
113- label : `${ stop . stop_name } (${ id } )` ,
114- agency : agency
115- }
116- } )
102+ } ) . map ( this . _stopToOption )
117103 : [ ]
118104 return stopOptions
119105 } )
@@ -123,6 +109,26 @@ export default class GtfsSearch extends Component {
123109 } )
124110 }
125111
112+ _routeToOption = route => (
113+ {
114+ route,
115+ value : route . route_id ,
116+ label : `${ this . getRouteName ( route ) } (${ route . route_id } )` ,
117+ agency : getFeed ( this . props . feeds , route . feed_id )
118+ }
119+ )
120+
121+ _stopToOption = stop => {
122+ const agency = getFeed ( this . props . feeds , stop . feed_id )
123+ const id = stop . stop_code ? stop . stop_code : stop . stop_id
124+ return {
125+ stop,
126+ value : stop . stop_id ,
127+ label : `${ stop . stop_name } (${ id } )` ,
128+ agency
129+ }
130+ }
131+
126132 getRouteName = ( route ) => {
127133 const routeName = route . route_short_name && route . route_long_name
128134 ? `${ route . route_short_name } - ${ route . route_long_name } `
@@ -163,7 +169,8 @@ export default class GtfsSearch extends Component {
163169 }
164170
165171 render ( ) {
166- const placeholder = this . props . placeholder || 'Begin typing to search for ' + this . props . entities . join ( ' or ' ) + '...'
172+ const { entities, placeholder : propsPlaceholder } = this . props
173+ const placeholder = propsPlaceholder || 'Begin typing to search for ' + entities . join ( ' or ' ) + '...'
167174 return (
168175 < Select . Async
169176 { ...this . props }
0 commit comments