pyk 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/lib/chardinjs.min.js +2 -0
  3. data/app/assets/javascripts/lib/crossfilter.js +1383 -1
  4. data/app/assets/javascripts/lib/{d3.js → d3.v3.js} +0 -0
  5. data/app/assets/javascripts/lib/dc.js +3492 -757
  6. data/app/assets/javascripts/lib/jquery.gridster.js +2 -3621
  7. data/app/assets/javascripts/lib/markermanager.js +2 -980
  8. data/app/assets/javascripts/lib/underscore.js +1276 -0
  9. data/app/assets/javascripts/nvd3/lib/colorbrewer.js +302 -0
  10. data/app/assets/javascripts/nvd3/lib/crossfilter.js +1180 -0
  11. data/app/assets/javascripts/nvd3/lib/crossfilter.min.js +1 -0
  12. data/app/assets/javascripts/nvd3/lib/d3.v2.js +7033 -0
  13. data/app/assets/javascripts/nvd3/lib/d3.v2.min.js +4 -0
  14. data/app/assets/javascripts/nvd3/lib/d3.v3.js +8436 -0
  15. data/app/assets/javascripts/nvd3/lib/fisheye.js +86 -0
  16. data/app/assets/javascripts/nvd3/lib/hive.js +80 -0
  17. data/app/assets/javascripts/nvd3/lib/horizon.js +192 -0
  18. data/app/assets/javascripts/nvd3/lib/sankey.js +292 -0
  19. data/app/assets/javascripts/nvd3/nv.d3.js +14312 -0
  20. data/app/assets/javascripts/nvd3/nv.d3.min.js +6 -0
  21. data/app/assets/javascripts/nvd3/src/core.js +122 -0
  22. data/app/assets/javascripts/nvd3/src/interactiveLayer.js +251 -0
  23. data/app/assets/javascripts/nvd3/src/models/axis.js +405 -0
  24. data/app/assets/javascripts/nvd3/src/models/backup/bullet.js +250 -0
  25. data/app/assets/javascripts/nvd3/src/models/backup/bulletChart.js +349 -0
  26. data/app/assets/javascripts/nvd3/src/models/boilerplate.js +104 -0
  27. data/app/assets/javascripts/nvd3/src/models/bullet.js +385 -0
  28. data/app/assets/javascripts/nvd3/src/models/bulletChart.js +343 -0
  29. data/app/assets/javascripts/nvd3/src/models/cumulativeLineChart.js +782 -0
  30. data/app/assets/javascripts/nvd3/src/models/discreteBar.js +349 -0
  31. data/app/assets/javascripts/nvd3/src/models/discreteBarChart.js +333 -0
  32. data/app/assets/javascripts/nvd3/src/models/distribution.js +148 -0
  33. data/app/assets/javascripts/nvd3/src/models/historicalBar.js +331 -0
  34. data/app/assets/javascripts/nvd3/src/models/historicalBarChart.js +419 -0
  35. data/app/assets/javascripts/nvd3/src/models/indentedTree.js +337 -0
  36. data/app/assets/javascripts/nvd3/src/models/legend.js +270 -0
  37. data/app/assets/javascripts/nvd3/src/models/line.js +284 -0
  38. data/app/assets/javascripts/nvd3/src/models/lineChart.js +465 -0
  39. data/app/assets/javascripts/nvd3/src/models/linePlusBarChart.js +433 -0
  40. data/app/assets/javascripts/nvd3/src/models/linePlusBarWithFocusChart.js +658 -0
  41. data/app/assets/javascripts/nvd3/src/models/lineWithFisheye.js +200 -0
  42. data/app/assets/javascripts/nvd3/src/models/lineWithFisheyeChart.js +297 -0
  43. data/app/assets/javascripts/nvd3/src/models/lineWithFocusChart.js +574 -0
  44. data/app/assets/javascripts/nvd3/src/models/multiBar.js +461 -0
  45. data/app/assets/javascripts/nvd3/src/models/multiBarChart.js +524 -0
  46. data/app/assets/javascripts/nvd3/src/models/multiBarHorizontal.js +424 -0
  47. data/app/assets/javascripts/nvd3/src/models/multiBarHorizontalChart.js +434 -0
  48. data/app/assets/javascripts/nvd3/src/models/multiBarTimeSeries.js +384 -0
  49. data/app/assets/javascripts/nvd3/src/models/multiBarTimeSeriesChart.js +405 -0
  50. data/app/assets/javascripts/nvd3/src/models/multiChart.js +452 -0
  51. data/app/assets/javascripts/nvd3/src/models/ohlcBar.js +380 -0
  52. data/app/assets/javascripts/nvd3/src/models/parallelCoordinates.js +239 -0
  53. data/app/assets/javascripts/nvd3/src/models/pie.js +398 -0
  54. data/app/assets/javascripts/nvd3/src/models/pieChart.js +292 -0
  55. data/app/assets/javascripts/nvd3/src/models/scatter.js +674 -0
  56. data/app/assets/javascripts/nvd3/src/models/scatterChart.js +628 -0
  57. data/app/assets/javascripts/nvd3/src/models/scatterPlusLineChart.js +620 -0
  58. data/app/assets/javascripts/nvd3/src/models/sparkline.js +194 -0
  59. data/app/assets/javascripts/nvd3/src/models/sparklinePlus.js +295 -0
  60. data/app/assets/javascripts/nvd3/src/models/stackedArea.js +368 -0
  61. data/app/assets/javascripts/nvd3/src/models/stackedAreaChart.js +629 -0
  62. data/app/assets/javascripts/nvd3/src/tooltip.js +490 -0
  63. data/app/assets/javascripts/nvd3/src/utils.js +152 -0
  64. data/app/assets/javascripts/pyk.js +1 -0
  65. data/app/assets/stylesheets/lib/chardinjs.css +82 -0
  66. data/app/assets/stylesheets/nvd3/nv.d3.css +769 -0
  67. data/app/assets/stylesheets/pyk.css.scss +1 -0
  68. metadata +61 -2
@@ -0,0 +1,524 @@
1
+
2
+ nv.models.multiBarChart = function() {
3
+ "use strict";
4
+ //============================================================
5
+ // Public Variables with Default Settings
6
+ //------------------------------------------------------------
7
+
8
+ var multibar = nv.models.multiBar()
9
+ , xAxis = nv.models.axis()
10
+ , yAxis = nv.models.axis()
11
+ , legend = nv.models.legend()
12
+ , controls = nv.models.legend()
13
+ ;
14
+
15
+ var margin = {top: 30, right: 20, bottom: 50, left: 60}
16
+ , width = null
17
+ , height = null
18
+ , color = nv.utils.defaultColor()
19
+ , showControls = true
20
+ , showLegend = true
21
+ , showXAxis = true
22
+ , showYAxis = true
23
+ , rightAlignYAxis = false
24
+ , reduceXTicks = true // if false a tick will show for every data point
25
+ , staggerLabels = false
26
+ , rotateLabels = 0
27
+ , tooltips = true
28
+ , tooltip = function(key, x, y, e, graph) {
29
+ return '<h3>' + key + '</h3>' +
30
+ '<p>' + y + ' on ' + x + '</p>'
31
+ }
32
+ , x //can be accessed via chart.xScale()
33
+ , y //can be accessed via chart.yScale()
34
+ , state = { stacked: false }
35
+ , defaultState = null
36
+ , noData = "No Data Available."
37
+ , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
38
+ , controlWidth = function() { return showControls ? 180 : 0 }
39
+ , transitionDuration = 250
40
+ ;
41
+
42
+ multibar
43
+ .stacked(false)
44
+ ;
45
+ xAxis
46
+ .orient('bottom')
47
+ .tickPadding(7)
48
+ .highlightZero(true)
49
+ .showMaxMin(false)
50
+ .tickFormat(function(d) { return d })
51
+ ;
52
+ yAxis
53
+ .orient((rightAlignYAxis) ? 'right' : 'left')
54
+ .tickFormat(d3.format(',.1f'))
55
+ ;
56
+
57
+ controls.updateState(false);
58
+ //============================================================
59
+
60
+
61
+ //============================================================
62
+ // Private Variables
63
+ //------------------------------------------------------------
64
+
65
+ var showTooltip = function(e, offsetElement) {
66
+ var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
67
+ top = e.pos[1] + ( offsetElement.offsetTop || 0),
68
+ x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
69
+ y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
70
+ content = tooltip(e.series.key, x, y, e, chart);
71
+
72
+ nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
73
+ };
74
+
75
+ //============================================================
76
+
77
+
78
+ function chart(selection) {
79
+ selection.each(function(data) {
80
+ var container = d3.select(this),
81
+ that = this;
82
+
83
+ var availableWidth = (width || parseInt(container.style('width')) || 960)
84
+ - margin.left - margin.right,
85
+ availableHeight = (height || parseInt(container.style('height')) || 400)
86
+ - margin.top - margin.bottom;
87
+
88
+ chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
89
+ chart.container = this;
90
+
91
+ //set state.disabled
92
+ state.disabled = data.map(function(d) { return !!d.disabled });
93
+
94
+ if (!defaultState) {
95
+ var key;
96
+ defaultState = {};
97
+ for (key in state) {
98
+ if (state[key] instanceof Array)
99
+ defaultState[key] = state[key].slice(0);
100
+ else
101
+ defaultState[key] = state[key];
102
+ }
103
+ }
104
+ //------------------------------------------------------------
105
+ // Display noData message if there's nothing to show.
106
+
107
+ if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
108
+ var noDataText = container.selectAll('.nv-noData').data([noData]);
109
+
110
+ noDataText.enter().append('text')
111
+ .attr('class', 'nvd3 nv-noData')
112
+ .attr('dy', '-.7em')
113
+ .style('text-anchor', 'middle');
114
+
115
+ noDataText
116
+ .attr('x', margin.left + availableWidth / 2)
117
+ .attr('y', margin.top + availableHeight / 2)
118
+ .text(function(d) { return d });
119
+
120
+ return chart;
121
+ } else {
122
+ container.selectAll('.nv-noData').remove();
123
+ }
124
+
125
+ //------------------------------------------------------------
126
+
127
+
128
+ //------------------------------------------------------------
129
+ // Setup Scales
130
+
131
+ x = multibar.xScale();
132
+ y = multibar.yScale();
133
+
134
+ //------------------------------------------------------------
135
+
136
+
137
+ //------------------------------------------------------------
138
+ // Setup containers and skeleton of chart
139
+
140
+ var wrap = container.selectAll('g.nv-wrap.nv-multiBarWithLegend').data([data]);
141
+ var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarWithLegend').append('g');
142
+ var g = wrap.select('g');
143
+
144
+ gEnter.append('g').attr('class', 'nv-x nv-axis');
145
+ gEnter.append('g').attr('class', 'nv-y nv-axis');
146
+ gEnter.append('g').attr('class', 'nv-barsWrap');
147
+ gEnter.append('g').attr('class', 'nv-legendWrap');
148
+ gEnter.append('g').attr('class', 'nv-controlsWrap');
149
+
150
+ //------------------------------------------------------------
151
+
152
+
153
+ //------------------------------------------------------------
154
+ // Legend
155
+
156
+ if (showLegend) {
157
+ legend.width(availableWidth - controlWidth());
158
+
159
+ if (multibar.barColor())
160
+ data.forEach(function(series,i) {
161
+ series.color = d3.rgb('#ccc').darker(i * 1.5).toString();
162
+ })
163
+
164
+ g.select('.nv-legendWrap')
165
+ .datum(data)
166
+ .call(legend);
167
+
168
+ if ( margin.top != legend.height()) {
169
+ margin.top = legend.height();
170
+ availableHeight = (height || parseInt(container.style('height')) || 400)
171
+ - margin.top - margin.bottom;
172
+ }
173
+
174
+ g.select('.nv-legendWrap')
175
+ .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');
176
+ }
177
+
178
+ //------------------------------------------------------------
179
+
180
+
181
+ //------------------------------------------------------------
182
+ // Controls
183
+
184
+ if (showControls) {
185
+ var controlsData = [
186
+ { key: 'Grouped', disabled: multibar.stacked() },
187
+ { key: 'Stacked', disabled: !multibar.stacked() }
188
+ ];
189
+
190
+ controls.width(controlWidth()).color(['#444', '#444', '#444']);
191
+ g.select('.nv-controlsWrap')
192
+ .datum(controlsData)
193
+ .attr('transform', 'translate(0,' + (-margin.top) +')')
194
+ .call(controls);
195
+ }
196
+
197
+ //------------------------------------------------------------
198
+
199
+
200
+ wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
201
+
202
+ if (rightAlignYAxis) {
203
+ g.select(".nv-y.nv-axis")
204
+ .attr("transform", "translate(" + availableWidth + ",0)");
205
+ }
206
+
207
+ //------------------------------------------------------------
208
+ // Main Chart Component(s)
209
+
210
+ multibar
211
+ .disabled(data.map(function(series) { return series.disabled }))
212
+ .width(availableWidth)
213
+ .height(availableHeight)
214
+ .color(data.map(function(d,i) {
215
+ return d.color || color(d, i);
216
+ }).filter(function(d,i) { return !data[i].disabled }))
217
+
218
+
219
+ var barsWrap = g.select('.nv-barsWrap')
220
+ .datum(data.filter(function(d) { return !d.disabled }))
221
+
222
+ barsWrap.transition().call(multibar);
223
+
224
+ //------------------------------------------------------------
225
+
226
+
227
+ //------------------------------------------------------------
228
+ // Setup Axes
229
+
230
+ if (showXAxis) {
231
+ xAxis
232
+ .scale(x)
233
+ .ticks( availableWidth / 100 )
234
+ .tickSize(-availableHeight, 0);
235
+
236
+ g.select('.nv-x.nv-axis')
237
+ .attr('transform', 'translate(0,' + y.range()[0] + ')');
238
+ g.select('.nv-x.nv-axis').transition()
239
+ .call(xAxis);
240
+
241
+ var xTicks = g.select('.nv-x.nv-axis > g').selectAll('g');
242
+
243
+ xTicks
244
+ .selectAll('line, text')
245
+ .style('opacity', 1)
246
+
247
+ if (staggerLabels) {
248
+ var getTranslate = function(x,y) {
249
+ return "translate(" + x + "," + y + ")";
250
+ };
251
+
252
+ var staggerUp = 5, staggerDown = 17; //pixels to stagger by
253
+ // Issue #140
254
+ xTicks
255
+ .selectAll("text")
256
+ .attr('transform', function(d,i,j) {
257
+ return getTranslate(0, (j % 2 == 0 ? staggerUp : staggerDown));
258
+ });
259
+
260
+ var totalInBetweenTicks = d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;
261
+ g.selectAll(".nv-x.nv-axis .nv-axisMaxMin text")
262
+ .attr("transform", function(d,i) {
263
+ return getTranslate(0, (i === 0 || totalInBetweenTicks % 2 !== 0) ? staggerDown : staggerUp);
264
+ });
265
+ }
266
+
267
+ if (reduceXTicks)
268
+ xTicks
269
+ .filter(function(d,i) {
270
+ return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
271
+ })
272
+ .selectAll('text, line')
273
+ .style('opacity', 0);
274
+
275
+ if(rotateLabels)
276
+ xTicks
277
+ .selectAll('.tick text')
278
+ .attr('transform', 'rotate(' + rotateLabels + ' 0,0)')
279
+ .style('text-anchor', rotateLabels > 0 ? 'start' : 'end');
280
+
281
+ g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')
282
+ .style('opacity', 1);
283
+ }
284
+
285
+
286
+ if (showYAxis) {
287
+ yAxis
288
+ .scale(y)
289
+ .ticks( availableHeight / 36 )
290
+ .tickSize( -availableWidth, 0);
291
+
292
+ g.select('.nv-y.nv-axis').transition()
293
+ .call(yAxis);
294
+ }
295
+
296
+
297
+ //------------------------------------------------------------
298
+
299
+
300
+
301
+ //============================================================
302
+ // Event Handling/Dispatching (in chart's scope)
303
+ //------------------------------------------------------------
304
+
305
+ legend.dispatch.on('stateChange', function(newState) {
306
+ state = newState;
307
+ dispatch.stateChange(state);
308
+ chart.update();
309
+ });
310
+
311
+ controls.dispatch.on('legendClick', function(d,i) {
312
+ if (!d.disabled) return;
313
+ controlsData = controlsData.map(function(s) {
314
+ s.disabled = true;
315
+ return s;
316
+ });
317
+ d.disabled = false;
318
+
319
+ switch (d.key) {
320
+ case 'Grouped':
321
+ multibar.stacked(false);
322
+ break;
323
+ case 'Stacked':
324
+ multibar.stacked(true);
325
+ break;
326
+ }
327
+
328
+ state.stacked = multibar.stacked();
329
+ dispatch.stateChange(state);
330
+
331
+ chart.update();
332
+ });
333
+
334
+ dispatch.on('tooltipShow', function(e) {
335
+ if (tooltips) showTooltip(e, that.parentNode)
336
+ });
337
+
338
+ // Update chart from a state object passed to event handler
339
+ dispatch.on('changeState', function(e) {
340
+
341
+ if (typeof e.disabled !== 'undefined') {
342
+ data.forEach(function(series,i) {
343
+ series.disabled = e.disabled[i];
344
+ });
345
+
346
+ state.disabled = e.disabled;
347
+ }
348
+
349
+ if (typeof e.stacked !== 'undefined') {
350
+ multibar.stacked(e.stacked);
351
+ state.stacked = e.stacked;
352
+ }
353
+
354
+ chart.update();
355
+ });
356
+
357
+ //============================================================
358
+
359
+
360
+ });
361
+
362
+ return chart;
363
+ }
364
+
365
+
366
+ //============================================================
367
+ // Event Handling/Dispatching (out of chart's scope)
368
+ //------------------------------------------------------------
369
+
370
+ multibar.dispatch.on('elementMouseover.tooltip', function(e) {
371
+ e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
372
+ dispatch.tooltipShow(e);
373
+ });
374
+
375
+ multibar.dispatch.on('elementMouseout.tooltip', function(e) {
376
+ dispatch.tooltipHide(e);
377
+ });
378
+ dispatch.on('tooltipHide', function() {
379
+ if (tooltips) nv.tooltip.cleanup();
380
+ });
381
+
382
+ //============================================================
383
+
384
+
385
+ //============================================================
386
+ // Expose Public Variables
387
+ //------------------------------------------------------------
388
+
389
+ // expose chart's sub-components
390
+ chart.dispatch = dispatch;
391
+ chart.multibar = multibar;
392
+ chart.legend = legend;
393
+ chart.xAxis = xAxis;
394
+ chart.yAxis = yAxis;
395
+
396
+ d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'clipEdge',
397
+ 'id', 'stacked', 'stackOffset', 'delay', 'barColor','groupSpacing');
398
+
399
+ chart.options = nv.utils.optionsFunc.bind(chart);
400
+
401
+ chart.margin = function(_) {
402
+ if (!arguments.length) return margin;
403
+ margin.top = typeof _.top != 'undefined' ? _.top : margin.top;
404
+ margin.right = typeof _.right != 'undefined' ? _.right : margin.right;
405
+ margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
406
+ margin.left = typeof _.left != 'undefined' ? _.left : margin.left;
407
+ return chart;
408
+ };
409
+
410
+ chart.width = function(_) {
411
+ if (!arguments.length) return width;
412
+ width = _;
413
+ return chart;
414
+ };
415
+
416
+ chart.height = function(_) {
417
+ if (!arguments.length) return height;
418
+ height = _;
419
+ return chart;
420
+ };
421
+
422
+ chart.color = function(_) {
423
+ if (!arguments.length) return color;
424
+ color = nv.utils.getColor(_);
425
+ legend.color(color);
426
+ return chart;
427
+ };
428
+
429
+ chart.showControls = function(_) {
430
+ if (!arguments.length) return showControls;
431
+ showControls = _;
432
+ return chart;
433
+ };
434
+
435
+ chart.showLegend = function(_) {
436
+ if (!arguments.length) return showLegend;
437
+ showLegend = _;
438
+ return chart;
439
+ };
440
+
441
+ chart.showXAxis = function(_) {
442
+ if (!arguments.length) return showXAxis;
443
+ showXAxis = _;
444
+ return chart;
445
+ };
446
+
447
+ chart.showYAxis = function(_) {
448
+ if (!arguments.length) return showYAxis;
449
+ showYAxis = _;
450
+ return chart;
451
+ };
452
+
453
+ chart.rightAlignYAxis = function(_) {
454
+ if(!arguments.length) return rightAlignYAxis;
455
+ rightAlignYAxis = _;
456
+ yAxis.orient( (_) ? 'right' : 'left');
457
+ return chart;
458
+ };
459
+
460
+ chart.reduceXTicks= function(_) {
461
+ if (!arguments.length) return reduceXTicks;
462
+ reduceXTicks = _;
463
+ return chart;
464
+ };
465
+
466
+ chart.rotateLabels = function(_) {
467
+ if (!arguments.length) return rotateLabels;
468
+ rotateLabels = _;
469
+ return chart;
470
+ }
471
+
472
+ chart.staggerLabels = function(_) {
473
+ if (!arguments.length) return staggerLabels;
474
+ staggerLabels = _;
475
+ return chart;
476
+ };
477
+
478
+ chart.tooltip = function(_) {
479
+ if (!arguments.length) return tooltip;
480
+ tooltip = _;
481
+ return chart;
482
+ };
483
+
484
+ chart.tooltips = function(_) {
485
+ if (!arguments.length) return tooltips;
486
+ tooltips = _;
487
+ return chart;
488
+ };
489
+
490
+ chart.tooltipContent = function(_) {
491
+ if (!arguments.length) return tooltip;
492
+ tooltip = _;
493
+ return chart;
494
+ };
495
+
496
+ chart.state = function(_) {
497
+ if (!arguments.length) return state;
498
+ state = _;
499
+ return chart;
500
+ };
501
+
502
+ chart.defaultState = function(_) {
503
+ if (!arguments.length) return defaultState;
504
+ defaultState = _;
505
+ return chart;
506
+ };
507
+
508
+ chart.noData = function(_) {
509
+ if (!arguments.length) return noData;
510
+ noData = _;
511
+ return chart;
512
+ };
513
+
514
+ chart.transitionDuration = function(_) {
515
+ if (!arguments.length) return transitionDuration;
516
+ transitionDuration = _;
517
+ return chart;
518
+ };
519
+
520
+ //============================================================
521
+
522
+
523
+ return chart;
524
+ }