stat_board 0.1.7 → 0.1.8

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.
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env rake
2
+ puts ENV['BUNDLE_GEMFILE'].inspect
2
3
  begin
3
4
  require 'bundler/setup'
5
+ require 'appraisal'
4
6
  rescue LoadError
5
7
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
8
  end
@@ -27,6 +29,6 @@ Bundler::GemHelper.install_tasks
27
29
 
28
30
  require 'rspec/core/rake_task'
29
31
 
30
- RSpec::Core::RakeTask.new(:spec)
32
+ RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
31
33
 
32
34
  task :default => :spec
@@ -3,36 +3,13 @@ module StatBoard
3
3
 
4
4
  private
5
5
 
6
- helper_method :date_steps, :first_day_ever, :resources_by_date
7
-
8
- def date_steps
9
- @date_steps ||= date_range.count / [date_range.count, 50].min
10
- end
11
-
12
- def first_day_ever
13
- @first_day_ever ||= first_day_of_each_model.sort.first
14
- end
15
-
16
- def resources_by_date(klass_name)
17
- klass = klass_name.to_s.constantize
18
- created_ats = klass.pluck(:created_at).map(&:to_date)
19
-
20
- date_range.step(date_steps).map do |date|
21
- created_ats.count{|c_a| c_a < date}
22
- end.to_s
23
- end
24
-
25
- def first_day_of_each_model
26
- StatBoard.models.map { |m| first_day_of(m) }
27
- end
28
-
29
- def first_day_of(klass_name)
30
- klass = klass_name.to_s.constantize
31
- klass.order("created_at ASC").first.try(:created_at) || Time.now
6
+ [:date_steps, :first_day_ever, :resources_by_date].each do |method|
7
+ helper_method method
8
+ delegate method, :to => :graph_helper
32
9
  end
33
10
 
34
- def date_range
35
- @date_range ||= first_day_ever.to_date..Date.today
11
+ def graph_helper
12
+ @graph_helper ||= GraphHelper.new
36
13
  end
37
14
 
38
15
  end
@@ -0,0 +1,43 @@
1
+ module StatBoard
2
+ class GraphHelper
3
+
4
+ # number of days per interval on the graph's x axis
5
+ def date_steps
6
+ @date_steps ||= date_range.count / [date_range.count, 50].min
7
+ end
8
+
9
+ def first_day_ever
10
+ @first_day_ever ||= first_day_of_each_model.sort.first
11
+ end
12
+
13
+ # a string of the array of the count of (klass) objects
14
+ # along the date_range, on every displayed interval
15
+ def resources_by_date(klass_name)
16
+ klass = klass_name.to_s.constantize
17
+ created_ats = klass.pluck(:created_at).compact.map(&:to_date)
18
+
19
+ date_range.step(date_steps).map do |date|
20
+ created_ats.count{|c_a| c_a < date}
21
+ end.to_s
22
+ end
23
+
24
+ private
25
+
26
+ # range of dates shown on the graph (array of days)
27
+ def date_range
28
+ @date_range ||= first_day_ever.to_date..Date.today
29
+ end
30
+
31
+ def first_day_of_each_model
32
+ StatBoard.models.map { |m| first_day_of(m) }
33
+ end
34
+
35
+ # returns the earliest `created_at` of a given class
36
+ # returns `Time.now` if none is available
37
+ def first_day_of(klass_name)
38
+ klass = klass_name.to_s.constantize
39
+ klass.order("created_at ASC").first.try(:created_at) || Time.now
40
+ end
41
+
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module StatBoard
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
data/lib/stat_board.rb CHANGED
@@ -3,6 +3,7 @@ require "stat_board/reports/report"
3
3
  require "stat_board/reports/overall_report"
4
4
  require "stat_board/reports/monthly_report"
5
5
  require "stat_board/reports/weekly_report"
6
+ require "stat_board/graph_helper"
6
7
 
7
8
  module StatBoard
8
9
  mattr_accessor :models, :title, :display_graph, :username, :password
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stat_board
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-15 00:00:00.000000000 Z
12
+ date: 2014-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '3.2'
21
+ version: 3.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '3.2'
29
+ version: 3.2.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: sqlite3
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -128,17 +128,49 @@ dependencies:
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
- - - ~>
131
+ - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
- version: 0.9.1
133
+ version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements:
139
- - - ~>
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: appraisal
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: rake
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
140
172
  - !ruby/object:Gem::Version
141
- version: 0.9.1
173
+ version: '0'
142
174
  description: Simple dashboard of records created this week, this month, and all time,
143
175
  mountable as a Rails Engine.
144
176
  email:
@@ -157,6 +189,7 @@ files:
157
189
  - app/views/stat_board/stats/index.html.erb
158
190
  - config/routes.rb
159
191
  - lib/stat_board/engine.rb
192
+ - lib/stat_board/graph_helper.rb
160
193
  - lib/stat_board/reports/monthly_report.rb
161
194
  - lib/stat_board/reports/overall_report.rb
162
195
  - lib/stat_board/reports/report.rb
@@ -188,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
221
  version: '0'
189
222
  requirements: []
190
223
  rubyforge_project:
191
- rubygems_version: 1.8.25
224
+ rubygems_version: 1.8.23.2
192
225
  signing_key:
193
226
  specification_version: 3
194
227
  summary: Simple dashboard of records created this week, this month, and all time,