volt-osmaps 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +15 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +35 -0
  8. data/Rakefile +1 -0
  9. data/app/osmaps/assets/css/leaflet.css +9163 -0
  10. data/app/osmaps/assets/images/layers-2x.png +0 -0
  11. data/app/osmaps/assets/images/layers.png +0 -0
  12. data/app/osmaps/assets/images/marker-icon-2x.png +0 -0
  13. data/app/osmaps/assets/images/marker-icon.png +0 -0
  14. data/app/osmaps/assets/images/marker-shadow.png +0 -0
  15. data/app/osmaps/assets/js/leaflet.js +9163 -0
  16. data/app/osmaps/config/dependencies.rb +1 -0
  17. data/app/osmaps/config/initializers/boot.rb +10 -0
  18. data/app/osmaps/config/routes.rb +1 -0
  19. data/app/osmaps/controllers/main_controller.rb +14 -0
  20. data/app/osmaps/views/main/index.html +5 -0
  21. data/lib/volt/osmaps/version.rb +5 -0
  22. data/lib/volt/osmaps.rb +18 -0
  23. data/spec/dummy/.gitignore +9 -0
  24. data/spec/dummy/README.md +4 -0
  25. data/spec/dummy/app/main/assets/css/app.css.scss +1 -0
  26. data/spec/dummy/app/main/config/dependencies.rb +11 -0
  27. data/spec/dummy/app/main/config/initializers/boot.rb +10 -0
  28. data/spec/dummy/app/main/config/routes.rb +14 -0
  29. data/spec/dummy/app/main/controllers/main_controller.rb +27 -0
  30. data/spec/dummy/app/main/models/user.rb +12 -0
  31. data/spec/dummy/app/main/views/main/about.html +7 -0
  32. data/spec/dummy/app/main/views/main/index.html +6 -0
  33. data/spec/dummy/app/main/views/main/main.html +29 -0
  34. data/spec/dummy/config/app.rb +137 -0
  35. data/spec/dummy/config/base/index.html +15 -0
  36. data/spec/dummy/config/initializers/boot.rb +4 -0
  37. data/spec/dummy/config.ru +4 -0
  38. data/spec/integration/sample_integration_spec.rb +11 -0
  39. data/spec/sample_spec.rb +7 -0
  40. data/spec/spec_helper.rb +18 -0
  41. data/volt-osmaps.gemspec +39 -0
  42. metadata +285 -0
@@ -0,0 +1 @@
1
+ # Component dependencies
@@ -0,0 +1,10 @@
1
+ # Place any code you want to run when the component is included on the client
2
+ # or server.
3
+
4
+ # To include code only on the client use:
5
+ # if RUBY_PLATFORM == 'opal'
6
+ #
7
+ # To include code only on the server, use:
8
+ # unless RUBY_PLATFORM == 'opal'
9
+ # ^^ this will not send compile in code in the conditional to the client.
10
+ # ^^ this include code required in the conditional.
@@ -0,0 +1 @@
1
+ # Component routes
@@ -0,0 +1,14 @@
1
+ module Osmaps
2
+ class MainController < Volt::ModelController
3
+ def index
4
+ end
5
+
6
+ def map(latitude, longitude, title)
7
+ `var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',osm = L.tileLayer(osmUrl, {maxZoom: 18, attribution: osmAttrib});`
8
+ `var map = L.map('osmaps').setView([latitude, longitude], 15).addLayer(osm);`
9
+ `L.marker([ latitude, longitude]).addTo(map).bindPopup(title);`
10
+ return nil
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ <:Body>
2
+
3
+ <div id="osmaps" class="osmaps" style="height: {{ attrs.height }};">&nbsp;</div>
4
+
5
+ {{ map(attrs.latitude, attrs.longitude, attrs.title) }}
@@ -0,0 +1,5 @@
1
+ module Volt
2
+ module Osmaps
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ # If you need to require in code in the gem's app folder, keep in mind that
2
+ # the app is not on the load path when the gem is required. Use
3
+ # app/{gemname}/config/initializers/boot.rb to require in client or server
4
+ # code.
5
+ #
6
+ # Also, in volt apps, you typically use the lib folder in the
7
+ # app/{componentname} folder instead of this lib folder. This lib folder is
8
+ # for setting up gem code when Bundler.require is called. (or the gem is
9
+ # required.)
10
+ #
11
+ # If you need to configure volt in some way, you can add a Volt.configure block
12
+ # in this file.
13
+
14
+ module Volt
15
+ module Osmaps
16
+ # Your code goes here...
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ .bundle
2
+ .config
3
+ .yardoc
4
+ tmp
5
+ .idea
6
+ .yardoc
7
+ .sass-cache
8
+ .DS_Store
9
+ compiled
@@ -0,0 +1,4 @@
1
+ # Place your app's docs here.
2
+
3
+ ## New to Volt?
4
+ Be sure to read the volt docs at http://docs.voltframework.com
@@ -0,0 +1 @@
1
+ // Place your apps css here
@@ -0,0 +1,11 @@
1
+ # Specify which components you wish to include when
2
+ # the "home" component loads.
3
+
4
+ # bootstrap css framework
5
+ component 'bootstrap'
6
+
7
+ # a default theme for the bootstrap framework
8
+ component 'bootstrap_jumbotron_theme'
9
+
10
+ # provides templates for login, signup, and logout
11
+ component 'user_templates'
@@ -0,0 +1,10 @@
1
+ # Place any code you want to run when the component is included on the client
2
+ # or server.
3
+
4
+ # To include code only on the client use:
5
+ # if RUBY_PLATFORM == 'opal'
6
+ #
7
+ # To include code only on the server, use:
8
+ # unless RUBY_PLATFORM == 'opal'
9
+ # ^^ this will not send compile in code in the conditional to the client.
10
+ # ^^ this include code required in the conditional.
@@ -0,0 +1,14 @@
1
+ # See https://github.com/voltrb/volt#routes for more info on routes
2
+
3
+ client '/about', action: 'about'
4
+
5
+ # Routes for login and signup, provided by user_templates component gem
6
+ client '/signup', component: 'user_templates', controller: 'signup'
7
+ client '/login', component: 'user_templates', controller: 'login', action: 'index'
8
+ client '/password_reset', component: 'user_templates', controller: 'password_reset', action: 'index'
9
+ client '/forgot', component: 'user_templates', controller: 'login', action: 'forgot'
10
+ client '/account', component: 'user_templates', controller: 'account', action: 'index'
11
+
12
+ # The main route, this should be last. It will match any params not
13
+ # previously matched.
14
+ client '/', {}
@@ -0,0 +1,27 @@
1
+ # By default Volt generates this controller for your Main component
2
+ module Main
3
+ class MainController < Volt::ModelController
4
+ def index
5
+ # Add code for when the index view is loaded
6
+ end
7
+
8
+ def about
9
+ # Add code for when the about view is loaded
10
+ end
11
+
12
+ private
13
+
14
+ # The main template contains a #template binding that shows another
15
+ # template. This is the path to that template. It may change based
16
+ # on the params._component, params._controller, and params._action values.
17
+ def main_path
18
+ "#{params._component || 'main'}/#{params._controller || 'main'}/#{params._action || 'index'}"
19
+ end
20
+
21
+ # Determine if the current nav component is the active one by looking
22
+ # at the first part of the url against the href attribute.
23
+ def active_tab?
24
+ url.path.split('/')[1] == attrs.href.split('/')[1]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,12 @@
1
+ # By default Volt generates this User model which inherits from Volt::User,
2
+ # you can rename this if you want.
3
+ class User < Volt::User
4
+ # login_field is set to :email by default and can be changed to :username
5
+ # in config/app.rb
6
+ field login_field
7
+ field :name
8
+
9
+ validate login_field, unique: true, length: 8
10
+ validate :email, email: true
11
+
12
+ end
@@ -0,0 +1,7 @@
1
+ <:Title>
2
+ About
3
+
4
+ <:Body>
5
+ <h1>About</h1>
6
+
7
+ <p>About page...</p>
@@ -0,0 +1,6 @@
1
+ <:Title>
2
+ Home
3
+
4
+ <:Body>
5
+ <h1>Home</h1>
6
+
@@ -0,0 +1,29 @@
1
+ <:Title>
2
+ {{ view main_path, "title", {controller_group: 'main'} }}
3
+
4
+ <:Body>
5
+ <div class="container">
6
+ <div class="header">
7
+ <ul class="nav nav-pills pull-right">
8
+ <:nav href="/">Home</:nav>
9
+ <:nav href="/about">About</:nav>
10
+ <:user_templates:menu />
11
+ </ul>
12
+ <h3 class="text-muted">dummy</h3>
13
+ </div>
14
+
15
+ <:volt:notices />
16
+
17
+ {{ view main_path, 'body', {controller_group: 'main'} }}
18
+
19
+ <div class="footer">
20
+ <p>&copy; Company {{ Time.now.year }}</p>
21
+ </div>
22
+
23
+ </div>
24
+
25
+ <:Nav>
26
+ <li class="{{ if active_tab? }}active{{ end }}">
27
+ <a href="{{ attrs.href }}">{{ yield }}</a>
28
+ </li>
29
+
@@ -0,0 +1,137 @@
1
+ # app.rb is used to configure your app. This code is only run on the server,
2
+ # then any config options in config.public are passed to the client as well.
3
+
4
+ Volt.configure do |config|
5
+ # Setup your global app config here.
6
+
7
+ #######################################
8
+ # Basic App Info (stuff you should set)
9
+ #######################################
10
+ config.domain = 'dummy.com'
11
+ config.app_name = 'Dummy'
12
+ config.mailer.from = 'Dummy <no-reply@dummy.com>'
13
+
14
+ ############
15
+ # App Secret
16
+ ############
17
+ # Your app secret is used for signing things like the user cookie so it can't
18
+ # be tampered with. A random value is generated on new projects that will work
19
+ # without the need to customize. Make sure this value doesn't leave your server.
20
+ #
21
+ # For added security we recommend moving the app secret into an environment. You can
22
+ # setup that like so:
23
+ #
24
+ # config.app_secret = ENV['APP_SECRET']
25
+ #
26
+ config.app_secret = 'M8jsfPXl9tGgH4O0hJY4XKfmDus1ofLvM7yj6vi6qHIHsbrLPezNv7skvCuhy-o4aLM'
27
+
28
+ ###############
29
+ # Log Filtering
30
+ ###############
31
+ # Data updates from the client come in via Tasks. The task dispatcher logs all calls to tasks.
32
+ # By default hashes in the arguments can be filtered based on keys. So any hash with a key of
33
+ # password will be filtered. You can add more fields to filter below:
34
+ config.filter_keys = [:password]
35
+
36
+ ##########
37
+ # Database
38
+ ##########
39
+ # Database config all start with db_ and can be set either in the config
40
+ # file or with an environment variable (DB_NAME for example).
41
+
42
+ # config.db_driver = 'mongo'
43
+ # config.db_name = (config.app_name + '_' + Volt.env.to_s)
44
+ # config.db_host = 'localhost'
45
+ # config.db_port = 27017
46
+
47
+ #####################
48
+ # Compression options
49
+ #####################
50
+ # If you are not running behind something like nginx in production, you can
51
+ # have rack deflate all files.
52
+ # config.deflate = true
53
+
54
+ #######################
55
+ # Public configurations
56
+ #######################
57
+ # Anything under config.public will be sent to the client as well as the server,
58
+ # so be sure no private data ends up under public
59
+
60
+ # Use username instead of email as the login
61
+ # config.public.auth.use_username = true
62
+
63
+ #####################
64
+ # Compression Options
65
+ #####################
66
+ # Disable or enable css/js/image compression. Default is to only run in production.
67
+ # if Volt.env.production?
68
+ # config.compress_javascript = true
69
+ # config.compress_css = true
70
+ # config.compress_images = true
71
+ # end
72
+
73
+ ################
74
+ # Mailer options
75
+ ################
76
+ # The volt-mailer gem uses pony (https://github.com/benprew/pony) to deliver e-mail. Any
77
+ # options you would pass to pony can be setup below.
78
+ # NOTE: The from address is setup at the top
79
+
80
+ # Normally pony uses /usr/sbin/sendmail if one is installed. You can specify smtp below:
81
+ # config.mailer.via = :smtp
82
+ # config.mailer.via_options = {
83
+ # :address => 'smtp.yourserver.com',
84
+ # :port => '25',
85
+ # :user_name => 'user',
86
+ # :password => 'password',
87
+ # :authentication => :plain, # :plain, :login, :cram_md5, no auth by default
88
+ # :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
89
+ # }
90
+
91
+ #############
92
+ # Message Bus
93
+ #############
94
+ # Volt provides a "Message Bus" out of the box. The message bus provides
95
+ # a pub/sub service between any volt instance (server, client, runner, etc..)
96
+ # that share the same database. The message bus can be used by app code. It
97
+ # is also used internally to push data to any listening clients.
98
+ #
99
+ # The default message bus (called "peer_to_peer") uses the database to sync
100
+ # socket ip's/ports.
101
+ # config.message_bus.bus_name = 'peer_to_peer'
102
+ #
103
+ # Encrypt message bus - messages on the message bus are encrypted by default
104
+ # using rbnacl.
105
+
106
+ #
107
+ # For dummy apps, we disable_encryption, to simplify the gem requirements.
108
+ config.message_bus.disable_encryption = true
109
+
110
+ #
111
+ # ## MessageBus Server -- the message bus binds to a port and ip which the
112
+ # other volt instances need to be able to connect to. You can customize
113
+ # the server below:
114
+ #
115
+ # Port range - you can specify a range of ports that an instance can bind the
116
+ # message bus on. You can specify a range, an array of Integers, or an array
117
+ # of ranges.
118
+ # config.message_bus.bind_port_ranges = (58000..61000)
119
+ #
120
+ # Bind Ip - specifies the ip address the message bus server should bind on.
121
+ # config.message_bus.bind_ip = '127.0.0.1'
122
+
123
+ #############
124
+ # Concurrency
125
+ #############
126
+ # Volt provides a thread worker pool for incoming task requests (and all
127
+ # database requests, since those use tasks to do their work.) The following
128
+ # lets you control the size of the worker pool. Threads are only created as
129
+ # needed, and are removed after a certain amount of inactivity.
130
+ # config.min_worker_threads = 1
131
+ # config.max_worker_threads = 10
132
+ #
133
+ # You can also specify the amount of time a Task should run for before it
134
+ # timeout's. Setting this to short can cause unexpected results, currently
135
+ # we recomend it be at least 10 seconds.
136
+ # config.worker_timeout = 60
137
+ end
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <%# IMPORTANT: Please read before changing! %>
4
+ <%# This file is rendered on the server using ERB, so it does NOT use Volt's %>
5
+ <%# normal template system. You can add to it, but keep in mind the template %>
6
+ <%# language difference. This file handles auto-loading all JS/Opal and CSS. %>
7
+ <head>
8
+ <meta charset="UTF-8" />
9
+ <%= javascript_tags %>
10
+ <%= css_tags %>
11
+ </head>
12
+ <body>
13
+
14
+ </body>
15
+ </html>
@@ -0,0 +1,4 @@
1
+ # Any ./config/initializers/*.rb files will when the app starts up on the server.
2
+ # To load code on the client (or client and server), you can use the
3
+ # config/initializers folder in a component in the app directory. This folder
4
+ # is only for things that are server only. (Usually for things like config)
@@ -0,0 +1,4 @@
1
+ # Run via rack server
2
+ require 'bundler/setup'
3
+ require 'volt/server'
4
+ run Volt::Server.new.app
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'sample integration test', type: :feature do
4
+ # An example integration spec, this will only be run if ENV['BROWSER'] is
5
+ # specified. Current values for ENV['BROWSER'] are 'firefox' and 'phantom'
6
+ it 'should load the page' do
7
+ visit '/'
8
+
9
+ expect(page).to have_content('Home')
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Volt::Osmaps do
4
+ it 'should do something useful' do
5
+ expect(false).to be true
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ # Volt sets up rspec and capybara for testing.
2
+ require 'volt/spec/setup'
3
+
4
+ # When testing Volt component gems, we boot up a dummy app first to run the
5
+ # test in, so we have access to Volt itself.
6
+ dummy_app_path = File.join(File.dirname(__FILE__), 'dummy')
7
+ Volt.spec_setup(dummy_app_path)
8
+
9
+ RSpec.configure do |config|
10
+ config.run_all_when_everything_filtered = true
11
+ config.filter_run :focus
12
+
13
+ # Run specs in random order to surface order dependencies. If you find an
14
+ # order dependency and want to debug it, you can fix the order by providing
15
+ # the seed, which is printed after each run.
16
+ # --seed 1234
17
+ config.order = 'random'
18
+ end
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'volt/osmaps/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "volt-osmaps"
8
+ spec.version = Volt::Osmaps::VERSION
9
+ spec.authors = ["heri"]
10
+ spec.email = ["heri@madmedia.ca"]
11
+ spec.summary = %q{Volt component wrapping Leaflet.js to use OpenStreetMaps in your volt app.}
12
+ spec.description = %q{Volt component wrapping Leaflet.js to use OpenStreetMaps in your volt app.}
13
+ spec.homepage = "https://github.com/heri/volt-osmaps"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "volt", "~> 0.9.5"
22
+ spec.add_development_dependency "rake"
23
+
24
+ # Testing gems
25
+ spec.add_development_dependency 'rspec', '~> 3.2.0'
26
+ spec.add_development_dependency 'opal-rspec', '~> 0.4.2'
27
+ spec.add_development_dependency 'capybara', '~> 2.4.4'
28
+ spec.add_development_dependency 'selenium-webdriver', '~> 2.47.0'
29
+ spec.add_development_dependency 'chromedriver-helper', '~> 1.0.0'
30
+ spec.add_development_dependency 'poltergeist', '~> 1.6.0'
31
+
32
+ # Gems to run the dummy app
33
+ spec.add_development_dependency 'volt-mongo', '0.1.1'
34
+ spec.add_development_dependency 'volt-bootstrap', '~> 0.1.0'
35
+ spec.add_development_dependency 'volt-bootstrap_jumbotron_theme', '~> 0.1.0'
36
+ spec.add_development_dependency 'volt-user_templates', '~> 0.4.0'
37
+ spec.add_development_dependency 'thin', '~> 1.6.0'
38
+
39
+ end