반응형
안녕하세요.
저는 요즘 vis.js 오픈소스를 활용하여 network chart를 만들고 있는데요.
노드가 많아질 수록 차트 랜더링 하는 속도가 길어져서,
loading bar를 만들어 주려고 합니다.
vis.js network chart의 이벤트 기능 중,
stabilizationProgress, stabilizationIterationsDone
을 이용한 방법입니다.
참조 한 사이트에서 본 소스를,
제 소스에 맞춰 살짝 변경하여 적용하였습니다.
아래는 JavaScript 부분입니다.
//loading process
network.on("stabilizationProgress", function (params) {
var maxWidth = 496;
var minWidth = 20;
var widthFactor = params.iterations / params.total;
var width = Math.max(minWidth, maxWidth * widthFactor);
document.getElementById('loadingBar').style.display = 'block';
document.getElementById('chartMask').style.display = 'block';
document.getElementById('loadingBar').style.opacity = 1;
document.getElementById('chartMask').style.opacity = 0.15;
document.getElementById('process').style.width = width + 'px';
document.getElementById('text').innerHTML = Math.round(widthFactor * 100) + '%';
});
network.on("stabilizationIterationsDone", function () {
document.getElementById('text').innerHTML = '100%';
document.getElementById('process').style.width = '496px';
document.getElementById('loadingBar').style.display = 'none';
document.getElementById('chartMask').style.display = 'none';
});
아래는 HTML 부분입니다.
<div id="chartMask"></div>
<div id="loadingBar" style="position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%); z-index:99;">
<div class="outerBorder" style="text-align:center;">
<div id="text" style="color:#538de5;font-size: 20px;margin-bottom: 10px;">0%</div>
<div id="border">
<div id="bar" style="width:496px; background: #fff;height: 8px;border-radius: 20px; position:relative;">
<div id="process" style="position:absolute; height:100%; left:0; top:0; background:#538de5; border-radius:20px;"></div>
</div>
</div>
</div>
</div>
반응형
'SOFTWARE > TIP' 카테고리의 다른 글
[javascript] file upload 사이즈 체크하기 (0) | 2022.05.30 |
---|---|
[JAVA] Object를 String으로 가져올때 NULL 값 체크 (0) | 2022.01.26 |
[CentOS] SSH 포트 열었는데도 접근 안될때 (0) | 2022.01.06 |
Microsoft Edge에서 Internet Explorer 열기 (0) | 2021.10.27 |
[mysql] centOS 에서 mysql 자동 백업 하기 (0) | 2021.05.21 |
댓글