Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import * as React from 'react';
import { useSelector } from 'react-redux';
import {
Expand All @@ -9,11 +11,11 @@ import {
Typography,
} from '@mui/material';
import CheckIcon from '@mui/icons-material/Check';
import { selectIsAuthenticated } from '../../store/profile-selectors';
import { selectIsAuthenticated } from '../../../store/profile-selectors';
import { useTranslations } from 'next-intl';
import { useSearchParams } from 'next/navigation';
import FeedSubmissionForm from './Form';
import { ColoredContainer } from '../../styles/PageLayout.style';
import { ColoredContainer } from '../../../styles/PageLayout.style';

function Component(): React.ReactElement {
const t = useTranslations('feeds');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ import {
useForm,
useWatch,
} from 'react-hook-form';
import { type YesNoFormInput, type FeedSubmissionFormFormInput } from '.';
import { useEffect } from 'react';
import { useTranslations } from 'next-intl';
import { isValidFeedLink } from '../../../services/feeds/utils';
import { isValidFeedLink } from '../../../../services/feeds/utils';
import FormLabelDescription from './components/FormLabelDescription';
import { type FeedSubmissionFormFormInput, type YesNoFormInput } from './types';

export interface FeedSubmissionFormFormInputFirstStep {
isOfficialProducer: YesNoFormInput;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import {
useForm,
useWatch,
} from 'react-hook-form';
import { type YesNoFormInput, type FeedSubmissionFormFormInput } from '.';
import { useTranslations } from 'next-intl';
import FormLabelDescription from './components/FormLabelDescription';
import { type FeedSubmissionFormFormInput, type YesNoFormInput } from './types';

export interface FeedSubmissionFormInputFourthStep {
dataProducerEmail?: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import {
FormHelperText,
} from '@mui/material';
import { Controller, type SubmitHandler, useForm } from 'react-hook-form';
import { type FeedSubmissionFormFormInput } from '.';
import { useTranslations } from 'next-intl';
import { getCountryDataList } from 'countries-list';
import { useState } from 'react';
import FormLabelDescription from './components/FormLabelDescription';
import { type FeedSubmissionFormFormInput } from './types';

export interface FeedSubmissionFormInputSecondStep {
country: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import {
TextField,
} from '@mui/material';
import { type SubmitHandler, Controller, useForm } from 'react-hook-form';
import { type AuthTypes, type FeedSubmissionFormFormInput } from '.';
import { useEffect } from 'react';
import { useTranslations } from 'next-intl';
import { isValidFeedLink } from '../../../services/feeds/utils';
import { isValidFeedLink } from '../../../../services/feeds/utils';
import { type AuthTypes, type FeedSubmissionFormFormInput } from './types';

export interface FeedSubmissionFormInputSecondStepRT {
tripUpdates: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import {
useForm,
useWatch,
} from 'react-hook-form';
import { type FeedSubmissionFormFormInput, type AuthTypes } from '.';
import { useTranslations } from 'next-intl';
import { isValidFeedLink } from '../../../services/feeds/utils';
import { isValidFeedLink } from '../../../../services/feeds/utils';
import FormLabelDescription from './components/FormLabelDescription';
import { type AuthTypes, type FeedSubmissionFormFormInput } from './types';

export interface FeedSubmissionFormInputThirdStep {
authType: AuthTypes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,48 +13,9 @@ import {
} from '@mui/material';
import { useRouter, useSearchParams, usePathname } from 'next/navigation';
import FormThirdStep from './ThirdStep';
import { submitNewFeedForm } from '../../../services/feeds/add-feed-form-service';
import { submitNewFeedForm } from '../../../../services/feeds/add-feed-form-service';
import { useTranslations } from 'next-intl';

export type YesNoFormInput = 'yes' | 'no' | '';
export type AuthTypes =
| 'None - 0'
| 'API key - 1'
| 'HTTP header - 2'
| 'choiceRequired';

export interface FeedSubmissionFormFormInput {
isOfficialProducer: YesNoFormInput;
isOfficialFeed: 'yes' | 'no' | 'unsure' | undefined;
dataType: 'gtfs' | 'gtfs_rt';
transitProviderName: string;
feedLink?: string;
oldFeedLink?: string;
isUpdatingFeed?: YesNoFormInput;
licensePath?: string;
country?: string;
region?: string;
municipality?: string;
tripUpdates?: string;
vehiclePositions?: string;
serviceAlerts?: string;
oldTripUpdates?: string;
oldVehiclePositions?: string;
oldServiceAlerts?: string;
gtfsRelatedScheduleLink?: string;
name?: string;
authType: AuthTypes;
authSignupLink?: string;
authParameterName?: string;
dataProducerEmail: string;
isInterestedInQualityAudit: YesNoFormInput;
userInterviewEmail?: string;
whatToolsUsedText?: string;
hasLogoPermission: YesNoFormInput;
unofficialDesc?: string; // Why was this feed created?
updateFreq?: string; // How often is this feed updated?
emptyLicenseUsage?: string; // Confirm usage if no license and official
}
import { type FeedSubmissionFormFormInput, type YesNoFormInput } from './types';

const defaultFormValues: FeedSubmissionFormFormInput = {
isOfficialProducer: '',
Expand Down Expand Up @@ -176,14 +137,20 @@ export default function FeedSubmissionForm(): React.ReactElement {
const formStepSubmit = (
partialFormData: Partial<FeedSubmissionFormFormInput>,
): void => {
setFormData((prevData) => ({ ...prevData, ...partialFormData }));
setFormData((prevData: FeedSubmissionFormFormInput) => ({
...prevData,
...partialFormData,
}));
handleNext();
};

const formStepBack = (
partialFormData: Partial<FeedSubmissionFormFormInput>,
): void => {
setFormData((prevData) => ({ ...prevData, ...partialFormData }));
setFormData((prevData: FeedSubmissionFormFormInput) => ({
...prevData,
...partialFormData,
}));
handleBack();
};

Expand Down
1 change: 1 addition & 0 deletions src/app/[locale]/contribute/FeedSubmission/Form/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '../../../../utils/feed-submission-types';
11 changes: 11 additions & 0 deletions src/app/[locale]/contribute/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { type ReactElement } from 'react';
import FeedSubmission from './FeedSubmission/FeedSubmission';
import { ReduxGateWrapper } from '../../components/ReduxGateWrapper';

export default function ContributePage(): ReactElement {
return (
<ReduxGateWrapper>
<FeedSubmission />
</ReduxGateWrapper>
);
}
6 changes: 6 additions & 0 deletions src/app/[locale]/contribute/submitted/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import FeedSubmitted from '../../../screens/FeedSubmitted';

export default function ContributeSubmittedPage(): ReactElement {
return <FeedSubmitted />;
}
11 changes: 11 additions & 0 deletions src/app/[locale]/forgot-password/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { type ReactElement } from 'react';
import ForgotPassword from '../../screens/ForgotPassword';
import { ReduxGateWrapper } from '../../components/ReduxGateWrapper';

export default function ForgotPasswordPage(): ReactElement {
return (
<ReduxGateWrapper>
<ForgotPassword />
</ReduxGateWrapper>
);
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import React, { useMemo } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import FormHelperText from '@mui/material/FormHelperText';
Expand Down Expand Up @@ -29,18 +31,18 @@ import { useSearchParams } from 'next/navigation';
import {
fetchAvailableFilesStart,
selectFile,
} from '../../../store/gbfs-analytics-reducer';
} from '../../../../../store/gbfs-analytics-reducer';
import {
selectGBFSFeedMetrics,
selectGBFSAnalyticsStatus,
selectGBFSAnalyticsError,
} from '../../../store/gbfs-analytics-selector';
} from '../../../../../store/gbfs-analytics-selector';
import { useTableColumns } from './GBFSFeedAnalyticsTable';
import { type RootState } from '../../../store/store';
import { type RootState } from '../../../../../store/store';
import { type AnalyticsFile, type GBFSFeedMetrics } from '../types';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';
import DetailPanel from './DetailPanel';
import { setAnalyticsBucketEndpoint } from '../utils';
import { setAnalyticsBucketEndpoint } from '../../../../../utils/metricsUtils';

export default function GBFSFeedAnalytics(): React.ReactElement {
const searchParams = useSearchParams();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import { useState, useEffect, useMemo } from 'react';
import { useSearchParams, useRouter } from 'next/navigation';

Expand All @@ -24,7 +26,7 @@ import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import { InfoOutlined, ListAltOutlined } from '@mui/icons-material';
import { type GBFSNoticeMetrics } from '../types';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';

export default function GBFSNoticeAnalytics(): React.ReactElement {
const router = useRouter();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import { useState, useEffect, useMemo } from 'react';
import { useSearchParams, useRouter } from 'next/navigation';

Expand Down Expand Up @@ -31,9 +33,9 @@ import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import { InfoOutlined, ListAltOutlined } from '@mui/icons-material';
import { type GBFSVersionMetrics } from '../types';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';
import MUITooltip from '@mui/material/Tooltip';
import { GBFS_LINK } from '../../../constants/Navigation';
import { GBFS_LINK } from '../../../../../constants/Navigation';

export default function GBFSVersionAnalytics(): React.ReactElement {
const router = useRouter();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import { useState, useEffect, useMemo } from 'react';
import { useSearchParams, useRouter } from 'next/navigation';
import {
Expand Down Expand Up @@ -29,13 +31,13 @@ import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import { InfoOutlined, ListAltOutlined } from '@mui/icons-material';
import { type FeatureMetrics } from '../types';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';
import MUITooltip from '@mui/material/Tooltip';
import { GTFS_ORG_LINK } from '../../../constants/Navigation';
import { GTFS_ORG_LINK } from '../../../../../constants/Navigation';
import {
DATASET_FEATURES,
getComponentDecorators,
} from '../../../utils/consts';
} from '../../../../../utils/consts';

export default function GTFSFeatureAnalytics(): React.ReactElement {
const router = useRouter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
CalendarToday,
} from '@mui/icons-material';
import { type GTFSFeedMetrics } from '../types';
import { getLocationName } from '../../../services/feeds/utils';
import { getLocationName } from '../../../../../services/feeds/utils';

interface RowData {
original: GTFSFeedMetrics;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import React, { useMemo } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import {
Expand All @@ -23,23 +25,20 @@ import { useSearchParams } from 'next/navigation';
import {
fetchAvailableFilesStart,
selectFile,
} from '../../../store/gtfs-analytics-reducer';
} from '../../../../../store/gtfs-analytics-reducer';
import {
selectGTFSFeedMetrics,
selectGTFSAnalyticsStatus,
selectGTFSAnalyticsError,
} from '../../../store/gtfs-analytics-selector';
} from '../../../../../store/gtfs-analytics-selector';
import { useTableColumns } from './GTFSFeedAnalyticsTable';
import DetailPanel from './DetailPanel';
import { type RootState } from '../../../store/store';
import { type RootState } from '../../../../../store/store';
import { type AnalyticsFile, type GTFSFeedMetrics } from '../types';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';
import DownloadIcon from '@mui/icons-material/Download';
import { download, generateCsv, mkConfig } from 'export-to-csv';

let globalAnalyticsBucketEndpoint: string | undefined;
export const getAnalyticsBucketEndpoint = (): string | undefined =>
globalAnalyticsBucketEndpoint;
import { setAnalyticsBucketEndpoint } from '../../../../../utils/metricsUtils';

export default function GTFSFeedAnalytics(): React.ReactElement {
const searchParams = useSearchParams();
Expand Down Expand Up @@ -79,7 +78,7 @@ export default function GTFSFeedAnalytics(): React.ReactElement {
};

React.useEffect(() => {
globalAnalyticsBucketEndpoint = config.gtfsMetricsBucketEndpoint;
setAnalyticsBucketEndpoint(config.gtfsMetricsBucketEndpoint);
dispatch(fetchAvailableFilesStart());
}, [dispatch, config.gtfsMetricsBucketEndpoint]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { OpenInNew } from '@mui/icons-material';
import {
getComponentDecorators,
groupFeaturesByComponent,
} from '../../../utils/consts';
} from '../../../../../utils/consts';

/**
* Returns the columns for the feed analytics table.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import { useState, useEffect, useMemo } from 'react';
import { useSearchParams, useRouter } from 'next/navigation';

Expand Down Expand Up @@ -32,8 +34,8 @@ import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import { InfoOutlined, ListAltOutlined } from '@mui/icons-material';
import { type NoticeMetrics } from '../types';
import { WEB_VALIDATOR_LINK } from '../../../constants/Navigation';
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
import { WEB_VALIDATOR_LINK } from '../../../../../constants/Navigation';
import { useRemoteConfig } from '../../../../../context/RemoteConfigProvider';

export default function GTFSNoticeAnalytics(): React.ReactElement {
const router = useRouter();
Expand Down
1 change: 1 addition & 0 deletions src/app/[locale]/metrics/_components/Analytics/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '../../../../utils/analytics-types';
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gbfs/feeds/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GBFSFeedAnalytics from '../../_components/Analytics/GBFSFeedAnalytics/GBFSFeedAnalytics';

export default function GBFSFeedsMetricsPage(): ReactElement {
return <GBFSFeedAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gbfs/notices/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GBFSNoticeAnalytics from '../../_components/Analytics/GBFSNoticeAnalytics/GBFSNoticeAnalytics';

export default function GBFSNoticesMetricsPage(): ReactElement {
return <GBFSNoticeAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gbfs/versions/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GBFSVersionAnalytics from '../../_components/Analytics/GBFSVersionAnalytics/GBFSVersionAnalytics';

export default function GBFSVersionsMetricsPage(): ReactElement {
return <GBFSVersionAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gtfs/features/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GTFSFeatureAnalytics from '../../_components/Analytics/GTFSFeatureAnalytics/GTFSFeatureAnalytics';

export default function GTFSFeaturesMetricsPage(): ReactElement {
return <GTFSFeatureAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gtfs/feeds/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GTFSFeedAnalytics from '../../_components/Analytics/GTFSFeedAnalytics/GTFSFeedAnalytics';

export default function GTFSFeedsMetricsPage(): ReactElement {
return <GTFSFeedAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
6 changes: 6 additions & 0 deletions src/app/[locale]/metrics/gtfs/notices/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { type ReactElement } from 'react';
import GTFSNoticeAnalytics from '../../_components/Analytics/GTFSNoticeAnalytics/GTFSNoticeAnalytics';

export default function GTFSNoticesMetricsPage(): ReactElement {
return <GTFSNoticeAnalytics />;
}
Comment thread
Alessandro100 marked this conversation as resolved.
Loading
Loading