\r\n
Find maps and schedules for stops and routes
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.state.autocomplete ? (\r\n
\r\n
\r\n
\r\n {this.state.query && this.state.stops.length ? (\r\n <>\r\n
Stops
\r\n
\r\n {this.state.stops.slice(0, (!this.state.stopsShowAll ? 3 : this.state.stops.length)).map(stop => {\r\n let isParent = false;\r\n\r\n if (_stops && _stops.length) {\r\n isParent = (_stops.filter(s => s.parent_station == stop.stop_id).length > 0);\r\n }\r\n\r\n return ( \r\n - \r\n \r\n
\r\n );\r\n })}\r\n {this.state.stops.length > 3 ? (\r\n - this.toggleShow(e, 'stopsShowAll')}>Show {this.state.stopsShowAll ? 'less' : 'all'}
\r\n ) : null}\r\n
\r\n >\r\n ) : null}\r\n {this.state.query && this.state.addresses.length ? (\r\n <>\r\n
Addresses
\r\n
\r\n >\r\n ) : null}\r\n
\r\n ) : null}\r\n
\r\n >\r\n );\r\n }\r\n}\r\n\r\n\r\nfunction getState() {\r\n if (sessionStorage.getItem('MapsAndSchedules')) {\r\n return JSON.parse(sessionStorage.getItem('MapsAndSchedules'));\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction setState(state) {\r\n sessionStorage.setItem('MapsAndSchedules', JSON.stringify(state));\r\n window.dispatchEvent(new Event('storage'));\r\n}\r\n\r\nlet cachedState = getState();\r\nlet isPreview = location.search && location.search.toLowerCase().includes('preview');\r\n\r\nif (cachedState) {\r\n cachedState.filter = '';\r\n cachedState.routes = [];\r\n cachedState.route = '';\r\n cachedState.autocomplete = false;\r\n cachedState.query = '';\r\n cachedState.isPreview = isPreview;\r\n setState(cachedState);\r\n} else {\r\n setState({\r\n filter: '',\r\n routes: [],\r\n route: '',\r\n query: '',\r\n autocomplete: false,\r\n isPreview: isPreview\r\n });\r\n}\r\n\r\n\r\nfunction isFavorite() {\r\n const favState = getFavState();\r\n const state = getState();\r\n\r\n if (favState.favorites && (\r\n (location.pathname.startsWith('/address/') && favState.favorites.find(r => r.id == btoa(location.pathname) && r.type == 'address')) ||\r\n (location.pathname.startsWith('/route/') && favState.favorites.find(r => r.id == state.route && r.type == 'route')) ||\r\n (location.pathname.startsWith('/stop/') && favState.favorites.find(r => r.id == state.stop && r.type == 'stop'))\r\n )) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nlet cachedFavState = getFavState();\r\n\r\nif (cachedFavState) {\r\n if (!cachedFavState.favorites) {\r\n cachedFavState.favorites = [];\r\n }\r\n\r\n setFavState(cachedFavState);\r\n} else {\r\n setFavState({\r\n favorites: []\r\n });\r\n}\r\n\r\nfunction getFavState() {\r\n if (localStorage.getItem('Favorites')) {\r\n return JSON.parse(localStorage.getItem('Favorites'));\r\n }\r\n\r\n return {\r\n favorites: []\r\n };\r\n}\r\n\r\nfunction setFavState(state) {\r\n localStorage.setItem('Favorites', JSON.stringify(state));\r\n window.dispatchEvent(new Event('storage'));\r\n}\r\n\r\nfunction getFilteredCount() {\r\n let state = getState();\r\n let { routes, filter } = state,\r\n flat = !document.getElementById('transit-tracker-map-root') ? true : false;\r\n filteredCount = 0;\r\n if (state.filter) {\r\n routes = routes.map(route => {\r\n route.filtered = true;\r\n if (route.route_id.includes(state.filter)\r\n || route.route_name.toLowerCase().includes(state.filter.toLowerCase())\r\n || route.route_short_name.toLowerCase().includes(state.filter.toLowerCase())) {\r\n route.filtered = false;\r\n filteredCount++;\r\n }\r\n });\r\n }\r\n else {\r\n filteredCount = routes.length;\r\n }\r\n return filteredCount;\r\n}\r\n\r\n\r\n\r\nif (document.getElementById('maps-and-schedules-header-root')) {\r\n ReactDOM.render(\r\n