gmpoint 0.0.1 → 0.0.2

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.
Binary file
data/Gemfile CHANGED
@@ -13,3 +13,4 @@ group :development do
13
13
  end
14
14
 
15
15
  gem 'geocoder'
16
+ gem 'new_responds_to_parent'
@@ -6,6 +6,7 @@ GEM
6
6
  multi_json (~> 1.0)
7
7
  bourne (1.1.2)
8
8
  mocha (= 0.10.5)
9
+ geocoder (1.1.6)
9
10
  git (1.2.5)
10
11
  i18n (0.6.1)
11
12
  jeweler (1.8.4)
@@ -18,6 +19,7 @@ GEM
18
19
  mocha (0.10.5)
19
20
  metaclass (~> 0.0.1)
20
21
  multi_json (1.5.0)
22
+ new_responds_to_parent (0.1.5)
21
23
  rake (10.0.3)
22
24
  rdoc (3.12)
23
25
  json (~> 1.4)
@@ -34,6 +36,8 @@ PLATFORMS
34
36
 
35
37
  DEPENDENCIES
36
38
  bundler (~> 1.2.1)
39
+ geocoder
37
40
  jeweler (~> 1.8.4)
41
+ new_responds_to_parent
38
42
  rdoc (~> 3.12)
39
43
  shoulda
@@ -1,5 +1,28 @@
1
1
  = gmpoint
2
2
 
3
+ * gem 'gmpoint'
4
+ * bundle install
5
+ * rails g gmpoint:install
6
+ * rails g gmpoint User
7
+ * add attr_accessible :location_latitude, :location_longitude, :location_address inside your model
8
+
9
+ = Usage
10
+ * Add code below into application.html.erb
11
+ <%= google_map_api_js(your google api key code) %>
12
+ EX:
13
+ <%= google_map_api_js("AIzaSyA344yCug0-GhjW3XJyZmkLWLN_qtA_ziM") %>
14
+ * Add code below into anywhere you want
15
+ <%= show_map_helper your_model %>
16
+
17
+ EX:
18
+ <%= show_map_helper :users %>
19
+
20
+ You can set options for view
21
+ width , height for map view
22
+ search_box_with for search box
23
+
24
+ EX:
25
+ <%= show_map_helper :users, {width: 400, height: 200, search_box_width: 300} %>
3
26
  Description goes here.
4
27
 
5
28
  == Contributing to gmpoint
data/Rakefile CHANGED
@@ -24,7 +24,7 @@ Jeweler::Tasks.new do |gem|
24
24
  gem.version = File.exist?('VERSION') ? File.read('VERSION') : ""
25
25
  # dependencies defined in Gemfile
26
26
  end
27
- # Jeweler::RubygemsDotOrgTasks.new
27
+ Jeweler::RubygemsDotOrgTasks.new
28
28
 
29
29
  require 'rake/testtask'
30
30
  Rake::TestTask.new(:test) do |test|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 0.0.2
Binary file
@@ -0,0 +1,50 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
4
+ window.initJsMap = ->
5
+ $("#geopoint_search_box_container input").keypress (e) ->
6
+ if e.keyCode == 13 # enter
7
+ window.geopoint_search_map($(@))
8
+ opts =
9
+ center: new google.maps.LatLng($('.data-location').data('latitude'), $('.data-location').data('longitude'))
10
+ zoom: $('.data-location').data('zoom')
11
+ mapTypeId: google.maps.MapTypeId.ROADMAP
12
+
13
+
14
+ window.gmpoint_map = new google.maps.Map(document.getElementById("map_canvas"), opts)
15
+ window.gmpoint_map.setOptions({draggableCursor: 'url(http://maps.gstatic.com/mapfiles/crosshair.cur), default'})
16
+ window.gmpoint_marker = new google.maps.Marker({position: opts.center, draggable: true})
17
+ window.gmpoint_map.setCenter(window.gmpoint_marker.getPosition(), 16)
18
+ window.gmpoint_info_window = new google.maps.InfoWindow({
19
+ size: new google.maps.Size(20, 20)
20
+ })
21
+ window.gmpoint_info_window.close()
22
+
23
+ window.gmpoint_marker.setMap(window.gmpoint_map)
24
+ google.maps.event.addListener window.gmpoint_map, "click", (event) ->
25
+ latlng = event.latLng
26
+ window.geopoint_handle(latlng)
27
+
28
+ window.geopoint_search_map = (dom) ->
29
+ addressField = $(dom)
30
+ geocoder = new google.maps.Geocoder()
31
+ geocoder.geocode {address: addressField.val()}, (results, status) ->
32
+ if status == google.maps.GeocoderStatus.OK
33
+ loc = results[0].geometry.location
34
+ window.gmpoint_marker.setPosition(loc)
35
+ window.gmpoint_map.setCenter(window.gmpoint_marker.getPosition())
36
+ point = loc
37
+ window.geopoint_handle(point)
38
+
39
+ window.geopoint_handle = (attr)->
40
+ $("#gmpoint_location_latitude").val(attr.lat())
41
+ $("#gmpoint_location_longitude").val(attr.lng())
42
+ window.gmpoint_marker.setPosition(attr)
43
+ geocoder = new google.maps.Geocoder()
44
+ window.gmpoint_info_window.open(window.gmpoint_map, window.gmpoint_marker)
45
+ window.gmpoint_info_window.setContent("Loading...")
46
+ geocoder.geocode {'latLng': attr}, (results, status) ->
47
+ if status == google.maps.GeocoderStatus.OK
48
+ if results[1]
49
+ window.gmpoint_info_window.setContent(results[0].formatted_address)
50
+ $("#gmpoint_location_address").val(results[0].formatted_address)
@@ -0,0 +1,15 @@
1
+ // Place all the styles related to the locations controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
4
+ html { height: 100% }
5
+ body { height: 100%; margin: 0; padding: 0 }
6
+ #map_canvas {
7
+ width: 1200px;
8
+ height: 500px;
9
+ margin: 0 auto;
10
+ border:1px solid green;
11
+ }
12
+
13
+ #data-location {
14
+ display:none;
15
+ }
@@ -0,0 +1,28 @@
1
+ module Gmpoint::GmpointHelper
2
+
3
+ def google_map_api_js(key="AIzaSyA344yCug0-GhjW3XJyZmkLWLN_qtA_ziM")
4
+ javascript_include_tag "https://maps.googleapis.com/maps/api/js?key=#{key}&sensor=true"
5
+ end
6
+
7
+ def show_map_helper(model_name, opts={})
8
+ opts = {width: 800, height: 400, latitude: 1.3667, longitude: 103.75, zoom: 13, style: "border: 1px solid #green;"}.merge(opts)
9
+ [
10
+ content_tag(:div, :id => "geopoint_search_box_container", style: "width: #{opts[:width]}px; margin: 0 auto; margin-bottom: 10px;") do
11
+ tag(:input, type: :text, placeholder: 'Search', id: "gmpoint_#{model_name}_search_box", style: "width: #{opts[:search_box_width]}px; border:1px solid #{:color};")
12
+ end,
13
+ content_tag(:div, '', id: "map_canvas", style: "width: #{opts[:width]}px; height: #{opts[:height]}px; #{opts[:style]}"),
14
+ content_tag(:div, '', class: "data-location", data: {model: model_name, latitude: opts[:latitude] , longitude: opts[:longitude] , zoom: opts[:zoom]}),
15
+ tag(:input, type: :hidden, value: '', name: "#{model_name}[location_latitude]", id: "gmpoint_location_latitude"),
16
+ tag(:input, type: :hidden, value: '', name: "#{model_name}[location_longitude]", id: "gmpoint_location_longitude"),
17
+ tag(:input, type: :hidden, value: '', name: "#{model_name}[location_address]", id: "gmpoint_location_address"),
18
+ javascript_tag("window.initJsMap();")
19
+ ].join.html_safe
20
+ end
21
+
22
+ def get_address
23
+ content_tag(:div, id: "form-add-point") do
24
+ content_tag(:p, "Address: #{@address.to_s}")
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,74 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "gmpoint"
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Peter Dang"]
12
+ s.date = "2013-01-08"
13
+ s.description = "Help to point on Goolge Map Description"
14
+ s.email = "peter@rubify.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".DS_Store",
21
+ ".document",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "app/assets/.DS_Store",
29
+ "app/assets/javascripts/locations.js.coffee",
30
+ "app/assets/stylesheets/locations.css",
31
+ "app/helpers/gmpoint/gmpoint_helper.rb",
32
+ "gmpoint.gemspec",
33
+ "lib/generators/active_record/gmpoint_generator.rb",
34
+ "lib/generators/active_record/templates/migration.rb",
35
+ "lib/generators/gmpoint/gmpoint_generator.rb",
36
+ "lib/generators/gmpoint/install_generator.rb",
37
+ "lib/gmpoint.rb",
38
+ "test/helper.rb",
39
+ "test/test_gmpoint.rb"
40
+ ]
41
+ s.homepage = "http://github.com/dangluan/gmpoint"
42
+ s.licenses = ["MIT"]
43
+ s.require_paths = ["lib"]
44
+ s.rubygems_version = "1.8.24"
45
+ s.summary = "Help to point on Google Map"
46
+
47
+ if s.respond_to? :specification_version then
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_runtime_dependency(%q<geocoder>, [">= 0"])
52
+ s.add_runtime_dependency(%q<new_responds_to_parent>, [">= 0"])
53
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
55
+ s.add_development_dependency(%q<bundler>, ["~> 1.2.1"])
56
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
57
+ else
58
+ s.add_dependency(%q<geocoder>, [">= 0"])
59
+ s.add_dependency(%q<new_responds_to_parent>, [">= 0"])
60
+ s.add_dependency(%q<shoulda>, [">= 0"])
61
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
+ s.add_dependency(%q<bundler>, ["~> 1.2.1"])
63
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
64
+ end
65
+ else
66
+ s.add_dependency(%q<geocoder>, [">= 0"])
67
+ s.add_dependency(%q<new_responds_to_parent>, [">= 0"])
68
+ s.add_dependency(%q<shoulda>, [">= 0"])
69
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
70
+ s.add_dependency(%q<bundler>, ["~> 1.2.1"])
71
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
72
+ end
73
+ end
74
+
@@ -0,0 +1,14 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module ActiveRecord
4
+ module Generators
5
+ class GmpointGenerator < ActiveRecord::Generators::Base
6
+ argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ def copy_gmpoint_migration
10
+ migration_template "migration.rb", "db/migrate/gmpoint_add_columns_to_#{table_name}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ class GmpointAddColumnsTo<%= table_name.camelize %> < ActiveRecord::Migration
2
+ def change
3
+ add_column :<%= table_name %>, :location_latitude, :float
4
+ add_column :<%= table_name %>, :location_longitude, :float
5
+ add_column :<%= table_name %>, :location_address, :string
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ module Gmpoint
2
+ module Generators
3
+ class GmpointGenerator < Rails::Generators::NamedBase
4
+ include Rails::Generators::ResourceHelpers
5
+
6
+ namespace "gmpoint"
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ desc "Generates Gmpoint attributes for a model given its NAME."
10
+
11
+ hook_for :orm
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ require 'securerandom'
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ module Gmpoint
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+
10
+ source_root File.expand_path("../../templates", __FILE__)
11
+ desc "Creates a Config file and copy locate files to your application."
12
+ class_option :orm
13
+
14
+ def copy_jsfile
15
+ ["locations.js.coffee"].each do |file|
16
+ copy_file "../../../app/assets/javascripts/#{file}", "app/assets/javascripts/#{file}"
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -1,13 +1,4 @@
1
1
  module Gmpoint
2
- class Engine < Rails::Engine
3
-
4
- ActiveRecord::Base.extend(Gmpoint::ClassMethods)
5
-
6
- ActiveRecord::Base.class_eval do
7
- include ActionView::Helpers::JavaScriptHelper
8
- end
9
-
10
- ActionController::Base.extend(Gmpoint::ControllerMethods)
11
-
2
+ class Engine < Rails::Engine
12
3
  end
13
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmpoint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-28 00:00:00.000000000 Z
12
+ date: 2013-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: geocoder
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: new_responds_to_parent
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
14
46
  - !ruby/object:Gem::Dependency
15
47
  name: shoulda
16
48
  requirement: !ruby/object:Gem::Requirement
@@ -83,6 +115,7 @@ extra_rdoc_files:
83
115
  - LICENSE.txt
84
116
  - README.rdoc
85
117
  files:
118
+ - .DS_Store
86
119
  - .document
87
120
  - Gemfile
88
121
  - Gemfile.lock
@@ -90,6 +123,15 @@ files:
90
123
  - README.rdoc
91
124
  - Rakefile
92
125
  - VERSION
126
+ - app/assets/.DS_Store
127
+ - app/assets/javascripts/locations.js.coffee
128
+ - app/assets/stylesheets/locations.css
129
+ - app/helpers/gmpoint/gmpoint_helper.rb
130
+ - gmpoint.gemspec
131
+ - lib/generators/active_record/gmpoint_generator.rb
132
+ - lib/generators/active_record/templates/migration.rb
133
+ - lib/generators/gmpoint/gmpoint_generator.rb
134
+ - lib/generators/gmpoint/install_generator.rb
93
135
  - lib/gmpoint.rb
94
136
  - test/helper.rb
95
137
  - test/test_gmpoint.rb
@@ -106,6 +148,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
148
  - - ! '>='
107
149
  - !ruby/object:Gem::Version
108
150
  version: '0'
151
+ segments:
152
+ - 0
153
+ hash: -4153438249491434857
109
154
  required_rubygems_version: !ruby/object:Gem::Requirement
110
155
  none: false
111
156
  requirements: