fix: don't sort in pie function (#27076) (#29445)

This commit is contained in:
Joe Fleming 2019-01-28 11:48:19 -07:00 committed by GitHub
parent 7581d7f8ac
commit a0bc0ea180
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 18 deletions

View file

@ -22,28 +22,23 @@ describe('pie', () => {
describe('data', () => {
const result = fn(testPie).value.data;
it('is sorted by the series labels', () => {
expect(result.every((val, i) => (!!i ? val.label >= result[i - 1].label : true))).to.be(true);
});
it('has one series per unique label', () => {
const uniqueLabels = testPie.rows
.reduce(
(unique, series) =>
!unique.includes(series.color) ? unique.concat([series.color]) : unique,
[]
)
.sort();
const uniqueLabels = testPie.rows.reduce(
(unique, series) =>
!unique.includes(series.color) ? unique.concat([series.color]) : unique,
[]
);
expect(result).to.have.length(uniqueLabels.length);
expect(result.every((series, i) => series.label === uniqueLabels[i])).to.be(true);
});
it('populates the data of the plot with points from the pointseries', () => {
expect(result[0].data).to.eql([536]);
expect(result[1].data).to.eql([202]);
expect(result[2].data).to.eql([67]);
expect(result[3].data).to.eql([311]);
expect(result[0].data).to.eql([202]);
expect(result[1].data).to.eql([67]);
expect(result[2].data).to.eql([311]);
expect(result[3].data).to.eql([536]);
expect(result[4].data).to.eql([288]);
});
});

View file

@ -5,7 +5,7 @@
*/
import keyBy from 'lodash.keyby';
import { get, map, groupBy, sortBy } from 'lodash';
import { get, map, groupBy } from 'lodash';
import { getColorsFromPalette } from '../../../common/lib/get_colors_from_palette';
import { getLegendConfig } from '../../../common/lib/get_legend_config';
@ -67,10 +67,9 @@ export const pie = () => ({
},
},
fn: (context, args) => {
const rows = sortBy(context.rows, ['color', 'size']);
const seriesStyles = keyBy(args.seriesStyle || [], 'label') || {};
const data = map(groupBy(rows, 'color'), (series, label) => {
const data = map(groupBy(context.rows, 'color'), (series, label) => {
const item = {
label: label,
data: series.map(point => point.size || 1),
@ -91,7 +90,7 @@ export const pie = () => ({
as: 'pie',
value: {
font: args.font,
data: sortBy(data, 'label'),
data,
options: {
canvas: false,
colors: getColorsFromPalette(args.palette, data.length),