pulse_meter-dygraphs_visualizer 0.4.21 → 0.4.22

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59fa9a27bec80b059be63f171091f9eacfbe7560
4
- data.tar.gz: bf82152b3b4e715124dbbf36846d2a5c5eb57b5f
3
+ metadata.gz: c1d31aec95a53a78b4820805e035a9d1c1d10164
4
+ data.tar.gz: 2aeb9c3528fd6a103af9180379df8b4116270713
5
5
  SHA512:
6
- metadata.gz: cae261915e613d9cb684ef1bde9afa69c26071bc9add6946695fff632e0e5cad30d8068d9bf3d01c5b0ed2aae2ebdd515c7764ca850a1da66ac003385ca2a4f9
7
- data.tar.gz: 80798c35b1b368a2c885715d858cc44879c8f1ec42262c189be0edf2249b35edf12a1703e581f02d7cd91b4f4e8c397a3e0cdae421a6d2226e0d0e3ee23856fe
6
+ metadata.gz: d49cb50fe390c5862b9c7a8b6e4623a0266f2cef6afa54e382cb216912e8b0ff04f83eab660c0af0d24adc0bdcac3cc17108384e67d774c3c19d483e9815a787
7
+ data.tar.gz: 0a5816501bf62f0f0e87b7dc3ddae30ec9df45965a4e6b3647e0e515a1fde61b1dd48b20c0b9efbd2caf3f4eaa40b3a82bd09ad43345ab76d065a006afa510dd
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ test/version_tmp
17
17
  tmp
18
18
  *.sw?
19
19
  /.idea
20
+ /node_modules
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.0
1
+ 2.3.1
data/Procfile CHANGED
@@ -1,3 +1,3 @@
1
- watch_coffee: bundle exec rake coffee:watch
1
+ watch_coffee: bundle exec rake coffee:watch --trace
2
2
  web_sample: bundle exec rackup examples/basic.ru
3
3
  sensor_sample: bundle exec ruby examples/basic_sensor_data.rb
data/Rakefile CHANGED
@@ -1,10 +1,7 @@
1
1
  #!/usr/bin/env rake
2
2
  require 'bundler/gem_tasks'
3
- require 'coffee-script'
4
3
  require 'listen'
5
4
  require 'rspec/core/rake_task'
6
- require 'sprockets'
7
- require 'tilt'
8
5
  require 'yard'
9
6
  require 'yard/rake/yardoc_task'
10
7
 
@@ -12,19 +9,44 @@ RSpec::Core::RakeTask.new(:spec)
12
9
 
13
10
  YARD::Rake::YardocTask.new(:yard)
14
11
 
15
- ROOT = File.dirname(__FILE__)
16
-
17
12
  task :default => :spec
18
13
 
14
+ STDOUT.sync = true
15
+
19
16
  namespace :coffee do
20
- COFFEE_PATH = "#{ROOT}/lib/pulse_meter/dygraphs_visualize/coffee"
17
+ COFFEE_PATH = "lib/pulse_meter/dygraphs_visualize/coffee"
18
+ COFFEE_FILES = %w{
19
+ extensions
20
+ models/page_info
21
+ models/widget
22
+ models/dinamic_widget
23
+ models/sensor_info
24
+ collections/page_info_list
25
+ collections/sensor_info_list
26
+ collections/widget_list
27
+ presenters/widget
28
+ presenters/timeline
29
+ presenters/series
30
+ presenters/line
31
+ presenters/stack
32
+ views/page_title
33
+ views/page_titles
34
+ views/sensor_info_list
35
+ views/dynamic_chart
36
+ views/dynamic_widget
37
+ views/widget_chart
38
+ views/widget
39
+ views/widget_list
40
+ router
41
+ application
42
+ }.map{|f| "#{COFFEE_PATH}/#{f}.coffee"}.join(" ")
43
+ APP_JS = "lib/pulse_meter/dygraphs_visualize/public/js/application.js"
44
+ COFFEE_SCRIPT = "node_modules/coffee-script/bin/coffee"
21
45
 
22
46
  def compile_js
23
- Tilt::CoffeeScriptTemplate.default_bare = true
24
- env = Sprockets::Environment.new
25
- env.append_path COFFEE_PATH
26
- data = env['application.coffee']
27
- open("#{ROOT}/lib/pulse_meter/dygraphs_visualize/public/js/application.js", "w").write(data)
47
+ command = "cat #{COFFEE_FILES} | #{COFFEE_SCRIPT} --compile --bare --stdio > #{APP_JS}"
48
+ puts "running #{command}"
49
+ system(command)
28
50
  puts "application.js compiled"
29
51
  end
30
52
 
@@ -35,13 +57,15 @@ namespace :coffee do
35
57
 
36
58
  desc "Watch coffee files and recomplile them immediately"
37
59
  task :watch do
38
- Listen.to(COFFEE_PATH) do |modified, added, removed|
60
+ listener = Listen.to(COFFEE_PATH) do |modified, added, removed|
39
61
  puts "Modified: #{modified}" unless modified.empty?
40
62
  puts "Added: #{added}" unless added.empty?
41
63
  puts "Removed: #{removed}" unless removed.empty?
42
64
  puts "Recompiling..."
43
65
  compile_js
44
66
  end
67
+ listener.start
68
+ sleep
45
69
  end
46
70
  end
47
71
 
@@ -51,4 +75,3 @@ namespace :yard do
51
75
  system 'open', "#{ROOT}/doc/index.html"
52
76
  end
53
77
  end
54
-
@@ -1,7 +1,7 @@
1
1
  $: << File.join(File.absolute_path(__FILE__), '..', 'lib')
2
2
 
3
3
  require "pulse_meter_core"
4
-
4
+
5
5
  PulseMeter.redis = Redis.new
6
6
 
7
7
  cfg = PulseMeter::Sensor::Configuration.new(
@@ -80,9 +80,9 @@ cfg = PulseMeter::Sensor::Configuration.new(
80
80
  while true
81
81
  sleep(Random.rand)
82
82
  STDERR.puts "tick"
83
- cfg.lama_count(1)
83
+ cfg.lama_count(Random.rand(10_000_000))
84
84
  cfg.lama_count_1min(10)
85
- cfg.rhino_count(2)
85
+ cfg.rhino_count(-Random.rand(10_000))
86
86
  cfg.lama_average_age(Random.rand(50))
87
87
  cfg.rhino_average_age(Random.rand(100))
88
88
 
@@ -1,26 +1,3 @@
1
- #= require extensions
2
- #= require models/page_info
3
- #= require models/widget
4
- #= require models/dinamic_widget
5
- #= require models/sensor_info
6
- #= require collections/page_info_list
7
- #= require collections/sensor_info_list
8
- #= require collections/widget_list
9
- #= require presenters/widget
10
- #= require presenters/timeline
11
- #= require presenters/series
12
- #= require presenters/line
13
- #= require presenters/stack
14
- #= require views/page_title
15
- #= require views/page_titles
16
- #= require views/sensor_info_list
17
- #= require views/dynamic_chart
18
- #= require views/dynamic_widget
19
- #= require views/widget_chart
20
- #= require views/widget
21
- #= require views/widget_list
22
- #= require router
23
-
24
1
  document.startApp = ->
25
2
  pageInfos = new PageInfoList
26
3
  pageTitlesApp = new PageTitlesView(pageInfos)
@@ -14,7 +14,7 @@ class WidgetPresenter
14
14
  (new Date).getTimezoneOffset() * 60000
15
15
  else
16
16
  0
17
-
17
+
18
18
  options: -> {
19
19
  labelsDiv: @legendEl
20
20
  labelsSeparateLines: false
@@ -25,6 +25,14 @@ class WidgetPresenter
25
25
  strokeWidth: 2
26
26
  strokeBorderWidth: 1
27
27
  highlightCircleSize: 5
28
+
29
+ axisLabelWidth: 80
30
+
31
+ axes:
32
+ y:
33
+ valueFormatter: (x) -> x
34
+ axisLabelFormatter: (x) => @formatValueLabel(x)
35
+
28
36
  }
29
37
 
30
38
  mergedOptions: ->
@@ -42,6 +50,22 @@ class WidgetPresenter
42
50
 
43
51
  data: -> new google.visualization.DataTable
44
52
 
53
+ formatValueLabel: (v) ->
54
+ sign = if v < 0 then "-" else ""
55
+ absv = Math.abs(v)
56
+ if absv >= 1000000000
57
+ v.toPrecision(4)
58
+ else
59
+ if absv >= 1000000
60
+ "#{sign}#{Math.floor(absv / 1000000)}kk"
61
+ else
62
+ if absv >= 1000
63
+ "#{sign}#{Math.floor(absv / 1000)}k"
64
+ else
65
+ v
66
+
67
+
68
+
45
69
  draw: ->
46
70
  @chart.draw @data(), @mergedOptions()
47
71
 
@@ -1,3 +1,7 @@
1
+ // Generated by CoffeeScript 1.11.0
2
+ var AppRouter, DynamicChartView, DynamicWidget, DynamicWidgetView, LinePresenter, PageInfo, PageInfoList, PageTitleView, PageTitlesView, SensorInfo, SensorInfoList, SensorInfoListView, SeriesPresenter, StackPresenter, TimelinePresenter, Widget, WidgetChartView, WidgetList, WidgetListView, WidgetPresenter, WidgetView,
3
+ extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
4
+ hasProp = {}.hasOwnProperty;
1
5
 
2
6
  String.prototype.capitalize = function() {
3
7
  return this.charAt(0).toUpperCase() + this.slice(1);
@@ -17,7 +21,7 @@ Number.prototype.humanize = function() {
17
21
  res = "";
18
22
  s = interval % 60;
19
23
  if (s > 0) {
20
- res = "" + s + " s";
24
+ res = s + " s";
21
25
  }
22
26
  interval = (interval - s) / 60;
23
27
  if (!(interval > 0)) {
@@ -25,7 +29,7 @@ Number.prototype.humanize = function() {
25
29
  }
26
30
  m = interval % 60;
27
31
  if (m > 0) {
28
- res = ("" + m + " m " + res).strip();
32
+ res = (m + " m " + res).strip();
29
33
  }
30
34
  interval = (interval - m) / 60;
31
35
  if (!(interval > 0)) {
@@ -33,19 +37,17 @@ Number.prototype.humanize = function() {
33
37
  }
34
38
  h = interval % 24;
35
39
  if (h > 0) {
36
- res = ("" + h + " h " + res).strip();
40
+ res = (h + " h " + res).strip();
37
41
  }
38
42
  d = (interval - h) / 24;
39
43
  if (d > 0) {
40
- return ("" + d + " d " + res).strip();
44
+ return (d + " d " + res).strip();
41
45
  } else {
42
46
  return res;
43
47
  }
44
48
  };
45
- var PageInfo;
46
49
 
47
50
  PageInfo = Backbone.Model.extend({});
48
- var Widget;
49
51
 
50
52
  Widget = Backbone.Model.extend({
51
53
  initialize: function() {
@@ -76,7 +78,7 @@ Widget = Backbone.Model.extend({
76
78
  url: function() {
77
79
  var timespan, url;
78
80
  timespan = this.timespan();
79
- url = "" + (this.collection.url()) + "/" + (this.get('id')) + "?";
81
+ url = (this.collection.url()) + "/" + (this.get('id')) + "?";
80
82
  if (!_.isNaN(timespan)) {
81
83
  url += "&timespan=" + timespan;
82
84
  }
@@ -112,26 +114,30 @@ Widget = Backbone.Model.extend({
112
114
  return this.updating = false;
113
115
  },
114
116
  forceUpdate: function() {
115
- var xhr,
116
- _this = this;
117
+ var xhr;
117
118
  if (this.updating) {
118
119
  return;
119
120
  }
120
121
  this.updating = true;
121
122
  xhr = this.fetch({
122
- success: function(model, response) {
123
- return _this.trigger('redraw');
124
- }
125
- });
126
- xhr.always(function() {
127
- return _this.updating = false;
128
- });
129
- return xhr.fail(function(xhr, textStatus, errorThrown) {
130
- return console.log("xhr fail", _this.get('id'), textStatus, errorThrown);
123
+ success: (function(_this) {
124
+ return function(model, response) {
125
+ return _this.trigger('redraw');
126
+ };
127
+ })(this)
131
128
  });
129
+ xhr.always((function(_this) {
130
+ return function() {
131
+ return _this.updating = false;
132
+ };
133
+ })(this));
134
+ return xhr.fail((function(_this) {
135
+ return function(xhr, textStatus, errorThrown) {
136
+ return console.log("xhr fail", _this.get('id'), textStatus, errorThrown);
137
+ };
138
+ })(this));
132
139
  }
133
140
  });
134
- var DynamicWidget;
135
141
 
136
142
  DynamicWidget = Backbone.Model.extend({
137
143
  setStartTime: function(startTime) {
@@ -159,7 +165,7 @@ DynamicWidget = Backbone.Model.extend({
159
165
  url: function() {
160
166
  var timespan, url;
161
167
  timespan = this.timespan();
162
- url = "" + ROOT + "dynamic_widget?" + (this.sensorArgs()) + "&type=" + (this.get('type'));
168
+ url = ROOT + "dynamic_widget?" + (this.sensorArgs()) + "&type=" + (this.get('type'));
163
169
  if ((timespan != null) && !_.isNaN(timespan)) {
164
170
  url += "&timespan=" + timespan;
165
171
  }
@@ -179,10 +185,8 @@ DynamicWidget = Backbone.Model.extend({
179
185
  });
180
186
  }
181
187
  });
182
- var SensorInfo;
183
188
 
184
189
  SensorInfo = Backbone.Model.extend({});
185
- var PageInfoList;
186
190
 
187
191
  PageInfoList = Backbone.Collection.extend({
188
192
  model: PageInfo,
@@ -207,7 +211,6 @@ PageInfoList = Backbone.Collection.extend({
207
211
  });
208
212
  }
209
213
  });
210
- var SensorInfoList;
211
214
 
212
215
  SensorInfoList = Backbone.Collection.extend({
213
216
  model: SensorInfo,
@@ -215,35 +218,33 @@ SensorInfoList = Backbone.Collection.extend({
215
218
  return ROOT + 'sensors';
216
219
  }
217
220
  });
218
- var WidgetList;
219
221
 
220
222
  WidgetList = Backbone.Collection.extend({
221
223
  model: Widget,
222
- setContext: function(pageInfos) {
223
- this.pageInfos = pageInfos;
224
+ setContext: function(pageInfos1) {
225
+ this.pageInfos = pageInfos1;
224
226
  },
225
227
  url: function() {
226
228
  return ROOT + 'pages/' + this.pageInfos.selected().id + '/widgets';
227
229
  },
228
230
  startPolling: function() {
229
- var _this = this;
230
- return setInterval(function() {
231
- if (_this.pageInfos.selected()) {
232
- return _this.each(function(w) {
233
- return w.refetch();
234
- });
235
- }
236
- }, 200);
231
+ return setInterval((function(_this) {
232
+ return function() {
233
+ if (_this.pageInfos.selected()) {
234
+ return _this.each(function(w) {
235
+ return w.refetch();
236
+ });
237
+ }
238
+ };
239
+ })(this), 200);
237
240
  }
238
241
  });
239
- var WidgetPresenter;
240
242
 
241
243
  WidgetPresenter = (function() {
242
-
243
- function WidgetPresenter(pageInfos, model, el) {
244
- this.pageInfos = pageInfos;
245
- this.model = model;
246
- this.el = el;
244
+ function WidgetPresenter(pageInfos1, model1, el1) {
245
+ this.pageInfos = pageInfos1;
246
+ this.model = model1;
247
+ this.el = el1;
247
248
  this.chartEl = this.el.find('#chart')[0];
248
249
  this.legendEl = this.el.find('#legend')[0];
249
250
  this.chart = new Dygraph.GVizChart(this.chartEl);
@@ -276,6 +277,19 @@ WidgetPresenter = (function() {
276
277
  strokeWidth: 2,
277
278
  strokeBorderWidth: 1,
278
279
  highlightCircleSize: 5
280
+ },
281
+ axisLabelWidth: 80,
282
+ axes: {
283
+ y: {
284
+ valueFormatter: function(x) {
285
+ return x;
286
+ },
287
+ axisLabelFormatter: (function(_this) {
288
+ return function(x) {
289
+ return _this.formatValueLabel(x);
290
+ };
291
+ })(this)
292
+ }
279
293
  }
280
294
  };
281
295
  };
@@ -290,6 +304,25 @@ WidgetPresenter = (function() {
290
304
  return new google.visualization.DataTable;
291
305
  };
292
306
 
307
+ WidgetPresenter.prototype.formatValueLabel = function(v) {
308
+ var absv, sign;
309
+ sign = v < 0 ? "-" : "";
310
+ absv = Math.abs(v);
311
+ if (absv >= 1000000000) {
312
+ return v.toPrecision(4);
313
+ } else {
314
+ if (absv >= 1000000) {
315
+ return "" + sign + (Math.floor(absv / 1000000)) + "kk";
316
+ } else {
317
+ if (absv >= 1000) {
318
+ return "" + sign + (Math.floor(absv / 1000)) + "k";
319
+ } else {
320
+ return v;
321
+ }
322
+ }
323
+ }
324
+ };
325
+
293
326
  WidgetPresenter.prototype.draw = function() {
294
327
  return this.chart.draw(this.data(), this.mergedOptions());
295
328
  };
@@ -302,19 +335,15 @@ WidgetPresenter.create = function(pageInfos, model, el) {
302
335
  var presenterClass, type;
303
336
  type = model.get('type');
304
337
  if ((type != null) && type.match(/^\w+$/)) {
305
- presenterClass = eval("" + (type.capitalize()) + "Presenter");
338
+ presenterClass = eval((type.capitalize()) + "Presenter");
306
339
  return new presenterClass(pageInfos, model, el);
307
340
  } else {
308
341
  return null;
309
342
  }
310
343
  };
311
- var TimelinePresenter,
312
- __hasProp = {}.hasOwnProperty,
313
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
314
-
315
- TimelinePresenter = (function(_super) {
316
344
 
317
- __extends(TimelinePresenter, _super);
345
+ TimelinePresenter = (function(superClass) {
346
+ extend(TimelinePresenter, superClass);
318
347
 
319
348
  function TimelinePresenter() {
320
349
  return TimelinePresenter.__super__.constructor.apply(this, arguments);
@@ -339,13 +368,9 @@ TimelinePresenter = (function(_super) {
339
368
  return TimelinePresenter;
340
369
 
341
370
  })(WidgetPresenter);
342
- var SeriesPresenter,
343
- __hasProp = {}.hasOwnProperty,
344
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
345
371
 
346
- SeriesPresenter = (function(_super) {
347
-
348
- __extends(SeriesPresenter, _super);
372
+ SeriesPresenter = (function(superClass) {
373
+ extend(SeriesPresenter, superClass);
349
374
 
350
375
  function SeriesPresenter() {
351
376
  return SeriesPresenter.__super__.constructor.apply(this, arguments);
@@ -363,7 +388,7 @@ SeriesPresenter = (function(_super) {
363
388
 
364
389
  SeriesPresenter.prototype.valuesTitle = function() {
365
390
  if (this.get('valuesTitle')) {
366
- return "" + (this.get('valuesTitle')) + " / " + (this.humanizedInterval());
391
+ return (this.get('valuesTitle')) + " / " + (this.humanizedInterval());
367
392
  } else {
368
393
  return this.humanizedInterval();
369
394
  }
@@ -382,13 +407,9 @@ SeriesPresenter = (function(_super) {
382
407
  return SeriesPresenter;
383
408
 
384
409
  })(TimelinePresenter);
385
- var LinePresenter,
386
- __hasProp = {}.hasOwnProperty,
387
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
388
-
389
- LinePresenter = (function(_super) {
390
410
 
391
- __extends(LinePresenter, _super);
411
+ LinePresenter = (function(superClass) {
412
+ extend(LinePresenter, superClass);
392
413
 
393
414
  function LinePresenter() {
394
415
  return LinePresenter.__super__.constructor.apply(this, arguments);
@@ -397,13 +418,9 @@ LinePresenter = (function(_super) {
397
418
  return LinePresenter;
398
419
 
399
420
  })(SeriesPresenter);
400
- var StackPresenter,
401
- __hasProp = {}.hasOwnProperty,
402
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
403
421
 
404
- StackPresenter = (function(_super) {
405
-
406
- __extends(StackPresenter, _super);
422
+ StackPresenter = (function(superClass) {
423
+ extend(StackPresenter, superClass);
407
424
 
408
425
  function StackPresenter() {
409
426
  return StackPresenter.__super__.constructor.apply(this, arguments);
@@ -412,7 +429,6 @@ StackPresenter = (function(_super) {
412
429
  return StackPresenter;
413
430
 
414
431
  })(SeriesPresenter);
415
- var PageTitleView;
416
432
 
417
433
  PageTitleView = Backbone.View.extend({
418
434
  tagName: 'li',
@@ -430,11 +446,10 @@ PageTitleView = Backbone.View.extend({
430
446
  }
431
447
  }
432
448
  });
433
- var PageTitlesView;
434
449
 
435
450
  PageTitlesView = Backbone.View.extend({
436
- initialize: function(pageInfos) {
437
- this.pageInfos = pageInfos;
451
+ initialize: function(pageInfos1) {
452
+ this.pageInfos = pageInfos1;
438
453
  return this.pageInfos.bind('reset', this.render, this);
439
454
  },
440
455
  addOne: function(pageInfo) {
@@ -450,7 +465,6 @@ PageTitlesView = Backbone.View.extend({
450
465
  return this.pageInfos.each(this.addOne);
451
466
  }
452
467
  });
453
- var SensorInfoListView;
454
468
 
455
469
  SensorInfoListView = Backbone.View.extend({
456
470
  tagName: 'div',
@@ -480,7 +494,6 @@ SensorInfoListView = Backbone.View.extend({
480
494
  });
481
495
  }
482
496
  });
483
- var DynamicChartView;
484
497
 
485
498
  DynamicChartView = Backbone.View.extend({
486
499
  initialize: function(options) {
@@ -583,7 +596,6 @@ DynamicChartView = Backbone.View.extend({
583
596
  return this.widget.forceUpdate();
584
597
  }
585
598
  });
586
- var DynamicWidgetView;
587
599
 
588
600
  DynamicWidgetView = Backbone.View.extend({
589
601
  tagName: 'div',
@@ -645,7 +657,6 @@ DynamicWidgetView = Backbone.View.extend({
645
657
  return this.chartView.update();
646
658
  }
647
659
  });
648
- var WidgetChartView;
649
660
 
650
661
  WidgetChartView = Backbone.View.extend({
651
662
  tagName: 'div',
@@ -662,7 +673,6 @@ WidgetChartView = Backbone.View.extend({
662
673
  return this.presenter = WidgetPresenter.create(this.pageInfos, this.model, this.$el);
663
674
  }
664
675
  });
665
- var WidgetView;
666
676
 
667
677
  WidgetView = Backbone.View.extend({
668
678
  tagName: 'div',
@@ -762,7 +772,6 @@ WidgetView = Backbone.View.extend({
762
772
  }
763
773
  }
764
774
  });
765
- var WidgetListView;
766
775
 
767
776
  WidgetListView = Backbone.View.extend({
768
777
  initialize: function(options) {
@@ -771,28 +780,28 @@ WidgetListView = Backbone.View.extend({
771
780
  return this.widgetList.bind('reset', this.render, this);
772
781
  },
773
782
  render: function() {
774
- var container,
775
- _this = this;
783
+ var container;
776
784
  container = $('#widgets');
777
785
  container.empty();
778
- return this.widgetList.each(function(w) {
779
- var view;
780
- view = new WidgetView({
781
- pageInfos: _this.pageInfos,
782
- model: w
783
- });
784
- view.render();
785
- container.append(view.el);
786
- return view.renderChart();
787
- });
786
+ return this.widgetList.each((function(_this) {
787
+ return function(w) {
788
+ var view;
789
+ view = new WidgetView({
790
+ pageInfos: _this.pageInfos,
791
+ model: w
792
+ });
793
+ view.render();
794
+ container.append(view.el);
795
+ return view.renderChart();
796
+ };
797
+ })(this));
788
798
  }
789
799
  });
790
- var AppRouter;
791
800
 
792
801
  AppRouter = Backbone.Router.extend({
793
- initialize: function(pageInfos, widgetList) {
794
- this.pageInfos = pageInfos;
795
- this.widgetList = widgetList;
802
+ initialize: function(pageInfos1, widgetList1) {
803
+ this.pageInfos = pageInfos1;
804
+ this.widgetList = widgetList1;
796
805
  },
797
806
  routes: {
798
807
  'pages/:id': 'getPage',