Skip to content

Commit

Permalink
front: adapt import train schedules v2
Browse files Browse the repository at this point in the history
  • Loading branch information
RomainValls committed Apr 10, 2024
1 parent 9d4937f commit 2c8576b
Show file tree
Hide file tree
Showing 7 changed files with 208 additions and 192 deletions.
4 changes: 0 additions & 4 deletions front/src/applications/operationalStudies/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ export interface Step extends Destination {
arrivalTime: string;
departureTime: string;
duration?: number;
tracks: {
position: number;
track: string;
}[];
}

export type TrainSchedule = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ import { useTranslation } from 'react-i18next';
import type { TrainSchedule } from 'applications/operationalStudies/types';
import { enhancedEditoastApi } from 'common/api/enhancedEditoastApi';
import { Loader } from 'common/Loaders';
import {
ImportTrainScheduleConfigV2,
ImportTrainScheduleTrainsList,
} from 'modules/trainschedule/components/ImportTrainSchedule';
import { ImportTrainScheduleConfigV2 } from 'modules/trainschedule/components/ImportTrainSchedule';
import ImportTrainScheduleTrainsListV2 from 'modules/trainschedule/components/ImportTrainSchedule/ImportTrainScheduleTrainsListV2';
import { setFailure } from 'reducers/main';
import { useAppDispatch } from 'store';

Expand Down Expand Up @@ -47,7 +45,7 @@ const ImportTrainScheduleV2 = ({
setTrainsList={setTrainsList}
infraId={infraId}
/>
<ImportTrainScheduleTrainsList
<ImportTrainScheduleTrainsListV2
infraId={infraId}
isLoading={isLoading}
rollingStocks={rollingStocks}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { updateSelectedProjection, updateSimulation } from 'reducers/osrdsimulat
import { getPresentSimulation, getSelectedTrainId } from 'reducers/osrdsimulation/selectors';
import { useAppDispatch } from 'store';

import ImportTrainScheduleV2 from './ImportTrainScheduleV2';
import ManageTrainScheduleV2 from './ManageTrainScheduleV2';
import SimulationResultsV2 from './SimulationResultsV2';

Expand Down Expand Up @@ -331,7 +332,7 @@ const ScenarioV2 = () => {
)}
{displayTrainScheduleManagement === MANAGE_TRAIN_SCHEDULE_TYPES.import && (
<div className="scenario-managetrainschedule">
<ImportTrainSchedule infraId={infraId} timetableId={timetableId} />
<ImportTrainScheduleV2 infraId={infraId} timetableId={timetableId} />
</div>
)}
<div className="scenario-results">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,11 @@ interface ImportTrainScheduleConfigProps {
setIsLoading: (isLoading: boolean) => void;
}

type SearchConstraintType = (string | number | string[])[];

const ImportTrainScheduleConfigV2 = ({
setTrainsList,
infraId,
setIsLoading,
}: ImportTrainScheduleConfigProps) => {
const { t } = useTranslation(['operationalStudies/importTrainSchedule']);
const [postSearch] = osrdEditoastApi.endpoints.postSearch.useMutation();
const [from, setFrom] = useState<ImportStation | undefined>();
const [fromSearchString, setFromSearchString] = useState('');
const [to, setTo] = useState<ImportStation | undefined>();
Expand All @@ -52,42 +48,6 @@ const ImportTrainScheduleConfigV2 = ({
const { openModal, closeModal } = useContext(ModalContext);
const { rollingStockComfort, rollingStock } = useStoreDataForRollingStockSelector();

async function importTrackSections(opIds: number[]): Promise<
Record<
number,
{
position: number;
track: string;
}[]
>
> {
const uniqueOpIds = Array.from(new Set(opIds));
const constraint = uniqueOpIds.reduce((res, uic) => [...res, ['=', ['uic'], Number(uic)]], [
'or',
] as (string | SearchConstraintType)[]);
const payload: PostSearchApiArg = {
searchPayload: {
object: 'operationalpoint',
query: ['and', constraint, ['=', ['infra_id'], infraId]],
},
pageSize: 1000,
};
const operationalPoints = (await postSearch(
payload
).unwrap()) as SearchResultItemOperationalPoint[];

return operationalPoints.reduce(
(res, operationalPoint) =>
operationalPoint.uic
? {
...res,
[operationalPoint.uic]: operationalPoint.track_sections,
}
: res,
{}
);
}

function validateImportedTrainSchedules(
importedTrainSchedules: Record<string, unknown>[]
): ImportedTrainSchedule[] | null {
Expand Down Expand Up @@ -120,11 +80,6 @@ const ImportTrainScheduleConfigV2 = ({
}

async function updateTrainSchedules(importedTrainSchedules: ImportedTrainSchedule[]) {
const opIds = importedTrainSchedules.flatMap((trainSchedule) =>
trainSchedule.steps.map((step) => step.uic)
);
const trackSectionsByOp = await importTrackSections(opIds);

// For each train schedule, we add the duration and tracks of each step
const trainsSchedules = importedTrainSchedules.map((trainSchedule) => {
const stepsWithDuration = trainSchedule.steps.map((step) => {
Expand All @@ -137,7 +92,6 @@ const ImportTrainScheduleConfigV2 = ({
return {
...step,
duration,
tracks: trackSectionsByOp[Number(step.uic)] || [],
};
});
return {
Expand Down
Loading

0 comments on commit 2c8576b

Please sign in to comment.