hot-glue 0.6.4 → 0.6.5
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/.github/workflows/test_suite.yml +1 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +1 -0
- data/README.md +30 -8
- data/app/helpers/hot_glue/controller_helper.rb +3 -8
- data/lib/generators/hot_glue/fields/field.rb +7 -1
- data/lib/generators/hot_glue/scaffold_generator.rb +3 -1
- data/lib/generators/hot_glue/templates/controller.rb.erb +6 -4
- data/lib/generators/hot_glue/templates/erb/_edit.erb +1 -1
- data/lib/generators/hot_glue/templates/erb/edit.turbo_stream.erb +1 -1
- data/lib/hotglue/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3eed7ea3e4a53cd699a7c6dcbc3b3ddc32daaaa2d4c2c1404b273a558c56164
|
4
|
+
data.tar.gz: 1969aecb3e38316da444557cc636aeb4b199bcabf74230212abf4a0c0b50039f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c68c27d95ed2359a8f8518aac33dbbf363cfd86b97252849445750680a4f04bf0caad6bf70639c35392baf9212e1f4224c1dec9a9658ab7a4e02b03ef2787bdf
|
7
|
+
data.tar.gz: ba2e7f93b676bb2e50b2ebb96b4d88b1f8153c6fbd6aef119c17585ac6ad623030604927224e78da5df2510280ccb275250a9eab9e6d8304c3adef391141d1a5
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.2.
|
1
|
+
3.2.4
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -62,7 +62,8 @@ Instantly get a simple CRUD interface
|
|
62
62
|
# Getting Started Video
|
63
63
|
[Hot Glue Getting Started (JSBundling)](https://www.youtube.com/watch?v=bzpXOhBkiDk)
|
64
64
|
|
65
|
-
_If you are on Rails 6, see [LEGACY SETUP FOR RAILS 6](https://github.com/
|
65
|
+
_If you are on Rails 6, see [LEGACY SETUP FOR RAILS 6](https://github.com/hot-glue-for-rails/hot-glue/blob/main/README2.md) and complete those steps FIRST._
|
66
|
+
|
66
67
|
|
67
68
|
## The Super-Quick Setup
|
68
69
|
https://jasonfleetwoodboldt.com/courses/stepping-up-rails/jason-fleetwood-boldts-rails-cookbook/hot-glue-quick-install-mega-script/
|
@@ -113,7 +114,7 @@ To run Turbo (which Hot Glue requires), you must either (1) be running an Import
|
|
113
114
|
|
114
115
|
(For the old method of installing Bootstrap [see this post](https://jasonfleetwoodboldt.com/courses/stepping-up-rails/rails-7-bootstrap/))
|
115
116
|
|
116
|
-
(Remember, for Rails 6 you must go through the [LEGACY SETUP FOR RAILS 6](https://github.com/
|
117
|
+
(Remember, for Rails 6 you must go through the [LEGACY SETUP FOR RAILS 6](https://github.com/hot-glue-for-rails/hot-glue/blob/main/README2.md) before continuing.)
|
117
118
|
|
118
119
|
|
119
120
|
### 2. ADD RSPEC, FACTORY-BOT, AND FFAKER
|
@@ -681,13 +682,15 @@ You will need to separately specify them as show-only if you want them to be non
|
|
681
682
|
|
682
683
|
Notice that each modifiers can be used with specific field types.
|
683
684
|
|
684
|
-
| user modifier | what it does
|
685
|
-
|
686
|
-
| $ | wraps output in `number_to_currency()`
|
685
|
+
| user modifier | what it does | Field types | | |
|
686
|
+
|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|---|---|
|
687
|
+
| $ | wraps output in `number_to_currency()` | floats and integers | | |
|
687
688
|
| (truthy label)\|(falsy label) | specify a binary switch with a pipe (\|) character if the value is truthy, it will display as "truthy label" if the value is falsy, it will display as "falsy label" | booleans, datetimes, dates, times | | |
|
688
|
-
| partials | applies to enums only, you must have a partial whose name matches each enum type
|
689
|
-
| tinymce | applies to text fields only, be sure to setup TineMCE globally
|
690
|
-
| typeahead | turns a foreign key (only) into a searchable typeahead field
|
689
|
+
| partials | applies to enums only, you must have a partial whose name matches each enum type | enums only | | |
|
690
|
+
| tinymce | applies to text fields only, be sure to setup TineMCE globally | text fields only | | |
|
691
|
+
| typeahead | turns a foreign key (only) into a searchable typeahead field | foreign keys only | | |
|
692
|
+
| timezone | turns a string (varchar) into a drop down of timezones | foreign keys only | | |
|
693
|
+
|
691
694
|
|
692
695
|
Except for "(truthy label)" and "(falsy label)" which use the special syntax, use the modifier _exactly_ as it is named.
|
693
696
|
|
@@ -1612,6 +1615,19 @@ These automatic pickups for partials are detected at buildtime. This means that
|
|
1612
1615
|
|
1613
1616
|
# VERSION HISTORY
|
1614
1617
|
|
1618
|
+
#### 2024-10-11 - v0.6.5
|
1619
|
+
• Adds timezone support as a modify option
|
1620
|
+
|
1621
|
+
`--modify='time_zone{timezone}'`
|
1622
|
+
|
1623
|
+
Note that this is a string field that will be displayed as a dropdown list of timezones using the rails `time_zone_select` helper.
|
1624
|
+
|
1625
|
+
Unlike the previous implementation which used `timezone`, this one uses the Rails locale names as provided by the `name` method returned from the `ActiveSupport::TimeZone` object.
|
1626
|
+
|
1627
|
+
• Fixes redisplay issue on big edit
|
1628
|
+
|
1629
|
+
• Fix for time parsing
|
1630
|
+
|
1615
1631
|
|
1616
1632
|
#### 2024-08-08 - v0.6.4 (renumbered v 6.0.3.3)
|
1617
1633
|
|
@@ -2309,3 +2325,9 @@ To run only the internal specs, use
|
|
2309
2325
|
|
2310
2326
|
Internal Test coverage as of 2023-10-15 (v0.5.24)
|
2311
2327
|
All Files ( 86.29% covered at 75.64 hits/line )
|
2328
|
+
|
2329
|
+
|
2330
|
+
### Reference
|
2331
|
+
|
2332
|
+
https://stackoverflow.com/questions/78313570/unable-to-bundle-install-nio4r-on-a-new-mac-m3
|
2333
|
+
|
@@ -70,7 +70,6 @@ module HotGlue
|
|
70
70
|
|
71
71
|
def modify_date_inputs_on_params(modified_params, current_user_object = nil, field_list = nil)
|
72
72
|
use_offset = (current_user_object.try(:timezone)) || server_timezone_offset
|
73
|
-
|
74
73
|
modified_params = modified_params.tap do |params|
|
75
74
|
params.keys.each{|k|
|
76
75
|
|
@@ -81,18 +80,14 @@ module HotGlue
|
|
81
80
|
end
|
82
81
|
if include_me
|
83
82
|
if use_offset != 0
|
84
|
-
|
83
|
+
zone = DateTime.now.in_time_zone(use_offset).zone
|
85
84
|
|
86
85
|
if use_offset.is_a? String
|
87
|
-
puts "parsing #{use_offset}"
|
88
|
-
zone = DateTime.now.in_time_zone(use_offset).zone
|
89
86
|
params[k] = DateTime.parse(params[k].gsub("T", " ") + " #{zone}")
|
90
87
|
else
|
91
|
-
|
92
|
-
params[k] =
|
88
|
+
parse_date = "#{params[k].gsub("T", " ")} #{zone}"
|
89
|
+
params[k] = Time.strptime(parse_date, "%Y-%m-%d %H:%M:%S %Z")
|
93
90
|
end
|
94
|
-
puts "changed #{params[k]}"
|
95
|
-
|
96
91
|
end
|
97
92
|
end
|
98
93
|
}
|
@@ -137,6 +137,8 @@ class Field
|
|
137
137
|
res += "<%= #{singular}.#{name} ? '#{modify_as[:binary][:truthy]}' : '#{modify_as[:binary][:falsy]}' %>"
|
138
138
|
elsif modify_as[:tinymce]
|
139
139
|
|
140
|
+
elsif modify_as[:timezone]
|
141
|
+
res += "<%= #{singular}.#{name} %>"
|
140
142
|
elsif modify_as[:enum]
|
141
143
|
res += "<%= render partial: #{singular}.#{name}, locals: {#{singular}: #{singular}} %>"
|
142
144
|
end
|
@@ -153,7 +155,11 @@ class Field
|
|
153
155
|
end
|
154
156
|
|
155
157
|
def field_output(type = nil, width )
|
156
|
-
|
158
|
+
if modify_as && modify_as[:timezone]
|
159
|
+
"<%= f.time_zone_select :#{name}, ActiveSupport::TimeZone.all, {}, {class: 'form-control'} %>"
|
160
|
+
else
|
161
|
+
" <%= f.text_field :#{name}, value: #{singular}.#{name}, autocomplete: 'off', size: #{width}, class: 'form-control', type: '#{type}'" + (form_placeholder_labels ? ", placeholder: '#{name.to_s.humanize}'" : "") + " %>\n " + "\n"
|
162
|
+
end
|
157
163
|
end
|
158
164
|
|
159
165
|
def text_area_output(field_length, extra_classes: "")
|
@@ -258,6 +258,8 @@ class HotGlue::ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
|
258
258
|
@modify_as[key.to_sym] = {tinymce: 1, badges: $3}
|
259
259
|
elsif $2 == "typeahead"
|
260
260
|
@modify_as[key.to_sym] = {typeahead: 1, badges: $3}
|
261
|
+
elsif $2 == "timezone"
|
262
|
+
@modify_as[key.to_sym] = {timezone: 1, badges: $3}
|
261
263
|
else
|
262
264
|
raise "unknown modification direction #{$2}"
|
263
265
|
end
|
@@ -1175,7 +1177,7 @@ class HotGlue::ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
|
1175
1177
|
def copy_view_files
|
1176
1178
|
return if @specs_only
|
1177
1179
|
@edit_within_form_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/_edit_within_form.html.#{@markup}")
|
1178
|
-
@edit_after_form_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/
|
1180
|
+
@edit_after_form_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/_edit_after_form.html.#{@markup}")
|
1179
1181
|
@new_within_form_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/_new_within_form.html.#{@markup}")
|
1180
1182
|
@new_after_form_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/_new_within_form.html.#{@markup}")
|
1181
1183
|
@index_before_list_partial = File.exist?("#{filepath_prefix}app/views#{namespace_with_dash}/#{@controller_build_folder}/_index_before_list.html.#{@markup}")
|
@@ -73,7 +73,8 @@ class <%= controller_class_name %> < <%= controller_descends_from %>
|
|
73
73
|
end<% end %>
|
74
74
|
<% unless @no_list %>
|
75
75
|
def load_all_<%= plural %>
|
76
|
-
<%= load_all_code %>
|
76
|
+
<%= load_all_code %>
|
77
|
+
end
|
77
78
|
|
78
79
|
def index<% if @search == "set" %>
|
79
80
|
@q = params[:q] || <%= {"0" => @search_fields.collect{|foo|
|
@@ -185,15 +186,16 @@ class <%= controller_class_name %> < <%= controller_descends_from %>
|
|
185
186
|
<% if @display_list_after_update %> load_all_<%= plural %><% end %>
|
186
187
|
flash[:notice] << "Saved #{@<%= singular %>.<%= display_class %>}"
|
187
188
|
flash[:alert] = @hawk_alarm if @hawk_alarm
|
188
|
-
render :update
|
189
|
+
<% unless @big_edit %>render :update, status: :unprocessable_entity<% else %>redirect_to <%= @namespace %>_<%= @plural %>_path<% end %>
|
189
190
|
else
|
190
191
|
flash[:alert] = "<%= singular_name.titlecase %> could not be saved. #{@hawk_alarm}"
|
191
192
|
@action = 'edit'
|
192
|
-
render :update
|
193
|
+
<% unless @big_edit %>render :update<% else %>render :edit<% end %>, status: :unprocessable_entity
|
193
194
|
end<% if @pundit %>
|
194
195
|
rescue Pundit::NotAuthorizedError
|
195
196
|
flash[:alert] = "Updating #{@<%= singular_name %>.<%= display_class %>} not authorized. "
|
196
|
-
|
197
|
+
<% unless @big_edit %>render :update<% else %>render :edit<% end %>, status: :unprocessable_entity
|
198
|
+
<% end %>
|
197
199
|
end
|
198
200
|
|
199
201
|
<% end %><% if destroy_action %> def destroy
|
@@ -8,6 +8,6 @@
|
|
8
8
|
<\%= render partial: "<%= namespace_with_trailing_dash + @controller_build_folder + "/" %>form", locals: {:<%= singular %> => <%= singular %>, f: f}<%= @nested_set.collect{|arg| ".merge(#{arg[:singular]} ? {#{arg[:singular]}: #{arg[:singular]}} : {})" }.join %> \%>
|
9
9
|
<% if @edit_within_form_partial %><\%= render partial: "edit_within_form", locals: {f: f, <%= singular %>: <%= singular %>}<%= @nested_set.collect{|arg| ".merge(#{arg[:singular]} ? {#{arg[:singular]}: #{arg[:singular]}} : {})" }.join %> %><% end %>
|
10
10
|
<\% end %>
|
11
|
-
<% if @
|
11
|
+
<% if @edit_after_form_partial %><\%= render partial: "edit_after_form", locals: {<%= singular %>: <%= singular %>}<%= @nested_set.collect{|arg| ".merge(#{arg[:singular]} ? {#{arg[:singular]}: #{arg[:singular]}} : {})" }.join %> %><% end %>
|
12
12
|
</div>
|
13
13
|
<\% end %>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
<\%= turbo_stream.replace "<%= @namespace %>__#{dom_id(<%= singular %>)}" do %>
|
2
|
-
<\%= render 'edit', locals: {<%= singular %>: @<%= singular %><%= @nested_set.collect{|arg| ", #{arg[:singular]}: @#{arg[:singular]}
|
2
|
+
<\%= render 'edit', locals: { <%= singular %>: @<%= singular %><%= @nested_set.collect{|arg| ", #{arg[:singular]}: @#{arg[:singular]} " }.join("") %> } %>
|
3
3
|
<\% end %>
|
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.
|
4
|
+
version: 0.6.5
|
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-
|
11
|
+
date: 2024-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
176
|
- !ruby/object:Gem::Version
|
177
177
|
version: '0'
|
178
178
|
requirements: []
|
179
|
-
rubygems_version: 3.
|
179
|
+
rubygems_version: 3.4.19
|
180
180
|
signing_key:
|
181
181
|
specification_version: 4
|
182
182
|
summary: A gem to build Turbo Rails scaffolding.
|