focuslight 0.1.1

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