Merge pull request #701 from weaveworks/693-no-filter-details

Don't apply filters to node endpoints & update details panel logic
This commit is contained in:
Tom Wilkie
2015-11-30 20:59:41 +09:00
3 changed files with 23 additions and 5 deletions

View File

@@ -245,7 +245,9 @@ func renderedForRequest(r *http.Request, topology APITopologyDesc) render.Render
return renderer
}
func (r *registry) captureRenderer(rep Reporter, f func(Reporter, render.Renderer, http.ResponseWriter, *http.Request)) http.HandlerFunc {
type reportRenderHandler func(Reporter, render.Renderer, http.ResponseWriter, *http.Request)
func (r *registry) captureRenderer(rep Reporter, f reportRenderHandler) http.HandlerFunc {
return func(w http.ResponseWriter, req *http.Request) {
topology, ok := r.get(mux.Vars(req)["topology"])
if !ok {
@@ -256,3 +258,14 @@ func (r *registry) captureRenderer(rep Reporter, f func(Reporter, render.Rendere
f(rep, renderer, w, req)
}
}
func (r *registry) captureRendererWithoutFilters(rep Reporter, f reportRenderHandler) http.HandlerFunc {
return func(w http.ResponseWriter, req *http.Request) {
topology, ok := r.get(mux.Vars(req)["topology"])
if !ok {
http.NotFound(w, req)
return
}
f(rep, topology.renderer, w, req)
}
}

View File

@@ -63,7 +63,7 @@ func registerTopologyRoutes(c collector, router *mux.Router) {
get.HandleFunc("/api/topology/{topology}/ws",
topologyRegistry.captureRenderer(c, handleWs)) // NB not gzip!
get.MatcherFunc(URLMatcher("/api/topology/{topology}/{id}")).HandlerFunc(
gzipHandler(topologyRegistry.captureRenderer(c, handleNode)))
gzipHandler(topologyRegistry.captureRendererWithoutFilters(c, handleNode)))
get.MatcherFunc(URLMatcher("/api/topology/{topology}/{local}/{remote}")).HandlerFunc(
gzipHandler(topologyRegistry.captureRenderer(c, handleEdge)))
get.HandleFunc("/api/report", gzipHandler(makeRawReportHandler(c)))

View File

@@ -77,14 +77,19 @@ const NodeDetails = React.createClass({
const details = this.props.details;
const nodeExists = this.props.nodes && this.props.nodes.has(this.props.nodeId);
if (details) {
return this.renderDetails();
}
if (!nodeExists) {
return this.renderNotAvailable();
}
if (!details) {
return this.renderLoading();
}
return this.renderLoading();
},
renderDetails: function() {
const details = this.props.details;
const nodeColor = this.getNodeColorDark(details.rank, details.label_major);
const styles = {
controls: {