186 lines
6.4 KiB
TypeScript
Generated
186 lines
6.4 KiB
TypeScript
Generated
/*
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import { EChartsType } from '@/src/echarts';
|
|
import { createChart, removeChart, getECModel } from '../../core/utHelper';
|
|
import { EChartsOption } from '@/src/export/option';
|
|
import { retrieveRawValue } from '@/src/data/helper/dataProvider';
|
|
|
|
|
|
describe('dataTransform', function () {
|
|
|
|
let chart: EChartsType;
|
|
|
|
beforeEach(function () {
|
|
chart = createChart({
|
|
width: 200,
|
|
height: 150
|
|
});
|
|
});
|
|
|
|
afterEach(function () {
|
|
removeChart(chart);
|
|
});
|
|
|
|
function makeDatasetSourceDetection() {
|
|
return [
|
|
['product', '2012', '2013', '2014', '2015'],
|
|
['AAA', 41.1, 30.4, 65.1, 53.3],
|
|
['BBB', 86.5, 92.1, 85.7, 83.1],
|
|
['CCC', 24.1, 67.2, 79.5, 86.4]
|
|
];
|
|
}
|
|
|
|
function makeDatasetSourceNonDetectionByRow() {
|
|
return {
|
|
dimensions: ['2012', '2013', '2014', '2015'],
|
|
source: [
|
|
[41.1, 30.4, 65.1, 53.3],
|
|
[86.5, 92.1, 85.7, 83.1],
|
|
[24.1, 67.2, 79.5, 86.4]
|
|
]
|
|
};
|
|
}
|
|
|
|
it('forbid_seriesLayoutBy_row', function () {
|
|
const option: EChartsOption = {
|
|
dataset: [{
|
|
source: makeDatasetSourceDetection(),
|
|
// This config should cause error thrown.
|
|
seriesLayoutBy: 'row'
|
|
}, {
|
|
transform: { type: 'filter', config: { dimension: 0, ne: '' } }
|
|
}],
|
|
xAxis: { type: 'category' },
|
|
yAxis: {},
|
|
series: { type: 'bar', datasetIndex: 1 }
|
|
};
|
|
|
|
expect(() => {
|
|
chart.setOption(option);
|
|
}).toThrowError(/column/);
|
|
});
|
|
|
|
it('seriesLayoutBy_changed_no_transform', function () {
|
|
const option: EChartsOption = {
|
|
dataset: {
|
|
source: makeDatasetSourceDetection()
|
|
},
|
|
xAxis: { type: 'category' },
|
|
yAxis: {},
|
|
series: { type: 'bar', seriesLayoutBy: 'row' }
|
|
};
|
|
|
|
chart.setOption(option);
|
|
const listData = getECModel(chart).getSeries()[0].getData();
|
|
expect(listData.getDimension(1)).toEqual('AAA');
|
|
expect(listData.getDimension(2)).toEqual('BBB');
|
|
expect(listData.getDimension(3)).toEqual('CCC');
|
|
});
|
|
|
|
[{
|
|
transform:
|
|
{ type: 'filter', config: { dimension: 'product', '!=': 'XXX' } }
|
|
}, {
|
|
transform: [
|
|
{ type: 'filter', config: { dimension: 'product', '!=': 'XXX' } },
|
|
{ type: 'filter', config: { dimension: 'product', '!=': 'XXX' } }
|
|
]
|
|
}].forEach((dataset1, itIdx) => {
|
|
it(`seriesLayoutBy_changed_transform_detection_${itIdx}`, function () {
|
|
const option: EChartsOption = {
|
|
dataset: [{
|
|
source: makeDatasetSourceDetection()
|
|
}, dataset1],
|
|
xAxis: { type: 'category' },
|
|
yAxis: {},
|
|
series: { type: 'bar', datasetIndex: 1, seriesLayoutBy: 'row' }
|
|
};
|
|
|
|
chart.setOption(option);
|
|
const listData = getECModel(chart).getSeries()[0].getData();
|
|
expect(listData.getDimension(1)).toEqual('AAA');
|
|
expect(listData.getDimension(2)).toEqual('BBB');
|
|
expect(listData.getDimension(3)).toEqual('CCC');
|
|
expect(listData.get('product', 0)).toEqual(0);
|
|
expect(retrieveRawValue(listData, 0, 'product')).toEqual('2012');
|
|
expect(listData.get('product', 1)).toEqual(1);
|
|
expect(retrieveRawValue(listData, 1, 'product')).toEqual('2013');
|
|
});
|
|
});
|
|
|
|
[{
|
|
transform:
|
|
{ type: 'filter', config: { dimension: 0, '!=': 'XXX' } }
|
|
}, {
|
|
transform: [
|
|
{ type: 'filter', config: { dimension: 0, '!=': 'XXX' } },
|
|
{ type: 'filter', config: { dimension: 0, '!=': 'XXX' } }
|
|
]
|
|
}].forEach((dataset1, itIdx) => {
|
|
it(`seriesLayoutBy_changed_transform_non_detection_${itIdx}`, function () {
|
|
const sourceWrap = makeDatasetSourceNonDetectionByRow();
|
|
const option: EChartsOption = {
|
|
dataset: [{
|
|
dimensions: sourceWrap.dimensions,
|
|
source: sourceWrap.source
|
|
}, dataset1],
|
|
xAxis: {},
|
|
yAxis: {},
|
|
series: { type: 'bar', datasetIndex: 1, seriesLayoutBy: 'row' }
|
|
};
|
|
|
|
chart.setOption(option);
|
|
const listData = getECModel(chart).getSeries()[0].getData();
|
|
expect(listData.get(listData.getDimension(0), 0)).toEqual(41.1);
|
|
expect(listData.get(listData.getDimension(0), 1)).toEqual(30.4);
|
|
});
|
|
});
|
|
|
|
[{
|
|
transform:
|
|
{ type: 'filter', config: { dimension: '2012', '!=': 'XXX' } }
|
|
}, {
|
|
transform: [
|
|
{ type: 'filter', config: { dimension: '2012', '!=': 'XXX' } },
|
|
{ type: 'filter', config: { dimension: '2012', '!=': 'XXX' } }
|
|
]
|
|
}].forEach((dataset1, itIdx) => {
|
|
it(`inherit_detected_dimensions_${itIdx}`, function () {
|
|
const option: EChartsOption = {
|
|
dataset: [{
|
|
source: makeDatasetSourceDetection()
|
|
}, dataset1],
|
|
xAxis: { type: 'category' },
|
|
yAxis: {},
|
|
series: { type: 'bar', datasetIndex: 1 }
|
|
};
|
|
|
|
chart.setOption(option);
|
|
const listData = getECModel(chart).getSeries()[0].getData();
|
|
expect(listData.getDimension(0)).toEqual('product');
|
|
expect(listData.getDimension(1)).toEqual('2012');
|
|
expect(listData.getDimension(2)).toEqual('2013');
|
|
});
|
|
});
|
|
|
|
|
|
});
|
|
|