add dragging-state
This commit is contained in:
parent
c8a4882f38
commit
4d98854ce3
|
@ -158,6 +158,8 @@ function isConnected(a, b) {
|
||||||
|
|
||||||
function fade(opacity) {
|
function fade(opacity) {
|
||||||
return function(d) {
|
return function(d) {
|
||||||
|
if (dragging) return
|
||||||
|
|
||||||
vis.selectAll("g.node")
|
vis.selectAll("g.node")
|
||||||
.style("stroke-opacity", function(o) {
|
.style("stroke-opacity", function(o) {
|
||||||
var connected = isConnected(d, o)
|
var connected = isConnected(d, o)
|
||||||
|
@ -380,6 +382,33 @@ var linkcolor = {'default':
|
||||||
.range(["#0a3", "orange", "red"]),
|
.range(["#0a3", "orange", "red"]),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dragging = false
|
||||||
|
|
||||||
|
var node_drag = d3.behavior.drag()
|
||||||
|
.on("dragstart", dragstart)
|
||||||
|
.on("drag", dragmove)
|
||||||
|
.on("dragend", dragend)
|
||||||
|
|
||||||
|
var d3_layout_forceDragNode
|
||||||
|
|
||||||
|
function dragstart(d) {
|
||||||
|
dragging = true
|
||||||
|
d3_layout_forceDragNode = d
|
||||||
|
d.fixed |= 2
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragmove() {
|
||||||
|
d3_layout_forceDragNode.px = d3.event.x
|
||||||
|
d3_layout_forceDragNode.py = d3.event.y
|
||||||
|
force.resume() // restart annealing
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragend() {
|
||||||
|
d3_layout_forceDragNode.fixed &= 1
|
||||||
|
d3_layout_forceDragNode = null
|
||||||
|
dragging = false
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
var links = data.links
|
var links = data.links
|
||||||
.filter(function (d) {
|
.filter(function (d) {
|
||||||
|
@ -407,10 +436,14 @@ function update() {
|
||||||
return "link " + d.type
|
return "link " + d.type
|
||||||
})
|
})
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
|
if (dragging) return
|
||||||
|
|
||||||
d.source.fixed |= 2
|
d.source.fixed |= 2
|
||||||
d.target.fixed |= 2
|
d.target.fixed |= 2
|
||||||
})
|
})
|
||||||
.on("mouseout", function(d) {
|
.on("mouseout", function(d) {
|
||||||
|
if (dragging) return
|
||||||
|
|
||||||
d.source.fixed &= 1
|
d.source.fixed &= 1
|
||||||
d.target.fixed &= 1
|
d.target.fixed &= 1
|
||||||
})
|
})
|
||||||
|
@ -474,7 +507,7 @@ function update() {
|
||||||
.on("mouseover", fade(.2))
|
.on("mouseover", fade(.2))
|
||||||
.on("mouseout", fade(1))
|
.on("mouseout", fade(1))
|
||||||
.on("click", show_node_info)
|
.on("click", show_node_info)
|
||||||
.call(force.drag)
|
.call(node_drag)
|
||||||
|
|
||||||
nodeEnter.append("ellipse")
|
nodeEnter.append("ellipse")
|
||||||
.attr("class", function(d) {
|
.attr("class", function(d) {
|
||||||
|
|
Loading…
Reference in a new issue