@@ -7,7 +7,6 @@ import Highlight from "react-highlight";
77import { useTranslation } from "react-i18next" ;
88import { Link } from "react-router" ;
99
10- import { LoaderFill } from "../../../../components/Loader" ;
1110import MessageAlert from "../../../../components/MessageAlert" ;
1211import {
1312 CodeEditorIcon ,
@@ -27,7 +26,7 @@ import { sessionAtom } from "../../../../core/session";
2726
2827export const LayoutForm : FC < {
2928 layout : Layout ;
30- onStart : ( params : Record < string , unknown > ) => void ;
29+ onStart : ( params : Record < string , unknown > , restart ?: boolean ) => void ;
3130 onStop : ( ) => void ;
3231 isRunning : boolean ;
3332} > = ( { layout, onStart, onStop, isRunning } ) => {
@@ -74,8 +73,16 @@ export const LayoutForm: FC<{
7473 errors [ param . id ] = t ( `error.form.max` , { ...param , name } ) ;
7574 } ) ;
7675
77- setErrors ( Object . keys ( errors ) . length > 0 ? errors : null ) ;
78- } , [ layout , layoutParameters , t ] ) ;
76+ const hasError = Object . keys ( errors ) . length > 0
77+ setErrors ( hasError ? errors : null ) ;
78+
79+ if ( layout . type === "worker" && ! hasError && isRunning ) {
80+ onStart ( layoutParameters , true ) ;
81+
82+ }
83+ // I don't want to trigger this useeffect when the isRunning value changed
84+ // eslint-disable-next-line react-hooks/exhaustive-deps
85+ } , [ layout , layoutParameters , t , onStart ] ) ;
7986
8087 /**
8188 * When the layout change
@@ -187,7 +194,6 @@ export const LayoutForm: FC<{
187194 param . description ? t ( `layouts.${ layout . id } .parameters.${ param . id } .description` ) : undefined
188195 }
189196 value = { value as number }
190- disabled = { isRunning }
191197 onChange = { ( v ) => changeParameter ( param . id , v ) }
192198 required = { param . required || false }
193199 min = { param . min }
@@ -203,7 +209,6 @@ export const LayoutForm: FC<{
203209 param . description ? t ( `layouts.${ layout . id } .parameters.${ param . id } .description` ) : undefined
204210 }
205211 value = { ! ! value as boolean }
206- disabled = { isRunning }
207212 onChange = { ( v ) => changeParameter ( param . id , v ) }
208213 required = { param . required || false }
209214 />
@@ -218,7 +223,6 @@ export const LayoutForm: FC<{
218223 }
219224 placeholder = { t ( "common.none" ) }
220225 value = { value as string }
221- disabled = { isRunning }
222226 onChange = { ( v ) => changeParameter ( param . id , v ) }
223227 options = { ( ( param . itemType === "nodes" ? nodeFields : edgeFields ) as FieldModel [ ] )
224228 . filter ( ( field ) => ( param . restriction ? param . restriction . includes ( field . type ) : true ) )
@@ -286,7 +290,6 @@ export const LayoutForm: FC<{
286290 </ div >
287291 ) ;
288292 } ) }
289- { isRunning && < LoaderFill /> }
290293 </ div >
291294 </ div >
292295
@@ -324,7 +327,6 @@ export const LayoutForm: FC<{
324327 const graph = getFilteredDataGraph ( dataset , sigmaGraph ) ;
325328 setParameters ( getSettings ( layoutParameters , graph ) ) ;
326329 } }
327- disabled = { isRunning }
328330 >
329331 < GuessSettingsIcon />
330332 </ button >
@@ -334,7 +336,6 @@ export const LayoutForm: FC<{
334336 title = { t ( "common.reset" ) }
335337 className = "gl-btn gl-btn-outline gl-btn-icon"
336338 onClick = { ( ) => setParameters ( ) }
337- disabled = { isRunning }
338339 >
339340 < ResetIcon />
340341 </ button >
0 commit comments