summaryrefslogtreecommitdiff
path: root/static/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/script.js')
-rw-r--r--static/script.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/static/script.js b/static/script.js
new file mode 100644
index 0000000..7ba03d2
--- /dev/null
+++ b/static/script.js
@@ -0,0 +1,62 @@
+"use strict";
+
+let randomByte = () => Math.floor(Math.random() * 256);
+let randomColor = () => `rgb(${randomByte()}, ${randomByte()}, ${randomByte()})`;
+let hide = el => el.style.display = 'none';
+let show = el => el.style.display = 'block';
+let encode = x => encodeURIComponent(btoa(x));
+let decode = x => atob(decodeURIComponent(x));
+
+document.getElementById('entry').addEventListener('input', function(e) {
+ e.preventDefault();
+ var shareEl = document.getElementById('share')
+ hide(shareEl)
+ if (!e.target.value) {
+ return
+ }
+ var encoded = encode(e.target.value)
+ var url = `${location.origin}/telechromy?prompt=${encode(c)}&text=${encoded}`
+ document.getElementById('url').value = url
+ show(shareEl)
+})
+
+document.getElementById('copy').addEventListener('click', function(e) {
+ e.preventDefault();
+ document.getElementById('url').select()
+ document.execCommand('copy');
+})
+
+document.getElementById('visit').addEventListener('click', function(e) {
+ e.preventDefault();
+ var url = document.getElementById('url').value
+ window.location.replace(url)
+})
+
+document.getElementById('submit').addEventListener('click', function(e) {
+ e.preventDefault();
+ var color = document.getElementById('color').value
+ var cc = urlParams.get('prompt')
+ var tt = urlParams.get('text')
+ var url = `${location.origin}/telechromy?prompt=${cc}&text=${tt}&guess=${encode(color)}`
+ window.location.replace(url)
+})
+
+var bodyEl = document.getElementById('body');
+
+var urlParams = new URLSearchParams(window.location.search);
+var text = urlParams.get('text')
+if (urlParams.get('guess')) {
+ show(document.getElementById('result'))
+ show(document.getElementById('labels'))
+ document.getElementById('prompt-text').textContent = `“${decode(text)}”`
+ var pp = decode(urlParams.get('prompt'))
+ var gg = decode(urlParams.get('guess'))
+ bodyEl.style = `background: linear-gradient(90deg, ${pp} 50%, ${gg} 50%)`
+} else if (text) {
+ show(document.getElementById('guess'))
+ document.getElementById('challenge').textContent = `“${decode(text)}”`
+} else {
+ show(document.getElementById('prompt'))
+ var c = randomColor();
+ bodyEl.style = `background-color: ${c}`;
+}