-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathshowcase.js
128 lines (99 loc) · 3.58 KB
/
showcase.js
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
var ShowCase = function(l, u, my, canvasContext){
var upperLimit = u;
var lowerLimit = l;
var ctx = canvasContext;
var width = ctx.canvas.width;
var height = ctx.canvas.height;
var valuePerPixel = (u-l)/width;
var calcHeight = function(bars){
var areaPerBarBit = 1/bars.length;
// Get the heighest bar
var mostValuesSoFar = 0;
for(var i = 0; i < bars.length; i++){
var numVals = bars[i].values.length;
if(numVals > mostValuesSoFar) mostValuesSoFar = numVals;
}
var mostValues = mostValuesSoFar;
var heightPerBarBit = height/mostValues;
// Give all of them hieght
for(var i = 0; i < bars.length; i++){
bars[i].height = bars[i].values.length * heightPerBarBit;
}
}
var drawBars = function(bars){
// Clear our canvas
ctx.clearRect(0,0,width,height);
//Set params
ctx.fillStyle = "#000000";
for(var i = 0; i < bars.length; i++){
var y = height - bars[i].height;
var x = bars[i].drawFrom;
var barWidth = bars[i].width;
var barHeight = bars[i].height;
ctx.fillRect(x,y, barWidth, barHeight);
}
}
var graphWithDecreasingBarWitdh = function(values){
if(values.length === 0) {return};
var numRect = values.length;
var rectWidth = width/numRect;
var valueInABar = valuePerPixel * rectWidth;
var bars = [];
for(var i = 0; i < numRect; i++){
var start = l + valueInABar*i;
var stop = start + valueInABar;
var thisBar = new Bar();
thisBar.start = start;
thisBar.stop = stop;
thisBar.width = rectWidth;
thisBar.drawFrom = rectWidth*i;
// How many values are inside the two values?
var a = 0;
var lowestVal;
var highestVal;
var numVals = values.length;
for(;a < values.length; a++){
if(values[a]>start && values[a]<stop){
thisBar.values.push(values[a]);
values.splice(a,1);
a--;
}
}
bars.push(thisBar);
}
calcHeight(bars);
drawBars(bars);
};
var graphWithPixelWidth = function(values){
var barWidth = 1;
var valueInABar = valuePerPixel;
var bars = [];
for(var i = 0; i < width; i++){
var start = l + valueInABar*i;
var stop = start + valueInABar;
var thisBar = new Bar();
thisBar.start = start;
thisBar.stop = stop;
thisBar.width = barWidth;
thisBar.drawFrom = barWidth*i;
for(var a = 0; a < values.length; a++){
if(values[a]>start && values[a]<stop){
thisBar.values.push(values[a]);
values.splice(a,1);
a--;
}
}
bars.push(thisBar);
}
calcHeight(bars);
drawBars(bars)
}
var Bar = function(){
this.values = [];
this.stop;
this.start;
this.drawFrom;
this.height;
}
return {graphWithDecreasingBarWitdh:graphWithDecreasingBarWitdh, graphWithPixelWidth:graphWithPixelWidth};
}