mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-05 16:59:36 +00:00
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
|
|
import { clickRelative } from '../../actions/request-actions';
|
|
import { trackAnalyticsEvent } from '../../utils/tracking-utils';
|
|
import MatchedText from '../matched-text';
|
|
|
|
|
|
class NodeDetailsRelativesLink extends React.Component {
|
|
constructor(props, context) {
|
|
super(props, context);
|
|
|
|
this.handleClick = this.handleClick.bind(this);
|
|
this.saveNodeRef = this.saveNodeRef.bind(this);
|
|
}
|
|
|
|
handleClick(ev) {
|
|
ev.preventDefault();
|
|
trackAnalyticsEvent('scope.node.relative.click', {
|
|
topologyId: this.props.topologyId,
|
|
});
|
|
this.props.dispatch(clickRelative(
|
|
this.props.id,
|
|
this.props.topologyId,
|
|
this.props.label,
|
|
this.node.getBoundingClientRect()
|
|
));
|
|
}
|
|
|
|
saveNodeRef(ref) {
|
|
this.node = ref;
|
|
}
|
|
|
|
render() {
|
|
const title = `View in ${this.props.topologyId}: ${this.props.label}`;
|
|
return (
|
|
<span
|
|
className="node-details-relatives-link"
|
|
title={title}
|
|
onClick={this.handleClick}
|
|
ref={this.saveNodeRef}>
|
|
<MatchedText text={this.props.label} match={this.props.match} />
|
|
</span>
|
|
);
|
|
}
|
|
}
|
|
|
|
// Using this instead of PureComponent because of props.dispatch
|
|
export default connect()(NodeDetailsRelativesLink);
|