Reputation: 4539
First time working with highcharts-vue
.
I have the following global chart options, which I import in my app.js
. It is here I have added a button to the exporting menu to allow for download CSV / XLSX
functionality, leveraging maatwebsite/laravel-excel
, as the final export will include additional columns to shown on the chart (as opposed to just downloading the chart data via its CSV/XSLX plugins).
I would like to pass the url into the exporting button drop-list on the chart, but I have not been successful. How do I pass a prop (the destination url for the data request) to this config?
I have multiple chart instances on a page and each would require its own target url.
Any suggestions welcome.
export const highChartConfig = function(page) {
return {
credits: {
enabled: false
},
title: {
align: 'center',
style: {
color: "#4B5563",
fontSize: "16px",
fontWeight: "300",
},
},
exporting: {
buttons: {
contextButton: {
menuItems: [{
textKey: 'printChart',
onclick: function () {
this.print();
}
}, {
separator: true
},{
textKey: 'downloadCSV',
onclick: function () {
// THIS PROP I WOULD LIKE TO PASS TO THIS POINT. I GET UNDEFINED HERE
console.log(this.downloadCsvRoute)
if (this.downloadCsvRoute && this.downloadCsvRoute != '') {
axios.get(this.downloadCsvRoute)
}
}
}]
}
}
},
}
}
Upvotes: 0
Views: 270
Reputation: 39139
The this
keyword in onclick callback function refers to a chart, use arrow function to get the external this
reference:
buttons: {
contextButton: {
menuItems: [..., {
textKey: 'downloadCSV',
onclick: () => {
if (this.downloadCsvRoute && this.downloadCsvRoute != '') {
axios.get(this.downloadCsvRoute)
}
}
}]
}
}
API Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Upvotes: 1