Skip to content

Commit

Permalink
Merge branch 'akale-add-better-compiler-errors' into akale-add-checkb…
Browse files Browse the repository at this point in the history
…ox-parameter
  • Loading branch information
atharvakale343 committed Jan 15, 2025
2 parents 04ac2ad + 1090cf1 commit bfbc5f6
Showing 1 changed file with 86 additions and 47 deletions.
133 changes: 86 additions & 47 deletions src/renderer/components/ParameterField.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,32 @@
import { ParameterSchema } from 'src/shared/generated_models';
import { match, NonExhaustiveError } from 'ts-pattern';
import log from 'electron-log/renderer';
import { ReactNode } from 'react';
import TextField from './parameter_fields/TextField';
import IntField from './parameter_fields/IntField';
import FloatField from './parameter_fields/FloatField';
import EnumField from './parameter_fields/EnumField';
import RangedIntField from './parameter_fields/RangedIntField';
import RangedFloatField from './parameter_fields/RangedFloatField';

function LabelAndSubtitle({
children,
label,
subtitle,
}: {
children: ReactNode;
label: string;
subtitle: string | null;
}) {
return (
<div>
<h2 className="font-semibold text-sm xl:text-base mb-2">{label}</h2>
{subtitle && <p className="text-xs mt-1">{subtitle}</p>}
{children}
</div>
);
}

function getFieldByParameterSchema(
parameterSchema: ParameterSchema,
value: any,
Expand All @@ -18,62 +37,92 @@ function getFieldByParameterSchema(
return match(parameterSchema.value)
.with({ parameterType: 'text' }, () => {
return (
<TextField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<TextField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.with({ parameterType: 'int' }, () => {
return (
<IntField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<IntField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.with({ parameterType: 'float' }, () => {
return (
<FloatField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<FloatField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.with({ parameterType: 'enum' }, () => {
return (
<EnumField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<EnumField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.with({ parameterType: 'ranged_int' }, () => {
return (
<RangedIntField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<RangedIntField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.with({ parameterType: 'ranged_float' }, () => {
return (
<RangedFloatField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
<LabelAndSubtitle
label={parameterSchema.label}
subtitle={parameterSchema.subtitle}
>
<RangedFloatField
parameterSchema={parameterSchema}
value={value}
onChange={onChange}
disabled={disabled}
/>
</LabelAndSubtitle>
);
})
.exhaustive();
Expand Down Expand Up @@ -102,15 +151,5 @@ export default function ParameterField({
// eslint-disable-next-line
disabled?: boolean;
}) {
return (
<div>
<h2 className="font-semibold text-sm xl:text-base mb-2">
{parameterSchema.label}
</h2>
{parameterSchema.subtitle && (
<p className="text-xs mt-1">{parameterSchema.subtitle}</p>
)}
{getFieldByParameterSchema(parameterSchema, value, onChange, disabled)}
</div>
);
return getFieldByParameterSchema(parameterSchema, value, onChange, disabled);
}

0 comments on commit bfbc5f6

Please sign in to comment.