google_otg 1.0.11 → 1.0.12

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 (4) hide show
  1. data/VERSION +1 -1
  2. data/google_otg.gemspec +2 -2
  3. data/lib/google_otg.rb +53 -33
  4. metadata +2 -2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.11
1
+ 1.0.12
data/google_otg.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{google_otg}
8
- s.version = "1.0.11"
8
+ s.version = "1.0.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["esilverberg"]
12
- s.date = %q{2009-10-01}
12
+ s.date = %q{2009-10-05}
13
13
  s.description = %q{Include Google's Over Time Graph in your app}
14
14
  s.email = %q{eric@ericsilverberg.com}
15
15
  s.extra_rdoc_files = [
data/lib/google_otg.rb CHANGED
@@ -22,7 +22,7 @@ module GoogleOtg
22
22
  data = []
23
23
 
24
24
  if hits[0].is_a?(Array)
25
- shape_markers = [['o','0000ff',0,'-1.0',6],['o','FF6600',1,'-1.0',6]]
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
28
  hits.map{|h|
@@ -33,8 +33,8 @@ module GoogleOtg
33
33
  }
34
34
 
35
35
  else
36
- shape_markers = ['o','0000ff',0,'-1.0',6]
37
- line_colors = '6699CC'
36
+ shape_markers = [['D','6699CC',0,'-1.0',4],['o','0000ff',0,'-1.0',8]]
37
+ line_colors = ['6699CC']
38
38
 
39
39
  converted = hits_to_gchart_range(hits, args)
40
40
  data.push(converted[:points])
@@ -65,7 +65,11 @@ module GoogleOtg
65
65
  height = args.has_key?(:height) ? args[:height] : 125
66
66
  src = args.has_key?(:src) ? args[:src] : "http://www.google.com/analytics/static/flash/OverTimeGraph.swf"
67
67
 
68
- range = hits_to_otg_range(hits, args)
68
+ if hits.is_a?(Array) and hits[0].is_a?(Array)
69
+ range = hits.map{|h| hits_to_otg_range(h, args) }
70
+ else
71
+ range = [hits_to_otg_range(hits, args)]
72
+ end
69
73
  vars = range_to_flashvars(range)
70
74
 
71
75
  html = <<-eos
@@ -286,17 +290,50 @@ eos
286
290
  end
287
291
  protected :hits_to_range
288
292
 
289
- def range_to_flashvars(args = {})
290
- x_labels = args[:x_labels]
291
- y_labels = args[:y_labels]
292
- label = args[:label]
293
- points = args[:points]
293
+
294
+ PRIMARY_STYLE = {
295
+ :PointShape => "CIRCLE",
296
+ :PointRadius => 9,
297
+ :FillColor => 30668,
298
+ :FillAlpha => 10,
299
+ :LineThickness => 4,
300
+ :ActiveColor => 30668,
301
+ :InactiveColor => 11654895
302
+ }
303
+
304
+ COMPARE_STYLE = {
305
+ :PointShape => "CIRCLE",
306
+ :PointRadius => 6,
307
+ :FillAlpha => 10,
308
+ :LineThickness => 2,
309
+ :ActiveColor => 16750848,
310
+ :InactiveColor => 16750848
311
+ }
312
+
313
+ def setup_series(args, style)
314
+ raise ArgumentError unless args[:label]
315
+ raise ArgumentError unless args[:points]
316
+ raise ArgumentError unless args[:y_labels]
294
317
 
318
+ return {
319
+ :SelectionStartIndex => 0,
320
+ :SelectionEndIndex => args[:points].length,
321
+ :Style => style,
322
+ :Label => args[:label],
323
+ :Id => "primary",
324
+ :YLabels => args[:y_labels],
325
+ :ValueCategory => "visits",
326
+ :Points => args[:points]
327
+ } # end graph
328
+ end
329
+ protected :setup_series
330
+
331
+ def range_to_flashvars(args = {})
332
+ raise ArgumentError unless args.length > 0
333
+ x_labels = args[0][:x_labels]
295
334
  raise ArgumentError unless x_labels
296
- raise ArgumentError unless y_labels
297
- raise ArgumentError unless label
298
- raise ArgumentError unless points
299
335
 
336
+ ct = 0
300
337
  # this is the structure necessary to support the Google Analytics OTG
301
338
 
302
339
  options = {:Graph => {
@@ -308,29 +345,12 @@ eos
308
345
  :XAxisLabels => x_labels,
309
346
  :HoverType => "primary_compare",
310
347
  :SelectedSeries => ["primary", "compare"],
311
- :Series => [
312
- {
313
- :SelectionStartIndex => 0,
314
- :SelectionEndIndex => points.length,
315
- :Style =>
316
- {
317
- :PointShape => "CIRCLE",
318
- :PointRadius => 9,
319
- :FillColor => 30668,
320
- :FillAlpha => 10,
321
- :LineThickness => 4,
322
- :ActiveColor => 30668,
323
- :InactiveColor => 11654895
324
- },
325
- :Label => label,
326
- :Id => "primary",
327
- :YLabels => y_labels,
328
- :ValueCategory => "visits",
329
- :Points => points
330
- }]
348
+ :Series => args.map {|arg|
349
+ ct += 1
350
+ setup_series(arg, ct == 1 ? PRIMARY_STYLE : COMPARE_STYLE)
351
+ }
331
352
  } # end graph
332
353
  } # end options
333
-
334
354
  return URI::encode(options.to_json)
335
355
  end
336
356
  protected :range_to_flashvars
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_otg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - esilverberg
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-01 00:00:00 -07:00
12
+ date: 2009-10-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency