2015-07-08 00:36:57 +02:00
|
|
|
define([], function () {
|
|
|
|
return function (filter) {
|
|
|
|
return function (data) {
|
|
|
|
var n = Object.create(data)
|
|
|
|
n.nodes = {}
|
|
|
|
|
|
|
|
for (var key in data.nodes) {
|
|
|
|
n.nodes[key] = data.nodes[key].filter(filter)
|
|
|
|
}
|
|
|
|
|
|
|
|
var filteredIds = new Set()
|
|
|
|
|
|
|
|
n.graph = {}
|
|
|
|
n.graph.nodes = data.graph.nodes.filter( function (d) {
|
|
|
|
if (!d.node)
|
|
|
|
return true
|
|
|
|
|
|
|
|
var r = filter(d.node)
|
|
|
|
|
|
|
|
if (r)
|
|
|
|
filteredIds.add(d.id)
|
|
|
|
|
|
|
|
return r
|
|
|
|
})
|
|
|
|
|
|
|
|
n.graph.links = data.graph.links.filter( function (d) {
|
2016-02-27 14:43:27 +01:00
|
|
|
return !d.sourceid || (filteredIds.has(d.source.id) && filteredIds.has(d.target.id))
|
2015-07-08 00:36:57 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
return n
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|