// DashboardTemperaturePanel.js import React, { useContext, useEffect, useState } from "react"; import { Layout, Progress, Typography, Spin, Flex, Space, Collapse, InputNumber, Button, } from "antd"; import { LoadingOutlined } from "@ant-design/icons"; import { SocketContext } from "../context/SocketContext"; import styled from "styled-components"; const { Text, Link } = Typography; const { Panel } = Collapse; const { Header } = Layout; const CustomCollapse = styled(Collapse)` .ant-collapse-header { padding: 0 !important; } .ant-collapse-content-box { padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; } `; const DashboardTemperaturePanel = ({ remoteAddress, showControls = true, showMoreInfo = true, }) => { const [loading, setLoading] = React.useState(false); const [hotEndTemperature, setHotEndTemperature] = useState(0); const [heatedBedTemperature, setHeatedBedTemperature] = useState(0); const [temperatureData, setTemperatureData] = useState(null); const { socket } = useContext(SocketContext); useEffect(() => { if (socket) { socket.on("temperature", (data) => { setTemperatureData(data.temperatures); }); return () => { socket.off("temperature"); }; } }, [socket]); const sendCommand = (type, data) => { const commandData = { remoteAddress, type, data, }; console.log(commandData); socket.emit("command", commandData); }; const handleSetTemperatureClick = (target, value) => { sendCommand("setTemperature", { target, value }); }; const moreInfoItems = [ { key: "1", label: "More Temperature Data", children: {temperatureData ? ( <> {typeof temperatureData.hotendPower !== "undefined" && ( Hot End Power:{" "} {Math.round((temperatureData.hotendPower / 127) * 100)}% )} {typeof temperatureData.bedPower !== "undefined" && ( Bed Power:{" "} {Math.round((temperatureData.bedPower / 127) * 100)}% )} {typeof temperatureData.pindaTemp !== "undefined" && ( Pinda Temp: {temperatureData.pindaTemp}°C )} {typeof temperatureData.ambiantActual !== "undefined" && ( Ambient Actual: {temperatureData.ambiantActual}°C )} ) : ( } size="large" /> )} }, ]; return (
{temperatureData ? ( {temperatureData.hotEnd && ( Hot End: {temperatureData.hotEnd.current}°C /{" "} {temperatureData.hotEnd.target}°C {showControls === true && ( `${value}°C`} parser={(value) => value.replace("°C", "")} onChange={(value) => setHotEndTemperature(value)} /> )} )} {temperatureData.heatedBed && ( Heated Bed: {temperatureData.heatedBed.current}°C /{" "} {temperatureData.heatedBed.target}°C {showControls === true && ( `${value}°C`} parser={(value) => value.replace("°C", "")} onChange={(value) => setHeatedBedTemperature(value)} /> )} )} {showMoreInfo === true && ( )} ) : ( } size="large" /> )}
); }; export default DashboardTemperaturePanel;