Skip to content
Snippets Groups Projects
Commit 1766cb43 authored by kevinle350's avatar kevinle350
Browse files

Skew bug fixed

parent 02f4f525
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ import React, {useState, useEffect} from 'react'; ...@@ -2,6 +2,7 @@ import React, {useState, useEffect} from 'react';
import useWebSocket, { ReadyState } from 'react-use-websocket'; import useWebSocket, { ReadyState } from 'react-use-websocket';
import './Landing.css'; import './Landing.css';
import MyModal from './Modal'; import MyModal from './Modal';
import WarnModal from './WarnModal';
// import {useQuery} from '@apollo/client'; // import {useQuery} from '@apollo/client';
// import {USER_QUERY} from "../GraphQL/Queries" ; // import {USER_QUERY} from "../GraphQL/Queries" ;
// import { Button, Card } from 'react-bootstrap'; // import { Button, Card } from 'react-bootstrap';
...@@ -9,12 +10,11 @@ import MyModal from './Modal'; ...@@ -9,12 +10,11 @@ import MyModal from './Modal';
function Landing() { function Landing() {
const [plants,setPlants] = useState([]); const [plants,setPlants] = useState([]);
const [healths, setHealths] = useState([]); // fill this later w actual data
const [modalIsOpen, setModalIsOpen] = useState(false) const [modalIsOpen, setModalIsOpen] = useState(false)
var [dataFromModal, setDataFromModal] = useState({}); var [dataFromModal, setDataFromModal] = useState({});
// station: '192.168.4.1' localWiFi(AP): 172.16.107.184 // station: '192.168.4.1' localWiFi(AP): 172.16.107.184
const ESP32_IP_ADDRESS = '192.168.1.8'; const ESP32_IP_ADDRESS = '172.16.107.184';
const { sendMessage, lastMessage, readyState } = useWebSocket(`ws://${ESP32_IP_ADDRESS}/ws`); const { sendMessage, lastMessage, readyState } = useWebSocket(`ws://${ESP32_IP_ADDRESS}/ws`);
// For Data Transmission testing purposes // For Data Transmission testing purposes
...@@ -33,24 +33,38 @@ function Landing() { ...@@ -33,24 +33,38 @@ function Landing() {
const loadPlant = () => { // const loadPlant = () => {
const newPlantData = { // // Check if all required fields have values
name: dataFromModal['Plant Name'], // if (
maxWaterUsage: dataFromModal['Max Water Usage'], // dataFromModal['plantName'] ||
minMoistureLevel: dataFromModal['Min Moisture Level'], // dataFromModal['maxWaterUsage'] ||
wateringHours: dataFromModal['Watering Hours'], // dataFromModal['minMoistureLevel'] ||
}; // dataFromModal['wateringHours']
// ) {
const newHealth = ( // const newPlantData = {
<div className='new-health'> // name: dataFromModal['plantName'],
New Health {healths.length + 1} // maxWaterUsage: dataFromModal['maxWaterUsage'],
</div> // minMoistureLevel: dataFromModal['minMoistureLevel'],
); // wateringHours: dataFromModal['wateringHours'],
// };
setPlants([...plants, newPlantData]);
console.log(plants)
setHealths([...healths, newHealth]) // const newPlants = [...plants, newPlantData];
// setPlants(newPlants);
// // Now, you can log the updated state in a useEffect to ensure it's displayed correctly
// } else {
// // Handle the case when some fields are undefined or empty
// console.error('Some fields are undefined or empty');
// }
// };
const loadPlant = (newPlantData) => {
setPlants(prevPlants => [...prevPlants, newPlantData]);
}; };
const openModal = () => { const openModal = () => {
setModalIsOpen(true); setModalIsOpen(true);
...@@ -60,9 +74,32 @@ function Landing() { ...@@ -60,9 +74,32 @@ function Landing() {
setModalIsOpen(false); setModalIsOpen(false);
} }
// const receiveData = (data) => {
// setDataFromModal(data, () => {
// // Only call loadPlant after the state has been updated
// loadPlant();
// closeModal();
// });
// }
const receiveData = (data) => { const receiveData = (data) => {
setDataFromModal(data); const newPlantData = {
} name: data['plantName'],
maxWaterUsage: data['maxWaterUsage'],
minMoistureLevel: data['minMoistureLevel'],
wateringHours: data['wateringHours'],
};
// Ensure the new plant data is valid before adding
if (newPlantData.name && newPlantData.maxWaterUsage && newPlantData.minMoistureLevel && newPlantData.wateringHours) {
loadPlant(newPlantData);
closeModal();
} else {
console.error('Some fields are undefined or empty');
}
};
// Gonna send plants: [{name, maxWaterUsage, minMoistureLevel, wateringHours}] to ESP32 // Gonna send plants: [{name, maxWaterUsage, minMoistureLevel, wateringHours}] to ESP32
...@@ -80,6 +117,10 @@ function Landing() { ...@@ -80,6 +117,10 @@ function Landing() {
} }
}, [lastMessage]); }, [lastMessage]);
useEffect(() => {
// Log the updated 'plants' state whenever it changes
console.log(plants);
}, [plants]);
return ( return (
...@@ -109,7 +150,7 @@ function Landing() { ...@@ -109,7 +150,7 @@ function Landing() {
<div className='options-bg'> <div className='options-bg'>
<div className='options-container'> <div className='options-container'>
<div className='options'> <div className='options'>
<button className='add-plant-btn' onClick={ () => {openModal(); loadPlant();}}>Add Plant</button> <button className='add-plant-btn' onClick={ () => {openModal();}}>Add Plant</button>
<p className='options-text'>Max Water Usage</p> <p className='options-text'>Max Water Usage</p>
<p className='options-text'>Min Moisture Level</p> <p className='options-text'>Min Moisture Level</p>
<p className='options-text'>Watering Hours</p> <p className='options-text'>Watering Hours</p>
...@@ -119,7 +160,7 @@ function Landing() { ...@@ -119,7 +160,7 @@ function Landing() {
<div className='plant-container'> <div className='plant-container'>
{plants.length > 0 ? (plants.map((plant, index) => ( {plants.length > 0 ? (plants.map((plant, index) => (
<div className='new-plant' key={index}> <div className='new-plant' key={index}>
<p className='new-plant-text'>Plant {plants.length + 1}: {plant.name}</p> <p className='new-plant-text'>Plant {index+1}: {plant.name}</p>
<p className='new-plant-text'>{plant.maxWaterUsage}</p> <p className='new-plant-text'>{plant.maxWaterUsage}</p>
<p className='new-plant-text'>{plant.minMoistureLevel}</p> <p className='new-plant-text'>{plant.minMoistureLevel}</p>
<p className='new-plant-text'>{plant.wateringHours}</p> <p className='new-plant-text'>{plant.wateringHours}</p>
...@@ -133,9 +174,6 @@ function Landing() { ...@@ -133,9 +174,6 @@ function Landing() {
<div className='health-wrap'> <div className='health-wrap'>
<p className='health-header'>Plant Health</p> <p className='health-header'>Plant Health</p>
<div className='health-container'> <div className='health-container'>
{/* {healths.map((health, index) => (
<div key = {index}>{health}</div>
))} */}
{dataObjects.map((item, index) => ( {dataObjects.map((item, index) => (
<p key={index}> <p key={index}>
Address: {item.address}, Health: {item.health} Address: {item.address}, Health: {item.health}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment