| 12345678910111213141516171819202122232425262728293031323334353637 |
- import addTextLabel from './add-text-label'
- import addHtmlLabel from './add-html-label'
- import addSVGLabel from './add-svg-label'
- function addLabel (root, node, location) {
- const label = node.label
- const labelSvg = root.append('g')
- // Allow the label to be a string, a function that returns a DOM element, or
- // a DOM element itself.
- if (node.labelType === 'svg') {
- addSVGLabel(labelSvg, node)
- } else if (typeof label !== 'string' || node.labelType === 'html') {
- addHtmlLabel(labelSvg, node)
- } else {
- addTextLabel(labelSvg, node)
- }
- const labelBBox = labelSvg.node().getBBox()
- let y
- switch (location) {
- case 'top':
- y = (-node.height / 2)
- break
- case 'bottom':
- y = (node.height / 2) - labelBBox.height
- break
- default:
- y = (-labelBBox.height / 2)
- }
- labelSvg.attr('transform',
- 'translate(' + (-labelBBox.width / 2) + ',' + y + ')')
- return labelSvg
- }
- export default addLabel
|