diff --git a/embark-ui/src/components/Process.js b/embark-ui/src/components/Process.js
index 02bb6bce..7a73e064 100644
--- a/embark-ui/src/components/Process.js
+++ b/embark-ui/src/components/Process.js
@@ -1,18 +1,23 @@
import React, {Component} from 'react';
import PropTypes from 'prop-types';
+import {Page} from "tabler-react";
+import Loading from "./Loading";
class Process extends Component {
render() {
- const logs = this.props.logs || [];
+ const logs = this.props.logs;
return (
-
- State: {this.props.state}
+
+ State: {this.props.state}
+ {!logs &&
+ }
+ {logs &&
{
logs.map((item, i) =>
{item.msg_clear || item.msg}
)
}
-
- );
+ }
+ );
}
}
diff --git a/embark-ui/src/components/ProcessesLayout.js b/embark-ui/src/components/ProcessesLayout.js
new file mode 100644
index 00000000..25e93774
--- /dev/null
+++ b/embark-ui/src/components/ProcessesLayout.js
@@ -0,0 +1,68 @@
+import PropTypes from "prop-types";
+import React, {Component} from 'react';
+import connect from "react-redux/es/connect/connect";
+import {NavLink, Route, Switch, withRouter} from 'react-router-dom';
+import {
+ Page,
+ Grid,
+ List
+} from "tabler-react";
+
+import ProcessesContainer from '../containers/ProcessesContainer';
+import Loading from "./Loading";
+
+const routePrefix = '/embark/processes';
+
+class ProcessesLayout extends Component {
+
+
+ render() {
+ if (!this.props.processes || !this.props.processes.data) {
+ return ;
+ }
+ const processNames = Object.keys(this.props.processes.data) || [];
+ return (
+
+ Processes
+
+
+ {processNames.map((processName, index) => {
+ return (
+ {processName}
+ );
+ })}
+
+
+
+
+
+
+
+ {processNames.map((processName, index) => {
+ return ();
+ })}
+
+
+ );
+ }
+}
+
+ProcessesLayout.propTypes = {
+ processes: PropTypes.object,
+ match: PropTypes.object
+};
+
+function mapStateToProps(state) {
+ return {processes: state.processes};
+}
+
+export default connect(
+ mapStateToProps
+)(ProcessesLayout);
+
diff --git a/embark-ui/src/containers/AppContainer.js b/embark-ui/src/containers/AppContainer.js
index 94c83767..962baa73 100644
--- a/embark-ui/src/containers/AppContainer.js
+++ b/embark-ui/src/containers/AppContainer.js
@@ -6,11 +6,12 @@ import React, {Component} from 'react';
import history from '../history';
import Layout from '../components/Layout';
import routes from '../routes';
-import {initBlockHeader} from '../actions';
+import {initBlockHeader, fetchProcesses} from '../actions';
class AppContainer extends Component {
componentDidMount() {
this.props.initBlockHeader();
+ this.props.fetchProcesses();
}
render() {
@@ -25,12 +26,14 @@ class AppContainer extends Component {
}
AppContainer.propTypes = {
- initBlockHeader: PropTypes.func
+ initBlockHeader: PropTypes.func,
+ fetchProcesses: PropTypes.func
};
export default connect(
null,
{
- initBlockHeader
+ initBlockHeader,
+ fetchProcesses
},
)(AppContainer);
diff --git a/embark-ui/src/containers/ProcessesContainer.js b/embark-ui/src/containers/ProcessesContainer.js
index 681b3bce..9f5c3256 100644
--- a/embark-ui/src/containers/ProcessesContainer.js
+++ b/embark-ui/src/containers/ProcessesContainer.js
@@ -1,66 +1,46 @@
import React, {Component} from 'react';
import {connect} from 'react-redux';
-import {Tabs, Tab} from 'tabler-react';
import PropTypes from 'prop-types';
-import {fetchProcesses, fetchProcessLogs, listenToProcessLogs} from '../actions';
-import Loading from '../components/Loading';
+import {fetchProcessLogs, listenToProcessLogs} from '../actions';
-import "./css/processContainer.css";
import Process from "../components/Process";
class ProcessesContainer extends Component {
componentDidMount() {
- this.props.fetchProcesses();
- }
-
- shouldComponentUpdate(nextProps, _nextState) {
- if (!this.islistening && nextProps.processes && nextProps.processes.data) {
- this.islistening = true;
- Object.keys(nextProps.processes.data).forEach(processName => {
- this.props.fetchProcessLogs(processName);
- // Only start watching if we are not already watching
- if (!this.props.processes.data ||
- !this.props.processes.data[processName] ||
- !this.props.processes.data[processName].isListening
- ) {
- this.props.listenToProcessLogs(processName);
- }
- });
+ // Get correct process name
+ const pathParts = this.props.match.path.split('/');
+ this.processName = pathParts[pathParts.length - 1];
+ // If we are not in a specific process page (eg: processes/ root), get first process
+ if (Object.keys(this.props.processes.data).indexOf(this.processName) < 0) {
+ this.processName = Object.keys(this.props.processes.data)[0];
+ }
+
+ // Fetch logs for the process
+ this.props.fetchProcessLogs(this.processName);
+
+ // Only start watching if we are not already watching
+ if (!this.props.processes.data[this.processName].isListening) {
+ this.props.listenToProcessLogs(this.processName);
}
- return true;
}
render() {
- const {processes} = this.props;
- if (!processes.data) {
- return ;
+ if (!this.processName) {
+ return '';
}
-
- const processNames = Object.keys(processes.data);
return (
- {processes.error &&
- Error: {processes.error.message || processes.error}
-
}
-
- {processNames && processNames.length &&
- {processNames.map(processName => {
- return (
-
- );
- })}
- }
-
+
);
}
}
ProcessesContainer.propTypes = {
+ match: PropTypes.object,
processes: PropTypes.object,
- fetchProcesses: PropTypes.func,
fetchProcessLogs: PropTypes.func,
listenToProcessLogs: PropTypes.func
};
@@ -72,7 +52,6 @@ function mapStateToProps(state) {
export default connect(
mapStateToProps,
{
- fetchProcesses,
fetchProcessLogs,
listenToProcessLogs
}
diff --git a/embark-ui/src/containers/css/processContainer.css b/embark-ui/src/general.css
similarity index 60%
rename from embark-ui/src/containers/css/processContainer.css
rename to embark-ui/src/general.css
index 1510241f..60588a99 100644
--- a/embark-ui/src/containers/css/processContainer.css
+++ b/embark-ui/src/general.css
@@ -1,9 +1,4 @@
-
-.processes-container .nav-link {
- text-transform: capitalize;
-}
-
-.processes-container .logs {
+.logs {
margin: 10px 0;
background-color: #333333;
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
@@ -13,15 +8,19 @@
border-radius: 8px;
}
-.processes-container .logs .error {
+.logs .error {
color: #dc3546;
}
-.processes-container .logs .warn {
+.logs .warn {
color: #fec107;
}
-.processes-container .logs .debug {
+.logs .debug {
color: #b7c1cc;
}
-.processes-container .logs .trace {
+.logs .trace {
color: #8f98a2;
}
+
+.capitalize {
+ text-transform: capitalize;
+}
diff --git a/embark-ui/src/index.js b/embark-ui/src/index.js
index 346c9426..40ff2c2d 100644
--- a/embark-ui/src/index.js
+++ b/embark-ui/src/index.js
@@ -3,6 +3,7 @@ import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import "tabler-react/dist/Tabler.css";
+import "./general.css";
import AppContainer from './containers/AppContainer';
import registerServiceWorker from './registerServiceWorker';
diff --git a/embark-ui/src/routes.js b/embark-ui/src/routes.js
index 0797357d..c7cee5aa 100644
--- a/embark-ui/src/routes.js
+++ b/embark-ui/src/routes.js
@@ -4,15 +4,14 @@ import {Route, Switch} from 'react-router-dom';
import Home from './components/Home';
import NoMatch from './components/NoMatch';
import ExplorerLayout from './components/ExplorerLayout';
-
-import ProcessesContainer from './containers/ProcessesContainer';
+import ProcessesLayout from './components/ProcessesLayout';
const routes = (
-
+