function Detail(g, // gw, // group width gh, // group height dw, // detail width dh, // detail height dp, // detail padding fs, // font size fp) // font padding { this.update = function(details) { // create text if (text == null) { text = detail.selectAll('text') .data(details) .enter() .append('text') .text(function(d) { return d; }) .attr('transform', function(d, i) { var x = 3; var y = (fontSize + fontPadding) * i; y += tweak; return 'translate(' + x + ',' + y + ')'; }) .style({ 'font-family': 'sans-serif', 'font-size': fontSize + 'px' }); } else { // update text text.data(details) .text(function (d) { return d; }); } }; var groupWidth = gw; var groupHeight = gh; var width = dw; var height = dh; var padding = dp || 50; var fontSize = fs || 12; var fontPadding = fp || 3; var tweak = 16; var detail = g.append('g') .attr('class', 'detail') .attr('transform', 'translate(' + (groupWidth - width - padding) + ',' + (groupHeight - height - padding) + ')'); detail.append('rect') .attr('width', width) .attr('height', height) .attr('fill', 'none') .attr('stroke', 'black'); var text = null; }