diff --git a/front/src/applications/stdcm/components/StdcmForm/StdcmOpSchedule.tsx b/front/src/applications/stdcm/components/StdcmForm/StdcmOpSchedule.tsx
index 04be718fc60..0dc025d6a75 100644
--- a/front/src/applications/stdcm/components/StdcmForm/StdcmOpSchedule.tsx
+++ b/front/src/applications/stdcm/components/StdcmForm/StdcmOpSchedule.tsx
@@ -9,6 +9,7 @@ import { getSearchDatetimeWindow } from 'reducers/osrdconf/stdcmConf/selectors';
import type { StdcmPathStep } from 'reducers/osrdconf/types';
import { useAppDispatch } from 'store';
import { formatDateString } from 'utils/date';
+import { Duration } from 'utils/duration';
import { createStringSelectOptions } from 'utils/uiCoreHelpers';
import type { ArrivalTimeTypes, ScheduleConstraint } from '../../types';
@@ -41,8 +42,8 @@ const StdcmOpSchedule = ({ disabled, pathStep, opId, isOrigin = false }: StdcmOp
const tolerances = useMemo(
() => ({
- minusTolerance: pathStep.tolerances.before,
- plusTolerance: pathStep.tolerances.after,
+ minusTolerance: pathStep.tolerances.before.total('second'),
+ plusTolerance: pathStep.tolerances.after.total('second'),
}),
[pathStep.tolerances]
);
@@ -148,7 +149,12 @@ const StdcmOpSchedule = ({ disabled, pathStep, opId, isOrigin = false }: StdcmOp
dispatch(
updateStdcmPathStep({
id: pathStep.id,
- updates: { tolerances: { before: minusTolerance, after: plusTolerance } },
+ updates: {
+ tolerances: {
+ before: new Duration({ seconds: minusTolerance }),
+ after: new Duration({ seconds: plusTolerance }),
+ },
+ },
})
);
}}
diff --git a/front/src/applications/stdcm/components/StdcmResults/SimulationReportSheet.tsx b/front/src/applications/stdcm/components/StdcmResults/SimulationReportSheet.tsx
index 0b28380ebe6..7670617c881 100644
--- a/front/src/applications/stdcm/components/StdcmResults/SimulationReportSheet.tsx
+++ b/front/src/applications/stdcm/components/StdcmResults/SimulationReportSheet.tsx
@@ -11,7 +11,6 @@ import { dateToHHMMSS, formatDateToString, formatDay } from 'utils/date';
import { Duration } from 'utils/duration';
import { msToKmh } from 'utils/physics';
import { capitalizeFirstLetter } from 'utils/strings';
-import { secToMin } from 'utils/timeManipulation';
import styles from './SimulationReportStyleSheet';
import type { SimulationReportSheetProps } from '../../types';
@@ -203,12 +202,12 @@ const SimulationReportSheet = ({
{step.tolerances?.before
- ? `+${secToMin(step.tolerances?.before)}`
+ ? `+${step.tolerances.before.total('minute')}`
: ''}
{step.tolerances?.after
- ? `-${secToMin(step.tolerances?.after)}`
+ ? `-${step.tolerances.after.total('minute')}`
: ''}
@@ -237,10 +236,10 @@ const SimulationReportSheet = ({
step.arrivalType === 'preciseTime' && (
- {`+${secToMin(step.tolerances.before)}`}
+ {`+${step.tolerances.before.total('minute')}`}
- {`-${secToMin(step.tolerances.after)}`}
+ {`-${step.tolerances.after.total('minute')}`}
)}
diff --git a/front/src/applications/stdcm/utils/formatStdcmConf.ts b/front/src/applications/stdcm/utils/formatStdcmConf.ts
index 83a1fb6c843..c7dd9f45c8e 100644
--- a/front/src/applications/stdcm/utils/formatStdcmConf.ts
+++ b/front/src/applications/stdcm/utils/formatStdcmConf.ts
@@ -165,8 +165,8 @@ export const checkStdcmConf = (
if (arrivalType === 'preciseTime' && arrival) {
timingData = {
arrival_time: arrival.toISOString(),
- arrival_time_tolerance_before: sec2ms(tolerances?.before ?? 0),
- arrival_time_tolerance_after: sec2ms(tolerances?.after ?? 0),
+ arrival_time_tolerance_before: tolerances.before.ms,
+ arrival_time_tolerance_after: tolerances.after.ms,
};
}
}
diff --git a/front/src/reducers/osrdconf/stdcmConf/index.ts b/front/src/reducers/osrdconf/stdcmConf/index.ts
index 152d321bcdb..4d9b3530c71 100644
--- a/front/src/reducers/osrdconf/stdcmConf/index.ts
+++ b/front/src/reducers/osrdconf/stdcmConf/index.ts
@@ -14,9 +14,10 @@ import { defaultCommonConf, buildCommonConfReducers } from 'reducers/osrdconf/os
import type { OsrdStdcmConfState, StdcmPathStep } from 'reducers/osrdconf/types';
import { addElementAtIndex, replaceElementAtIndex } from 'utils/array';
import { isArrivalDateInSearchTimeWindow } from 'utils/date';
+import { Duration } from 'utils/duration';
import type { ArrayElement, PickAndNonNullableFields } from 'utils/types';
-const DEFAULT_TOLERANCE = 1800; // 30min
+const DEFAULT_TOLERANCE = new Duration({ minutes: 30 });
export const stdcmConfInitialState: OsrdStdcmConfState = {
...defaultCommonConf,
diff --git a/front/src/reducers/osrdconf/stdcmConf/stdcmConfReducers.spec.ts b/front/src/reducers/osrdconf/stdcmConf/stdcmConfReducers.spec.ts
index 1529f089f14..45793c03577 100644
--- a/front/src/reducers/osrdconf/stdcmConf/stdcmConfReducers.spec.ts
+++ b/front/src/reducers/osrdconf/stdcmConf/stdcmConfReducers.spec.ts
@@ -25,6 +25,7 @@ import {
} from 'reducers/osrdconf/stdcmConf';
import type { OsrdStdcmConfState, StandardAllowance, StdcmPathStep } from 'reducers/osrdconf/types';
import { createStoreWithoutMiddleware } from 'store';
+import { Duration } from 'utils/duration';
import commonConfBuilder from '../osrdConfCommon/__tests__/commonConfBuilder';
import testCommonConfReducers from '../osrdConfCommon/__tests__/utils';
@@ -180,8 +181,8 @@ describe('stdcmConfReducers', () => {
arrivalType: ArrivalTimeTypes.ASAP,
arrival: new Date('2024-08-12T15:45:00.000+02:00'),
tolerances: {
- before: 60,
- after: 60,
+ before: new Duration({ seconds: 60 }),
+ after: new Duration({ seconds: 60 }),
},
};
@@ -210,8 +211,8 @@ describe('stdcmConfReducers', () => {
arrivalType: ArrivalTimeTypes.ASAP,
arrival: new Date('2024-08-12T15:45:00.000+02:00'),
tolerances: {
- before: 60,
- after: 60,
+ before: new Duration({ seconds: 60 }),
+ after: new Duration({ seconds: 60 }),
},
};
diff --git a/front/src/reducers/osrdconf/types.ts b/front/src/reducers/osrdconf/types.ts
index be4d7010b18..4e33ac3d60c 100644
--- a/front/src/reducers/osrdconf/types.ts
+++ b/front/src/reducers/osrdconf/types.ts
@@ -123,7 +123,7 @@ export type StdcmPathStep = {
arrivalType: ArrivalTimeTypes;
// TODO: make arrival non nullable (/!\ store migration)
arrival?: Date;
- tolerances: { before: number; after: number };
+ tolerances: { before: Duration; after: Duration };
}
);