| |
| /* |
| * 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); |
| }); |
| |
| |
| }); |