11import { connect } from 'react-redux'
22import { FormattedMessage , injectIntl , IntlShape } from 'react-intl'
33import { Itinerary } from '@opentripplanner/types'
4+ import coreUtils from '@opentripplanner/core-utils'
45import React , { Component } from 'react'
56
6- import * as apiActions from '../../actions/api'
77import * as formActions from '../../actions/form'
8+ import * as narrativeActions from '../../actions/narrative'
89import { AppReduxState } from '../../util/state-types'
9- import { getActiveItinerary , getActiveSearch } from '../../util/state'
10+ import {
11+ getActiveItineraries ,
12+ getActiveSearch ,
13+ getVisibleItineraryIndex
14+ } from '../../util/state'
1015import { summarizeQuery } from '../form/user-settings-i18n'
1116import { User } from '../user/types'
1217import DefaultMap from '../map/default-map'
@@ -19,7 +24,8 @@ type Props = {
1924 intl : IntlShape
2025 itinerary : Itinerary
2126 location ?: { search ?: string }
22- parseUrlQueryString : ( params ?: any , source ?: string ) => any
27+ parseUrlQueryString : ( params ?: any , source ?: string ) => void
28+ setVisibleItinerary : ( params : { index : number } ) => void
2329 user : User
2430}
2531
@@ -37,6 +43,23 @@ class PrintLayout extends Component<Props> {
3743 }
3844 }
3945
46+ componentDidUpdate ( ) {
47+ const { activeSearch, itinerary, setVisibleItinerary } = this . props
48+
49+ // Display the desired itinerary on map.
50+ if ( ! itinerary ) {
51+ const { ui_activeItinerary : uiActiveItinerary } =
52+ coreUtils . query . getUrlParams ( ) || { }
53+ if (
54+ activeSearch &&
55+ uiActiveItinerary !== undefined &&
56+ uiActiveItinerary !== '-1'
57+ ) {
58+ setVisibleItinerary ( { index : + uiActiveItinerary } )
59+ }
60+ }
61+ }
62+
4063 render ( ) {
4164 const { activeSearch, intl, itinerary, user } = this . props
4265 const printVerb = intl . formatMessage ( { id : 'common.forms.print' } )
@@ -68,16 +91,17 @@ const mapStateToProps = (state: AppReduxState) => {
6891 const activeSearch = getActiveSearch ( state )
6992 const { localUser, loggedInUser } = state . user
7093 const user = loggedInUser || localUser
94+ const itineraries = getActiveItineraries ( state )
7195 return {
7296 activeSearch,
73- itinerary : getActiveItinerary ( state ) as Itinerary ,
97+ itinerary : itineraries [ getVisibleItineraryIndex ( state ) ] as Itinerary ,
7498 user
7599 }
76100}
77101
78102const mapDispatchToProps = {
79103 parseUrlQueryString : formActions . parseUrlQueryString ,
80- routingQuery : apiActions . routingQuery
104+ setVisibleItinerary : narrativeActions . setVisibleItinerary
81105}
82106
83107export default connect (
0 commit comments