faceted_search 1.1.1 → 1.1.3

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 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: []