mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-21 06:53:17 +08:00
fix: apply suggested changes for PR #4288
This commit is contained in:
parent
77999f0b37
commit
f211ed686c
@ -4,14 +4,9 @@ import { log } from '../../logger.js';
|
|||||||
import { configureSvgSize } from '../../setupGraphViewbox.js';
|
import { configureSvgSize } from '../../setupGraphViewbox.js';
|
||||||
import * as configApi from '../../config.js';
|
import * as configApi from '../../config.js';
|
||||||
import { parseFontSize } from '../../utils.js';
|
import { parseFontSize } from '../../utils.js';
|
||||||
|
import { getTextWidth } from '../../rendering-util/getTextWidth.js';
|
||||||
|
|
||||||
let conf = configApi.getConfig();
|
let conf = configApi.getConfig();
|
||||||
// https://stackoverflow.com/a/35373030/3469145
|
|
||||||
const getTextWidth = (function () {
|
|
||||||
const canvas = document.createElement('canvas')
|
|
||||||
const context = canvas.getContext('2d')
|
|
||||||
return text => context.measureText(text).width * window.devicePixelRatio
|
|
||||||
})();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a Pie Chart with the data given in text.
|
* Draws a Pie Chart with the data given in text.
|
||||||
@ -79,15 +74,14 @@ export const draw = (txt, id, _version, diagObj) => {
|
|||||||
sum += data[key];
|
sum += data[key];
|
||||||
});
|
});
|
||||||
|
|
||||||
const legendShowData = diagObj.db.getShowData() || conf.showData || conf.pie.showData;
|
const legendShowData = diagObj.db.getShowData() || conf.showData || conf.pie.showData || false;
|
||||||
const legendTexts = Object.keys(data).map(key => {
|
const legendTexts = Object.keys(data).map(key => {
|
||||||
if (!legendShowData) {
|
if (!legendShowData) {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
return key + ' [' + data[key] + ']';
|
return `${key} [${data[key]}]`;
|
||||||
})
|
})
|
||||||
const legendTextWidths = legendTexts.map(v => getTextWidth(v)).sort((a, b) => a - b);
|
const longestTextWidth = Math.max(...(legendTexts.map(v => getTextWidth(v))));
|
||||||
const longestTextWidth = parseInt(legendTextWidths.pop());
|
|
||||||
const newWidth = width + margin + legendRectSize + legendSpacing + longestTextWidth;
|
const newWidth = width + margin + legendRectSize + legendSpacing + longestTextWidth;
|
||||||
elem.setAttribute("viewBox", "0 0 " + newWidth + " " + height);
|
elem.setAttribute("viewBox", "0 0 " + newWidth + " " + height);
|
||||||
|
|
||||||
|
7
packages/mermaid/src/rendering-util/getTextWidth.js
Normal file
7
packages/mermaid/src/rendering-util/getTextWidth.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// https://stackoverflow.com/a/35373030/3469145
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
const context = canvas.getContext('2d');
|
||||||
|
|
||||||
|
const getTextWidth = (text) => context.measureText(text).width * window.devicePixelRatio;
|
||||||
|
|
||||||
|
export { getTextWidth };
|
Loading…
x
Reference in New Issue
Block a user