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,46 +1,45 @@
1
- L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], function () {
2
1
 
2
+ define(["graph/abstract_chart"], function (abstract_chart) {
3
3
 
4
-
5
- OML.network2 = OML.abstract_chart.extend({
4
+ var network2 = abstract_chart.extend({
6
5
  decl_properties: {
7
- nodes: [['key', 'key', {property: 'id'}],
8
- ['radius', 'int', 30],
9
- ['fill_color', 'color', 'blue'],
10
- ['stroke_width', 'int', 1],
11
- ['stroke_color', 'color', 'black'],
6
+ nodes: [['key', 'key', {property: 'id'}],
7
+ ['radius', 'int', 30],
8
+ ['fill_color', 'color', 'blue'],
9
+ ['stroke_width', 'int', 1],
10
+ ['stroke_color', 'color', 'black'],
12
11
  ['x', 'int', 10],
13
12
  ['y', 'int', 10],
14
- ['label_text', 'key', {property: 'name'}],
15
- ['label_font', 'string', null],
16
- ['label_size', 'int', 16],
17
- ['label_color', 'color', 'white'],
18
-
13
+ ['label_text', 'key', {property: 'name'}],
14
+ ['label_font', 'string', null],
15
+ ['label_size', 'int', 16],
16
+ ['label_color', 'color', 'white'],
17
+
19
18
  ],
20
- links: [['key', 'key', {property: 'id'}],
21
- ['stroke_width', 'int', 2],
19
+ links: [['key', 'key', {property: 'id'}],
20
+ ['stroke_width', 'int', 2],
22
21
  ['stroke_color', 'color', 'black'],
23
22
  ['stroke_fill', 'color', 'blue'],
24
- ['from', 'index', {key: 'from_id', join_stream: 'nodes', join_key: 'id'}],
23
+ ['from', 'index', {key: 'from_id', join_stream: 'nodes', join_key: 'id'}],
25
24
  ['to', 'index', {key: 'to_id', join_stream: 'nodes'}] // join_key: 'id' ... default
26
25
  ]
27
26
  },
28
-
27
+
29
28
  defaults: function() {
30
29
  return this.deep_defaults({
31
30
  interaction_mode: 'none', // none, hover, click
32
- }, OML.network2.__super__.defaults.call(this));
33
- },
34
-
31
+ }, network2.__super__.defaults.call(this));
32
+ },
33
+
35
34
  configure_base_layer: function(vis) {
36
35
  var ca = this.widget_area;
37
-
36
+
38
37
  this.graph_layer = vis.append("svg:g")
39
38
  .attr("transform", "translate(0, " + ca.h + ")")
40
39
  ;
41
40
  this.legend_layer = vis.append("svg:g");
42
41
  },
43
-
42
+
44
43
  base_css_class: 'oml-network',
45
44
 
46
45
  // Find the appropriate data source and bind to it
@@ -49,12 +48,12 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
49
48
  var o = this.opts;
50
49
  var sources = o.data_sources;
51
50
  var self = this;
52
-
51
+
53
52
  if (! (sources instanceof Array)) {
54
- throw "Expected an array"
53
+ throw "Expected an array";
55
54
  }
56
55
  if (sources.length == 1) {
57
- // Check if the source name is 'default' and we can find
56
+ // Check if the source name is 'default' and we can find
58
57
  // a _links and _nodes source
59
58
  var s = sources[0];
60
59
  if (s.name == 'default') {
@@ -69,11 +68,11 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
69
68
  sources = [
70
69
  {name: 'nodes', stream: sn},
71
70
  {name: 'links', stream: sl},
72
- ]
71
+ ];
73
72
  }
74
73
  }
75
74
  if (sources.length != 2) {
76
- throw "Expected TWO data source, one for nodes and one for links"
75
+ throw "Expected TWO data source, one for nodes and one for links";
77
76
  }
78
77
  var dsh = this.data_source = {};
79
78
  _.map(sources, function(s) {
@@ -88,8 +87,8 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
88
87
  this.schema = {
89
88
  nodes: this.process_single_schema(this.data_source.nodes),
90
89
  links: this.process_single_schema(this.data_source.links)
91
- };
92
-
90
+ };
91
+
93
92
  var om = this.opts.mapping;
94
93
  if (om.links == undefined || om.nodes == undefined) {
95
94
  throw "Missing mapping instructions in 'options' for either 'links' or 'nodes', or both.";
@@ -97,25 +96,25 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
97
96
  this.mapping = {
98
97
  nodes: this.process_single_mapping('nodes', om.nodes, this.decl_properties.nodes),
99
98
  links: this.process_single_mapping('links', om.links, this.decl_properties.links)
100
- };
99
+ };
101
100
  },
102
-
101
+
103
102
  /*
104
103
  * Return schema for +stream+.
105
104
  */
106
105
  schema_for_stream: function(stream) {
107
106
  var schema = this.schema[stream];
108
107
  return schema;
109
- },
110
-
108
+ },
109
+
111
110
  data_source_for_stream: function(stream) {
112
111
  var ds = this.data_source[stream];
113
112
  if (ds == undefined) {
114
113
  throw "Unknown data_source '" + stream + "'.";
115
114
  }
116
115
  return ds;
117
- },
118
-
116
+ },
117
+
119
118
  update: function() {
120
119
 
121
120
  var ldata = this.data_source.links.rows();
@@ -123,13 +122,13 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
123
122
 
124
123
  this.redraw({links: ldata, nodes: ndata});
125
124
  },
126
-
125
+
127
126
  redraw: function(data) {
128
127
  var self = this;
129
128
  var o = this.opts;
130
129
  var mapping = this.mapping; //o.mapping || {};
131
130
  var ca = this.widget_area;
132
-
131
+
133
132
  var x = function(v) {
134
133
  var x = v * ca.w + ca.x;
135
134
  var x = v * ca.w;
@@ -137,10 +136,10 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
137
136
  };
138
137
  var y = function(v) {
139
138
  var y = -1 * (v * ca.h + ca.y);
140
- var y = -1 * (v * ca.h);
139
+ var y = -1 * (v * ca.h);
141
140
  return y;
142
141
  };
143
-
142
+
144
143
  var vis = this.base_layer;
145
144
  var lmapping = mapping.links;
146
145
  var nmapping = mapping.nodes;
@@ -151,13 +150,13 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
151
150
  var a = 0.2;
152
151
  var b = 0.3;
153
152
  var o = 30;
154
-
153
+
155
154
  var from = lmapping.from(d);
156
155
  var to = lmapping.to(d);
157
156
 
158
- var x1 = x(nmapping.x(from));
157
+ var x1 = x(nmapping.x(from));
159
158
  var y1 = y(nmapping.y(from));
160
- var x3 = x(nmapping.x(to));
159
+ var x3 = x(nmapping.x(to));
161
160
  var y3 = y(nmapping.y(to));
162
161
 
163
162
  var dx = x3 - x1;
@@ -166,13 +165,13 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
166
165
 
167
166
  var mx = x1 + a * dx;
168
167
  var my = y1 + a * dy;
169
- var x2 = mx - (dy * o / l)
170
- var y2 = my + (dx * o / l);
168
+ var x2 = mx - (dy * o / l);
169
+ var y2 = my + (dx * o / l);
171
170
 
172
171
  return iline_f([[x1, y1], [x2, y2], [x3, y3]]);
173
172
  };
174
173
 
175
- var ldata = data.links
174
+ var ldata = data.links;
176
175
  var link2 = this.graph_layer.selectAll("path.link")
177
176
  .data(d3.values(ldata));
178
177
  link2
@@ -185,38 +184,38 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
185
184
  le.attr("class", "link")
186
185
  .style("stroke", lmapping.stroke_color)
187
186
  .style("stroke-width", lmapping.stroke_width)
188
- .attr("fill", "none")
187
+ .attr("fill", "none")
189
188
  .attr("d", line_f)
190
189
  ;
191
190
  this._set_link_interaction_mode(le);
192
-
191
+
193
192
 
194
193
  var ndata = data.nodes;
195
194
  // first draw white circle to allow actual node to become transparent
196
195
  // without links showing through
197
196
  var bg_node = this.graph_layer.selectAll("circle.bg_node")
198
197
  .data(ndata, function(d) { return nmapping.key(d); })
199
- .attr("cx", function(d) { return x(nmapping.x(d)) })
200
- .attr("cy", function(d) { return y(nmapping.y(d)) })
198
+ .attr("cx", function(d) { return x(nmapping.x(d)); })
199
+ .attr("cy", function(d) { return y(nmapping.y(d)); })
201
200
  .attr("r", nmapping.radius)
202
201
  .style("fill", 'white')
203
202
  .enter().append("svg:circle")
204
203
  .attr("class", "bg_node")
205
- .attr("cx", function(d) { return x(nmapping.x(d)) })
206
- .attr("cy", function(d) { return y(nmapping.y(d)) })
204
+ .attr("cx", function(d) { return x(nmapping.x(d)); })
205
+ .attr("cy", function(d) { return y(nmapping.y(d)); })
207
206
  .attr("r", nmapping.radius)
208
207
  .style("fill", 'white');
209
208
  ;
210
209
 
211
-
210
+
212
211
  function node_f(sel) {
213
- sel.attr("cx", function(d) { return x(nmapping.x(d)) })
214
- .attr("cy", function(d) { return y(nmapping.y(d)) })
212
+ sel.attr("cx", function(d) { return x(nmapping.x(d)); })
213
+ .attr("cy", function(d) { return y(nmapping.y(d)); })
215
214
  .attr("r", nmapping.radius)
216
215
  .style("fill", nmapping.fill_color)
217
216
  .style("stroke", nmapping.stroke_color)
218
217
  .style("stroke-width", nmapping.stroke_width)
219
- ;
218
+ ;
220
219
  }
221
220
  var node = this.graph_layer.selectAll("circle.node")
222
221
  .data(ndata, function(d) {
@@ -234,8 +233,8 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
234
233
  // ;
235
234
  var en = node.enter().append("svg:circle");
236
235
  en.attr("class", "node")
237
- .attr("cx", function(d) { return x(nmapping.x(d)) })
238
- .attr("cy", function(d) { return y(nmapping.y(d)) })
236
+ .attr("cx", function(d) { return x(nmapping.x(d)); })
237
+ .attr("cy", function(d) { return y(nmapping.y(d)); })
239
238
  .attr("r", nmapping.radius)
240
239
  .style("fill", nmapping.fill_color)
241
240
  .style("stroke", nmapping.stroke_color)
@@ -246,17 +245,17 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
246
245
  .delay(0)
247
246
  ;
248
247
  this._set_node_interaction_mode(node);
249
-
248
+
250
249
  function label_f(sel) {
251
250
  sel.attr("class", "node_label")
252
251
  .attr('dy', '0.4em')
253
- .attr("x", function(d) { return x(nmapping.x(d)) })
254
- .attr("y", function(d) { return y(nmapping.y(d)) })
252
+ .attr("x", function(d) { return x(nmapping.x(d)); })
253
+ .attr("y", function(d) { return y(nmapping.y(d)); })
255
254
  .attr('text-anchor', 'middle')
256
255
  .style("fill", nmapping.label_color)
257
- .style("font-size", nmapping.label_size)
256
+ .style("font-size", nmapping.label_size)
258
257
  .text(function(d) { return nmapping.label_text(d); });
259
- }
258
+ }
260
259
  var label = this.graph_layer.selectAll("text.node_label")
261
260
  .data(ndata, function(d) {
262
261
  return nmapping.key(d);
@@ -265,7 +264,7 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
265
264
  label.enter().append("svg:text").call(label_f);
266
265
 
267
266
  },
268
-
267
+
269
268
  _set_link_interaction_mode: function(le) {
270
269
  var self = this;
271
270
  var o = this.opts;
@@ -276,9 +275,9 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
276
275
  })
277
276
  .on("mouseout", function(d) {
278
277
  self._on_link_selected(d);
279
- })
278
+ })
280
279
  ;
281
- } else if (o.interaction_mode == 'click') {
280
+ } else if (o.interaction_mode == 'click') {
282
281
  le.on("click", function(d) {
283
282
  self._on_link_selected(d);
284
283
  })
@@ -286,33 +285,33 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
286
285
  ;
287
286
  }
288
287
  },
289
-
288
+
290
289
  _on_link_selected: function(d) {
291
290
  var key_f = this.mapping.links.key;
292
- var id = key_f(d);
291
+ var id = key_f(d);
293
292
  var msg = {id: id, type: 'link', source: this, data_source: this.data_source.links};
294
293
 
295
294
  if (this.selected_link == id) {
296
295
  // if same link is clicked twice, unselect it
297
- this._render_selected_link(null);
296
+ this._render_selected_link(null);
298
297
  this._render_selected_node(null);
299
298
  } else {
300
- this._render_selected_link(id);
299
+ this._render_selected_link(id);
301
300
  this._render_selected_node('_NONE_');
302
301
  this._report_selected(id, 'links', d);
303
302
  }
304
303
  },
305
-
304
+
306
305
  // Make all but 'selected_id' link semi-transparent. If 'selected_id' is null
307
306
  // revert selection.
308
307
  //
309
308
  _render_selected_link: function(selected_id) {
310
309
  if (selected_id == null || selected_id == '_NONE_') {
311
310
  if (this.selected_link) {
312
- this._report_deselected(this.selected_link, 'links');
311
+ this._report_deselected(this.selected_link, 'links');
313
312
  this.selected_link = null;
314
313
  }
315
- } else {
314
+ } else {
316
315
  this.selected_link = selected_id;
317
316
  }
318
317
 
@@ -339,57 +338,57 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
339
338
  .style("opacity", 1.0)
340
339
  .delay(0)
341
340
  .duration(300);
342
-
341
+
343
342
  },
344
343
 
345
344
  _set_node_interaction_mode: function(en) {
346
345
  var self = this;
347
346
  var o = this.opts;
348
-
349
- var msg_frag = {type: 'node', data_source: this.data_source.nodes}
347
+
348
+ var msg_frag = {type: 'node', data_source: this.data_source.nodes};
350
349
  if (o.interaction_mode == 'hover') {
351
350
  en.on("mouseover", function(d) {
352
351
  self._on_node_selected(d);
353
352
  })
354
353
  .on("mouseout", function(d) {
355
354
  self._on_node_selected(d);
356
- })
355
+ })
357
356
  ;
358
- } else if (o.interaction_mode == 'click') {
357
+ } else if (o.interaction_mode == 'click') {
359
358
  en.on("click", function(d) {
360
359
  self._on_node_selected(d);
361
360
  })
362
- .style('cursor', 'hand')
361
+ .style('cursor', 'hand');
363
362
  }
364
-
363
+
365
364
  },
366
-
365
+
367
366
  _on_node_selected: function(d) {
368
367
  var key_f = this.mapping.nodes.key;
369
- var id = key_f(d);
368
+ var id = key_f(d);
370
369
  //var msg = {id: id, type: 'node', source: this, data_source: this.data_source.nodes};
371
370
 
372
371
  if (this.selected_node == id) {
373
372
  // if same link is clicked twice, unselect it
374
- this._render_selected_link(null);
373
+ this._render_selected_link(null);
375
374
  this._render_selected_node(null);
376
375
  } else {
377
- this._render_selected_link('_NONE_');
376
+ this._render_selected_link('_NONE_');
378
377
  this._render_selected_node(id);
379
378
  this._report_selected(id, 'nodes', d);
380
379
  }
381
380
  },
382
-
381
+
383
382
  // Make all but 'selected_id' node semi-transparent. If 'selected_id' is null
384
383
  // revert selection.
385
384
  //
386
385
  _render_selected_node: function(selected_id) {
387
386
  if (selected_id == null || selected_id == '_NONE_') {
388
387
  if (this.selected_node) {
389
- this._report_deselected(this.selected_node, 'nodes');
388
+ this._report_deselected(this.selected_node, 'nodes');
390
389
  this.selected_node = null;
391
390
  }
392
- } else {
391
+ } else {
393
392
  this.selected_node = selected_id;
394
393
  }
395
394
  var key_f = this.mapping.nodes.key;
@@ -415,25 +414,27 @@ L.provide('OML.network2', ["graph/js/abstract_chart", "#OML.abstract_chart"], fu
415
414
  .style("opacity", 1.0)
416
415
  .delay(0)
417
416
  .duration(300);
418
-
417
+
419
418
  },
420
-
419
+
421
420
  _report_selected: function(selected_id, type, datum) {
422
421
  var ds = this.data_source[type];
423
422
  var msg = {id: selected_id, type: type, source: this, data_source: ds, datum: datum};
424
- OHUB.trigger("graph.selected", msg);
425
- OHUB.trigger("graph." + ds.name + ".selected", msg);
426
- },
423
+ OHUB.trigger("graph.selected", msg);
424
+ OHUB.trigger("graph." + ds.name + ".selected", msg);
425
+ },
427
426
 
428
427
  _report_deselected: function(selected_id, type, datum) {
429
428
  var ds = this.data_source[type];
430
429
  var msg = {id: selected_id, type: type, source: this, data_source: ds, datum: datum};
431
- OHUB.trigger("graph.deselected", msg);
432
- OHUB.trigger("graph." + ds.name + ".deselected", msg);
433
- }
434
-
435
- })
436
- })
430
+ OHUB.trigger("graph.deselected", msg);
431
+ OHUB.trigger("graph." + ds.name + ".deselected", msg);
432
+ }
433
+
434
+ });
435
+
436
+ return network2;
437
+ });
437
438
 
438
439
  /*
439
440
  Local Variables:
@@ -1,71 +1,73 @@
1
- L.provide('OML.pie_chart2', ["graph/js/abstract_nv_chart", "#OML.abstract_nv_chart"], function () {
1
+ define(["graph/abstract_nv_chart"], function (abstract_nv_chart) {
2
2
 
3
- OML.pie_chart2 = OML.abstract_nv_chart.extend({
3
+ var pie_chart2 = abstract_nv_chart.extend({
4
4
  decl_properties: [
5
- ['label', 'key', {property: 'label'}],
5
+ ['label', 'key', {property: 'label'}],
6
6
  ['value', 'key', {property: 'value'}],
7
7
  ['color', 'color', 'category10()'],
8
-
8
+
9
9
  ],
10
-
10
+
11
11
  defaults: function() {
12
12
  return this.deep_defaults({
13
13
  tooltips: true,
14
14
  show_labels: true,
15
15
  donut: false,
16
- label_threshold: 0.02, //if slice percentage is under this, don't show label
16
+ label_threshold: 0.02, //if slice percentage is under this, don't show label
17
17
  show_legend: true,
18
-
18
+
19
19
  margin: {
20
- top: 20, right: 0, bottom: 100, left: 50
21
- }
22
- }, OML.pie_chart2.__super__.defaults.call(this));
20
+ top: 20, right: 0, bottom: 100, left: 50
21
+ }
22
+ }, pie_chart2.__super__.defaults.call(this));
23
23
  },
24
24
 
25
25
  _create_model: function() {
26
- return nv.models.pieChart();
26
+ return nv.models.pieChart();
27
27
  },
28
-
28
+
29
29
  _configure_mapping: function(m, chart) {
30
30
  var label_f = m.label;
31
31
  var value_f = m.value;
32
32
  chart.x(function(d) {
33
- var v = label_f(d);
33
+ var v = label_f(d);
34
34
  return v;
35
- })
35
+ });
36
36
  chart.y(function(d) {
37
37
  var v = value_f(d);
38
38
  return v;
39
- })
39
+ });
40
40
  chart.color(function(d, i) {
41
41
  // TODO: This is most likely broken. The color mapping
42
42
  // function should map from an element of 'd', not 'i'
43
43
  var v = m.color(i);
44
44
  return v;
45
- })
45
+ });
46
46
  },
47
-
47
+
48
48
  _configure_options: function(opts, chart) {
49
- OML.pie_chart2.__super__._configure_options.call(this, opts, chart);
49
+ pie_chart2.__super__._configure_options.call(this, opts, chart);
50
50
  chart
51
51
  .tooltips(opts.tooltips)
52
52
  .showLabels(opts.show_labels)
53
53
  .donut(opts.donut)
54
54
  .labelThreshold(opts.label_threshold)
55
- .showLegend(opts.show_legend)
55
+ .showLegend(opts.show_legend)
56
56
  .margin(opts.margin)
57
57
  ;
58
58
  },
59
-
59
+
60
60
  _datum: function(data, chart) {
61
61
  return [{
62
62
  key: "???",
63
63
  values: data
64
64
  }];
65
65
  }
66
-
67
- })
68
- })
66
+
67
+ });
68
+
69
+ return pie_chart2;
70
+ });
69
71
 
70
72
  /*
71
73
  Local Variables: