@@ -2,33 +2,36 @@ import { useContext } from 'react';
2
2
3
3
import cx from 'classnames' ;
4
4
5
- import type {
6
- ProjectWithStudies ,
7
- ScenarioWithDetails ,
8
- StudyWithScenarios ,
5
+ import {
6
+ osrdEditoastApi ,
7
+ type ProjectWithStudies ,
8
+ type ScenarioWithDetails ,
9
+ type StudyWithScenarios ,
9
10
} from 'common/api/osrdEditoastApi' ;
10
11
import { ModalContext } from 'common/BootstrapSNCF/ModalSNCF/ModalProvider' ;
11
- import { useOsrdConfActions } from 'common/osrdContext' ;
12
+ import { getScenarioDatetimeWindow } from 'modules/scenario/helpers/utils' ;
13
+ import { updateStdcmEnvironment } from 'reducers/osrdconf/stdcmConf' ;
12
14
import { useAppDispatch } from 'store' ;
13
15
14
16
import Project2Image from './ScenarioExplorerProject2Image' ;
15
17
16
18
type MiniCardProps = {
17
19
isSelected ?: boolean ;
18
- setSelectedID : ( arg0 ?: number ) => void ;
19
20
} ;
20
21
21
- interface MiniCardProjectProps extends MiniCardProps {
22
+ type MiniCardProjectProps = MiniCardProps & {
22
23
project : ProjectWithStudies ;
23
- }
24
- interface MiniCardStudyProps extends MiniCardProps {
24
+ setSelectedID : ( id : number ) => void ;
25
+ } ;
26
+ type MiniCardStudyProps = MiniCardProps & {
25
27
study : StudyWithScenarios ;
26
- }
27
- interface MiniCardScenarioProps extends MiniCardProps {
28
+ setSelectedID : ( id : number ) => void ;
29
+ } ;
30
+ type MiniCardScenarioProps = MiniCardProps & {
28
31
scenario : ScenarioWithDetails ;
29
32
projectID : number ;
30
33
studyID : number ;
31
- }
34
+ } ;
32
35
33
36
export const ProjectMiniCard = ( { project, setSelectedID, isSelected } : MiniCardProjectProps ) => (
34
37
< div
@@ -71,24 +74,38 @@ export const StudyMiniCard = ({ study, setSelectedID, isSelected }: MiniCardStud
71
74
72
75
export const ScenarioMiniCard = ( {
73
76
scenario,
74
- setSelectedID,
75
77
isSelected,
76
78
projectID,
77
79
studyID,
78
80
} : MiniCardScenarioProps ) => {
79
81
const dispatch = useAppDispatch ( ) ;
80
82
const { closeModal } = useContext ( ModalContext ) ;
81
- const { updateInfraID, updateProjectID, updateScenarioID, updateStudyID, updateTimetableID } =
82
- useOsrdConfActions ( ) ;
83
- const selectScenario = ( ) => {
84
- setSelectedID ( scenario . id ) ;
85
- dispatch ( updateProjectID ( projectID ) ) ;
86
- dispatch ( updateStudyID ( studyID ) ) ;
87
- dispatch ( updateScenarioID ( scenario . id ) ) ;
88
- dispatch ( updateInfraID ( scenario . infra_id ) ) ;
89
- dispatch ( updateTimetableID ( scenario . timetable_id ) ) ;
83
+
84
+ const [ getTimetableTrainSchedules ] =
85
+ osrdEditoastApi . endpoints . getAllTimetableByIdTrainSchedules . useLazyQuery ( ) ;
86
+
87
+ const selectScenario = async ( ) => {
88
+ const trainSchedules = await getTimetableTrainSchedules ( {
89
+ timetableId : scenario . timetable_id ,
90
+ } ) . unwrap ( ) ;
91
+
92
+ const scenarioDateTimeWindow = getScenarioDatetimeWindow ( trainSchedules ) ;
93
+
94
+ dispatch (
95
+ updateStdcmEnvironment ( {
96
+ infraID : scenario . infra_id ,
97
+ timetableID : scenario . timetable_id ,
98
+ electricalProfileSetId : scenario . electrical_profile_set_id ,
99
+ searchDatetimeWindow : scenarioDateTimeWindow ,
100
+ projectID,
101
+ studyID,
102
+ scenarioID : scenario . id ,
103
+ } )
104
+ ) ;
105
+
90
106
closeModal ( ) ;
91
107
} ;
108
+
92
109
return (
93
110
< div
94
111
className = { cx ( 'minicard' , 'scenario' , {
0 commit comments