geofsh 0.0.2 → 0.1.0

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/README.md CHANGED
@@ -29,6 +29,19 @@ An example of using Geofsh with simple_form:
29
29
  = f.input :geolat, label: "Latitude", input_html: { id: "latitude", class: "geoloc-hide" }
30
30
  = f.input :geolng, label: "Longitude", input_html: { id: "longitude", class: "geoloc-hide" }
31
31
 
32
+
33
+ Google maps can easily be incorporated into your rails app using geofsh gem. First, you must include google's javascript api:
34
+
35
+ = javascript_include_tag "https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY_HERE&sensor=false"
36
+
37
+ For instructions on how to recieve a google map's API key, visit [Google's api tutorial](https://developers.google.com/maps/documentation/javascript/tutorial#api_key).
38
+
39
+ To enable google maps in your rails app, simply add a div to your view with the element id 'google-map':
40
+
41
+ <div id='google-map'/>
42
+
43
+ Geofsh gem will automatically populate this div with a google map centered on your current latitude and longitude.
44
+
32
45
  Before deploying to production, you must also add 'geofsh.js' to the precompile list in your config/application.rb:
33
46
 
34
47
  config.assets.precompile += %w(foo bar geofsh.js)
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
8
8
  gem.version = Geofsh::VERSION
9
9
  gem.authors = ["Jon Pagano"]
10
10
  gem.email = ["jonathanpagano@gmail.com"]
11
- gem.description = %q{Simple geolocation generator}
12
- gem.summary = %q{Provides latitude and longitude from HTML5 API}
11
+ gem.description = %q{Geolocation Form Submission Helper}
12
+ gem.summary = %q{Provides latitude and longitude from HTML5 geolocation API and automatically places them in corresponding form fields}
13
13
  gem.homepage = "https://github.com/joofsh/geofsh"
14
14
 
15
15
  gem.add_dependency "railties", "~> 3.1"
@@ -1,3 +1,3 @@
1
1
  module Geofsh
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1 @@
1
+ --color
@@ -6,7 +6,7 @@ gem 'rails', '3.2.8'
6
6
  # gem 'rails', :git => 'git://github.com/rails/rails.git'
7
7
 
8
8
  gem 'sqlite3'
9
- gem 'geofsh'
9
+ gem 'geofsh', path: '..'
10
10
 
11
11
  # Gems used only for assets and not required
12
12
  # in production environments by default.
@@ -22,6 +22,12 @@ end
22
22
 
23
23
  gem 'jquery-rails'
24
24
 
25
+
26
+ group :test, :development do
27
+ gem 'capybara'
28
+ gem 'rspec-rails'
29
+ end
30
+
25
31
  # To use ActiveModel has_secure_password
26
32
  # gem 'bcrypt-ruby', '~> 3.0.0'
27
33
 
@@ -0,0 +1,4 @@
1
+ #google-map{
2
+ width: 500px;
3
+ height: 500px;
4
+ }
@@ -1,3 +1,4 @@
1
+ <%= javascript_include_tag "https://maps.googleapis.com/maps/api/js?key=AIzaSyDBmbRrJZrO5IExRamjDLBgyWzTLs1Ohx8&sensor=false" %>
1
2
  <%= javascript_include_tag 'geofsh' %>
2
3
 
3
4
  <p> This is your latitude and longitude input fields. Are they working? </p>
@@ -5,3 +6,7 @@
5
6
  <%= text_field_tag 'latitude', nil, :class => 'geoloc-hide' %>
6
7
  <%= label_tag :Longitude %>
7
8
  <%= text_field_tag 'longitude', nil, :class => 'geoloc-hide' %>
9
+
10
+ <p> This is your google map of the above coordinates </p>
11
+
12
+ <div id='google-map'/>
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe HomeController do
4
+
5
+ describe 'GET index' do
6
+ it 'returns http success' do
7
+ get 'index'
8
+ response.should be_success
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ @javascript
3
+
4
+ describe 'Home Requests' do
5
+ before :each do
6
+ visit '/'
7
+ end
8
+
9
+
10
+ it 'loads geofsh lat/lng data into fields', js: true do
11
+ find_field('latitude').value.should_not be_blank
12
+ find_field('longitude').value.should_not be_blank
13
+ end
14
+
15
+ it 'loads a google map', js: true do
16
+ page.should have_selector "div#google-map"
17
+ page.should have_selector "div", text: "Satellite"
18
+ page.should have_selector "img", src: "https://maps.gstatic.com/mapfiles/google_white.png"
19
+ end
20
+
21
+ end
22
+
@@ -0,0 +1,38 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ require File.expand_path("../../config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+
7
+ # Requires supporting ruby files with custom matchers and macros, etc,
8
+ # in spec/support/ and its subdirectories.
9
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+ # ## Mock Framework
13
+ #
14
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
15
+ #
16
+ # config.mock_with :mocha
17
+ # config.mock_with :flexmock
18
+ # config.mock_with :rr
19
+
20
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
21
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
22
+
23
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
24
+ # examples within a transaction, remove the following line or assign false
25
+ # instead of true.
26
+ config.use_transactional_fixtures = true
27
+
28
+ # If true, the base class of anonymous controllers will be inferred
29
+ # automatically. This will be the default behavior in future versions of
30
+ # rspec-rails.
31
+ config.infer_base_class_for_anonymous_controllers = false
32
+
33
+ # Run specs in random order to surface order dependencies. If you find an
34
+ # order dependency and want to debug it, you can fix the order by providing
35
+ # the seed, which is printed after each run.
36
+ # --seed 1234
37
+ config.order = "random"
38
+ end
@@ -1,8 +1,32 @@
1
- var geolocError, getPosition, hideAddressAndZip, hideGeoLoc, geolocSuccess;
1
+ var geolocError, addMarker, getPosition, hideAddressAndZip, hideGeoLoc, geolocSuccess, googleMap, mapOptions, map, marker, geolat, geolng, geoCoords;
2
+
3
+ googleMap = function(geolat, geolng) {
4
+ if(document.getElementById("google-map")){
5
+ geoCoords = new google.maps.LatLng(geolat, geolng);
6
+ mapOptions = {
7
+ zoom: 16,
8
+ center: geoCoords,
9
+ mapTypeId: google.maps.MapTypeId.ROADMAP
10
+ };
11
+
12
+ map = new google.maps.Map(document.getElementById("google-map"), mapOptions);
13
+ addMarker(geoCoords, "You are here!");
14
+ }
15
+ };
2
16
 
17
+ addMarker = function(position, title) {
18
+ marker = new google.maps.Marker({
19
+ position: position,
20
+ map: map,
21
+ title: title
22
+ });
23
+ }
3
24
  geolocSuccess = function(position) {
4
- $('input#latitude').val(position.coords.latitude);
5
- return $('input#longitude').val(position.coords.longitude);
25
+ geolat = position.coords.latitude;
26
+ geolng = position.coords.longitude;
27
+ $('input#latitude').val(geolat);
28
+ $('input#longitude').val(geolng);
29
+ return googleMap(geolat, geolng);
6
30
  };
7
31
 
8
32
  geolocError = function() {
@@ -16,16 +40,16 @@ return $('.geoloc-hide').parent().hide();
16
40
  };
17
41
 
18
42
  getPosition = function() {
19
- if (navigator.geolocation) {
20
- return navigator.geolocation.getCurrentPosition(geolocSuccess, geolocError);
21
- } else {
22
- hideGeoLoc();
23
- return "Geolocation not supported";
24
- }
43
+ if (navigator.geolocation) {
44
+ return navigator.geolocation.getCurrentPosition(geolocSuccess, geolocError);
45
+ } else {
46
+ hideGeoLoc();
47
+ return "Geolocation not supported";
48
+ }
25
49
  };
26
50
 
27
51
 
28
52
  $(function() {
29
- return getPosition();
53
+ return getPosition();
30
54
  });
31
55
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geofsh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
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: 2012-11-06 00:00:00.000000000 Z
12
+ date: 2012-11-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -27,7 +27,7 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.1'
30
- description: Simple geolocation generator
30
+ description: Geolocation Form Submission Helper
31
31
  email:
32
32
  - jonathanpagano@gmail.com
33
33
  executables: []
@@ -43,12 +43,14 @@ files:
43
43
  - lib/geofsh.rb
44
44
  - lib/geofsh/version.rb
45
45
  - testapp/.gitignore
46
+ - testapp/.rspec
46
47
  - testapp/Gemfile
47
48
  - testapp/README.rdoc
48
49
  - testapp/Rakefile
49
50
  - testapp/app/assets/images/rails.png
50
51
  - testapp/app/assets/javascripts/application.js
51
52
  - testapp/app/assets/stylesheets/application.css
53
+ - testapp/app/assets/stylesheets/main.css
52
54
  - testapp/app/controllers/application_controller.rb
53
55
  - testapp/app/controllers/home_controller.rb
54
56
  - testapp/app/helpers/application_helper.rb
@@ -83,17 +85,13 @@ files:
83
85
  - testapp/public/favicon.ico
84
86
  - testapp/public/robots.txt
85
87
  - testapp/script/rails
86
- - testapp/test/fixtures/.gitkeep
87
- - testapp/test/functional/.gitkeep
88
- - testapp/test/integration/.gitkeep
89
- - testapp/test/performance/browsing_test.rb
90
- - testapp/test/test_helper.rb
91
- - testapp/test/unit/.gitkeep
88
+ - testapp/spec/controllers/home_controller_spec.rb
89
+ - testapp/spec/requests/home_spec.rb
90
+ - testapp/spec/spec_helper.rb
92
91
  - testapp/vendor/assets/javascripts/.gitkeep
93
92
  - testapp/vendor/assets/stylesheets/.gitkeep
94
93
  - testapp/vendor/plugins/.gitkeep
95
94
  - vendor/assets/javascripts/geofsh.js
96
- - vendor/assets/javascripts/geofsh.js.coffee
97
95
  homepage: https://github.com/joofsh/geofsh
98
96
  licenses: []
99
97
  post_install_message:
@@ -108,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
106
  version: '0'
109
107
  segments:
110
108
  - 0
111
- hash: -118967374427281283
109
+ hash: 3450935956358020349
112
110
  required_rubygems_version: !ruby/object:Gem::Requirement
113
111
  none: false
114
112
  requirements:
@@ -117,11 +115,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
115
  version: '0'
118
116
  segments:
119
117
  - 0
120
- hash: -118967374427281283
118
+ hash: 3450935956358020349
121
119
  requirements: []
122
120
  rubyforge_project:
123
121
  rubygems_version: 1.8.24
124
122
  signing_key:
125
123
  specification_version: 3
126
- summary: Provides latitude and longitude from HTML5 API
124
+ summary: Provides latitude and longitude from HTML5 geolocation API and automatically
125
+ places them in corresponding form fields
127
126
  test_files: []
File without changes
File without changes
File without changes
@@ -1,12 +0,0 @@
1
- require 'test_helper'
2
- require 'rails/performance_test_help'
3
-
4
- class BrowsingTest < ActionDispatch::PerformanceTest
5
- # Refer to the documentation for all available options
6
- # self.profile_options = { :runs => 5, :metrics => [:wall_time, :memory]
7
- # :output => 'tmp/performance', :formats => [:flat] }
8
-
9
- def test_homepage
10
- get '/'
11
- end
12
- end
@@ -1,13 +0,0 @@
1
- ENV["RAILS_ENV"] = "test"
2
- require File.expand_path('../../config/environment', __FILE__)
3
- require 'rails/test_help'
4
-
5
- class ActiveSupport::TestCase
6
- # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
- #
8
- # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
- # -- they do not yet inherit this setting
10
- fixtures :all
11
-
12
- # Add more helper methods to be used by all tests here...
13
- end
File without changes
@@ -1,22 +0,0 @@
1
- geolocSuccess = (position) ->
2
- geolat = position.coords.latitude
3
- geolng = position.coords.longitude
4
- $("input#latitude").val geolat
5
- $("input#longitude").val geolng
6
-
7
- geolocError = ->
8
- hideGeoLoc()
9
- "Geolocation Unsuccessful"
10
-
11
- hideGeoLoc = ->
12
- $(".geoloc-hide").parent().hide()
13
-
14
- getPosition = ->
15
- if navigator.geolocation
16
- navigator.geolocation.getCurrentPosition geolocSuccess, geolocError
17
- else
18
- hideGeoLoc()
19
- "Geolocation not supported"
20
-
21
- $ ->
22
- getPosition()