425 lines
13 KiB
TypeScript
Generated
425 lines
13 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 { createChart, removeChart } from '../../core/utHelper';
|
|
import { EChartsType, registerMap } from '../../../../src/echarts';
|
|
import { GeoJSON } from '../../../../src/coord/geo/geoTypes';
|
|
|
|
|
|
describe('api/containPixel', function () {
|
|
const testGeoJson1: GeoJSON = {
|
|
'type': 'FeatureCollection',
|
|
'features': [
|
|
{
|
|
'type': 'Feature',
|
|
'geometry': {
|
|
'type': 'Polygon',
|
|
'coordinates': [
|
|
[
|
|
[
|
|
2000,
|
|
3000
|
|
],
|
|
[
|
|
5000,
|
|
3000
|
|
],
|
|
[
|
|
5000,
|
|
8000
|
|
],
|
|
[
|
|
2000,
|
|
8000
|
|
]
|
|
]
|
|
]
|
|
},
|
|
'properties': {
|
|
'name': 'Afghanistan',
|
|
'childNum': 1
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
const testGeoJson2: GeoJSON = {
|
|
'type': 'FeatureCollection',
|
|
'features': [
|
|
{
|
|
'type': 'Feature',
|
|
'geometry': {
|
|
'type': 'Polygon',
|
|
'coordinates': [
|
|
[
|
|
[
|
|
200,
|
|
300
|
|
],
|
|
[
|
|
500,
|
|
300
|
|
],
|
|
[
|
|
500,
|
|
800
|
|
],
|
|
[
|
|
200,
|
|
800
|
|
]
|
|
]
|
|
]
|
|
},
|
|
'properties': {
|
|
'name': 'Afghanistan',
|
|
'childNum': 1
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
let chart: EChartsType;
|
|
|
|
beforeEach(function () {
|
|
chart = createChart({
|
|
width: 200,
|
|
height: 150
|
|
});
|
|
});
|
|
|
|
afterEach(function () {
|
|
removeChart(chart);
|
|
});
|
|
|
|
|
|
it('geo', function () {
|
|
registerMap('test1', testGeoJson1);
|
|
registerMap('test2', testGeoJson2);
|
|
|
|
chart.setOption({
|
|
geo: [
|
|
{
|
|
id: 'aa',
|
|
left: 10,
|
|
right: '50%',
|
|
top: 30,
|
|
bottom: 40,
|
|
map: 'test1'
|
|
},
|
|
{
|
|
id: 'bb',
|
|
layoutCenter: ['50%', 50],
|
|
layoutSize: 20,
|
|
aspectScale: 1,
|
|
map: 'test2'
|
|
},
|
|
{
|
|
id: 'cc',
|
|
aspectScale: 1,
|
|
left: 0,
|
|
width: '50%',
|
|
top: 0,
|
|
height: '50%',
|
|
zoom: 0.5, // test roam
|
|
map: 'test1'
|
|
}
|
|
],
|
|
series: [
|
|
{id: 'k1', type: 'scatter', coordinateSystem: 'geo', geoIndex: 1},
|
|
{id: 'k2', type: 'scatter', coordinateSystem: 'geo'}
|
|
]
|
|
});
|
|
|
|
const width = chart.getWidth();
|
|
// const height = chart.getWidth();
|
|
|
|
expect(chart.containPixel('geo', [15, 30])).toEqual(true);
|
|
expect(chart.containPixel('geo', [9.5, 30])).toEqual(false);
|
|
expect(chart.containPixel({geoIndex: 1}, [width / 2, 50])).toEqual(true);
|
|
expect(chart.containPixel({geoIndex: 1}, [10, 20])).toEqual(false);
|
|
expect(chart.containPixel({geoId: 'cc'}, [0, 0])).toEqual(false);
|
|
});
|
|
|
|
|
|
it('map', function () {
|
|
registerMap('test1', testGeoJson1);
|
|
registerMap('test2', testGeoJson2);
|
|
|
|
chart.setOption({
|
|
series: [
|
|
{
|
|
id: 'k1',
|
|
type: 'map',
|
|
map: 'test1',
|
|
left: 10,
|
|
right: '50%',
|
|
top: 30,
|
|
bottom: 40
|
|
},
|
|
{
|
|
id: 'k2',
|
|
type: 'map',
|
|
map: 'test2',
|
|
layoutCenter: ['50%', 50],
|
|
layoutSize: 20,
|
|
aspectScale: 1
|
|
}
|
|
]
|
|
});
|
|
|
|
const width = chart.getWidth();
|
|
|
|
expect(chart.containPixel('series', [15, 30])).toEqual(true);
|
|
expect(chart.containPixel('series', [9.5, 30])).toEqual(false);
|
|
expect(chart.containPixel({seriesId: 'k2'}, [width / 2, 50])).toEqual(true);
|
|
expect(chart.containPixel({seriesId: 1}, [10, 20])).toEqual(false);
|
|
});
|
|
|
|
|
|
it('cartesian', function () {
|
|
registerMap('test1', testGeoJson1);
|
|
|
|
chart.setOption({
|
|
geo: [ // Should not affect grid converter.
|
|
{
|
|
map: 'test1'
|
|
}
|
|
],
|
|
grid: [
|
|
{
|
|
id: 'g0',
|
|
left: 10,
|
|
right: '50%',
|
|
top: 30,
|
|
bottom: 40
|
|
},
|
|
{
|
|
id: 'g1',
|
|
left: '50%',
|
|
right: 20,
|
|
top: 30,
|
|
bottom: 40
|
|
}
|
|
],
|
|
xAxis: [
|
|
{
|
|
id: 'x0',
|
|
type: 'value',
|
|
min: -500,
|
|
max: 3000,
|
|
gridId: 'g0'
|
|
},
|
|
{
|
|
id: 'x1',
|
|
type: 'value',
|
|
min: -50,
|
|
max: 300,
|
|
gridId: 'g0'
|
|
},
|
|
{
|
|
id: 'x2',
|
|
type: 'value',
|
|
min: -50,
|
|
max: 300,
|
|
gridId: 'g1'
|
|
}
|
|
],
|
|
yAxis: [
|
|
{
|
|
id: 'y0',
|
|
type: 'value',
|
|
min: 6000,
|
|
max: 9000,
|
|
gridId: 'g0'
|
|
},
|
|
{
|
|
id: 'y1',
|
|
type: 'value',
|
|
inverse: true, // test inverse
|
|
min: 600,
|
|
max: 900,
|
|
gridId: 'g1'
|
|
}
|
|
],
|
|
series: [
|
|
{
|
|
id: 'k1',
|
|
type: 'scatter',
|
|
// left: 0,
|
|
// right: 0,
|
|
// top: 0,
|
|
// bottom: 0,
|
|
data: [[1000, 700]]
|
|
},
|
|
{
|
|
id: 'k2',
|
|
type: 'scatter',
|
|
// left: 0,
|
|
// right: 0,
|
|
// top: 0,
|
|
// bottom: 0,
|
|
data: [[100, 800]]
|
|
},
|
|
{
|
|
id: 'j1',
|
|
type: 'scatter',
|
|
// left: 0,
|
|
// right: 0,
|
|
// top: 0,
|
|
// bottom: 0,
|
|
data: [[100, 800]],
|
|
xAxisIndex: 1
|
|
},
|
|
{
|
|
id: 'i1',
|
|
type: 'scatter',
|
|
// left: 0,
|
|
// right: 0,
|
|
// top: 0,
|
|
// bottom: 0,
|
|
data: [],
|
|
xAxisId: 'x2',
|
|
yAxisId: 'y1'
|
|
}
|
|
]
|
|
});
|
|
|
|
const width = chart.getWidth();
|
|
|
|
expect(chart.containPixel('grid', [15, 30])).toEqual(true);
|
|
expect(chart.containPixel('grid', [9.5, 30])).toEqual(false);
|
|
expect(chart.containPixel({gridIndex: 1}, [width / 2, 50])).toEqual(true);
|
|
expect(chart.containPixel({gridIndex: 1}, [10, 20])).toEqual(false);
|
|
});
|
|
|
|
|
|
// it('pie', function () {
|
|
|
|
// chart.setOption({
|
|
// series: [
|
|
// {
|
|
// id: 'k1',
|
|
// type: 'pie',
|
|
// center: [40, '50%'],
|
|
// radius: [10, '50%'],
|
|
// data: [
|
|
// {x: 1000, y: 2000},
|
|
// {x: 1000, y: 5000},
|
|
// {x: 3000, y: 5000},
|
|
// {x: 3000, y: 2000}
|
|
// ],
|
|
// links: []
|
|
// }
|
|
// ]
|
|
// });
|
|
|
|
// const height = chart.getHeight();
|
|
|
|
// expect(chart.containPixel('series', [40, height / 2])).toEqual(false);
|
|
// expect(chart.containPixel('series', [40, height / 2 + 10])).toEqual(true);
|
|
// expect(chart.containPixel('series', [9.5, 1])).toEqual(false);
|
|
// });
|
|
|
|
|
|
// it('pieAndGeo', function () {
|
|
// registerMap('test1', testGeoJson1);
|
|
// registerMap('test2', testGeoJson2);
|
|
|
|
// chart.setOption({
|
|
// geo: [
|
|
// {
|
|
// id: 'aa',
|
|
// left: 10,
|
|
// top: 10,
|
|
// width: 10,
|
|
// height: 10,
|
|
// map: 'test1'
|
|
// },
|
|
// {
|
|
// id: 'bb',
|
|
// left: 100,
|
|
// top: 10,
|
|
// width: 10,
|
|
// height: 10,
|
|
// map: 'test2'
|
|
// }
|
|
// ],
|
|
// series: [
|
|
// {id: 'k1', type: 'scatter', coordinateSystem: 'geo', geoIndex: 1},
|
|
// {id: 'k2', type: 'scatter', coordinateSystem: 'geo'},
|
|
// {
|
|
// id: 'k3',
|
|
// type: 'pie',
|
|
// center: [40, 100],
|
|
// radius: [3, 10],
|
|
// data: [
|
|
// {x: 1000, y: 2000},
|
|
// {x: 1000, y: 5000}
|
|
// ],
|
|
// links: []
|
|
// }
|
|
// ]
|
|
// });
|
|
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [15, 15])).toEqual(true);
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [15, 25])).toEqual(false);
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [105, 15])).toEqual(true);
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [105, 25])).toEqual(false);
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [45, 100])).toEqual(true);
|
|
// expect(chart.containPixel({geoIndex: [0, 1], seriesId: 'k3'}, [55, 100])).toEqual(false);
|
|
// });
|
|
|
|
|
|
it('graph', function () {
|
|
registerMap('test1', testGeoJson1);
|
|
|
|
chart.setOption({
|
|
geo: [ // Should not affect graph converter.
|
|
{
|
|
map: 'test1'
|
|
}
|
|
],
|
|
series: [
|
|
{
|
|
id: 'k1',
|
|
type: 'graph',
|
|
left: 10,
|
|
right: '50%',
|
|
top: 30,
|
|
bottom: 40,
|
|
data: [
|
|
{x: 1000, y: 2000},
|
|
{x: 1000, y: 5000},
|
|
{x: 3000, y: 5000},
|
|
{x: 3000, y: 2000}
|
|
],
|
|
links: []
|
|
}
|
|
]
|
|
});
|
|
|
|
expect(chart.containPixel('series', [15, 35])).toEqual(true);
|
|
expect(chart.containPixel('series', [3, 4])).toEqual(false);
|
|
});
|
|
|
|
|
|
});
|