Я пытаюсь создать DAG с dagre-d3. Данные для этих DAG поступают из базы данных, различаются для каждой группы DAG и как таковая, я не знаю ширины/высоты, чтобы предоставить содержащую svg перед добавлением всех узлов и ребер в график.Изменение размера d3/dagre-d3 svg для отображения всего содержимого
В идеале я бы назвал что-то вроде d3.select("#svg1").resize_to_match_contents()
после добавления всех узлов и ребер, чтобы убедиться, что все узлы видны, а svg не слишком велик. Конечно, такой функции нет, и я понятия не имею, как ее реализовать. Я знаю, что я могу позвонить d3.select("#svg1").attr("height", "10")
, чтобы установить высоту, но понятия не имею, как получить/вычислить, какова высота элемента <g>
внутри SVG.
Спасибо, 'getBBox()' был ключом. Это работает: 'var bbox = d3.select (" # svg {{loop.index}} ") .node(). getBBox(); d3.select ("# svg {{loop.index}}"). attr ("height", bbox.height + 40) .attr ('width', bbox.width + 40); ' –
Просто headhead - dagre-d3 теперь предоставляет атрибуты ширины и высоты на графике компоновки. Например, посмотрите: https://github.com/cpettitt/dagre-d3/blob/master/демо/предложение-затяжка nization.html # L85. –
@ChrisPettitt Спасибо! –