get_stats 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/stats.rb +55 -94
- data/lib/get_stats/version.rb +1 -1
- data/lib/rails/generators/get_stats/templates/schema.rb +0 -9
- metadata +2 -2
data/app/models/stats.rb
CHANGED
@@ -12,129 +12,90 @@ class Stats < ActiveRecord::Base
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.
|
16
|
-
end_date = Date.today
|
17
|
-
case time_range
|
18
|
-
when 'week'
|
19
|
-
start_date = end_date - 1.week
|
20
|
-
when 'month'
|
21
|
-
start_date = end_date - 1.month
|
22
|
-
else
|
23
|
-
start_date = end_date - 1.month
|
24
|
-
end
|
25
|
-
if !report_start_date.nil? && !report_end_date.nil?
|
26
|
-
start_date = report_start_date.to_date
|
27
|
-
end_date = report_end_date.to_date
|
28
|
-
end
|
29
|
-
@stats = Stats.find(:all,:conditions =>["stat_name=? and stat_date >=? and stat_date <=?",field,start_date,end_date])
|
15
|
+
def self.process_daily_stats(field, stats, start_date,end_date)
|
30
16
|
@return_stat = []
|
31
|
-
|
32
|
-
|
33
|
-
today_stats = @stats.select{|c| c if c.stat_date == now }
|
17
|
+
while (start_date <= end_date) do
|
18
|
+
today_stats = @stats.select{|c| c if c.stat_date == start_date }
|
34
19
|
if today_stats.blank?
|
35
|
-
@return_stat << [field,
|
20
|
+
@return_stat << [field,start_date,0]
|
36
21
|
else
|
37
|
-
@return_stat << [field,today_stats[0].stat_date,today_stats[0].count]
|
22
|
+
@return_stat << [field,today_stats[0].stat_date,today_stats[0].count]
|
38
23
|
end
|
39
|
-
|
24
|
+
start_date = start_date + 1
|
40
25
|
end
|
41
26
|
return @return_stat
|
42
|
-
end
|
27
|
+
end
|
43
28
|
|
44
|
-
def self.
|
29
|
+
def self.find_date_range(time_range)
|
45
30
|
end_date = Date.today
|
46
31
|
case time_range
|
47
32
|
when 'week'
|
48
33
|
start_date = end_date - 1.week
|
49
|
-
when 'last_week'
|
50
|
-
start_date = end_date - 1.week
|
51
34
|
when 'month'
|
52
35
|
start_date = end_date - 1.month
|
53
|
-
when 'last_month'
|
54
|
-
start_date = end_date - 1.month
|
55
36
|
else
|
56
|
-
start_date = end_date - 1.
|
37
|
+
start_date = end_date - 1.week
|
57
38
|
end
|
39
|
+
return start_date, end_date
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.show(field,time_range="week",report_start_date=nil,report_end_date=nil)
|
43
|
+
start_date,end_date = find_date_range(time_range)
|
58
44
|
if !report_start_date.nil? && !report_end_date.nil?
|
59
45
|
start_date = report_start_date.to_date
|
60
46
|
end_date = report_end_date.to_date
|
61
47
|
end
|
62
48
|
@stats = Stats.find(:all,:conditions =>["stat_name=? and stat_date >=? and stat_date <=?",field,start_date,end_date])
|
63
|
-
@
|
64
|
-
now = start_date
|
65
|
-
while (now <= end_date) do
|
66
|
-
today_stats = @stats.select{|c| c if c.stat_date == now }
|
67
|
-
if today_stats.blank?
|
68
|
-
@return_stat << [field,now,0]
|
69
|
-
else
|
70
|
-
@return_stat << [field,today_stats[0].stat_date,today_stats[0].count]
|
71
|
-
end
|
72
|
-
now = now + 1.day
|
73
|
-
end
|
74
|
-
return @return_stat
|
49
|
+
process_daily_stats(field, @stats,start_date,end_date)
|
75
50
|
end
|
76
51
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
if report_start_date.nil? || report_start_date >= report_end_date
|
83
|
-
report_start_date = report_end_date - 1.month
|
84
|
-
end
|
85
|
-
report_start_date = report_start_date - report_start_date.wday + 1
|
86
|
-
@stats = Stats.find(:all,:conditions =>["stat_name=? and stat_date >=? and stat_date <=?",field,report_start_date,report_end_date])
|
87
|
-
now = report_start_date
|
88
|
-
@return_stat = []
|
89
|
-
week_collection = 0
|
90
|
-
while (now <= report_end_date) do
|
91
|
-
today_stats = @stats.select{|c| c if c.stat_date == now }
|
92
|
-
if !today_stats.blank?
|
93
|
-
week_collection = week_collection + today_stats[0].count
|
94
|
-
end
|
95
|
-
if now.monday? && now != report_start_date
|
96
|
-
@return_stat << [field,now - 1.week ,week_collection]
|
97
|
-
week_collection = 0
|
98
|
-
end
|
52
|
+
class << self
|
53
|
+
alias :daily_stats :show
|
54
|
+
end
|
99
55
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
56
|
+
["monthly","weekly"].each do |name|
|
57
|
+
class_eval %{ def self.#{name}_stats(field,report_start_date=nil,report_end_date=nil)
|
58
|
+
start_date,end_date = process_dates("#{name}",report_start_date,report_end_date)
|
59
|
+
process_weekly_and_monthly_stats("#{name}",field,start_date,end_date)
|
60
|
+
end
|
61
|
+
}
|
106
62
|
end
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
end
|
112
|
-
|
113
|
-
if report_start_date.nil? || report_start_date >= report_end_date
|
114
|
-
report_start_date = report_end_date - 4.months
|
115
|
-
end
|
116
|
-
report_start_date = report_start_date - report_start_date.mday + 1
|
117
|
-
@stats = Stats.find(:all,:conditions =>["stat_name=? and stat_date >=? and stat_date <=?",field,report_start_date,report_end_date])
|
118
|
-
now = report_start_date
|
63
|
+
|
64
|
+
|
65
|
+
def self.process_weekly_and_monthly_stats(method_type,field,start_date,end_date)
|
66
|
+
@stats = Stats.find(:all,:conditions =>["stat_name=? and stat_date >=? and stat_date <=?",field,start_date,end_date])
|
119
67
|
@return_stat = []
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
if
|
124
|
-
|
68
|
+
stat_collection = 0
|
69
|
+
original_start_date = start_date
|
70
|
+
while (start_date <= end_date) do
|
71
|
+
today_stats = @stats.select{|c| c if c.stat_date == start_date }
|
72
|
+
stat_collection = stat_collection + today_stats[0].count if !today_stats.blank?
|
73
|
+
conitions_day = (method_type == "weekly" ? start_date.monday? : (start_date.mday == 1) )
|
74
|
+
if conitions_day && start_date != original_start_date
|
75
|
+
@return_stat << [field,(method_type == "weekly" ? start_date - 1.week : start_date - 1.month ),stat_collection]
|
76
|
+
stat_collection = 0
|
125
77
|
end
|
126
|
-
if
|
127
|
-
|
128
|
-
month_collection = 0
|
129
|
-
end
|
130
|
-
if now + 1.day == report_end_date && (now + 1.day).mday != 1
|
131
|
-
@return_stat << [field,now ,month_collection]
|
78
|
+
if start_date + 1.day == end_date && !conitions_day
|
79
|
+
@return_stat << [field,start_date,stat_collection]
|
132
80
|
end
|
133
|
-
|
81
|
+
start_date = start_date + 1.day
|
134
82
|
end
|
135
83
|
return @return_stat
|
136
|
-
end
|
137
|
-
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.process_dates(method_type,start_date,end_date)
|
87
|
+
end_date = Date.today if end_date.nil?
|
88
|
+
if start_date.nil? || start_date >= end_date
|
89
|
+
start_date = end_date - 4.months if method_type == "monthly"
|
90
|
+
start_date = end_date - 1.month if method_type == "weekly"
|
91
|
+
end
|
92
|
+
if method_type == "weekly"
|
93
|
+
start_date = start_date - start_date.wday + 1
|
94
|
+
else
|
95
|
+
start_date = start_date - start_date.mday + 1
|
96
|
+
end
|
97
|
+
return start_date, end_date
|
98
|
+
end
|
138
99
|
|
139
100
|
def self.show_all_stat_names
|
140
101
|
@stats = Stats.find(:all,:group => 'stat_name')
|
data/lib/get_stats/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: get_stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Dead simply statistics for Rails.
|
15
15
|
email:
|