mirror of
https://gitlab.com/JKANetwork/CheckServer.git
synced 2026-03-07 02:52:02 +01:00
Start again
This commit is contained in:
738
vendors/echarts/test/visualMap-opacity.html
vendored
Normal file
738
vendors/echarts/test/visualMap-opacity.html
vendored
Normal file
@@ -0,0 +1,738 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="esl.js"></script>
|
||||
<script src="config.js"></script>
|
||||
<link rel="stylesheet" href="reset.css">
|
||||
<script src="lib/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
.main {
|
||||
height: 400px;
|
||||
margin: 10px 0 80px 0;
|
||||
}
|
||||
.label {
|
||||
background: #ddd;
|
||||
line-height: 30px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<div class="label">Color Alpha in scatter (using outOfRange as 'selected')</div>
|
||||
<div class="main" id="main1"></div>
|
||||
<div class="label">Opacity in bar (label color specified)</div>
|
||||
<div class="main" id="main2"></div>
|
||||
<div class="label">Opacity in scatter (label color specified)</div>
|
||||
<div class="main" id="main3"></div>
|
||||
<div class="label">Opacity in graph (label color specified)</div>
|
||||
<div class="main" id="main4"></div>
|
||||
<div class="label">Opacity in heatmap (inactive color default using opacity)</div>
|
||||
<div class="main" id="main5"></div>
|
||||
<div class="label">Opacity in pie (label color and label line color specified)</div>
|
||||
<div class="main" id="main6"></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- ALPHA SCATTER -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
require([
|
||||
'echarts',
|
||||
'echarts/chart/scatter',
|
||||
'echarts/component/legend',
|
||||
'echarts/component/grid',
|
||||
'echarts/component/visualMapPiecewise'
|
||||
], function (echarts) {
|
||||
|
||||
var main = document.getElementById('main1');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main);
|
||||
|
||||
var data1 = [];
|
||||
var data2 = [];
|
||||
var data3 = [];
|
||||
|
||||
var symbolCount = 6;
|
||||
|
||||
for (var i = 0; i < 100; i++) {
|
||||
data1.push([
|
||||
Math.random() * 5,
|
||||
Math.random() * 4,
|
||||
Math.random() * 20,
|
||||
Math.round(Math.random() * (symbolCount - 1))
|
||||
]);
|
||||
data2.push([
|
||||
Math.random() * 10,
|
||||
Math.random() * 5,
|
||||
Math.random() * 20,
|
||||
Math.round(Math.random() * (symbolCount - 1))
|
||||
]);
|
||||
data3.push([
|
||||
Math.random() * 15,
|
||||
Math.random() * 10,
|
||||
Math.random() * 20,
|
||||
Math.round(Math.random() * (symbolCount - 1))
|
||||
]);
|
||||
}
|
||||
|
||||
chart.on('click', function (params) {
|
||||
console.log(params);
|
||||
});
|
||||
|
||||
chart.setOption({
|
||||
color: ['#bcd3bb', '#928ea8', '#edc1a5'],
|
||||
legend: {
|
||||
data: ['scatter', 'scatter2', 'scatter3']
|
||||
},
|
||||
grid: {
|
||||
top: 50,
|
||||
bottom: 30
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
visualMap: [
|
||||
{
|
||||
type: 'piecewise',
|
||||
splitNumber: 6,
|
||||
left: 'right',
|
||||
bottom: 30,
|
||||
// selectedMode: 'single',
|
||||
selectedMode: 'multiple',
|
||||
selected: {
|
||||
0: false, 1: false, 2: false, 3: false, 4: false, 5: false
|
||||
},
|
||||
dimension: 'z',
|
||||
min: 0,
|
||||
max: 24,
|
||||
precision: 0,
|
||||
inRange: { // visual for short cut
|
||||
color: ['rgb(20,1,0)'],
|
||||
symbolSize: [40, 5]
|
||||
},
|
||||
outOfRange: {
|
||||
colorAlpha: [0.3, 1],
|
||||
symbolSize: [40, 5]
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: 'scatter',
|
||||
type: 'scatter',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
opacity: 0.8,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
},
|
||||
data: data1
|
||||
},
|
||||
{
|
||||
name: 'scatter2',
|
||||
type: 'scatter',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
opacity: 0.8,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
},
|
||||
data: data2
|
||||
},
|
||||
{
|
||||
name: 'scatter3',
|
||||
type: 'scatter',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
opacity: 0.8,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
},
|
||||
data: data3
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
chart.resize();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- OPACITY BAR -->
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
require([
|
||||
'echarts',
|
||||
'echarts/chart/bar',
|
||||
'echarts/chart/line',
|
||||
'echarts/component/legend',
|
||||
'echarts/component/grid',
|
||||
'echarts/component/tooltip',
|
||||
'echarts/component/toolbox',
|
||||
'echarts/component/visualMap',
|
||||
'zrender/vml/vml'
|
||||
], function (echarts) {
|
||||
|
||||
var main = document.getElementById('main2');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main);
|
||||
|
||||
var xAxisData = [];
|
||||
var data1 = [];
|
||||
var data2 = [];
|
||||
var data3 = [];
|
||||
var data4 = [];
|
||||
|
||||
var DATA_MAX = 5.5;
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
xAxisData.push('类目' + i);
|
||||
data1.push((Math.random() * DATA_MAX).toFixed(2));
|
||||
data2.push(-Math.random().toFixed(2));
|
||||
data3.push((Math.random() + 0.5).toFixed(2));
|
||||
data4.push((Math.random() + 0.3).toFixed(2));
|
||||
}
|
||||
|
||||
var labelStyle = {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'outside',
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var itemStyle = {
|
||||
normal: {
|
||||
},
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0,0,0,0.5)'
|
||||
}
|
||||
};
|
||||
|
||||
chart.setOption({
|
||||
legend: {
|
||||
data: ['bar', 'bar2', 'bar3'],
|
||||
align: 'left'
|
||||
},
|
||||
toolbox: {
|
||||
// y: 'bottom',
|
||||
feature: {
|
||||
magicType: {
|
||||
type: ['line', 'bar', 'stack', 'tiled']
|
||||
},
|
||||
dataView: {}
|
||||
}
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: xAxisData,
|
||||
axisLine: {
|
||||
onZero: true
|
||||
},
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
splitArea: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
splitArea: {
|
||||
show: false
|
||||
},
|
||||
max: 6,
|
||||
min: -2
|
||||
},
|
||||
visualMap: [
|
||||
{
|
||||
type: 'continuous',
|
||||
right: 0,
|
||||
itemWidth: 15,
|
||||
bottom: 30,
|
||||
dimension: 1,
|
||||
calculable: true,
|
||||
min: -2,
|
||||
max: DATA_MAX,
|
||||
precision: 2,
|
||||
inRange: {
|
||||
opacity: [1, 1] // Using opacity when label color specified
|
||||
},
|
||||
controller: {
|
||||
inRange: {
|
||||
color: '#888'
|
||||
},
|
||||
outOfRange: {
|
||||
color: '#888'
|
||||
}
|
||||
},
|
||||
outOfRange: {
|
||||
opacity: [0.2, 0.2] // Using opacity when label color specified
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: 'bar',
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
itemStyle: itemStyle,
|
||||
label: labelStyle,
|
||||
data: data1
|
||||
},
|
||||
{
|
||||
name: 'bar2',
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
itemStyle: itemStyle,
|
||||
label: labelStyle,
|
||||
data: data2
|
||||
},
|
||||
{
|
||||
name: 'bar3',
|
||||
type: 'bar',
|
||||
itemStyle: itemStyle,
|
||||
label: labelStyle,
|
||||
data: data3
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
chart.resize();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- OPACITY SCATTER -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
require([
|
||||
'echarts',
|
||||
'echarts/chart/scatter',
|
||||
'echarts/component/legend',
|
||||
'echarts/component/grid',
|
||||
'echarts/component/visualMapPiecewise'
|
||||
], function (echarts) {
|
||||
|
||||
var main = document.getElementById('main3');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main);
|
||||
|
||||
var data1 = [];
|
||||
|
||||
var symbolCount = 6;
|
||||
|
||||
for (var i = 0; i < 100; i++) {
|
||||
data1.push([
|
||||
Math.random() * 5,
|
||||
Math.random() * 4,
|
||||
Math.random() * 20,
|
||||
Math.round(Math.random() * (symbolCount - 1))
|
||||
]);
|
||||
}
|
||||
|
||||
chart.setOption({
|
||||
legend: {
|
||||
data: ['scatter', 'scatter2', 'scatter3']
|
||||
},
|
||||
grid: {
|
||||
top: 50,
|
||||
bottom: 30
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
visualMap: [
|
||||
{
|
||||
type: 'piecewise',
|
||||
splitNumber: 6,
|
||||
left: 'right',
|
||||
bottom: 30,
|
||||
selectedMode: 'multiple',
|
||||
dimension: 'z',
|
||||
min: 0,
|
||||
max: 24,
|
||||
precision: 0,
|
||||
inRange: { // visual for short cut
|
||||
opacity: 1,
|
||||
symbolSize: [15, 50]
|
||||
},
|
||||
outOfRange: {
|
||||
opacity: 0.3,
|
||||
symbolSize: [15, 50]
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: 'scatter',
|
||||
type: 'scatter',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
opacity: 0.8,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'inside',
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
}
|
||||
}
|
||||
},
|
||||
data: data1
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
chart.resize();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- OPACITY GRAPH -->
|
||||
|
||||
<script>
|
||||
|
||||
require([
|
||||
'echarts',
|
||||
|
||||
'extension/dataTool/gexf',
|
||||
|
||||
'echarts/chart/graph',
|
||||
|
||||
'echarts/component/title',
|
||||
'echarts/component/legend',
|
||||
'echarts/component/geo',
|
||||
'echarts/component/tooltip',
|
||||
'echarts/component/visualMap',
|
||||
|
||||
'theme/vintage'
|
||||
], function (echarts, gexf) {
|
||||
|
||||
var main = document.getElementById('main4');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main);
|
||||
|
||||
$.get('./data/les-miserables.gexf', function (xml) {
|
||||
var graph = gexf.parse(xml);
|
||||
var categories = [];
|
||||
for (var i = 0; i < 9; i++) {
|
||||
categories[i] = {
|
||||
name: '类目' + i
|
||||
};
|
||||
}
|
||||
graph.nodes.forEach(function (node) {
|
||||
delete node.itemStyle;
|
||||
node.value = node.symbolSize;
|
||||
node.label = {
|
||||
normal: {
|
||||
show: node.symbolSize > 30
|
||||
}
|
||||
};
|
||||
node.category = node.attributes['modularity_class'];
|
||||
});
|
||||
graph.links.forEach(function (link) {
|
||||
delete link.lineStyle;
|
||||
});
|
||||
var option = {
|
||||
tooltip: {},
|
||||
legend: [{
|
||||
// selectedMode: 'single',
|
||||
data: categories.map(function (a) {
|
||||
return a.name;
|
||||
})
|
||||
}],
|
||||
visualMap: {
|
||||
min: 0,
|
||||
max: 100,
|
||||
dimension: 0,
|
||||
calculable: true,
|
||||
inRange: {
|
||||
opacity: 1,
|
||||
symbolSize: [10, 100]
|
||||
},
|
||||
outOfRange: {
|
||||
opacity: 0.2,
|
||||
symbolSize: [10, 100]
|
||||
}
|
||||
},
|
||||
animationDurationUpdate: 1500,
|
||||
animationEasingUpdate: 'quinticInOut',
|
||||
series : [
|
||||
{
|
||||
name: 'Les Miserables',
|
||||
type: 'graph',
|
||||
layout: 'none',
|
||||
data: graph.nodes,
|
||||
links: graph.links,
|
||||
categories: categories,
|
||||
roam: true,
|
||||
label: {
|
||||
normal: {
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
},
|
||||
position: 'right',
|
||||
formatter: '{b}'
|
||||
}
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
curveness: 0.3
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
chart.setOption(option);
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- OPACITY HEATMAP -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
require([
|
||||
'echarts',
|
||||
'echarts/chart/heatmap',
|
||||
'echarts/component/grid',
|
||||
'echarts/component/tooltip',
|
||||
'echarts/component/visualMapPiecewise'
|
||||
], function (echarts) {
|
||||
|
||||
var main = document.getElementById('main5');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main, null, {
|
||||
renderer: 'canvas'
|
||||
});
|
||||
|
||||
var hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a',
|
||||
'7a', '8a', '9a','10a','11a',
|
||||
'12p', '1p', '2p', '3p', '4p', '5p',
|
||||
'6p', '7p', '8p', '9p', '10p', '11p'];
|
||||
var days = ['Saturday', 'Friday', 'Thursday',
|
||||
'Wednesday', 'Tuesday', 'Monday', 'Sunday'];
|
||||
|
||||
var data = [[0,0,5],[0,1,1],[0,2,0],[0,3,0],[0,4,0],[0,5,0],[0,6,0],[0,7,0],[0,8,0],[0,9,0],[0,10,0],[0,11,2],[0,12,4],[0,13,1],[0,14,1],[0,15,3],[0,16,4],[0,17,6],[0,18,4],[0,19,4],[0,20,3],[0,21,3],[0,22,2],[0,23,5],[1,0,7],[1,1,0],[1,2,0],[1,3,0],[1,4,0],[1,5,0],[1,6,0],[1,7,0],[1,8,0],[1,9,0],[1,10,5],[1,11,2],[1,12,2],[1,13,6],[1,14,9],[1,15,11],[1,16,6],[1,17,7],[1,18,8],[1,19,12],[1,20,5],[1,21,5],[1,22,7],[1,23,2],[2,0,1],[2,1,1],[2,2,0],[2,3,0],[2,4,0],[2,5,0],[2,6,0],[2,7,0],[2,8,0],[2,9,0],[2,10,3],[2,11,2],[2,12,1],[2,13,9],[2,14,8],[2,15,10],[2,16,6],[2,17,5],[2,18,5],[2,19,5],[2,20,7],[2,21,4],[2,22,2],[2,23,4],[3,0,7],[3,1,3],[3,2,0],[3,3,0],[3,4,0],[3,5,0],[3,6,0],[3,7,0],[3,8,1],[3,9,0],[3,10,5],[3,11,4],[3,12,7],[3,13,14],[3,14,13],[3,15,12],[3,16,9],[3,17,5],[3,18,5],[3,19,10],[3,20,6],[3,21,4],[3,22,4],[3,23,1],[4,0,1],[4,1,3],[4,2,0],[4,3,0],[4,4,0],[4,5,1],[4,6,0],[4,7,0],[4,8,0],[4,9,2],[4,10,4],[4,11,4],[4,12,2],[4,13,4],[4,14,4],[4,15,14],[4,16,12],[4,17,1],[4,18,8],[4,19,5],[4,20,3],[4,21,7],[4,22,3],[4,23,0],[5,0,2],[5,1,1],[5,2,0],[5,3,3],[5,4,0],[5,5,0],[5,6,0],[5,7,0],[5,8,2],[5,9,0],[5,10,4],[5,11,1],[5,12,5],[5,13,10],[5,14,5],[5,15,7],[5,16,11],[5,17,6],[5,18,0],[5,19,5],[5,20,3],[5,21,4],[5,22,2],[5,23,0],[6,0,1],[6,1,0],[6,2,0],[6,3,0],[6,4,0],[6,5,0],[6,6,0],[6,7,0],[6,8,0],[6,9,0],[6,10,1],[6,11,0],[6,12,2],[6,13,1],[6,14,3],[6,15,4],[6,16,0],[6,17,0],[6,18,0],[6,19,0],[6,20,1],[6,21,2],[6,22,2],[6,23,6]];
|
||||
|
||||
data = data.map(function (item) {
|
||||
return [item[1], item[0], item[2] || '-'];
|
||||
});
|
||||
|
||||
option = {
|
||||
backgroundColor: '#eee4ee',
|
||||
tooltip: {
|
||||
position: 'top'
|
||||
},
|
||||
animation: false,
|
||||
grid: {
|
||||
height: '50%',
|
||||
y: '10%'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: hours
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: days
|
||||
},
|
||||
visualMap: {
|
||||
min: 1,
|
||||
max: 10,
|
||||
calculable: true,
|
||||
range: [3, 6],
|
||||
orient: 'horizontal',
|
||||
left: 'center',
|
||||
bottom: '15%'
|
||||
},
|
||||
series: [{
|
||||
name: 'Punch Card',
|
||||
type: 'heatmap',
|
||||
data: data,
|
||||
label: {
|
||||
normal: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
chart.setOption(option);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- OPACITY HEATMAP -->
|
||||
|
||||
<script>
|
||||
require([
|
||||
'echarts',
|
||||
'echarts/chart/pie',
|
||||
'echarts/component/legend',
|
||||
'echarts/component/grid',
|
||||
'echarts/component/tooltip'
|
||||
], function (echarts) {
|
||||
|
||||
var main = document.getElementById('main6');
|
||||
if (!main) {
|
||||
return;
|
||||
}
|
||||
var chart = echarts.init(main);
|
||||
|
||||
chart.setOption({
|
||||
legend: {
|
||||
data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
|
||||
},
|
||||
tooltip: {},
|
||||
visualMap: {
|
||||
type: 'continuous',
|
||||
top: 'middle',
|
||||
min: 0,
|
||||
max: 700,
|
||||
dimension: 1,
|
||||
calculable: true,
|
||||
inRange: {
|
||||
color: ['yellow', 'green']
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: 'pie',
|
||||
type: 'pie',
|
||||
selectedMode: 'single',
|
||||
selectedOffset: 30,
|
||||
clockwise: true,
|
||||
label: {
|
||||
normal: {
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
normal: {
|
||||
lineStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
}
|
||||
},
|
||||
data:[
|
||||
{value: [335, 632], name:'直接访问'},
|
||||
{value: [310, 434], name:'邮件营销'},
|
||||
{value: [234, 233], name:'联盟广告'},
|
||||
{value: [135, 544], name:'视频广告'},
|
||||
{value: [1548, 381], name:'搜索引擎'}
|
||||
]
|
||||
}]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user