Skip to content

Commit dd90fc3

Browse files
authored
Fix undefined dataset labels issue (#37)
* Filter data to exclude undefined values * Add test coverage for chartbuilder details
1 parent 6aa097a commit dd90fc3

File tree

2 files changed

+41
-10
lines changed

2 files changed

+41
-10
lines changed

__tests__/unit/chartBuilder.test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,35 @@ describe('test property', () => {
111111
// Validate parameters of mocked Apex call
112112
expect(element.soql).toEqual(`'${ChartBuilder.FAKE_ID}'`);
113113
});
114+
115+
test('details success', () => {
116+
const element = createElement('c-chartBuilder', { is: ChartBuilder });
117+
document.body.appendChild(element);
118+
const data = [
119+
{ labels: 'Item1', detail: [1, 2] },
120+
{ labels: 'Item2', detail: [9, 8] }
121+
];
122+
element.details = JSON.stringify(data);
123+
124+
return flushPromises().then(() => {
125+
expect(element.details.length).toEqual(data.length);
126+
});
127+
});
128+
129+
test('details success with undefined data removed', () => {
130+
const element = createElement('c-chartBuilder', { is: ChartBuilder });
131+
document.body.appendChild(element);
132+
const data = [
133+
{ labels: 'Item1', detail: [1, 2] },
134+
{ labels: 'Item2', detail: [9, 8] },
135+
{ labels: 'Item3' }
136+
];
137+
element.details = JSON.stringify(data);
138+
139+
return flushPromises().then(() => {
140+
expect(element.details.length).toEqual(2);
141+
});
142+
});
114143
});
115144

116145
const MOCK_GETCHARTDATA = [{ labels: ['test'], detail: [10] }];

force-app/main/default/lwc/chartBuilder/chartBuilder.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,18 @@ export default class ChartBuilder extends LightningElement {
8787
this.dimensionsLabels = this.dimensionsLabels || [
8888
...new Set(data.map((x) => x.labels).flat())
8989
];
90-
this._details = data.map((x, i) => ({
91-
detail: x.detail,
92-
labels: this._detailsLabels[i],
93-
uuid: x.uuid || nanoid(4),
94-
bgColor:
95-
x.bgColor || this.isDimensionable
96-
? x.detail.map((_, j) => palette[j % palette.length])
97-
: palette[i % palette.length],
98-
fill: this.fill
99-
}));
90+
this._details = data
91+
.filter((x) => !!x.detail)
92+
.map((x, i) => ({
93+
detail: x.detail,
94+
labels: this._detailsLabels[i],
95+
uuid: x.uuid || nanoid(4),
96+
bgColor:
97+
x.bgColor || this.isDimensionable
98+
? x.detail.map((_, j) => palette[j % palette.length])
99+
: palette[i % palette.length],
100+
fill: this.fill
101+
}));
100102
this.error = false;
101103
})
102104
.catch((error) => this.errorCallback(error));

0 commit comments

Comments
 (0)