У меня возникли трудности с добавлением и удалением узлов на основе пользовательского ввода, который был решен путем обновления всего набора объектов, вставляемых в force.nodes() каждый раз, когда которые они хотели просмотреть из списка флажков.d3: Добавление и удаление force.nodes на основе значений ползунка
Обновление с ползунка, однако, я думаю, требуется более тонкое прикосновение - я не хочу обновлять весь набор при каждом перемещении ползунка. Я хочу нажимать и вставлять узлы в и из Force.nodes().
С моим текущим кодом узлы выходят просто отлично - они просто не вернуться в jsfiddle здесь - https://jsfiddle.net/hiwilson1/ancmtxux/3/
Это часть вызывает проблемы.
function brushed() {
var exists;
//var newd = new Date(2013, 05, 01)
data.forEach(function(d, i) {
//if data point in range (between extent 0 and 1)
if (d.date >= brush.extent()[0] && d.date <= brush.extent()[1]) {
exists = force.nodes().some(function(node, i) {
//check if data point already exists in force.nodes()
return (node.mIndex == d.mIndex)
})
console.log(exists)
if (!exists) {
force.nodes().push(d)
}
}
else {
force.nodes().splice(i, 1)
}
})
d3.select("#nodeCount").text(force.nodes().length)
}
Для каждой точки данных, я проверка, является ли или нет лежит точка между степенью() [0] и [1]. Если да, то проверьте force.nodes(), чтобы увидеть, есть ли в данный момент член. Если это не так, то нажмите ее в force.nodes().
Если точка данных не лежит между экстентами, тогда соедините ее с force.nodes(). Этот последний бит работает отлично.
ОБНОВЛЕНИЕ: Исправлено. Я также разработал, как фильтровать ссылки, прикрепленные к узлам. jsfiddle here - https://jsfiddle.net/hiwilson1/7oumeat5/2/. Никогда не пытайтесь делать это с индексами/жестко закодированными индексами, сравнивайте узлы/ссылки как объекты.
Кстати, я вижу ссылки на вершине узлов. Если есть способ исправить это, я был бы рад услышать это.
ДАЛЕЕ UPDATE: Для того, чтобы обеспечить ссылки за узлы используют .Применять («строку», «: первый ребенок») вместо .append («линия»)
Комментарии не для широкого обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/77339/discussion-on-answer-by-lars-kotthoff-d3-adding-and-removing-force-nodes-based) , – Taryn
Я старался не использовать их. Я использую компьютерные индексы, чтобы избавиться от ссылок, но только после поиска индексов путем сопоставления источника и ссылок с источником связанных ссылок и ссылками. Я даже повторно вставляю узлы и ссылки на их. исходные позиции через splice(), поэтому я попытался отрицать это на каждом шагу. Коды, которые были свернуты, так что трудно следовать, где я ошибаюсь. Попробует другую стратегию. – hwilson1