diff --git a/front/src/applications/operationalStudies/components/MacroEditor/osrdToNge.ts b/front/src/applications/operationalStudies/components/MacroEditor/osrdToNge.ts index 02c50c521cb..4a7eeb816b3 100644 --- a/front/src/applications/operationalStudies/components/MacroEditor/osrdToNge.ts +++ b/front/src/applications/operationalStudies/components/MacroEditor/osrdToNge.ts @@ -302,16 +302,37 @@ export const loadAndIndexNge = async ( const getNgeTrainruns = (state: MacroEditorState, labels: LabelDto[]) => state.trainSchedules .filter((trainSchedule) => trainSchedule.path.length >= 2) - .map((trainSchedule) => ({ - id: trainSchedule.id, - name: trainSchedule.train_name, - categoryId: DEFAULT_TRAINRUN_CATEGORY.id, - frequencyId: DEFAULT_TRAINRUN_FREQUENCY.id, - trainrunTimeCategoryId: DEFAULT_TRAINRUN_TIME_CATEGORY.id, - labelIds: (trainSchedule.labels || []).map((l) => - labels.findIndex((e) => e.label === l && e.labelGroupId === TRAINRUN_LABEL_GROUP.id) - ), - })); + .map((trainSchedule) => { + // NGE trainrun frequency is stored as OSRD labels ('frequency::30' or 'frequency::120') + let trainrunFrequency: TrainrunFrequency | undefined; + if (trainSchedule.labels) { + trainSchedule.labels.forEach((label) => { + if (label.includes('frequency')) { + const frequency = parseInt(label.split('::')[1], 10); + const trainrunFrequencyFound = DEFAULT_TRAINRUN_FREQUENCIES.find( + (freq) => freq.frequency === frequency + ); + if ( + trainrunFrequencyFound && + (!trainrunFrequency || trainrunFrequencyFound.frequency < trainrunFrequency.frequency) + ) { + trainrunFrequency = trainrunFrequencyFound; + } + } + }); + } + + return { + id: trainSchedule.id, + name: trainSchedule.train_name, + categoryId: DEFAULT_TRAINRUN_CATEGORY.id, + frequencyId: trainrunFrequency?.id || DEFAULT_TRAINRUN_FREQUENCY.id, + trainrunTimeCategoryId: DEFAULT_TRAINRUN_TIME_CATEGORY.id, + labelIds: (trainSchedule.labels || []).map((l) => + labels.findIndex((e) => e.label === l && e.labelGroupId === TRAINRUN_LABEL_GROUP.id) + ), + }; + }); /** * Translate the train schedule in NGE "trainrunSection" & "nodes". @@ -494,7 +515,7 @@ export const getNgeDto = (state: MacroEditorState): NetzgrafikDto => { metadata: { netzgrafikColors: [], trainrunCategories: [DEFAULT_TRAINRUN_CATEGORY], - trainrunFrequencies: [DEFAULT_TRAINRUN_FREQUENCY], + trainrunFrequencies: DEFAULT_TRAINRUN_FREQUENCIES, trainrunTimeCategories: [DEFAULT_TRAINRUN_TIME_CATEGORY], }, trainruns: getNgeTrainruns(state, labels),