diff --git a/solution.patch b/solution.patch new file mode 100644 index 00000000000..012ad8142c3 Binary files /dev/null and b/solution.patch differ diff --git a/src/core/core.controller.js b/src/core/core.controller.js index e0408ae212a..4c6bb1cbb71 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -440,10 +440,19 @@ class Chart { meta.controller.linkScales(); } else { const ControllerClass = registry.getController(type); - const {datasetElementType, dataElementType} = defaults.datasets[type]; + let defaultDataElementType = defaults.datasets[type].dataElementType; + let defaultDatasetElementType = defaults.datasets[type].datasetElementType; + + if (defaultDataElementType === undefined) { + defaultDataElementType = ControllerClass.dataElementType; + } + if (defaultDatasetElementType === undefined) { + defaultDatasetElementType = ControllerClass.datasetElementType; + } + Object.assign(ControllerClass, { - dataElementType: registry.getElement(dataElementType), - datasetElementType: datasetElementType && registry.getElement(datasetElementType) + dataElementType: defaultDataElementType ? registry.getElement(defaultDataElementType) : defaultDataElementType, + datasetElementType: defaultDatasetElementType ? registry.getElement(defaultDatasetElementType) : defaultDatasetElementType }); meta.controller = new ControllerClass(this, i); newControllers.push(meta.controller); diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index 9b7126a93fd..0f054568719 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -271,8 +271,8 @@ export default class DatasetController { this.supportsDecimation = false; this.$context = undefined; this._syncList = []; - this.datasetElementType = new.target.datasetElementType; - this.dataElementType = new.target.dataElementType; + this.datasetElementType = valueOrDefault(new.target.datasetElementType, null); + this.dataElementType = valueOrDefault(new.target.dataElementType, null); this.initialize(); } @@ -786,6 +786,9 @@ export default class DatasetController { * @protected */ resolveDatasetElementOptions(mode) { + if (!this.datasetElementType) { + return {}; + } return this._resolveElementOptions(this.datasetElementType.id, mode); } @@ -795,6 +798,9 @@ export default class DatasetController { * @protected */ resolveDataElementOptions(index, mode) { + if (!this.dataElementType) { + return {}; + } return this._resolveElementOptions(this.dataElementType.id, mode, index); } @@ -982,7 +988,9 @@ export default class DatasetController { } if (numData > numMeta) { - this._insertElements(numMeta, numData - numMeta, resetNewElements); + if (this.dataElementType) { + this._insertElements(numMeta, numData - numMeta, resetNewElements); + } } else if (numData < numMeta) { this._removeElements(numData, numMeta - numData); }