describe('vsiaulMap_setOption', function() {
var utHelper = window.utHelper;
var testCase = utHelper.prepare([
'echarts/component/grid',
'echarts/chart/scatter',
'echarts/component/visualMap'
]);
testCase.createChart()('defaultTargetController', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
inRange: {
color: ['red', 'blue', 'yellow']
}
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].inRange.color).toEqual(['red', 'blue', 'yellow']);
expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
});
testCase.createChart()('ec2ColorCompatiable', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
color: ['yellow', 'blue', 'red']
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].color).toEqual(['yellow', 'blue', 'red']);
expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
});
testCase.createChart()('remainVisualProp', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
inRange: {
color: ['red', 'blue', 'yellow']
}
}
});
this.chart.setOption({
visualMap: {}
});
expectTheSame(this.chart.getOption());
this.chart.setOption({
series: [{data: [[44, 55]]}] // visualMap depends series
});
expectTheSame(this.chart.getOption());
function expectTheSame(option) {
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].inRange.color).toEqual(['red', 'blue', 'yellow']);
expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
}
});
testCase.createChart()('eraseAllVisualProps_notRelative', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
inRange: {
color: ['red', 'blue', 'yellow'],
symbolSize: [0.3, 0.5]
}
}
});
var option = this.chart.getOption();
this.chart.setOption({
visualMap: {
inRange: {
symbolSize: [0.4, 0.6]
}
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].target.inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].controller.inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].inRange.symbolSize).toEqual([0.4, 0.6]);
expect(option.visualMap[0].target.inRange.symbolSize).toEqual([0.4, 0.6]);
// Do not compare controller.inRange.symbolSize, which will be amplified to controller size.
// expect(option.visualMap[0].controller.inRange.symbolSize).toEqual([?, ?]);
});
testCase.createChart()('eraseAllVisualProps_reletive', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
inRange: {
color: ['red', 'blue', 'yellow'],
colorAlpha: [0.3, 0.5]
}
}
});
this.chart.setOption({
visualMap: {
inRange: {
colorAlpha: [0.4, 0.6]
}
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].target.inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].controller.inRange.hasOwnProperty('color')).toEqual(false);
expect(option.visualMap[0].inRange.colorAlpha).toEqual([0.4, 0.6]);
expect(option.visualMap[0].target.inRange.colorAlpha).toEqual([0.4, 0.6]);
expect(option.visualMap[0].controller.inRange.colorAlpha).toEqual([0.4, 0.6]);
this.chart.setOption({
visualMap: {
color: ['red', 'blue', 'green']
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(option.visualMap[0].target.inRange.hasOwnProperty('colorAlpha')).toEqual(false);
expect(option.visualMap[0].controller.inRange.hasOwnProperty('colorAlpha')).toEqual(false);
expect(option.visualMap[0].target.inRange.color).toEqual(['green', 'blue', 'red']);
expect(option.visualMap[0].controller.inRange.color).toEqual(['green', 'blue', 'red']);
this.chart.setOption({
visualMap: {
controller: {
outOfRange: {
symbol: ['diamond']
}
}
}
});
var option = this.chart.getOption();
expect(option.visualMap.length).toEqual(1);
expect(!option.visualMap[0].target.inRange).toEqual(true);
expect(option.visualMap[0].controller.outOfRange.symbol).toEqual(['diamond']);
});
testCase.createChart()('setOpacityWhenUseColor', function () {
this.chart.setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: {
inRange: {
color: ['red', 'blue', 'yellow']
}
}
});
var option = this.chart.getOption();
expect(!!option.visualMap[0].target.outOfRange.opacity).toEqual(true);
});
testCase.createChart(2)('normalizeVisualRange', function () {
this.charts[0].setOption({
xAxis: {},
yAxis: {},
series: [{type: 'scatter', data: [[12, 223]]}],
visualMap: [
{type: 'continuous', inRange: {color: 'red'}},
{type: 'continuous', inRange: {opacity: 0.4}},
{type: 'piecewise', inRange: {color: 'red'}},
{type: 'piecewise', inRange: {opacity: 0.4}},
{type: 'piecewise', inRange: {symbol: 'diamond'}},
{type: 'piecewise', inRange: {color: 'red'}, categories: ['a', 'b']},
{type: 'piecewise', inRange: {color: {a: 'red'}}, categories: ['a', 'b']},
{type: 'piecewise', inRange: {opacity: 0.4}, categories: ['a', 'b']}
]
});
var ecModel = this.charts[0].getModel();
function getVisual(idx, visualType) {
return ecModel.getComponent('visualMap', idx)
.targetVisuals.inRange[visualType].option.visual;
}
function makeCategoryVisual(val) {
var CATEGORY_DEFAULT_VISUAL_INDEX = -1;
var arr = [];
if (val != null) {
arr[CATEGORY_DEFAULT_VISUAL_INDEX] = val;
}
for (var i = 1; i < arguments.length; i++) {
arr.push(arguments[i]);
}
return arr;
}
expect(getVisual(0, 'color')).toEqual(['red']);
expect(getVisual(1, 'opacity')).toEqual([0.4, 0.4]);
expect(getVisual(2, 'color')).toEqual(['red']);
expect(getVisual(3, 'opacity')).toEqual([0.4, 0.4]);
expect(getVisual(4, 'symbol')).toEqual(['diamond']);
expect(getVisual(5, 'color')).toEqual(makeCategoryVisual('red'));
expect(getVisual(6, 'color')).toEqual(makeCategoryVisual(null, 'red'));
expect(getVisual(7, 'opacity')).toEqual(makeCategoryVisual(0.4));
});
});
|