@ -0,0 +1,17 @@ | |||||
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<title>icfp 2015 visualizer</title> | |||||
<!-- <link rel="stylesheet" type="text/css" href="style/style.css"> --> | |||||
<link rel="stylesheet/less" type="text/css" href="style/style.less" /> | |||||
<script type="text/javascript" src="scripts/less.min.js"></script> | |||||
<script type="text/javascript" src="scripts/functions.js"></script> | |||||
</head> | |||||
<body> | |||||
<div id="control"><button onclick="updateDimensions()">R</button></div> | |||||
<section id="honeyComb"> | |||||
</section> | |||||
</body> | |||||
</html> |
@ -0,0 +1,58 @@ | |||||
function updateDimensions( dimension ){ | |||||
less.modifyVars({"@sizeWidth":dimension+"px"}); | |||||
} | |||||
function populateHoneycomb( ){ | |||||
honeyCells = jsonExample; | |||||
var height = "innerHeight" in window | |||||
? window.innerHeight | |||||
: document.documentElement.offsetHeight; | |||||
var width = "innerWidth" in window | |||||
? window.innerWidth | |||||
: document.documentElement.offsetWidth; | |||||
var cellWidth = width/(honeyCells.width+0.7); | |||||
updateDimensions( cellWidth ); | |||||
var honeyComb = document.getElementById("honeyComb"); | |||||
for (var i = honeyCells.height - 1; i >= 0; i--) { | |||||
var even = (i%2 == 0) ? "even" : ""; | |||||
var container = document.createElement('div'); | |||||
container.className = "hex-row " + even; | |||||
honeyComb.appendChild(container); | |||||
for (var j = honeyCells.width - 1; j >= 0; j--) { | |||||
var hexCell = document.createElement("div"); | |||||
hexCell.className = "hex"; | |||||
container.appendChild(hexCell); | |||||
var topPart = document.createElement('div'); | |||||
topPart.className = "top"; | |||||
var middlePart = document.createElement('div'); | |||||
middlePart.className = "middle"; | |||||
var bottomPart = document.createElement('div'); | |||||
bottomPart.className = "bottom"; | |||||
hexCell.appendChild(topPart); | |||||
hexCell.appendChild(middlePart); | |||||
hexCell.appendChild(bottomPart); | |||||
}; | |||||
}; | |||||
} | |||||
function setFilled(){ | |||||
honeyCells = jsonExample; | |||||
var hexCells = document.getElementsByClassName("hex"); | |||||
for (var i = honeyCells.filled.length - 1; i >= 0; i--) { | |||||
honeyCell = hexCells[ (honeyCells.filled[i].x * honeyCells.width)+honeyCells.filled[i].y]; | |||||
honeyCell.className += " disabled"; | |||||
}; | |||||
} | |||||
jsonExample = {"height":15,"width":15,"sourceSeeds":[0],"units":[{"members":[{"x":0,"y":0}],"pivot":{"x":0,"y":0}}],"id":1,"filled":[{"x":2,"y":4},{"x":3,"y":4},{"x":4,"y":4},{"x":5,"y":4},{"x":6,"y":4},{"x":11,"y":4},{"x":2,"y":5},{"x":8,"y":5},{"x":11,"y":5},{"x":2,"y":6},{"x":11,"y":6},{"x":2,"y":7},{"x":3,"y":7},{"x":4,"y":7},{"x":8,"y":7},{"x":11,"y":7},{"x":2,"y":8},{"x":9,"y":8},{"x":11,"y":8},{"x":2,"y":9},{"x":8,"y":9},{"x":2,"y":10},{"x":3,"y":10},{"x":4,"y":10},{"x":5,"y":10},{"x":6,"y":10},{"x":9,"y":10},{"x":11,"y":10}],"sourceLength":100}; |
@ -0,0 +1,39 @@ | |||||
html, body { | |||||
margin: 0; | |||||
padding: 0; | |||||
height: 100%; | |||||
width: 100%; } | |||||
body { | |||||
background-color: #333; } | |||||
.hex { | |||||
float: left; | |||||
margin-left: 3px; | |||||
margin-bottom: -26px; } | |||||
.hex .top, .hex.disabled .top { | |||||
width: 0; | |||||
border-bottom: 30.02221px solid #6C6; | |||||
border-left: 52px solid transparent; | |||||
border-right: 52px solid transparent; } | |||||
.hex .middle { | |||||
width: 104px; | |||||
height: 60.04443px; | |||||
background: #6C6; } | |||||
.hex .bottom { | |||||
width: 0; | |||||
border-top: 30.02221px solid #6C6; | |||||
border-left: 52px solid transparent; | |||||
border-right: 52px solid transparent; } | |||||
.hex.disabled .top { | |||||
border-bottom-color: #efefef; } | |||||
.hex.disabled .middle { | |||||
background: #efefef; } | |||||
.hex.disabled .bottom { | |||||
border-top-color: #efefef; } | |||||
.hex-row { | |||||
clear: left; } | |||||
.hex-row.even { | |||||
margin-left: 53px; } | |||||
/*# sourceMappingURL=style.css.map */ |
@ -0,0 +1,7 @@ | |||||
{ | |||||
"version": 3, | |||||
"mappings": "AAiBA,UAAU;EACT,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;;AAEZ,IAAI;EACH,gBAAgB,EAAE,IAAI;;AAEvB,IAAK;EACJ,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,KAAK;EAEpB,6BAAK;IACJ,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,qBAAyB;IACxC,WAAW,EAAE,sBAA+B;IAC5C,YAAY,EAAE,sBAA+B;EAE9C,YAAQ;IACP,KAAK,EAzBK,KAAK;IA0Bf,MAAM,EAxBK,UAAkB;IAyB7B,UAAU,EAAE,IAAI;EAEjB,YAAQ;IACP,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,qBAAwB;IACpC,WAAW,EAAE,sBAA8B;IAC3C,YAAY,EAAE,sBAA8B;EAI5C,kBAAI;IAEH,mBAAmB,EAxCN,OAAO;EA2CrB,qBAAO;IACN,UAAU,EA5CG,OAAO;EA8CrB,qBAAO;IACN,gBAAgB,EA/CH,OAAO;EAkDtB,QAAK;IACJ,KAAK,EAAE,IAAI;IACX,aAAO;MACN,WAAW,EAAE,IAAgB", | |||||
"sources": ["style.scss"], | |||||
"names": [], | |||||
"file": "style.css" | |||||
} |
@ -0,0 +1,66 @@ | |||||
@disabledColor: #efefef; | |||||
@sizeWidth: 100px; | |||||
@border: 1px; | |||||
@sizeHeight: @sizeWidth/sqrt(3); | |||||
html, body{ | |||||
margin: 0; | |||||
padding: 0; | |||||
height: 100%; | |||||
width: 100%; | |||||
} | |||||
body{ | |||||
background-color: #333; | |||||
} | |||||
#control{ | |||||
position: fixed; | |||||
top: 0px; | |||||
right: 0; | |||||
width: 100px; | |||||
height: 100px; | |||||
} | |||||
.hex { | |||||
float: left; | |||||
margin-left: @border; | |||||
margin-bottom: -@sizeWidth/4; | |||||
.top { | |||||
width: 0; | |||||
border-bottom: @sizeHeight/2 solid #6C6; | |||||
border-left: @sizeWidth/2 solid transparent; | |||||
border-right: @sizeWidth/2 solid transparent; | |||||
} | |||||
.middle { | |||||
width: @sizeWidth; | |||||
height: @sizeHeight; | |||||
background: #6C6; | |||||
} | |||||
.bottom { | |||||
width: 0; | |||||
border-top: @sizeHeight/2 solid #6C6; | |||||
border-left: @sizeWidth/2 solid transparent; | |||||
border-right: @sizeWidth/2 solid transparent; | |||||
} | |||||
&.disabled{ | |||||
.top:extend(.top){ | |||||
border-bottom-color: @disabledColor; | |||||
} | |||||
.middle:extend(.middle){ | |||||
background: @disabledColor; | |||||
} | |||||
.bottom:extend(.bottom){ | |||||
border-top-color: @disabledColor; | |||||
} | |||||
} | |||||
&-row{ | |||||
clear: left; | |||||
&.even { | |||||
margin-left: (@sizeWidth/2); | |||||
} | |||||
} | |||||
} | |||||
@ -0,0 +1,72 @@ | |||||
@function sqrt($r) { | |||||
$x0: 1; | |||||
$x1: $x0; | |||||
@for $i from 1 through 10 { | |||||
$x1: $x0 - ($x0 * $x0 - abs($r)) / (2 * $x0); | |||||
$x0: $x1; | |||||
} | |||||
@return $x1; | |||||
} | |||||
$disabledColor: #efefef; | |||||
$sizeWidth: 104px; | |||||
$border: 1px; | |||||
$sizeHeight: $sizeWidth/sqrt(3); | |||||
html, body{ | |||||
margin: 0; | |||||
padding: 0; | |||||
height: 100%; | |||||
width: 100%; | |||||
} | |||||
body{ | |||||
background-color: #333; | |||||
} | |||||
.hex { | |||||
float: left; | |||||
margin-left: 3px; | |||||
margin-bottom: -26px; | |||||
.top { | |||||
width: 0; | |||||
border-bottom: $sizeHeight/2 solid #6C6; | |||||
border-left: $sizeWidth/2 solid transparent; | |||||
border-right: $sizeWidth/2 solid transparent; | |||||
} | |||||
.middle { | |||||
width: $sizeWidth; | |||||
height: $sizeHeight; | |||||
background: #6C6; | |||||
} | |||||
.bottom { | |||||
width: 0; | |||||
border-top: $sizeHeight/2 solid #6C6; | |||||
border-left: $sizeWidth/2 solid transparent; | |||||
border-right: $sizeWidth/2 solid transparent; | |||||
} | |||||
&.disabled{ | |||||
.top{ | |||||
@extend .top; | |||||
border-bottom-color: $disabledColor; | |||||
} | |||||
.middle{ | |||||
background: $disabledColor; | |||||
} | |||||
.bottom{ | |||||
border-top-color: $disabledColor; | |||||
} | |||||
} | |||||
&-row{ | |||||
clear: left; | |||||
&.even { | |||||
margin-left: ($sizeWidth/2)+1; | |||||
} | |||||
} | |||||
} | |||||