faceted_search 1.1.1 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe592fdf97691ed7a84615276e1bcbefc462c4909ec022ac3cf9ac91e573cb29
4
- data.tar.gz: 016676f7aecb78314f4b35b4db6878594ed0fe10310e298587e10459482571f9
3
+ metadata.gz: e88e213ff0887cfffb7ecc22d76fb060ddbedd2d037252e8e89695ec83928674
4
+ data.tar.gz: 74b00464aaa30ec6d50f301f9303027aff7c4754bd813f47e8aa2bf455751b05
5
5
  SHA512:
6
- metadata.gz: 03d95585dc7d993aad9c3c86bf145a9bfb202c36f22f2016b426f78111ff28d8c23d01bbf97b58e2d03eb3ba651fe78dd68cf0184347134f9f58d3ec244455cc
7
- data.tar.gz: 558617b904a86f464411a4a7c5fa376d3289e330852359e7338495ce54472103c85d725a2852ff4acad98086e282699ba839f816349138b040b7a0e35f0cca41
6
+ metadata.gz: a51c7a17c08a9bc49645803c2ae10b858497308e292532140430e9f1ed71800ff014f25d833a536029bcf3b75060147b9252c8d592feed00977917e8ffb52578
7
+ data.tar.gz: ef10c7dc53f665136d32eba99f6e04dd10ed88f3111d983fd93f2909c85602c2afcc739ae411820db3b5fc66a88e2bc8452b8242382239e0ee5d9904c5d7e4a3
data/README.md CHANGED
@@ -26,12 +26,13 @@ $ gem install faceted_search
26
26
  Create a model defining your facets:
27
27
 
28
28
  class Item::Facets < FacetedSearch::Facets
29
- def define
30
- set_model Item.all
29
+ def initialize(params)
30
+ super
31
+ @model = Item.all
31
32
  search :title
32
- filter :products, find_by: :title
33
- filter :kinds
34
- filter :categories
33
+ filter :products, find_by: :title, habtm: true
34
+ filter :kinds, habtm: true
35
+ filter :categories, habtm: true
35
36
  end
36
37
  end
37
38
 
@@ -60,9 +61,5 @@ In your view, do something like that (with bootstrap):
60
61
  </div>
61
62
  </div>
62
63
 
63
-
64
- ## Contributing
65
- Contribution directions go here.
66
-
67
64
  ## License
68
65
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -12,19 +12,36 @@ module FacetedSearch
12
12
  value.to_s.in? params_array
13
13
  end
14
14
 
15
+ def results_with(value)
16
+ scope = @facets.model
17
+ @facets.list.each do |facet|
18
+ scope = facet == self ? add_scope_with_value(scope, value)
19
+ : facet.add_scope(scope)
20
+ end
21
+ scope
22
+ end
23
+
15
24
  def params_array
16
25
  @params_array ||= @params.to_s.split(',')
17
26
  end
18
27
 
19
28
  # Adds a scope corresponding to this facet
20
29
  # to the scope sent as an argument
21
- # and return the modified scope
30
+ # and return the modified scope
22
31
  def add_scope(scope)
23
32
  return scope if params_array.blank?
24
33
  @habtm ? scope.joins(name).where(name => { find_by => params_array })
25
34
  : scope.where(name => params_array)
26
35
  end
27
36
 
37
+ # Adds a scope corresponding to this facet
38
+ # to the scope sent as an argument with specific value
39
+ # and return the modified scope
40
+ def add_scope_with_value(scope, value)
41
+ @habtm ? scope.joins(name).where(name => { find_by => value })
42
+ : scope.where(name => value)
43
+ end
44
+
28
45
  # Show all values that have corresponding results.
29
46
  # This is a regular SQL inner join.
30
47
  def values
@@ -1,9 +1,9 @@
1
1
  <ul class="faceted__facets list-unstyled">
2
2
  <% @facets.list.each do |facet| %>
3
- <li class="mb-3">
3
+ <li>
4
4
  <b><%= facet.title %></b>
5
5
  <%= render facet.kind.underscore, facet: facet %>
6
6
  </li>
7
7
  <% end %>
8
- <li><a href="<%= @facets.path%>"><i class="fas fa-backspace"></i></a></li>
9
- </ul>
8
+ <li class="faceted__facet__reinit"><a href="<%= @facets.path%>"><i class="fas fa-backspace"></i></a></li>
9
+ </ul>
@@ -1,12 +1,14 @@
1
- <ul class="faceted__facet--filter list-unstyled">
1
+ <ul class="faceted__facet__filter list-unstyled">
2
2
  <% facet.values.each do |value| %>
3
3
  <%
4
4
  identifier = value.send facet.find_by
5
5
  selected = facet.selected? identifier
6
+ results_count = facet.results_with(value).count
7
+ next if results_count.zero?
6
8
  %>
7
9
  <li>
8
10
  <% if selected %><b><% end %>
9
- <%= link_to value, @facets.path_for(facet, identifier) %>
11
+ <%= link_to "#{value} (#{results_count})", @facets.path_for(facet, identifier) %>
10
12
  <% if selected %></b><% end %>
11
13
  </li>
12
14
  <% end %>
@@ -1,5 +1,5 @@
1
1
  <% value = params[:facets][facet.name] if params[:facets] && params[:facets].has_key?(facet.name) %>
2
- <form action="" class="faceted__facet--search form-inline"">
2
+ <form action="" class="faceted__facet__search form-inline">
3
3
  <% facet.facets.list.each do |f| %>
4
4
  <% next if f == facet %>
5
5
  <% next if f.params.blank? %>
@@ -1,3 +1,3 @@
1
1
  module FacetedSearch
2
- VERSION = '1.1.1'
2
+ VERSION = '1.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faceted_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Levy
8
+ - Sébastien Gaya
9
+ - Sébastien Moulène
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2019-02-27 00:00:00.000000000 Z
13
+ date: 2019-03-13 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: rails
@@ -94,9 +96,11 @@ dependencies:
94
96
  - - ">="
95
97
  - !ruby/object:Gem::Version
96
98
  version: '0'
97
- description: All you need to create a faceted search, as simply as possible
99
+ description: All you need to create a faceted search, as simple as possible
98
100
  email:
99
101
  - alevy@lespoupees.paris
102
+ - sebastien.gaya@gmail.com
103
+ - sebousan@gmail.com
100
104
  executables: []
101
105
  extensions: []
102
106
  extra_rdoc_files: []