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 (

n/a

{this.props.nodeId}

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); } }