DB-GPT/web/components/chart/helpers/downloadChartImage.ts
Dreammy23 471689ba20
feat(web): Unified frontend code style (#1923)
Co-authored-by: Fangyin Cheng <staneyffer@gmail.com>
Co-authored-by: 谨欣 <echo.cmy@antgroup.com>
Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com>
Co-authored-by: yanzhiyong <932374019@qq.com>
2024-08-30 14:03:06 +08:00

41 lines
1.0 KiB
TypeScript

import { ChartRef as G2Chart } from '@berryv/g2-react';
const getChartCanvas = (chart: G2Chart) => {
if (!chart) return;
const chartContainer = chart.getContainer();
const canvasNode = chartContainer.getElementsByTagName('canvas')[0];
return canvasNode;
};
/** 获得 g2 Chart 实例的 dataURL */
function toDataURL(chart: G2Chart) {
const canvasDom = getChartCanvas(chart);
if (canvasDom) {
const dataURL = canvasDom.toDataURL('image/png');
return dataURL;
}
}
/**
* 图表图片导出
* @param chart chart 实例
* @param name 图片名称
*/
export function downloadImage(chart: G2Chart, name: string = 'Chart') {
const link = document.createElement('a');
const filename = `${name}.png`;
setTimeout(() => {
const dataURL = toDataURL(chart);
if (dataURL) {
link.addEventListener('click', () => {
link.download = filename;
link.href = dataURL;
});
const e = document.createEvent('MouseEvents');
e.initEvent('click', false, false);
link.dispatchEvent(e);
}
}, 16);
}