volt-osmaps 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +15 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +1 -0
- data/app/osmaps/assets/css/leaflet.css +9163 -0
- data/app/osmaps/assets/images/layers-2x.png +0 -0
- data/app/osmaps/assets/images/layers.png +0 -0
- data/app/osmaps/assets/images/marker-icon-2x.png +0 -0
- data/app/osmaps/assets/images/marker-icon.png +0 -0
- data/app/osmaps/assets/images/marker-shadow.png +0 -0
- data/app/osmaps/assets/js/leaflet.js +9163 -0
- data/app/osmaps/config/dependencies.rb +1 -0
- data/app/osmaps/config/initializers/boot.rb +10 -0
- data/app/osmaps/config/routes.rb +1 -0
- data/app/osmaps/controllers/main_controller.rb +14 -0
- data/app/osmaps/views/main/index.html +5 -0
- data/lib/volt/osmaps/version.rb +5 -0
- data/lib/volt/osmaps.rb +18 -0
- data/spec/dummy/.gitignore +9 -0
- data/spec/dummy/README.md +4 -0
- data/spec/dummy/app/main/assets/css/app.css.scss +1 -0
- data/spec/dummy/app/main/config/dependencies.rb +11 -0
- data/spec/dummy/app/main/config/initializers/boot.rb +10 -0
- data/spec/dummy/app/main/config/routes.rb +14 -0
- data/spec/dummy/app/main/controllers/main_controller.rb +27 -0
- data/spec/dummy/app/main/models/user.rb +12 -0
- data/spec/dummy/app/main/views/main/about.html +7 -0
- data/spec/dummy/app/main/views/main/index.html +6 -0
- data/spec/dummy/app/main/views/main/main.html +29 -0
- data/spec/dummy/config/app.rb +137 -0
- data/spec/dummy/config/base/index.html +15 -0
- data/spec/dummy/config/initializers/boot.rb +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/integration/sample_integration_spec.rb +11 -0
- data/spec/sample_spec.rb +7 -0
- data/spec/spec_helper.rb +18 -0
- data/volt-osmaps.gemspec +39 -0
- 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 = '© <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
|
data/lib/volt/osmaps.rb
ADDED
@@ -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 @@
|
|
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,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>© 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,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
|
data/spec/sample_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -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
|
data/volt-osmaps.gemspec
ADDED
@@ -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
|