diff --git a/src/js/components/nodes/NodesTable.js b/src/js/components/nodes/NodesTable.js index eea2eb5d..d2d502d0 100644 --- a/src/js/components/nodes/NodesTable.js +++ b/src/js/components/nodes/NodesTable.js @@ -1,4 +1,5 @@ import * as _ from 'lodash'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; @@ -12,7 +13,63 @@ import Loader from '../ui/Loader'; import { parseNodeCapabilities } from '../../utils/nodes'; -export default class NodesTable extends React.Component { +const messages = defineMessages({ + noNodes: { + id: 'NodesTable.noNodes', + defaultMessage: 'There are no Nodes available.' + }, + loadingNodes: { + id: 'NodesTable.loadingNodes', + defaultMessage: 'Loading Nodes...' + }, + macAddresses: { + id: 'NodesTables.macAddresses', + defaultMessage: 'MAC Address(es)', + description: 'Table header' + }, + name: { + id: 'NodesTables.name', + defaultMessage: 'Name', + description: 'Table header' + }, + profile: { + id: 'NodesTables.profile', + defaultMessage: 'Profile', + description: 'Table header' + }, + cpuArch: { + id: 'NodesTables.cpuArch', + defaultMessage: 'CPU Arch.', + description: 'Table header' + }, + cpuCores: { + id: 'NodesTables.cpuCores', + defaultMessage: 'CPU (cores)', + description: 'Table header' + }, + diskGb: { + id: 'NodesTables.diskGb', + defaultMessage: 'Disk (GB)', + description: 'Table header' + }, + memoryMb: { + id: 'NodesTables.memoryMb', + defaultMessage: 'Memory (MB)', + description: 'Table header' + }, + powerState: { + id: 'NodesTables.powerState', + defaultMessage: 'Power State', + description: 'Table header' + }, + provisionState: { + id: 'NodesTables.provisionState', + defaultMessage: 'Provision State', + description: 'Table header' + } +}); + +class NodesTable extends React.Component { constructor() { super(); this.state = { @@ -28,8 +85,8 @@ export default class NodesTable extends React.Component { -

There are no Nodes available

+ content={this.props.intl.formatMessage(messages.loadingNodes)}> +

@@ -70,51 +127,72 @@ export default class NodesTable extends React.Component { className="shrink"/>}/> MAC Address(es)} + header={ + + } cell={}/> Name} + header={ + + } cell={}/> Profile} + header={ + + } cell={}/> CPU Arch.} + header={ + + } cell={}/> CPU (cores)} + header={ + + } cell={}/> Disk (GB)} + header={ + + } cell={}/> Memory (MB)} + header={ + + } cell={}/> Power State} + header={ + + } cell={}/> Provision State} + header={ + + } cell={}/> ); } } NodesTable.propTypes = { + intl: React.PropTypes.object, isFetchingNodes: React.PropTypes.bool.isRequired, nodes: ImmutablePropTypes.map.isRequired, nodesInProgress: ImmutablePropTypes.set.isRequired, roles: ImmutablePropTypes.map.isRequired }; +export default injectIntl(NodesTable); + export class NodesTableCheckBoxCell extends React.Component { render() { const nodeId = _.result(this.props.data[this.props.rowIndex], this.props.field);