nerdamer
Version:
javascript light-weight symbolic math expression evaluator
159 lines (152 loc) • 5.15 kB
HTML
<html>
<head>
<title>Nerdamer Tree Visualizer</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="./nerdamer.core.js"></script>
<style>
/* source: https://codepen.io/philippkuehn/pen/QbrOaN */
body {
font-family: sans-serif;
font-size: 15px;
}
.tree ul {
position: relative;
padding: 1em 0;
white-space: nowrap;
margin: 0 auto;
text-align: center;
}
.tree ul::after {
content: '';
display: table;
clear: both;
}
.tree li {
display: inline-block;
vertical-align: top;
text-align: center;
list-style-type: none;
position: relative;
padding: 1em .5em 0 .5em;
}
.tree li::before, .tree li::after {
content: '';
position: absolute;
top: 0;
right: 50%;
border-top: 1px solid #ABABAB;
width: 50%;
height: 1em;
}
.tree li::after {
right: auto;
left: 50%;
border-left: 1px solid #ABABAB;
}
.tree li:only-child::after, .tree li:only-child::before {
display: none;
}
.tree li:only-child {
padding-top: 0;
}
.tree li:first-child::before, .tree li:last-child::after {
border: 0 none;
}
.tree li:last-child::before {
border-right: 1px solid #ABABAB;
border-radius: 0 5px 0 0;
}
.tree li:first-child::after {
border-radius: 5px 0 0 0;
}
.tree ul ul::before {
content: '';
position: absolute;
top: 0;
left: 50%;
border-left: 1px solid #ABABAB;
width: 0;
height: 1em;
}
.tree li div {
border: 1px solid #ABABAB;
padding: .5em .75em;
text-decoration: none;
display: inline-block;
border-radius: 5px;
color: #333;
position: relative;
top: 1px;
}
.tree li div:hover,
.tree li div:hover + ul li div {
background: #90C4F4;
color: #fff;
border: 1px solid #ABABAB;
}
.tree li div:hover + ul li::after,
.tree li div:hover + ul li::before,
.tree li div:hover + ul::before,
.tree li div:hover + ul ul::before {
border-color: #90C4F4;
}
.tree div span {
display: inline-block;
min-width: 30px;
}
.operator {
background: #ECF7FC;
}
.function {
background: #05346A;
color: #FFF ;
}
#input {
border: 2px solid #ABABAB;
border-radius: 3px;
padding: 5px;
color: #707070;
font-size: 18px;
width: 80%;
margin-bottom: 4px;
}
#generate {
padding: 0;
border: none;
font: inherit;
color: inherit;
cursor: pointer;
background: #CCC;
padding: 7px;
vertical-align: top;
font-size: 18px;
color: #707070;
border-radius: 3px;
margin-left: 2px;
}
</style>
</head>
<body>
<input type="text" id="input" onKeyPress="keypress(event)"><button id="generate" onclick="generate()">Generate</button>
<div id="output"></div>
<script>
var output = document.getElementById('output');
var input = document.getElementById('input');
function keypress(e) {
var code = Number(e.keyCode ? e.keyCode : e.which);
if (code === 13) { //Enter keycode
generate();
}
}
function generate() {
try {
output.innerHTML = nerdamer.htmlTree(input.value);
} catch (e) {
alert(e.message);
}
}
</script>
</body>
</html>