simplyfy code svg value mqtt

This commit is contained in:
2025-09-29 16:38:00 +07:00
parent 6de6d35a6b
commit b73abf2fa2
2 changed files with 23 additions and 37 deletions

View File

@@ -64,36 +64,28 @@ const listenMessage = (callback) => {
});
};
const listenMessageState = (setState) => {
const setValSvg = (listenTopic, svg) => {
client.on('message', (topic, message) => {
const msgObj = {
date: new Date().toLocaleString(),
topic: topic,
msg: JSON.parse(message),
};
setState(msgObj);
if (topic == listenTopic) {
const objChanel = JSON.parse(message);
Object.entries(objChanel).forEach(([key, value]) => {
// console.log(key, value);
const el = svg.getElementById(key);
if (el) {
if (value === true) {
el.style.display = ''; // sembunyikan
} else if (value === false) {
el.style.display = 'none';
} else if (!isNaN(value)) {
el.textContent = Number(value ?? 0.0);
} else {
el.textContent = value;
}
}
});
}
});
};
const setValSvg = (msgValue, topic, svg) => {
if (msgValue.topic == topic) {
const objChanel = msgValue?.msg;
Object.entries(objChanel).forEach(([key, value]) => {
// console.log(key, value);
const el = svg.getElementById(key);
if (el) {
if (value === true) {
el.style.display = ''; // sembunyikan
} else if (value === false) {
el.style.display = 'none';
} else if (!isNaN(value)) {
el.textContent = Number(value ?? 0.0);
} else {
el.textContent = value;
}
}
});
}
};
export { publishMessage, listenMessage, listenMessageState, setValSvg };
export { publishMessage, listenMessage, setValSvg };

View File

@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
import { Card, Typography, Flex } from 'antd';
import { ReactSVG } from 'react-svg';
import { listenMessageState, setValSvg } from '../../components/Global/MqttConnection';
import { setValSvg } from '../../components/Global/MqttConnection';
const { Text } = Typography;
@@ -9,12 +9,6 @@ const filePathSvg = '/svg/test-new.svg';
const topicMqtt = 'PIU_GGCP/Devices/PB';
const SvgTest = () => {
const [received, setReceived] = useState([]);
listenMessageState(setReceived)
useEffect(() => {}, []);
return (
<>
<Card>
@@ -27,7 +21,7 @@ const SvgTest = () => {
<ReactSVG
src={filePathSvg}
beforeInjection={(svg) => {
setValSvg(received, topicMqtt, svg);
setValSvg(topicMqtt, svg);
}}
/>
</>