Skip to content

Instantly share code, notes, and snippets.

@Nickibrochner
Created September 14, 2017 08:15
Show Gist options
  • Save Nickibrochner/6273ec88a032c96c5872503b97584d9e to your computer and use it in GitHub Desktop.
Save Nickibrochner/6273ec88a032c96c5872503b97584d9e to your computer and use it in GitHub Desktop.
// En test af Group
app.get('/testaar', function(req, res) {
function QueryMongoDB(callback) {
MongoClient.connect('mongodb://localhost:27017/Akkredibot', function(err, db) {
if (err) throw err
// her vælges akkredibot databasen inklusiv query
db.collection('akkrdata').aggregate([
{$group:
{_id: '$Aar', total: {$sum: 1}}
},
{$sort:
{_id: 1}
}
], function(err, result) {
mongodbSvar = result.map(x => x._id)
mongodbSvar = mongodbSvar.map(String)
mongodbSvar2 = result.map(x => x.total)
mongodbSvar2 = mongodbSvar2.map(String)
callback()
})
})
}
/*
function SendJSON() {
jsonResponse.push( mongodbSvar, mongodbSvar2 );
res.send(jsonResponse);
}
QueryMongoDB(SendJSON);
jsonResponse.length = 0;
*/
const ChartjsNode = require('chartjs-node');
// 600x600 canvas size
var chartNode = new ChartjsNode(600, 600);
var randomnumber = Math.random();
var imagename = "testimage" + randomnumber + ".png"
// each api returns a Promise
chartNode.drawChart({
type: 'bar',
data: {
labels: mongodbSvar,
datasets: [{
label: 'Antal akkrediteringer',
data: mongodbSvar2,
backgroundColor: [
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(54, 162, 235, 0.2)'
],
borderColor: [
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)'
],
borderWidth: 1
}]
},
options: {
layout: {
padding: {
left: 30,
right: 30,
top: 30,
bottom: 30
}
},
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
})
.then(() => {
// now we have a chart
// lets get the image stream
return chartNode.getImageStream('image/png');
})
.then(imageStream => {
// now you can do anything with the image, like upload to S3
// lets get the image buffer
return chartNode.getImageBuffer('image/png');
})
.then(imageBuffer => {
// now you can modify the raw PNG buffer if you'd like
// want to write the image directly to the disk, no problem
return chartNode.writeImageToFile('image/png', '/home/nicki/akkredibot/img/' + imagename);
})
.then(() => {
jsonResponse.length = 0;
jsonResponse.push({
"attachment": {
"type": "image",
"payload": {
"url": "http://95.85.21.185/" + imagename + "",
"Test": + mongodbSvar + "og" + mongodbSvar2
}
}
});
res.send(jsonResponse);
jsonResponse.length = 0;
chartNode.destroy()
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment