From a05fcc4d57463a8645e6f0ceddb5ba0311134299 Mon Sep 17 00:00:00 2001 From: Matthias Hannig Date: Sun, 28 Oct 2018 17:33:36 +0100 Subject: [PATCH] fix broken rendering --- client/components/filters/editor.jsx | 12 ++----- client/components/filters/widgets.jsx | 36 +++++++++++++++---- .../routeservers/routes/reducer.jsx | 1 + 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/client/components/filters/editor.jsx b/client/components/filters/editor.jsx index 0537966..4cc7d2c 100644 --- a/client/components/filters/editor.jsx +++ b/client/components/filters/editor.jsx @@ -71,32 +71,26 @@ class FiltersEditor extends React.Component { if (!hasFilters(this.props.available) && !hasFilters(this.props.applied)) { return null; } + /* + + */ return (
- {this.props.availableSources.length > 0 &&

Route server

} this.addFilter(FILTER_GROUP_SOURCES, value)} onRemove={(value) => this.removeFilter(FILTER_GROUP_SOURCES, value)} available={this.props.availableSources} applied={this.props.appliedSources} /> - {this.props.availableAsns.length > 0 &&

Neighbor

} this.addFilter(FILTER_GROUP_ASNS, value)} onRemove={(value) => this.removeFilter(FILTER_GROUP_ASNS, value)} available={this.props.availableAsns} applied={this.props.appliedAsns} /> - {(this.props.availableCommunities.communities.length > 0 || - this.props.availableCommunities.ext.length > 0 || - this.props.availableCommunities.large.length > 0 || - this.props.appliedCommunities.communities.length > 0 || - this.props.appliedCommunities.ext.length > 0 || - this.props.appliedCommunities.large.length > 0) &&

Communities

} this.addFilter(group, value)} onRemove={(group, value) => this.removeFilter(group, value)} available={this.props.availableCommunities} applied={this.props.appliedCommunities} /> -
); } diff --git a/client/components/filters/widgets.jsx b/client/components/filters/widgets.jsx index 59c79fb..d138ae1 100644 --- a/client/components/filters/widgets.jsx +++ b/client/components/filters/widgets.jsx @@ -15,7 +15,26 @@ import {FILTER_GROUP_COMMUNITIES, from './groups' -export class RouteserversSelect extends React.Component { +/* + * Add a title to the widget, if something needs to be rendered + */ +const withTitle = (title) => (Widget) => (class WidgetWithTitle extends Widget { + render() { + const result = super.render(); + if (result == null) { + return null; + } + return ( +
+

{title}

+ {result} +
+ ) + } +}); + + +class _RouteserversSelect extends React.Component { render() { // Nothing to do if we don't have filters if (this.props.available.length == 0 && @@ -82,8 +101,10 @@ export class RouteserversSelect extends React.Component { } } +export const RouteserversSelect = withTitle("Route Server")(_RouteserversSelect); -export class PeersFilterSelect extends React.Component { + +class _PeersFilterSelect extends React.Component { render() { // Nothing to do if we don't have filters if (this.props.available.length == 0 && @@ -151,8 +172,10 @@ export class PeersFilterSelect extends React.Component { } } +export const PeersFilterSelect = withTitle("Neighbor")(_PeersFilterSelect); -class _CommunitiesSelect extends React.Component { + +class __CommunitiesSelect extends React.Component { propagateChange(value) { // Decode value const [group, community] = value.split(",", 2); @@ -292,11 +315,12 @@ class _CommunitiesSelect extends React.Component { } } -export const CommunitiesSelect = connect( +const _CommunitiesSelect = connect( (state) => ({ communities: state.config.bgp_communities, }) -)(_CommunitiesSelect); - +)(__CommunitiesSelect); + +export const CommunitiesSelect = withTitle("Communities")(_CommunitiesSelect); diff --git a/client/components/routeservers/routes/reducer.jsx b/client/components/routeservers/routes/reducer.jsx index a922e1e..15e6ec6 100644 --- a/client/components/routeservers/routes/reducer.jsx +++ b/client/components/routeservers/routes/reducer.jsx @@ -115,6 +115,7 @@ function _handleFetchRoutesRequest(type, state, payload) { const nextState = Object.assign({}, state, { [stype+'Loading']: true, [stype+'Requested']: true, + [stype+'FiltersAvailable']: initialFilterState, }); return nextState;