this.props.refresh(this.props.ic, this.props.sessionToken)}
+ onClick={() => refresh(this.props.ic, this.props.sessionToken)}
icon='sync-alt'
buttonStyle={this.props.buttonStyle}
iconStyle={this.props.iconStyle}
@@ -45,11 +46,11 @@ class ManagerVillasRelay extends React.Component {
- {this.props.ICParamsTable(this.props.ic)}
+ {ICParamsTable(this.props.ic)}
Raw Status
- {this.props.rawDataTable(this.props.ic.statusupdateraw)}
+ {rawDataTable(this.props.ic.statusupdateraw)}
diff --git a/src/ic/ic.js b/src/ic/ic.js
index c75350a..af2fe67 100644
--- a/src/ic/ic.js
+++ b/src/ic/ic.js
@@ -26,6 +26,7 @@ import ReactJson from 'react-json-view';
import GatewayVillasNode from './ic-pages/gateway-villas-node'
import ManagerVillasRelay from './ic-pages/manager-villas-relay'
import DefaultICPage from './ic-pages/default-page'
+import DefaultManagerPage from './ic-pages/default-manager-page';
class InfrastructureComponent extends React.Component {
constructor(props) {
@@ -43,6 +44,7 @@ class InfrastructureComponent extends React.Component {
static calculateState(prevState, props) {
return {
+ ics: ICstore.getState(),
ic: ICstore.getState().find(ic => ic.id === parseInt(props.match.params.ic, 10))
}
}
@@ -57,6 +59,16 @@ class InfrastructureComponent extends React.Component {
});
}
+ componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot: SS){
+
+ let icID = parseInt(this.props.match.params.ic, 10);
+
+ if(typeof prevState !== "undefined" && typeof prevState.ic !== "undefined" && parseInt(prevState.ic.id, 10) !== icID){
+ this.setState({ ic: ICstore.getState().find(ic => ic.id === icID)});
+ }
+
+ }
+
static refresh(ic, token) {
AppDispatcher.dispatch({
type: 'ics/start-load',
@@ -142,34 +154,39 @@ class InfrastructureComponent extends React.Component {
height: '25px',
width: '25px'
}
-
let page = <>IC page not defined>
if (this.state.ic.category ==="gateway" && this.state.ic.type === "villas-node") {
page = InfrastructureComponent.ICParamsTable(ic)}
- rawDataTable = {(rawData) => InfrastructureComponent.rawDataTable(rawData)}
- refresh = {(ic, token) => InfrastructureComponent.refresh(ic, token)}
buttonStyle = {buttonStyle}
iconStyle = {iconStyle}
/>
} else if (this.state.ic.category ==="manager" && this.state.ic.type === "villas-relay") {
page = InfrastructureComponent.ICParamsTable(ic)}
- rawDataTable = {(rawData) => InfrastructureComponent.rawDataTable(rawData)}
- refresh = {(ic, token) => InfrastructureComponent.refresh(ic, token)}
buttonStyle = {buttonStyle}
iconStyle = {iconStyle}
/>
- } else {
+ }else if (this.state.ic.category ==="manager") {
+ page =
+ }else {
page = InfrastructureComponent.ICParamsTable(ic)}
+ sessionToken = {this.state.sessionToken}
+ buttonStyle = {buttonStyle}
+ iconStyle = {iconStyle}
/>
}
return page
@@ -178,3 +195,6 @@ class InfrastructureComponent extends React.Component {
let fluxContainerConverter = require('../common/FluxContainerConverter');
export default FluxContainer.create(fluxContainerConverter.convert(InfrastructureComponent), { withProps: true });
+export const refresh = InfrastructureComponent.refresh;
+export const ICParamsTable = InfrastructureComponent.ICParamsTable;
+export const rawDataTable = InfrastructureComponent.rawDataTable;
diff --git a/src/ic/ics.js b/src/ic/ics.js
index fb80137..0f23012 100644
--- a/src/ic/ics.js
+++ b/src/ic/ics.js
@@ -26,7 +26,6 @@ import moment from 'moment'
import AppDispatcher from '../common/app-dispatcher';
import InfrastructureComponentStore from './ic-store';
-import Icon from '../common/icon';
import Table from '../common/table';
import TableColumn from '../common/table-column';
import NewICDialog from './new-ic';
@@ -257,8 +256,8 @@ class InfrastructureComponents extends Component {
return Date.now() - new Date(component.stateUpdateAt) > fiveMinutes;
}
- stateLabelStyle(state, component){
- var style = [ 'badge' ];
+ static stateLabelStyle(state, component){
+ let style = [ 'badge' ];
if (InfrastructureComponents.isICOutdated(component) && state !== 'shutdown') {
style.push('badge-outdated');
@@ -320,13 +319,13 @@ class InfrastructureComponents extends Component {
return style.join(' ')
}
- stateUpdateModifier(updatedAt, component) {
+ static stateUpdateModifier(updatedAt, component) {
let dateFormat = 'ddd, DD MMM YYYY HH:mm:ss ZZ';
let dateTime = moment(updatedAt, dateFormat);
return dateTime.fromNow()
}
- modifyUptimeColumn(uptime, component){
+ static modifyUptimeColumn(uptime, component){
if(uptime >= 0){
let momentDurationFormatSetup = require("moment-duration-format");
momentDurationFormatSetup(moment)
@@ -339,7 +338,7 @@ class InfrastructureComponents extends Component {
}
}
- isLocalIC(index, ics){
+ static isLocalIC(index, ics){
let ic = ics[index]
return !ic.managedexternally
}
@@ -351,7 +350,7 @@ class InfrastructureComponents extends Component {
this.isLocalIC(index, ics) === true}
+ checkboxDisabled={(index) => InfrastructureComponents.isLocalIC(index, ics) === true}
onChecked={(ic, event) => this.onICChecked(ic, event)}
width='30'
/>
@@ -372,7 +371,7 @@ class InfrastructureComponents extends Component {
title='State'
labelKey='state'
tooltipKey='error'
- labelStyle={(state, component) => this.stateLabelStyle(state, component)}
+ labelStyle={(state, component) => InfrastructureComponents.stateLabelStyle(state, component)}
/>
this.modifyUptimeColumn(uptime, component)}
+ modifier={(uptime, component) => InfrastructureComponents.modifyUptimeColumn(uptime, component)}
/>
this.stateUpdateModifier(stateUpdateAt, component)}
+ modifier={(stateUpdateAt, component) => InfrastructureComponents.stateUpdateModifier(stateUpdateAt, component)}
/>
{this.state.currentUser.role === "Admin" ?
@@ -394,10 +393,10 @@ class InfrastructureComponents extends Component {
width='150'
align='right'
editButton
- showEditButton ={(index) => this.isLocalIC(index, ics)}
+ showEditButton ={(index) => InfrastructureComponents.isLocalIC(index, ics)}
exportButton
deleteButton
- showDeleteButton = {(index) => this.isLocalIC(index, ics)}
+ showDeleteButton = {(index) => InfrastructureComponents.isLocalIC(index, ics)}
onEdit={index => this.setState({editModal: true, modalIC: ics[index], modalIndex: index})}
onExport={index => this.exportIC(index)}
onDelete={index => this.setState({deleteModal: true, modalIC: ics[index], modalIndex: index})}
@@ -495,3 +494,4 @@ class InfrastructureComponents extends Component {
let fluxContainerConverter = require('../common/FluxContainerConverter');
export default Container.create(fluxContainerConverter.convert(InfrastructureComponents));
+export const stateLabelStyle = InfrastructureComponents.stateLabelStyle;