omf_web 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: