Browse Source

filters: combine filters first

Nils Schneider 8 years ago
parent
commit
653a329698
2 changed files with 10 additions and 6 deletions
  1. 8 4
      lib/datadistributor.js
  2. 2 2
      lib/filters/genericnode.js

+ 8 - 4
lib/datadistributor.js

@@ -1,4 +1,4 @@
-define([], function () {
+define(["filters/nodefilter"], function (NodeFilter) {
   return function () {
     var targets = []
     var filterObservers = []
@@ -26,9 +26,13 @@ define([], function () {
       if (data === undefined)
         return
 
-      filteredData = filters.reduce( function (a, f) {
-        return f.run(a)
-      }, data)
+      var filter = filters.reduce( function (a, f) {
+        return function (d) {
+          return a(d) && f.run(d)
+        }
+      }, function () { return true })
+
+      filteredData = new NodeFilter(filter)(data)
 
       targets.forEach( function (t) {
         t.setData(filteredData)

+ 2 - 2
lib/filters/genericnode.js

@@ -1,4 +1,4 @@
-define(["filters/nodefilter"], function (nodefilter) {
+define([], function () {
   return function (name, key, value, f) {
     var negate = false
     var refresh
@@ -44,7 +44,7 @@ define(["filters/nodefilter"], function (nodefilter) {
       }
     }
 
-    return { run: nodefilter(run),
+    return { run: run,
              setRefresh: setRefresh,
              render: render
            }