const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
export const dynamicCalculationWidth = (
title = '',
tableData = [],
prop = '',
num = 0,
fontSize = 14
) => {
let flexWidth = 0;
ctx.font = `${fontSize}px Microsoft YaHei`;
const dataLength = tableData.length;
if (!title && !dataLength) {
return;
}
if (!!title && !!dataLength) {
flexWidth = Math.max(
ctx.measureText(title).width,
findMaxWidthColText(tableData, prop)
);
} else if (!!title && !dataLength) {
flexWidth = ctx.measureText(title).width;
} else if (!title && !!dataLength) {
flexWidth = findMaxWidthColText(tableData, prop);
}
return flexWidth + 40 + num + 'px';
};
function findMaxWidthColText(data, prop) {
const colTextWidthArr = data.map((item) => {
return ctx.measureText(String(item[prop])).width;
});
return Math.max(...colTextWidthArr);
}