mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-19 04:16:21 +00:00
refactor: use new FilterFunc.Apply
instead of constructing temporary Filter renderers. This also makes clearer what is going on.
This commit is contained in:
+3
-7
@@ -44,13 +44,9 @@ func handleNode(ctx context.Context, renderer render.Renderer, filter render.Fil
|
||||
)
|
||||
// We must not lose the node during filtering. We achieve that by
|
||||
// (1) rendering the report with the base renderer, without
|
||||
// filtering, which gives us the node (if it exists at all), then
|
||||
// (2) performing a normal filtered render of the report. If the
|
||||
// filtering, which gives us the node (if it exists at all), and
|
||||
// then (2) applying the filter separately to that result. If the
|
||||
// node is lost in the second step, we simply put it back.
|
||||
//
|
||||
// To avoid repeating the work from step (1) in step (2), we
|
||||
// replace the renderer in the latter with a constant renderer of
|
||||
// the result obtained in step (1).
|
||||
nodes := renderer.Render(rc.Report)
|
||||
node, ok := nodes.Nodes[nodeID]
|
||||
if !ok {
|
||||
@@ -58,7 +54,7 @@ func handleNode(ctx context.Context, renderer render.Renderer, filter render.Fil
|
||||
return
|
||||
}
|
||||
if filter != nil {
|
||||
nodes = render.Render(rc.Report, render.ConstantRenderer{Nodes: nodes}, filter)
|
||||
nodes = filter.Apply(nodes)
|
||||
if filteredNode, ok := nodes.Nodes[nodeID]; ok {
|
||||
node = filteredNode
|
||||
} else { // we've lost the node during filtering; put it back
|
||||
|
||||
+3
-12
@@ -31,10 +31,11 @@ func (r Nodes) Merge(o Nodes) Nodes {
|
||||
|
||||
// Render renders the report and then applies the filter
|
||||
func Render(rpt report.Report, renderer Renderer, filter FilterFunc) Nodes {
|
||||
nodes := renderer.Render(rpt)
|
||||
if filter != nil {
|
||||
renderer = MakeFilterPseudo(filter, renderer)
|
||||
nodes = filter.Apply(nodes)
|
||||
}
|
||||
return renderer.Render(rpt)
|
||||
return nodes
|
||||
}
|
||||
|
||||
// Reduce renderer is a Renderer which merges together the output of several
|
||||
@@ -147,16 +148,6 @@ func (cr conditionalRenderer) Render(rpt report.Report) Nodes {
|
||||
return Nodes{}
|
||||
}
|
||||
|
||||
// ConstantRenderer renders a fixed set of nodes
|
||||
type ConstantRenderer struct {
|
||||
Nodes
|
||||
}
|
||||
|
||||
// Render implements Renderer
|
||||
func (c ConstantRenderer) Render(_ report.Report) Nodes {
|
||||
return c.Nodes
|
||||
}
|
||||
|
||||
// joinResults is used by Renderers that join sets of nodes
|
||||
type joinResults struct {
|
||||
nodes report.Nodes
|
||||
|
||||
Reference in New Issue
Block a user