diff --git a/frontend/src/components/ButtonComponent.tsx b/frontend/src/components/ButtonComponent.tsx
index 8cc4223..7502478 100644
--- a/frontend/src/components/ButtonComponent.tsx
+++ b/frontend/src/components/ButtonComponent.tsx
@@ -1,6 +1,7 @@
import React, { useEffect, useRef } from 'react';
import { OverlayTrigger, Badge, Tooltip, ToggleButton } from 'react-bootstrap';
import { socket } from '../socket';
+import { DocStringComponent } from './DocStringComponent';
interface ButtonComponentProps {
name: string;
@@ -21,8 +22,6 @@ export const ButtonComponent = React.memo((props: ButtonComponentProps) => {
const buttonName = mapping ? (value ? mapping[0] : mapping[1]) : name;
- const tooltip = {docString};
-
const setChecked = (checked: boolean) => {
socket.emit('frontend_update', {
name: name,
@@ -34,6 +33,8 @@ export const ButtonComponent = React.memo((props: ButtonComponentProps) => {
return (
Render count: {renderCount.current}
+
+
{
onChange={(e) => setChecked(e.currentTarget.checked)}>
{buttonName}
-
- {docString && (
-
-
- ?
-
-
- )}
);
});
diff --git a/frontend/src/components/DocStringComponent.tsx b/frontend/src/components/DocStringComponent.tsx
new file mode 100644
index 0000000..a440183
--- /dev/null
+++ b/frontend/src/components/DocStringComponent.tsx
@@ -0,0 +1,23 @@
+import { Badge, Tooltip, OverlayTrigger } from 'react-bootstrap';
+import React from 'react';
+
+interface DocStringProps {
+ docString?: string;
+}
+
+export const DocStringComponent = React.memo((props: DocStringProps) => {
+ const { docString } = props;
+ if (!docString) {
+ return null; // render nothing if docString is not provided
+ }
+
+ const tooltip = {docString};
+
+ return (
+
+
+ ?
+
+
+ );
+});
diff --git a/frontend/src/components/NumberComponent.tsx b/frontend/src/components/NumberComponent.tsx
index a4ae320..44f8444 100644
--- a/frontend/src/components/NumberComponent.tsx
+++ b/frontend/src/components/NumberComponent.tsx
@@ -8,6 +8,7 @@ import {
Button
} from 'react-bootstrap';
import { socket } from '../socket';
+import { DocStringComponent } from './DocStringComponent';
// TODO: add button functionality
@@ -138,8 +139,6 @@ export const NumberComponent = React.memo((props: ButtonComponentProps) => {
const { name, parent_path, value, readOnly, docString } = props;
- const tooltip = {docString};
-
const handleKeyDown = (event) => {
const { key, target } = event;
if (key === 'F5' || key === 'ArrowRight' || key === 'ArrowLeft') {
@@ -209,6 +208,7 @@ export const NumberComponent = React.memo((props: ButtonComponentProps) => {
return (
Render count: {renderCount.current}
+
@@ -236,14 +236,6 @@ export const NumberComponent = React.memo((props: ButtonComponentProps) => {
-
- {docString && (
-
-
- ?
-
-
- )}
);
});
diff --git a/frontend/src/components/SliderComponent.tsx b/frontend/src/components/SliderComponent.tsx
index e44ad39..950cf2c 100644
--- a/frontend/src/components/SliderComponent.tsx
+++ b/frontend/src/components/SliderComponent.tsx
@@ -11,8 +11,8 @@ import {
Collapse
} from 'react-bootstrap';
import { socket } from '../socket';
-import './NumberComponent.css';
import RangeSlider from 'react-bootstrap-range-slider';
+import { DocStringComponent } from './DocStringComponent';
interface SliderComponentProps {
name: string;
@@ -38,8 +38,6 @@ export const SliderComponent = React.memo((props: SliderComponentProps) => {
const [max, setMax] = useState(props.max);
const [stepSize, setStepSize] = useState(props.stepSize);
- const tooltip = {docString};
-
const socketEmit = (
newNumber: number,
min: number = props.min,
@@ -75,6 +73,8 @@ export const SliderComponent = React.memo((props: SliderComponentProps) => {
return (
Render count: {renderCount.current}
+
+
{name}
@@ -126,14 +126,6 @@ export const SliderComponent = React.memo((props: SliderComponentProps) => {
-
- {docString && (
-
-
- ?
-
-
- )}
);
});