@opentripplanner/core-utils 4.11.4 → 5.0.0
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/deprecated-with-types.js +47 -0
- package/esm/deprecated-with-types.js.map +1 -0
- package/esm/deprecated.js +7 -0
- package/esm/deprecated.js.map +1 -1
- package/esm/index.js +0 -4
- package/esm/index.js.map +1 -1
- package/esm/itinerary.js +3 -9
- package/esm/itinerary.js.map +1 -1
- package/esm/map.js +2 -1
- package/esm/map.js.map +1 -1
- package/esm/query-params.js +5 -12
- package/esm/query-params.js.map +1 -1
- package/esm/route.js +5 -3
- package/esm/route.js.map +1 -1
- package/esm/storage.js +1 -0
- package/esm/storage.js.map +1 -1
- package/esm/time.js +6 -36
- package/esm/time.js.map +1 -1
- package/esm/ui.js +1 -1
- package/esm/ui.js.map +1 -1
- package/lib/deprecated-with-types.d.ts +23 -0
- package/lib/deprecated-with-types.d.ts.map +1 -0
- package/lib/deprecated-with-types.js +61 -0
- package/lib/deprecated-with-types.js.map +1 -0
- package/lib/deprecated.js +9 -0
- package/lib/deprecated.js.map +1 -1
- package/lib/index.d.ts +19 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +0 -6
- package/lib/index.js.map +1 -1
- package/lib/itinerary.d.ts +113 -0
- package/lib/itinerary.d.ts.map +1 -0
- package/lib/itinerary.js +8 -9
- package/lib/itinerary.js.map +1 -1
- package/lib/map.d.ts +30 -0
- package/lib/map.d.ts.map +1 -0
- package/lib/map.js +1 -0
- package/lib/map.js.map +1 -1
- package/lib/query-params.js +4 -11
- package/lib/query-params.js.map +1 -1
- package/lib/route.d.ts +98 -0
- package/lib/route.d.ts.map +1 -0
- package/lib/route.js +5 -3
- package/lib/route.js.map +1 -1
- package/lib/storage.d.ts +19 -0
- package/lib/storage.d.ts.map +1 -0
- package/lib/storage.js +2 -0
- package/lib/storage.js.map +1 -1
- package/lib/time.d.ts +65 -0
- package/lib/time.d.ts.map +1 -0
- package/lib/time.js +22 -39
- package/lib/time.js.map +1 -1
- package/lib/ui.d.ts +13 -0
- package/lib/ui.d.ts.map +1 -0
- package/lib/ui.js +1 -1
- package/lib/ui.js.map +1 -1
- package/package.json +4 -1
- package/src/__tests__/__snapshots__/query.js.snap +0 -8
- package/src/__tests__/__snapshots__/route.js.snap +30 -30
- package/src/deprecated-with-types.ts +62 -0
- package/src/deprecated.js +16 -0
- package/src/{index.js → index.ts} +0 -4
- package/src/{itinerary.js → itinerary.ts} +72 -50
- package/src/{map.js → map.ts} +41 -20
- package/src/query-params.js +3 -11
- package/src/{route.js → route.ts} +52 -28
- package/src/{storage.js → storage.ts} +6 -5
- package/src/{time.js → time.ts} +28 -46
- package/src/{ui.js → ui.ts} +8 -8
- package/tsconfig.json +15 -0
- package/tsconfig.tsbuildinfo +4921 -0
- package/esm/messages.js +0 -25
- package/esm/messages.js.map +0 -1
- package/esm/types.js +0 -560
- package/esm/types.js.map +0 -1
- package/lib/messages.js +0 -29
- package/lib/messages.js.map +0 -1
- package/lib/types.js +0 -661
- package/lib/types.js.map +0 -1
- package/src/messages.js +0 -20
- package/src/types.js +0 -605
package/lib/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/map.js"],"names":["currentPositionToLocation","currentPosition","error","coords","console","warn","lat","latitude","lon","longitude","category","stringToCoords","str","split","map","c","constructLocation","latlng","lng","formatStoredPlaceName","location","withDetails","displayName","type","name","detailText","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","length","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 {\n getPlaceName,\n isTransit,\n isFlex,\n toSentenceCase,\n isAccessMode\n} from \"./itinerary\";\n\nimport {\n coordsToString,\n getDetailText,\n latlngToString,\n logDeprecationWarning\n} from \"./deprecated\";\n\nexport { coordsToString, getDetailText, latlngToString };\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 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 lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n if (withDetails) {\n logDeprecationWarning(\"the formatStoredPlaceName withDetails parameter\");\n }\n\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 // This string is not shown in the UI\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 (isAccessMode(leg.mode)) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n // TODO: does this need to change to be OTP2 compatible?\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 // This string is not shown in the UI\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 // This string is not shown in the UI\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"}
|
|
1
|
+
{"version":3,"sources":["../src/map.ts"],"names":["currentPositionToLocation","currentPosition","error","coords","console","warn","lat","latitude","lon","longitude","category","stringToCoords","str","split","map","c","constructLocation","latlng","lng","formatStoredPlaceName","location","withDetails","displayName","type","name","detailText","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","length","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","arc","hailedCar","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 {\n Company,\n Itinerary,\n LatLngArray,\n Leg,\n Location,\n TransitiveData,\n UserPosition\n} from \"@opentripplanner/types\";\nimport {\n getPlaceName,\n isAccessMode,\n isFlex,\n isTransit,\n toSentenceCase\n} from \"./itinerary\";\n\nimport {\n coordsToString,\n getDetailText,\n latlngToString,\n logDeprecationWarning\n} from \"./deprecated\";\n\nexport { coordsToString, getDetailText, latlngToString };\n\nexport function currentPositionToLocation(\n currentPosition: UserPosition\n): Location {\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 category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str: string): number[] {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng: {\n lat: number;\n lng: number;\n}): Location {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(\n location: Location,\n withDetails = true\n): string {\n if (withDetails) {\n logDeprecationWarning(\"the formatStoredPlaceName withDetails parameter\");\n }\n\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: Location, location2: Location): boolean {\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: Itinerary,\n companies: Company[],\n getRouteLabel: (leg: Leg) => string,\n disableFlexArc: boolean\n): TransitiveData {\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 // This string is not shown in the UI\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 (isAccessMode(leg.mode)) {\n let fromPlaceId: string;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n // TODO: does this need to change to be OTP2 compatible?\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 arc: false,\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 // This string is not shown in the UI\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 // This string is not shown in the UI\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\ntype TransitivePlaceRaw = {\n place_id: string;\n};\nexport function isBikeshareStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat: number): boolean {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng: number): boolean {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr: LatLngArray): boolean {\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/query-params.js
CHANGED
|
@@ -256,7 +256,8 @@ const queryParams = [{
|
|
|
256
256
|
}, {
|
|
257
257
|
/* optimize -- how to optimize a trip (non-bike, non-micromobility trips) */
|
|
258
258
|
name: "optimize",
|
|
259
|
-
|
|
259
|
+
// This parameter doesn't seem to do anything
|
|
260
|
+
applicable: () => false,
|
|
260
261
|
routingTypes: ["ITINERARY"],
|
|
261
262
|
default: "QUICK",
|
|
262
263
|
selector: "DROPDOWN",
|
|
@@ -276,7 +277,7 @@ const queryParams = [{
|
|
|
276
277
|
default: "SAFE",
|
|
277
278
|
selector: "DROPDOWN",
|
|
278
279
|
label: "Optimize for",
|
|
279
|
-
options:
|
|
280
|
+
options: () => {
|
|
280
281
|
const opts = [{
|
|
281
282
|
text: "Speed",
|
|
282
283
|
value: "QUICK"
|
|
@@ -286,15 +287,7 @@ const queryParams = [{
|
|
|
286
287
|
}, {
|
|
287
288
|
text: "Flat Trip",
|
|
288
289
|
value: "FLAT"
|
|
289
|
-
}];
|
|
290
|
-
|
|
291
|
-
if ((0, _itinerary.hasTransit)(query.mode)) {
|
|
292
|
-
opts.splice(1, 0, {
|
|
293
|
-
text: "Fewest Transfers",
|
|
294
|
-
value: "TRANSFERS"
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
|
|
290
|
+
}];
|
|
298
291
|
return opts;
|
|
299
292
|
},
|
|
300
293
|
itineraryRewrite: value => ({
|
package/lib/query-params.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/query-params.js"],"names":["formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","default","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","getCurrentDate","getCurrentTime","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","splice","optimize","low","high","step","labelLow","labelHigh","maxEScooterDistance","watts","maximumMicromobilitySpeed","weight","TYPICAL_RIDER_WEIGHT","icon","config","modes","configModes","concat","some","configMode","find","showWheelchairSetting","company","companies","includes","places","Array","isArray","intermediatePlaces","map","place","undefined","param","userDefaultOverride","getCustomQueryParams","customizations","clonedParams","Object","keys","k","paramIndex","findIndex"],"mappings":"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","sourcesContent":["// TODO: Remove this entire file, as it is deprecated in favor of i18n-queryParams within\n// the SettingsSelector package\n\n// This is only used within stories\nimport cloneDeep from \"lodash.clonedeep\";\nimport React from \"react\";\nimport { Wheelchair } from \"@styled-icons/foundation/Wheelchair\";\n\nimport {\n isTransit,\n isAccessMode,\n isCar,\n hasTransit,\n hasBike,\n hasMicromobility\n} from \"./itinerary\";\nimport { getItem } from \"./storage\";\nimport { getCurrentDate, getCurrentTime } from \"./time\";\n\n/**\n * name: the default name of the parameter used for internal reference and API calls\n *\n * routingTypes: array of routing type(s) (ITINERARY, PROFILE, or both) this param applies to\n *\n * applicable: an optional function (accepting the current full query as a\n * parameter) indicating whether this query parameter is applicable to the query.\n * (Applicability is assumed if this function is not provided.)\n *\n * default: the default value for this parameter. The default can be also be a\n * function that gets executed when accessing the default value.\n *\n * itineraryRewrite: an optional function for translating the key and/or value\n * for ITINERARY mode only (e.g. 'to' is rewritten as 'toPlace'). Accepts the\n * initial internal value as a function parameter.\n *\n * profileRewrite: an optional function for translating the value for PROFILE mode\n *\n * label: a text label for for onscreen display. May either be a text string or a\n * function (accepting the current full query as a parameter) returning a string\n *\n * selector: the default type of UI selector to use in the form. Can be one of:\n * - DROPDOWN: a standard drop-down menu selector\n *\n * options: an array of text/value pairs used with a dropdown selector\n *\n * TODO: validation system for rewrite functions and/or better user documentation\n * TODO: alphabetize below list\n */\n\n// FIXME: Use for parsing URL values?\n// const stringToLocation = string => {\n// const split = string.split(',')\n// return split.length === 2\n// ? {lat: split[0], lon: split[1]}\n// : {lat: null, lon: null}\n// }\n\n/**\n * Format location object as string for use in fromPlace or toPlace query param.\n */\nexport function formatPlace(location, alternateName) {\n if (!location) return null;\n const name =\n location.name ||\n `${alternateName ? `${alternateName} ` : \"\"}(${location.lat},${\n location.lon\n })`;\n // This string is not language-specific\n return `${name}::${location.lat},${location.lon}`;\n}\n\n// Load stored default query settings from local storage\nconst storedSettings = getItem(\"defaultQuery\", {});\n\nconst queryParams = [\n {\n /* from - the trip origin. stored internally as a location (lat/lon/name) object */\n name: \"from\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ fromPlace: formatPlace(value) }),\n profileRewrite: value => ({ from: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* to - the trip destination. stored internally as a location (lat/lon/name) object */\n name: \"to\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ toPlace: formatPlace(value) }),\n profileRewrite: value => ({ to: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* date - the date of travel, in MM-DD-YYYY format */\n name: \"date\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: getCurrentDate\n },\n\n {\n /* time - the arrival/departure time for an itinerary trip, in HH:mm format */\n name: \"time\",\n routingTypes: [\"ITINERARY\"],\n default: getCurrentTime\n },\n\n {\n /* departArrive - whether this is a depart-at, arrive-by, or leave-now trip */\n name: \"departArrive\",\n routingTypes: [\"ITINERARY\"],\n default: \"NOW\",\n itineraryRewrite: value => ({ arriveBy: value === \"ARRIVE\" })\n },\n\n {\n /* startTime - the start time for a profile trip, in HH:mm format */\n name: \"startTime\",\n routingTypes: [\"PROFILE\"],\n default: \"07:00\"\n },\n\n {\n /* endTime - the end time for a profile trip, in HH:mm format */\n name: \"endTime\",\n routingTypes: [\"PROFILE\"],\n default: \"09:00\"\n },\n\n {\n /* mode - the allowed modes for a trip, as a comma-separated list */\n name: \"mode\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: \"WALK,TRANSIT\", // TODO: make this dependent on routingType?\n profileRewrite: value => {\n const accessModes = [];\n const directModes = [];\n const transitModes = [];\n\n if (value && value.length > 0) {\n value.split(\",\").forEach(m => {\n if (isTransit(m)) transitModes.push(m);\n if (isAccessMode(m)) {\n accessModes.push(m);\n // TODO: make configurable whether direct-driving is considered\n if (!isCar(m)) directModes.push(m);\n }\n });\n }\n\n return { accessModes, directModes, transitModes };\n }\n },\n\n {\n /* showIntermediateStops - whether response should include intermediate stops for transit legs */\n name: \"showIntermediateStops\",\n routingTypes: [\"ITINERARY\"],\n default: true\n },\n\n {\n /* maxWalkDistance - the maximum distance in meters the user will walk to transit. */\n name: \"maxWalkDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !query.otp2 &&\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"WALK\") !== -1,\n default: 1609, // 1 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Walk\",\n options: [\n {\n text: \"1/10 mile\",\n value: 160.9\n },\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"5 miles\",\n value: 8047\n }\n ]\n },\n\n {\n /* maxBikeDistance - the maximum distance in meters the user will bike. Not\n * actually an OTP parameter (maxWalkDistance doubles for biking) but we\n * store it separately internally in order to allow different default values,\n * options, etc. Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxBikeDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Bike\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxBikeDistance: value\n })\n },\n\n {\n /* optimize -- how to optimize a trip (non-bike, non-micromobility trips) */\n name: \"optimize\",\n applicable: query =>\n !query.otp2 && hasTransit(query.mode) && !hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"QUICK\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n }\n ]\n },\n\n {\n /* optimizeBike -- how to optimize an bike-based trip */\n name: \"optimizeBike\",\n applicable: query => !query.otp2 && hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"SAFE\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: query => {\n const opts = [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Bike-Friendly Trip\",\n value: \"SAFE\"\n },\n {\n text: \"Flat Trip\",\n value: \"FLAT\"\n }\n ];\n\n // Include transit-specific option, if applicable\n if (hasTransit(query.mode)) {\n opts.splice(1, 0, {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n });\n }\n\n return opts;\n },\n itineraryRewrite: value => ({ optimize: value })\n },\n\n {\n /* maxWalkTime -- the maximum time the user will spend walking in minutes */\n name: \"maxWalkTime\",\n routingTypes: [\"PROFILE\"],\n default: 15,\n selector: \"DROPDOWN\",\n label: \"Max Walk Time\",\n applicable: query =>\n query.mode && hasTransit(query.mode) && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* walkSpeed -- the user's walking speed in m/s */\n name: \"walkSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 1.34,\n selector: \"DROPDOWN\",\n label: \"Walk Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"2 MPH\",\n value: 0.89\n },\n {\n text: \"3 MPH\",\n value: 1.34\n },\n {\n text: \"4 MPH\",\n value: 1.79\n }\n ]\n },\n\n {\n name: \"walkReluctance\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n selector: \"SLIDER\",\n low: 0.5,\n high: 20,\n step: 0.5,\n label: \"walk reluctance\",\n labelLow: \"More Walking\",\n labelHigh: \"More Transit\",\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !!query.otp2 && query.mode && query.mode.indexOf(\"WALK\") !== -1\n },\n {\n /* maxBikeTime -- the maximum time the user will spend biking in minutes */\n name: \"maxBikeTime\",\n routingTypes: [\"PROFILE\"],\n default: 20,\n selector: \"DROPDOWN\",\n label: \"Max Bike Time\",\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"bikeSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 3.58,\n selector: \"DROPDOWN\",\n label: \"Bicycle Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"6 MPH\",\n value: 2.68\n },\n {\n text: \"8 MPH\",\n value: 3.58\n },\n {\n text: \"10 MPH\",\n value: 4.47\n },\n {\n text: \"12 MPH\",\n value: 5.36\n }\n ]\n },\n\n {\n /* maxEScooterDistance - the maximum distance in meters the user will ride\n * an E-scooter. Not actually an OTP parameter (maxWalkDistance doubles for\n * any non-transit mode except for car) but we store it separately\n * internally in order to allow different default values, options, etc.\n * Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxEScooterDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode && hasTransit(query.mode) && hasMicromobility(query.mode),\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum E-scooter Distance\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxEScooterDistance: value\n })\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"watts\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 250,\n selector: \"DROPDOWN\",\n label: \"E-scooter Power\",\n // this configuration should only be allowed for personal E-scooters as these\n // settings will be defined by the vehicle type of an E-scooter being rented\n applicable: query =>\n query.mode &&\n query.mode.indexOf(\"MICROMOBILITY\") !== -1 &&\n query.mode.indexOf(\"MICROMOBILITY_RENT\") === -1 &&\n query.mode.indexOf(\"SCOOTER\") === -1,\n options: [\n {\n text: \"Kid's hoverboard (6mph)\",\n value: 125\n },\n {\n text: \"Entry-level scooter (11mph)\",\n value: 250\n },\n {\n text: \"Robust E-scooter (18mph)\",\n value: 500\n },\n {\n text: \"Powerful E-scooter (24mph)\",\n value: 1500\n }\n ],\n // rewrite a few other values to add some baseline assumptions about the\n // vehicle\n itineraryRewrite: value => {\n const watts = value;\n // the maximum cruising and downhill speed. Units in m/s\n let maximumMicromobilitySpeed;\n let weight;\n // see https://en.wikipedia.org/wiki/Human_body_weight#Average_weight_around_the_world\n // estimate is for an average North American human with clothes and stuff\n // units are in kg\n const TYPICAL_RIDER_WEIGHT = 90;\n switch (watts) {\n case 125:\n // exemplar: Swagtron Turbo 5 hoverboard (https://swagtron.com/product/recertified-swagtron-turbo-five-hoverboard-classic/)\n maximumMicromobilitySpeed = 2.8; // ~= 6mph\n weight = TYPICAL_RIDER_WEIGHT + 9;\n break;\n case 250:\n // exemplar: Xiaomi M365 (https://www.gearbest.com/skateboard/pp_596618.html)\n maximumMicromobilitySpeed = 5; // ~= 11.5mph\n weight = TYPICAL_RIDER_WEIGHT + 12.5;\n break;\n case 500:\n // exemplar: Razor EcoSmart Metro (https://www.amazon.com/Razor-EcoSmart-Metro-Electric-Scooter/dp/B002ZDAEIS?SubscriptionId=AKIAJMXJ2YFJTEDLQMUQ&tag=digitren08-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B002ZDAEIS&ascsubtag=15599460143449ocb)\n maximumMicromobilitySpeed = 8; // ~= 18mph\n weight = TYPICAL_RIDER_WEIGHT + 30;\n break;\n case 1000:\n // exemplar: Boosted Rev (https://boostedboards.com/vehicles/scooters/boosted-rev)\n maximumMicromobilitySpeed = 11; // ~= 24mph\n weight = TYPICAL_RIDER_WEIGHT + 21;\n break;\n default:\n break;\n }\n return { maximumMicromobilitySpeed, watts, weight };\n }\n },\n\n {\n /* ignoreRealtimeUpdates -- if true, do not use realtime updates in routing */\n name: \"ignoreRealtimeUpdates\",\n routingTypes: [\"ITINERARY\"],\n default: false\n },\n\n {\n /* companies -- tnc companies to query */\n name: \"companies\",\n routingTypes: [\"ITINERARY\"]\n },\n\n {\n /* wheelchair -- whether the user requires a wheelchair-accessible trip */\n name: \"wheelchair\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: false,\n selector: \"CHECKBOX\",\n label: \"Prefer Wheelchair Accessible Routes\",\n icon: <Wheelchair />,\n applicable: (query, config) => {\n if (!query.mode || !config.modes) return false;\n const configModes = (config.modes.accessModes || []).concat(\n config.modes.transitModes || []\n );\n return query.mode.split(\",\").some(mode => {\n const configMode = configModes.find(m => m.mode === mode);\n if (!configMode || !configMode.showWheelchairSetting) return false;\n if (\n configMode.company &&\n (!query.companies ||\n !query.companies.split(\",\").includes(configMode.company))\n )\n return false;\n return true;\n });\n }\n },\n\n {\n name: \"bannedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"numItineraries\",\n routingTypes: [\"ITINERARY\"],\n default: 3\n },\n {\n name: \"intermediatePlaces\",\n default: [],\n routingTypes: [\"ITINERARY\"],\n itineraryRewrite: places =>\n Array.isArray(places) && places.length > 0\n ? {\n intermediatePlaces: places.map(place => formatPlace(place))\n }\n : undefined\n },\n {\n // Time penalty in seconds the requester is willing to accept in order to\n // complete journey on preferred route. I.e., number of seconds that we are\n // willing to wait for the preferred route.\n name: \"otherThanPreferredRoutesPenalty\",\n default: 15 * 60, // 15 minutes\n routingTypes: [\"ITINERARY\"]\n },\n // Below are less commonly used query params included so that in case they are\n // passed in a query parameter they do not get filtered out from the ultimate\n // API request.\n {\n name: \"preferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxPreTransitTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveDistanceReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveTimeReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitAtBeginningFactor\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransferTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"preferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"walkBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStops\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStopsHard\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"transferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"nonpreferredTransferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxTransfers\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"batch\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitStopId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitTripId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"clampInitialWait\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"reverseOptimizeOnTheFly\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"boardSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"alightSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"locale\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableRemainingWeightHeuristic\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexFlagStopBufferSize\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseReservationServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseEligibilityServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexIgnoreDrtAdvanceBookMin\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"useRequestedDateTimeInMaxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableAlertFiltering\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"geoidElevation\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"invalidDateStrategy\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransitDistance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"searchTimeout\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"pathComparator\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"onlyTransitTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minimumMicromobilitySpeed\",\n routingTypes: [\"ITINERARY\"]\n }\n];\n// Iterate over stored settings and update query param defaults.\n// FIXME: this does not get updated if the user defaults are cleared\nqueryParams.forEach(param => {\n if (param.name in storedSettings) {\n param.default = storedSettings[param.name];\n param.userDefaultOverride = true;\n }\n});\n\nexport default queryParams;\n\n/**\n * You can customize the queryParams labels and options, and labels and values for each option.\n * @param customizations The optional customizations to apply: an object whose fields\n * correspond to the items in queryParams with the corresponding name,\n * the value for those fields being an object which fields (label, options...)\n * will override the originals.\n * Example:\n * {\n * // Matches the name param\n * maxWalkDistance: {\n * // Any fields that should be overridden go here\n * options: [\n * // ...new options\n * ],\n * default: 500,\n * label: \"max walk dist\"\n * }\n * }\n * @returns A copy of the default queryParams that has the given customizations applied.\n * If no customizations parameter is provided, returns the queryParams object itself.\n */\nexport function getCustomQueryParams(customizations) {\n if (!customizations) return queryParams;\n\n const clonedParams = cloneDeep(queryParams);\n Object.keys(customizations).forEach(k => {\n // Merge fields into the cloned object\n const paramIndex = clonedParams.findIndex(param => param.name === k);\n if (paramIndex !== -1) {\n clonedParams[paramIndex] = {\n ...clonedParams[paramIndex],\n ...customizations[k]\n };\n }\n });\n return clonedParams;\n}\n"],"file":"query-params.js"}
|
|
1
|
+
{"version":3,"sources":["../src/query-params.js"],"names":["formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","default","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","getCurrentDate","getCurrentTime","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","optimize","low","high","step","labelLow","labelHigh","maxEScooterDistance","watts","maximumMicromobilitySpeed","weight","TYPICAL_RIDER_WEIGHT","icon","config","modes","configModes","concat","some","configMode","find","showWheelchairSetting","company","companies","includes","places","Array","isArray","intermediatePlaces","map","place","undefined","param","userDefaultOverride","getCustomQueryParams","customizations","clonedParams","Object","keys","k","paramIndex","findIndex"],"mappings":"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","sourcesContent":["// TODO: Remove this entire file, as it is deprecated in favor of i18n-queryParams within\n// the SettingsSelector package\n\n// This is only used within stories\nimport cloneDeep from \"lodash.clonedeep\";\nimport React from \"react\";\nimport { Wheelchair } from \"@styled-icons/foundation/Wheelchair\";\n\nimport {\n isTransit,\n isAccessMode,\n isCar,\n hasTransit,\n hasBike,\n hasMicromobility\n} from \"./itinerary\";\nimport { getItem } from \"./storage\";\nimport { getCurrentDate, getCurrentTime } from \"./time\";\n\n/**\n * name: the default name of the parameter used for internal reference and API calls\n *\n * routingTypes: array of routing type(s) (ITINERARY, PROFILE, or both) this param applies to\n *\n * applicable: an optional function (accepting the current full query as a\n * parameter) indicating whether this query parameter is applicable to the query.\n * (Applicability is assumed if this function is not provided.)\n *\n * default: the default value for this parameter. The default can be also be a\n * function that gets executed when accessing the default value.\n *\n * itineraryRewrite: an optional function for translating the key and/or value\n * for ITINERARY mode only (e.g. 'to' is rewritten as 'toPlace'). Accepts the\n * initial internal value as a function parameter.\n *\n * profileRewrite: an optional function for translating the value for PROFILE mode\n *\n * label: a text label for for onscreen display. May either be a text string or a\n * function (accepting the current full query as a parameter) returning a string\n *\n * selector: the default type of UI selector to use in the form. Can be one of:\n * - DROPDOWN: a standard drop-down menu selector\n *\n * options: an array of text/value pairs used with a dropdown selector\n *\n * TODO: validation system for rewrite functions and/or better user documentation\n * TODO: alphabetize below list\n */\n\n// FIXME: Use for parsing URL values?\n// const stringToLocation = string => {\n// const split = string.split(',')\n// return split.length === 2\n// ? {lat: split[0], lon: split[1]}\n// : {lat: null, lon: null}\n// }\n\n/**\n * Format location object as string for use in fromPlace or toPlace query param.\n */\nexport function formatPlace(location, alternateName) {\n if (!location) return null;\n const name =\n location.name ||\n `${alternateName ? `${alternateName} ` : \"\"}(${location.lat},${\n location.lon\n })`;\n // This string is not language-specific\n return `${name}::${location.lat},${location.lon}`;\n}\n\n// Load stored default query settings from local storage\nconst storedSettings = getItem(\"defaultQuery\", {});\n\nconst queryParams = [\n {\n /* from - the trip origin. stored internally as a location (lat/lon/name) object */\n name: \"from\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ fromPlace: formatPlace(value) }),\n profileRewrite: value => ({ from: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* to - the trip destination. stored internally as a location (lat/lon/name) object */\n name: \"to\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ toPlace: formatPlace(value) }),\n profileRewrite: value => ({ to: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* date - the date of travel, in MM-DD-YYYY format */\n name: \"date\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: getCurrentDate\n },\n\n {\n /* time - the arrival/departure time for an itinerary trip, in HH:mm format */\n name: \"time\",\n routingTypes: [\"ITINERARY\"],\n default: getCurrentTime\n },\n\n {\n /* departArrive - whether this is a depart-at, arrive-by, or leave-now trip */\n name: \"departArrive\",\n routingTypes: [\"ITINERARY\"],\n default: \"NOW\",\n itineraryRewrite: value => ({ arriveBy: value === \"ARRIVE\" })\n },\n\n {\n /* startTime - the start time for a profile trip, in HH:mm format */\n name: \"startTime\",\n routingTypes: [\"PROFILE\"],\n default: \"07:00\"\n },\n\n {\n /* endTime - the end time for a profile trip, in HH:mm format */\n name: \"endTime\",\n routingTypes: [\"PROFILE\"],\n default: \"09:00\"\n },\n\n {\n /* mode - the allowed modes for a trip, as a comma-separated list */\n name: \"mode\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: \"WALK,TRANSIT\", // TODO: make this dependent on routingType?\n profileRewrite: value => {\n const accessModes = [];\n const directModes = [];\n const transitModes = [];\n\n if (value && value.length > 0) {\n value.split(\",\").forEach(m => {\n if (isTransit(m)) transitModes.push(m);\n if (isAccessMode(m)) {\n accessModes.push(m);\n // TODO: make configurable whether direct-driving is considered\n if (!isCar(m)) directModes.push(m);\n }\n });\n }\n\n return { accessModes, directModes, transitModes };\n }\n },\n\n {\n /* showIntermediateStops - whether response should include intermediate stops for transit legs */\n name: \"showIntermediateStops\",\n routingTypes: [\"ITINERARY\"],\n default: true\n },\n\n {\n /* maxWalkDistance - the maximum distance in meters the user will walk to transit. */\n name: \"maxWalkDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !query.otp2 &&\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"WALK\") !== -1,\n default: 1609, // 1 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Walk\",\n options: [\n {\n text: \"1/10 mile\",\n value: 160.9\n },\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"5 miles\",\n value: 8047\n }\n ]\n },\n\n {\n /* maxBikeDistance - the maximum distance in meters the user will bike. Not\n * actually an OTP parameter (maxWalkDistance doubles for biking) but we\n * store it separately internally in order to allow different default values,\n * options, etc. Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxBikeDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Bike\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxBikeDistance: value\n })\n },\n\n {\n /* optimize -- how to optimize a trip (non-bike, non-micromobility trips) */\n name: \"optimize\",\n // This parameter doesn't seem to do anything\n applicable: () => false,\n routingTypes: [\"ITINERARY\"],\n default: \"QUICK\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n }\n ]\n },\n\n {\n /* optimizeBike -- how to optimize an bike-based trip */\n name: \"optimizeBike\",\n applicable: query => !query.otp2 && hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"SAFE\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: () => {\n const opts = [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Bike-Friendly Trip\",\n value: \"SAFE\"\n },\n {\n text: \"Flat Trip\",\n value: \"FLAT\"\n }\n ];\n\n return opts;\n },\n itineraryRewrite: value => ({ optimize: value })\n },\n\n {\n /* maxWalkTime -- the maximum time the user will spend walking in minutes */\n name: \"maxWalkTime\",\n routingTypes: [\"PROFILE\"],\n default: 15,\n selector: \"DROPDOWN\",\n label: \"Max Walk Time\",\n applicable: query =>\n query.mode && hasTransit(query.mode) && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* walkSpeed -- the user's walking speed in m/s */\n name: \"walkSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 1.34,\n selector: \"DROPDOWN\",\n label: \"Walk Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"2 MPH\",\n value: 0.89\n },\n {\n text: \"3 MPH\",\n value: 1.34\n },\n {\n text: \"4 MPH\",\n value: 1.79\n }\n ]\n },\n\n {\n name: \"walkReluctance\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n selector: \"SLIDER\",\n low: 0.5,\n high: 20,\n step: 0.5,\n label: \"walk reluctance\",\n labelLow: \"More Walking\",\n labelHigh: \"More Transit\",\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !!query.otp2 && query.mode && query.mode.indexOf(\"WALK\") !== -1\n },\n {\n /* maxBikeTime -- the maximum time the user will spend biking in minutes */\n name: \"maxBikeTime\",\n routingTypes: [\"PROFILE\"],\n default: 20,\n selector: \"DROPDOWN\",\n label: \"Max Bike Time\",\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"bikeSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 3.58,\n selector: \"DROPDOWN\",\n label: \"Bicycle Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"6 MPH\",\n value: 2.68\n },\n {\n text: \"8 MPH\",\n value: 3.58\n },\n {\n text: \"10 MPH\",\n value: 4.47\n },\n {\n text: \"12 MPH\",\n value: 5.36\n }\n ]\n },\n\n {\n /* maxEScooterDistance - the maximum distance in meters the user will ride\n * an E-scooter. Not actually an OTP parameter (maxWalkDistance doubles for\n * any non-transit mode except for car) but we store it separately\n * internally in order to allow different default values, options, etc.\n * Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxEScooterDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode && hasTransit(query.mode) && hasMicromobility(query.mode),\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum E-scooter Distance\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxEScooterDistance: value\n })\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"watts\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 250,\n selector: \"DROPDOWN\",\n label: \"E-scooter Power\",\n // this configuration should only be allowed for personal E-scooters as these\n // settings will be defined by the vehicle type of an E-scooter being rented\n applicable: query =>\n query.mode &&\n query.mode.indexOf(\"MICROMOBILITY\") !== -1 &&\n query.mode.indexOf(\"MICROMOBILITY_RENT\") === -1 &&\n query.mode.indexOf(\"SCOOTER\") === -1,\n options: [\n {\n text: \"Kid's hoverboard (6mph)\",\n value: 125\n },\n {\n text: \"Entry-level scooter (11mph)\",\n value: 250\n },\n {\n text: \"Robust E-scooter (18mph)\",\n value: 500\n },\n {\n text: \"Powerful E-scooter (24mph)\",\n value: 1500\n }\n ],\n // rewrite a few other values to add some baseline assumptions about the\n // vehicle\n itineraryRewrite: value => {\n const watts = value;\n // the maximum cruising and downhill speed. Units in m/s\n let maximumMicromobilitySpeed;\n let weight;\n // see https://en.wikipedia.org/wiki/Human_body_weight#Average_weight_around_the_world\n // estimate is for an average North American human with clothes and stuff\n // units are in kg\n const TYPICAL_RIDER_WEIGHT = 90;\n switch (watts) {\n case 125:\n // exemplar: Swagtron Turbo 5 hoverboard (https://swagtron.com/product/recertified-swagtron-turbo-five-hoverboard-classic/)\n maximumMicromobilitySpeed = 2.8; // ~= 6mph\n weight = TYPICAL_RIDER_WEIGHT + 9;\n break;\n case 250:\n // exemplar: Xiaomi M365 (https://www.gearbest.com/skateboard/pp_596618.html)\n maximumMicromobilitySpeed = 5; // ~= 11.5mph\n weight = TYPICAL_RIDER_WEIGHT + 12.5;\n break;\n case 500:\n // exemplar: Razor EcoSmart Metro (https://www.amazon.com/Razor-EcoSmart-Metro-Electric-Scooter/dp/B002ZDAEIS?SubscriptionId=AKIAJMXJ2YFJTEDLQMUQ&tag=digitren08-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B002ZDAEIS&ascsubtag=15599460143449ocb)\n maximumMicromobilitySpeed = 8; // ~= 18mph\n weight = TYPICAL_RIDER_WEIGHT + 30;\n break;\n case 1000:\n // exemplar: Boosted Rev (https://boostedboards.com/vehicles/scooters/boosted-rev)\n maximumMicromobilitySpeed = 11; // ~= 24mph\n weight = TYPICAL_RIDER_WEIGHT + 21;\n break;\n default:\n break;\n }\n return { maximumMicromobilitySpeed, watts, weight };\n }\n },\n\n {\n /* ignoreRealtimeUpdates -- if true, do not use realtime updates in routing */\n name: \"ignoreRealtimeUpdates\",\n routingTypes: [\"ITINERARY\"],\n default: false\n },\n\n {\n /* companies -- tnc companies to query */\n name: \"companies\",\n routingTypes: [\"ITINERARY\"]\n },\n\n {\n /* wheelchair -- whether the user requires a wheelchair-accessible trip */\n name: \"wheelchair\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: false,\n selector: \"CHECKBOX\",\n label: \"Prefer Wheelchair Accessible Routes\",\n icon: <Wheelchair />,\n applicable: (query, config) => {\n if (!query.mode || !config.modes) return false;\n const configModes = (config.modes.accessModes || []).concat(\n config.modes.transitModes || []\n );\n return query.mode.split(\",\").some(mode => {\n const configMode = configModes.find(m => m.mode === mode);\n if (!configMode || !configMode.showWheelchairSetting) return false;\n if (\n configMode.company &&\n (!query.companies ||\n !query.companies.split(\",\").includes(configMode.company))\n )\n return false;\n return true;\n });\n }\n },\n\n {\n name: \"bannedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"numItineraries\",\n routingTypes: [\"ITINERARY\"],\n default: 3\n },\n {\n name: \"intermediatePlaces\",\n default: [],\n routingTypes: [\"ITINERARY\"],\n itineraryRewrite: places =>\n Array.isArray(places) && places.length > 0\n ? {\n intermediatePlaces: places.map(place => formatPlace(place))\n }\n : undefined\n },\n {\n // Time penalty in seconds the requester is willing to accept in order to\n // complete journey on preferred route. I.e., number of seconds that we are\n // willing to wait for the preferred route.\n name: \"otherThanPreferredRoutesPenalty\",\n default: 15 * 60, // 15 minutes\n routingTypes: [\"ITINERARY\"]\n },\n // Below are less commonly used query params included so that in case they are\n // passed in a query parameter they do not get filtered out from the ultimate\n // API request.\n {\n name: \"preferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxPreTransitTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveDistanceReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveTimeReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitAtBeginningFactor\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransferTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"preferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"walkBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStops\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStopsHard\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"transferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"nonpreferredTransferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxTransfers\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"batch\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitStopId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitTripId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"clampInitialWait\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"reverseOptimizeOnTheFly\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"boardSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"alightSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"locale\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableRemainingWeightHeuristic\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexFlagStopBufferSize\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseReservationServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseEligibilityServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexIgnoreDrtAdvanceBookMin\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"useRequestedDateTimeInMaxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableAlertFiltering\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"geoidElevation\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"invalidDateStrategy\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransitDistance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"searchTimeout\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"pathComparator\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"onlyTransitTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minimumMicromobilitySpeed\",\n routingTypes: [\"ITINERARY\"]\n }\n];\n// Iterate over stored settings and update query param defaults.\n// FIXME: this does not get updated if the user defaults are cleared\nqueryParams.forEach(param => {\n if (param.name in storedSettings) {\n param.default = storedSettings[param.name];\n param.userDefaultOverride = true;\n }\n});\n\nexport default queryParams;\n\n/**\n * You can customize the queryParams labels and options, and labels and values for each option.\n * @param customizations The optional customizations to apply: an object whose fields\n * correspond to the items in queryParams with the corresponding name,\n * the value for those fields being an object which fields (label, options...)\n * will override the originals.\n * Example:\n * {\n * // Matches the name param\n * maxWalkDistance: {\n * // Any fields that should be overridden go here\n * options: [\n * // ...new options\n * ],\n * default: 500,\n * label: \"max walk dist\"\n * }\n * }\n * @returns A copy of the default queryParams that has the given customizations applied.\n * If no customizations parameter is provided, returns the queryParams object itself.\n */\nexport function getCustomQueryParams(customizations) {\n if (!customizations) return queryParams;\n\n const clonedParams = cloneDeep(queryParams);\n Object.keys(customizations).forEach(k => {\n // Merge fields into the cloned object\n const paramIndex = clonedParams.findIndex(param => param.name === k);\n if (paramIndex !== -1) {\n clonedParams[paramIndex] = {\n ...clonedParams[paramIndex],\n ...customizations[k]\n };\n }\n });\n return clonedParams;\n}\n"],"file":"query-params.js"}
|
package/lib/route.d.ts
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Leg, Route, TransitOperator } from "@opentripplanner/types";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the transit operator (if an exact match is found) from the transit
|
|
4
|
+
* operators config value. It is critical to use both the feedId and agencyId in
|
|
5
|
+
* this method because it is possible in OTP for there to be a duplicate
|
|
6
|
+
* agencyId in separate feeds.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} feedId The feedId that this transit agency belongs to
|
|
9
|
+
* @param {string} agencyId The agencyId of the transit agency
|
|
10
|
+
* @param {array} transitOperators The transitOperators list from the config
|
|
11
|
+
* @return {object} The transitOperator if a match was found or null if no match
|
|
12
|
+
* was found
|
|
13
|
+
*/
|
|
14
|
+
export declare function getTransitOperatorFromFeedIdAndAgencyId(feedId: string, agencyId: string | number, transitOperators: TransitOperator[]): TransitOperator;
|
|
15
|
+
/**
|
|
16
|
+
* Looks up an operator from the provided leg.
|
|
17
|
+
*
|
|
18
|
+
* @param {object} leg The Itinerary Leg from which to find the transit
|
|
19
|
+
* operator
|
|
20
|
+
* @param {object} transitOperators transitOperators from config.
|
|
21
|
+
* @return {object} the operator if one was found or null if no match was found
|
|
22
|
+
*/
|
|
23
|
+
export declare function getTransitOperatorFromLeg(leg: Leg, transitOperators: TransitOperator[]): TransitOperator;
|
|
24
|
+
/**
|
|
25
|
+
* Looks up an operator from the provided configuration given an OTP route.
|
|
26
|
+
* NOTE: this assumes the use of the OTP Route model or a modified OTP
|
|
27
|
+
* RouteShort model (such as the one found in the IBI fork of OTP) that also
|
|
28
|
+
* returns the agencyId.
|
|
29
|
+
*
|
|
30
|
+
* @param {object} route Either an OTP Route or RouteShort model
|
|
31
|
+
* @param {array} transitOperators transitOperators from config
|
|
32
|
+
* @return {object} the operator if one was found or null if no match was found
|
|
33
|
+
*/
|
|
34
|
+
export declare function getTransitOperatorFromOtpRoute(route: Route, transitOperators: TransitOperator[]): TransitOperator;
|
|
35
|
+
/**
|
|
36
|
+
* Checks whether an appropriate comparison of numeric values can be made for
|
|
37
|
+
* sorting purposes. If both values are not valid numbers according to the
|
|
38
|
+
* isNaN check, then this function returns undefined which indicates that a
|
|
39
|
+
* secondary sorting criteria should be used instead. If one value is valid and
|
|
40
|
+
* the other is not, then the valid value will be given sorting priority. If
|
|
41
|
+
* both values are valid numbers, the difference is obtained as the sort value.
|
|
42
|
+
*
|
|
43
|
+
* An optional argument can be provided which will be used to obtain the
|
|
44
|
+
* comparison value from the comparison function arguments.
|
|
45
|
+
*
|
|
46
|
+
* IMPORTANT: the comparison values must be numeric values or at least be
|
|
47
|
+
* attempted to be converted to numeric values! If one of the arguments is
|
|
48
|
+
* something crazy like an empty string, unexpected behavior will occur because
|
|
49
|
+
* JavaScript.
|
|
50
|
+
*
|
|
51
|
+
* @param {function} [objGetterFn] An optional function to obtain the
|
|
52
|
+
* comparison value from the comparator function arguments
|
|
53
|
+
*/
|
|
54
|
+
export declare function makeNumericValueComparator(objGetterFn?: (item: Route) => number): (a: number, b: number) => number;
|
|
55
|
+
/**
|
|
56
|
+
* Create a comparator function that compares string values. The comparison
|
|
57
|
+
* values feed to the sort comparator function are assumed to be objects that
|
|
58
|
+
* will have either undefined, null or string values at the given key. If one
|
|
59
|
+
* object has undefined, null or an empty string, but the other does have a
|
|
60
|
+
* string with length > 0, then that string will get priority.
|
|
61
|
+
*
|
|
62
|
+
* @param {function} [objGetterFn] An optional function to obtain the
|
|
63
|
+
* comparison value from the comparator function arguments
|
|
64
|
+
*/
|
|
65
|
+
export declare function makeStringValueComparator(objGetterFn?: (item: Route) => string): (a: string, b: string) => number;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a sort comparator function to compares routes for the purposes of
|
|
68
|
+
* sorting and displaying in a user interface. This takes in a single optional
|
|
69
|
+
* argument which should be a list of transitOperators as defined in the config
|
|
70
|
+
* file. Due to GTFS feeds having varying levels of data quality, a multi-
|
|
71
|
+
* criteria sort is needed to account for various differences. The criteria
|
|
72
|
+
* included here are each applied to the routes in the order listed. If a given
|
|
73
|
+
* sort criterion yields equivalence (e.g., two routes have the short name
|
|
74
|
+
* "20"), the comparator falls back onto the next sort criterion (e.g., long
|
|
75
|
+
* name). The sort operates on the following values (in order):
|
|
76
|
+
*
|
|
77
|
+
* 1. Transit Operator. The transit operator will be attempted to be obtained
|
|
78
|
+
* for each route. If no argument is provided when creating this comparator
|
|
79
|
+
* function, then routes will be sorted by their agency's name. If an
|
|
80
|
+
* argument is provided and a match is found based off of the route's feed_id
|
|
81
|
+
* and agency_id and a transitOperator's feed_id and agency_id, then the
|
|
82
|
+
* field transitOperator.order will be used as the comparator value as long
|
|
83
|
+
* as it is numeric. If it is not numeric, a value is returned indicating
|
|
84
|
+
* that this transit operator should be placed at the end of the list.
|
|
85
|
+
* 2. sortOrder. Routes that do not have a valid sortOrder will be placed
|
|
86
|
+
* beneath those that do.
|
|
87
|
+
* 3. route type (OTP mode). See routeTypeComparator code for prioritization of
|
|
88
|
+
* route types.
|
|
89
|
+
* 4. shortNames that begin with alphabetic characters. shortNames that do not
|
|
90
|
+
* start with alphabetic characters will be place beneath those that do.
|
|
91
|
+
* 5. shortName as integer. shortNames that cannot be parsed as integers will
|
|
92
|
+
* be placed beneath those that are valid.
|
|
93
|
+
* 6. shortName as string. Routes without shortNames will be placed beneath
|
|
94
|
+
* those with shortNames.
|
|
95
|
+
* 7. longName as string.
|
|
96
|
+
*/
|
|
97
|
+
export declare function makeRouteComparator(transitOperators: TransitOperator[]): (a: number, b: number) => number;
|
|
98
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrE;;;;;;;;;;;GAWG;AACH,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,gBAAgB,EAAE,eAAe,EAAE,GAClC,eAAe,CAQjB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,GAAG,EACR,gBAAgB,EAAE,eAAe,EAAE,GAClC,eAAe,CAQjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,eAAe,EAAE,GAClC,eAAe,CAkBjB;AA0MD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,OAI1B,MAAM,KAAK,MAAM,KAAG,MAAM,CAatC;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,OAE1B,MAAM,KAAK,MAAM,KAAG,MAAM,CAatC;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,eAAe,EAAE,GAClC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAUlC"}
|
package/lib/route.js
CHANGED
|
@@ -132,7 +132,7 @@ function makeTransitOperatorComparator(transitOperators) {
|
|
|
132
132
|
if (aVal < bVal) return -1;
|
|
133
133
|
if (aVal > bVal) return 1;
|
|
134
134
|
return 0;
|
|
135
|
-
} // transitOperators are defined and therefore a numeric value is guaranteed
|
|
135
|
+
} // @ts-expect-error transitOperators are defined and therefore a numeric value is guaranteed
|
|
136
136
|
// to be returned
|
|
137
137
|
|
|
138
138
|
|
|
@@ -210,7 +210,7 @@ function getRouteTypeComparatorValue(route) {
|
|
|
210
210
|
// For some strange reason, the short route response in OTP returns the
|
|
211
211
|
// string-based modes, but the long route response returns the
|
|
212
212
|
// integer route type. This attempts to account for both of those cases.
|
|
213
|
-
if (!route) throw new Error(
|
|
213
|
+
if (!route) throw new Error(`Route is undefined. ${route}`);
|
|
214
214
|
|
|
215
215
|
if (typeof modeComparatorValue[route.mode] !== "undefined") {
|
|
216
216
|
return modeComparatorValue[route.mode];
|
|
@@ -220,6 +220,7 @@ function getRouteTypeComparatorValue(route) {
|
|
|
220
220
|
return routeTypeComparatorValue[route.type];
|
|
221
221
|
} // Default the comparator value to a large number (placing the route at the
|
|
222
222
|
// end of the list).
|
|
223
|
+
// eslint-disable-next-line no-console
|
|
223
224
|
|
|
224
225
|
|
|
225
226
|
console.warn("no mode/route type found for route", route);
|
|
@@ -301,7 +302,8 @@ function makeNumericValueComparator(objGetterFn) {
|
|
|
301
302
|
const {
|
|
302
303
|
aVal,
|
|
303
304
|
bVal
|
|
304
|
-
} = getSortValues(objGetterFn, a, b);
|
|
305
|
+
} = getSortValues(objGetterFn, a, b);
|
|
306
|
+
if (typeof aVal !== "number" || typeof bVal !== "number") return 0; // if both values aren't valid numbers, use the next sort criteria
|
|
305
307
|
|
|
306
308
|
if (isNaN(aVal) && isNaN(bVal)) return 0; // b is a valid number, b gets priority
|
|
307
309
|
|