UNPKG

dagre-d3

Version:

A D3-based renderer for Dagre

48 lines (36 loc) 1.27 kB
"use strict"; var _ = require("./lodash"); var addLabel = require("./label/add-label"); var util = require("./util"); var d3 = require("./d3"); module.exports = createEdgeLabels; function createEdgeLabels(selection, g) { var svgEdgeLabels = selection.selectAll("g.edgeLabel") .data(g.edges(), function(e) { return util.edgeToId(e); }) .classed("update", true); svgEdgeLabels.exit().remove(); svgEdgeLabels.enter().append("g") .classed("edgeLabel", true) .style("opacity", 0); svgEdgeLabels = selection.selectAll("g.edgeLabel"); svgEdgeLabels.each(function(e) { var root = d3.select(this); root.select(".label").remove(); var edge = g.edge(e); var label = addLabel(root, g.edge(e), 0, 0).classed("label", true); var bbox = label.node().getBBox(); if (edge.labelId) { label.attr("id", edge.labelId); } if (!_.has(edge, "width")) { edge.width = bbox.width; } if (!_.has(edge, "height")) { edge.height = bbox.height; } }); var exitSelection; if (svgEdgeLabels.exit) { exitSelection = svgEdgeLabels.exit(); } else { exitSelection = svgEdgeLabels.selectAll(null); // empty selection } util.applyTransition(exitSelection, g) .style("opacity", 0) .remove(); return svgEdgeLabels; }