Files
weave-scope/client/app/scripts/selectors/node-metric.js
2017-02-20 10:58:26 +01:00

27 lines
781 B
JavaScript

import { createSelector } from 'reselect';
import { createMapSelector } from 'reselect-map';
import { fromJS } from 'immutable';
const topCardNodeSelector = createSelector(
[
state => state.get('nodeDetails')
],
nodeDetails => nodeDetails.last()
);
export const nodeMetricSelector = createMapSelector(
[
state => state.get('nodes'),
state => state.get('selectedMetric'),
topCardNodeSelector,
],
(node, selectedMetric, topCardNode) => {
const isHighlighted = topCardNode && topCardNode.details && topCardNode.id === node.get('id');
const sourceNode = isHighlighted ? fromJS(topCardNode.details) : node;
return sourceNode.get('metrics') && sourceNode.get('metrics')
.filter(m => m.get('id') === selectedMetric)
.first();
}
);