dagre-d3
Version:
A D3-based renderer for Dagre
39 lines (33 loc) • 970 B
JavaScript
var addTextLabel = require("./add-text-label");
var addHtmlLabel = require("./add-html-label");
var addSVGLabel = require("./add-svg-label");
module.exports = addLabel;
function addLabel(root, node, location) {
var label = node.label;
var 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);
}
var labelBBox = labelSvg.node().getBBox();
var 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;
}