Skip to content

Commit 802de16

Browse files
committed
fix: extra parameterValue function
1 parent e1ee9db commit 802de16

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

site/src/DynamicForm.tsx

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
Response,
77
Parameter,
88
Request,
9-
Diagnostics
9+
Diagnostics,
10+
NullHCLString
1011
} from "./types/preview";
1112
import { Select, SelectTrigger, SelectValue, SelectContent, SelectGroup, SelectItem } from "./components/Select/Select";
1213
import { Input } from "./components/Input/Input";
@@ -48,6 +49,10 @@ export function DynamicForm() {
4849
fetchError
4950
} = useDirectories(serverAddress, urlTestdata);
5051

52+
const parameterValue = (value: NullHCLString) => {
53+
return value.valid ? value.value : "";
54+
}
55+
5156
const handleTestdataChange = (value: string) => {
5257
reset({});
5358
setPrevValues({});
@@ -113,9 +118,7 @@ export function DynamicForm() {
113118
if (response?.parameters) {
114119
const defaultValues: Record<string, string> = {};
115120
response.parameters.forEach((param) => {
116-
// If the server-sent param.Value is empty, we can fall back to `default_value`
117-
defaultValues[param.name] =
118-
param.value.value || param.default_value.value || "";
121+
defaultValues[param.name] = parameterValue(param.value);
119122
});
120123

121124
// Use RHF's `reset` to update the entire form
@@ -194,7 +197,7 @@ export function DynamicForm() {
194197
render={({ field }) => (
195198
<Select
196199
onValueChange={field.onChange}
197-
defaultValue={param.default_value.value}
200+
defaultValue={parameterValue(param.default_value)}
198201
>
199202
<SelectTrigger className="w-[300px]">
200203
<SelectValue placeholder={param.description} />
@@ -204,7 +207,7 @@ export function DynamicForm() {
204207
{(param.options || []).map((option, idx) => {
205208
if (!option) return null;
206209
return (
207-
<SelectItem key={idx} value={option.value.value}>{option.name}</SelectItem>
210+
<SelectItem key={idx} value={parameterValue(option.value)}>{option.name}</SelectItem>
208211
);
209212
})}
210213
</SelectGroup>
@@ -234,7 +237,7 @@ export function DynamicForm() {
234237
}}
235238
onChange={(selectedOptions) => {
236239
const values = selectedOptions.map(opt => opt.value).join(',');
237-
field.onChange(values);
240+
field.onChange(JSON.stringify(values));
238241
}}
239242
options={param.options?.map(opt => ({
240243
value: opt?.value?.value || '',
@@ -264,17 +267,16 @@ export function DynamicForm() {
264267
{param.display_name || param.name}
265268
{param.icon && <img src={param.icon} alt="" style={{ marginLeft: 6 }} />}
266269
</label>
267-
<output className="text-sm font-medium tabular-nums">{param.value.value}</output>
270+
<output className="text-sm font-medium tabular-nums">{parameterValue(param.value)}</output>
268271
</div>
269272
{param.description && <div className="text-sm">{param.description}</div>}
270273
<Controller
271274
name={param.name}
272275
control={methods.control}
273276
render={({ field }) => (
274277
<div className="w-[300px]">
275-
<Slider defaultValue={param.default_value ? [Number(param.default_value)] : [0]} max={param.validations[0].validation_max || undefined} min={param.validations[0].validation_min || undefined} step={1}
278+
<Slider defaultValue={param?.default_value?.value ? [Number(param.default_value.value)] : [0]} max={param.validations[0].validation_max || undefined} min={param.validations[0].validation_min || undefined} step={1}
276279
onValueChange={(value) => {
277-
console.log("value", value[0].toString());
278280
field.onChange(value[0].toString());
279281
}}/>
280282
</div>
@@ -290,21 +292,21 @@ export function DynamicForm() {
290292
{param.display_name || param.name}
291293
{param.icon && <img src={param.icon} alt="" style={{ marginLeft: 6 }} />}
292294
</label>
293-
<output className="text-sm font-medium tabular-nums">{param.value.value}</output>
295+
<output className="text-sm font-medium tabular-nums">{parameterValue(param.value)}</output>
294296
</div>
295297
{param.description && <div className="text-sm">{param.description}</div>}
296298
<Controller
297299
name={param.name}
298300
control={methods.control}
299301
render={({ field }) => (
300302
<div className="w-[300px]">
301-
<RadioGroup defaultValue={param.default_value.value} onValueChange={field.onChange}>
303+
<RadioGroup defaultValue={parameterValue(param.default_value)} onValueChange={field.onChange}>
302304
{(param.options || []).map((option, idx) => {
303305
if (!option) return null;
304306
return (
305307
<div key={idx} className="flex items-center space-x-2">
306-
<RadioGroupItem value={option.value.value} id={option.value.value} />
307-
<Label htmlFor={option.value.value}>{option.name}</Label>
308+
<RadioGroupItem value={parameterValue(option.value)} id={parameterValue(option.value)} />
309+
<Label htmlFor={parameterValue(option.value)}>{option.name}</Label>
308310
</div>
309311
);
310312
})}
@@ -333,7 +335,7 @@ export function DynamicForm() {
333335
render={({ field }) => (
334336
<Select
335337
onValueChange={field.onChange}
336-
defaultValue={param.value.value}
338+
defaultValue={parameterValue(param.value)}
337339
>
338340
<SelectTrigger className="w-[300px]">
339341
<SelectValue placeholder={param.description} />
@@ -343,7 +345,7 @@ export function DynamicForm() {
343345
{(param.options || []).map((option, idx) => {
344346
if (!option) return null;
345347
return (
346-
<SelectItem key={idx} value={option.value.value}>{option.name}</SelectItem>
348+
<SelectItem key={idx} value={parameterValue(option.value)}>{option.name}</SelectItem>
347349
);
348350
})}
349351
</SelectGroup>
@@ -374,7 +376,7 @@ export function DynamicForm() {
374376
className="w-[300px]"
375377
type={mapParamTypeToInputType(param.type)}
376378
value={field.value}
377-
defaultValue={param.default_value.value}
379+
defaultValue={parameterValue(param.default_value)}
378380
/>
379381
)}
380382
/>

0 commit comments

Comments
 (0)