@opentripplanner/core-utils 4.7.1 → 4.8.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/map.js CHANGED
@@ -73,7 +73,7 @@ export function matchLatLon(location1, location2) {
73
73
  * @returns An itinerary in the transitive.js format.
74
74
  */
75
75
 
76
- export function itineraryToTransitive(itin, companies, getRouteLabel) {
76
+ export function itineraryToTransitive(itin, companies, getRouteLabel, disableFlexArc) {
77
77
  var _tdata$routes, _tdata$stops;
78
78
 
79
79
  var tdata = {
@@ -247,7 +247,7 @@ export function itineraryToTransitive(itin, companies, getRouteLabel) {
247
247
  tdata.patterns.push(pattern); // add the pattern reference to the journey object
248
248
 
249
249
  journey.segments.push({
250
- arc: isFlex(leg),
250
+ arc: typeof disableFlexArc === "undefined" ? isFlex(leg) : !disableFlexArc,
251
251
  type: "TRANSIT",
252
252
  patterns: [{
253
253
  pattern_id: ptnId,
package/esm/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.js"],"names":["moment","getPlaceName","isTransit","isFlex","toSentenceCase","latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc: isFlex(leg),\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
1
+ {"version":3,"sources":["../src/map.js"],"names":["moment","getPlaceName","isTransit","isFlex","toSentenceCase","latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","disableFlexArc","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(\n itin,\n companies,\n getRouteLabel,\n disableFlexArc\n) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc:\n typeof disableFlexArc === \"undefined\" ? isFlex(leg) : !disableFlexArc,\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
package/lib/map.js CHANGED
@@ -100,7 +100,7 @@ function matchLatLon(location1, location2) {
100
100
  */
101
101
 
102
102
 
103
- function itineraryToTransitive(itin, companies, getRouteLabel) {
103
+ function itineraryToTransitive(itin, companies, getRouteLabel, disableFlexArc) {
104
104
  const tdata = {
105
105
  journeys: [],
106
106
  streetEdges: [],
@@ -272,7 +272,7 @@ function itineraryToTransitive(itin, companies, getRouteLabel) {
272
272
  tdata.patterns.push(pattern); // add the pattern reference to the journey object
273
273
 
274
274
  journey.segments.push({
275
- arc: (0, _itinerary.isFlex)(leg),
275
+ arc: typeof disableFlexArc === "undefined" ? (0, _itinerary.isFlex)(leg) : !disableFlexArc,
276
276
  type: "TRANSIT",
277
277
  patterns: [{
278
278
  pattern_id: ptnId,
package/lib/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.js"],"names":["latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc: isFlex(leg),\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
1
+ {"version":3,"sources":["../src/map.js"],"names":["latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","disableFlexArc","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(\n itin,\n companies,\n getRouteLabel,\n disableFlexArc\n) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc:\n typeof disableFlexArc === \"undefined\" ? isFlex(leg) : !disableFlexArc,\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentripplanner/core-utils",
3
- "version": "4.7.1",
3
+ "version": "4.8.0-alpha.1",
4
4
  "description": "Core functionality that is shared among numerous UI components",
5
5
  "engines": {
6
6
  "node": ">=13"
package/src/map.js CHANGED
@@ -78,7 +78,12 @@ export function matchLatLon(location1, location2) {
78
78
  * and returns a string representing the route label to display for that leg.
79
79
  * @returns An itinerary in the transitive.js format.
80
80
  */
81
- export function itineraryToTransitive(itin, companies, getRouteLabel) {
81
+ export function itineraryToTransitive(
82
+ itin,
83
+ companies,
84
+ getRouteLabel,
85
+ disableFlexArc
86
+ ) {
82
87
  const tdata = {
83
88
  journeys: [],
84
89
  streetEdges: [],
@@ -274,7 +279,8 @@ export function itineraryToTransitive(itin, companies, getRouteLabel) {
274
279
 
275
280
  // add the pattern reference to the journey object
276
281
  journey.segments.push({
277
- arc: isFlex(leg),
282
+ arc:
283
+ typeof disableFlexArc === "undefined" ? isFlex(leg) : !disableFlexArc,
278
284
  type: "TRANSIT",
279
285
  patterns: [
280
286
  {