diff --git a/src/mixins/reactiveData.js b/src/mixins/reactiveData.js new file mode 100644 index 0000000..50d9ec6 --- /dev/null +++ b/src/mixins/reactiveData.js @@ -0,0 +1,34 @@ +module.exports = { + data () { + return { + chartData: null + } + }, + 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) + } + } + } + } + } +}