nodefilter.js 679 B

123456789101112131415161718192021222324252627282930313233
  1. define([], function () {
  2. return function (filter) {
  3. return function (data) {
  4. var n = Object.create(data)
  5. n.nodes = {}
  6. for (var key in data.nodes) {
  7. n.nodes[key] = data.nodes[key].filter(filter)
  8. }
  9. var filteredIds = new Set()
  10. n.graph = {}
  11. n.graph.nodes = data.graph.nodes.filter( function (d) {
  12. if (!d.node)
  13. return true
  14. var r = filter(d.node)
  15. if (r)
  16. filteredIds.add(d.id)
  17. return r
  18. })
  19. n.graph.links = data.graph.links.filter( function (d) {
  20. return filteredIds.has(d.source.id) && filteredIds.has(d.target.id)
  21. })
  22. return n
  23. }
  24. }
  25. })