FlexChart データ選択のパフォーマンス(2020J v1)
by Wijmo5_jp
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/cultures/wijmo.culture.ja.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.chart.min.js"></script>
<div class="container-fluid">
<h4>2020J v1</h4>
<p>任意の点をクリックして選択してください。</p>
<div id="chart"></div>
選択されている値: <span id="log"></span><br>
点をクリックしてから選択されるまでにかかった時間: <span id="time"> </span>
</div>
CSS
body {
margin: 50px 0;
}
.wj-flexchart .wj-state-selected {
stroke: red;
stroke-width: 2;
}
JavaScript
document.readyState === 'complete' ? init() : window.onload = init;
function init() {
var time = null;
let theChart = new wijmo.chart.FlexChart('#chart', {
chartType: 'Scatter',
selectionMode: wijmo.chart.SelectionMode.Point,
selectionChanged: function (s, e) {
if (s.selection && time != null) {
document.getElementById('time').innerText = wijmo.Globalize.format(Date.now() - time, 'n0') + ' ms';
var dataObject = s.selection.collectionView.currentItem;
document.getElementById('log').innerText = 'ID:' + wijmo.Globalize.formatNumber(dataObject.id,'n')
+ ' X:' + wijmo.Globalize.formatNumber(dataObject.x,'n')
+ ' Y:' + wijmo.Globalize.formatNumber(dataObject.y,'n');
time = null;s
}
},
series: [
{
name: 'データ',
itemsSource: getData(5000),
bindingX: 'x',
binding: 'y'
}
]
});
theChart.hostElement.addEventListener('mouseup', function(e) {
time = Date.now();
});
}
function getData(cnt) {
let arr = [];
let numArr = [-1, 1];
for (let i = 0; i < cnt; i++) {
arr.push({
id: i,
x: numArr[Math.floor(Math.random() * numArr.length)] * (Math.round(Math.random() * 1000000)),
y: numArr[Math.floor(Math.random() * numArr.length)] * Math.round(Math.random() * 1000000)
});
}
return arr;
}