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 * as configApi from '../../config.js';
|
||||
import { parseFontSize } from '../../utils.js';
|
||||
import { getTextWidth } from '../../rendering-util/getTextWidth.js';
|
||||
|
||||
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.
|
||||
@ -79,15 +74,14 @@ export const draw = (txt, id, _version, diagObj) => {
|
||||
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 => {
|
||||
if (!legendShowData) {
|
||||
return key;
|
||||
}
|
||||
return key + ' [' + data[key] + ']';
|
||||
return `${key} [${data[key]}]`;
|
||||
})
|
||||
const legendTextWidths = legendTexts.map(v => getTextWidth(v)).sort((a, b) => a - b);
|
||||
const longestTextWidth = parseInt(legendTextWidths.pop());
|
||||
const longestTextWidth = Math.max(...(legendTexts.map(v => getTextWidth(v))));
|
||||
const newWidth = width + margin + legendRectSize + legendSpacing + longestTextWidth;
|
||||
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