<!DOCTYPE html>
<html>
<head>
<title>EyeDropper test</title>
<style>
#canvas {
background-color: #ff0000;
position: absolute;
left: 250px;
height: 300px;
width: 300px;
}
#action {
font-weight: bold;
}
#action.hidden {
visibility: hidden;
}
#logger {
position: absolute;
top: 400px;
}
#reset {
position: absolute;
top: 40px;
visibility: hidden;
}
#reset.visible {
visibility: visible;
}
.passed {
color: green;
font-size: x-large;
}
.failed {
color: red;
font-size: x-large;
}
</style>
</head>
<body>
This tests the eye dropper in the color picker feature.<br><br><br>
<div id="action">TODO: Open the color picker.</div>
<div id="canvas"></div>
<input type="color" id="color">
<ol id="logger"></ol>
<button id="reset">Reset test!</button>
<script>
function log(str) {
let entry = document.createElement("li");
entry.innerText = str;
logger.appendChild(entry);
return entry;
}
document.getElementById("color").addEventListener("click", function() {
action.innerHTML = "TODO: Open the eye dropper and click on the red canvas";
log("color picker opened");
})
document.getElementById("color").addEventListener("input", function(e) {
let entry = log("color updated to " + e.target.value + " expected: #ff0000");
let span = document.createElement("span");
let red = parseInt(e.target.value.substring(1, 3), 16);
let green = parseInt(e.target.value.substring(3, 5), 16);
let blue = parseInt(e.target.value.substring(5, 7), 16);
// Make sure the selected color is close to pure red (#FF0000), but allow
// some deviation due to monitor color calibration.
if (red >= 0xC0 && green <= 0x3F && blue <= 0x3F) {
span.innerText = "PASS ";
span.classList.add("passed");
} else {
span.innerText = "FAIL ";
span.classList.add("failed");
}
entry.prepend(span);
setTimeout(function() {
e.target.disabled = true;
// hack to close the color picker without user action.
e.target.type="text";
e.target.type="color";
}, 500);
reset.classList.add("visible");
action.classList.add("hidden");
})
document.getElementById("reset").addEventListener("click", function() {
action.innerHTML = "TODO: Open the color picker.";
action.classList.remove("hidden");
reset.classList.remove("visible");
color.value = "#000000";
color.disabled = false;
logger.innerHTML = "";
})
</script>
</body>
</html>