From 7b772101080921f5987b91e552ec88ed87ebd089 Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Wed, 24 Feb 2016 12:44:59 +0100 Subject: [PATCH] Render connection table as nodes table Also: - Make metadata fields sortable as numbers - Sort by selected metadata column --- client/app/scripts/components/node-details.js | 8 ++++++++ .../node-details/node-details-table.js | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/client/app/scripts/components/node-details.js b/client/app/scripts/components/node-details.js index 44f1b30da..1d8fec325 100644 --- a/client/app/scripts/components/node-details.js +++ b/client/app/scripts/components/node-details.js @@ -174,6 +174,14 @@ export default class NodeDetails extends React.Component { } + {details.connections && details.connections.map(connections => { + return ( +
+ +
+ ); + })} + {details.children && details.children.map(children => { return (
diff --git a/client/app/scripts/components/node-details/node-details-table.js b/client/app/scripts/components/node-details/node-details-table.js index a5890f08d..e73420258 100644 --- a/client/app/scripts/components/node-details/node-details-table.js +++ b/client/app/scripts/components/node-details/node-details-table.js @@ -5,6 +5,10 @@ import ShowMore from '../show-more'; import NodeDetailsTableNodeLink from './node-details-table-node-link'; import NodeDetailsTableNodeMetric from './node-details-table-node-metric'; +function isNumberField(field) { + return field.dataType && field.dataType === 'number'; +} + export default class NodeDetailsTable extends React.Component { constructor(props, context) { @@ -39,7 +43,16 @@ export default class NodeDetailsTable extends React.Component { getMetaDataSorters() { // returns an array of sorters that will take a node return _.get(this.props.nodes, [0, 'metadata'], []).map((field, index) => { - return node => node.metadata[index] ? node.metadata[index].value : null; + return node => { + const nodeMetadataField = node.metadata[index]; + if (nodeMetadataField) { + if (isNumberField(nodeMetadataField)) { + return parseFloat(nodeMetadataField.value); + } + return nodeMetadataField.value; + } + return null; + }; }); } @@ -49,6 +62,9 @@ export default class NodeDetailsTable extends React.Component { if (sortBy !== null) { const field = _.union(node.metrics, node.metadata).find(f => f.id === sortBy); if (field) { + if (isNumberField(field)) { + return parseFloat(field.value); + } return field.value; } }