71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
|
|
var { performance } = require('perf_hooks');
|
|
const timeit = (fun, number)=>{
|
|
|
|
const startTime = performance.now();
|
|
for(let _=0; _<number;_++)fun();
|
|
const endTime = performance.now();
|
|
return endTime-startTime;
|
|
}
|
|
const echarts = require("echarts");
|
|
const {createCanvas} = require('canvas');
|
|
const {svg2png} = require('svg-png-converter')
|
|
|
|
const fs = require('fs');
|
|
const { number } = require('echarts');
|
|
// echarts.setCanvasCreator(() => {
|
|
// return createCanvas(100, 100);
|
|
// });
|
|
|
|
|
|
const {JSDOM} = require('jsdom');
|
|
const {window} = new JSDOM();
|
|
global.window = window;
|
|
global.navigator = window.navigator;
|
|
global.document = window.document;
|
|
Object.defineProperty(window, "clientWidth", {value: 500});
|
|
Object.defineProperty(window, "clientHeight", {value: 500});
|
|
console.log("finished canvas setup.")
|
|
const createNewRoot = (window)=>{
|
|
let root = window.document.createElement('div');
|
|
root.style.cssText = 'width: 500px; height: 500px;';
|
|
window.document.body.appendChild(root)
|
|
return root
|
|
}
|
|
const generateChartObject = (root)=>{
|
|
const chart = echarts.init(root, null, {
|
|
renderer: 'svg'
|
|
});
|
|
return chart;
|
|
}
|
|
const generateChart = (root,chart, options)=>{
|
|
chart.setOption(options);
|
|
return chart
|
|
}
|
|
const fig2img = (root,chart,dispose=true)=>{
|
|
const svgFile = root.querySelector('svg').outerHTML;
|
|
if (dispose) chart.dispose();
|
|
return svgFile;
|
|
}
|
|
|
|
const convertToPng = async (src)=>{
|
|
let s = await svg2png({
|
|
input:src,
|
|
encoding: 'dataURL',
|
|
format: 'png',
|
|
width: 100,
|
|
height: 100,
|
|
multiplier: .7,
|
|
quality: .5
|
|
})
|
|
}
|
|
module.exports = {
|
|
echarts:echarts,
|
|
g:global,
|
|
createNewRoot:createNewRoot,
|
|
convert:convertToPng,
|
|
fig2img:fig2img,
|
|
generateChart:generateChart,
|
|
generateChartObject:generateChartObject,
|
|
}
|