volt-table 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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +8 -0
- data/Guardfile +24 -0
- data/LICENSE.txt +22 -0
- data/README.md +134 -0
- data/Rakefile +1 -0
- data/app/table/assets/css/font-awesome.min.css +4 -0
- data/app/table/assets/css/main.scss +66 -0
- data/app/table/assets/fonts/FontAwesome.otf +0 -0
- data/app/table/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/table/assets/fonts/fontawesome-webfont.svg +655 -0
- data/app/table/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/table/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/table/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/table/config/dependencies.rb +1 -0
- data/app/table/config/initializers/boot.rb +10 -0
- data/app/table/config/routes.rb +1 -0
- data/app/table/controllers/columns_controller.rb +101 -0
- data/app/table/controllers/footers_controller.rb +19 -0
- data/app/table/controllers/headers_controller.rb +98 -0
- data/app/table/controllers/main_controller.rb +135 -0
- data/app/table/tasks/count_task.rb +15 -0
- data/app/table/views/columns/column_head.html +4 -0
- data/app/table/views/columns/filter_head.html +36 -0
- data/app/table/views/columns/index.html +17 -0
- data/app/table/views/footers/index.html +14 -0
- data/app/table/views/headers/index.html +62 -0
- data/app/table/views/headers/modal.html +34 -0
- data/app/table/views/main/body.html +26 -0
- data/app/table/views/main/footers.html +1 -0
- data/app/table/views/main/index.html +7 -0
- data/app/table/views/wrapper/index.html +10 -0
- data/lib/volt/table.rb +18 -0
- data/lib/volt/table/version.rb +5 -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 +13 -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 +67 -0
- data/spec/dummy/app/main/lib/seed_db.rb +32 -0
- data/spec/dummy/app/main/models/user.rb +15 -0
- data/spec/dummy/app/main/views/main/about.html +16 -0
- data/spec/dummy/app/main/views/main/index.html +25 -0
- data/spec/dummy/app/main/views/main/main.html +29 -0
- data/spec/dummy/config.ru +4 -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/factories.rb +31 -0
- data/spec/integration/table_integration_spec.rb +171 -0
- data/spec/spec_helper.rb +19 -0
- data/volt-table.gemspec +46 -0
- metadata +399 -0
@@ -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 = 'Xpl5_89YCV8CfeRI_SDLUdWIBzpb6Q3z_KWyrb9ZnysXpiZfcLzpnFpmbmpXi0fmrpk'
|
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)
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'faker'
|
2
|
+
|
3
|
+
module Factories
|
4
|
+
|
5
|
+
def self.user(options = {})
|
6
|
+
buffer = Volt.current_app.store.users.buffer
|
7
|
+
timestamp = Time.now.to_i.to_s
|
8
|
+
first_name = Faker::Name.first_name
|
9
|
+
fields = {
|
10
|
+
first_name: first_name,
|
11
|
+
last_name: Faker::Name.last_name,
|
12
|
+
email: Faker::Internet.safe_email("#{first_name}-#{timestamp}"),
|
13
|
+
password: 'testing1234',
|
14
|
+
}
|
15
|
+
build_model(buffer, fields, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.build_model(buffer, fields, options)
|
19
|
+
field_keys = fields.keys.push(*options.keys)
|
20
|
+
field_keys.delete(:method)
|
21
|
+
field_keys.each do |field|
|
22
|
+
if options.keys.include?(field)
|
23
|
+
buffer.send("#{field}=", options[field])
|
24
|
+
else
|
25
|
+
buffer.send("#{field}=", fields[field])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
buffer.save! if options[:method] == :save
|
29
|
+
buffer
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,171 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
describe 'Table', type: :feature do
|
5
|
+
# Will only be run if ENV['BROWSER'] is specified.
|
6
|
+
# Current values for ENV['BROWSER'] are 'firefox' and 'phantom'
|
7
|
+
before do
|
8
|
+
Factories.user({method: :save, first_name: 'Bob', last_name: 'Smith'})
|
9
|
+
Factories.user({method: :save, first_name: 'Lauren', last_name: 'Jones'})
|
10
|
+
Factories.user({method: :save, first_name: 'Jerry', last_name: 'Smith'})
|
11
|
+
Factories.user({method: :save, first_name: 'Bob', last_name: 'John'})
|
12
|
+
Factories.user({method: :save, first_name: 'Mary', last_name: 'Jacobs'})
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should load the page' do
|
16
|
+
visit '/'
|
17
|
+
expect(page).to have_content('Home')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should have correct content' do
|
21
|
+
visit '/'
|
22
|
+
expect(page).to have_content('Bob')
|
23
|
+
expect(page).to have_content('Lauren')
|
24
|
+
expect(page).to have_content('John')
|
25
|
+
expect(page).to have_content('Bob')
|
26
|
+
expect(page).to have_content('Mary')
|
27
|
+
expect(page).to have_content('First Name')
|
28
|
+
expect(page).to have_content('Last Name')
|
29
|
+
expect(page).to have_content('Email')
|
30
|
+
expect(page).to have_content('Showing 1 - 5 of 5')
|
31
|
+
expect(page).to have_content('Filtered from a total of 5')
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'search bar' do
|
35
|
+
before do
|
36
|
+
visit '/'
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should show search help' do
|
40
|
+
find('.fa-search').click
|
41
|
+
expect(page).to have_content('Search Help')
|
42
|
+
expect(page).to have_content('first:')
|
43
|
+
expect(page).to have_content('last:')
|
44
|
+
expect(page).to have_content('email:')
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should be empty' do
|
48
|
+
fields = all(:css, '.form-control')
|
49
|
+
expect(fields[0].value).to eq('')
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should accept OR queries' do
|
53
|
+
fields = all(:css, '.form-control')
|
54
|
+
fields[0].set('Bob | Jerry')
|
55
|
+
# expect correct rows to be shown
|
56
|
+
expect(page).to have_content('Bob')
|
57
|
+
expect(page).to have_content('Jerry')
|
58
|
+
expect(page).not_to have_content('Mary')
|
59
|
+
expect(page).not_to have_content('Lauren')
|
60
|
+
expect(page).to have_content('Showing 1 - 3 of 3')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should accept AND queries' do
|
64
|
+
fields = all(:css, '.form-control')
|
65
|
+
fields[0].set('Bob, Smith')
|
66
|
+
expect(page).to have_content('Bob')
|
67
|
+
expect(page).to have_content('Smith')
|
68
|
+
expect(page).not_to have_content('Mary')
|
69
|
+
expect(page).not_to have_content('Lauren')
|
70
|
+
expect(page).not_to have_content('Jerry')
|
71
|
+
expect(page).to have_content('Showing 1 - 1 of 1')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should accept a field query' do
|
75
|
+
fields = all(:css, '.form-control')
|
76
|
+
fields[0].set('Lauren, email:Lauren.Jones@sample.com')
|
77
|
+
# expect correct rows to be shown
|
78
|
+
expect(page).not_to have_content('Jerry')
|
79
|
+
expect(page).not_to have_content('Bob')
|
80
|
+
expect(page).not_to have_content('Mary')
|
81
|
+
expect(page).to have_content('Lauren')
|
82
|
+
expect(page).to have_content('Showing 1 - 1 of 1')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe 'headers' do
|
87
|
+
before do
|
88
|
+
50.times do
|
89
|
+
Factories.user({method: :save})
|
90
|
+
end
|
91
|
+
visit '/'
|
92
|
+
end
|
93
|
+
|
94
|
+
describe 'per_page' do
|
95
|
+
it 'should have correct default values', focus: true do
|
96
|
+
expect(page).to have_content('Clear All Filters')
|
97
|
+
expect(page).to have_content('Show 10')
|
98
|
+
expect(page).to have_content('Showing 1 - 10 of 55')
|
99
|
+
click_button('Show 10')
|
100
|
+
expect(page).to have_content('10')
|
101
|
+
expect(page).to have_content('25')
|
102
|
+
expect(page).to have_content('50')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should show 25 rows', focus: true do
|
106
|
+
click_button('Show 10')
|
107
|
+
find("a", :text => "25").click
|
108
|
+
expect(page).to have_content('Show 25')
|
109
|
+
expect(page).to have_content('Showing 1 - 25 of 55')
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'should show 50 rows', focus: true do
|
113
|
+
click_button('Show 10')
|
114
|
+
find("a", :text => "50").click
|
115
|
+
expect(page).to have_content('Showing 1 - 50 of 55')
|
116
|
+
expect(page).to have_content('Show 50')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe 'columns shown' do
|
121
|
+
it 'should display the correct columns shown' do
|
122
|
+
click_button('fields_shown')
|
123
|
+
list = Array.new
|
124
|
+
list = find_by_id('fields_shown_list').all('li')
|
125
|
+
expect(list.size).to eq(3)
|
126
|
+
expect(list[0]).to have_content('First Name')
|
127
|
+
expect(list[1]).to have_content('Last Name')
|
128
|
+
expect(list[2]).to have_content('Email')
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should hide columns when unchecked' do
|
133
|
+
click_button('fields_shown')
|
134
|
+
uncheck('First Name')
|
135
|
+
click_button('fields_shown')
|
136
|
+
uncheck('Last Name')
|
137
|
+
click_button('fields_shown')
|
138
|
+
uncheck('Email')
|
139
|
+
expect(page).not_to have_content('First Name')
|
140
|
+
expect(page).not_to have_content('Last Name')
|
141
|
+
expect(page).not_to have_content('Email')
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'should show columns when checked' do
|
145
|
+
click_button('fields_shown')
|
146
|
+
uncheck('First Name')
|
147
|
+
click_button('fields_shown')
|
148
|
+
uncheck('Last Name')
|
149
|
+
click_button('fields_shown')
|
150
|
+
uncheck('Email')
|
151
|
+
click_button('fields_shown')
|
152
|
+
check('First Name')
|
153
|
+
expect(page).to have_content('First Name')
|
154
|
+
click_button('fields_shown')
|
155
|
+
check('Last Name')
|
156
|
+
expect(page).to have_content('Last Name')
|
157
|
+
click_button('fields_shown')
|
158
|
+
check('Email')
|
159
|
+
expect(page).to have_content('Email')
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe 'filtering' do
|
165
|
+
it 'should open filter' do
|
166
|
+
visit '/about'
|
167
|
+
find('.fa-search').click
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Volt sets up rspec and capybara for testing.
|
2
|
+
require 'volt/spec/setup'
|
3
|
+
require 'factories'
|
4
|
+
|
5
|
+
# When testing Volt component gems, we boot up a dummy app first to run the
|
6
|
+
# test in, so we have access to Volt itself.
|
7
|
+
dummy_app_path = File.join(File.dirname(__FILE__), 'dummy')
|
8
|
+
Volt.spec_setup(dummy_app_path)
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
config.filter_run :focus
|
13
|
+
|
14
|
+
# Run specs in random order to surface order dependencies. If you find an
|
15
|
+
# order dependency and want to debug it, you can fix the order by providing
|
16
|
+
# the seed, which is printed after each run.
|
17
|
+
# --seed 1234
|
18
|
+
# config.order = 'random'
|
19
|
+
end
|
data/volt-table.gemspec
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'volt/table/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "volt-table"
|
8
|
+
spec.version = Volt::Table::VERSION
|
9
|
+
spec.authors = ["Matt Hale"]
|
10
|
+
spec.email = ["matt.hale.0@gmail.com"]
|
11
|
+
spec.summary = %q{Provides a searchable, sortable, filterable table component for Volt.}
|
12
|
+
spec.description = %q{It's datatables for Volt.}
|
13
|
+
spec.homepage = ""
|
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 "rake"
|
22
|
+
|
23
|
+
# Testing gems
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.2.0'
|
25
|
+
spec.add_development_dependency 'opal-rspec', '~> 0.4.2'
|
26
|
+
spec.add_development_dependency 'capybara', '~> 2.4.4'
|
27
|
+
spec.add_development_dependency 'selenium-webdriver', '~> 2.53.0'
|
28
|
+
spec.add_development_dependency 'chromedriver-helper', '~> 1.0.0'
|
29
|
+
spec.add_development_dependency 'poltergeist', '~> 1.6.0'
|
30
|
+
spec.add_development_dependency 'volt-browser_irb'
|
31
|
+
spec.add_development_dependency 'guard'
|
32
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.3.0'
|
33
|
+
spec.add_development_dependency 'faker', '~> 1.4'
|
34
|
+
spec.add_development_dependency 'timecop'
|
35
|
+
spec.add_development_dependency 'ruby-progressbar'
|
36
|
+
|
37
|
+
# Gems to run the dummy app
|
38
|
+
spec.add_development_dependency 'volt', '0.9.6' #git: 'https://github.com/matthew342/volt.git', branch: :volttime_nil_comparison
|
39
|
+
spec.add_development_dependency 'volt-mongo', '~> 0.2.0'
|
40
|
+
spec.add_development_dependency 'volt-bootstrap', '~> 0.1.0'
|
41
|
+
spec.add_development_dependency 'volt-bootstrap_jumbotron_theme', '~> 0.1.0'
|
42
|
+
spec.add_development_dependency 'volt-user_templates', '~> 0.4.0'
|
43
|
+
spec.add_development_dependency 'thin', '~> 1.6.0'
|
44
|
+
spec.add_development_dependency 'volt-pagination'
|
45
|
+
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,399 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: volt-table
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Hale
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.2.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.2.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: opal-rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.4.2
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.4.2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: capybara
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.4.4
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.4.4
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: selenium-webdriver
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.53.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.53.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: chromedriver-helper
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: poltergeist
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.6.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.6.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: volt-browser_irb
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: guard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 4.3.0
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 4.3.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: faker
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '1.4'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '1.4'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: timecop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: ruby-progressbar
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: volt
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - '='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 0.9.6
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - '='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.9.6
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: volt-mongo
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 0.2.0
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 0.2.0
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: volt-bootstrap
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 0.1.0
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 0.1.0
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: volt-bootstrap_jumbotron_theme
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 0.1.0
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - "~>"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: 0.1.0
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: volt-user_templates
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: 0.4.0
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: 0.4.0
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: thin
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 1.6.0
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 1.6.0
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: volt-pagination
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
description: It's datatables for Volt.
|
294
|
+
email:
|
295
|
+
- matt.hale.0@gmail.com
|
296
|
+
executables: []
|
297
|
+
extensions: []
|
298
|
+
extra_rdoc_files: []
|
299
|
+
files:
|
300
|
+
- ".gitignore"
|
301
|
+
- ".rspec"
|
302
|
+
- CODE_OF_CONDUCT.md
|
303
|
+
- Gemfile
|
304
|
+
- Guardfile
|
305
|
+
- LICENSE.txt
|
306
|
+
- README.md
|
307
|
+
- Rakefile
|
308
|
+
- app/table/assets/css/font-awesome.min.css
|
309
|
+
- app/table/assets/css/main.scss
|
310
|
+
- app/table/assets/fonts/FontAwesome.otf
|
311
|
+
- app/table/assets/fonts/fontawesome-webfont.eot
|
312
|
+
- app/table/assets/fonts/fontawesome-webfont.svg
|
313
|
+
- app/table/assets/fonts/fontawesome-webfont.ttf
|
314
|
+
- app/table/assets/fonts/fontawesome-webfont.woff
|
315
|
+
- app/table/assets/fonts/fontawesome-webfont.woff2
|
316
|
+
- app/table/config/dependencies.rb
|
317
|
+
- app/table/config/initializers/boot.rb
|
318
|
+
- app/table/config/routes.rb
|
319
|
+
- app/table/controllers/columns_controller.rb
|
320
|
+
- app/table/controllers/footers_controller.rb
|
321
|
+
- app/table/controllers/headers_controller.rb
|
322
|
+
- app/table/controllers/main_controller.rb
|
323
|
+
- app/table/tasks/count_task.rb
|
324
|
+
- app/table/views/columns/column_head.html
|
325
|
+
- app/table/views/columns/filter_head.html
|
326
|
+
- app/table/views/columns/index.html
|
327
|
+
- app/table/views/footers/index.html
|
328
|
+
- app/table/views/headers/index.html
|
329
|
+
- app/table/views/headers/modal.html
|
330
|
+
- app/table/views/main/body.html
|
331
|
+
- app/table/views/main/footers.html
|
332
|
+
- app/table/views/main/index.html
|
333
|
+
- app/table/views/wrapper/index.html
|
334
|
+
- lib/volt/table.rb
|
335
|
+
- lib/volt/table/version.rb
|
336
|
+
- spec/dummy/.gitignore
|
337
|
+
- spec/dummy/README.md
|
338
|
+
- spec/dummy/app/main/assets/css/app.css.scss
|
339
|
+
- spec/dummy/app/main/config/dependencies.rb
|
340
|
+
- spec/dummy/app/main/config/initializers/boot.rb
|
341
|
+
- spec/dummy/app/main/config/routes.rb
|
342
|
+
- spec/dummy/app/main/controllers/main_controller.rb
|
343
|
+
- spec/dummy/app/main/lib/seed_db.rb
|
344
|
+
- spec/dummy/app/main/models/user.rb
|
345
|
+
- spec/dummy/app/main/views/main/about.html
|
346
|
+
- spec/dummy/app/main/views/main/index.html
|
347
|
+
- spec/dummy/app/main/views/main/main.html
|
348
|
+
- spec/dummy/config.ru
|
349
|
+
- spec/dummy/config/app.rb
|
350
|
+
- spec/dummy/config/base/index.html
|
351
|
+
- spec/dummy/config/initializers/boot.rb
|
352
|
+
- spec/factories.rb
|
353
|
+
- spec/integration/table_integration_spec.rb
|
354
|
+
- spec/spec_helper.rb
|
355
|
+
- volt-table.gemspec
|
356
|
+
homepage: ''
|
357
|
+
licenses:
|
358
|
+
- MIT
|
359
|
+
metadata: {}
|
360
|
+
post_install_message:
|
361
|
+
rdoc_options: []
|
362
|
+
require_paths:
|
363
|
+
- lib
|
364
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
365
|
+
requirements:
|
366
|
+
- - ">="
|
367
|
+
- !ruby/object:Gem::Version
|
368
|
+
version: '0'
|
369
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
370
|
+
requirements:
|
371
|
+
- - ">="
|
372
|
+
- !ruby/object:Gem::Version
|
373
|
+
version: '0'
|
374
|
+
requirements: []
|
375
|
+
rubyforge_project:
|
376
|
+
rubygems_version: 2.4.5.1
|
377
|
+
signing_key:
|
378
|
+
specification_version: 4
|
379
|
+
summary: Provides a searchable, sortable, filterable table component for Volt.
|
380
|
+
test_files:
|
381
|
+
- spec/dummy/.gitignore
|
382
|
+
- spec/dummy/README.md
|
383
|
+
- spec/dummy/app/main/assets/css/app.css.scss
|
384
|
+
- spec/dummy/app/main/config/dependencies.rb
|
385
|
+
- spec/dummy/app/main/config/initializers/boot.rb
|
386
|
+
- spec/dummy/app/main/config/routes.rb
|
387
|
+
- spec/dummy/app/main/controllers/main_controller.rb
|
388
|
+
- spec/dummy/app/main/lib/seed_db.rb
|
389
|
+
- spec/dummy/app/main/models/user.rb
|
390
|
+
- spec/dummy/app/main/views/main/about.html
|
391
|
+
- spec/dummy/app/main/views/main/index.html
|
392
|
+
- spec/dummy/app/main/views/main/main.html
|
393
|
+
- spec/dummy/config.ru
|
394
|
+
- spec/dummy/config/app.rb
|
395
|
+
- spec/dummy/config/base/index.html
|
396
|
+
- spec/dummy/config/initializers/boot.rb
|
397
|
+
- spec/factories.rb
|
398
|
+
- spec/integration/table_integration_spec.rb
|
399
|
+
- spec/spec_helper.rb
|