blob: b634e5491ac70771117df1d21fee598ef007ec2a [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>bgp.wtf</title>
<style type="text/css">
body {
margin: 80px auto;
line-height: 1.6;
font-size: 18px;
max-width: 650px;
color: #444;
background-color: #aaa;
padding: 0 10px;
font-family: helvetica, arial, sans-serif;
}
a {
color: #444;
font-weight: 600;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
span.snippet {
font-family: system, courier new, serif;
}
div.container {
background-color: #f8f8f8;
padding: 10px 20px 10px 20px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
margin-bottom: 40px;
}
div.container h1, h2, h3 {
margin: 0;
color: #333;
}
div.splitContainer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
div.split {
flex-grow: 1;
background-color: #f8f8f8;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
position: relative;
padding: 10px 20px 10px 20px;
z-index: 1;
}
div.background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 100%;
z-index: -1;
background-color: #e8f8e8;
-webkit-transition: bottom 0.5s ease-in, top 0.5s ease-in;
}
a.button {
border-radius: 2px;
cursor: pointer;
font-size: 11px;
font-weight: bold;
text-align: center;
white-space: nowrap;
height: 27px;
line-height: 27px;
min-width: 54px;
outline: 0;
padding: 0 8px;
text-shadow: 0 1px rgba(0,0,0,0.1);
background-image: -webkit-linear-gradient(top,#f5f5f5,#f1f1f1);
background-image: -moz-linear-gradient(top,#f5f5f5,#f1f1f1);
background-image: linear-gradient(top,#f5f5f5,#f1f1f1);
color: #666;
border: 1px solid rgba(0,0,0,0.1);
display: inline-block;
text-decoration: none;
}
a.button:hover {
border: 1px solid #c6c6c6;
color: #333;
background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
background-image: -moz-linear-gradient(top, #f8f8f8, #f1f1f1);
background-image: linear-gradient(top, #f8f8f8, #f1f1f1);
}
a.red {
background-image: -webkit-linear-gradient(top,#dd4b39,#d14836);
background-image: -moz-linear-gradient(top,#dd4b39,#d14836);
background-image: linear-gradient(top,#dd4b39,#d14836);
color: #fff;
border: 1px solid transparent;
text-transform: uppercase;
}
a.red:hover {
border: 1px solid #b0281a;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
background-image: -webkit-linear-gradient(top, #dd4b39, #c53727);
background-image: -moz-linear-gradient(top, #dd4b39, #c53727);
background-image: linear-gradient(top, #dd4b39, #c53727);
color: #fff;
}
</style>
</head>
<body>
<div class="splitContainer">
<div class="split" style="width: 10rem; margin: 0.5rem;">
<div class="background" id="dlBackground"></div>
<h2>Download</h2>
<p id="download"><i>not started...</i></p>
</div>
<div class="split" style="width: 10rem; margin: 0.5rem;">
<div class="background" id="ulBackground" style="top: 100%; bottom: 0;"></div>
<h2>Upload</h2>
<p id="upload"><i>not started...</i></p>
</div>
</div>
<div class="container" style="margin: 0.5rem;">
<p>
<b>Server Location</b>: Warsaw, Poland (waw.bgp.wtf)<br />
<b>Latency</b>: <span id="ping"><i>not started...</i></span><br />
<a class="button red" style="margin-top: 20px;" onclick="startTest();">Start test</a>
</p>
</div>
<script type="text/javascript" src="speedtest.js"></script>
<script type="text/javascript">
const s = new Speedtest();
s.onupdate = function (data) { // when status is received, put the values in the appropriate fields
if (data.testState >= 1) {
if (data.dlStatus) {
document.getElementById('dlBackground').style.bottom = ((1-data.dlProgress) * 100 + "%");
document.getElementById('download').textContent = data.dlStatus + ' Mbit/s';
}
else
document.getElementById('download').innerHTML = '<i>starting...</i>';
}
if (data.testState >= 2)
document.getElementById('ping').textContent = data.pingStatus + ' ms, ' + data.jitterStatus + ' ms jitter'
if (data.testState >= 3) {
if (data.ulStatus) {
document.getElementById('ulBackground').style.top = ((1-data.ulProgress) * 100 + "%");
document.getElementById('upload').textContent = data.ulStatus + ' Mbit/s'
} else
document.getElementById('upload').innerHTML = '<i>starting...</i>';
}
}
var startTest = () => {
console.log("Starting test...");
document.getElementById('dlBackground').style.bottom = "100%";
document.getElementById('ulBackground').style.top = "100%";
s.start();
};
</script>
</body>
</html>