Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pattern viewer configuration and styling #1336

Merged
merged 10 commits into from
Jan 23, 2025
2 changes: 2 additions & 0 deletions example-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,8 @@ disableSingleItineraryDays: false
# # Whether to render routes within flex zones of a route's patterns. If set to true,
# # routes will not be rendered within flex zones.
# hideRouteShapesWithinFlexZones: true
# # Setting to sort routes by the number of vehicles on each pattern
# sortRoutePatternsByVehicleCount: true
# # Disable vehicle highlight if necessary (e.g. custom or inverted icons)
# vehicleIconHighlight: true
# # Customize vehicle icon padding (the default iconPadding is 2px in otp-ui)
Expand Down
31 changes: 29 additions & 2 deletions lib/components/viewers/route-details.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import React, { Component } from 'react'
import styled from 'styled-components'

import * as uiActions from '../../actions/ui'
import { AppReduxState } from '../../util/state-types'
import { DEFAULT_ROUTE_COLOR } from '../util/colors'
import { extractMainHeadsigns, PatternSummary } from '../../util/pattern-viewer'
import { getOperatorName } from '../../util/state'
Expand Down Expand Up @@ -47,6 +48,11 @@ const PatternSelectDropdown = styled(Dropdown)`
span.caret {
color: #333;
}

ul li button span {
width: 100%;
display: block;
}
`

interface Props {
Expand All @@ -57,6 +63,7 @@ interface Props {
setHoveredStop: (id: string | null) => void
setViewedRoute: SetViewedRouteHandler
setViewedStop: SetViewedStopHandler
sortPatternsByVehicleCount: boolean
}

class RouteDetails extends Component<Props> {
Expand Down Expand Up @@ -87,7 +94,14 @@ class RouteDetails extends Component<Props> {
}

render() {
const { intl, operator, patternId, route, setHoveredStop } = this.props
const {
intl,
operator,
patternId,
route,
setHoveredStop,
sortPatternsByVehicleCount
} = this.props
const { agency, patterns = {}, shortName, url } = route
const pattern = patterns[patternId]

Expand All @@ -100,6 +114,7 @@ class RouteDetails extends Component<Props> {
shortName,
this._editHeadsign
).sort((a, b) => {
if (!sortPatternsByVehicleCount) return 0
// sort by number of vehicles on that pattern
const aVehicleCount =
route.vehicles?.filter((vehicle) => vehicle.patternId === a.id)
Expand Down Expand Up @@ -231,11 +246,23 @@ class RouteDetails extends Component<Props> {
}
}

const mapStateToProps = (state: AppReduxState) => {
const sortRoutePatternsByVehicleCount =
state.otp.config.routeViewer?.sortRoutePatternsByVehicleCount

return {
sortPatternsByVehicleCount: sortRoutePatternsByVehicleCount !== false
}
}

// connect to redux store
const mapDispatchToProps = {
setHoveredStop: uiActions.setHoveredStop,
setViewedRoute: uiActions.setViewedRoute,
setViewedStop: uiActions.setViewedStop
}

export default connect(null, mapDispatchToProps)(injectIntl(RouteDetails))
export default connect(
mapStateToProps,
mapDispatchToProps
)(injectIntl(RouteDetails))
5 changes: 2 additions & 3 deletions lib/components/viewers/styled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ export const PatternContainer = styled.div`
background-color: inherit;
color: inherit;
display: flex;
gap: 16px;
justify-content: flex-start;
justify-content: space-between;
margin: 0;
padding: 8px;

Expand All @@ -48,7 +47,7 @@ export const PatternContainer = styled.div`
// Styling for SortResultsDropdown

& > span {
width: 85%;
width: 80%;

button#headsign-selector-label {
align-items: center;
Expand Down
2 changes: 2 additions & 0 deletions lib/util/config-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,8 @@ export interface RouteViewerConfig {
maxRealtimeVehicleAge?: number
/** Use OTP date limiting to only show current service week in list */
onlyShowCurrentServiceWeek?: boolean
/** Setting to sort routes by the number of vehicles on each pattern */
sortRoutePatternsByVehicleCount?: boolean
/** Disable vehicle highlight if necessary (e.g. custom or inverted icons) */
vehicleIconHighlight?: boolean
/** Customize vehicle icon padding (the default iconPadding is 2px in otp-ui) */
Expand Down
Loading