I haven't worked on this site in a while & recently wrote a bunch of mini-tools I could cram in there, so I need a new UI to enable that.
A Pen by Joel Kirchartz on CodePen.
<nav> | |
<button name="box1">unshorten URL</button> | |
<button name="box2">URL encode/decode</button> | |
<button name="box3">Random Color</button> | |
<button name="box4">Commas to Tabs</button> | |
</nav> | |
<div id="box1"> | |
<form id="untiny" action="/untiny" method="GET"> | |
<h2>Unshorten URL</h2> | |
<input id="untiny-url" name="url"> | |
<button>Unshorten URL</button> | |
</form> | |
</div> | |
<div id="box2"> | |
<form id="de-encoder"> | |
<h2>URI encode/decode</h2> | |
<input id="codec"> | |
<button id="codec_btn">URI (en|de)code</button> | |
</form> | |
</div> | |
<div id="box3"> | |
<form id="rand-color"> | |
<h2>Random Color</h2> | |
<button id="rand-color_btn">random color</button> | |
</form> | |
</div> | |
<div id="box4"> | |
<form id="commatabs"> | |
<h2>Commas to Tabs</h2> | |
<textarea id="commatabber"></textarea> | |
<button id="execute">Convert Commas to Tabs</button> | |
</form> | |
</div> |
I haven't worked on this site in a while & recently wrote a bunch of mini-tools I could cram in there, so I need a new UI to enable that.
A Pen by Joel Kirchartz on CodePen.
/* Framework */ | |
var $ = document.querySelectorAll; | |
var toggle = function(e) { | |
e.preventDefault(); | |
e.stopImmediatePropagation(); | |
var boxName = e.target.name; | |
var box = document.getElementById(boxName); | |
var boxes = document.getElementsByTagName('div'); | |
if (box.className == 'on') { | |
box.className = ''; | |
} else { | |
box.className = 'on'; | |
} | |
for (var i in boxes) { | |
if (boxes[i].id !== box.id) { | |
boxes[i].className = ''; | |
} | |
} | |
} | |
window.addEventListener('load', function(){ | |
var boxName = window.location.hash; | |
if (boxName) { | |
$(boxName).className = 'on'; | |
} | |
var buttons = $('nav button'); | |
buttons.map(function(){console.log("map",this);}); | |
for (var i in buttons) { | |
buttons[i].addEventListener('click', toggle); | |
} | |
}); | |
/* tools */ | |
document.getElementById('untiny').onsubmit = function (e) { | |
e.preventDefault; | |
var r = new XMLHttpRequest(), | |
url = document.getElementById('untiny-url').value; | |
r.open("GET", e.target.action + "?url=" + url, true); | |
r.onreadystatechange = function () { | |
if (r.readyState != 4 || r.status != 200) return; | |
var link = document.createElement('a'); | |
link.href = r.responseText; | |
link.innerHTML = r.responseText; | |
document.getElementById('untiny').appendChild(link); | |
}; | |
r.send(null); | |
return false; | |
} | |
document.getElementById('de-encoder').onsubmit = function(e){ | |
e.preventDefault(); | |
var codec = document.getElementById('codec'); | |
var val = codec.value; | |
if(val.indexOf('%')>0){ | |
codec.value = decodeURIComponent(val); | |
}else{ | |
codec.value = encodeURIComponent(val); | |
} | |
return false; | |
} | |
document.getElementById('rand-color').onsubmit = function(e){ | |
e.preventDefault(); | |
var color = Math.floor(Math.random()*16777216).toString(16), | |
title = document.createElement('h1'), | |
first = document.querySelector('#rand-color h1'); | |
title.innerHTML = '#'+color; | |
title.style.backgroundColor = '#'+color; | |
title.style.border = "1px solid black"; | |
title.style.textAlign = "center"; | |
if(first){ | |
this.removeChild(first); | |
} | |
this.appendChild(title); | |
return false; | |
} | |
document.getElementById('commatabs').onsubmit = function(e) { | |
e.preventDefault(); | |
console.log(this); | |
var ct = document.getElementById('commatabber'); | |
var text = ct.value; | |
ct.value = text.replace(/,/g, ' '); | |
return false; | |
} |
html, body { | |
margin:0; | |
padding:0; | |
background:#888; | |
height: 100%; | |
width: 100%; | |
} | |
nav { | |
background:#DDD; | |
text-align:center; | |
box-shadow: 0 0 10px #888888; | |
} | |
nav button { | |
margin:0.5em; | |
padding:1em; | |
border:0px; | |
color:#FFF; | |
text-transform:Capitalize; | |
background: linear-gradient(to bottom, #2C82C9 0%,#0B6EC0 100%); | |
} | |
nav button:hover { | |
background: linear-gradient(to bottom, #0B6EC0 0%,#2C82C9 100%); | |
} | |
nav button:active { | |
box-shadow: 0 0 10px #444; | |
} | |
div > form { | |
background: #2C82C9; | |
height:60%; | |
width:40%; | |
margin: auto; | |
position: absolute; | |
top: 0; left: 0; bottom: 0; right: 0; | |
padding: 1em; | |
text-align:center; | |
box-shadow: 5px 5px 10px -5px #444; | |
} | |
form button { | |
display:block; | |
margin:1em auto; | |
padding:1em; | |
color: #FFF; | |
border:none; | |
background: linear-gradient(to bottom, #2C2C2C 0%, #0B0B0B 100%); | |
} | |
form button:hover { | |
background: linear-gradient(to bottom, #0B0B0B 0%, #2C2C2C 100%); | |
box-shadow: 0 0 10px #888; | |
} | |
form button:active { | |
box-shadow: 0 0 10px #444; | |
} | |
form textarea, form input { | |
width:90%; | |
} | |
textarea { | |
min-height:10em; | |
} | |
div { | |
display:none; | |
margin:0.5em; | |
padding: 1em; | |
} | |
div.on { | |
display:block; | |
} |