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 @@ interface NumberComponentProps {
readOnly: boolean;
docString: string;
isInstantUpdate: boolean;
unit?: string;
}
// TODO: highlight the digit that is being changed by setting both selectionStart and
@@ -100,7 +101,7 @@ const handleDeleteKey = (
};
export const NumberComponent = React.memo((props: NumberComponentProps) => {
const { name, parent_path, readOnly, docString, isInstantUpdate } = props;
const { name, parent_path, readOnly, docString, isInstantUpdate, unit } = props;
const renderCount = useRef(0);
// Create a state for the cursor position
const [cursorPosition, setCursorPosition] = useState(null);
@@ -242,6 +243,7 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => {
onBlur={handleBlur}
className={isInstantUpdate && !readOnly ? 'instantUpdate' : ''}
/>
{unit && <InputGroup.Text>{unit}</InputGroup.Text>}
</InputGroup>
{!readOnly && (
<div className="d-flex flex-column">