Skip to content

Commit 7985c45

Browse files
cka-yCopilot
andcommitted
revert: restore web-app/ and api/ changes
Reverts web-app and api/src/scripts/populate_db_gtfs.py to their state before the transitfeeds removal commits. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent e87073c commit 7985c45

6 files changed

Lines changed: 53 additions & 7 deletions

File tree

api/src/scripts/populate_db_gtfs.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,8 @@ def populate_db(self, session: "Session", fetch_url: bool = True):
249249
feed.feed_name = self.get_safe_value(row, "name", "")
250250
feed.note = self.get_safe_value(row, "note", "")
251251
producer_url = self.get_safe_value(row, "urls.direct_download", "")
252-
feed.producer_url = producer_url
252+
if "transitfeeds" not in producer_url: # Avoid setting transitfeeds as producer_url
253+
feed.producer_url = producer_url
253254
feed.authentication_type = str(int(float(self.get_safe_value(row, "urls.authentication_type", "0"))))
254255
feed.authentication_info_url = self.get_safe_value(row, "urls.authentication_info", "")
255256
feed.api_key_parameter_name = self.get_safe_value(row, "urls.api_key_parameter_name", "")

web-app/src/app/components/Header.tsx

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import {
1313
Select,
1414
useTheme,
1515
Link,
16+
Alert,
17+
AlertTitle,
1618
} from '@mui/material';
1719
import MenuIcon from '@mui/icons-material/Menu';
1820
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
@@ -26,7 +28,7 @@ import {
2628
gbfsMetricsNavItems,
2729
} from '../constants/Navigation';
2830
import type NavigationItem from '../interface/Navigation';
29-
import { useLocation, useNavigate } from 'react-router-dom';
31+
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
3032
import { useSelector } from 'react-redux';
3133
import { selectIsAuthenticated, selectUserEmail } from '../store/selectors';
3234
import LogoutConfirmModal from './LogoutConfirmModal';
@@ -44,9 +46,15 @@ import ThemeToggle from './ThemeToggle';
4446
import { useTranslation } from 'react-i18next';
4547

4648
export default function DrawerAppBar(): React.ReactElement {
49+
const [searchParams, setSearchParams] = useSearchParams();
50+
const hasTransitFeedsRedirectParam =
51+
searchParams.get('utm_source') === 'transitfeeds';
4752
const theme = useTheme();
4853
const location = useLocation();
4954
const [mobileOpen, setMobileOpen] = React.useState(false);
55+
const [hasTransitFeedsRedirect, setHasTransitFeedsRedirect] = React.useState(
56+
hasTransitFeedsRedirectParam,
57+
);
5058
const [openDialog, setOpenDialog] = React.useState(false);
5159
const [activeTab, setActiveTab] = React.useState('');
5260
const [navigationItems, setNavigationItems] = React.useState<
@@ -118,7 +126,7 @@ export default function DrawerAppBar(): React.ReactElement {
118126
<Box
119127
sx={{
120128
display: 'flex',
121-
height: '64px',
129+
height: hasTransitFeedsRedirect ? '115px' : '64px',
122130
mb: { xs: 2, md: 4 },
123131
}}
124132
>
@@ -399,6 +407,30 @@ export default function DrawerAppBar(): React.ReactElement {
399407
)}
400408
</Box>
401409
</Toolbar>
410+
{hasTransitFeedsRedirect && (
411+
<Alert
412+
severity='warning'
413+
onClose={() => {
414+
setHasTransitFeedsRedirect(false);
415+
if (hasTransitFeedsRedirectParam) {
416+
searchParams.delete('utm_source');
417+
setSearchParams(searchParams);
418+
}
419+
}}
420+
sx={{ '.MuiAlert-message': { pb: { xs: 0, md: 1 } } }}
421+
>
422+
<AlertTitle>
423+
You&apos;ve been redirected from TransitFeeds
424+
</AlertTitle>
425+
<Box
426+
component={'span'}
427+
sx={{ display: { xs: 'none', md: 'block' } }}
428+
>
429+
This page now lives on MobilityDatabase.org, where you&apos;ll
430+
find the most up-to-date transit data.
431+
</Box>
432+
</Alert>
433+
)}
402434
</AppBar>
403435

404436
<nav>

web-app/src/app/screens/Feeds/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ export default function Feed(): React.ReactElement {
8080
const feedsData = useSelector(selectFeedsData);
8181
const feedStatus = useSelector(selectFeedsStatus);
8282

83+
const hasTransitFeedsRedirectParam =
84+
searchParams.get('utm_source') === 'transitfeeds';
85+
8386
// features i/o
8487
const areNoDataTypesSelected =
8588
!selectedFeedTypes.gtfs &&
@@ -177,6 +180,9 @@ export default function Feed(): React.ReactElement {
177180
if (isOfficialFeedSearch) {
178181
newSearchParams.set('official', 'true');
179182
}
183+
if (searchParams.get('utm_source') === 'transitfeeds') {
184+
newSearchParams.set('utm_source', 'transitfeeds');
185+
}
180186
if (searchParams.toString() !== newSearchParams.toString()) {
181187
setSearchParams(newSearchParams, { replace: false });
182188
}
@@ -335,7 +341,7 @@ export default function Feed(): React.ReactElement {
335341
sx={stickyHeaderStyles({
336342
theme,
337343
isSticky,
338-
headerBannerVisible: false,
344+
headerBannerVisible: hasTransitFeedsRedirectParam,
339345
})}
340346
>
341347
<Container

web-app/src/app/services/feeds/utils.spec.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ describe('Feeds Utils', () => {
6060
[true, 'http://whistler.mapstrat.com/current/gtfrealtime_TripUpdates.bin'],
6161
[true, 'http://gtfs.halifax.ca/realtime/Vehicle/VehiclePositions.pb'],
6262
[true, 'http://api.tampa.onebusaway.org:8088/trip-updates'],
63-
[true, 'https://example.com/feeds/gtfs.zip'],
64-
[false, '//example.com/feeds/'],
63+
[
64+
true,
65+
'https://transitfeeds.com/p/via-metropolitan-transit/62/latest/download',
66+
],
67+
[false, '//transitfeeds.com/p/'],
6568
[
6669
true,
6770
'https://ckan.pbh.gov.br/dataset/77764a7e-63fc-4111-ace3-fb7d3037953a/resource/f0fa78dc-74c3-49fa-8971-c310a76a07fa/download/gtfsfiles.zip',

web-app/src/app/utils/externalIds.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ describe('filterFeedExternalIdsToSourceMap', () => {
5252
it('externalIdSourceMap should contain expected keys', () => {
5353
// ensure the map includes the keys we depend on
5454
expect(Object.keys(externalIdSourceMap)).toEqual(
55-
expect.arrayContaining(['jbda', 'tdg', 'ntd', 'tld']),
55+
expect.arrayContaining(['jbda', 'tdg', 'ntd', 'transitfeeds', 'tld']),
5656
);
5757
});
5858
});

web-app/src/app/utils/externalIds.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ export const externalIdSourceMap: Record<
2323
docsUrl:
2424
'https://www.transit.dot.gov/ntd/data-product/2023-annual-database-general-transit-feed-specification-gtfs-weblinks',
2525
},
26+
transitfeeds: {
27+
label: 'TransitFeeds',
28+
translationKey: 'externalIds.tooltips.tfs',
29+
},
2630
tld: {
2731
label: 'Transit.land',
2832
translationKey: 'externalIds.tooltips.tld',

0 commit comments

Comments
 (0)