pulse_meter_visualizer 0.4.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/.gitignore +19 -0
  2. data/.rbenv-version +1 -0
  3. data/.rspec +1 -0
  4. data/.rvmrc +1 -0
  5. data/.travis.yml +8 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +22 -0
  8. data/Procfile +3 -0
  9. data/README.md +40 -0
  10. data/Rakefile +72 -0
  11. data/examples/basic.ru +145 -0
  12. data/examples/basic_sensor_data.rb +96 -0
  13. data/lib/pulse_meter/visualize/app.rb +78 -0
  14. data/lib/pulse_meter/visualize/base.rb +15 -0
  15. data/lib/pulse_meter/visualize/coffee/application.coffee +40 -0
  16. data/lib/pulse_meter/visualize/coffee/collections/page_info_list.coffee +17 -0
  17. data/lib/pulse_meter/visualize/coffee/collections/sensor_info_list.coffee +4 -0
  18. data/lib/pulse_meter/visualize/coffee/collections/widget_list.coffee +14 -0
  19. data/lib/pulse_meter/visualize/coffee/extensions.coffee +26 -0
  20. data/lib/pulse_meter/visualize/coffee/models/dinamic_widget.coffee +34 -0
  21. data/lib/pulse_meter/visualize/coffee/models/page_info.coffee +2 -0
  22. data/lib/pulse_meter/visualize/coffee/models/sensor_info.coffee +2 -0
  23. data/lib/pulse_meter/visualize/coffee/models/widget.coffee +54 -0
  24. data/lib/pulse_meter/visualize/coffee/presenters/area.coffee +2 -0
  25. data/lib/pulse_meter/visualize/coffee/presenters/gauge.coffee +11 -0
  26. data/lib/pulse_meter/visualize/coffee/presenters/line.coffee +2 -0
  27. data/lib/pulse_meter/visualize/coffee/presenters/pie.coffee +20 -0
  28. data/lib/pulse_meter/visualize/coffee/presenters/series.coffee +44 -0
  29. data/lib/pulse_meter/visualize/coffee/presenters/table.coffee +10 -0
  30. data/lib/pulse_meter/visualize/coffee/presenters/timeline.coffee +13 -0
  31. data/lib/pulse_meter/visualize/coffee/presenters/widget.coffee +65 -0
  32. data/lib/pulse_meter/visualize/coffee/router.coffee +21 -0
  33. data/lib/pulse_meter/visualize/coffee/views/dynamic_chart.coffee +91 -0
  34. data/lib/pulse_meter/visualize/coffee/views/dynamic_widget.coffee +58 -0
  35. data/lib/pulse_meter/visualize/coffee/views/page_title.coffee +17 -0
  36. data/lib/pulse_meter/visualize/coffee/views/page_titles.coffee +15 -0
  37. data/lib/pulse_meter/visualize/coffee/views/sensor_info_list.coffee +19 -0
  38. data/lib/pulse_meter/visualize/coffee/views/widget.coffee +99 -0
  39. data/lib/pulse_meter/visualize/coffee/views/widget_chart.coffee +13 -0
  40. data/lib/pulse_meter/visualize/coffee/views/widget_list.coffee +15 -0
  41. data/lib/pulse_meter/visualize/dsl/base.rb +131 -0
  42. data/lib/pulse_meter/visualize/dsl/errors.rb +40 -0
  43. data/lib/pulse_meter/visualize/dsl/layout.rb +27 -0
  44. data/lib/pulse_meter/visualize/dsl/page.rb +33 -0
  45. data/lib/pulse_meter/visualize/dsl/sensor.rb +20 -0
  46. data/lib/pulse_meter/visualize/dsl/widget.rb +37 -0
  47. data/lib/pulse_meter/visualize/dsl/widgets/area.rb +20 -0
  48. data/lib/pulse_meter/visualize/dsl/widgets/gauge.rb +12 -0
  49. data/lib/pulse_meter/visualize/dsl/widgets/line.rb +21 -0
  50. data/lib/pulse_meter/visualize/dsl/widgets/pie.rb +16 -0
  51. data/lib/pulse_meter/visualize/dsl/widgets/table.rb +19 -0
  52. data/lib/pulse_meter/visualize/layout.rb +79 -0
  53. data/lib/pulse_meter/visualize/page.rb +25 -0
  54. data/lib/pulse_meter/visualize/public/css/application.css +56 -0
  55. data/lib/pulse_meter/visualize/public/css/bootstrap.css +4883 -0
  56. data/lib/pulse_meter/visualize/public/css/bootstrap.min.css +729 -0
  57. data/lib/pulse_meter/visualize/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  58. data/lib/pulse_meter/visualize/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  59. data/lib/pulse_meter/visualize/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  60. data/lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  61. data/lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  62. data/lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  63. data/lib/pulse_meter/visualize/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  64. data/lib/pulse_meter/visualize/public/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  65. data/lib/pulse_meter/visualize/public/css/images/ui-icons_222222_256x240.png +0 -0
  66. data/lib/pulse_meter/visualize/public/css/images/ui-icons_2e83ff_256x240.png +0 -0
  67. data/lib/pulse_meter/visualize/public/css/images/ui-icons_454545_256x240.png +0 -0
  68. data/lib/pulse_meter/visualize/public/css/images/ui-icons_888888_256x240.png +0 -0
  69. data/lib/pulse_meter/visualize/public/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  70. data/lib/pulse_meter/visualize/public/css/images/ui-icons_f6cf3b_256x240.png +0 -0
  71. data/lib/pulse_meter/visualize/public/css/jquery-ui-1.8.16.bootstrap.css +1320 -0
  72. data/lib/pulse_meter/visualize/public/favicon.ico +208 -0
  73. data/lib/pulse_meter/visualize/public/img/glyphicons-halflings-white.png +0 -0
  74. data/lib/pulse_meter/visualize/public/img/glyphicons-halflings.png +0 -0
  75. data/lib/pulse_meter/visualize/public/js/application.js +973 -0
  76. data/lib/pulse_meter/visualize/public/js/backbone-min.js +38 -0
  77. data/lib/pulse_meter/visualize/public/js/bootstrap.js +1835 -0
  78. data/lib/pulse_meter/visualize/public/js/jquery-1.7.2.min.js +4 -0
  79. data/lib/pulse_meter/visualize/public/js/jquery-ui-1.8.16.bootstrap.min.js +791 -0
  80. data/lib/pulse_meter/visualize/public/js/jquery-ui-1.8.23.custom.min.js +21 -0
  81. data/lib/pulse_meter/visualize/public/js/jquery-ui-timepicker-addon.js +1687 -0
  82. data/lib/pulse_meter/visualize/public/js/json2.js +487 -0
  83. data/lib/pulse_meter/visualize/public/js/underscore-min.js +32 -0
  84. data/lib/pulse_meter/visualize/sensor.rb +63 -0
  85. data/lib/pulse_meter/visualize/series_extractor.rb +107 -0
  86. data/lib/pulse_meter/visualize/views/main.haml +30 -0
  87. data/lib/pulse_meter/visualize/views/sensors.haml +76 -0
  88. data/lib/pulse_meter/visualize/views/widgets/area.haml +53 -0
  89. data/lib/pulse_meter/visualize/views/widgets/extend_options.haml +11 -0
  90. data/lib/pulse_meter/visualize/views/widgets/gauge.haml +13 -0
  91. data/lib/pulse_meter/visualize/views/widgets/line.haml +54 -0
  92. data/lib/pulse_meter/visualize/views/widgets/pie.haml +13 -0
  93. data/lib/pulse_meter/visualize/views/widgets/table.haml +45 -0
  94. data/lib/pulse_meter/visualize/widget.rb +38 -0
  95. data/lib/pulse_meter/visualize/widgets/gauge.rb +47 -0
  96. data/lib/pulse_meter/visualize/widgets/pie.rb +36 -0
  97. data/lib/pulse_meter/visualize/widgets/timeline.rb +114 -0
  98. data/lib/pulse_meter/visualizer.rb +38 -0
  99. data/lib/pulse_meter_visualizer.rb +2 -0
  100. data/pulse_meter_visualizer.gemspec +41 -0
  101. data/spec/pulse_meter/visualize/app_spec.rb +27 -0
  102. data/spec/pulse_meter/visualize/dsl/layout_spec.rb +64 -0
  103. data/spec/pulse_meter/visualize/dsl/page_spec.rb +62 -0
  104. data/spec/pulse_meter/visualize/dsl/sensor_spec.rb +30 -0
  105. data/spec/pulse_meter/visualize/dsl/widget_spec.rb +6 -0
  106. data/spec/pulse_meter/visualize/dsl/widgets/area_spec.rb +44 -0
  107. data/spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb +22 -0
  108. data/spec/pulse_meter/visualize/dsl/widgets/line_spec.rb +44 -0
  109. data/spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb +35 -0
  110. data/spec/pulse_meter/visualize/dsl/widgets/table_spec.rb +36 -0
  111. data/spec/pulse_meter/visualize/layout_spec.rb +54 -0
  112. data/spec/pulse_meter/visualize/page_spec.rb +153 -0
  113. data/spec/pulse_meter/visualize/sensor_spec.rb +120 -0
  114. data/spec/pulse_meter/visualize/series_extractor_spec.rb +80 -0
  115. data/spec/pulse_meter/visualize/widgets/area_spec.rb +6 -0
  116. data/spec/pulse_meter/visualize/widgets/gauge_spec.rb +63 -0
  117. data/spec/pulse_meter/visualize/widgets/line_spec.rb +6 -0
  118. data/spec/pulse_meter/visualize/widgets/pie_spec.rb +73 -0
  119. data/spec/pulse_meter/visualize/widgets/table_spec.rb +6 -0
  120. data/spec/pulse_meter/visualizer_spec.rb +42 -0
  121. data/spec/shared_examples/dsl_widget.rb +106 -0
  122. data/spec/shared_examples/widget.rb +97 -0
  123. data/spec/spec_helper.rb +36 -0
  124. metadata +518 -0
@@ -0,0 +1,97 @@
1
+ shared_examples_for "widget" do
2
+ let(:interval){ 100 }
3
+ let!(:a_sensor){ PulseMeter::Sensor::Timelined::Counter.new(:a_sensor, :ttl => 1000, :interval => interval, annotation: 'A') }
4
+ let!(:b_sensor){ PulseMeter::Sensor::Timelined::Counter.new(:b_sensor, :ttl => 1000, :interval => interval, annotation: 'B') }
5
+
6
+ let(:widget_name){ "some_widget" }
7
+
8
+ let(:redraw_interval){5}
9
+ let(:values_label){'xxxx'}
10
+ let(:width){6}
11
+ let(:timespan){interval * 2}
12
+ let(:a_color){'#FF0000'}
13
+ let(:b_color){'#FFFF00'}
14
+
15
+ let(:interval_start){ Time.at((Time.now.to_i / interval) * interval) }
16
+
17
+ def constantize(const_name)
18
+ const_name.to_s.split('::').reduce(Module, :const_get)
19
+ end
20
+
21
+ def class_name
22
+ described_class.to_s.split('::').last
23
+ end
24
+
25
+ def dsl_class
26
+ constantize "PulseMeter::Visualize::DSL::Widgets::#{class_name}"
27
+ end
28
+
29
+ let(:widget) do
30
+ w = dsl_class.new(widget_name)
31
+ w.redraw_interval redraw_interval
32
+ w.width width
33
+ w.sensor :a_sensor, color: a_color
34
+ w.sensor :b_sensor, color: b_color
35
+ w.gchart_options a: 1
36
+ w.timespan timespan
37
+ w.to_data
38
+ end
39
+
40
+ describe "#data" do
41
+ it "should contain type, title, redraw_interval, width, gchart_options, timespan attriutes" do
42
+ wdata = widget.data
43
+ wdata[:type].should == class_name.downcase
44
+ wdata[:title].should == widget_name
45
+ wdata[:redraw_interval].should == redraw_interval
46
+ wdata[:width].should == width
47
+ wdata[:gchart_options].should == {a: 1}
48
+ wdata[:timespan].should == timespan
49
+ wdata[:interval].should == interval
50
+ end
51
+
52
+ describe "series attribute" do
53
+ before(:each) do
54
+ Timecop.freeze(interval_start + 1) do
55
+ a_sensor.event(12)
56
+ b_sensor.event(33)
57
+ end
58
+ Timecop.freeze(interval_start + interval + 1) do
59
+ a_sensor.event(111)
60
+ end
61
+ @current_time = interval_start + 2 * interval - 1
62
+ end
63
+
64
+ it "should contain valid series" do
65
+ Timecop.freeze(@current_time) do
66
+ widget.data[:series].should ==
67
+ {
68
+ titles: [a_sensor.annotation, b_sensor.annotation],
69
+ rows: [[interval_start.to_i * 1000, 12, 33]],
70
+ options: [
71
+ {color: a_color},
72
+ {color: b_color}
73
+ ]
74
+ }
75
+ end
76
+ end
77
+
78
+ it "should accept custom timespan" do
79
+ Timecop.freeze(@current_time + interval) do
80
+ widget.data(timespan: timespan)[:series][:rows].size.should == 1
81
+ widget.data(timespan: timespan + interval)[:series][:rows].size.should == 2
82
+ end
83
+ end
84
+
85
+ it "should accept start_time and end_time" do
86
+ Timecop.freeze(@current_time + interval) do
87
+ widget.data(start_time: (Time.now - timespan).to_i)[:series][:rows].size.should == 1
88
+ widget.data(
89
+ start_time: (Time.now - interval - timespan).to_i,
90
+ end_time: Time.now.to_i
91
+ )[:series][:rows].size.should == 2
92
+ end
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,36 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ $:.unshift File.expand_path('../../lib/', __FILE__)
4
+
5
+ ROOT = File.expand_path('../..', __FILE__)
6
+
7
+ Bundler.require(:default, :test, :development)
8
+
9
+ SimpleCov.start
10
+
11
+ require 'pulse_meter_visualizer'
12
+ PulseMeter.redis = MockRedis.new
13
+
14
+ require 'rack/test'
15
+
16
+ Dir['spec/shared_examples/**/*.rb'].each{|f| require File.join(ROOT,f)}
17
+
18
+ require 'aquarium'
19
+ include Aquarium::Aspects
20
+
21
+ Aspect.new :after, :calls_to => [:event, :event_at], :for_types => [PulseMeter::Sensor::Base, PulseMeter::Sensor::Timeline] do |jp, obj, *args|
22
+ PulseMeter.command_aggregator.wait_for_pending_events
23
+ end
24
+
25
+ PulseMeter.command_aggregator.max_queue_length = 20
26
+
27
+ RSpec.configure do |config|
28
+ config.before(:each) do
29
+ PulseMeter.redis = MockRedis.new
30
+ Timecop.return
31
+ PulseMeter.logger = Logger.new("/dev/null")
32
+ end
33
+ config.filter_run :focus => true
34
+ config.run_all_when_everything_filtered = true
35
+ end
36
+
metadata ADDED
@@ -0,0 +1,518 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pulse_meter_visualizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.11
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ilya Averyanov
9
+ - Sergey Averyanov
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-06-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: pulse_meter_core
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: gon-sinatra
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: haml
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: sinatra
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: sinatra-partial
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: aquarium
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coffee-script
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: foreman
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: hashie
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: listen
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: mock_redis
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ - !ruby/object:Gem::Dependency
192
+ name: rack-test
193
+ requirement: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rake
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rb-fsevent
225
+ requirement: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: redcarpet
241
+ requirement: !ruby/object:Gem::Requirement
242
+ none: false
243
+ requirements:
244
+ - - ! '>='
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
247
+ type: :development
248
+ prerelease: false
249
+ version_requirements: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ - !ruby/object:Gem::Dependency
256
+ name: rspec
257
+ requirement: !ruby/object:Gem::Requirement
258
+ none: false
259
+ requirements:
260
+ - - ! '>='
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ type: :development
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ none: false
267
+ requirements:
268
+ - - ! '>='
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: simplecov
273
+ requirement: !ruby/object:Gem::Requirement
274
+ none: false
275
+ requirements:
276
+ - - ! '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ type: :development
280
+ prerelease: false
281
+ version_requirements: !ruby/object:Gem::Requirement
282
+ none: false
283
+ requirements:
284
+ - - ! '>='
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ - !ruby/object:Gem::Dependency
288
+ name: sprockets
289
+ requirement: !ruby/object:Gem::Requirement
290
+ none: false
291
+ requirements:
292
+ - - ! '>='
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ type: :development
296
+ prerelease: false
297
+ version_requirements: !ruby/object:Gem::Requirement
298
+ none: false
299
+ requirements:
300
+ - - ! '>='
301
+ - !ruby/object:Gem::Version
302
+ version: '0'
303
+ - !ruby/object:Gem::Dependency
304
+ name: timecop
305
+ requirement: !ruby/object:Gem::Requirement
306
+ none: false
307
+ requirements:
308
+ - - ! '>='
309
+ - !ruby/object:Gem::Version
310
+ version: '0'
311
+ type: :development
312
+ prerelease: false
313
+ version_requirements: !ruby/object:Gem::Requirement
314
+ none: false
315
+ requirements:
316
+ - - ! '>='
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ - !ruby/object:Gem::Dependency
320
+ name: yard
321
+ requirement: !ruby/object:Gem::Requirement
322
+ none: false
323
+ requirements:
324
+ - - ! '>='
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
327
+ type: :development
328
+ prerelease: false
329
+ version_requirements: !ruby/object:Gem::Requirement
330
+ none: false
331
+ requirements:
332
+ - - ! '>='
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ description: Customizable web interface for PulseMeter gem
336
+ email:
337
+ - av@fun-box.ru
338
+ - averyanov@gmail.com
339
+ executables: []
340
+ extensions: []
341
+ extra_rdoc_files: []
342
+ files:
343
+ - .gitignore
344
+ - .rbenv-version
345
+ - .rspec
346
+ - .rvmrc
347
+ - .travis.yml
348
+ - Gemfile
349
+ - LICENSE
350
+ - Procfile
351
+ - README.md
352
+ - Rakefile
353
+ - examples/basic.ru
354
+ - examples/basic_sensor_data.rb
355
+ - lib/pulse_meter/visualize/app.rb
356
+ - lib/pulse_meter/visualize/base.rb
357
+ - lib/pulse_meter/visualize/coffee/application.coffee
358
+ - lib/pulse_meter/visualize/coffee/collections/page_info_list.coffee
359
+ - lib/pulse_meter/visualize/coffee/collections/sensor_info_list.coffee
360
+ - lib/pulse_meter/visualize/coffee/collections/widget_list.coffee
361
+ - lib/pulse_meter/visualize/coffee/extensions.coffee
362
+ - lib/pulse_meter/visualize/coffee/models/dinamic_widget.coffee
363
+ - lib/pulse_meter/visualize/coffee/models/page_info.coffee
364
+ - lib/pulse_meter/visualize/coffee/models/sensor_info.coffee
365
+ - lib/pulse_meter/visualize/coffee/models/widget.coffee
366
+ - lib/pulse_meter/visualize/coffee/presenters/area.coffee
367
+ - lib/pulse_meter/visualize/coffee/presenters/gauge.coffee
368
+ - lib/pulse_meter/visualize/coffee/presenters/line.coffee
369
+ - lib/pulse_meter/visualize/coffee/presenters/pie.coffee
370
+ - lib/pulse_meter/visualize/coffee/presenters/series.coffee
371
+ - lib/pulse_meter/visualize/coffee/presenters/table.coffee
372
+ - lib/pulse_meter/visualize/coffee/presenters/timeline.coffee
373
+ - lib/pulse_meter/visualize/coffee/presenters/widget.coffee
374
+ - lib/pulse_meter/visualize/coffee/router.coffee
375
+ - lib/pulse_meter/visualize/coffee/views/dynamic_chart.coffee
376
+ - lib/pulse_meter/visualize/coffee/views/dynamic_widget.coffee
377
+ - lib/pulse_meter/visualize/coffee/views/page_title.coffee
378
+ - lib/pulse_meter/visualize/coffee/views/page_titles.coffee
379
+ - lib/pulse_meter/visualize/coffee/views/sensor_info_list.coffee
380
+ - lib/pulse_meter/visualize/coffee/views/widget.coffee
381
+ - lib/pulse_meter/visualize/coffee/views/widget_chart.coffee
382
+ - lib/pulse_meter/visualize/coffee/views/widget_list.coffee
383
+ - lib/pulse_meter/visualize/dsl/base.rb
384
+ - lib/pulse_meter/visualize/dsl/errors.rb
385
+ - lib/pulse_meter/visualize/dsl/layout.rb
386
+ - lib/pulse_meter/visualize/dsl/page.rb
387
+ - lib/pulse_meter/visualize/dsl/sensor.rb
388
+ - lib/pulse_meter/visualize/dsl/widget.rb
389
+ - lib/pulse_meter/visualize/dsl/widgets/area.rb
390
+ - lib/pulse_meter/visualize/dsl/widgets/gauge.rb
391
+ - lib/pulse_meter/visualize/dsl/widgets/line.rb
392
+ - lib/pulse_meter/visualize/dsl/widgets/pie.rb
393
+ - lib/pulse_meter/visualize/dsl/widgets/table.rb
394
+ - lib/pulse_meter/visualize/layout.rb
395
+ - lib/pulse_meter/visualize/page.rb
396
+ - lib/pulse_meter/visualize/public/css/application.css
397
+ - lib/pulse_meter/visualize/public/css/bootstrap.css
398
+ - lib/pulse_meter/visualize/public/css/bootstrap.min.css
399
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
400
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
401
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_glass_65_ffffff_1x400.png
402
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_dadada_1x400.png
403
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
404
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_glass_75_ffffff_1x400.png
405
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
406
+ - lib/pulse_meter/visualize/public/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
407
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_222222_256x240.png
408
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_2e83ff_256x240.png
409
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_454545_256x240.png
410
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_888888_256x240.png
411
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_cd0a0a_256x240.png
412
+ - lib/pulse_meter/visualize/public/css/images/ui-icons_f6cf3b_256x240.png
413
+ - lib/pulse_meter/visualize/public/css/jquery-ui-1.8.16.bootstrap.css
414
+ - lib/pulse_meter/visualize/public/favicon.ico
415
+ - lib/pulse_meter/visualize/public/img/glyphicons-halflings-white.png
416
+ - lib/pulse_meter/visualize/public/img/glyphicons-halflings.png
417
+ - lib/pulse_meter/visualize/public/js/application.js
418
+ - lib/pulse_meter/visualize/public/js/backbone-min.js
419
+ - lib/pulse_meter/visualize/public/js/bootstrap.js
420
+ - lib/pulse_meter/visualize/public/js/jquery-1.7.2.min.js
421
+ - lib/pulse_meter/visualize/public/js/jquery-ui-1.8.16.bootstrap.min.js
422
+ - lib/pulse_meter/visualize/public/js/jquery-ui-1.8.23.custom.min.js
423
+ - lib/pulse_meter/visualize/public/js/jquery-ui-timepicker-addon.js
424
+ - lib/pulse_meter/visualize/public/js/json2.js
425
+ - lib/pulse_meter/visualize/public/js/underscore-min.js
426
+ - lib/pulse_meter/visualize/sensor.rb
427
+ - lib/pulse_meter/visualize/series_extractor.rb
428
+ - lib/pulse_meter/visualize/views/main.haml
429
+ - lib/pulse_meter/visualize/views/sensors.haml
430
+ - lib/pulse_meter/visualize/views/widgets/area.haml
431
+ - lib/pulse_meter/visualize/views/widgets/extend_options.haml
432
+ - lib/pulse_meter/visualize/views/widgets/gauge.haml
433
+ - lib/pulse_meter/visualize/views/widgets/line.haml
434
+ - lib/pulse_meter/visualize/views/widgets/pie.haml
435
+ - lib/pulse_meter/visualize/views/widgets/table.haml
436
+ - lib/pulse_meter/visualize/widget.rb
437
+ - lib/pulse_meter/visualize/widgets/gauge.rb
438
+ - lib/pulse_meter/visualize/widgets/pie.rb
439
+ - lib/pulse_meter/visualize/widgets/timeline.rb
440
+ - lib/pulse_meter/visualizer.rb
441
+ - lib/pulse_meter_visualizer.rb
442
+ - pulse_meter_visualizer.gemspec
443
+ - spec/pulse_meter/visualize/app_spec.rb
444
+ - spec/pulse_meter/visualize/dsl/layout_spec.rb
445
+ - spec/pulse_meter/visualize/dsl/page_spec.rb
446
+ - spec/pulse_meter/visualize/dsl/sensor_spec.rb
447
+ - spec/pulse_meter/visualize/dsl/widget_spec.rb
448
+ - spec/pulse_meter/visualize/dsl/widgets/area_spec.rb
449
+ - spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb
450
+ - spec/pulse_meter/visualize/dsl/widgets/line_spec.rb
451
+ - spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb
452
+ - spec/pulse_meter/visualize/dsl/widgets/table_spec.rb
453
+ - spec/pulse_meter/visualize/layout_spec.rb
454
+ - spec/pulse_meter/visualize/page_spec.rb
455
+ - spec/pulse_meter/visualize/sensor_spec.rb
456
+ - spec/pulse_meter/visualize/series_extractor_spec.rb
457
+ - spec/pulse_meter/visualize/widgets/area_spec.rb
458
+ - spec/pulse_meter/visualize/widgets/gauge_spec.rb
459
+ - spec/pulse_meter/visualize/widgets/line_spec.rb
460
+ - spec/pulse_meter/visualize/widgets/pie_spec.rb
461
+ - spec/pulse_meter/visualize/widgets/table_spec.rb
462
+ - spec/pulse_meter/visualizer_spec.rb
463
+ - spec/shared_examples/dsl_widget.rb
464
+ - spec/shared_examples/widget.rb
465
+ - spec/spec_helper.rb
466
+ homepage: https://github.com/savonarola/pulse_meter_visualizer
467
+ licenses: []
468
+ post_install_message:
469
+ rdoc_options: []
470
+ require_paths:
471
+ - lib
472
+ required_ruby_version: !ruby/object:Gem::Requirement
473
+ none: false
474
+ requirements:
475
+ - - ! '>='
476
+ - !ruby/object:Gem::Version
477
+ version: 1.9.2
478
+ required_rubygems_version: !ruby/object:Gem::Requirement
479
+ none: false
480
+ requirements:
481
+ - - ! '>='
482
+ - !ruby/object:Gem::Version
483
+ version: '0'
484
+ segments:
485
+ - 0
486
+ hash: -1763607849573796280
487
+ requirements: []
488
+ rubyforge_project:
489
+ rubygems_version: 1.8.23
490
+ signing_key:
491
+ specification_version: 3
492
+ summary: Customizable web interface for lightweight Redis-based metrics aggregator
493
+ and processor PulseMeter
494
+ test_files:
495
+ - spec/pulse_meter/visualize/app_spec.rb
496
+ - spec/pulse_meter/visualize/dsl/layout_spec.rb
497
+ - spec/pulse_meter/visualize/dsl/page_spec.rb
498
+ - spec/pulse_meter/visualize/dsl/sensor_spec.rb
499
+ - spec/pulse_meter/visualize/dsl/widget_spec.rb
500
+ - spec/pulse_meter/visualize/dsl/widgets/area_spec.rb
501
+ - spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb
502
+ - spec/pulse_meter/visualize/dsl/widgets/line_spec.rb
503
+ - spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb
504
+ - spec/pulse_meter/visualize/dsl/widgets/table_spec.rb
505
+ - spec/pulse_meter/visualize/layout_spec.rb
506
+ - spec/pulse_meter/visualize/page_spec.rb
507
+ - spec/pulse_meter/visualize/sensor_spec.rb
508
+ - spec/pulse_meter/visualize/series_extractor_spec.rb
509
+ - spec/pulse_meter/visualize/widgets/area_spec.rb
510
+ - spec/pulse_meter/visualize/widgets/gauge_spec.rb
511
+ - spec/pulse_meter/visualize/widgets/line_spec.rb
512
+ - spec/pulse_meter/visualize/widgets/pie_spec.rb
513
+ - spec/pulse_meter/visualize/widgets/table_spec.rb
514
+ - spec/pulse_meter/visualizer_spec.rb
515
+ - spec/shared_examples/dsl_widget.rb
516
+ - spec/shared_examples/widget.rb
517
+ - spec/spec_helper.rb
518
+ has_rdoc: