listings 0.1.10 → 0.1.15
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 +4 -4
- data/README.md +20 -0
- data/app/controllers/listings/listings_controller.rb +2 -5
- data/app/views/listings/export.xls.erb +1 -1
- data/lib/listings/base.rb +26 -16
- data/lib/listings/base_field_descriptor.rb +1 -1
- data/lib/listings/filter_view.rb +7 -1
- data/lib/listings/sources/active_record_data_source.rb +5 -4
- data/lib/listings/sources/data_source.rb +1 -1
- data/lib/listings/sources/object_data_source.rb +1 -1
- data/lib/listings/version.rb +1 -1
- data/spec/dummy/app/assets/config/manifest.js +1 -0
- data/spec/dummy/app/assets/javascripts/application.js +14 -2
- data/spec/dummy/app/controllers/welcome_controller.rb +3 -0
- data/spec/dummy/app/listings/authors_listing.rb +26 -0
- data/spec/dummy/app/listings/posts_listing.rb +1 -1
- data/spec/dummy/app/listings/tracks_listing.rb +13 -1
- data/spec/dummy/app/models/author.rb +5 -0
- data/spec/dummy/app/models/post.rb +2 -0
- data/spec/dummy/app/models/track.rb +1 -1
- data/spec/dummy/app/views/listings/_posts_count.html.haml +5 -0
- data/spec/dummy/app/views/welcome/authors.html.haml +3 -0
- data/spec/dummy/app/views/welcome/index.html.haml +6 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/dummy/db/schema.rb +10 -1
- data/spec/dummy/db/seeds.rb +10 -2
- data/spec/factories/authors.rb +5 -0
- data/spec/factories/{post.rb → posts.rb} +1 -0
- metadata +63 -51
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 22306e285b8f18877c6d47cc742bfa3cb284c4ac
|
|
4
|
+
data.tar.gz: f402374e22a72800dfef55e6a8d65fabc2c17a69
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0dac07fedd6ef74330151646a991720ded9b0ff2cdb8f7059cfcf0d0d3e62a8a44176a95a9abee7a37e2665662a071670aedf1e7358066fdcdc90858d9248a6
|
|
7
|
+
data.tar.gz: bf3482c5505d5bce1c903e65cb29dace7917f8fbf60f4629ded558e24cab4d2a2b14a352b8d29f9d9f2d624324254e9be50caf8c34424acf03f3107bdf2fbc80
|
data/README.md
CHANGED
|
@@ -207,6 +207,14 @@ The block is evaluated in a view_context so any helper you will usually use in a
|
|
|
207
207
|
column album: :name, title: 'Album'
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
+
> **computed columns**
|
|
211
|
+
>
|
|
212
|
+
> Listings will try to sort and filter by default using the `<table_name>.<column_name>` field of the query, on computed queries this will not work, you will need to use `column :my_computed_field, query_column: :my_computed_field` to allow sorting and filtering.
|
|
213
|
+
>
|
|
214
|
+
> Using computed columns might cause some issues depending on the Kaminari version used. If this is the case and you need to filter based on a computed filed, you will need to define a `custom_filter` to apply the filtering of the computed field.
|
|
215
|
+
>
|
|
216
|
+
> See example at [spec/dummy/app/listings/authors_listing.rb](spec/dummy/app/listings/authors_listing.rb)
|
|
217
|
+
|
|
210
218
|
### scope
|
|
211
219
|
|
|
212
220
|
Declaring a `scope` with a symbol with allow user to show only records matching the scope in the ActiveRecord class
|
|
@@ -243,6 +251,18 @@ It supports `title:` and a block
|
|
|
243
251
|
end
|
|
244
252
|
```
|
|
245
253
|
|
|
254
|
+
A `values: :method` can be specified to avoid the select distinct over the values.
|
|
255
|
+
|
|
256
|
+
```ruby
|
|
257
|
+
filter album: :name, values: :all_album_names, title: 'Album' do |album_name|
|
|
258
|
+
album_name.titleize
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def all_album_names
|
|
262
|
+
Album.order("name").pluck("distinct name").reject(&:nil?)
|
|
263
|
+
end
|
|
264
|
+
```
|
|
265
|
+
|
|
246
266
|
Also `render:` option can be used to suppress the rendering of the filter, but allowing the user to filter by it. For example to filter by the id:
|
|
247
267
|
|
|
248
268
|
```ruby
|
|
@@ -20,11 +20,8 @@ module Listings
|
|
|
20
20
|
@listing = prepare_listing params, view_context, false
|
|
21
21
|
|
|
22
22
|
respond_to do |format|
|
|
23
|
-
format.csv {
|
|
24
|
-
format.xls
|
|
25
|
-
headers["Content-Disposition"] = "attachment; filename=\"#{@listing.export_filename(:xls)}\""
|
|
26
|
-
render 'listings/export'
|
|
27
|
-
end
|
|
23
|
+
format.csv { @listing.send_csv(self) }
|
|
24
|
+
format.xls { @listing.send_xls(self) }
|
|
28
25
|
end
|
|
29
26
|
ensure
|
|
30
27
|
Kaminari::Helpers::Tag.paginate_with_listings(nil)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<Cell><Data ss:Type="String"><%= col.human_name %></Data></Cell>
|
|
12
12
|
<% end %>
|
|
13
13
|
</Row>
|
|
14
|
-
<% @listing.
|
|
14
|
+
<% @listing.export_each do |item| %>
|
|
15
15
|
<Row>
|
|
16
16
|
<% @listing.columns.each do |col| %>
|
|
17
17
|
<% col.value_for(item).tap do |value| %>
|
data/lib/listings/base.rb
CHANGED
|
@@ -177,30 +177,40 @@ module Listings
|
|
|
177
177
|
(params[:format] || :html).to_sym
|
|
178
178
|
end
|
|
179
179
|
|
|
180
|
-
def
|
|
181
|
-
data = []
|
|
182
|
-
|
|
183
|
-
data << self.columns.map { |c| c.human_name }
|
|
184
|
-
|
|
180
|
+
def export_each
|
|
185
181
|
self.items.each do |item|
|
|
186
|
-
|
|
187
|
-
self.columns.each do |col|
|
|
188
|
-
row << col.value_for(item)
|
|
189
|
-
end
|
|
190
|
-
data << row
|
|
182
|
+
yield item
|
|
191
183
|
end
|
|
192
|
-
|
|
193
|
-
data
|
|
194
184
|
end
|
|
195
185
|
|
|
196
|
-
def
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
186
|
+
def send_csv(controller)
|
|
187
|
+
csv_filename = self.export_filename(:csv)
|
|
188
|
+
|
|
189
|
+
controller.headers["X-Accel-Buffering"] = "no"
|
|
190
|
+
controller.headers["Cache-Control"] = "no-cache"
|
|
191
|
+
controller.headers["Content-Type"] = "text/csv; charset=utf-8"
|
|
192
|
+
controller.headers["Content-Disposition"] = %(attachment; filename="#{csv_filename}")
|
|
193
|
+
controller.headers["Transfer-Encoding"] = "chunked"
|
|
194
|
+
controller.headers.delete("Content-Length")
|
|
195
|
+
|
|
196
|
+
controller.response_body = Enumerator.new do |lines|
|
|
197
|
+
lines << self.columns.map { |c| c.human_name }.to_csv
|
|
198
|
+
|
|
199
|
+
self.export_each do |item|
|
|
200
|
+
row = []
|
|
201
|
+
self.columns.each do |col|
|
|
202
|
+
row << col.value_for(item)
|
|
203
|
+
end
|
|
204
|
+
lines << row.to_csv
|
|
200
205
|
end
|
|
201
206
|
end
|
|
202
207
|
end
|
|
203
208
|
|
|
209
|
+
def send_xls(controller)
|
|
210
|
+
controller.headers["Content-Disposition"] = %(attachment; filename="#{self.export_filename(:xls)}")
|
|
211
|
+
controller.render 'listings/export'
|
|
212
|
+
end
|
|
213
|
+
|
|
204
214
|
def method_missing(m, *args, &block)
|
|
205
215
|
view_context.send(m, *args, &block)
|
|
206
216
|
end
|
data/lib/listings/filter_view.rb
CHANGED
|
@@ -9,7 +9,13 @@ module Listings
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def values
|
|
12
|
-
@values ||=
|
|
12
|
+
@values ||= begin
|
|
13
|
+
if method = @field_description.props[:values]
|
|
14
|
+
listing.send(method)
|
|
15
|
+
else
|
|
16
|
+
listing.data_source.values_for_filter(field)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
13
19
|
end
|
|
14
20
|
|
|
15
21
|
def value_for(value)
|
|
@@ -68,12 +68,12 @@ module Listings::Sources
|
|
|
68
68
|
@items = @items.eager_load(relation)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
def build_field(path)
|
|
71
|
+
def build_field(path, props)
|
|
72
72
|
path = self.class.sanitaize_path(path)
|
|
73
73
|
if path.is_a?(Array)
|
|
74
74
|
ActiveRecordAssociationField.new(path, self)
|
|
75
75
|
else
|
|
76
|
-
ActiveRecordField.new(path, self)
|
|
76
|
+
ActiveRecordField.new(path, self, props[:query_column])
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
end
|
|
@@ -113,9 +113,10 @@ module Listings::Sources
|
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
class ActiveRecordField < BaseActiveRecordField
|
|
116
|
-
def initialize(attribute_name, data_source)
|
|
116
|
+
def initialize(attribute_name, data_source, query_column)
|
|
117
117
|
super(data_source)
|
|
118
118
|
@attribute_name = attribute_name
|
|
119
|
+
@query_column = query_column
|
|
119
120
|
end
|
|
120
121
|
|
|
121
122
|
def value_for(item)
|
|
@@ -123,7 +124,7 @@ module Listings::Sources
|
|
|
123
124
|
end
|
|
124
125
|
|
|
125
126
|
def query_column
|
|
126
|
-
"#{quote_table_name(data_source.items.table_name)}.#{quote_column_name(@attribute_name)}"
|
|
127
|
+
@query_column || "#{quote_table_name(data_source.items.table_name)}.#{quote_column_name(@attribute_name)}"
|
|
127
128
|
end
|
|
128
129
|
|
|
129
130
|
def key
|
data/lib/listings/version.rb
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ }
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
// });
|
|
24
24
|
// });
|
|
25
25
|
|
|
26
|
-
$(function(){
|
|
26
|
+
$(function () {
|
|
27
27
|
|
|
28
|
-
$('.listing').on('change', '#date-filter', function(){
|
|
28
|
+
$('.listing').on('change', '#date-filter', function () {
|
|
29
29
|
var listings = $(this).closest('.listing')
|
|
30
30
|
var filter = $(this);
|
|
31
31
|
|
|
@@ -35,5 +35,17 @@ $(function(){
|
|
|
35
35
|
listings.trigger("listings:filter:key:set", [filter.data('filter-key'), filter.val()])
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
+
|
|
39
|
+
$('.listing').on('click', '#posts-count-filter', function () {
|
|
40
|
+
var listings = $(this).closest('.listing')
|
|
41
|
+
var filter = $(this);
|
|
42
|
+
var value = filter.data('filter-value');
|
|
43
|
+
|
|
44
|
+
if (value == '') {
|
|
45
|
+
listings.trigger("listings:filter:key:clear", filter.data('filter-key'))
|
|
46
|
+
} else {
|
|
47
|
+
listings.trigger("listings:filter:key:set", [filter.data('filter-key'), value])
|
|
48
|
+
}
|
|
49
|
+
});
|
|
38
50
|
});
|
|
39
51
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class AuthorsListing < Listings::Base
|
|
2
|
+
model do
|
|
3
|
+
Author
|
|
4
|
+
.select('authors.*, (select count(*) from posts where posts.author_id = authors.id) as posts_count')
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
paginates_per 7
|
|
8
|
+
|
|
9
|
+
filter :category, values: :categories
|
|
10
|
+
|
|
11
|
+
custom_filter :posts_count_eq, render: 'posts_count' do |items, value|
|
|
12
|
+
items.where("(select count(*) from posts where posts.author_id = authors.id) = ?", value.to_i)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def categories
|
|
16
|
+
Author.select('distinct category').pluck(:category).reject(&:nil?)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def query_counts
|
|
20
|
+
(1..30).to_a
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
column :name, seachable: true
|
|
24
|
+
column :posts_count, query_column: :posts_count
|
|
25
|
+
column :category
|
|
26
|
+
end
|
|
@@ -2,11 +2,23 @@ class TracksListing < Listings::Base
|
|
|
2
2
|
|
|
3
3
|
model Track
|
|
4
4
|
|
|
5
|
-
filter album: :name
|
|
5
|
+
# filter album: :name # this also works but will do a distinct over the mode
|
|
6
|
+
filter album: :name, values: :album_names
|
|
6
7
|
filter album: :id, title: 'The Album Id' do |value|
|
|
7
8
|
"#{value}!"
|
|
8
9
|
end
|
|
9
10
|
filter :order, render: false
|
|
11
|
+
filter :label, values: :label_values
|
|
12
|
+
|
|
13
|
+
def album_names
|
|
14
|
+
Album.order("name").pluck("distinct name").reject(&:nil?)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def label_values
|
|
18
|
+
res = ["red", "blue"]
|
|
19
|
+
res << params[:l] if params[:l]
|
|
20
|
+
res
|
|
21
|
+
end
|
|
10
22
|
|
|
11
23
|
custom_filter :order_lte do |items, value|
|
|
12
24
|
items.where('"order" <= ?', value.to_i)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
class Post < ActiveRecord::Base
|
|
2
2
|
attr_accessible :title, :author, :category if Rails::VERSION::MAJOR == 3
|
|
3
3
|
|
|
4
|
+
belongs_to :author
|
|
5
|
+
|
|
4
6
|
scope :even, -> { where('id % 2 = 0') }
|
|
5
7
|
scope :odd, -> { where('id % 2 = 1') }
|
|
6
8
|
scope :greater_than, lambda { |gt_id| where('id > ?', gt_id) }
|
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
%dd
|
|
13
13
|
ActiveRecord based listing with scopes, deferred_scopes, styles and selectable
|
|
14
14
|
|
|
15
|
+
%dl
|
|
16
|
+
%dt
|
|
17
|
+
= link_to 'Authors', authors_path
|
|
18
|
+
%dd
|
|
19
|
+
ActiveRecord based listing with computed columns
|
|
20
|
+
|
|
15
21
|
%dl
|
|
16
22
|
%dt
|
|
17
23
|
= link_to 'Filtered posts', filtered_posts_path
|
data/spec/dummy/config/routes.rb
CHANGED
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -19,11 +19,18 @@ ActiveRecord::Schema.define(:version => 20150611185922) do
|
|
|
19
19
|
t.datetime "updated_at", :null => false
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
create_table "authors", :force => true do |t|
|
|
23
|
+
t.string "name"
|
|
24
|
+
t.string "category"
|
|
25
|
+
t.datetime "created_at", :null => false
|
|
26
|
+
t.datetime "updated_at", :null => false
|
|
27
|
+
end
|
|
28
|
+
|
|
22
29
|
create_table "posts", :force => true do |t|
|
|
23
30
|
t.string "title"
|
|
24
31
|
t.datetime "created_at", :null => false
|
|
25
32
|
t.datetime "updated_at", :null => false
|
|
26
|
-
t.
|
|
33
|
+
t.integer "author_id"
|
|
27
34
|
t.string "category"
|
|
28
35
|
end
|
|
29
36
|
|
|
@@ -31,10 +38,12 @@ ActiveRecord::Schema.define(:version => 20150611185922) do
|
|
|
31
38
|
t.string "title"
|
|
32
39
|
t.integer "order"
|
|
33
40
|
t.integer "album_id"
|
|
41
|
+
t.string "label"
|
|
34
42
|
t.datetime "created_at", :null => false
|
|
35
43
|
t.datetime "updated_at", :null => false
|
|
36
44
|
end
|
|
37
45
|
|
|
38
46
|
add_index "tracks", ["album_id"], :name => "index_tracks_on_album_id"
|
|
47
|
+
add_index "posts", ["author_id"], :name => "index_posts_on_author_id"
|
|
39
48
|
|
|
40
49
|
end
|
data/spec/dummy/db/seeds.rb
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
require 'factory_girl'
|
|
2
2
|
# Dir[Rails.root.join("spec/factories/*.rb")].each {|f| require f}
|
|
3
3
|
|
|
4
|
+
AUTHORS = []
|
|
5
|
+
|
|
6
|
+
(1..20).each do |sn|
|
|
7
|
+
AUTHORS << Author.create!(name: "john-#{(sn % 20) + 1}", category: "category-#{(sn % 3) + 1}")
|
|
8
|
+
end
|
|
9
|
+
|
|
4
10
|
(1..100).each do |sn|
|
|
5
|
-
Post.create! title: "post n-#{sn}", author:
|
|
11
|
+
Post.create! title: "post n-#{sn}", author: AUTHORS[sn % (sn / 10 + 1)], category: "category-#{(sn % 3) + 1}"
|
|
6
12
|
end
|
|
7
13
|
|
|
8
14
|
(1..10).each do |sn|
|
|
9
15
|
FactoryGirl.create :album
|
|
10
16
|
end
|
|
11
17
|
|
|
18
|
+
LABELS = %w(Green Red Blue)
|
|
19
|
+
|
|
12
20
|
(1..10).each do |sn|
|
|
13
|
-
FactoryGirl.create :track, album: nil
|
|
21
|
+
FactoryGirl.create :track, album: nil, label: LABELS[sn % LABELS.size]
|
|
14
22
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: listings
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brian J. Cardiff
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-03-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -189,6 +189,7 @@ files:
|
|
|
189
189
|
- lib/tasks/listings_tasks.rake
|
|
190
190
|
- spec/dummy/README.rdoc
|
|
191
191
|
- spec/dummy/Rakefile
|
|
192
|
+
- spec/dummy/app/assets/config/manifest.js
|
|
192
193
|
- spec/dummy/app/assets/javascripts/application.js
|
|
193
194
|
- spec/dummy/app/assets/stylesheets/application.css
|
|
194
195
|
- spec/dummy/app/controllers/application_controller.rb
|
|
@@ -197,22 +198,26 @@ files:
|
|
|
197
198
|
- spec/dummy/app/helpers/application_helper.rb
|
|
198
199
|
- spec/dummy/app/helpers/posts_helper.rb
|
|
199
200
|
- spec/dummy/app/listings/array_listing.rb
|
|
201
|
+
- spec/dummy/app/listings/authors_listing.rb
|
|
200
202
|
- spec/dummy/app/listings/filtered_posts_listing.rb
|
|
201
203
|
- spec/dummy/app/listings/hash_listing.rb
|
|
202
204
|
- spec/dummy/app/listings/posts_listing.rb
|
|
203
205
|
- spec/dummy/app/listings/tracks_fixed_order_listing.rb
|
|
204
206
|
- spec/dummy/app/listings/tracks_listing.rb
|
|
205
207
|
- spec/dummy/app/models/album.rb
|
|
208
|
+
- spec/dummy/app/models/author.rb
|
|
206
209
|
- spec/dummy/app/models/object_album.rb
|
|
207
210
|
- spec/dummy/app/models/object_track.rb
|
|
208
211
|
- spec/dummy/app/models/post.rb
|
|
209
212
|
- spec/dummy/app/models/track.rb
|
|
210
213
|
- spec/dummy/app/views/layouts/application.html.erb
|
|
211
214
|
- spec/dummy/app/views/listings/_date.html.haml
|
|
215
|
+
- spec/dummy/app/views/listings/_posts_count.html.haml
|
|
212
216
|
- spec/dummy/app/views/posts/filtered.html.haml
|
|
213
217
|
- spec/dummy/app/views/posts/index.html.haml
|
|
214
218
|
- spec/dummy/app/views/shared/_post_partial.html.haml
|
|
215
219
|
- spec/dummy/app/views/welcome/array.html.haml
|
|
220
|
+
- spec/dummy/app/views/welcome/authors.html.haml
|
|
216
221
|
- spec/dummy/app/views/welcome/hash.html.haml
|
|
217
222
|
- spec/dummy/app/views/welcome/index.html.haml
|
|
218
223
|
- spec/dummy/app/views/welcome/tracks.html.haml
|
|
@@ -247,7 +252,8 @@ files:
|
|
|
247
252
|
- spec/dummy/script/rails
|
|
248
253
|
- spec/dummy/spec
|
|
249
254
|
- spec/factories/albums.rb
|
|
250
|
-
- spec/factories/
|
|
255
|
+
- spec/factories/authors.rb
|
|
256
|
+
- spec/factories/posts.rb
|
|
251
257
|
- spec/factories/tracks.rb
|
|
252
258
|
- spec/factories/traits.rb
|
|
253
259
|
- spec/lib/filter_parser_spec.rb
|
|
@@ -285,77 +291,83 @@ signing_key:
|
|
|
285
291
|
specification_version: 4
|
|
286
292
|
summary: Simple creation of listings in rails applications.
|
|
287
293
|
test_files:
|
|
288
|
-
- spec/
|
|
289
|
-
- spec/dummy/
|
|
290
|
-
- spec/dummy/app/
|
|
294
|
+
- spec/dummy/README.rdoc
|
|
295
|
+
- spec/dummy/Rakefile
|
|
296
|
+
- spec/dummy/app/assets/config/manifest.js
|
|
297
|
+
- spec/dummy/app/assets/javascripts/application.js
|
|
298
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
|
299
|
+
- spec/dummy/app/controllers/application_controller.rb
|
|
300
|
+
- spec/dummy/app/controllers/posts_controller.rb
|
|
301
|
+
- spec/dummy/app/controllers/welcome_controller.rb
|
|
302
|
+
- spec/dummy/app/helpers/application_helper.rb
|
|
303
|
+
- spec/dummy/app/helpers/posts_helper.rb
|
|
291
304
|
- spec/dummy/app/listings/array_listing.rb
|
|
305
|
+
- spec/dummy/app/listings/authors_listing.rb
|
|
306
|
+
- spec/dummy/app/listings/filtered_posts_listing.rb
|
|
292
307
|
- spec/dummy/app/listings/hash_listing.rb
|
|
293
|
-
- spec/dummy/app/listings/
|
|
308
|
+
- spec/dummy/app/listings/posts_listing.rb
|
|
294
309
|
- spec/dummy/app/listings/tracks_fixed_order_listing.rb
|
|
295
|
-
- spec/dummy/app/
|
|
310
|
+
- spec/dummy/app/listings/tracks_listing.rb
|
|
296
311
|
- spec/dummy/app/models/album.rb
|
|
312
|
+
- spec/dummy/app/models/author.rb
|
|
297
313
|
- spec/dummy/app/models/object_album.rb
|
|
298
|
-
- spec/dummy/app/models/
|
|
314
|
+
- spec/dummy/app/models/object_track.rb
|
|
299
315
|
- spec/dummy/app/models/post.rb
|
|
300
|
-
- spec/dummy/app/
|
|
301
|
-
- spec/dummy/app/
|
|
302
|
-
- spec/dummy/app/
|
|
316
|
+
- spec/dummy/app/models/track.rb
|
|
317
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
|
318
|
+
- spec/dummy/app/views/listings/_date.html.haml
|
|
319
|
+
- spec/dummy/app/views/listings/_posts_count.html.haml
|
|
303
320
|
- spec/dummy/app/views/posts/filtered.html.haml
|
|
304
321
|
- spec/dummy/app/views/posts/index.html.haml
|
|
305
|
-
- spec/dummy/app/views/listings/_date.html.haml
|
|
306
322
|
- spec/dummy/app/views/shared/_post_partial.html.haml
|
|
307
323
|
- spec/dummy/app/views/welcome/array.html.haml
|
|
308
|
-
- spec/dummy/app/views/welcome/
|
|
324
|
+
- spec/dummy/app/views/welcome/authors.html.haml
|
|
309
325
|
- spec/dummy/app/views/welcome/hash.html.haml
|
|
326
|
+
- spec/dummy/app/views/welcome/index.html.haml
|
|
310
327
|
- spec/dummy/app/views/welcome/tracks.html.haml
|
|
311
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
|
312
|
-
- spec/dummy/app/assets/javascripts/application.js
|
|
313
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
|
314
|
-
- spec/dummy/app/helpers/posts_helper.rb
|
|
315
|
-
- spec/dummy/app/helpers/application_helper.rb
|
|
316
|
-
- spec/dummy/config/routes.rb
|
|
317
|
-
- spec/dummy/config/locales/en.yml
|
|
318
|
-
- spec/dummy/config/environments/production.rb
|
|
319
|
-
- spec/dummy/config/environments/development.rb
|
|
320
|
-
- spec/dummy/config/environments/test.rb
|
|
321
|
-
- spec/dummy/config/environment.rb
|
|
322
328
|
- spec/dummy/config/application.rb
|
|
323
|
-
- spec/dummy/config/database.yml
|
|
324
329
|
- spec/dummy/config/boot.rb
|
|
330
|
+
- spec/dummy/config/database.yml
|
|
331
|
+
- spec/dummy/config/environment.rb
|
|
332
|
+
- spec/dummy/config/environments/development.rb
|
|
333
|
+
- spec/dummy/config/environments/production.rb
|
|
334
|
+
- spec/dummy/config/environments/test.rb
|
|
325
335
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
|
336
|
+
- spec/dummy/config/initializers/inflections.rb
|
|
337
|
+
- spec/dummy/config/initializers/listings.rb
|
|
326
338
|
- spec/dummy/config/initializers/mime_types.rb
|
|
339
|
+
- spec/dummy/config/initializers/secret_token.rb
|
|
327
340
|
- spec/dummy/config/initializers/session_store.rb
|
|
328
341
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
|
329
|
-
- spec/dummy/config/
|
|
330
|
-
- spec/dummy/config/
|
|
331
|
-
- spec/dummy/config/initializers/inflections.rb
|
|
342
|
+
- spec/dummy/config/locales/en.yml
|
|
343
|
+
- spec/dummy/config/routes.rb
|
|
332
344
|
- spec/dummy/config.ru
|
|
333
|
-
- spec/dummy/spec
|
|
334
|
-
- spec/dummy/script/rails
|
|
335
|
-
- spec/dummy/Rakefile
|
|
336
|
-
- spec/dummy/public/favicon.ico
|
|
337
|
-
- spec/dummy/public/422.html
|
|
338
|
-
- spec/dummy/public/500.html
|
|
339
|
-
- spec/dummy/public/404.html
|
|
340
|
-
- spec/dummy/db/schema.rb
|
|
341
|
-
- spec/dummy/db/seeds.rb
|
|
342
|
-
- spec/dummy/db/migrate/20150611185922_create_tracks.rb
|
|
343
|
-
- spec/dummy/db/migrate/20140728151246_add_category_to_post.rb
|
|
344
|
-
- spec/dummy/db/migrate/20150611185824_create_albums.rb
|
|
345
345
|
- spec/dummy/db/migrate/20130618143317_create_posts.rb
|
|
346
346
|
- spec/dummy/db/migrate/20130618195559_add_author_to_posts.rb
|
|
347
|
-
- spec/dummy/
|
|
348
|
-
- spec/
|
|
349
|
-
- spec/
|
|
350
|
-
- spec/
|
|
351
|
-
- spec/
|
|
352
|
-
- spec/
|
|
353
|
-
- spec/
|
|
354
|
-
- spec/
|
|
347
|
+
- spec/dummy/db/migrate/20140728151246_add_category_to_post.rb
|
|
348
|
+
- spec/dummy/db/migrate/20150611185824_create_albums.rb
|
|
349
|
+
- spec/dummy/db/migrate/20150611185922_create_tracks.rb
|
|
350
|
+
- spec/dummy/db/schema.rb
|
|
351
|
+
- spec/dummy/db/seeds.rb
|
|
352
|
+
- spec/dummy/public/404.html
|
|
353
|
+
- spec/dummy/public/422.html
|
|
354
|
+
- spec/dummy/public/500.html
|
|
355
|
+
- spec/dummy/public/favicon.ico
|
|
356
|
+
- spec/dummy/script/rails
|
|
357
|
+
- spec/dummy/spec
|
|
355
358
|
- spec/factories/albums.rb
|
|
356
|
-
- spec/factories/
|
|
359
|
+
- spec/factories/authors.rb
|
|
360
|
+
- spec/factories/posts.rb
|
|
357
361
|
- spec/factories/tracks.rb
|
|
358
|
-
- spec/factories/
|
|
362
|
+
- spec/factories/traits.rb
|
|
359
363
|
- spec/lib/filter_parser_spec.rb
|
|
360
364
|
- spec/lib/sources/active_record_data_source_spec.rb
|
|
361
365
|
- spec/lib/sources/object_data_source_spec.rb
|
|
366
|
+
- spec/listings/posts_listing_spec.rb
|
|
367
|
+
- spec/listings/tracks_fixed_order_listing_spec.rb
|
|
368
|
+
- spec/listings/tracks_listing_spec.rb
|
|
369
|
+
- spec/models/album_spec.rb
|
|
370
|
+
- spec/models/post_spec.rb
|
|
371
|
+
- spec/models/track_spec.rb
|
|
372
|
+
- spec/spec_helper.rb
|
|
373
|
+
- spec/support/query_counter.rb
|