mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-07 09:36:41 +02:00
Fix for classDiagram-v2 support for cardinality
This commit is contained in:
@@ -43,25 +43,27 @@ export const insertEdgeLabel = (elem, edge) => {
|
|||||||
edge.width = bbox.width;
|
edge.width = bbox.width;
|
||||||
edge.height = bbox.height;
|
edge.height = bbox.height;
|
||||||
|
|
||||||
|
let fo;
|
||||||
if (edge.startLabelLeft) {
|
if (edge.startLabelLeft) {
|
||||||
// Create the actual text element
|
// Create the actual text element
|
||||||
const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);
|
const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);
|
||||||
const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
|
const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
|
||||||
const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');
|
const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');
|
||||||
inner.node().appendChild(startLabelElement);
|
fo=inner.node().appendChild(startLabelElement);
|
||||||
const slBox = startLabelElement.getBBox();
|
const slBox = startLabelElement.getBBox();
|
||||||
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
||||||
if (!terminalLabels[edge.id]) {
|
if (!terminalLabels[edge.id]) {
|
||||||
terminalLabels[edge.id] = {};
|
terminalLabels[edge.id] = {};
|
||||||
}
|
}
|
||||||
terminalLabels[edge.id].startLeft = startEdgeLabelLeft;
|
terminalLabels[edge.id].startLeft = startEdgeLabelLeft;
|
||||||
|
setTerminalWidth(fo,bbox);
|
||||||
}
|
}
|
||||||
if (edge.startLabelRight) {
|
if (edge.startLabelRight) {
|
||||||
// Create the actual text element
|
// Create the actual text element
|
||||||
const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);
|
const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);
|
||||||
const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
|
const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
|
||||||
const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');
|
const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');
|
||||||
startEdgeLabelRight.node().appendChild(startLabelElement);
|
fo=startEdgeLabelRight.node().appendChild(startLabelElement);
|
||||||
inner.node().appendChild(startLabelElement);
|
inner.node().appendChild(startLabelElement);
|
||||||
const slBox = startLabelElement.getBBox();
|
const slBox = startLabelElement.getBBox();
|
||||||
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
||||||
@@ -70,21 +72,25 @@ export const insertEdgeLabel = (elem, edge) => {
|
|||||||
terminalLabels[edge.id] = {};
|
terminalLabels[edge.id] = {};
|
||||||
}
|
}
|
||||||
terminalLabels[edge.id].startRight = startEdgeLabelRight;
|
terminalLabels[edge.id].startRight = startEdgeLabelRight;
|
||||||
|
setTerminalWidth(fo,bbox);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (edge.endLabelLeft) {
|
if (edge.endLabelLeft) {
|
||||||
// Create the actual text element
|
// Create the actual text element
|
||||||
const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);
|
const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);
|
||||||
const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
|
const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
|
||||||
const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');
|
const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');
|
||||||
inner.node().appendChild(endLabelElement);
|
fo=inner.node().appendChild(endLabelElement);
|
||||||
const slBox = endLabelElement.getBBox();
|
const slBox = endLabelElement.getBBox();
|
||||||
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
||||||
|
|
||||||
endEdgeLabelLeft.node().appendChild(endLabelElement);
|
endEdgeLabelLeft.node().appendChild(endLabelElement);
|
||||||
|
|
||||||
if (!terminalLabels[edge.id]) {
|
if (!terminalLabels[edge.id]) {
|
||||||
terminalLabels[edge.id] = {};
|
terminalLabels[edge.id] = {};
|
||||||
}
|
}
|
||||||
terminalLabels[edge.id].endLeft = endEdgeLabelLeft;
|
terminalLabels[edge.id].endLeft = endEdgeLabelLeft;
|
||||||
|
setTerminalWidth(fo,bbox);
|
||||||
}
|
}
|
||||||
if (edge.endLabelRight) {
|
if (edge.endLabelRight) {
|
||||||
// Create the actual text element
|
// Create the actual text element
|
||||||
@@ -92,7 +98,7 @@ export const insertEdgeLabel = (elem, edge) => {
|
|||||||
const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
|
const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
|
||||||
const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');
|
const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');
|
||||||
|
|
||||||
inner.node().appendChild(endLabelElement);
|
fo=inner.node().appendChild(endLabelElement);
|
||||||
const slBox = endLabelElement.getBBox();
|
const slBox = endLabelElement.getBBox();
|
||||||
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
|
||||||
|
|
||||||
@@ -101,9 +107,18 @@ export const insertEdgeLabel = (elem, edge) => {
|
|||||||
terminalLabels[edge.id] = {};
|
terminalLabels[edge.id] = {};
|
||||||
}
|
}
|
||||||
terminalLabels[edge.id].endRight = endEdgeLabelRight;
|
terminalLabels[edge.id].endRight = endEdgeLabelRight;
|
||||||
|
setTerminalWidth(fo,bbox);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function setTerminalWidth(fo, box){
|
||||||
|
if(getConfig().flowchart.htmlLabels && fo){
|
||||||
|
fo.style.width=box.width;
|
||||||
|
fo.style.height=box.height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const positionEdgeLabel = (edge, paths) => {
|
export const positionEdgeLabel = (edge, paths) => {
|
||||||
log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);
|
log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);
|
||||||
let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
|
let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
|
||||||
|
@@ -207,7 +207,7 @@ export const addRelations = function (relations, g) {
|
|||||||
edgeData.arrowheadStyle = 'fill: #333';
|
edgeData.arrowheadStyle = 'fill: #333';
|
||||||
edgeData.labelpos = 'c';
|
edgeData.labelpos = 'c';
|
||||||
|
|
||||||
if (getConfig().flowchart.htmlLabels && false) { // eslint-disable-line
|
if (getConfig().flowchart.htmlLabels) { // eslint-disable-line
|
||||||
edgeData.labelType = 'html';
|
edgeData.labelType = 'html';
|
||||||
edgeData.label = '<span class="edgeLabel">' + edge.text + '</span>';
|
edgeData.label = '<span class="edgeLabel">' + edge.text + '</span>';
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user