mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-31 15:47:05 +00:00
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>
41 lines
1.0 KiB
TypeScript
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);
|
|
}
|