@@ -59,50 +59,53 @@ export function DynamicForm() {
59
59
return value . valid ? value . value : "" ;
60
60
}
61
61
62
- const handleTestdataChange = ( value : string ) => {
62
+ const handleConfigChange = ( type : 'testdata' | 'user' | 'plan' , value : string ) => {
63
63
reset ( { } ) ;
64
64
setPrevValues ( { } ) ;
65
65
setResponse ( null ) ;
66
66
setCurrentId ( 0 ) ;
67
67
68
68
const params = new URLSearchParams ( window . location . search ) ;
69
- params . set ( 'testdata' , value ) ;
69
+
70
+ if ( type === 'testdata' ) {
71
+ params . set ( 'testdata' , value ) ;
72
+ setUrlTestdata ( value ) ;
73
+ // Clear user and plan when testdata changes
74
+ setPlan ( "" ) ;
75
+ setUser ( "" ) ;
76
+ params . delete ( 'user' ) ;
77
+ params . delete ( 'plan' ) ;
78
+ } else if ( type === 'user' ) {
79
+ if ( value ) {
80
+ params . set ( 'user' , value ) ;
81
+ setUser ( value ) ;
82
+ } else {
83
+ params . delete ( 'user' ) ;
84
+ setUser ( "" ) ;
85
+ }
86
+ } else if ( type === 'plan' ) {
87
+ if ( value ) {
88
+ params . set ( 'plan' , value ) ;
89
+ setPlan ( value ) ;
90
+ } else {
91
+ params . delete ( 'plan' ) ;
92
+ setPlan ( "" ) ;
93
+ }
94
+ }
95
+
70
96
const newUrl = `${ window . location . pathname } ?${ params . toString ( ) } ` ;
71
97
window . history . replaceState ( { } , '' , newUrl ) ;
72
- setUrlTestdata ( value ) ;
73
- setPlan ( "" ) ;
74
- setUser ( "" ) ;
75
98
} ;
76
99
77
100
const {
78
101
users,
79
102
isLoading : usersLoading ,
80
103
fetchError : usersFetchError
81
104
} = useUsers ( serverAddress , urlTestdata ) ;
82
-
83
- // Update URL when user or usePlan changes
84
- useEffect ( ( ) => {
85
- const params = new URLSearchParams ( window . location . search ) ;
86
-
87
- if ( plan ) {
88
- params . set ( 'plan' , plan ) ;
89
- } else {
90
- params . delete ( 'plan' ) ;
91
- }
92
-
93
- if ( user ) {
94
- params . set ( 'user' , user ) ;
95
- } else {
96
- params . delete ( 'user' ) ;
97
- }
98
-
99
- const newUrl = `${ window . location . pathname } ?${ params . toString ( ) } ` ;
100
- window . history . replaceState ( { } , '' , newUrl ) ;
101
- } , [ user , plan ] ) ;
102
105
103
106
const wsUrl = `ws://${ serverAddress } /ws/${ encodeURIComponent ( urlTestdata ) } ?${ plan ? `plan=${ encodeURIComponent ( plan ) } &` : '' } ${ user ? `user=${ encodeURIComponent ( user ) } ` : '' } ` ;
104
107
105
- const { message : serverResponse , sendMessage, connectionStatus } = useWebSocket < Response > ( wsUrl , urlTestdata ) ;
108
+ const { message : serverResponse , sendMessage, connectionStatus } = useWebSocket < Response > ( wsUrl , urlTestdata , user , plan ) ;
106
109
107
110
const [ response , setResponse ] = useState < Response | null > ( null ) ;
108
111
const [ currentId , setCurrentId ] = useState < number > ( 0 ) ;
@@ -418,7 +421,7 @@ export function DynamicForm() {
418
421
419
422
return (
420
423
< div key = { param . name } className = "flex flex-col gap-2 text-left" >
421
- < p style = { { color : "red" } } > form_type is required</ p >
424
+ { /* <p style={{ color: "red" }}>form_type is required</p> */ }
422
425
{ renderDiagnostics ( param . diagnostics ) }
423
426
</ div >
424
427
) ;
@@ -469,7 +472,7 @@ export function DynamicForm() {
469
472
{ testcontrols &&
470
473
< div className = "flex flex-row gap-4 mb-12" >
471
474
< Select
472
- onValueChange = { handleTestdataChange }
475
+ onValueChange = { ( value ) => handleConfigChange ( 'testdata' , value ) }
473
476
value = { urlTestdata }
474
477
>
475
478
< SelectTrigger className = "w-fit" >
@@ -488,9 +491,7 @@ export function DynamicForm() {
488
491
489
492
{ Object . keys ( users ) . length > 0 && (
490
493
< Select
491
- onValueChange = { ( value ) => {
492
- setUser ( value ) ;
493
- } }
494
+ onValueChange = { ( value ) => handleConfigChange ( 'user' , value ) }
494
495
value = { user }
495
496
>
496
497
< SelectTrigger className = "w-fit" >
@@ -512,7 +513,7 @@ export function DynamicForm() {
512
513
Use Plan
513
514
< Switch
514
515
checked = { plan !== "" }
515
- onCheckedChange = { ( ) => setPlan ( plan !== "" ? "" : "plan.json " ) }
516
+ onCheckedChange = { ( checked ) => handleConfigChange ( ' plan' , checked ? "plan.json " : "" ) }
516
517
/>
517
518
</ span >
518
519
</ div >
0 commit comments