google_otg 1.0.17 → 1.0.18
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/google_otg.gemspec +1 -1
- data/lib/google_otg.rb +23 -22
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.18
|
data/google_otg.gemspec
CHANGED
data/lib/google_otg.rb
CHANGED
@@ -4,7 +4,7 @@ require 'uri'
|
|
4
4
|
|
5
5
|
module GoogleOtg
|
6
6
|
|
7
|
-
|
7
|
+
DEFAULT_INCREMENT = 1 # 1 day
|
8
8
|
|
9
9
|
def google_line_graph(hits, args = {})
|
10
10
|
|
@@ -25,10 +25,6 @@ module GoogleOtg
|
|
25
25
|
shape_markers = [['D','6699CC',0,'-1.0',4],['D','FF9933',1,'-1.0',2],['o','0000ff',0,'-1.0',8],['o','FF6600',1,'-1.0',8]]
|
26
26
|
line_colors = ['6699CC','FF9933']
|
27
27
|
|
28
|
-
lower_bound_time = nil
|
29
|
-
hits.map{|series| lower_bound_time = series[0] if !lower_bound_time || series[0].created_at < lower_bound_time.created_at}
|
30
|
-
args[:lower_bound_time] = lower_bound_time if lower_bound_time
|
31
|
-
|
32
28
|
hits.map{|h|
|
33
29
|
converted = hits_to_gchart_range(h, args)
|
34
30
|
data.push(converted[:points])
|
@@ -71,16 +67,12 @@ module GoogleOtg
|
|
71
67
|
src = args.has_key?(:src) ? args[:src] : "http://www.google.com/analytics/static/flash/OverTimeGraph.swf"
|
72
68
|
|
73
69
|
if hits.is_a?(Array) and hits[0].is_a?(Array)
|
74
|
-
lower_bound_time = nil
|
75
|
-
hits.map{|series| lower_bound_time = series[0] if !lower_bound_time || (series[0] && series[0].created_at < lower_bound_time.created_at)}
|
76
|
-
args[:lower_bound_time] = lower_bound_time if lower_bound_time
|
77
|
-
|
78
70
|
range = hits.map{|h| hits_to_otg_range(h, args) }
|
79
71
|
else
|
80
72
|
range = [hits_to_otg_range(hits, args)]
|
81
73
|
end
|
82
74
|
vars = range_to_flashvars(range)
|
83
|
-
|
75
|
+
|
84
76
|
html = <<-eos
|
85
77
|
<embed width="100%" height="#{height}"
|
86
78
|
wmode="opaque" salign="tl" scale="noScale" quality="high" bgcolor="#FFFFFF"
|
@@ -222,7 +214,8 @@ eos
|
|
222
214
|
time_fn = args.has_key?(:time_fn) ? args[:time_fn] : lambda {|h|
|
223
215
|
return tz.local(h.created_at.year, h.created_at.month, h.created_at.day, h.created_at.hour, h.created_at.min, h.created_at.sec) # create zoned time
|
224
216
|
}
|
225
|
-
|
217
|
+
increment = args.has_key?(:increment) ? args[:increment] : DEFAULT_INCREMENT
|
218
|
+
|
226
219
|
x_label_format = args.has_key?(:x_label_format) ? args[:x_label_format] : "%A %I:%M%p"
|
227
220
|
|
228
221
|
max_y = 0
|
@@ -236,18 +229,22 @@ eos
|
|
236
229
|
points = []
|
237
230
|
point_dates = []
|
238
231
|
|
239
|
-
|
240
|
-
|
241
|
-
now_floored = tz.local(now_days.year, now_days.month, now_days.day,
|
242
|
-
now_minutes.hour, now_minutes.min, now_minutes.sec)
|
243
|
-
|
244
|
-
if args[:lower_bound_time]
|
245
|
-
current = time_fn.call(args[:lower_bound_time])
|
232
|
+
if args[:range] && args[:range][:lower_bound]
|
233
|
+
current = args[:range][:lower_bound]
|
246
234
|
else
|
247
235
|
current = hits.length > 0 ? time_fn.call(hits[0]) : now_floored
|
248
236
|
end
|
237
|
+
|
238
|
+
if args[:range] && args[:range][:upper_bound]
|
239
|
+
now_floored = args[:range][:upper_bound]
|
240
|
+
else
|
241
|
+
now_days = tz.now # use this get the right year, month and day
|
242
|
+
now_minutes = tz.at((now_days.to_i/(60*(increment * 1440)))*(60*(increment * 1440))).gmtime
|
243
|
+
now_floored = tz.local(now_days.year, now_days.month, now_days.day,
|
244
|
+
now_minutes.hour, now_minutes.min, now_minutes.sec)
|
245
|
+
end
|
249
246
|
|
250
|
-
while (current < now_floored +
|
247
|
+
while (current < now_floored + increment.days && increment > 0) do
|
251
248
|
if hits_dict[current]
|
252
249
|
count = hits_dict[current].count.to_i
|
253
250
|
max_y = count if count > max_y
|
@@ -268,10 +265,14 @@ eos
|
|
268
265
|
end
|
269
266
|
# Save the date for the x labels later
|
270
267
|
point_dates.push({:key => date_key, :value => date_value})
|
271
|
-
current = current +
|
272
|
-
break if points.length >
|
268
|
+
current = current + increment.days
|
269
|
+
break if points.length > 365 # way too long dudes - no data fetching over 1 yr
|
273
270
|
end
|
274
|
-
|
271
|
+
|
272
|
+
if points.length > 100
|
273
|
+
points = points[points.length - 100..points.length - 1]
|
274
|
+
end
|
275
|
+
|
275
276
|
## Setup Y axis labels ##
|
276
277
|
max_y = args.has_key?(:max_y) ? (args[:max_y] > max_y ? args[:max_y] : max_y) : max_y
|
277
278
|
|