856 lines
29 KiB
TypeScript
Generated
856 lines
29 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, getECModel } from '../../core/utHelper';
|
|
import { ComponentMainType, ParsedValue } from '@/src/util/types';
|
|
import SeriesModel from '@/src/model/Series';
|
|
import ComponentModel from '@/src/model/Component';
|
|
import ChartView from '@/src/view/Chart';
|
|
import { EChartsOption } from '@/src/export/option';
|
|
|
|
type OriginModelView = {
|
|
model: SeriesModel;
|
|
view: ChartView;
|
|
};
|
|
|
|
|
|
describe('modelAndOptionMapping', function () {
|
|
|
|
function getData0(chart: EChartsType, seriesIndex: number): ParsedValue {
|
|
return getSeries(chart, seriesIndex).getData().get('y', 0);
|
|
}
|
|
|
|
function getSeries(chart: EChartsType, seriesIndex: number): SeriesModel {
|
|
return getECModel(chart).getComponent('series', seriesIndex) as SeriesModel;
|
|
}
|
|
|
|
function getModel(chart: EChartsType, type: ComponentMainType, index: number): ComponentModel {
|
|
return getECModel(chart).getComponent(type, index);
|
|
}
|
|
|
|
function countSeries(chart: EChartsType): number {
|
|
return countModel(chart, 'series');
|
|
}
|
|
|
|
function countModel(chart: EChartsType, type: ComponentMainType): number {
|
|
// FIXME
|
|
// access private
|
|
// @ts-ignore
|
|
return getECModel(chart)._componentsMap.get(type).length;
|
|
}
|
|
|
|
function getChartView(chart: EChartsType, series: SeriesModel): ChartView {
|
|
// @ts-ignore
|
|
return chart._chartsMap[series.__viewId];
|
|
}
|
|
|
|
function countChartViews(chart: EChartsType): number {
|
|
// @ts-ignore
|
|
return chart._chartsViews.length;
|
|
}
|
|
|
|
function saveOrigins(chart: EChartsType): OriginModelView[] {
|
|
const count = countSeries(chart);
|
|
const origins = [];
|
|
for (let i = 0; i < count; i++) {
|
|
const series = getSeries(chart, i);
|
|
origins.push({
|
|
model: series,
|
|
view: getChartView(chart, series)
|
|
});
|
|
}
|
|
return origins;
|
|
}
|
|
|
|
function modelEqualsToOrigin(
|
|
chart: EChartsType,
|
|
idxList: number[],
|
|
origins: OriginModelView[],
|
|
boolResult: boolean
|
|
): void {
|
|
for (let i = 0; i < idxList.length; i++) {
|
|
const idx = idxList[i];
|
|
expect(origins[idx].model === getSeries(chart, idx)).toEqual(boolResult);
|
|
}
|
|
}
|
|
|
|
function viewEqualsToOrigin(
|
|
chart: EChartsType,
|
|
idxList: number[],
|
|
origins: OriginModelView[],
|
|
boolResult: boolean
|
|
): void {
|
|
for (let i = 0; i < idxList.length; i++) {
|
|
const idx = idxList[i];
|
|
expect(
|
|
origins[idx].view === getChartView(chart, getSeries(chart, idx))
|
|
).toEqual(boolResult);
|
|
}
|
|
}
|
|
|
|
|
|
let chart: EChartsType;
|
|
beforeEach(function () {
|
|
chart = createChart();
|
|
});
|
|
|
|
afterEach(function () {
|
|
chart.dispose();
|
|
});
|
|
|
|
describe('idNoNameNo', function () {
|
|
|
|
it('sameTypeNotMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]},
|
|
{type: 'line', data: [33]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
// Not merge
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption(option, true);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(countSeries(chart)).toEqual(3);
|
|
modelEqualsToOrigin(chart, [0, 1, 2], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 1, 2], origins, true);
|
|
});
|
|
|
|
it('sameTypeMergeFull', function () {
|
|
chart.setOption({
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]},
|
|
{type: 'line', data: [33]}
|
|
]
|
|
});
|
|
|
|
// Merge
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption({
|
|
series: [
|
|
{type: 'line', data: [111]},
|
|
{type: 'line', data: [222]},
|
|
{type: 'line', data: [333]}
|
|
]
|
|
});
|
|
|
|
expect(countSeries(chart)).toEqual(3);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(getData0(chart, 0)).toEqual(111);
|
|
expect(getData0(chart, 1)).toEqual(222);
|
|
expect(getData0(chart, 2)).toEqual(333);
|
|
viewEqualsToOrigin(chart, [0, 1, 2], origins, true);
|
|
modelEqualsToOrigin(chart, [0, 1, 2], origins, true);
|
|
});
|
|
|
|
it('sameTypeMergePartial', function () {
|
|
chart.setOption({
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]},
|
|
{type: 'line', data: [33]}
|
|
]
|
|
});
|
|
|
|
// Merge
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption({
|
|
series: [
|
|
{data: [22222]}
|
|
]
|
|
});
|
|
|
|
expect(countSeries(chart)).toEqual(3);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(getData0(chart, 0)).toEqual(22222);
|
|
expect(getData0(chart, 1)).toEqual(22);
|
|
expect(getData0(chart, 2)).toEqual(33);
|
|
viewEqualsToOrigin(chart, [0, 1, 2], origins, true);
|
|
modelEqualsToOrigin(chart, [0, 1, 2], origins, true);
|
|
});
|
|
|
|
it('differentTypeMerge', function () {
|
|
chart.setOption({
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]},
|
|
{type: 'line', data: [33]}
|
|
]
|
|
});
|
|
|
|
// Merge
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption({
|
|
series: [
|
|
{type: 'line', data: [111]},
|
|
{type: 'bar', data: [222]},
|
|
{type: 'line', data: [333]}
|
|
]
|
|
});
|
|
|
|
expect(countSeries(chart)).toEqual(3);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(getData0(chart, 0)).toEqual(111);
|
|
expect(getData0(chart, 1)).toEqual(222);
|
|
expect(getData0(chart, 2)).toEqual(333);
|
|
expect(getSeries(chart, 1).type === 'series.bar').toEqual(true);
|
|
modelEqualsToOrigin(chart, [0, 2], origins, true);
|
|
modelEqualsToOrigin(chart, [1], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 2], origins, true);
|
|
viewEqualsToOrigin(chart, [1], origins, false);
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
describe('idSpecified', function () {
|
|
|
|
it('sameTypeNotMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20},
|
|
{type: 'line', data: [33], id: 30},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
expect(countSeries(chart)).toEqual(5);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(getData0(chart, 0)).toEqual(11);
|
|
expect(getData0(chart, 1)).toEqual(22);
|
|
expect(getData0(chart, 2)).toEqual(33);
|
|
expect(getData0(chart, 3)).toEqual(44);
|
|
expect(getData0(chart, 4)).toEqual(55);
|
|
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption(option, true);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
});
|
|
|
|
it('sameTypeMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20},
|
|
{type: 'line', data: [33], id: 30},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption(option);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
});
|
|
|
|
it('differentTypeNotMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20},
|
|
{type: 'line', data: [33], id: 30},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
const option2: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'bar', data: [22], id: 20},
|
|
{type: 'line', data: [33], id: 30},
|
|
{type: 'bar', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option2, true);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 2, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [1, 3], origins, false);
|
|
});
|
|
|
|
it('differentTypeMergeFull', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20},
|
|
{type: 'line', data: [33], id: 30, name: 'a'},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'bar', data: [22], id: 20, name: 'a'},
|
|
{type: 'line', data: [33], id: 30},
|
|
{type: 'bar', data: [44]},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 2, 4], origins, true);
|
|
modelEqualsToOrigin(chart, [1, 3], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 2, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [1, 3], origins, false);
|
|
});
|
|
|
|
it('differentTypeMergePartial1', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20},
|
|
{type: 'line', data: [33]},
|
|
{type: 'line', data: [44], id: 40},
|
|
{type: 'line', data: [55]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], id: 40},
|
|
{type: 'line', data: [333]},
|
|
{type: 'line', data: [222], id: 20}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
expect(getData0(chart, 0)).toEqual(333);
|
|
expect(getData0(chart, 1)).toEqual(222);
|
|
expect(getData0(chart, 2)).toEqual(33);
|
|
expect(getData0(chart, 3)).toEqual(444);
|
|
expect(getData0(chart, 4)).toEqual(55);
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 4], origins, true);
|
|
modelEqualsToOrigin(chart, [3], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 1, 2, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [3], origins, false);
|
|
});
|
|
|
|
it('differentTypeMergePartial2', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], id: 20}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], id: 40},
|
|
{type: 'line', data: [333]},
|
|
{type: 'line', data: [222], id: 20},
|
|
{type: 'line', data: [111]}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(4);
|
|
expect(countSeries(chart)).toEqual(4);
|
|
|
|
expect(getData0(chart, 0)).toEqual(333);
|
|
expect(getData0(chart, 1)).toEqual(222);
|
|
expect(getData0(chart, 2)).toEqual(444);
|
|
expect(getData0(chart, 3)).toEqual(111);
|
|
});
|
|
|
|
|
|
it('mergePartialDoNotMapToOtherId', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11], id: 10},
|
|
{type: 'line', data: [22], id: 20}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], id: 40}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(countSeries(chart)).toEqual(3);
|
|
|
|
expect(getData0(chart, 0)).toEqual(11);
|
|
expect(getData0(chart, 1)).toEqual(22);
|
|
expect(getData0(chart, 2)).toEqual(444);
|
|
});
|
|
|
|
|
|
it('idDuplicate', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11], id: 10},
|
|
{type: 'line', data: [22], id: 10}
|
|
]
|
|
};
|
|
|
|
|
|
expect(function () {
|
|
chart.setOption(option);
|
|
}).toThrowError(/duplicate/);
|
|
});
|
|
|
|
|
|
it('nameTheSameButIdNotTheSame', function () {
|
|
|
|
const option = {
|
|
grid: {},
|
|
xAxis: [
|
|
{id: 'x1', name: 'a', xxxx: 'x1_a'},
|
|
{id: 'x2', name: 'b', xxxx: 'x2_b'}
|
|
],
|
|
yAxis: {}
|
|
};
|
|
|
|
chart.setOption(option);
|
|
|
|
let xAxisModel0;
|
|
let xAxisModel1;
|
|
|
|
xAxisModel0 = getModel(chart, 'xAxis', 0);
|
|
xAxisModel1 = getModel(chart, 'xAxis', 1);
|
|
expect((xAxisModel0.option as any).xxxx).toEqual('x1_a');
|
|
expect((xAxisModel1.option as any).xxxx).toEqual('x2_b');
|
|
expect(xAxisModel1.option.name).toEqual('b');
|
|
|
|
const option2 = {
|
|
xAxis: [
|
|
{id: 'k1', name: 'a', xxxx: 'k1_a'},
|
|
{id: 'x2', name: 'a', xxxx: 'x2_a'}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
|
|
xAxisModel0 = getModel(chart, 'xAxis', 0);
|
|
xAxisModel1 = getModel(chart, 'xAxis', 1);
|
|
const xAxisModel2 = getModel(chart, 'xAxis', 2);
|
|
expect((xAxisModel0.option as any).xxxx).toEqual('x1_a');
|
|
expect((xAxisModel1.option as any).xxxx).toEqual('x2_a');
|
|
expect(xAxisModel1.option.name).toEqual('a');
|
|
expect((xAxisModel2.option as any).xxxx).toEqual('k1_a');
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe('noIdButNameExists', function () {
|
|
|
|
it('sameTypeNotMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], name: 'a'},
|
|
{type: 'line', data: [33], name: 'b'},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
expect(getSeries(chart, 1)).not.toEqual(getSeries(chart, 4));
|
|
|
|
|
|
expect(countSeries(chart)).toEqual(5);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(getData0(chart, 0)).toEqual(11);
|
|
expect(getData0(chart, 1)).toEqual(22);
|
|
expect(getData0(chart, 2)).toEqual(33);
|
|
expect(getData0(chart, 3)).toEqual(44);
|
|
expect(getData0(chart, 4)).toEqual(55);
|
|
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption(option, true);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
});
|
|
|
|
it('sameTypeMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], name: 'a'},
|
|
{type: 'line', data: [33], name: 'b'},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
chart.setOption(option);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, true);
|
|
});
|
|
|
|
it('differentTypeNotMerge', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], name: 'a'},
|
|
{type: 'line', data: [33], name: 'b'},
|
|
{type: 'line', data: [44]},
|
|
{type: 'line', data: [55], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
const option2: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'bar', data: [22], name: 'a'},
|
|
{type: 'line', data: [33], name: 'b'},
|
|
{type: 'bar', data: [44]},
|
|
{type: 'line', data: [55], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option2, true);
|
|
expect(countChartViews(chart)).toEqual(5);
|
|
expect(countSeries(chart)).toEqual(5);
|
|
|
|
modelEqualsToOrigin(chart, [0, 1, 2, 3, 4], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 2, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [1, 3], origins, false);
|
|
});
|
|
|
|
it('differentTypeMergePartialOneMapTwo', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], name: 'a'},
|
|
{type: 'line', data: [33]},
|
|
{type: 'line', data: [44], name: 'b'},
|
|
{type: 'line', data: [55], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const origins = saveOrigins(chart);
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], id: 40},
|
|
{type: 'line', data: [333]},
|
|
{type: 'bar', data: [222], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(6);
|
|
expect(countSeries(chart)).toEqual(6);
|
|
|
|
expect(getData0(chart, 0)).toEqual(333);
|
|
expect(getData0(chart, 1)).toEqual(222);
|
|
expect(getData0(chart, 2)).toEqual(33);
|
|
expect(getData0(chart, 3)).toEqual(44);
|
|
expect(getData0(chart, 4)).toEqual(55);
|
|
expect(getData0(chart, 5)).toEqual(444);
|
|
modelEqualsToOrigin(chart, [0, 2, 3, 4], origins, true);
|
|
modelEqualsToOrigin(chart, [1], origins, false);
|
|
viewEqualsToOrigin(chart, [0, 2, 3, 4], origins, true);
|
|
viewEqualsToOrigin(chart, [1], origins, false);
|
|
});
|
|
|
|
it('differentTypeMergePartialTwoMapOne', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22], name: 'a'}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], name: 'a'},
|
|
{type: 'line', data: [333]},
|
|
{type: 'line', data: [222], name: 'a'},
|
|
{type: 'line', data: [111]}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(4);
|
|
expect(countSeries(chart)).toEqual(4);
|
|
|
|
expect(getData0(chart, 0)).toEqual(333);
|
|
expect(getData0(chart, 1)).toEqual(444);
|
|
expect(getData0(chart, 2)).toEqual(222);
|
|
expect(getData0(chart, 3)).toEqual(111);
|
|
});
|
|
|
|
it('mergePartialCanMapToOtherName', function () {
|
|
// Consider case: axis.name = 'some label', which can be overwritten.
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11], name: 10},
|
|
{type: 'line', data: [22], name: 20}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
const option2: EChartsOption = {
|
|
series: [
|
|
{type: 'bar', data: [444], name: 40},
|
|
{type: 'bar', data: [999], name: 40},
|
|
{type: 'bar', data: [777], id: 70}
|
|
]
|
|
};
|
|
chart.setOption(option2);
|
|
expect(countChartViews(chart)).toEqual(3);
|
|
expect(countSeries(chart)).toEqual(3);
|
|
|
|
expect(getData0(chart, 0)).toEqual(444);
|
|
expect(getData0(chart, 1)).toEqual(999);
|
|
expect(getData0(chart, 2)).toEqual(777);
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe('ohters', function () {
|
|
|
|
it('aBugCase', function () {
|
|
const option: EChartsOption = {
|
|
series: [
|
|
{
|
|
type: 'pie',
|
|
radius: ['20%', '25%'],
|
|
center: ['20%', '20%'],
|
|
avoidLabelOverlap: true,
|
|
label: {
|
|
show: true,
|
|
position: 'center',
|
|
fontSize: '30',
|
|
fontWeight: 'bold'
|
|
},
|
|
emphasis: {
|
|
scale: false,
|
|
label: {
|
|
show: true
|
|
}
|
|
},
|
|
data: [
|
|
{value: 135, name: '视频广告'},
|
|
{value: 1548}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
chart.setOption({
|
|
series: [
|
|
{
|
|
type: 'pie',
|
|
radius: ['20%', '25%'],
|
|
center: ['20%', '20%'],
|
|
avoidLabelOverlap: true,
|
|
label: {
|
|
show: true,
|
|
position: 'center',
|
|
fontSize: '30',
|
|
fontWeight: 'bold'
|
|
},
|
|
data: [
|
|
{value: 135, name: '视频广告'},
|
|
{value: 1548}
|
|
]
|
|
},
|
|
{
|
|
type: 'pie',
|
|
radius: ['20%', '25%'],
|
|
center: ['60%', '20%'],
|
|
avoidLabelOverlap: true,
|
|
label: {
|
|
show: true,
|
|
position: 'center',
|
|
fontSize: '30',
|
|
fontWeight: 'bold'
|
|
},
|
|
data: [
|
|
{value: 135, name: '视频广告'},
|
|
{value: 1548}
|
|
]
|
|
}
|
|
]
|
|
}, true);
|
|
|
|
expect(countChartViews(chart)).toEqual(2);
|
|
expect(countSeries(chart)).toEqual(2);
|
|
});
|
|
|
|
it('color', function () {
|
|
const option: EChartsOption = {
|
|
backgroundColor: 'rgba(1,1,1,1)',
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]},
|
|
{type: 'line', data: [33]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
expect(getECModel(chart).option.backgroundColor).toEqual('rgba(1,1,1,1)');
|
|
|
|
// Not merge
|
|
chart.setOption({
|
|
backgroundColor: '#fff'
|
|
}, true);
|
|
|
|
expect(getECModel(chart).option.backgroundColor).toEqual('#fff');
|
|
});
|
|
|
|
it('innerId', function () {
|
|
const option: EChartsOption = {
|
|
xAxis: {data: ['a']},
|
|
yAxis: {},
|
|
toolbox: {
|
|
feature: {
|
|
dataZoom: {}
|
|
}
|
|
},
|
|
dataZoom: [
|
|
{type: 'inside', id: 'a'},
|
|
{type: 'slider', id: 'b'}
|
|
],
|
|
series: [
|
|
{type: 'line', data: [11]},
|
|
{type: 'line', data: [22]}
|
|
]
|
|
};
|
|
chart.setOption(option);
|
|
|
|
expect(countModel(chart, 'dataZoom')).toEqual(4);
|
|
expect(getModel(chart, 'dataZoom', 0).id).toEqual('a');
|
|
expect(getModel(chart, 'dataZoom', 1).id).toEqual('b');
|
|
|
|
// Merge
|
|
chart.setOption({
|
|
dataZoom: [
|
|
{type: 'slider', id: 'c'},
|
|
{type: 'slider', name: 'x'}
|
|
]
|
|
});
|
|
|
|
expect(countModel(chart, 'dataZoom')).toEqual(5);
|
|
expect(getModel(chart, 'dataZoom', 0).id).toEqual('a');
|
|
expect(getModel(chart, 'dataZoom', 1).id).toEqual('b');
|
|
expect(getModel(chart, 'dataZoom', 4).id).toEqual('c');
|
|
});
|
|
|
|
});
|
|
|
|
|
|
});
|