Я хотел добавить новый узел к графику двойным щелчком. Новый узел должен быть связан с существующим узлом, на котором щелкнули мышью. После обновления появится новый график с новым узлом. Но все же старый график кажется застывшим на заднем плане. Я не могу найти способ удалить этот старый график.
Вот моя функция обновления:
update(){
this.link = this.svg
.selectAll(".link")
.data(this.data.links, function (d){return d.target.id})
var linkEnter=this.link.enter()
.append("line").style("stroke", "#aaa")
.attr("class", "links");
linkEnter.append("title")
.text(function (d){return d.type})
this.link = this.link.merge(linkEnter);
this.link.exit().remove();
this.node = this.svg.selectAll(".node")
.data(this.data.nodes, function (d){return d.id})
var nodeEnter= this.node.enter().append("circle")
.attr("r", (d) => {return this.rad})
nodeEnter.style("fill","black") //stylings
.style("stroke-width", this.nodeborder)
.style("stroke", (d) => { return this.color(d.group); })
nodeEnter.on('dblclick', this.nodeDoubleClick);
nodeEnter.call(d3.drag()
.on("start", this.dragstarted)
.on("drag", this.dragged)
.on("end", this.dragended));
this.node=this.node.merge(nodeEnter);
this.node.exit().remove();
this.text = this.svg.selectAll("text").data(this.data.nodes); // displays node-name
var textEnter=this.text.enter().append("text")
.data(this.data.nodes, function (d){return d.name})
.text(function (d) {return d.name });
this.text=this.text.merge(textEnter);
this.text.exit().remove();
this.linkText = this.svg.selectAll("links").data(this.data.links, function (d){ return d.type}); // displays link-type
var linkTextEnter=this.linkText.enter().append("text")
.style("fill", "#999")
.text(function (d) { return d.type }); // get link text from data
this.linkText=this.linkText.merge(linkTextEnter);
this.linkText.exit().remove();
this.simulation.nodes(this.data.nodes);
this.simulation.force("link").links(this.data.links);
}
И моя функция выполняется по двойному щелчку:
nodeDoubleClick=(d)=> {
this.index++;
const newNode = { "name": "neighbor"+ this.index, "group": 8 };
this.data.nodes.push(newNode);
this.data.links.push({ "source": d.id, "target": newNode, "type": "testclick" })
this.update();
}
``