2017-05-16 13:34:00 +02:00
|
|
|
|
|
|
|
import React from 'react'
|
|
|
|
import {connect} from 'react-redux'
|
|
|
|
|
|
|
|
import {Link} from 'react-router'
|
|
|
|
|
|
|
|
import Details from '../details'
|
|
|
|
import Status from '../status'
|
|
|
|
import PageHeader from 'components/page-header'
|
|
|
|
|
|
|
|
import ProtocolName
|
|
|
|
from 'components/routeservers/protocols/name'
|
|
|
|
|
2018-07-15 17:52:44 +02:00
|
|
|
import RoutesView from './view'
|
2017-05-16 13:34:00 +02:00
|
|
|
|
|
|
|
import SearchInput from 'components/search-input'
|
|
|
|
|
|
|
|
import BgpAttributesModal
|
|
|
|
from './bgp-attributes-modal'
|
|
|
|
|
|
|
|
// Actions
|
|
|
|
import {setRoutesFilterValue}
|
|
|
|
from '../actions'
|
|
|
|
import {loadRouteserverProtocol}
|
|
|
|
from 'components/routeservers/actions'
|
|
|
|
|
2018-07-16 10:52:41 +02:00
|
|
|
|
|
|
|
// Constants
|
|
|
|
import {ROUTES_RECEIVED,
|
|
|
|
ROUTES_FILTERED,
|
|
|
|
ROUTES_NOT_EXPORTED} from './actions';
|
|
|
|
|
|
|
|
|
2017-05-16 13:34:00 +02:00
|
|
|
class RoutesPage extends React.Component {
|
|
|
|
|
|
|
|
setFilter(value) {
|
|
|
|
this.props.dispatch(
|
|
|
|
setRoutesFilterValue(value)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
componentDidMount() {
|
2018-07-15 17:52:44 +02:00
|
|
|
// Assert neighbors for RS are loaded
|
2017-05-16 13:34:00 +02:00
|
|
|
this.props.dispatch(
|
|
|
|
loadRouteserverProtocol(parseInt(this.props.params.routeserverId))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return(
|
|
|
|
<div className="routeservers-page">
|
|
|
|
<PageHeader>
|
|
|
|
<Link to={`/routeservers/${this.props.params.routeserverId}`}>
|
|
|
|
<Details routeserverId={this.props.params.routeserverId} />
|
|
|
|
</Link>
|
|
|
|
<span className="spacer">»</span>
|
|
|
|
<ProtocolName routeserverId={this.props.params.routeserverId}
|
|
|
|
protocolId={this.props.params.protocolId} />
|
|
|
|
</PageHeader>
|
|
|
|
|
|
|
|
<BgpAttributesModal />
|
|
|
|
|
|
|
|
<div className="row details-main">
|
|
|
|
<div className="col-md-8">
|
|
|
|
|
|
|
|
<div className="card">
|
|
|
|
<SearchInput
|
2018-07-16 10:52:41 +02:00
|
|
|
value={this.props.filterQuery}
|
2018-03-16 18:12:53 +01:00
|
|
|
placeholder="Filter by Network or BGP next-hop"
|
2017-05-16 13:34:00 +02:00
|
|
|
onChange={(e) => this.setFilter(e.target.value)} />
|
|
|
|
</div>
|
|
|
|
|
2018-07-15 17:52:44 +02:00
|
|
|
<RoutesView
|
2018-07-16 10:52:41 +02:00
|
|
|
type={ROUTES_RECEIVED}
|
2018-07-15 17:52:44 +02:00
|
|
|
routeserverId={this.props.params.routeserverId}
|
|
|
|
protocolId={this.props.params.protocolId} />
|
|
|
|
|
|
|
|
<RoutesView
|
2018-07-16 10:52:41 +02:00
|
|
|
type={ROUTES_FILTERED}
|
2018-07-15 17:52:44 +02:00
|
|
|
routeserverId={this.props.params.routeserverId}
|
|
|
|
protocolId={this.props.params.protocolId} />
|
|
|
|
|
|
|
|
<RoutesView
|
2018-07-16 10:52:41 +02:00
|
|
|
type={ROUTES_NOT_EXPORTED}
|
2018-07-15 17:52:44 +02:00
|
|
|
routeserverId={this.props.params.routeserverId}
|
|
|
|
protocolId={this.props.params.protocolId} />
|
|
|
|
|
2017-05-16 13:34:00 +02:00
|
|
|
</div>
|
|
|
|
<div className="col-md-4">
|
|
|
|
<div className="card">
|
|
|
|
<Status routeserverId={this.props.params.routeserverId} />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default connect(
|
|
|
|
(state) => {
|
2018-07-16 10:52:41 +02:00
|
|
|
let received = {
|
|
|
|
routes: state.routes.received,
|
|
|
|
loading: state.routes.receivedLoading,
|
|
|
|
page: state.routes.receivedPage,
|
|
|
|
totalPages: state.routes.receivedTotalPages,
|
|
|
|
totalResults: state.routes.receivedTotalResults,
|
|
|
|
};
|
|
|
|
let filtered = {
|
|
|
|
routes: state.routes.filtered,
|
|
|
|
loading: state.routes.filteredLoading,
|
|
|
|
page: state.routes.filteredPage,
|
|
|
|
totalPages: state.routes.filteredTotalPages,
|
|
|
|
totalResults: state.routes.filteredTotalResults,
|
|
|
|
};
|
|
|
|
let notExported = {
|
|
|
|
routes: state.routes.notExported,
|
|
|
|
loading: state.routes.notExportedLoading,
|
|
|
|
page: state.routes.notExportedPage,
|
|
|
|
totalPages: state.routes.notExportedTotalPages,
|
|
|
|
totalResults: state.routes.notExportedTotalResults,
|
|
|
|
};
|
|
|
|
return({
|
|
|
|
filterQuery: state.routes.filterQuery,
|
|
|
|
routes: {
|
|
|
|
received: received,
|
|
|
|
filtered: filtered,
|
|
|
|
notExported: notExported
|
|
|
|
}
|
|
|
|
});
|
2017-05-16 13:34:00 +02:00
|
|
|
}
|
|
|
|
)(RoutesPage);
|
2018-03-16 15:41:14 +01:00
|
|
|
|