// PrinterMovementPanel.js import React, { useContext, useState } from 'react' import { Flex, Space, InputNumber, Button, Radio, Dropdown, Card, message // eslint-disable-line } from 'antd' import { SocketContext } from '../context/SocketContext' import PropTypes from 'prop-types' import LevelBedIcon from '../../Icons/LevelBedIcon' import ArrowLeftIcon from '../../Icons/ArrowLeftIcon' import ArrowRightIcon from '../../Icons/ArrowRightIcon' import ArrowUpIcon from '../../Icons/ArrowUpIcon' import ArrowDownIcon from '../../Icons/ArrowDownIcon' import HomeIcon from '../../Icons/HomeIcon' const PrinterMovementPanel = ({ printerId }) => { const [posValue, setPosValue] = useState(10) const [rateValue, setRateValue] = useState(1000) const { socket } = useContext(SocketContext) //const messageApi = message.useMessage() const handlePosRadioChange = (e) => { const value = e.target.value setPosValue(value) // Update posValue state when radio button changes } const handlePosInputChange = (value) => { setPosValue(value) // Update posValue state when input changes } const handleRateInputChange = (value) => { setRateValue(value) // Update rateValue state when input changes } const handleHomeAxisClick = (axis) => { if (socket) { console.log('Homeing Axis:', axis) socket.emit('printer.gcode.script', { printerId, script: `G28 ${axis}` }) } } const handleMoveAxisClick = (axis, minus) => { const distanceValue = !minus ? posValue * -1 : posValue if (socket) { console.log('Moving Axis:', axis, distanceValue) socket.emit('printer.gcode.script', { printerId, script: `_CLIENT_LINEAR_MOVE ${axis}=${distanceValue} F=${rateValue}` }) } //sendCommand('moveAxis', { axis, pos, rate }) } const handleLevelBedClick = () => { //sendCommand('levelBed') } const homeAxisButtonItems = [ { key: 'homeXYZ', label: 'Home XYZ', onClick: () => handleHomeAxisClick('ALL') }, { key: 'homeXY', label: 'Home XY', onClick: () => handleHomeAxisClick('X Y') }, { key: 'homeX', label: 'Home X', onClick: () => handleHomeAxisClick('X') }, { key: 'homeY', label: 'Home Y', onClick: () => handleHomeAxisClick('Y') }, { key: 'homeZ', label: 'Home Z', onClick: () => handleHomeAxisClick('Z') } ] return (
0.1 1 10 100 `${value} mm`} parser={(value) => value?.replace(' mm', '')} onChange={handlePosInputChange} placeholder='10 mm' name='posInput' style={{ flexGrow: 1 }} /> `${value} mm/s`} parser={(value) => value?.replace(' mm/s', '')} onChange={handleRateInputChange} placeholder='100 mm/s' name='rateInput' style={{ flexGrow: 1 }} />
) } PrinterMovementPanel.propTypes = { printerId: PropTypes.string.isRequired } export default PrinterMovementPanel