2015-03-16 9 views
1

Я вижу много dagre-D3 образцов кода, которые начинаются так:dagreD3 - Объекты Renderer и DiGraph устарели? Как сделать переходы и макеты?

var g = new dagreD3.Digraph(); 
var renderer = new dagreD3.Renderer(); 
var layout = dagre.layout(); 

Но я не могу создать эти 3 объекта, я получаю «не функцию» ошибка JavaScript вместо. Я ссылка на «последние» библиотеки dagreD3 по адресу:

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> 
<script src="http://cpettitt.github.io/project/dagre-d3/latest/dagre-d3.js"></script> 

я могу получить рабочий график, используя вместо того, чтобы эти объекты и код, который я нахожу в других примерах:

var g = new dagreD3.graphlib.Graph(); 
var inner = d3.select("g"); 
var render = new dagreD3.render(); // Create the renderer 
    render(inner, g); // Run the renderer. 

Так что мое предположение что объекты DiGraph и Renderer являются «старыми» и устаревшими, это правильно? Если нет, почему я не могу создать объекты Renderer и DiGraph? Я полный нуб?

Если Renderer и Digraph объекты фактически устарели, как я могу получить макеты и/или включить переходы, как описано в этой теме и, используя образец кода нашел там https://github.com/cpettitt/dagre-d3/issues/31:

// Custom transition function 
function transition(selection) { 
    return selection.transition().duration(500); 
} 
renderer.transition(transition); 

Все, что я действительно хочу сделать, это удалить узел и/или ребро из графика и перевести его в новый макет. Я думаю, это будет выглядеть примерно так:

g.transition().removeNode(d); 
g.transition().removeEdge(v); 

Лучшее, что я могу получить работу это:

g.removeNode(d); 
g.removeEdge(v); 
render(inner, g); 

, который «перескакивает» с новой компоновкой вместо плавного перехода. Я новичок в D3 и все еще учился - Что мне не хватает? Спасибо за вашу помощь.

ответ