From 8c004a1c422ed0aca67113bf82e64f6c3fcd3713 Mon Sep 17 00:00:00 2001 From: Jacco van den Berg Date: Mon, 29 Apr 2024 02:37:29 +0200 Subject: [PATCH] Create parsed object with correct keys (#11690) * Create parsed object with correct keys * Add test --- src/core/core.datasetController.js | 12 ++++++---- .../data/object-index-axis-y.js | 21 ++++++++++++++++++ .../data/object-index-axis-y.png | Bin 0 -> 10245 bytes 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/controller.bar/data/object-index-axis-y.js create mode 100644 test/fixtures/controller.bar/data/object-index-axis-y.png diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index 4c7a66255..976a3a5f6 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -92,15 +92,18 @@ function applyStack(stack, value, dsIndex, options = {}) { return value; } -function convertObjectDataToArray(data) { +function convertObjectDataToArray(data, meta) { + const {iScale, vScale} = meta; + const iAxisKey = iScale.axis === 'x' ? 'x' : 'y'; + const vAxisKey = vScale.axis === 'x' ? 'x' : 'y'; const keys = Object.keys(data); const adata = new Array(keys.length); let i, ilen, key; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; adata[i] = { - x: key, - y: data[key] + [iAxisKey]: key, + [vAxisKey]: data[key] }; } return adata; @@ -362,7 +365,8 @@ export default class DatasetController { // the internal metadata accordingly. if (isObject(data)) { - this._data = convertObjectDataToArray(data); + const meta = this._cachedMeta; + this._data = convertObjectDataToArray(data, meta); } else if (_data !== data) { if (_data) { // This case happens when the user replaced the data array instance. diff --git a/test/fixtures/controller.bar/data/object-index-axis-y.js b/test/fixtures/controller.bar/data/object-index-axis-y.js new file mode 100644 index 000000000..0023d0863 --- /dev/null +++ b/test/fixtures/controller.bar/data/object-index-axis-y.js @@ -0,0 +1,21 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + label: '# of Votes', + data: {a: 1, b: 3, c: 2} + }] + }, + options: { + indexAxis: 'y' + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/data/object-index-axis-y.png b/test/fixtures/controller.bar/data/object-index-axis-y.png new file mode 100644 index 0000000000000000000000000000000000000000..ace6956afca4ca04f72b53f469d58a50fa848553 GIT binary patch literal 10245 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 literal 0 Hc-jL100001 -- 2.47.3