From bfa1fb83f97c6dc82342dbe405a328c498076def Mon Sep 17 00:00:00 2001 From: Jakub Juszczak Date: Tue, 20 Mar 2018 21:35:54 +0100 Subject: [PATCH] Revert "wip: Refactor mixin in seperate functions" This reverts commit 8669452651eb984126c9eb2aa9e40b4b888baa90. --- src/mixins/index.js | 105 +++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 56 deletions(-) diff --git a/src/mixins/index.js b/src/mixins/index.js index 658b74d0..85ec49c5 100644 --- a/src/mixins/index.js +++ b/src/mixins/index.js @@ -1,72 +1,65 @@ -/* eslint-disable */ - function dataHandler (newData, oldData) { if (oldData) { - const chart = this.$data._chart - _checkChanges(newData, oldData, chart) - } else { - _destroyAndRenderChart(chart) -} + let chart = this.$data._chart -function _checkChanges (newData, oldData, chart) { - // Get new and old DataSet Labels - let newDatasetLabels = newData.datasets.map((dataset) => { - return dataset.label - }) + // Get new and old DataSet Labels + let newDatasetLabels = newData.datasets.map((dataset) => { + return dataset.label + }) - let oldDatasetLabels = oldData.datasets.map((dataset) => { - return dataset.label - }) + let oldDatasetLabels = oldData.datasets.map((dataset) => { + return dataset.label + }) - // Stringify 'em for easier compare - const oldLabels = JSON.stringify(oldDatasetLabels) - const newLabels = JSON.stringify(newDatasetLabels) + // Stringify 'em for easier compare + const oldLabels = JSON.stringify(oldDatasetLabels) + const newLabels = JSON.stringify(newDatasetLabels) - // Check if Labels are equal and if dataset length is equal - if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) { - newData.datasets.forEach((dataset, i) => { - // Get new and old dataset keys - const oldDatasetKeys = Object.keys(oldData.datasets[i]) - const newDatasetKeys = Object.keys(dataset) + // Check if Labels are equal and if dataset length is equal + if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) { + newData.datasets.forEach((dataset, i) => { + // Get new and old dataset keys + const oldDatasetKeys = Object.keys(oldData.datasets[i]) + const newDatasetKeys = Object.keys(dataset) - // Get keys that aren't present in the new data - const deletionKeys = oldDatasetKeys.filter((key) => { - return key !== '_meta' && newDatasetKeys.indexOf(key) === -1 - }) + // Get keys that aren't present in the new data + const deletionKeys = oldDatasetKeys.filter((key) => { + return key !== '_meta' && newDatasetKeys.indexOf(key) === -1 + }) - // Remove outdated key-value pairs - deletionKeys.forEach((deletionKey) => { - delete chart.data.datasets[i][deletionKey] - }) + // Remove outdated key-value pairs + deletionKeys.forEach((deletionKey) => { + delete chart.data.datasets[i][deletionKey] + }) - // Update attributes individually to avoid re-rendering the entire chart - for (const attribute in dataset) { - if (dataset.hasOwnProperty(attribute)) { - chart.data.datasets[i][attribute] = dataset[attribute] + // Update attributes individually to avoid re-rendering the entire chart + for (const attribute in dataset) { + if (dataset.hasOwnProperty(attribute)) { + chart.data.datasets[i][attribute] = dataset[attribute] + } } - } - }) + }) - if (newData.hasOwnProperty('labels')) { - chart.data.labels = newData.labels - } - if (newData.hasOwnProperty('xLabels')) { - chart.data.xLabels = newData.xLabels - } - if (newData.hasOwnProperty('yLabels')) { - chart.data.yLabels = newData.yLabels + if (newData.hasOwnProperty('labels')) { + chart.data.labels = newData.labels + } + if (newData.hasOwnProperty('xLabels')) { + chart.data.xLabels = newData.xLabels + } + if (newData.hasOwnProperty('yLabels')) { + chart.data.yLabels = newData.yLabels + } + chart.update() + } else { + chart.destroy() + this.renderChart(this.chartData, this.options) } - chart.update() } else { - _destroyAndRenderChart(chart) - } -} - -function _destroyAndRenderChart (chart) { - if (chart) { - chart.destroy() + if (this.$data._chart) { + this.$data._chart.destroy() + } + this.renderChart(this.chartData, this.options) } - this.renderChart(this.chartData, this.options) } export const reactiveData = { @@ -84,6 +77,7 @@ export const reactiveData = { export const reactiveProp = { props: { chartData: { + type: Object, required: true, default: () => {} } @@ -97,4 +91,3 @@ export default { reactiveData, reactiveProp } -