From bae1752e48925f9e1c36fc36c1c9b6ae5dcfb297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Wed, 2 Aug 2023 12:06:20 +0200 Subject: [PATCH] frontend: introducing DocStringComponent --- frontend/src/components/ButtonComponent.tsx | 13 +++-------- .../src/components/DocStringComponent.tsx | 23 +++++++++++++++++++ frontend/src/components/NumberComponent.tsx | 12 ++-------- frontend/src/components/SliderComponent.tsx | 14 +++-------- 4 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 frontend/src/components/DocStringComponent.tsx 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 && ( - - - ? - - - )} ); });