Я пытаюсь экспортировать облако слов в png с помощью кнопки.
В частности, я пытаюсь объединить реализацию Рокотяна для кругов d3 с пример ericcoopey с облаком слов.
Я поместил код для управления кнопкой внутри функции draw()
:
function draw(words) {
var svg = d3.select("body").append("svg")
.attr("width", 850)
.attr("height", 350)
.attr("class", "wordcloud")
.append("g")
.attr("transform", "translate(320,200)")
.selectAll("text")
.data(words)
.enter().append("text")
.style("font-size", function(d) { return d.size + "px"; })
.style("fill", function(d, i) { return color(i); })
.attr("transform", function(d) {
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
})
.text(function(d) { return d.text; });
d3.select('#saveButton').on('click', function(){
var svgString = getSVGString(svg.node());
svgString2Image( svgString, 2*width, 2*height, 'png', save );
function save( dataBlob, filesize ){
saveAs( dataBlob, 'D3 vis exported to PNG.png' );
}
});
// other functions come here
}
При нажатии кнопки загрузка не происходит, а объект существует (когда log svgString
я получаю некоторый вывод, но он намного короче, чем svgString
в примере ericcoopey). Что здесь не так?
Вот моя скрипка: https://jsfiddle.net/merose/k7eL3k3y/1/