omf_web 1.0.0 → 1.2.0

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 (90) hide show
  1. data/bin/omf_web_server +18 -0
  2. data/example/bridge/README.md +7 -0
  3. data/example/bridge/data_sources/sensor-sqlite.rb +15 -15
  4. data/example/bridge/htdocs/graph/js/bridge.js +35 -45
  5. data/example/bridge/htdocs/graph/js/event_line_chart.js +20 -18
  6. data/example/bridge/htdocs/graph/js/event_table.js +26 -28
  7. data/example/bridge/viz_server.rb +5 -9
  8. data/example/demo/demo_viz_server.rb +2 -2
  9. data/example/demo/widgets/linked_graphs_tab.yaml +9 -32
  10. data/example/openflow-gec15/code_tab.yaml +7 -12
  11. data/example/openflow-gec15/dashboard_tab.yaml +11 -12
  12. data/example/openflow-gec15/exp_source.rb +26 -26
  13. data/example/openflow-gec15/of_viz_server.rb +7 -7
  14. data/example/simple/simple.yaml +2 -1
  15. data/example/simple/simple_dynamic.yaml +1 -1
  16. data/example/web_rtc/web_rtc.yaml +54 -0
  17. data/example/web_rtc/webrtc-exp_1381786573.sq3 +0 -0
  18. data/lib/omf-web/config.ru +1 -1
  19. data/lib/omf-web/content/content_proxy.rb +2 -2
  20. data/lib/omf-web/content/file_repository.rb +11 -53
  21. data/lib/omf-web/content/git_repository.rb +1 -1
  22. data/lib/omf-web/content/irods_repository.rb +1 -1
  23. data/lib/omf-web/content/repository.rb +5 -3
  24. data/lib/omf-web/content/static_repository.rb +25 -11
  25. data/lib/omf-web/data_source_proxy.rb +3 -3
  26. data/lib/omf-web/rack/content_handler.rb +2 -2
  27. data/lib/omf-web/rack/session_authenticator.rb +3 -3
  28. data/lib/omf-web/rack/tab_mapper.rb +2 -2
  29. data/lib/omf-web/rack/update_handler.rb +2 -2
  30. data/lib/omf-web/rack/websocket_handler.rb +3 -3
  31. data/lib/omf-web/rack/widget_mapper.rb +2 -2
  32. data/lib/omf-web/session_store.rb +2 -2
  33. data/lib/omf-web/theme/abstract_page.rb +15 -24
  34. data/lib/omf-web/theme/bright/code_renderer.rb +24 -30
  35. data/lib/omf-web/theme/bright/data_renderer.rb +7 -5
  36. data/lib/omf-web/theme/bright/page.rb +2 -1
  37. data/lib/omf-web/theme/bright/widget_chrome.rb +16 -14
  38. data/lib/omf-web/theme.rb +1 -1
  39. data/lib/omf-web/thin/logging.rb +18 -13
  40. data/lib/omf-web/thin/runner.rb +2 -2
  41. data/lib/omf-web/thin/server.rb +105 -27
  42. data/lib/omf-web/version.rb +1 -1
  43. data/lib/omf-web/widget/abstract_widget.rb +3 -3
  44. data/lib/omf-web/widget/data_widget.rb +1 -0
  45. data/lib/omf-web/widget/text/maruku.rb +1 -1
  46. data/lib/omf-web/widget.rb +22 -22
  47. data/lib/omf_web.rb +1 -1
  48. data/omf_web.gemspec +18 -15
  49. data/share/htdocs/graph/js/abstract_chart.js +69 -68
  50. data/share/htdocs/graph/js/abstract_nv_chart.js +35 -33
  51. data/share/htdocs/graph/js/abstract_widget.js +61 -62
  52. data/share/htdocs/graph/js/axis.js +30 -25
  53. data/share/htdocs/graph/js/barchart_brush.js +23 -21
  54. data/share/htdocs/graph/js/code_mirror.js +35 -33
  55. data/share/htdocs/graph/js/discrete_bar_chart.js +27 -30
  56. data/share/htdocs/graph/js/histogram2.js +37 -47
  57. data/share/htdocs/graph/js/line_chart3.js +36 -30
  58. data/share/htdocs/graph/js/line_chart_with_focus.js +10 -9
  59. data/share/htdocs/graph/js/multi_barchart.js +33 -30
  60. data/share/htdocs/graph/js/network2.js +98 -97
  61. data/share/htdocs/graph/js/pie_chart2.js +25 -23
  62. data/share/htdocs/graph/js/scatter_plot.js +38 -36
  63. data/share/htdocs/graph/js/table2.js +60 -54
  64. data/share/htdocs/js/app.js +43 -0
  65. data/share/htdocs/js/{data_source2.js → data_source3.js} +44 -73
  66. data/share/htdocs/js/data_source_repo.js +42 -0
  67. data/share/htdocs/require/nv_d3.js +2 -0
  68. data/share/htdocs/theme/abstract/abstract.js +4 -4
  69. data/share/htdocs/vendor/VERSION_MAP.yaml +2 -0
  70. data/share/htdocs/vendor/require-2.1.8/require.js +2053 -0
  71. data/share/htdocs/vendor/require-2.1.8/require.min.js +36 -0
  72. data/share/htdocs/vendor/require-css-0.0.7/.gitignore +1 -0
  73. data/share/htdocs/vendor/require-css-0.0.7/LICENSE +10 -0
  74. data/share/htdocs/vendor/require-css-0.0.7/README.md +231 -0
  75. data/share/htdocs/vendor/require-css-0.0.7/bower.json +5 -0
  76. data/share/htdocs/vendor/require-css-0.0.7/css-builder.js +251 -0
  77. data/share/htdocs/vendor/require-css-0.0.7/css.js +436 -0
  78. data/share/htdocs/vendor/require-css-0.0.7/normalize.js +138 -0
  79. data/share/htdocs/vendor/require-css-0.0.7/package.json +5 -0
  80. data/share/htdocs/vendor/spin/jquery.spin.js +6 -4
  81. metadata +100 -74
  82. checksums.yaml +0 -7
  83. data/bin/omf_web_demo +0 -3
  84. data/bin/omf_web_demo.sh +0 -7
  85. data/bin/omf_web_server.rb +0 -157
  86. data/lib/omf_common/lobject.rb +0 -187
  87. data/lib/omf_common/log4r_outputter.rb +0 -69
  88. data/sample.sq3 +0 -0
  89. data/share/htdocs/js/data_source.js +0 -173
  90. data/share/htdocs/js/require3.js +0 -292
@@ -1,16 +1,12 @@
1
- // L.provide('OML.discrete_bar_chart', ["graph/abstract_chart", "#OML.abstract_chart", "graph/axis", "#OML.axis", "graph.css",
2
- // ["/resource/vendor/d3/d3.js",
3
- // "/resource/vendor/nv_d3/js/nv.d3.js",
4
- // "/resource/vendor/nv_d3/css/nv.d3.css"
5
- // ]], function () {
6
- L.provide('OML.discrete_bar_chart', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_chart"], function () {
7
1
 
8
- OML.discrete_bar_chart = OML.abstract_nv_chart.extend({
2
+ define(["graph/abstract_nv_chart"], function (abstract_nv_chart) {
3
+
4
+ var discrete_bar_chart = abstract_nv_chart.extend({
9
5
  decl_properties: [
10
- ['label', 'key', {property: 'label'}],
11
- ['value', 'key', {property: 'value'}],
6
+ ['label', 'key', {property: 'label'}],
7
+ ['value', 'key', {property: 'value'}],
12
8
  ],
13
-
9
+
14
10
  defaults: function() {
15
11
  return this.deep_defaults({
16
12
  rotate_labels: -45,
@@ -18,61 +14,62 @@ L.provide('OML.discrete_bar_chart', ["graph/js/abstract_nv_chart", "#OML.abstrac
18
14
  //.staggerLabels(historicalBarChart[0].values.length > 8)
19
15
  tooltips: true,
20
16
  show_values: true,
21
-
22
17
  margin: {
23
- top: 20, right: 0, bottom: 50, left: 80
24
- }
25
- }, OML.discrete_bar_chart.__super__.defaults.call(this));
18
+ top: 20, right: 0, bottom: 50, left: 80
19
+ }
20
+ }, discrete_bar_chart.__super__.defaults.call(this));
26
21
  },
27
22
 
28
23
  _create_model: function() {
29
- return nv.models.discreteBarChart();
24
+ return nv.models.discreteBarChart();
30
25
  },
31
-
26
+
32
27
  _configure_mapping: function(m, chart) {
33
28
  var label_f = m.label;
34
29
  var value_f = m.value;
35
30
  chart.x(function(d) {
36
- var v = label_f(d);
31
+ var v = label_f(d);
37
32
  return v;
38
- })
33
+ });
39
34
  chart.y(function(d) {
40
35
  var v = value_f(d);
41
36
  return v;
42
- })
37
+ });
43
38
  },
44
-
39
+
45
40
  _configure_options: function(opts, chart) {
46
- OML.discrete_bar_chart.__super__._configure_options.call(this, opts, chart);
41
+ discrete_bar_chart.__super__._configure_options.call(this, opts, chart);
47
42
  chart
48
- .rotateLabels(opts.rotate_labels)
43
+ //.rotateLabels(opts.rotate_labels)
49
44
  .staggerLabels(opts.stagger_labels)
50
45
  .tooltips(opts.tooltips)
51
46
  .showValues(opts.show_values)
52
47
  .margin(opts.margin)
53
48
  ;
54
- this._configure_all_axis(opts, chart)
49
+ this._configure_all_axis(opts, chart);
55
50
  },
56
-
51
+
57
52
  _configure_all_axis: function(opts, chart) {
58
53
  var oaxis = opts.axis || {};
59
54
  var a_defaults = this.axis_defaults;
60
-
55
+
61
56
  // var xao = _.defaults(oaxis.x || {}, a_defaults);
62
57
  // this._configure_axis('x', chart.xAxis, xao);
63
58
  var yao = _.defaults(oaxis.y || {}, a_defaults);
64
59
  this._configure_axis('y', chart.yAxis, yao);
65
60
  },
66
-
61
+
67
62
  _datum: function(data, chart) {
68
63
  return [{
69
64
  key: "???",
70
65
  values: data
71
66
  }];
72
- }
73
-
74
- })
75
- })
67
+ }
68
+
69
+ });
70
+
71
+ return discrete_bar_chart;
72
+ });
76
73
 
77
74
  /*
78
75
  Local Variables:
@@ -1,84 +1,72 @@
1
- L.provide('OML.histogram2', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_chart"], function () {
1
+ define(["graph/abstract_nv_chart"], function (abstract_nv_chart) {
2
2
 
3
- OML.histogram2 = OML.abstract_nv_chart.extend({
3
+ var histogram2 = abstract_nv_chart.extend({
4
4
  decl_properties: [
5
- ['value', 'key', {property: 'value'}],
6
- ['group_by', 'key', {property: 'id', optional: true}],
5
+ ['value', 'key', {property: 'value'}],
6
+ ['group_by', 'key', {property: 'id', optional: true}],
7
7
  ['fill_color', 'color', 'category10()'],
8
8
  ],
9
-
9
+
10
10
  defaults: function() {
11
11
  return this.deep_defaults({
12
- bins: null, // number of bins to use. The default bin function will
13
- // divide the values into uniform bins using Sturges' formula.
14
- rotate_labels: -45,
12
+ bins: null, // number of bins to use. The default bin function will
13
+ // divide the values into uniform bins using Sturges' formula.
14
+ //rotate_labels: -45,
15
+ rotate_labels: 0,
15
16
  tooltips: true,
16
17
  show_legend: true,
17
- show_controls: true,
18
+ show_controls: true,
18
19
  // reduceXTicks
19
20
  // showControls
20
- // stacked',
21
+ // stacked',
21
22
  // delay
22
-
23
+
23
24
  margin: {
24
- top: 20, right: 0, bottom: 50, left: 80
25
- }
26
- }, OML.histogram2.__super__.defaults.call(this));
25
+ top: 20, right: 0, bottom: 50, left: 80
26
+ }
27
+ }, histogram2.__super__.defaults.call(this));
27
28
  },
28
29
 
29
30
  _create_model: function() {
30
- return nv.models.multiBarChart();
31
+ return nv.models.multiBarChart();
31
32
  },
32
-
33
- // _configure_mapping: function(m, chart) {
34
- // // var x_index = m.x_axis;
35
- // // var y_index = m.y_axis;
36
- // // chart.x(function(d) {
37
- // // var v = x_index(d);
38
- // // return v;
39
- // // })
40
- // // chart.y(function(d) {
41
- // // var v = y_index(d);
42
- // // return v;
43
- // // })
44
- // },
45
-
33
+
46
34
  _configure_options: function(opts, chart) {
47
- OML.histogram2.__super__._configure_options.call(this, opts, chart);
35
+ histogram2.__super__._configure_options.call(this, opts, chart);
48
36
  chart
49
37
  .rotateLabels(opts.rotate_labels)
50
38
  .tooltips(opts.tooltips)
51
39
  .showLegend(opts.show_legend)
52
- .showControls(opts.show_control)
40
+ .showControls(opts.show_control)
53
41
  .margin(opts.margin)
54
42
  ;
55
- this._configure_xy_axis(opts, chart)
43
+ this._configure_xy_axis(opts, chart);
56
44
  },
57
-
45
+
58
46
  _datum: function(data, chart) {
59
47
  var o = this.opts;
60
48
  var m = this.mapping;
61
49
 
62
- // We first calculate a histogram across all data rows to establish
50
+ // We first calculate a histogram across all data rows to establish
63
51
  // the bins. We then fix the bins, separate the data accoording to
64
52
  // the 'group-by' property and then calculate individual histograms
65
53
  // for each group with fixed bins.
66
54
  //
67
- var hdata;
55
+ var hdata;
68
56
  var histogram = d3.layout.histogram();
69
57
  histogram.value(m.value);
70
58
  var bins = o.bins ? histogram.bins(o.bins) : histogram.bins();
71
59
  // To calculate density, we would need to calibrate that across
72
60
  // all groups.
73
- //if (o.density != 'undefined"') histogram.frequency(! o.density);
61
+ if (o.density) histogram.frequency(false);
74
62
  hdata = histogram(data);
75
-
63
+
76
64
  var group_by = m.group_by;
77
65
  var datum;
78
66
  if (group_by != null) {
79
67
  var bins = hdata.map(function(b) {
80
68
  return b.x + b.dx;
81
- })
69
+ });
82
70
  bins.splice(0, 0, hdata[0].x);
83
71
  histogram.bins(bins);
84
72
  var groups = this.group_by(data, group_by);
@@ -86,10 +74,10 @@ L.provide('OML.histogram2', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_cha
86
74
  return {
87
75
  key: g.length > 0 ? group_by(g[0]) : '???',
88
76
  values: histogram(g).map(function(b) {
89
- return {x: (b.x + 0.5 * b.dx), y: b.y}
77
+ return {x: (b.x + 0.5 * b.dx), y: b.y};
90
78
  })
91
- }
92
- })
79
+ };
80
+ });
93
81
  } else {
94
82
  datum = [{
95
83
  key: '???',
@@ -98,22 +86,24 @@ L.provide('OML.histogram2', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_cha
98
86
  })
99
87
  }];
100
88
  };
101
-
89
+
102
90
  if (m.fill_color) {
103
91
  datum = datum.map(function(d) {
104
92
  d.color = m.fill_color(d.key);
105
93
  return d;
106
- })
94
+ });
107
95
  }
108
-
96
+
109
97
  if (o.show_legend) chart.showLegend(datum.length > 1);
110
98
  if (o.show_controls) chart.showControls(datum.length > 1);
111
99
 
112
100
  return datum;
113
101
  },
114
-
115
- })
116
- })
102
+
103
+ });
104
+
105
+ return histogram2;
106
+ });
117
107
 
118
108
  /*
119
109
  Local Variables:
@@ -1,42 +1,48 @@
1
- // L.provide('OML.line_chart3', ["graph/abstract_chart", "#OML.abstract_chart", "graph/axis", "#OML.axis", "graph.css",
2
- // ["/resource/vendor/d3/d3.js",
3
- // "/resource/vendor/nv_d3/js/nv.d3.js",
4
- // "/resource/vendor/nv_d3/js/models/line.js",
5
- // "/resource/vendor/nv_d3/js/models/lineChart.js",
6
- // "/resource/vendor/nv_d3/css/nv.d3.css"
7
- // ]], function () {
8
- L.provide('OML.line_chart3', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_chart"], function () {
9
1
 
10
- OML.line_chart3 = OML.abstract_nv_chart.extend({
2
+ require.config({
3
+ shim: {
4
+ "vendor/nv_d3/js/nv.d3": ["vendor/d3/d3", "css!vendor/nv_d3/css/nv.d3"],
5
+ "vendor/nv_d3/js/models/line": ["vendor/nv_d3/js/nv.d3"],
6
+ "vendor/nv_d3/js/models/lineChart": ["vendor/nv_d3/js/models/line"],
7
+ }
8
+ });
9
+
10
+ define(["graph/abstract_nv_chart",
11
+ "graph/abstract_chart", "graph/axis",
12
+ "css!graph_css/graph",
13
+ "vendor/nv_d3/js/models/lineChart"
14
+ ], function (abstract_nv_chart) {
15
+
16
+ var line_chart3 = abstract_nv_chart.extend({
11
17
  decl_properties: [
12
- ['x_axis', 'key', {property: 'x'}],
13
- ['y_axis', 'key', {property: 'y'}],
14
- ['group_by', 'key', {property: 'id', optional: true}],
15
- ['stroke_width', 'int', 2],
18
+ ['x_axis', 'key', {property: 'x'}],
19
+ ['y_axis', 'key', {property: 'y'}],
20
+ ['group_by', 'key', {property: 'id', optional: true}],
21
+ ['stroke_width', 'int', 2],
16
22
  ['stroke_color', 'color', 'category10()'],
17
23
  ['stroke_fill', 'color', 'blue']
18
24
  ],
19
-
20
-
25
+
26
+
21
27
  _create_model: function() {
22
28
  return nv.models.lineChart();
23
29
  },
24
-
30
+
25
31
  _configure_mapping: function(m, chart) {
26
32
  var x_index = m.x_axis;
27
33
  var y_index = m.y_axis;
28
34
  chart.x(function(d) {
29
- var v = x_index(d);
35
+ var v = x_index(d);
30
36
  return v;
31
- })
37
+ });
32
38
  chart.y(function(d) {
33
39
  var v = y_index(d);
34
40
  return v;
35
- })
41
+ });
36
42
  },
37
-
43
+
38
44
  _configure_options: function(opts, chart) {
39
- OML.line_chart3.__super__._configure_options.call(this, opts, chart);
45
+ line_chart3.__super__._configure_options.call(this, opts, chart);
40
46
  // chart
41
47
  // .rotateLabels(opts.rotate_labels)
42
48
  // .staggerLabels(opts.stagger_labels)
@@ -44,16 +50,16 @@ L.provide('OML.line_chart3', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_ch
44
50
  // .showValues(opts.show_values)
45
51
  // .margin(opts.margin)
46
52
  // ;
47
-
53
+
48
54
  this.opts.transition_duration = 0; // force no smooth transition
49
55
  this._configure_xy_axis(opts, chart)
50
56
  },
51
-
57
+
52
58
  _datum: function(data, chart) {
53
59
  var self = this;
54
60
  var m = this.mapping;
55
61
  var o = this.opts;
56
-
62
+
57
63
  var group_by = m.group_by;
58
64
  var data;
59
65
  if (group_by != null) {
@@ -62,13 +68,13 @@ L.provide('OML.line_chart3', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_ch
62
68
  data = [data];
63
69
  };
64
70
  chart.showLegend(data.length > 1);
65
-
71
+
66
72
  return data.map(function(rows, i) {
67
73
  var name = m.group_by != null ? m.group_by(rows[0]) : 'unknown';
68
74
  var line = {
69
75
  values: rows,
70
76
  key: name,
71
- }
77
+ };
72
78
  if (o.area) line.area = o.area;
73
79
  if (m.stroke_color) {
74
80
  line.color = m.stroke_color(name);
@@ -83,10 +89,10 @@ L.provide('OML.line_chart3', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_ch
83
89
  return line;
84
90
  });
85
91
  },
86
-
87
-
88
- })
89
- })
92
+ });
93
+
94
+ return line_chart3;
95
+ });
90
96
 
91
97
  /*
92
98
  Local Variables:
@@ -1,30 +1,31 @@
1
- L.provide('OML.line_chart_with_focus', ["graph/js/line_chart3", "#OML.line_chart3"], function () {
1
+ define(["graph/line_chart3"], function (line_chart3) {
2
+
3
+ return line_chart3.extend({
2
4
 
3
- OML.line_chart_with_focus = OML.line_chart3.extend({
4
-
5
5
  _create_model: function() {
6
6
  return nv.models.lineWithFocusChart();
7
7
  },
8
-
8
+
9
9
  _configure_xy_axis: function(opts, chart) {
10
10
  var oaxis = opts.axis || {};
11
11
  var a_defaults = this.axis_defaults;
12
-
12
+
13
13
  var xao = _.defaults(oaxis.x || {}, a_defaults);
14
14
  xao['legend'] = null;
15
15
  this._configure_axis('x', chart.xAxis, xao);
16
16
  var xao2 = _.defaults(oaxis.x2 || {}, a_defaults);
17
17
  this._configure_axis('x2', chart.x2Axis, xao2);
18
-
18
+
19
19
  var yao = _.defaults(oaxis.y || {}, a_defaults);
20
20
  this._configure_axis('y', chart.yAxis, yao);
21
21
  var yao2 = _.defaults(oaxis.y2 || {}, a_defaults);
22
22
  yao2['legend'] = null;
23
23
  this._configure_axis('y2', chart.y2Axis, yao2);
24
24
  },
25
-
26
- })
27
- })
25
+
26
+ });
27
+
28
+ });
28
29
 
29
30
  /*
30
31
  Local Variables:
@@ -1,61 +1,62 @@
1
- L.provide('OML.multi_barchart', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_chart"], function () {
1
+ define(["graph/abstract_nv_chart"], function (abstract_nv_chart) {
2
+
3
+ var multi_barchart = abstract_nv_chart.extend({
2
4
 
3
- OML.multi_barchart = OML.abstract_nv_chart.extend({
4
5
  decl_properties: [
5
- ['label', 'key', {property: 'label'}],
6
- ['value', 'key', {property: 'value'}],
7
- ['group_by', 'key', {property: 'id', optional: true}],
6
+ ['label', 'key', {property: 'label'}],
7
+ ['value', 'key', {property: 'value'}],
8
+ ['group_by', 'key', {property: 'id', optional: true}],
8
9
  ['fill_color', 'color', 'category10()'],
9
10
  ],
10
-
11
+
11
12
  defaults: function() {
12
13
  return this.deep_defaults({
13
- bins: null, // number of bins to use. The default bin function will
14
- // divide the values into uniform bins using Sturges' formula.
14
+ bins: null, // number of bins to use. The default bin function will
15
+ // divide the values into uniform bins using Sturges' formula.
15
16
  rotate_labels: -45,
16
17
  tooltips: true,
17
18
  show_legend: true,
18
- show_controls: true,
19
+ show_controls: true,
19
20
  // reduceXTicks
20
21
  // showControls
21
- // stacked',
22
+ // stacked',
22
23
  // delay
23
-
24
+
24
25
  margin: {
25
- top: 20, right: 0, bottom: 50, left: 80
26
- }
27
- }, OML.multi_barchart.__super__.defaults.call(this));
26
+ top: 20, right: 0, bottom: 50, left: 80
27
+ }
28
+ }, multi_barchart.__super__.defaults.call(this));
28
29
  },
29
30
 
30
31
  _create_model: function() {
31
- return nv.models.multiBarChart();
32
+ return nv.models.multiBarChart();
32
33
  },
33
-
34
+
34
35
  _configure_mapping: function(m, chart) {
35
36
  var label_f = m.label;
36
37
  var value_f = m.value;
37
38
  chart.x(function(d) {
38
- var v = label_f(d);
39
+ var v = label_f(d);
39
40
  return v;
40
- })
41
+ });
41
42
  chart.y(function(d) {
42
43
  var v = value_f(d);
43
44
  return v;
44
- })
45
+ });
45
46
  },
46
-
47
+
47
48
  _configure_options: function(opts, chart) {
48
- OML.multi_barchart.__super__._configure_options.call(this, opts, chart);
49
+ multi_barchart.__super__._configure_options.call(this, opts, chart);
49
50
  chart
50
51
  .rotateLabels(opts.rotate_labels)
51
52
  .tooltips(opts.tooltips)
52
53
  .showLegend(opts.show_legend)
53
- .showControls(opts.show_control)
54
+ .showControls(opts.show_control)
54
55
  .margin(opts.margin)
55
56
  ;
56
- this._configure_xy_axis(opts, chart)
57
+ this._configure_xy_axis(opts, chart);
57
58
  },
58
-
59
+
59
60
  _datum: function(data, chart) {
60
61
  var o = this.opts;
61
62
  var m = this.mapping;
@@ -67,23 +68,25 @@ L.provide('OML.multi_barchart', ["graph/js/abstract_nv_chart", "#OML.abstract_nv
67
68
  return {
68
69
  key: group_by(gdata[0]),
69
70
  values: gdata
70
- }
71
- })
71
+ };
72
+ });
72
73
  } else {
73
74
  datum = [{
74
75
  key: '???',
75
76
  values: data
76
77
  }];
77
78
  }
78
-
79
+
79
80
  if (o.show_legend) chart.showLegend(datum.length > 1);
80
81
  if (o.show_controls) chart.showControls(datum.length > 1);
81
82
 
82
83
  return datum;
83
84
  },
84
-
85
- })
86
- })
85
+
86
+ });
87
+
88
+ return multi_barchart;
89
+ });
87
90
 
88
91
  /*
89
92
  Local Variables: