added the ability to hover over stats in the result page to see floating point nubmers

This commit is contained in:
Jack 2020-07-16 23:49:57 +01:00
parent e3e7bda740
commit 1e0e6641a6
3 changed files with 315 additions and 195 deletions

View file

@ -3,202 +3,319 @@
--balloon-color: rgba(16, 16, 16, 0.95);
--balloon-text-color: #fff;
--balloon-font-size: 1rem;
--balloon-move: 4px; }
--balloon-move: 4px;
}
button[aria-label][data-balloon-pos] {
overflow: visible; }
overflow: visible;
}
[aria-label][data-balloon-pos] {
position: relative;
cursor: pointer; }
[aria-label][data-balloon-pos]:after {
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0s;
text-indent: 0;
/* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; */
font-weight: normal;
font-style: normal;
text-shadow: none;
font-size: var(--balloon-font-size);
background: var(--balloon-color);
border-radius: 2px;
color: var(--balloon-text-color);
border-radius: var(--balloon-border-radius);
content: attr(aria-label);
padding: .5em 1em;
position: absolute;
white-space: nowrap;
z-index: 10; }
[aria-label][data-balloon-pos]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-top-color: var(--balloon-color);
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0s;
content: "";
position: absolute;
z-index: 10; }
[aria-label][data-balloon-pos]:hover:before, [aria-label][data-balloon-pos]:hover:after, [aria-label][data-balloon-pos][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-visible]:after, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
opacity: 1;
pointer-events: none; }
[aria-label][data-balloon-pos].font-awesome:after {
font-family: FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; }
[aria-label][data-balloon-pos][data-balloon-break]:after {
white-space: pre; }
[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
white-space: pre-line;
word-break: break-word; }
[aria-label][data-balloon-pos][data-balloon-blunt]:before, [aria-label][data-balloon-pos][data-balloon-blunt]:after {
transition: none; }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:after {
bottom: 100%;
left: 50%;
margin-bottom: 10px;
transform: translate(-50%, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:before {
bottom: 100%;
left: 50%;
transform: translate(-50%, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:after {
bottom: 100%;
left: 0;
margin-bottom: 10px;
transform: translate(0, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:before {
bottom: 100%;
left: 5px;
transform: translate(0, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:after {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:before {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:after {
bottom: 100%;
right: 0;
margin-bottom: 10px;
transform: translate(0, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:before {
bottom: 100%;
right: 5px;
transform: translate(0, var(--balloon-move));
transform-origin: top; }
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:after {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:before {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down"]:after {
left: 50%;
margin-top: 10px;
top: 100%;
transform: translate(-50%, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
left: 50%;
top: 100%;
transform: translate(-50%, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:after {
left: 0;
margin-top: 10px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
left: 5px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:after {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:before {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:after {
right: 0;
margin-top: 10px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
right: 5px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:after {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:before {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after {
margin-right: 10px;
right: 100%;
top: 50%;
transform: translate(var(--balloon-move), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-left-color: var(--balloon-color);
right: 100%;
top: 50%;
transform: translate(var(--balloon-move), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after {
left: 100%;
margin-left: 10px;
top: 50%;
transform: translate(calc(var(--balloon-move) * -1), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-right-color: var(--balloon-color);
left: 100%;
top: 50%;
transform: translate(calc(var(--balloon-move) * -1), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-length="small"]:after {
white-space: normal;
width: 80px; }
[aria-label][data-balloon-pos][data-balloon-length="medium"]:after {
white-space: normal;
width: 150px; }
[aria-label][data-balloon-pos][data-balloon-length="large"]:after {
white-space: normal;
width: 260px; }
cursor: pointer;
}
[aria-label][data-balloon-pos]:after {
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0s;
text-indent: 0;
/* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; */
font-weight: normal;
font-style: normal;
text-shadow: none;
font-size: var(--balloon-font-size);
line-height: var(--balloon-font-size);
background: var(--balloon-color);
border-radius: 2px;
color: var(--balloon-text-color);
border-radius: var(--balloon-border-radius);
content: attr(aria-label);
padding: .5em 1em;
position: absolute;
white-space: nowrap;
z-index: 10;
}
[aria-label][data-balloon-pos]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-top-color: var(--balloon-color);
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0s;
content: "";
position: absolute;
z-index: 10;
}
[aria-label][data-balloon-pos]:hover:before,
[aria-label][data-balloon-pos]:hover:after,
[aria-label][data-balloon-pos][data-balloon-visible]:before,
[aria-label][data-balloon-pos][data-balloon-visible]:after,
[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,
[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
opacity: 1;
pointer-events: none;
}
[aria-label][data-balloon-pos].font-awesome:after {
font-family: FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
[aria-label][data-balloon-pos][data-balloon-break]:after {
white-space: pre;
}
[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
white-space: pre-line;
word-break: break-word;
}
[aria-label][data-balloon-pos][data-balloon-blunt]:before,
[aria-label][data-balloon-pos][data-balloon-blunt]:after {
transition: none;
}
[aria-label][data-balloon-pos][data-balloon-pos="up"]:after {
bottom: 100%;
left: 50%;
margin-bottom: 10px;
transform: translate(-50%, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up"]:before {
bottom: 100%;
left: 50%;
transform: translate(-50%, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after {
transform: translate(-50%, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before {
transform: translate(-50%, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:after {
bottom: 100%;
left: 0;
margin-bottom: 10px;
transform: translate(0, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:before {
bottom: 100%;
left: 5px;
transform: translate(0, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:after {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:before {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:after {
bottom: 100%;
right: 0;
margin-bottom: 10px;
transform: translate(0, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:before {
bottom: 100%;
right: 5px;
transform: translate(0, var(--balloon-move));
transform-origin: top;
}
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:after {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:before {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down"]:after {
left: 50%;
margin-top: 10px;
top: 100%;
transform: translate(-50%, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
left: 50%;
top: 100%;
transform: translate(-50%, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {
transform: translate(-50%, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {
transform: translate(-50%, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:after {
left: 0;
margin-top: 10px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
left: 5px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:after {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:before {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:after {
right: 0;
margin-top: 10px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color);
right: 5px;
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1));
}
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:after {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:before {
transform: translate(0, 0);
}
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after {
margin-right: 10px;
right: 100%;
top: 50%;
transform: translate(var(--balloon-move), -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="left"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-left-color: var(--balloon-color);
right: 100%;
top: 50%;
transform: translate(var(--balloon-move), -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after {
transform: translate(0, -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before {
transform: translate(0, -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after {
left: 100%;
margin-left: 10px;
top: 50%;
transform: translate(calc(var(--balloon-move) * -1), -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="right"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-right-color: var(--balloon-color);
left: 100%;
top: 50%;
transform: translate(calc(var(--balloon-move) * -1), -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after,
[aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {
transform: translate(0, -50%);
}
[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before,
[aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {
transform: translate(0, -50%);
}
[aria-label][data-balloon-pos][data-balloon-length="small"]:after {
white-space: normal;
width: 80px;
}
[aria-label][data-balloon-pos][data-balloon-length="medium"]:after {
white-space: normal;
width: 150px;
}
[aria-label][data-balloon-pos][data-balloon-length="large"]:after {
white-space: normal;
width: 260px;
}
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
white-space: normal;
width: 380px;
}
@media screen and (max-width: 768px) {
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
white-space: normal;
width: 380px; }
@media screen and (max-width: 768px) {
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
white-space: normal;
width: 90vw; } }
[aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
white-space: normal;
width: 100%; }
width: 90vw;
}
}
[aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
white-space: normal;
width: 100%;
}

View file

@ -625,11 +625,11 @@
<div class="crown"><i class="fas fa-crown"></i></div>
</div>
</div>
<div class="bottom">-</div>
<div class="bottom" aria-label="" data-balloon-pos="up">-</div>
</div>
<div class="group acc">
<div class="top">acc</div>
<div class="bottom">-</div>
<div class="bottom" aria-label="" data-balloon-pos="up">-</div>
</div>
<div class="group key">
<div class="top">char</div>
@ -641,7 +641,7 @@
</div>
<div class="group raw">
<div class="top">raw</div>
<div class="bottom">-</div>
<div class="bottom" aria-label="" data-balloon-pos="up">-</div>
</div>
<div class="group testType">
<div class="top">test type</div>

View file

@ -1005,8 +1005,11 @@ function showResult(difficultyFailed = false) {
clearIntervals();
let testtime = roundedToFixed(stats.time, 1);
$("#result .stats .wpm .bottom").text(Math.round(stats.wpm));
$("#result .stats .wpm .bottom").attr("aria-label", stats.wpm);
$("#result .stats .raw .bottom").text(Math.round(stats.wpmRaw));
$("#result .stats .raw .bottom").attr("aria-label", stats.wpmRaw);
$("#result .stats .acc .bottom").text(Math.floor(stats.acc) + "%");
$("#result .stats .acc .bottom").attr("aria-label", stats.acc + "%");
$("#result .stats .key .bottom").text(
stats.correctChars + stats.spaces + "/" + stats.incorrectChars
);