focuslight 0.1.1

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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/.env +13 -0
  3. data/.gitignore +21 -0
  4. data/.travis.yml +9 -0
  5. data/CHANGELOG.md +21 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/Procfile +3 -0
  9. data/Procfile-gem +3 -0
  10. data/README.md +162 -0
  11. data/Rakefile +37 -0
  12. data/bin/focuslight +7 -0
  13. data/config.ru +6 -0
  14. data/focuslight.gemspec +41 -0
  15. data/lib/focuslight.rb +6 -0
  16. data/lib/focuslight/cli.rb +56 -0
  17. data/lib/focuslight/config.rb +27 -0
  18. data/lib/focuslight/data.rb +258 -0
  19. data/lib/focuslight/graph.rb +240 -0
  20. data/lib/focuslight/init.rb +13 -0
  21. data/lib/focuslight/logger.rb +89 -0
  22. data/lib/focuslight/rrd.rb +393 -0
  23. data/lib/focuslight/validator.rb +220 -0
  24. data/lib/focuslight/version.rb +3 -0
  25. data/lib/focuslight/web.rb +614 -0
  26. data/lib/focuslight/worker.rb +97 -0
  27. data/public/css/bootstrap.min.css +7 -0
  28. data/public/favicon.ico +0 -0
  29. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  30. data/public/fonts/glyphicons-halflings-regular.svg +229 -0
  31. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  32. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  33. data/public/js/bootstrap.min.js +7 -0
  34. data/public/js/jquery-1.10.2.min.js +6 -0
  35. data/public/js/jquery-1.10.2.min.map +0 -0
  36. data/public/js/jquery.storageapi.min.js +2 -0
  37. data/public/js/site.js +214 -0
  38. data/spec/spec_helper.rb +3 -0
  39. data/spec/syntax_spec.rb +9 -0
  40. data/spec/validator_predefined_rules_spec.rb +177 -0
  41. data/spec/validator_result_spec.rb +27 -0
  42. data/spec/validator_rule_spec.rb +68 -0
  43. data/spec/validator_spec.rb +121 -0
  44. data/view/add_complex.erb +143 -0
  45. data/view/base.erb +200 -0
  46. data/view/docs.erb +125 -0
  47. data/view/edit.erb +102 -0
  48. data/view/edit_complex.erb +158 -0
  49. data/view/index.erb +19 -0
  50. data/view/list.erb +22 -0
  51. data/view/view.erb +42 -0
  52. data/view/view_graph.erb +16 -0
  53. metadata +345 -0
data/view/index.erb ADDED
@@ -0,0 +1,19 @@
1
+ <div class="panel-group">
2
+ <% services.each do |service| %>
3
+ <div class="panel panel-default">
4
+ <div class="panel-heading">
5
+ <h2 class="panel-title">
6
+ <% if pathinfo.size < 1 %>
7
+ <a href="#service_<%= service[:name] %>" id="for_service_<%= service[:name] %>" data-toggle="collapse"><span class="glyphicon glyphicon-chevron-down" style="font-size:0.5em; vertical-align: text-middle"></span></a>
8
+ <% end %>
9
+ <a href="<%= url_for linkpath([service[:name]]) %>"><%= service[:name] %></a>
10
+ </h2>
11
+ </div>
12
+ <ul class="<%= pathinfo.size < 1 ? 'service_section ' : '' %>list-group panel-collapse in" id="service_<%= service[:name] %>">
13
+ <% service[:sections].each do |section| %>
14
+ <li class="list-group-item "><a href="<%= url_for linkpath([ service[:name], section ]) %>"><%= section %></a></li>
15
+ <% end %>
16
+ </ul>
17
+ </div>
18
+ <% end %>
19
+ </div>
data/view/list.erb ADDED
@@ -0,0 +1,22 @@
1
+ <ul class="pagination pagination-sm pull-right" style="margin: 10px 0px 0px">
2
+ <% section_path = linkpath(pathinfo[0..1]) %>
3
+ <li class="prev <%= params[:t] == 'sh' ? 'active' : '' %>"><a href="<%= url_for section_path, t:'sh' %>">hour・8hours(1min)</a></li>
4
+ <li class="prev <%= params[:t] == 'sd' ? 'active' : '' %>"><a href="<%= url_for section_path, t:'sd' %>">day・3days(1min)</a></li>
5
+ <li class="prev <%= params[:t] == 'h' ? 'active' : '' %>"><a href="<%= url_for section_path, t:'h' %>">hour・halfday</a></li>
6
+ <li class="<%= ['h','m','sh','sd'].include?(params[:t]) ? '' : 'active' %>"><a href="<%= url_for section_path %>">day・week</a></li>
7
+ <li class="next <%= params[:t] == 'm' ? 'active' : '' %>"><a href="<%= url_for section_path, t:'m' %>">month・year</a></li>
8
+ </ul>
9
+ <div class="clearfix"></div>
10
+ <br />
11
+
12
+ <% term_arg = params[:t] ? { t: params[:t] } : {} %>
13
+ <div class="panel-group">
14
+ <% graphs.each do |graph| %>
15
+ <%# : my $index = $~graph.index; %> <!-- index? -->
16
+ <%== erb :view, layout: false, locals: { graph: graph, listing: true, current_term: params[:t] } %>
17
+ <% end %>
18
+ </div>
19
+
20
+ <p style="text-align: right;margin:20px 0px">
21
+ <button type="button" class="btn btn-default btn-danger btn-sm hxr_confirm_button" data-confirm="remove all graphs in '<%= params[:section_name] %>' section?" data-uri="<%= url_for linkpath(pathinfo[0..1], '/delete') %>"><span class="glyphicon glyphicon-warning-sign"></span> remove all graphs in this section</button>
22
+ </p>
data/view/view.erb ADDED
@@ -0,0 +1,42 @@
1
+ <div class="panel panel-default">
2
+ <div class="panel-heading">
3
+ <h2 class="panel-title">
4
+ <% if listing %>
5
+ <a href="#graph_<%= graph.complex? ? 'complex_' : '' %><%= graph.id %>" id="for_graph_<%= graph.complex? ? 'complex_' : '' %><%= graph.id %>" data-toggle="collapse"><span class="glyphicon glyphicon-chevron-down" style="font-size:0.5em; vertical-align: text-middle"></span></a>
6
+ <% end %>
7
+ <% view_prefix = graph.complex? ? '/view_complex' : '/view_graph' %>
8
+ <a href="<%= url_for linkpath(graph.path, view_prefix), { t: current_term } %>" data-id="<%= graph.id %>"><%= graph.graph %></a>
9
+ <small style="font-size:0.8em"><%= graph.description %></small>
10
+ </h2>
11
+ </div>
12
+ </div>
13
+
14
+ <p style="margin: 2px 0px 4px">
15
+ <% if graph.complex? %>
16
+ <a class="label label-success" style="cursor: pointer" href="<%= url_for "/edit_complex/#{graph.id}" %>"><span class="glyphicon glyphicon-wrench"></span> Setting</a>
17
+ <span class="label label-warning">Complex Graph</span>
18
+ <% else %>
19
+ <a class="label label-success" style="cursor: pointer" href="<%= url_for linkpath(graph.path, '/edit') %>"><span class="glyphicon glyphicon-wrench"></span> Setting</a>
20
+ <span class="label label-default">current</span> <%= format_number graph.number %>
21
+ <span class="label label-default">mode</span> <%= graph.mode %>
22
+ <% end %>
23
+ <span class="label label-default">created_at</span> <%= graph.created_at %>
24
+ <span class="label label-default">updated_at</span> <%= graph.updated_at %>
25
+ </p>
26
+
27
+ <div id="graph_<%= graph.complex? ? 'complex_' : '' %><%= graph.id %>" class="<%= listing ? 'section_graphs' : '' %>panel-collapse in">
28
+ <table style="margin: 0 auto 10px">
29
+ <% terms = case current_term when 'h' then ['h','n'] when 'm' then ['m','y'] when 'sh' then ['sh','s8h'] when 'sd' then ['sd','s3d'] else ['d','w'] end %>
30
+ <% if graph.complex? %>
31
+ <tr>
32
+ <td><img src="<%= url_for("/graph/#{graph.complex_graph}", t: terms[0], sumup: (graph.sumup ? '1' : '0')) %>" class="graph" /></td>
33
+ <td><img src="<%= url_for("/graph/#{graph.complex_graph}", t: terms[1], sumup: (graph.sumup ? '1' : '0')) %>" class="graph" /></td>
34
+ </tr>
35
+ <% else %>
36
+ <tr>
37
+ <td><img src="<%= url_for linkpath(graph.path, '/graph'), t: terms[0] %>" class="graph" /></td>
38
+ <td><img src="<%= url_for linkpath(graph.path, '/graph'), t: terms[1] %>" class="graph" /></td>
39
+ </tr>
40
+ <% end %>
41
+ </table>
42
+ </div>
@@ -0,0 +1,16 @@
1
+ <% link_path = linkpath(pathinfo[0..2], (view_complex ? '/view_complex' : '/view_graph')) %>
2
+ <ul class="pagination pagination-sm pull-right" style="margin: 10px 0px 0px">
3
+ <li class="prev <%= params[:t] == 'sh' ? 'active' : '' %>"><a href="<%= url_for link_path, t:'sh' %>">hour・8hours(1min)</a></li>
4
+ <li class="prev <%= params[:t] == 'sd' ? 'active' : '' %>"><a href="<%= url_for link_path, t:'sd' %>">day・3days(1min)</a></li>
5
+ <li class="prev <%= params[:t] == 'h' ? 'active' : '' %>"><a href="<%= url_for link_path, t:'h' %>">hour・halfday</a></li>
6
+ <li class="<%= ['h','m','sh','sd'].include?(params[:t]) ? '' : 'activate' %>"><a href="<%= url_for link_path %>">day・week</a></li>
7
+ <li class="next <%= params[:t] == 'm' ? 'active' : '' %>"><a href="<%= url_for link_path, t:'m' %>">month・year</a></li>
8
+ </ul>
9
+ <div class="clearfix"></div>
10
+ <br />
11
+
12
+ <div class="panel-group">
13
+ <% graphs.each do |graph| %>
14
+ <%== erb :view, layout: false, locals: { graph: graph, listing: true, current_term: params[:t] } %>
15
+ <% end %>
16
+ </div>
metadata ADDED
@@ -0,0 +1,345 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: focuslight
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - TAGOMORI Satoshi
8
+ - Naotoshi Seo
9
+ - Shota Fukumori (sora_h)
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-02-27 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '1.3'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rspec
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: pry
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: pry-nav
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: dotenv
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: foreman
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: thor
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: sinatra
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: sinatra-contrib
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :runtime
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: erubis
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: unicorn
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ - !ruby/object:Gem::Dependency
184
+ name: sequel
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: sqlite3
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: mysql2
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: librrd
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - '>='
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :runtime
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: rrd-ffi
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :runtime
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - '>='
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ description: Ruby port of GrowthForecast
254
+ email:
255
+ - tagomoris@gmail.com
256
+ - sonots@gmail.com
257
+ - her@sorah.jp
258
+ executables:
259
+ - focuslight
260
+ extensions: []
261
+ extra_rdoc_files: []
262
+ files:
263
+ - .env
264
+ - .gitignore
265
+ - .travis.yml
266
+ - CHANGELOG.md
267
+ - Gemfile
268
+ - LICENSE.txt
269
+ - Procfile
270
+ - Procfile-gem
271
+ - README.md
272
+ - Rakefile
273
+ - bin/focuslight
274
+ - config.ru
275
+ - focuslight.gemspec
276
+ - lib/focuslight.rb
277
+ - lib/focuslight/cli.rb
278
+ - lib/focuslight/config.rb
279
+ - lib/focuslight/data.rb
280
+ - lib/focuslight/graph.rb
281
+ - lib/focuslight/init.rb
282
+ - lib/focuslight/logger.rb
283
+ - lib/focuslight/rrd.rb
284
+ - lib/focuslight/validator.rb
285
+ - lib/focuslight/version.rb
286
+ - lib/focuslight/web.rb
287
+ - lib/focuslight/worker.rb
288
+ - log/.gitkeep
289
+ - public/css/bootstrap.min.css
290
+ - public/favicon.ico
291
+ - public/fonts/glyphicons-halflings-regular.eot
292
+ - public/fonts/glyphicons-halflings-regular.svg
293
+ - public/fonts/glyphicons-halflings-regular.ttf
294
+ - public/fonts/glyphicons-halflings-regular.woff
295
+ - public/js/bootstrap.min.js
296
+ - public/js/jquery-1.10.2.min.js
297
+ - public/js/jquery-1.10.2.min.map
298
+ - public/js/jquery.storageapi.min.js
299
+ - public/js/site.js
300
+ - spec/spec_helper.rb
301
+ - spec/syntax_spec.rb
302
+ - spec/validator_predefined_rules_spec.rb
303
+ - spec/validator_result_spec.rb
304
+ - spec/validator_rule_spec.rb
305
+ - spec/validator_spec.rb
306
+ - view/add_complex.erb
307
+ - view/base.erb
308
+ - view/docs.erb
309
+ - view/edit.erb
310
+ - view/edit_complex.erb
311
+ - view/index.erb
312
+ - view/list.erb
313
+ - view/view.erb
314
+ - view/view_graph.erb
315
+ homepage: https://github.com/tagomoris/focuslight
316
+ licenses:
317
+ - MIT
318
+ metadata: {}
319
+ post_install_message:
320
+ rdoc_options: []
321
+ require_paths:
322
+ - lib
323
+ required_ruby_version: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - '>='
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ required_rubygems_version: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - '>='
331
+ - !ruby/object:Gem::Version
332
+ version: '0'
333
+ requirements: []
334
+ rubyforge_project:
335
+ rubygems_version: 2.0.3
336
+ signing_key:
337
+ specification_version: 4
338
+ summary: Lightning Fast Graphing/Visualization
339
+ test_files:
340
+ - spec/spec_helper.rb
341
+ - spec/syntax_spec.rb
342
+ - spec/validator_predefined_rules_spec.rb
343
+ - spec/validator_result_spec.rb
344
+ - spec/validator_rule_spec.rb
345
+ - spec/validator_spec.rb