hot-glue 0.6.3 → 0.6.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +5 -1
- data/app/helpers/hot_glue/controller_helper.rb +8 -0
- data/lib/generators/hot_glue/fields/boolean_field.rb +3 -7
- data/lib/generators/hot_glue/fields/date_time_field.rb +18 -3
- data/lib/generators/hot_glue/markup_templates/erb.rb +16 -13
- data/lib/generators/hot_glue/scaffold_generator.rb +9 -6
- data/lib/hotglue/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7f159816e4a57c69d46d17fc9de3a1d01cfc5119f9a3533ad4b0b41889dd721
|
4
|
+
data.tar.gz: 6acd304e907a2b1518b9e243a04e5d937ab14a1bb4697b455480c2697eb5c031
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d44841aef402fa110552d2418a3a266bde9ff5e4ad161c8974cf16c192300aa335db9bd7471a8d2dafe166ead5254f7914c20f0a26d4e125122f2d10e12fd547
|
7
|
+
data.tar.gz: b072b894e68efcd0dd88beeab4b09048fae8cd2f5591bf99e8ec4f94006b36ece8117344b20b371942c5dcf7c6aa17e26aea1991a4b3243f9fe0633b648cc195
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hot-glue (0.6.
|
4
|
+
hot-glue (0.6.3)
|
5
5
|
ffaker (~> 2.16)
|
6
6
|
kaminari (~> 1.2)
|
7
7
|
rails (> 5.1)
|
@@ -139,14 +139,14 @@ GEM
|
|
139
139
|
mini_mime (1.1.2)
|
140
140
|
mini_portile2 (2.8.4)
|
141
141
|
minitest (5.16.3)
|
142
|
-
net-imap (0.4.
|
142
|
+
net-imap (0.4.9.1)
|
143
143
|
date
|
144
144
|
net-protocol
|
145
145
|
net-pop (0.1.2)
|
146
146
|
net-protocol
|
147
147
|
net-protocol (0.2.2)
|
148
148
|
timeout
|
149
|
-
net-smtp (0.4.0)
|
149
|
+
net-smtp (0.4.0.1)
|
150
150
|
net-protocol
|
151
151
|
nio4r (2.5.8)
|
152
152
|
nokogiri (1.13.9)
|
data/README.md
CHANGED
@@ -1606,7 +1606,11 @@ These automatic pickups for partials are detected at buildtime. This means that
|
|
1606
1606
|
|
1607
1607
|
# VERSION HISTORY
|
1608
1608
|
|
1609
|
-
####
|
1609
|
+
#### 2024-01-16 - v0.6.3.1
|
1610
|
+
Adds support for boolean modified datetime search; now, when using a modify= to turn a datetime into a boolean, the search box behaves appropriately and shows a 3-way radio picker: all, falsy, truthy.
|
1611
|
+
(Only implemented for datetime)
|
1612
|
+
|
1613
|
+
#### 2024-01-15 - v0.6.3
|
1610
1614
|
|
1611
1615
|
## Set Searching
|
1612
1616
|
|
@@ -208,6 +208,14 @@ module HotGlue
|
|
208
208
|
end
|
209
209
|
end
|
210
210
|
|
211
|
+
def boolean_modified_datetime_constructor(field,search)
|
212
|
+
unless search == '-1'
|
213
|
+
["#{field} #{search == '0' ? 'IS NULL' : 'IS NOT NULL'}"]
|
214
|
+
else
|
215
|
+
nil
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
211
219
|
private
|
212
220
|
|
213
221
|
def server_timezone_offset # returns integer of hours to add/subtract from UTC
|
@@ -83,16 +83,12 @@ class BooleanField < Field
|
|
83
83
|
|
84
84
|
def search_field_output
|
85
85
|
" <%= f.radio_button('q[0][#{name}_match]', '-1', checked: @q[\'0\']['#{name}_match']==-1 ? '' : 'checked', class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
86
|
-
" <%= f.label('
|
87
|
-
|
86
|
+
" <%= f.label('All', value: '-1', for: 'q[0][#{name}_match]_-1' ) %>\n" +
|
88
87
|
" <%= f.radio_button('q[0][#{name}_match]', '0', checked: @q[\'0\']['#{name}_match']==0 ? '' : 'checked', class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
89
|
-
" <%= f.label('
|
88
|
+
" <%= f.label('No', value: '0'}', for: 'q[0][#{name}_match]_0') %>\n" +
|
90
89
|
" <br /> <%= f.radio_button('q[0][#{name}_match]', '1', checked: @q[\'0\']['#{name}_match']==1 ? 'checked' : '' , class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
91
|
-
" <%= f.label('
|
92
|
-
|
90
|
+
" <%= f.label('Yes', value: '1'}', for: 'q[0][#{name}_match]_1') %>\n"
|
93
91
|
|
94
|
-
# "<%= f.select 'q[0][#{name}_match]', options_for_select([['', ''], ['contains', 'contains'], ['is exactly', 'is_exactly'], ['starts with', 'starts_with'], ['ends with', 'ends_with']], @q[\'0\']['#{name}_match'] ), {} , { class: 'form-control match' } %>"+
|
95
|
-
# "<%= f.text_field 'q[0][#{name}_search]', value: @q[\'0\'][:#{name}_search], autocomplete: 'off', size: 40, class: 'form-control', type: 'text' %>"
|
96
92
|
end
|
97
93
|
|
98
94
|
|
@@ -50,7 +50,9 @@ class DateTimeField < Field
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def search_field_output
|
53
|
-
|
53
|
+
if !modify_binary?
|
54
|
+
|
55
|
+
" <div data-controller='date-range-picker' >"+
|
54
56
|
"\n <%= f.select 'q[0][#{name}_match]', options_for_select([['', ''], ['is on', 'is_on'], " +
|
55
57
|
"\n ['is between', 'is_between'], ['is on or after', 'is_on_or_after'], " +
|
56
58
|
"\n ['is before or on', 'is_before_or_on'], ['not on', 'not_on']], @q[\'0\']['#{name}_match'] ), {} ," +
|
@@ -58,14 +60,27 @@ class DateTimeField < Field
|
|
58
60
|
"\n <%= datetime_local_field 'q[0]', '#{name}_search_start', {value: @q[\'0\'][:#{name}_search_start], autocomplete: 'off', size: 40, class: 'form-control', placeholder: 'start', 'data-date-range-picker-target': 'start' } %>" +
|
59
61
|
"\n <%= datetime_local_field 'q[0]', '#{name}_search_end', {value: @q[\'0\'][:#{name}_search_end], autocomplete: 'off', size: 40, class: 'form-control', placeholder: 'end' , 'data-date-range-picker-target': 'end' } %>" +
|
60
62
|
"\n </div>"
|
63
|
+
else
|
64
|
+
" <%= f.radio_button('q[0][#{name}_match]', '-1', checked: @q[\'0\']['#{name}_match']=='-1' ? 'checked' : '', class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
65
|
+
" <%= f.label('All', value: '-1', for: 'q[0][#{name}_match]_-1' ) %>\n" +
|
66
|
+
" <%= f.radio_button('q[0][#{name}_match]', '0', checked: @q[\'0\']['#{name}_match']=='0' ? 'checked' : '', class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
67
|
+
" <%= f.label('No', value: '0', for: 'q[0][#{name}_match]_0') %>\n" +
|
68
|
+
" <%= f.radio_button('q[0][#{name}_match]', '1', checked: @q[\'0\']['#{name}_match']=='1' ? 'checked' : '' , class: '#{@layout_strategy.form_checkbox_input_class}') %>\n" +
|
69
|
+
" <%= f.label('Yes', value: '1', for: 'q[0][#{name}_match]_1') %>\n" +
|
70
|
+
"<br />"
|
71
|
+
end
|
61
72
|
end
|
62
73
|
|
63
74
|
|
64
75
|
def where_query_statement
|
65
|
-
".where(
|
76
|
+
".where(#{name}_query)"
|
66
77
|
end
|
67
78
|
|
68
79
|
def load_all_query_statement
|
69
|
-
|
80
|
+
if !modify_binary?
|
81
|
+
"#{name}_query = date_query_constructor(:#{name}, @q['0'][:#{name}_match], @q['0'][:#{name}_search_start], @q['0'][:#{name}_search_end])"
|
82
|
+
else
|
83
|
+
"#{name}_query = boolean_modified_datetime_constructor(:#{name}, @q['0'][:#{name}_match])"
|
84
|
+
end
|
70
85
|
end
|
71
86
|
end
|
@@ -92,25 +92,28 @@ module HotGlue
|
|
92
92
|
columns = layout_object[:columns][:container]
|
93
93
|
column_classes = layout_strategy.column_classes_for_form_fields
|
94
94
|
|
95
|
-
|
96
95
|
res =+ "<\%= form_with url: #{form_path}, method: :get, html: {'data-turbo-action': 'advance', 'data-controller': 'search-form'} do |f| %>"
|
97
96
|
res << "<div class=\"#{@layout_strategy.row_classes} search--#{@plural}\">"
|
98
97
|
|
99
98
|
res << columns.map{ |column|
|
100
|
-
|
101
|
-
|
99
|
+
if (column & @search_fields.collect(&:to_sym )).size > 0
|
100
|
+
" <div class='#{column_classes} search-cell--#{singular}--#{column.join("-")}' >" +
|
102
101
|
column.map { |col|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
102
|
+
if @search_fields.collect(&:to_sym).include?(col)
|
103
|
+
label_class = columns_map[col].label_class
|
104
|
+
label_for = columns_map[col].label_for
|
105
|
+
the_label = "\n<label class='#{label_class}' for='search-#{label_for}'>#{col.to_s.humanize}</label>"
|
106
|
+
search_field_result = columns_map[col].search_field_output
|
107
|
+
|
108
|
+
add_spaces_each_line( "\n <span class='' >\n" +
|
109
|
+
add_spaces_each_line( (form_labels_position == 'before' ? the_label || "" : "") +
|
110
|
+
+ " <br />\n" + search_field_result +
|
111
|
+
(form_labels_position == 'after' ? the_label : "") , 4) +
|
112
|
+
"\n </span>\n <br /></div>", 2)
|
113
|
+
end
|
114
|
+
|
113
115
|
}.join("\n")
|
116
|
+
end
|
114
117
|
}.join("\n")
|
115
118
|
res << "<div class='#{column_classes}'>"
|
116
119
|
if @search_clear_button
|
@@ -513,6 +513,7 @@ class HotGlue::ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
|
513
513
|
@search = options['search']
|
514
514
|
if @search == 'set'
|
515
515
|
@search_fields = options['search_fields'].split(',') || @columns
|
516
|
+
|
516
517
|
# within the set search we will take out any fields on the query list
|
517
518
|
# or the field
|
518
519
|
@search_query_fields = options['search_query_fields'].split(',') || []
|
@@ -1454,7 +1455,7 @@ class HotGlue::ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
|
1454
1455
|
end
|
1455
1456
|
|
1456
1457
|
if pundit
|
1457
|
-
res << "@#{ plural_name } = policy_scope(#{ object_scope }).page(params[:page])#{ n_plus_one_includes }#{ ".per(per)" if @paginate_per_page_selector }"
|
1458
|
+
res << " @#{ plural_name } = policy_scope(#{ object_scope }).page(params[:page])#{ n_plus_one_includes }#{ ".per(per)" if @paginate_per_page_selector }"
|
1458
1459
|
else
|
1459
1460
|
if !@self_auth
|
1460
1461
|
res << spaces(4) + "@#{ plural_name } = #{ object_scope.gsub("@",'') }#{ n_plus_one_includes }.page(params[:page])#{ ".per(per)" if @paginate_per_page_selector }"
|
@@ -1470,14 +1471,16 @@ class HotGlue::ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
|
1470
1471
|
res << "@#{ plural_name } = #{ class_name }.all"
|
1471
1472
|
else
|
1472
1473
|
res << "@#{ plural_name } = #{ class_name }.where(id: #{ auth_object.gsub("@",'') }.id)#{ n_plus_one_includes }"
|
1473
|
-
|
1474
|
-
res << @search_fields.collect{ |field|
|
1475
|
-
@columns_map[field.to_sym].where_query_statement
|
1476
|
-
}.join("\n")
|
1477
|
-
end
|
1474
|
+
|
1478
1475
|
res << ".page(params[:page])#{ ".per(per)" if @paginate_per_page_selector }"
|
1479
1476
|
end
|
1480
1477
|
end
|
1478
|
+
res << "\n"
|
1479
|
+
if @search_fields
|
1480
|
+
res << @search_fields.collect{ |field|
|
1481
|
+
spaces(4) + "@#{plural_name} = @#{plural_name}" + @columns_map[field.to_sym].where_query_statement + " if #{field}_query"
|
1482
|
+
}.join("\n")
|
1483
|
+
end
|
1481
1484
|
res
|
1482
1485
|
end
|
1483
1486
|
|
data/lib/hotglue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hot-glue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.3
|
4
|
+
version: 0.6.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Fleetwood-Boldt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|