diff --git a/client/app/scripts/components/node-details.js b/client/app/scripts/components/node-details.js index 36dc8152f..099290317 100644 --- a/client/app/scripts/components/node-details.js +++ b/client/app/scripts/components/node-details.js @@ -2,6 +2,7 @@ const React = require('react'); const NodeDetailsTable = require('./node-details-table'); const NodeColorMixin = require('../mixins/node-color-mixin'); +const TitleUtils = require('../utils/title-utils'); const NodeDetails = React.createClass({ @@ -9,6 +10,14 @@ const NodeDetails = React.createClass({ NodeColorMixin ], + componentDidMount: function() { + this.updateTitle(); + }, + + componentWillUnmount: function() { + TitleUtils.resetTitle(); + }, + render: function() { const node = this.props.details; @@ -36,6 +45,14 @@ const NodeDetails = React.createClass({ ); + }, + + componentDidUpdate: function() { + this.updateTitle(); + }, + + updateTitle: function() { + TitleUtils.setTitle(this.props.details && this.props.details.label_major); } }); diff --git a/client/app/scripts/utils/title-utils.js b/client/app/scripts/utils/title-utils.js new file mode 100644 index 000000000..b2db1680f --- /dev/null +++ b/client/app/scripts/utils/title-utils.js @@ -0,0 +1,20 @@ + +const PREFIX = 'Weave Scope'; +const SEPARATOR = ' - '; + +function setDocumentTitle(title) { + if (title) { + document.title = [PREFIX, title].join(SEPARATOR); + } else { + document.title = PREFIX; + } +} + +function resetDocumentTitle() { + setDocumentTitle(null); +} + +module.exports = { + resetTitle: resetDocumentTitle, + setTitle: setDocumentTitle +};