rails_admin_place_field 0.0.8 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f43dc0c284e2982ee9d6a4ad25f28f543af39d9
4
- data.tar.gz: 19b3dc88b7bf3473cf9178af8012f89b245b4ed6
3
+ metadata.gz: 06dca4f89f425f0fa4e0709b5c73e9420d315677
4
+ data.tar.gz: e1eb546f328754a779666c14be2cacdaec126b5b
5
5
  SHA512:
6
- metadata.gz: 352c1570bbf58f106b6b5d72125e57e3612df581f3b696758e101ac7899f7d3f29f5a2a3f1ffb4c4045bc4b1df8e67561be6d7548bb34e4109f2515ae4f285a0
7
- data.tar.gz: 0e00a819ac8395d726f672cbf2faf67db92d12bf639b8686b33caf299168e1f144a18a3ed9dbd3e0b5de32555b6f006eefdd3a19c260fc9e8fe19b509c0db53d
6
+ metadata.gz: b3cfe6dfa1e9dad56a863ebaf6cfb10bbe0b2dfa8bf9ce3fd4d78492eba01ed5a24dc770305e76a3384df7e93b4f17973eda052ff0d90103656afed6596bbaeb
7
+ data.tar.gz: 52aee01597c3f43d01c58d183aea35959d2ae3f2f5eb92460e1542ba1c56338c1ad1f81fe309ced6c6be8d61fbb8b30bea6ab772212da054e9f2e160c30dcb99
data/README.md CHANGED
@@ -48,6 +48,8 @@ RailsAdmin.config do |config|
48
48
  edit do
49
49
  field :latitude, :place do
50
50
  longitude_field :longitude
51
+ foursquare_field :foursquare
52
+ gplace_field :gplace
51
53
  google_api_key "a1b2c3d4e5f6deadbeef"
52
54
  places_api_key "a1b2c3d4e5f6deadbeef"
53
55
  foursquare_api_key "a1b2c3d4e5f6deadbeef"
@@ -1,23 +1,38 @@
1
- = javascript_include_tag ("//maps.googleapis.com/maps/api/js?key=#{field.google_api_key}&sensor=false&callback=init_map_field")
1
+ = javascript_include_tag ("//maps.googleapis.com/maps/api/js?key=#{field.google_api_key}&sensor=false&libraries=places&callback=init_map_field")
2
2
 
3
3
  = javascript_tag do
4
4
  :plain
5
5
  function init_map_field()
6
6
  {
7
7
  jQuery(function() {
8
+
8
9
  var marker = null;
9
10
  var latlng = new google.maps.LatLng(
10
11
  #{form.object.send(field.name) || field.default_latitude},
11
12
  #{form.object.send(field.longitude_field) || field.default_longitude}
12
13
  );
13
14
 
14
- var myOptions = {
15
+ var map_options = {
15
16
  zoom: #{field.default_zoom_level},
16
17
  center: latlng,
17
18
  mapTypeId: google.maps.MapTypeId.ROADMAP
18
19
  };
19
20
 
20
- var map = new google.maps.Map(document.getElementById("#{field.dom_name}"), myOptions);
21
+ var map = new google.maps.Map(document.getElementById("#{field.dom_name}"), map_options);
22
+
23
+ // Try HTML5 geolocation
24
+ if ( navigator.geolocation )
25
+ {
26
+ navigator.geolocation.getCurrentPosition(
27
+ function(position) {
28
+ var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
29
+ map.setCenter(pos);
30
+ },
31
+ function() {
32
+ handleNoGeolocation(true);
33
+ }
34
+ );
35
+ }
21
36
 
22
37
  - if form.object.send(field.name) && form.object.send(field.longitude_field)
23
38
  :plain
@@ -30,6 +45,9 @@
30
45
  google.maps.event.addListener(map, 'click', function(e) {
31
46
  map_update(e.latLng);
32
47
  foursquare_search(e.latLng.lat() + ',' + e.latLng.lng());
48
+ places_search(e.latLng);
49
+
50
+ $('#foursquare_options #foursquare_venue').html('<select id="foursquare_venue_select"><option></option></select>');
33
51
  });
34
52
 
35
53
  function map_update(location)
@@ -64,7 +82,7 @@
64
82
  if ( response && response.meta.code == 200 )
65
83
  {
66
84
  response.response.venues.forEach(function(venue) {
67
- jQuery('#foursquare_venue').append('<option value="'+venue.id+'">'+venue.name+'</option>').change(function() {
85
+ jQuery('#foursquare_venue_select').append('<option value="'+venue.id+'">'+venue.name+'</option>').change(function() {
68
86
  jQuery("##{field.foursquare_dom_name}").val($(this).val());
69
87
  });
70
88
  });
@@ -76,13 +94,73 @@
76
94
  });
77
95
  }
78
96
 
97
+ // @todo : make this add a new marker so that the user knows that both the original geo + the places geo are recorded
98
+ function places_search(location)
99
+ {
100
+ autocomplete = new google.maps.places.Autocomplete(
101
+ document.getElementById('google_place_input'),
102
+ {
103
+ bounds: new google.maps.Circle({center: location, radius: 100}).getBounds()
104
+ }
105
+ );
106
+
107
+ google.maps.event.addListener(autocomplete, 'place_changed', function() {
108
+ var place = autocomplete.getPlace();
109
+
110
+ console.log(place.id);
111
+
112
+ $("##{field.gplace_dom_name}").val(place.id);
113
+
114
+ if ( ! place.geometry )
115
+ {
116
+ alert('A place was not found');
117
+ return;
118
+ }
119
+
120
+ // If the place has a geometry, then present it on a map.
121
+ if ( place.geometry.viewport )
122
+ {
123
+ // Use the viewport if it is provided.
124
+ map.fitBounds(place.geometry.viewport);
125
+ }
126
+ else {
127
+ // Otherwise use the location and set a chosen zoom level.
128
+ map.setCenter(place.geometry.location);
129
+ map.setZoom(17);
130
+ }
131
+ var image = {
132
+ url: place.icon,
133
+ size: new google.maps.Size(71, 71),
134
+ origin: new google.maps.Point(0, 0),
135
+ anchor: new google.maps.Point(17, 34),
136
+ scaledSize: new google.maps.Size(25, 25)
137
+ };
138
+ marker.setIcon(image);
139
+ marker.setPosition(place.geometry.location);
140
+ });
141
+ }
142
+
79
143
  })};
80
144
 
81
145
 
82
- %div.ramf-map-container{:id => field.dom_name, :style => "width:300px;height:200px"}
83
- %select#foursquare_venue
84
- %option
146
+ %h3 Geo Location Data
147
+ %p Click on the map to select a geo location. Once you've selected this, the foursquare and google places boxes will become active (if you've set them up correctly), for you to choose a relevant association.
148
+ %div.ramf-map-container{:id => field.dom_name, :style => "width:90%; height:300px"}
149
+
150
+ %hr
151
+
152
+ #places_options
153
+ %h4 Google Place
154
+ %input#google_place_input{ :type => 'text', :style => "width: 90%;" }
155
+
156
+ %hr
157
+
158
+ #foursquare_options
159
+ %h4 Foursquare Venue
160
+ #foursquare_venue You have to select a place on the map to retrieve a list of nearby results
161
+ %br
85
162
 
86
- = form.send :hidden_field, field.foursquare_field, :id => field.foursquare_dom_name
87
163
  = form.send :hidden_field, field.name, :id => field.latitude_dom_name
88
- = form.send :hidden_field, field.longitude_field, :id => field.longitude_dom_name
164
+ = form.send :hidden_field, field.longitude_field, :id => field.longitude_dom_name
165
+ = form.send :hidden_field, field.foursquare_field, :id => field.foursquare_dom_name
166
+ = form.send :hidden_field, field.gplace_field, :id => field.gplace_dom_name
@@ -4,7 +4,7 @@ module RailsAdmin::Config::Fields::Types
4
4
  RailsAdmin::Config::Fields::Types::register(:place, self)
5
5
 
6
6
  def allowed_methods
7
- [@name, longitude_field, foursquare_field]
7
+ [@name, longitude_field, foursquare_field, gplace_field]
8
8
  end
9
9
 
10
10
  # THe name of the corresponding longitude field to match the latitude field
@@ -17,6 +17,10 @@ module RailsAdmin::Config::Fields::Types
17
17
  :foursquare
18
18
  end
19
19
 
20
+ register_instance_option(:gplace_field) do
21
+ :gplace
22
+ end
23
+
20
24
  register_instance_option(:partial) do
21
25
  :place_select
22
26
  end
@@ -25,10 +29,6 @@ module RailsAdmin::Config::Fields::Types
25
29
  nil
26
30
  end
27
31
 
28
- register_instance_option(:places_api_key) do
29
- nil
30
- end
31
-
32
32
  register_instance_option(:foursquare_api_key) do
33
33
  nil
34
34
  end
@@ -68,5 +68,9 @@ module RailsAdmin::Config::Fields::Types
68
68
  def foursquare_dom_name
69
69
  @foursquare_dom_name ||= "#{bindings[:form].object_name}_#{foursquare_field}"
70
70
  end
71
+
72
+ def gplace_dom_name
73
+ @gplace_dom_name ||= "#{bindings[:form].object_name}_#{gplace_field}"
74
+ end
71
75
  end
72
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_admin_place_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clay McIlrath
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-26 00:00:00.000000000 Z
11
+ date: 2013-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-rails
@@ -52,8 +52,8 @@ dependencies:
52
52
  - - '>'
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.0.1
55
- description: A place field for RailsAdmin that can be used to retrieve a google place
56
- or foursquare venue
55
+ description: A place field for RailsAdmin that can be used to retrieve and associate
56
+ a google place or foursquare venue
57
57
  email:
58
58
  - clay.mcilrath@gmail.com
59
59
  executables: []