1- import { useState , useMemo , useEffect } from "react" ;
1+ import { useState , useMemo , useEffect , useRef } from "react" ;
22import PropTypes from "prop-types" ;
33import { Box , Stepper , Step , StepLabel } from "@mui/material" ;
44import { useSnackbar } from "notistack" ;
55import { useFormik } from "formik" ;
6+ import { useTourContext } from "../tour/TourProvider" ;
67import SetNameAndDatasetStep from "./SetNameAndDatasetStep" ;
78import PrepareDatasetStep from "../experiments/PrepareDatasetStep" ;
89import FormSchemaButtonGroup from "../shared/FormSchemaButtonGroup" ;
@@ -23,13 +24,40 @@ function CreateSessionSteps({
2324 const [ activeStep , setActiveStep ] = useState ( 0 ) ;
2425 const { enqueueSnackbar } = useSnackbar ( ) ;
2526 const { t } = useTranslation ( [ "models" , "common" ] ) ;
27+ const tourContext = useTourContext ( ) ;
28+ const hasAdvancedTourRef = useRef ( false ) ;
2629
2730 const [ selectedDataset , setSelectedDataset ] = useState (
2831 preselectedDatasetId
2932 ? datasets . find ( ( d ) => d . id === preselectedDatasetId ) || null
3033 : null ,
3134 ) ;
3235
36+ const handleDatasetChange = ( newDataset ) => {
37+ setSelectedDataset ( newDataset ) ;
38+ if (
39+ tourContext ?. run &&
40+ tourContext ?. stepIndex === 5 &&
41+ newDataset &&
42+ ! hasAdvancedTourRef . current
43+ ) {
44+ hasAdvancedTourRef . current = true ;
45+ const waitForElement = ( ) => {
46+ const element = document . querySelector (
47+ '[data-tour="models-next-button"]' ,
48+ ) ;
49+ if ( element ) {
50+ setTimeout ( ( ) => {
51+ tourContext . nextStep ( ) ;
52+ } , 100 ) ;
53+ } else {
54+ setTimeout ( waitForElement , 100 ) ;
55+ }
56+ } ;
57+ setTimeout ( waitForElement , 200 ) ;
58+ }
59+ } ;
60+
3361 const [ newExp , setNewExp ] = useState ( {
3462 name : "" ,
3563 dataset : null ,
@@ -84,6 +112,22 @@ function CreateSessionSteps({
84112 } ) ) ;
85113 setActiveStep ( 1 ) ;
86114 setNextEnabled ( false ) ;
115+
116+ if ( tourContext ?. run && tourContext ?. stepIndex === 6 ) {
117+ const waitForElement = ( ) => {
118+ const element = document . querySelector (
119+ '[data-tour="models-validation-alert"]' ,
120+ ) ;
121+ if ( element ) {
122+ setTimeout ( ( ) => {
123+ tourContext . nextStep ( ) ;
124+ } , 100 ) ;
125+ } else {
126+ setTimeout ( waitForElement , 100 ) ;
127+ }
128+ } ;
129+ setTimeout ( waitForElement , 300 ) ;
130+ }
87131 } else if ( activeStep === 1 ) {
88132 await createSession ( ) ;
89133 }
@@ -180,6 +224,11 @@ function CreateSessionSteps({
180224 variant : "success" ,
181225 } ) ;
182226
227+ if ( tourContext ?. run ) {
228+ tourContext . stopTour ( ) ;
229+ sessionStorage . setItem ( "startModelsSessionTour" , "true" ) ;
230+ }
231+
183232 if ( handleSessionCreated ) {
184233 handleSessionCreated ( response ) ;
185234 }
@@ -196,7 +245,6 @@ function CreateSessionSteps({
196245 return (
197246 < >
198247 < Box sx = { { height : "100%" , display : "flex" , flexDirection : "column" } } >
199- { /* Stepper */ }
200248 < Box sx = { { p : 2 } } >
201249 < Stepper activeStep = { activeStep } >
202250 { steps . map ( ( label ) => (
@@ -207,16 +255,16 @@ function CreateSessionSteps({
207255 </ Stepper >
208256 </ Box >
209257
210- { /* Step content */ }
211258 < Box sx = { { flexGrow : 1 , overflow : "auto" , p : 2 } } >
212259 { activeStep === 0 && (
213260 < SetNameAndDatasetStep
214261 formik = { formik }
215262 selectedDataset = { selectedDataset }
216- setSelectedDataset = { setSelectedDataset }
263+ setSelectedDataset = { handleDatasetChange }
217264 datasets = { datasets }
218265 nameError = { nameError }
219266 selectedTask = { selectedTask }
267+ onDatasetChange = { handleDatasetChange }
220268 />
221269 ) }
222270 { activeStep === 1 && (
@@ -228,11 +276,11 @@ function CreateSessionSteps({
228276 ) }
229277 </ Box >
230278
231- { /* Footer with navigation buttons */ }
232279 < Box sx = { { display : "flex" , justifyContent : "flex-end" , p : 2 } } >
233280 < FormSchemaButtonGroup
234281 onCancel = { handleBack }
235282 onFormSubmit = { formik . handleSubmit }
283+ dataTour = "models-next-button"
236284 formik = { {
237285 errors : {
238286 ...( nameError ? { name : nameError } : { } ) ,
@@ -254,7 +302,6 @@ function CreateSessionSteps({
254302 </ Box >
255303 </ Box >
256304
257- { /* Job Queue Widget */ }
258305 < Box
259306 sx = { {
260307 position : "fixed" ,
0 commit comments