Files
weave-scope/client/app/scripts/components/metric-selector.js
Filip Barl 23fb14d0be Polished the metric selection logic (#2468)
* Polished the metric selection code

* Fixed hovering advantage over pinning.
2017-04-26 16:18:42 +02:00

48 lines
1.1 KiB
JavaScript

import React from 'react';
import { connect } from 'react-redux';
import { unhoverMetric } from '../actions/app-actions';
import { availableMetricsSelector } from '../selectors/node-metric';
import MetricSelectorItem from './metric-selector-item';
class MetricSelector extends React.Component {
constructor(props, context) {
super(props, context);
this.onMouseOut = this.onMouseOut.bind(this);
}
onMouseOut() {
this.props.unhoverMetric();
}
render() {
const { availableMetrics } = this.props;
const hasMetrics = !availableMetrics.isEmpty();
return (
<div className="metric-selector">
{hasMetrics && <div className="metric-selector-wrapper" onMouseLeave={this.onMouseOut}>
{availableMetrics.map(metric => (
<MetricSelectorItem
key={metric.get('id')}
metric={metric}
/>
))}
</div>}
</div>
);
}
}
function mapStateToProps(state) {
return {
availableMetrics: availableMetricsSelector(state),
};
}
export default connect(
mapStateToProps,
{ unhoverMetric }
)(MetricSelector);