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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +8 -0
  6. data/Guardfile +24 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +134 -0
  9. data/Rakefile +1 -0
  10. data/app/table/assets/css/font-awesome.min.css +4 -0
  11. data/app/table/assets/css/main.scss +66 -0
  12. data/app/table/assets/fonts/FontAwesome.otf +0 -0
  13. data/app/table/assets/fonts/fontawesome-webfont.eot +0 -0
  14. data/app/table/assets/fonts/fontawesome-webfont.svg +655 -0
  15. data/app/table/assets/fonts/fontawesome-webfont.ttf +0 -0
  16. data/app/table/assets/fonts/fontawesome-webfont.woff +0 -0
  17. data/app/table/assets/fonts/fontawesome-webfont.woff2 +0 -0
  18. data/app/table/config/dependencies.rb +1 -0
  19. data/app/table/config/initializers/boot.rb +10 -0
  20. data/app/table/config/routes.rb +1 -0
  21. data/app/table/controllers/columns_controller.rb +101 -0
  22. data/app/table/controllers/footers_controller.rb +19 -0
  23. data/app/table/controllers/headers_controller.rb +98 -0
  24. data/app/table/controllers/main_controller.rb +135 -0
  25. data/app/table/tasks/count_task.rb +15 -0
  26. data/app/table/views/columns/column_head.html +4 -0
  27. data/app/table/views/columns/filter_head.html +36 -0
  28. data/app/table/views/columns/index.html +17 -0
  29. data/app/table/views/footers/index.html +14 -0
  30. data/app/table/views/headers/index.html +62 -0
  31. data/app/table/views/headers/modal.html +34 -0
  32. data/app/table/views/main/body.html +26 -0
  33. data/app/table/views/main/footers.html +1 -0
  34. data/app/table/views/main/index.html +7 -0
  35. data/app/table/views/wrapper/index.html +10 -0
  36. data/lib/volt/table.rb +18 -0
  37. data/lib/volt/table/version.rb +5 -0
  38. data/spec/dummy/.gitignore +9 -0
  39. data/spec/dummy/README.md +4 -0
  40. data/spec/dummy/app/main/assets/css/app.css.scss +1 -0
  41. data/spec/dummy/app/main/config/dependencies.rb +13 -0
  42. data/spec/dummy/app/main/config/initializers/boot.rb +10 -0
  43. data/spec/dummy/app/main/config/routes.rb +14 -0
  44. data/spec/dummy/app/main/controllers/main_controller.rb +67 -0
  45. data/spec/dummy/app/main/lib/seed_db.rb +32 -0
  46. data/spec/dummy/app/main/models/user.rb +15 -0
  47. data/spec/dummy/app/main/views/main/about.html +16 -0
  48. data/spec/dummy/app/main/views/main/index.html +25 -0
  49. data/spec/dummy/app/main/views/main/main.html +29 -0
  50. data/spec/dummy/config.ru +4 -0
  51. data/spec/dummy/config/app.rb +137 -0
  52. data/spec/dummy/config/base/index.html +15 -0
  53. data/spec/dummy/config/initializers/boot.rb +4 -0
  54. data/spec/factories.rb +31 -0
  55. data/spec/integration/table_integration_spec.rb +171 -0
  56. data/spec/spec_helper.rb +19 -0
  57. data/volt-table.gemspec +46 -0
  58. metadata +399 -0
@@ -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,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)
@@ -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
@@ -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
@@ -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