<!DOCTYPE html>
|
<!--
|
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.
|
-->
|
|
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<script src="lib/esl.js"></script>
|
<script src="lib/config.js"></script>
|
<script src="lib/jquery.min.js"></script>
|
<script src="lib/facePrint.js"></script>
|
<script src="lib/testHelper.js"></script>
|
<!-- <script src="ut/lib/canteen.js"></script> -->
|
<link rel="stylesheet" href="lib/reset.css" />
|
</head>
|
<body>
|
<style>
|
body {
|
background: #000 !important;
|
}
|
.test-chart {
|
margin: 80px auto 80px auto !important;
|
background: #fff !important;
|
}
|
#live-info-panel {
|
position: fixed;
|
right: 5px;
|
top: 5px;
|
width: 140px;
|
height: 120px;
|
box-shadow: 0 0 5px #fff;
|
border: 2px solid green;
|
z-index: 999999;
|
color: #fff;
|
font-size: 10px;
|
background: #000;
|
}
|
#live-info-panel .title {
|
font-size: 10px;
|
color: yellow;
|
text-align: center;
|
}
|
#live-info-panel #live-info-content {
|
padding: 2px 3px;
|
}
|
#parent-of-main0 {
|
overflow: hidden;
|
}
|
</style>
|
|
|
<div id="live-info-panel">
|
<div class="title">Live Info Panel</div>
|
<div id="live-info-content"></div>
|
</div>
|
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div>
|
<div id="parent-of-main0">
|
<div id="main0"></div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<div id="main1"></div>
|
<div id="main2"></div>
|
|
|
|
|
<script>
|
var _liveInfoPanel = document.getElementById('live-info-panel');
|
var _liveInfoContent = document.getElementById('live-info-content');;
|
var _liveMsg = [];
|
function _printLiveInfo(msg) {
|
_liveMsg.push(testHelper.encodeHTML(msg));
|
_liveMsg = _liveMsg.slice(Math.max(0, _liveMsg.length - 9));
|
_liveInfoContent.innerHTML = _liveMsg.join('<br>');
|
}
|
function _printEvent(event) {
|
var x = event.offsetX;
|
var y = event.offsetY;
|
x = x != null ? x.toFixed(1) : '-';
|
y = y != null ? y.toFixed(1) : '-';
|
_printLiveInfo(
|
event.type + ' [' + x + ',' + x + ']'
|
);
|
}
|
</script>
|
|
|
|
|
|
<script>
|
require(['echarts'/*, 'map/js/china' */], function (echarts) {
|
var option;
|
// $.getJSON('./data/nutrients.json', function (data) {});
|
|
option = {
|
xAxis: {},
|
yAxis: {},
|
brush: {},
|
tooltip: {
|
enterable: true,
|
alwaysShowContent: true,
|
position: [10, 10]
|
},
|
series: {
|
type: 'line',
|
data: [[11, 22]]
|
}
|
};
|
|
var chart = testHelper.create(echarts, 'main0', {
|
title: [
|
'[ Test this case in **PC** / **Touch device** / **WeApp(no document)** ]',
|
'(1) Before anything clicked, **mousemove** / **click** on both inside and outside echarts.',
|
'**Live Info Panel** should have mouse events.',
|
'(2) **mousemove** / **click** on both inside and outside echarts.',
|
'**Live Info Panel** should display mouse **xy** correctly.',
|
'drag outside and release, "globalout" event should be displayed fianly (only PC)',
|
'(3) Click "add stopPropagation on parent"',
|
'drag outside should be as usual.',
|
'Move inside and outside echarts, **Live Info Panel** should have mouse event.'
|
],
|
option: option,
|
width: 300,
|
height: 200,
|
buttons: [{
|
text: 'add stopPropagation on parent',
|
onclick: function () {
|
var parent = document.getElementById('parent-of-main0');
|
parent.addEventListener('mousemove', function (event) {
|
event.stopPropagation();
|
});
|
}
|
}]
|
});
|
|
var zr;
|
var mounted;
|
if (chart) {
|
zr = chart.getZr();
|
zr.on('mousemove', function (event) {
|
_printEvent(event)
|
});
|
zr.on('mouseup', function (event) {
|
_printEvent(event)
|
});
|
zr.on('globalout', function (event) {
|
_printEvent(event)
|
});
|
}
|
});
|
</script>
|
|
|
|
|
|
|
<script>
|
require(['echarts'/*, 'map/js/china' */], function (echarts) {
|
var option;
|
// $.getJSON('./data/nutrients.json', function (data) {});
|
|
option = {
|
xAxis: {},
|
yAxis: {},
|
toolbox: {
|
feature: {
|
dataZoom: {}
|
}
|
},
|
grid: {
|
left: 100
|
},
|
brush: {},
|
dataZoom: [{
|
type: 'slider'
|
}, {
|
type: 'inside'
|
}],
|
visualMap: {
|
type: 'continuous',
|
calculable: true,
|
left: 0,
|
top: 20,
|
min: 0,
|
max: 50,
|
itemHeight: 80
|
},
|
series: {
|
type: 'line',
|
data: [[11, 22], [33, 44], [42, 11], [52, 33]]
|
}
|
};
|
|
var chart = testHelper.create(echarts, 'main1', {
|
title: [
|
'Drag **toolbox.dataZoom** / **dataZoom-slider** / **brush**',
|
'to the **top** / **right** / **bottom** / **left** of the **black area** (out of echarts)',
|
'and then mouseup or go back.',
|
'Should act like listening to document `mousemove` and `mouseup`'
|
],
|
option: option,
|
width: 350,
|
height: 260,
|
// buttons: [{text: 'btn-txt', onclick: function () {}}],
|
// recordCanvas: true,
|
});
|
});
|
</script>
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
require(['echarts', 'map/js/china'], function (echarts) {
|
var testGeoJson1 = {
|
'type': 'FeatureCollection',
|
'features': [
|
{
|
'geometry': {
|
'type': 'Polygon',
|
'coordinates': [
|
[
|
[
|
2000,
|
3000
|
],
|
[
|
5000,
|
3000
|
],
|
[
|
5000,
|
8000
|
],
|
[
|
2000,
|
8000
|
]
|
]
|
]
|
},
|
'properties': {
|
'name': 'Some Area',
|
'childNum': 1
|
}
|
}
|
]
|
};
|
echarts.registerMap('test1', testGeoJson1);
|
|
var data = [];
|
var step = 200;
|
var lngStart = 2000;
|
var latStart = 4000;
|
for (var i = 0; i < 10; i++) {
|
for (var j = 0; j < 20; j++) {
|
data.push({
|
value: [lngStart + j * step, latStart + i * step],
|
symbolSize: 5 + j * 2
|
});
|
}
|
}
|
|
var option = {
|
geo: [{
|
map: 'test1',
|
zoom: 8,
|
roam: true
|
}],
|
brush: {
|
geoIndex: 0
|
},
|
series: [{
|
type: 'scatter',
|
coordinateSystem: 'geo',
|
symbol: 'roundRect',
|
symbolSize: 30,
|
data: data
|
}, {
|
type: 'bar',
|
data: []
|
}],
|
xAxis: {},
|
yAxis: {},
|
};
|
|
var chart = testHelper.create(echarts, 'main2', {
|
title: [
|
'brush out of the area, the points that out of the chart area should be selected.',
|
],
|
option: option,
|
width: 350,
|
height: 260
|
});
|
|
if (!chart) {
|
return;
|
}
|
|
chart.on('brushselected', function (params) {
|
var selectedDataIndices = fetchSelected(params);
|
txtEl.style.text = 'selected data indices: ' + selectedDataIndices.join(', ');
|
txtEl.dirty();
|
});
|
|
function fetchSelected(params) {
|
var selectedDataIndices = [];
|
for (var i = 0; i < params.batch.length; i++) {
|
var item = params.batch[i];
|
var selected = item.selected;
|
for (var j = 0; j < selected.length; j++) {
|
selectedDataIndices = selectedDataIndices.concat(selected[j].dataIndex);
|
}
|
}
|
return selectedDataIndices;
|
}
|
|
var txtEl = new echarts.graphic.Text({
|
style: {
|
x: 10,
|
y: 10,
|
color: 'blue',
|
fontSize: 9
|
},
|
z: 9999
|
});
|
var zr = chart.getZr();
|
zr.add(txtEl);
|
|
});
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
</html>
|