From 82d3162fb40a3a1ec3f84d421da18d9e053225c2 Mon Sep 17 00:00:00 2001 From: Alessio Biancalana Date: Thu, 20 Jan 2022 18:22:57 +0100 Subject: [PATCH] Add a live feed implementation for host registration (#81) --- assets/js/components/Home/Home.jsx | 68 ++++++++++++++++++++++++++ assets/js/components/Home/index.js | 3 ++ assets/js/components/HostsList.jsx | 6 +-- assets/js/components/Layout/Layout.jsx | 8 +-- assets/js/state/hosts.js | 18 ++++--- assets/js/state/index.js | 6 ++- assets/js/state/liveFeed.js | 22 +++++++++ assets/js/state/sagas/index.js | 27 ++++++++-- assets/js/tronto.jsx | 2 +- assets/tailwind.config.js | 9 ++++ 10 files changed, 147 insertions(+), 22 deletions(-) create mode 100644 assets/js/components/Home/Home.jsx create mode 100644 assets/js/components/Home/index.js create mode 100644 assets/js/state/liveFeed.js diff --git a/assets/js/components/Home/Home.jsx b/assets/js/components/Home/Home.jsx new file mode 100644 index 0000000000..124c5d76da --- /dev/null +++ b/assets/js/components/Home/Home.jsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; + +const Home = () => { + const liveFeed = useSelector((state) => state.liveFeed.entries); + const hosts = useSelector((state) => state.hostsList.hosts); + const hostsNumber = hosts.length; + + return ( +
+
+
+
+

Hosts

+

+ {hostsNumber} +

+
+
+
+
+
+
+
+ + + + + + + + + + {liveFeed.map(({ time, source, message }) => ( + + + + + + ))} + +
+ Time + + Source + + Message +
+
{time}
+
{source}{message}
+
+
+
+
+
+ ); +}; + +export default Home; diff --git a/assets/js/components/Home/index.js b/assets/js/components/Home/index.js new file mode 100644 index 0000000000..fbe3fed6bf --- /dev/null +++ b/assets/js/components/Home/index.js @@ -0,0 +1,3 @@ +import Home from './Home'; + +export default Home; diff --git a/assets/js/components/HostsList.jsx b/assets/js/components/HostsList.jsx index 9748c13d73..66281f2bb1 100644 --- a/assets/js/components/HostsList.jsx +++ b/assets/js/components/HostsList.jsx @@ -1,9 +1,7 @@ import React from 'react'; import { useSelector } from 'react-redux'; -import { - EOS_LENS_FILLED, -} from 'eos-icons-react'; +import { EOS_LENS_FILLED } from 'eos-icons-react'; const getHeartbeatIcon = ({ heartbeat }) => { switch (heartbeat) { @@ -55,7 +53,7 @@ const HostsList = () => { {hosts.map((host) => ( - +
{getHeartbeatIcon(host)} diff --git a/assets/js/components/Layout/Layout.jsx b/assets/js/components/Layout/Layout.jsx index c9955dea2f..74e895ad53 100644 --- a/assets/js/components/Layout/Layout.jsx +++ b/assets/js/components/Layout/Layout.jsx @@ -11,7 +11,7 @@ import { EOS_CLUSTER_ROLE, } from 'eos-icons-react'; -import TrentoLogo from '../../../static/trento-logo-stacked.svg' +import TrentoLogo from '../../../static/trento-logo-stacked.svg'; const classNames = (...classes) => classes.filter(Boolean).join(' '); @@ -93,11 +93,7 @@ const Layout = () => {
- Workflow + Workflow