diff --git a/frontend/src/components/button.tsx b/frontend/src/components/ButtonComponent.tsx similarity index 67% rename from frontend/src/components/button.tsx rename to frontend/src/components/ButtonComponent.tsx index a817536..e4054e9 100644 --- a/frontend/src/components/button.tsx +++ b/frontend/src/components/ButtonComponent.tsx @@ -1,41 +1,45 @@ -import React, { MouseEventHandler, useEffect, useRef, useState } from 'react'; -import { OverlayTrigger, Badge, Button, Tooltip, ToggleButton } from 'react-bootstrap'; +import React, { useEffect, useRef } from 'react'; +import { OverlayTrigger, Badge, Tooltip, ToggleButton } from 'react-bootstrap'; +import { socket } from '../socket'; interface ButtonComponentProps { name: string; - fullname?: string; + parent_path?: string; value: boolean; readOnly: boolean; docString: string; - onToggle?: MouseEventHandler; mapping?: [string, string]; // Enforce a tuple of two strings } export const ButtonComponent = React.memo((props: ButtonComponentProps) => { const renderCount = useRef(0); - const [checked, setChecked] = useState(false); - useEffect(() => { renderCount.current++; }); - const { name, fullname, value, readOnly, docString, onToggle, mapping } = props; + const { name, parent_path: fullname, value, readOnly, docString, mapping } = props; const buttonName = mapping ? (value ? mapping[0] : mapping[1]) : name; const tooltip = {docString}; + const setChecked = (checked: boolean) => { + socket.emit('frontend_update', { + name: name, + fullname: fullname, + value: checked + }); + }; + return (

Render count: {renderCount.current}

setChecked(e.currentTarget.checked)}>

{buttonName}