mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
127 lines
3.3 KiB
JavaScript
127 lines
3.3 KiB
JavaScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
|
|
import Plugins from './plugins';
|
|
import { trackAnalyticsEvent } from '../utils/tracking-utils';
|
|
import {
|
|
clickDownloadGraph,
|
|
clickForceRelayout,
|
|
toggleHelp,
|
|
toggleTroubleshootingMenu,
|
|
setContrastMode
|
|
} from '../actions/app-actions';
|
|
|
|
|
|
class Footer extends React.Component {
|
|
handleContrastClick = (ev) => {
|
|
ev.preventDefault();
|
|
this.props.setContrastMode(!this.props.contrastMode);
|
|
}
|
|
|
|
handleRelayoutClick = (ev) => {
|
|
ev.preventDefault();
|
|
trackAnalyticsEvent('scope.layout.refresh.click', {
|
|
layout: this.props.topologyViewMode,
|
|
});
|
|
this.props.clickForceRelayout();
|
|
}
|
|
|
|
render() {
|
|
const {
|
|
hostname, version, versionUpdate, contrastMode
|
|
} = this.props;
|
|
|
|
const otherContrastModeTitle = contrastMode
|
|
? 'Switch to normal contrast' : 'Switch to high contrast';
|
|
const forceRelayoutTitle = 'Force re-layout (might reduce edge crossings, '
|
|
+ 'but may shift nodes around)';
|
|
const versionUpdateTitle = versionUpdate
|
|
? `New version available: ${versionUpdate.get('version')} Click to download`
|
|
: '';
|
|
|
|
return (
|
|
<div className="footer">
|
|
<div className="footer-status">
|
|
{versionUpdate
|
|
&& (
|
|
<a
|
|
className="footer-versionupdate"
|
|
title={versionUpdateTitle}
|
|
href={versionUpdate.get('downloadUrl')}
|
|
target="_blank"
|
|
rel="noopener noreferrer">
|
|
Update available:
|
|
{' '}
|
|
{versionUpdate.get('version')}
|
|
</a>
|
|
)
|
|
}
|
|
<span className="footer-label">Version</span>
|
|
{version || '...'}
|
|
<span className="footer-label">on</span>
|
|
{hostname}
|
|
</div>
|
|
|
|
<div className="footer-plugins">
|
|
<Plugins />
|
|
</div>
|
|
|
|
<div className="footer-tools">
|
|
<button
|
|
type="button"
|
|
className="footer-icon"
|
|
onClick={this.handleRelayoutClick}
|
|
title={forceRelayoutTitle}>
|
|
<i className="fa fa-sync" />
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={this.handleContrastClick}
|
|
className="footer-icon"
|
|
title={otherContrastModeTitle}>
|
|
<i className="fa fa-adjust" />
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={this.props.toggleTroubleshootingMenu}
|
|
className="footer-icon"
|
|
title="Open troubleshooting menu"
|
|
href=""
|
|
>
|
|
<i className="fa fa-bug" />
|
|
</button>
|
|
<button
|
|
type="button"
|
|
className="footer-icon"
|
|
onClick={this.props.toggleHelp}
|
|
title="Show help">
|
|
<i className="fa fa-question" />
|
|
</button>
|
|
</div>
|
|
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
function mapStateToProps(state) {
|
|
return {
|
|
contrastMode: state.get('contrastMode'),
|
|
hostname: state.get('hostname'),
|
|
topologyViewMode: state.get('topologyViewMode'),
|
|
version: state.get('version'),
|
|
versionUpdate: state.get('versionUpdate'),
|
|
};
|
|
}
|
|
|
|
export default connect(
|
|
mapStateToProps,
|
|
{
|
|
clickDownloadGraph,
|
|
clickForceRelayout,
|
|
setContrastMode,
|
|
toggleHelp,
|
|
toggleTroubleshootingMenu
|
|
}
|
|
)(Footer);
|