Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
notebooks
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
kevinle2
notebooks
Commits
1766cb43
Commit
1766cb43
authored
1 year ago
by
kevinle350
Browse files
Options
Downloads
Patches
Plain Diff
Skew bug fixed
parent
02f4f525
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ui-subsystem/src/components/Landing.js
+64
-26
64 additions, 26 deletions
ui-subsystem/src/components/Landing.js
with
64 additions
and
26 deletions
ui-subsystem/src/components/Landing.js
+
64
−
26
View file @
1766cb43
...
@@ -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
=
'
1
9
2.16
8
.1
.8
'
;
const
ESP32_IP_ADDRESS
=
'
1
7
2.16.1
07.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
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment