import _ from 'lodash';
import React from 'react';
import NodeDetailsControls from './node-details/node-details-controls';
import NodeDetailsTable from './node-details/node-details-table';
import { brightenColor, getNodeColorDark } from '../utils/color-utils';
import { resetDocumentTitle, setDocumentTitle } from '../utils/title-utils';
export default class NodeDetails extends React.Component {
componentDidMount() {
this.updateTitle();
}
componentWillUnmount() {
resetDocumentTitle();
}
renderLoading() {
const node = this.props.nodes.get(this.props.nodeId);
const nodeColor = getNodeColorDark(node.get('rank'), node.get('label_major'));
const styles = {
header: {
'backgroundColor': nodeColor
}
};
return (
{node.get('label_major')}
{node.get('label_minor')}
);
}
renderNotAvailable() {
return (
This node is not visible to Scope anymore.
The node will re-appear if it communicates again.
);
}
render() {
const details = this.props.details;
const nodeExists = this.props.nodes && this.props.nodes.has(this.props.nodeId);
if (details) {
return this.renderDetails();
}
if (!nodeExists) {
return this.renderNotAvailable();
}
return this.renderLoading();
}
renderDetails() {
const details = this.props.details;
const nodeColor = getNodeColorDark(details.rank, details.label_major);
const styles = {
controls: {
'backgroundColor': brightenColor(nodeColor)
},
header: {
'backgroundColor': nodeColor
}
};
return (
{details.label_major}
{details.label_minor}
{details.controls && details.controls.length > 0 &&
}
{details.tables.map(function(table) {
const key = _.snakeCase(table.title);
return ;
})}
);
}
componentDidUpdate() {
this.updateTitle();
}
updateTitle() {
setDocumentTitle(this.props.details && this.props.details.label_major);
}
}