Markiewicz_praca/ssr.js

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,
}