-
Notifications
You must be signed in to change notification settings - Fork 146
Expand file tree
/
Copy pathtable.js
More file actions
79 lines (71 loc) · 2.12 KB
/
table.js
File metadata and controls
79 lines (71 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var keys = d3.keys(dataSet[0]),
mins = {},
maxes = {};
dataSet.forEach(function(item) {
var mean = d3.mean(d3.values(item).slice(3));
var deviation = d3.deviation(d3.values(item).slice(3));
var minmax_key = d3.values(item).slice(0,3).join("");
// console.log(minmax_key);
mins[minmax_key] = mean-deviation;
maxes[minmax_key] = mean+deviation;
});
//console.log(mins);
//console.log(maxes);
var thead = d3.select("#view > thead"),
th = thead.selectAll("th")
.data(keys)
.enter()
.append('th')
.text(function(d){ return d }),
tbody = d3.select("#view > tbody"),
tr = tbody.selectAll("tr")
.data(dataSet)
.enter()
.append('tr')
.selectAll('td')
.data(function (row) {
key = d3.values(row).slice(0,3).join("")
dataArray = d3.entries(row);
dataArray.forEach(function(data) {
data["min"] = mins[key];
data["max"] = maxes[key];
});
// console.log(dataArray);
return dataArray;
})
.enter()
.append('td')
.append('div')
.style({
"background-color": function(d, i){
if(i < 3) return "lightblue";
console.log(d);
if (d.min === 0 && d.max === 0) {
return "lightgrey";
}
return makecolor(d.value, d.min, d.max);
},
})
.text(function(d){
return d.value
});
function makecolor(val, min, max) {
var red = 255,
green = 255;
if(val < min) {
green = 0;
} else if(val < min+((max-min)/2.0)) {
green = Math.round(((val-min)/((max-min)/2.0)) * 255);
} else if(val < max) {
red = Math.round(((max-val)/((max-min)/2.0)) * 255);
} else {
red = 0;
}
return "#" + rgb2hex(red,green,0);
}
function rgb2hex(r,g,b) {
if (g !== undefined)
return Number(0x1000000 + r*0x10000 + g*0x100 + b).toString(16).substring(1);
else
return Number(0x1000000 + r[0]*0x10000 + r[1]*0x100 + r[2]).toString(16).substring(1);
}