diff --git a/src/mixins/reactiveProp.js b/src/mixins/reactiveProp.js new file mode 100644 index 0000000..fd545b8 --- /dev/null +++ b/src/mixins/reactiveProp.js @@ -0,0 +1,35 @@ +module.exports = { + props: { + chartData: { + required: true + } + }, + + watch: { + 'chartData': { + handler (newData, oldData) { + if (oldData) { + let chart = this._chart + + let newDataLabels = newData.datasets.map((dataset) => { + return dataset.label + }) + + let oldDataLabels = oldData.datasets.map((dataset) => { + return dataset.label + }) + + if (JSON.stringify(newDataLabels) === JSON.stringify(oldDataLabels)) { + newData.datasets.forEach((dataset, i) => { + chart.data.datasets[i].data = dataset.data + }) + chart.data.labels = newData.labels + chart.update() + } else { + this.renderChart(this.chartData, this.options) + } + } + } + } + } +}