You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

76 lines
2.5 KiB

let { Buffer } = require("buffer");
const {ChartJSNodeCanvas} = require("chartjs-node-canvas");
const dependencies = {
chartJS: require("chartjs-node-canvas")
};
const constants = {
TYPES: ['PNG', 'SVG'],
smalll: {
height: 400,
width: 400
},
medium: {
height: 500,
width: 500
}
};
(async () => {
console.log("Creating Chart Object");
const { CanvasRenderService } = dependencies.chartJS;
const { height, width } = constants.medium;
const renderService = new ChartJSNodeCanvas({ type: 'svg', width: 800, height: 600 });
/*let renderService = new CanvasRenderService(width, height, (ChartJS) => {
ChartJS.defaults.global.animation = false;
ChartJS.defaults.global.responsive = false;
}, 'SVG'); //Tried SVG and svg*/
try {
let buffer = await renderService.renderToBufferSync({
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
/*scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}*/
}
}, 'image/svg+xml');
//When I run this I dont get anthing below this to print out
console.log("Finished");
console.log();
const fs = require('node:fs');
fs.writeFileSync('image.svg', buffer, 'utf8');
//let base64Str = Buffer.from(buffer).toString("base64");
//console.log(base64Str);
} catch (e) {
console.log(e);
}
})();