-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
75 lines (68 loc) · 1.92 KB
/
App.js
File metadata and controls
75 lines (68 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { useEffect, useState } from 'react';
import axios from 'axios';
import StatusColumn from './StatusColumn';
import './App.css';
const SERBER_URL = 'http://localhost:8081';
function App() {
const [items, setItems] = useState({});
const [products, setProducts] = useState([]);
const [error, setError] = useState(null);
useEffect(() => {
const request = () =>
products.forEach((product) => {
axios
.get(`${SERBER_URL}/temperature/${product.id}`)
.then((response) =>
setItems((prevItems) => ({
...prevItems,
[product.id]: {
...product,
...response.data,
},
}))
)
.catch(setError);
});
setInterval(request, 5000);
request();
}, [products, products.length]);
useEffect(() => {
axios
.get(`${SERBER_URL}/productList`)
.then((resp) => {
setProducts(resp.data);
})
.catch(setError);
}, []);
return (
<div className="App">
{error != null && (
<p data-cy={'errorBox'} className={'error'}>
something went wrong
</p>
)}
<h2>Beers</h2>
<table>
<thead>
<tr data-cy={'monitorColumns'}>
<th align="left">Product</th>
<th align="left">Temperature</th>
<th align="left">Status</th>
</tr>
</thead>
<tbody data-cy={'productList'}>
{Object.keys(items).map((itemKey) => (
<tr key={items[itemKey].id} id={`pid${items[itemKey].id}`}>
<td width={150}>{items[itemKey].name}</td>
<td width={150}>{items[itemKey].temperature}</td>
<td width={150} data-cy={'statusCol'}>
<StatusColumn status={items[itemKey].status} />
</td>
</tr>
))}
</tbody>
</table>
</div>
);
}
export default App;