repsheet_visualizer 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,23 +1,25 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- repsheet_visualizer (0.0.1)
5
- json (= 1.7.7)
6
- redis (= 3.0.3)
7
- sinatra (= 1.4.1)
4
+ repsheet_visualizer (0.0.7)
5
+ geoip
6
+ json
7
+ redis
8
+ sinatra
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- json (1.7.7)
13
+ geoip (1.2.1)
14
+ json (1.8.0)
13
15
  kgio (2.8.0)
14
16
  rack (1.5.2)
15
17
  rack-protection (1.5.0)
16
18
  rack
17
19
  raindrops (0.11.0)
18
20
  rake (10.0.4)
19
- redis (3.0.3)
20
- sinatra (1.4.1)
21
+ redis (3.0.4)
22
+ sinatra (1.4.2)
21
23
  rack (~> 1.5, >= 1.5.2)
22
24
  rack-protection (~> 1.4)
23
25
  tilt (~> 1.3, >= 1.3.4)
@@ -31,7 +33,7 @@ PLATFORMS
31
33
  ruby
32
34
 
33
35
  DEPENDENCIES
34
- bundler (~> 1.3)
35
- rake (~> 10.0.4)
36
+ bundler
37
+ rake
36
38
  repsheet_visualizer!
37
- unicorn (~> 4.6.2)
39
+ unicorn
@@ -2,9 +2,10 @@
2
2
 
3
3
  begin
4
4
  require 'repsheet_visualizer/application/app.rb'
5
- if ARGV.count == 2
5
+ if ARGV.count == 3
6
6
  RepsheetVisualizer.set :redis_host, ARGV[0]
7
7
  RepsheetVisualizer.set :redis_port, ARGV[1]
8
+ RepsheetVisualizer.set :geoip_database, ARGV[2]
8
9
  end
9
10
  RepsheetVisualizer.run!
10
11
  rescue LoadError => e
@@ -12,9 +13,10 @@ rescue LoadError => e
12
13
  path = File.expand_path '../../lib', __FILE__
13
14
  $:.unshift(path) if File.directory?(path) && !$:.include?(path)
14
15
  require 'repsheet_visualizer/application/app.rb'
15
- if ARGV.count == 2
16
+ if ARGV.count == 3
16
17
  RepsheetVisualizer.set :redis_host, ARGV[0]
17
18
  RepsheetVisualizer.set :redis_port, ARGV[1]
19
+ RepsheetVisualizer.set :geoip_database, ARGV[2]
18
20
  end
19
21
  RepsheetVisualizer.run!
20
22
  end
@@ -1,3 +1,4 @@
1
+ require 'geoip'
1
2
  require 'sinatra'
2
3
  require 'redis'
3
4
  require 'json'
@@ -20,6 +21,13 @@ class RepsheetVisualizer < Sinatra::Base
20
21
  Redis.new(:host => host, :port => port)
21
22
  end
22
23
 
24
+ def geoip_database
25
+ geoip_database = defined?(settings.geoip_database) ? settings.geoip_database : nil
26
+ raise "Missing GeoIP database settings" if geoip_database.nil?
27
+ raise "Could not locate GeoIP database" unless File.exist?(geoip_database)
28
+ GeoIP.new(settings.geoip_database)
29
+ end
30
+
23
31
  def mount
24
32
  defined?(settings.mount) ? (settings.mount + "/") : "/"
25
33
  end
@@ -72,4 +80,16 @@ class RepsheetVisualizer < Sinatra::Base
72
80
  @mount = mount
73
81
  erb :breakdown
74
82
  end
83
+
84
+ get '/worldview' do
85
+ db = geoip_database
86
+ redis = redis_connection
87
+ @data = {}
88
+ offenders = redis.keys("*:repsheet*").map {|o| o.split(":").first}
89
+ offenders.each do |address|
90
+ details = db.country(address)
91
+ @data[address] = [details.latitude, details.longitude]
92
+ end
93
+ erb :worldview
94
+ end
75
95
  end
@@ -35,6 +35,7 @@
35
35
  <ul class="nav">
36
36
  <li><a href="<%= @mount %>">Actors</a></li>
37
37
  <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
38
+ <li><a href="<%= @mount %>worldview">Worldview</a></li>
38
39
  </ul>
39
40
  </div>
40
41
  </div>
@@ -41,6 +41,7 @@
41
41
  <ul class="nav">
42
42
  <li class="active"><a href="<%= @mount %>">Actors</a></li>
43
43
  <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
44
+ <li><a href="<%= @mount %>worldview">Worldview</a></li>
44
45
  </ul>
45
46
  </div>
46
47
  </div>
@@ -50,6 +50,7 @@
50
50
  <ul class="nav">
51
51
  <li><a href="<%= @mount %>">Actors</a></li>
52
52
  <li class="active"><a href="<%= @mount %>breakdown">Breakdown</a></li>
53
+ <li><a href="<%= @mount %>worldview">Worldview</a></li>
53
54
  </ul>
54
55
  </div>
55
56
  </div>
@@ -0,0 +1,84 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Repsheet::Visualizer</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <meta name="description" content="">
8
+ <meta name="author" content="Aaron Bedra">
9
+
10
+ <link href="<%= @mount %>css/bootstrap.css" rel="stylesheet">
11
+ <link href="<%= @mount %>css/bootstrap-responsive.css" rel="stylesheet">
12
+ <link href="<%= @mount %>css/blue/style.css" rel="stylesheet">
13
+ <style>
14
+ body {
15
+ padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
16
+ }
17
+
18
+ .actors {
19
+ border-color: #FFF;
20
+ }
21
+ </style>
22
+
23
+ <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
24
+ <!--[if lt IE 9]>
25
+ <script src="<%= @mount %>javascripts/html5shiv.js"></script>
26
+ <![endif]-->
27
+
28
+ <link rel="shortcut icon" href="<%= @mount %>images/favicon.ico">
29
+
30
+ <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
31
+ </head>
32
+
33
+ <body>
34
+ <div class="navbar navbar-inverse navbar-fixed-top">
35
+ <div class="navbar-inner">
36
+ <div class="container">
37
+ <a class="brand" href="<%= @mount %>">Repsheet</a>
38
+ <div class="nav-collapse collapse">
39
+ <ul class="nav">
40
+ <li><a href="<%= @mount %>">Actors</a></li>
41
+ <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
42
+ <li class="active"><a href="<%= @mount %>worldview">Worldview</a></li>
43
+ </ul>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ <div class="container">
50
+ <div id="map" style="width: 1024px; height: 768px;"></div>
51
+
52
+ <script type="text/javascript">
53
+ var locations = [
54
+ <% @data.each do |address, geodetails| %>
55
+ ['<%= address %>', <%= geodetails[0] %>, <%= geodetails[1] %>],
56
+ <% end %>
57
+ ];
58
+
59
+ var map = new google.maps.Map(document.getElementById('map'), {
60
+ zoom: 2,
61
+ center: new google.maps.LatLng(41.833, -87.731),
62
+ mapTypeId: google.maps.MapTypeId.ROADMAP
63
+ });
64
+
65
+ var infowindow = new google.maps.InfoWindow();
66
+ var marker, i;
67
+
68
+ for (i = 0; i < locations.length; i++) {
69
+ marker = new google.maps.Marker({
70
+ position: new google.maps.LatLng(locations[i][1], locations[i][2]),
71
+ map: map
72
+ });
73
+
74
+ google.maps.event.addListener(marker, 'click', (function(marker, i) {
75
+ return function() {
76
+ infowindow.setContent(locations[i][0]);
77
+ infowindow.open(map, marker);
78
+ }
79
+ })(marker, i));
80
+ }
81
+ </script>
82
+ </div>
83
+ </body>
84
+ </html>
@@ -1,3 +1,3 @@
1
1
  module RepsheetVisualizer
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -18,10 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "redis"
21
+ spec.add_dependency "geoip"
22
22
  spec.add_dependency "json"
23
+ spec.add_dependency "redis"
23
24
  spec.add_dependency "sinatra"
24
-
25
+
25
26
  spec.add_development_dependency "bundler"
26
27
  spec.add_development_dependency "rake"
27
28
  spec.add_development_dependency "unicorn"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repsheet_visualizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: redis
15
+ name: geoip
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: redis
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: sinatra
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +158,7 @@ files:
142
158
  - lib/repsheet_visualizer/application/views/activity.erb
143
159
  - lib/repsheet_visualizer/application/views/actors.erb
144
160
  - lib/repsheet_visualizer/application/views/breakdown.erb
161
+ - lib/repsheet_visualizer/application/views/worldview.erb
145
162
  - lib/repsheet_visualizer/version.rb
146
163
  - repsheet_visualizer.gemspec
147
164
  homepage: https://github.com/Repsheet/visualizer
@@ -157,15 +174,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
174
  - - ! '>='
158
175
  - !ruby/object:Gem::Version
159
176
  version: '0'
177
+ segments:
178
+ - 0
179
+ hash: -1556641184775599076
160
180
  required_rubygems_version: !ruby/object:Gem::Requirement
161
181
  none: false
162
182
  requirements:
163
183
  - - ! '>='
164
184
  - !ruby/object:Gem::Version
165
185
  version: '0'
186
+ segments:
187
+ - 0
188
+ hash: -1556641184775599076
166
189
  requirements: []
167
190
  rubyforge_project:
168
- rubygems_version: 1.8.23
191
+ rubygems_version: 1.8.25
169
192
  signing_key:
170
193
  specification_version: 3
171
194
  summary: A visualization package for Repsheet