- {activePatternLocationGroups.map((locationGroup, index) => {
- if (!locationGroup.location_id || locationGroup.location_id.length === 0) return null
- const halts = typeof locationGroup.location_id === 'string' ? locationGroup.location_id.split(',') : locationGroup.location_id
- const activeHalts = halts.reduce((acc, halt) => {
- const potentialStop = stops.find(s => s.stop_id === halt)
- if (potentialStop) {
- acc.stops.push(potentialStop)
- }
-
- const potentialLocation = locations.find(l => l.location_id === halt)
- if (potentialLocation) {
- acc.locations.push(potentialLocation)
- }
-
- return acc
- }, {stops: [], locations: [], id: patternLocationGroups[index].id})
- // Render stops and locations separately, but fix the index and patternStop
- // to be a location group so that when you click it it opens the location group
- // also, disable the buttons in the popup
- return
- {activeHalts.stops.map(stop => {
- return (
-
- )
- })}
- {activeHalts.locations.map(location => {
- return (
-
- )
- })}
-
- })}
- {patternHalts.map((patternStop, index) => {
- const ps = patternHaltIsStop(patternStop)
- if (ps) {
- const { cpIndex, stopId } = ps
- const stop = activePatternStops.find((s) => s.stop_id === stopId)
- if (!stop) {
- console.warn(
- `Could not find stop for stopId: ${stopId}`,
- activePatternStops
- )
- return
- }
- if (
- editSettings.hideInactiveSegments &&
- cpIndex && (cpIndex > patternSegment + 1 || cpIndex < patternSegment - 1)
- ) {
- // Do not render pattern stop if hiding inactive segments and
- // pattern stop does not reference one of the adjacent control points.
- return null
- }
+ {patternStops.map((patternStop, index) => {
+ const matchedPatternStop = patternStopsWithControlPointIndexes.find(ps => ps.stopId === patternStop.stopId || ps.locationId === patternStop.locationId || ps.locationGroupId === patternStop.locationGroupId)
+ const {stopId, locationId, locationGroupId} = patternStop
+ const cpIndex = matchedPatternStop ? matchedPatternStop.cpIndex : null
+ const stop = activePatternStops.find(s => s && s.stop_id === stopId)
+ const location = activePatternLocations.find(l => l && l.location_id === locationId)
+ const locationGroup = activePatternLocationGroups.find(l => l && l.location_group_id === locationGroupId)
+ if (!stop && !location && !locationGroup) {
+ console.log(stop)
+ // $FlowFixMe
+ console.warn(`Could not find stop for stopId: ${stopId || locationId || locationGroupId}`, activePatternStops)
+ return
+ }
+ if (
+ editSettings.hideInactiveSegments &&
+ cpIndex &&
+ (cpIndex > patternSegment + 1 || cpIndex < patternSegment - 1)
+ ) {
+ // Do not render pattern stop if hiding inactive segments and
+ // pattern stop does not reference one of the adjacent control points.
+ return null
+ }
+ if (stop) {
return (
)
}
-
- const patternLocation = patternHaltIsLocation(patternStop)
- if (patternLocation) {
- const location = activePatternLocations.find(
- (l) => l.location_id === patternLocation.locationId
- )
- return (
-
- )
+ if (location) {
+ return
+ }
+ if (locationGroup) {
+ // FLEX TODO: support rendering location groups. will be tricky. need to
+ // grab location group stop data
+ return <>>
}
})}
diff --git a/lib/editor/components/pattern/AddPatternStopDropdown.js b/lib/editor/components/pattern/AddPatternStopDropdown.js
index 993b98e00..e6577e329 100644
--- a/lib/editor/components/pattern/AddPatternStopDropdown.js
+++ b/lib/editor/components/pattern/AddPatternStopDropdown.js
@@ -5,15 +5,14 @@ import React, {Component} from 'react'
import { Button, Dropdown, MenuItem } from 'react-bootstrap'
import * as stopStrategiesActions from '../../actions/map/stopStrategies'
-import type {GtfsLocation, GtfsStop, Pattern, PatternHalt, Style} from '../../../types'
-import { mergePatternHaltsOfPattern } from '../../../gtfs/util'
+import type {GtfsLocation, GtfsStop, Pattern, Style, PatternStop} from '../../../types'
type Props = {
activePattern: Pattern,
addStopToPattern: typeof stopStrategiesActions.addStopToPattern,
index?: number, // current pattern stop index (if dropdown shown for current pattern stop)
label?: string,
- patternStop?: PatternHalt, // optional current pattern stop
+ patternStop?: PatternStop, // optional current pattern stop
size?: string,
stop: GtfsStop | GtfsLocation,
style?: Style
@@ -33,13 +32,11 @@ export default class AddPatternStopDropdown extends Component