refine-rails 2.9.1 → 2.9.2

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: 4a54fd34a98179098e040456276d0109895a9963b23f45d8a4349341f741ec58
4
- data.tar.gz: daba33b740e07950606b1935a5726d4650386d38aef645d4de0c7d07eabea546
3
+ metadata.gz: 7291e0c87324f5ea5f6d9116e74b4996e873738a1a6f0cb192b5b4f3d6428482
4
+ data.tar.gz: 10d80a905ddc6ce6d3d0f9e3b1f6c0439bda1e93e0092866b36d184247ec4a6c
5
5
  SHA512:
6
- metadata.gz: 7711ae2669c9b3e9b93b77e1217dd98f44fe55d6f91ebd0b5b2d45006b6b88aa0918825af3c2d5dec4d92467ab27152f4d07c5807595280e8b790db75f70e6ed
7
- data.tar.gz: 64b1ae0855a94252aeb1544f9e8ea07571d5a47e5e584c297adc4297c40a88990505072cc68ec76e16900ef65b09a06e3eee894d990d81018ccfa67bc69247cc
6
+ metadata.gz: bd7d4016067808b0d9d32c3d7a564be9c3c35c15b39d1461a7ab01fef04ff44ed9dd65d03162209b339406103620a9b69f591e7d6be7a46d686b69dce74dd283
7
+ data.tar.gz: 660cd1e5bc02473e92d11d8155ea78591d572a288986c09be87ec355719e59476f6e7085eec63e8450817dbc67c680a97b5c9ba1b353c6cd6054404897e460c9
@@ -822,13 +822,11 @@
822
822
  }
823
823
 
824
824
  .refine-criterion-refinement-container {
825
- width: 100%;
826
- padding-top: 0.75rem
825
+ width: 100%
827
826
  }
828
827
 
829
828
  @media (min-width: 640px) {
830
829
  .refine-criterion-refinement-container {
831
- margin-right: 0.75rem;
832
830
  width: auto;
833
831
  flex-shrink: 0
834
832
  }
@@ -1426,6 +1424,10 @@
1426
1424
  padding: 0.5rem 0;
1427
1425
  }
1428
1426
 
1427
+ .refine--refinement-input-container {
1428
+ margin: 0.5rem 0;
1429
+ }
1430
+
1429
1431
  /* _date_condition.html.erb */
1430
1432
 
1431
1433
  .refine--date-condition-days-text {
@@ -224,7 +224,7 @@
224
224
  }
225
225
 
226
226
  .refine-criterion-refinement-container {
227
- @apply w-full pt-3 sm:w-auto sm:flex-shrink-0 sm:mr-3;
227
+ @apply w-full sm:w-auto sm:flex-shrink-0;
228
228
  }
229
229
 
230
230
  /* _delete_criterion.html.erb */
@@ -601,6 +601,10 @@
601
601
  padding: 0.5rem 0;
602
602
  }
603
603
 
604
+ .refine--refinement-input-container {
605
+ margin: 0.5rem 0;
606
+ }
607
+
604
608
 
605
609
  /* _date_condition.html.erb */
606
610
  .refine--date-condition-days-text {
@@ -118,6 +118,12 @@ class Refine::Inline::CriteriaController < ApplicationController
118
118
  :clause,
119
119
  :value1,
120
120
  :value2
121
+ ],
122
+ date_refinement_attributes: [
123
+ :clause,
124
+ :date1,
125
+ :date2,
126
+ :days
121
127
  ]
122
128
  ]
123
129
  )
@@ -50,7 +50,6 @@ module Refine
50
50
  end
51
51
  end
52
52
 
53
- # DEPRECATED use Refine::Filters::Criterion#human_readable instead
54
53
  def human_readable_criterions
55
54
  output = []
56
55
  if blueprint.present?
@@ -58,7 +57,13 @@ module Refine
58
57
  if criterion[:type] == "conjunction"
59
58
  output << criterion[:word]
60
59
  else
61
- output << get_condition_for_criterion(criterion).human_readable(criterion[:input])
60
+ condition = get_condition_for_criterion(criterion)
61
+ text = condition.human_readable(criterion[:input])
62
+ if condition.has_date_refinement?
63
+ date_refinement_condition = condition.has_date_refinement?.call
64
+ text += date_refinement_condition.human_readable(criterion[:input][:date_refinement])
65
+ end
66
+ output << text
62
67
  end
63
68
  end
64
69
  end
@@ -0,0 +1,14 @@
1
+ class Refine::Inline::Criteria::DateRefinement
2
+ include ActiveModel::Model
3
+
4
+ attr_accessor :clause, :date1, :date2, :days
5
+
6
+ def attributes
7
+ {
8
+ clause: clause,
9
+ date1: date1,
10
+ date2: date2,
11
+ days: days
12
+ }.compact
13
+ end
14
+ end
@@ -15,7 +15,8 @@ class Refine::Inline::Criteria::Input
15
15
  :value,
16
16
  :value1,
17
17
  :value2,
18
- :count_refinement
18
+ :count_refinement,
19
+ :date_refinement
19
20
 
20
21
  def attributes
21
22
  {
@@ -28,7 +29,8 @@ class Refine::Inline::Criteria::Input
28
29
  value: value,
29
30
  value1: value1,
30
31
  value2: value2,
31
- count_refinement_attributes: count_refinement_attributes.presence
32
+ count_refinement_attributes: count_refinement_attributes.presence,
33
+ date_refinement_attributes: date_refinement_attributes.presence
32
34
  }.compact
33
35
  end
34
36
 
@@ -44,6 +46,18 @@ class Refine::Inline::Criteria::Input
44
46
  count_refinement.attributes = attrs.to_h
45
47
  end
46
48
 
49
+ def date_refinement
50
+ @date_refinement ||= Refine::Inline::Criteria::DateRefinement.new
51
+ end
52
+
53
+ def date_refinement_attributes
54
+ date_refinement.attributes
55
+ end
56
+
57
+ def date_refinement_attributes=(attrs = {})
58
+ date_refinement.attributes = attrs.to_h
59
+ end
60
+
47
61
  def selected=(value)
48
62
  @selected = Array.wrap(value)
49
63
  end
@@ -21,6 +21,7 @@ class Refine::Inline::Criterion
21
21
  attrs[:input_attributes] = attrs.delete(:input)
22
22
  if input_attrs = attrs[:input_attributes]
23
23
  input_attrs[:count_refinement_attributes] = input_attrs.delete(:count_refinement)
24
+ input_attrs[:date_refinement_attributes] = input_attrs.delete(:date_refinement)
24
25
  end
25
26
  new(attrs)
26
27
  end
@@ -93,6 +94,7 @@ class Refine::Inline::Criterion
93
94
  result[:input] = result.delete(:input_attributes)
94
95
  if input_attrs = result[:input]
95
96
  input_attrs[:count_refinement] = input_attrs.delete(:count_refinement_attributes)
97
+ input_attrs[:date_refinement] = input_attrs.delete(:date_refinement_attributes)
96
98
  end
97
99
  result
98
100
  end
@@ -121,8 +123,6 @@ class Refine::Inline::Criterion
121
123
  end
122
124
 
123
125
  def validate!
124
- # TODO figure out how to validate inputs with count refinements
125
- return if input.count_refinement.attributes.present?
126
126
  errors.clear
127
127
  begin
128
128
  query_for_validate = refine_filter.initial_query || refine_filter.model.all
@@ -27,7 +27,7 @@
27
27
 
28
28
  <div class="refine-criterion-refinement-container">
29
29
  <%= render partial: 'refine/blueprints/clause_select', locals: {
30
- meta: refinement[:meta], input_id: "input, #{refinement[:id]}", selected_clause: criterion.input.dig(:input, refinement[:id].to_sym, :clause) || {} } %>
30
+ meta: refinement[:meta], input_id: "input, #{refinement[:id]}", selected_clause: criterion.input.dig(refinement[:id].to_sym, :clause) || {} } %>
31
31
  </div>
32
32
 
33
33
  <%= render partial: "refine/blueprints/clauses/#{refinement[:component].underscore}", locals: {
@@ -1,3 +1,18 @@
1
+ <%
2
+ condition = @criterion.condition
3
+ date_refinement_condition = condition.has_date_refinement? && condition.get_date_refinement_condition
4
+ count_refinement_condition = condition.has_count_refinement? && condition.get_count_refinement_condition
5
+
6
+ last_clause_select = if count_refinement_condition
7
+ :count
8
+ elsif date_refinement_condition
9
+ :date
10
+ else
11
+ :criterion
12
+ end
13
+ %>
14
+
15
+
1
16
  <%= form.hidden_field :stable_id, form: form_id %>
2
17
  <%= form.hidden_field :client_id, form: form_id %>
3
18
  <%= form.hidden_field :condition_id, form: form_id %>
@@ -10,16 +25,66 @@
10
25
  <%# Input Value %>
11
26
  <% unless ['st', 'nst'].include? @criterion.input.clause %>
12
27
  <%= render @criterion.input_partial, criterion: @criterion, form: form, input_fields: input_fields, form_id: form_id %>
28
+ <% if last_clause_select == :criterion %>
29
+ <div class="refine--separator"></div>
30
+ <% end %>
31
+ <% end %>
32
+
33
+ <%# Clause Select %>
34
+ <div class="refine--criterion-clause-container">
35
+ <%= input_fields.label :clause, t('.rule') %>
36
+ <%= input_fields.collection_select :clause,
37
+ @criterion.condition.approved_clauses,
38
+ :id,
39
+ :display,
40
+ {},
41
+ class: "refine--select refine--clause-select",
42
+ data: {action: "change->refine--criterion-form#refresh"},
43
+ form: form_id
44
+ %>
45
+ <% if last_clause_select == :criterion %>
46
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
47
+ <% end %>
48
+ </div>
49
+
50
+ <%# Date Refinement %>
51
+ <% if @criterion.condition.has_date_refinement? %>
13
52
  <div class="refine--separator"></div>
53
+ <label style="color: black;"><%= date_refinement_condition.display %></label>
54
+ <%= input_fields.fields :date_refinement_attributes, model: @criterion.input.date_refinement do |date_fields| %>
55
+ <div class="refine--refinement-input-container">
56
+ <% unless ['st', 'nst'].include? @criterion.input.date_refinement.clause %>
57
+ <%= render "refine/inline/inputs/date_condition", criterion: @criterion, form: form, input_fields: date_fields, form_id: form_id %>
58
+ <% end %>
59
+
60
+ </div>
61
+
62
+ <div class="refine--criterion-clause-container">
63
+ <%= date_fields.label :clause, t('.rule') %>
64
+ <%= date_fields.collection_select :clause,
65
+ date_refinement_condition.approved_clauses,
66
+ :id,
67
+ :display,
68
+ {},
69
+ class: "refine--select refine--clause-select",
70
+ data: {action: "change->refine--criterion-form#refresh"},
71
+ form: form_id
72
+ %>
73
+ <% if last_clause_select == :date %>
74
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
75
+ <% end %>
76
+ </div>
77
+ <% end %>
78
+
14
79
  <% end %>
15
80
 
16
81
  <%# Count Refinement %>
17
- <% if @criterion.condition.has_count_refinement? %>
82
+ <% if count_refinement_condition %>
18
83
  <label style="color: black;"><%= @criterion.condition.get_count_refinement_condition.display %></label>
19
84
  <%= input_fields.fields :count_refinement_attributes, model: @criterion.input.count_refinement do |count_fields| %>
20
85
  <div class="refine--criterion-clause-container">
21
86
  <%= count_fields.collection_select :clause,
22
- @criterion.condition.get_count_refinement_condition.clauses,
87
+ count_refinement_condition.approved_clauses,
23
88
  :id,
24
89
  :display,
25
90
  {},
@@ -29,28 +94,34 @@
29
94
  </div>
30
95
 
31
96
  <% unless ['st', 'nst'].include? @criterion.input.count_refinement.clause %>
32
- <%= render "refine/inline/inputs/numeric_condition", input_fields: count_fields, form_id: form_id %>
97
+ <%= render "refine/inline/inputs/numeric_condition", criterion: @criterion, form: form, input_fields: count_fields, form_id: form_id %>
33
98
  <% end %>
99
+
100
+ <div class="refine--criterion-clause-container">
101
+ <%= count.label :clause, t('.rule') %>
102
+ <%= count.collection_select :clause,
103
+ @criterion.condition.approved_clauses,
104
+ :id,
105
+ :display,
106
+ {},
107
+ class: "refine--select refine--clause-select",
108
+ data: {action: "change->refine--criterion-form#refresh"},
109
+ form: form_id
110
+ %>
111
+ <% if last_clause_select == :count %>
112
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
113
+ <% end %>
114
+ </div>
115
+
116
+
117
+
34
118
  <% end %>
35
119
 
36
120
  <% end %>
37
121
 
38
122
 
39
123
 
40
- <%# Clause Select %>
41
- <div class="refine--criterion-clause-container">
42
- <%= input_fields.label :clause, t('.rule') %>
43
- <%= input_fields.collection_select :clause,
44
- @criterion.condition.approved_clauses,
45
- :id,
46
- :display,
47
- {},
48
- class: "refine--select refine--clause-select",
49
- data: {action: "change->refine--criterion-form#refresh"},
50
- form: form_id
51
- %>
52
- <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
53
- </div>
124
+
54
125
 
55
126
 
56
127
  <% end %>
@@ -17,7 +17,6 @@
17
17
  </div>
18
18
  </div>
19
19
  </div>
20
-
21
20
  </div>
22
21
 
23
22
  <% end %>
@@ -1,6 +1,6 @@
1
- <% if criterion.input.clause.in? ["exct", "gt", "lt"] %>
1
+ <% if input_fields.object.clause.in? ["exct", "gt", "lt"] %>
2
2
  <%= render "refine/inline/inputs/date_condition_days", input_fields: input_fields, criterion: criterion, form_id: form_id %>
3
- <% elsif criterion.input.clause == "btwn" %>
3
+ <% elsif input_fields.object.clause == "btwn" %>
4
4
  <%= render "refine/inline/inputs/date_condition_range", input_fields: input_fields, criterion: criterion, form_id: form_id %>
5
5
  <% else %>
6
6
  <%= render "refine/inline/inputs/date_condition_single", input_fields: input_fields, criterion: criterion, form_id: form_id %>
@@ -2,7 +2,7 @@
2
2
  <%= render "refine/inline/inputs/date_picker",
3
3
  input_fields: input_fields,
4
4
  attribute: :date1,
5
- value: criterion.input.date1,
5
+ value: input_fields.object.date1,
6
6
  label: "#{criterion.condition.display.downcase} (#{t('.min')})",
7
7
  form_id: form_id
8
8
  %>
@@ -13,7 +13,7 @@
13
13
  <%= render "refine/inline/inputs/date_picker",
14
14
  input_fields: input_fields,
15
15
  attribute: :date2,
16
- value: criterion.input.date2,
16
+ value: input_fields.object.date2,
17
17
  label: "#{criterion.condition.display.downcase} (#{t('.max')})",
18
18
  form_id: form_id
19
19
  %>
@@ -2,7 +2,7 @@
2
2
  <%= render "refine/inline/inputs/date_picker",
3
3
  input_fields: input_fields,
4
4
  attribute: :date1,
5
- value: criterion.input.date1,
5
+ value: input_fields.object.date1,
6
6
  label: criterion.condition.display.downcase,
7
7
  form_id: form_id
8
8
  %>
@@ -1,5 +1,5 @@
1
1
  module Refine
2
2
  module Rails
3
- VERSION = "2.9.1"
3
+ VERSION = "2.9.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refine-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.1
4
+ version: 2.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colleen Schnettler
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-12-20 00:00:00.000000000 Z
12
+ date: 2024-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -101,6 +101,7 @@ files:
101
101
  - app/models/refine/filters/builder.rb
102
102
  - app/models/refine/filters/criterion.rb
103
103
  - app/models/refine/filters/query.rb
104
+ - app/models/refine/inline/criteria/date_refinement.rb
104
105
  - app/models/refine/inline/criteria/input.rb
105
106
  - app/models/refine/inline/criteria/numeric_refinement.rb
106
107
  - app/models/refine/inline/criteria/option.rb
@@ -197,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
198
  - !ruby/object:Gem::Version
198
199
  version: '0'
199
200
  requirements: []
200
- rubygems_version: 3.1.6
201
+ rubygems_version: 3.3.26
201
202
  signing_key:
202
203
  specification_version: 4
203
204
  summary: Visual query builder for Rails