feat: adding support for units

With `pint` as the unit package, the user can now define Quantities as
attributes of their DataService class. This will be rendered as a float
in the frontend application with the unit as an additional field
appended to the form.
This commit is contained in:
Mose Müller
2023-08-07 14:03:59 +02:00
parent 90869f07a7
commit eed309590e
17 changed files with 243 additions and 23 deletions

View File

@ -14,6 +14,7 @@ type AttributeType =
| 'bool'
| 'float'
| 'int'
| 'Quantity'
| 'list'
| 'method'
| 'DataService'
@ -61,6 +62,19 @@ export const GenericComponent = React.memo(
isInstantUpdate={isInstantUpdate}
/>
);
} else if (attribute.type === 'Quantity') {
return (
<NumberComponent
name={name}
type="float"
parent_path={parentPath}
docString={attribute.doc}
readOnly={attribute.readonly}
value={Number(attribute.value['magnitude'])}
unit={attribute.value['unit']}
isInstantUpdate={isInstantUpdate}
/>
);
} else if (attribute.type === 'NumberSlider') {
return (
<SliderComponent