Created
May 5, 2012 19:38
-
-
Save bunkat/2605010 to your computer and use it in GitHub Desktop.
Grid in d3.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* calendarWeekHour Setup a week-hour grid: | |
* 7 Rows (days), 24 Columns (hours) | |
* @param id div id tag starting with # | |
* @param width width of the grid in pixels | |
* @param height height of the grid in pixels | |
* @param square true/false if you want the height to | |
* match the (calculated first) width | |
*/ | |
function calendarWeekHour(id, width, height, square) | |
{ | |
var calData = randomData(width, height, square); | |
console.log(calData); | |
var grid = d3.select(id).append("svg") | |
.attr("width", width) | |
.attr("height", height) | |
.attr("class", "chart"); | |
var row = grid.selectAll(".row") | |
.data(calData) | |
.enter().append("svg:g") | |
.attr("class", "row"); | |
var col = row.selectAll(".cell") | |
.data(function (d) { return d; }) | |
.enter().append("svg:rect") | |
.attr("class", "cell") | |
.attr("x", function(d) { return d.x; }) | |
.attr("y", function(d) { return d.y; }) | |
.attr("width", function(d) { return d.width; }) | |
.attr("height", function(d) { return d.height; }) | |
.on('mouseover', function() { | |
d3.select(this) | |
.style('fill', '#0F0'); | |
}) | |
.on('mouseout', function() { | |
d3.select(this) | |
.style('fill', '#FFF'); | |
}) | |
.on('click', function() { | |
console.log(d3.select(this)); | |
}) | |
.style("fill", '#FFF') | |
.style("stroke", '#555'); | |
} | |
//////////////////////////////////////////////////////////////////////// | |
/** | |
* randomData() returns an array: [ | |
[{id:value, ...}], | |
[{id:value, ...}], | |
[...],..., | |
]; | |
~ [ | |
[hour1, hour2, hour3, ...], | |
[hour1, hour2, hour3, ...] | |
] | |
*/ | |
function randomData(gridWidth, gridHeight, square) | |
{ | |
var data = new Array(); | |
var gridItemWidth = gridWidth / 24; | |
var gridItemHeight = (square) ? gridItemWidth : gridHeight / 7; | |
var startX = gridItemWidth / 2; | |
var startY = gridItemHeight / 2; | |
var stepX = gridItemWidth; | |
var stepY = gridItemHeight; | |
var xpos = startX; | |
var ypos = startY; | |
var newValue = 0; | |
var count = 0; | |
for (var index_a = 0; index_a < 7; index_a++) | |
{ | |
data.push(new Array()); | |
for (var index_b = 0; index_b < 24; index_b++) | |
{ | |
newValue = Math.round(Math.random() * (100 - 1) + 1); | |
data[index_a].push({ | |
time: index_b, | |
value: newValue, | |
width: gridItemWidth, | |
height: gridItemHeight, | |
x: xpos, | |
y: ypos, | |
count: count | |
}); | |
xpos += stepX; | |
count += 1; | |
} | |
xpos = startX; | |
ypos += stepY; | |
} | |
return data; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<title>Grid using d3.js</title> | |
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.v2.js"></script> | |
</head> | |
<body> | |
<div id="chart"></div> | |
<script type="text/javascript" src="grid.js"></script> | |
<script type="text/javascript"> | |
calendarWeekHour('#chart', 900, 400, true); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment