super 0.0.15 → 0.19.0.rc1
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/README.md +2 -2
- data/app/assets/javascripts/super/application.js +1403 -127
- data/app/assets/stylesheets/super/application.css +90708 -90026
- data/app/controllers/super/application_controller.rb +73 -40
- data/app/controllers/super/substructure_controller.rb +349 -0
- data/app/helpers/super/form_builder_helper.rb +7 -0
- data/app/views/layouts/super/application.html.erb +3 -21
- data/app/views/super/application/_batch_button.html.erb +12 -0
- data/app/views/super/application/_batch_checkbox.csv.erb +1 -0
- data/app/views/super/application/_batch_checkbox.html.erb +5 -0
- data/app/views/super/application/_batch_form.html.erb +3 -0
- data/app/views/super/application/_collection_header.html.erb +8 -7
- data/app/views/super/application/_csv_button.html.erb +25 -0
- data/app/views/super/application/_display_actions.html.erb +2 -2
- data/app/views/super/application/_display_index.html.erb +1 -1
- data/app/views/super/application/_display_show.html.erb +1 -1
- data/app/views/super/application/_filter.html.erb +62 -2
- data/app/views/super/application/_layout.html.erb +13 -14
- data/app/views/super/application/_link.html.erb +8 -0
- data/app/views/super/application/_member_header.html.erb +8 -8
- data/app/views/super/application/_pagination.html.erb +2 -1
- data/app/views/super/application/_site_footer.html.erb +3 -0
- data/app/views/super/application/_site_header.html.erb +17 -0
- data/app/views/super/application/_sort_expression.html.erb +2 -2
- data/app/views/super/application/_view_chain.html.erb +5 -0
- data/app/views/super/application/index.csv.erb +14 -0
- data/config/locales/en.yml +8 -0
- data/frontend/super-frontend/dist/application.css +90708 -90026
- data/frontend/super-frontend/dist/application.js +1403 -127
- data/frontend/super-frontend/dist/package.json +13 -0
- data/lib/generators/super/install/templates/base_controller.rb.tt +0 -8
- data/lib/generators/super/resource/templates/resources_controller.rb.tt +4 -4
- data/lib/generators/super/webpacker/USAGE +1 -7
- data/lib/generators/super/webpacker/templates/pack_super_application.js.tt +2 -0
- data/lib/generators/super/webpacker/webpacker_generator.rb +10 -6
- data/lib/super/action_inquirer.rb +7 -0
- data/lib/super/badge.rb +0 -1
- data/lib/super/cheat.rb +7 -6
- data/lib/super/display/guesser.rb +1 -1
- data/lib/super/display/schema_types.rb +6 -1
- data/lib/super/display.rb +2 -1
- data/lib/super/engine.rb +5 -0
- data/lib/super/error.rb +12 -0
- data/lib/super/filter/form_object.rb +74 -48
- data/lib/super/filter/guesser.rb +2 -0
- data/lib/super/filter/operator.rb +90 -64
- data/lib/super/filter/schema_types.rb +63 -80
- data/lib/super/filter.rb +1 -1
- data/lib/super/form/builder.rb +6 -3
- data/lib/super/form/field_transcript.rb +43 -0
- data/lib/super/form/guesser.rb +1 -1
- data/lib/super/form/schema_types.rb +11 -20
- data/lib/super/layout.rb +9 -33
- data/lib/super/link.rb +3 -8
- data/lib/super/link_builder.rb +0 -4
- data/lib/super/packaged_asset.rb +49 -0
- data/lib/super/pagination.rb +4 -3
- data/lib/super/reorderable_hash.rb +88 -0
- data/lib/super/reset.rb +24 -0
- data/lib/super/schema.rb +4 -0
- data/lib/super/version.rb +1 -1
- data/lib/super/view_chain.rb +25 -0
- data/lib/super.rb +4 -1
- data/lib/tasks/super/cheat.rake +1 -1
- metadata +51 -15
- data/app/views/super/application/_filter_type_select.html.erb +0 -21
- data/app/views/super/application/_filter_type_text.html.erb +0 -18
- data/app/views/super/application/_filter_type_timestamp.html.erb +0 -24
- data/app/views/super/application/_form_field_select.html.erb +0 -1
- data/lib/generators/super/webpacker/templates/pack_super_application.js.erb.tt +0 -2
- data/lib/super/controls/optional.rb +0 -122
- data/lib/super/controls/steps.rb +0 -133
- data/lib/super/controls/view.rb +0 -55
- data/lib/super/controls.rb +0 -22
data/lib/super.rb
CHANGED
@@ -14,7 +14,6 @@ require "super/badge"
|
|
14
14
|
require "super/client_error"
|
15
15
|
require "super/compatibility"
|
16
16
|
require "super/configuration"
|
17
|
-
require "super/controls"
|
18
17
|
require "super/display"
|
19
18
|
require "super/display/guesser"
|
20
19
|
require "super/display/schema_types"
|
@@ -26,6 +25,7 @@ require "super/filter/operator"
|
|
26
25
|
require "super/filter/schema_types"
|
27
26
|
require "super/form"
|
28
27
|
require "super/form/builder"
|
28
|
+
require "super/form/field_transcript"
|
29
29
|
require "super/form/guesser"
|
30
30
|
require "super/form/inline_errors"
|
31
31
|
require "super/form/schema_types"
|
@@ -34,16 +34,19 @@ require "super/layout"
|
|
34
34
|
require "super/link"
|
35
35
|
require "super/link_builder"
|
36
36
|
require "super/navigation"
|
37
|
+
require "super/packaged_asset"
|
37
38
|
require "super/pagination"
|
38
39
|
require "super/panel"
|
39
40
|
require "super/partial"
|
40
41
|
require "super/plugin"
|
41
42
|
require "super/query/form_object"
|
43
|
+
require "super/reorderable_hash"
|
42
44
|
require "super/reset"
|
43
45
|
require "super/schema"
|
44
46
|
require "super/schema/guesser"
|
45
47
|
require "super/sort"
|
46
48
|
require "super/version"
|
49
|
+
require "super/view_chain"
|
47
50
|
require "super/view_helper"
|
48
51
|
|
49
52
|
require "super/engine"
|
data/lib/tasks/super/cheat.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: super
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.19.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zach Ahn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -115,7 +115,7 @@ dependencies:
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
|
-
name: pry
|
118
|
+
name: pry-rails
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - ">="
|
@@ -212,6 +212,34 @@ dependencies:
|
|
212
212
|
- - ">="
|
213
213
|
- !ruby/object:Gem::Version
|
214
214
|
version: '0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: rails_anonymous_controller_testing
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: minitest-bisect
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
236
|
+
type: :development
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
215
243
|
description:
|
216
244
|
email:
|
217
245
|
- engineering@zachahn.com
|
@@ -226,33 +254,40 @@ files:
|
|
226
254
|
- app/assets/javascripts/super/application.js
|
227
255
|
- app/assets/stylesheets/super/application.css
|
228
256
|
- app/controllers/super/application_controller.rb
|
257
|
+
- app/controllers/super/substructure_controller.rb
|
229
258
|
- app/helpers/super/form_builder_helper.rb
|
230
259
|
- app/views/layouts/super/application.html.erb
|
260
|
+
- app/views/super/application/_batch_button.html.erb
|
261
|
+
- app/views/super/application/_batch_checkbox.csv.erb
|
262
|
+
- app/views/super/application/_batch_checkbox.html.erb
|
263
|
+
- app/views/super/application/_batch_form.html.erb
|
231
264
|
- app/views/super/application/_collection_header.html.erb
|
265
|
+
- app/views/super/application/_csv_button.html.erb
|
232
266
|
- app/views/super/application/_display_actions.html.erb
|
233
267
|
- app/views/super/application/_display_index.html.erb
|
234
268
|
- app/views/super/application/_display_rich_text.html.erb
|
235
269
|
- app/views/super/application/_display_show.html.erb
|
236
270
|
- app/views/super/application/_filter.html.erb
|
237
|
-
- app/views/super/application/_filter_type_select.html.erb
|
238
|
-
- app/views/super/application/_filter_type_text.html.erb
|
239
|
-
- app/views/super/application/_filter_type_timestamp.html.erb
|
240
271
|
- app/views/super/application/_flash.html.erb
|
241
272
|
- app/views/super/application/_form.html.erb
|
242
273
|
- app/views/super/application/_form_field.html.erb
|
243
274
|
- app/views/super/application/_form_field__destroy.html.erb
|
244
|
-
- app/views/super/application/_form_field_select.html.erb
|
245
275
|
- app/views/super/application/_form_fieldset.html.erb
|
246
276
|
- app/views/super/application/_form_has_many.html.erb
|
247
277
|
- app/views/super/application/_form_has_one.html.erb
|
248
278
|
- app/views/super/application/_layout.html.erb
|
279
|
+
- app/views/super/application/_link.html.erb
|
249
280
|
- app/views/super/application/_member_header.html.erb
|
250
281
|
- app/views/super/application/_pagination.html.erb
|
251
282
|
- app/views/super/application/_panel.html.erb
|
252
283
|
- app/views/super/application/_query.html.erb
|
284
|
+
- app/views/super/application/_site_footer.html.erb
|
285
|
+
- app/views/super/application/_site_header.html.erb
|
253
286
|
- app/views/super/application/_sort.html.erb
|
254
287
|
- app/views/super/application/_sort_expression.html.erb
|
288
|
+
- app/views/super/application/_view_chain.html.erb
|
255
289
|
- app/views/super/application/edit.html.erb
|
290
|
+
- app/views/super/application/index.csv.erb
|
256
291
|
- app/views/super/application/index.html.erb
|
257
292
|
- app/views/super/application/new.html.erb
|
258
293
|
- app/views/super/application/nothing.html.erb
|
@@ -263,6 +298,7 @@ files:
|
|
263
298
|
- config/routes.rb
|
264
299
|
- frontend/super-frontend/dist/application.css
|
265
300
|
- frontend/super-frontend/dist/application.js
|
301
|
+
- frontend/super-frontend/dist/package.json
|
266
302
|
- lib/generators/super/action_text/USAGE
|
267
303
|
- lib/generators/super/action_text/action_text_generator.rb
|
268
304
|
- lib/generators/super/action_text/templates/pack_super_action_text.css
|
@@ -275,7 +311,7 @@ files:
|
|
275
311
|
- lib/generators/super/resource/resource_generator.rb
|
276
312
|
- lib/generators/super/resource/templates/resources_controller.rb.tt
|
277
313
|
- lib/generators/super/webpacker/USAGE
|
278
|
-
- lib/generators/super/webpacker/templates/pack_super_application.js.
|
314
|
+
- lib/generators/super/webpacker/templates/pack_super_application.js.tt
|
279
315
|
- lib/generators/super/webpacker/webpacker_generator.rb
|
280
316
|
- lib/super.rb
|
281
317
|
- lib/super/action_inquirer.rb
|
@@ -285,10 +321,6 @@ files:
|
|
285
321
|
- lib/super/client_error.rb
|
286
322
|
- lib/super/compatibility.rb
|
287
323
|
- lib/super/configuration.rb
|
288
|
-
- lib/super/controls.rb
|
289
|
-
- lib/super/controls/optional.rb
|
290
|
-
- lib/super/controls/steps.rb
|
291
|
-
- lib/super/controls/view.rb
|
292
324
|
- lib/super/display.rb
|
293
325
|
- lib/super/display/guesser.rb
|
294
326
|
- lib/super/display/schema_types.rb
|
@@ -301,6 +333,7 @@ files:
|
|
301
333
|
- lib/super/filter/schema_types.rb
|
302
334
|
- lib/super/form.rb
|
303
335
|
- lib/super/form/builder.rb
|
336
|
+
- lib/super/form/field_transcript.rb
|
304
337
|
- lib/super/form/guesser.rb
|
305
338
|
- lib/super/form/inline_errors.rb
|
306
339
|
- lib/super/form/schema_types.rb
|
@@ -309,12 +342,14 @@ files:
|
|
309
342
|
- lib/super/link.rb
|
310
343
|
- lib/super/link_builder.rb
|
311
344
|
- lib/super/navigation.rb
|
345
|
+
- lib/super/packaged_asset.rb
|
312
346
|
- lib/super/pagination.rb
|
313
347
|
- lib/super/panel.rb
|
314
348
|
- lib/super/partial.rb
|
315
349
|
- lib/super/partial/resolving.rb
|
316
350
|
- lib/super/plugin.rb
|
317
351
|
- lib/super/query/form_object.rb
|
352
|
+
- lib/super/reorderable_hash.rb
|
318
353
|
- lib/super/reset.rb
|
319
354
|
- lib/super/schema.rb
|
320
355
|
- lib/super/schema/common.rb
|
@@ -323,6 +358,7 @@ files:
|
|
323
358
|
- lib/super/useful/builder.rb
|
324
359
|
- lib/super/useful/enum.rb
|
325
360
|
- lib/super/version.rb
|
361
|
+
- lib/super/view_chain.rb
|
326
362
|
- lib/super/view_helper.rb
|
327
363
|
- lib/tasks/super/cheat.rake
|
328
364
|
homepage:
|
@@ -345,11 +381,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
345
381
|
version: 2.3.0
|
346
382
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
347
383
|
requirements:
|
348
|
-
- - "
|
384
|
+
- - ">"
|
349
385
|
- !ruby/object:Gem::Version
|
350
|
-
version:
|
386
|
+
version: 1.3.1
|
351
387
|
requirements: []
|
352
|
-
rubygems_version: 3.
|
388
|
+
rubygems_version: 3.0.3.1
|
353
389
|
signing_key:
|
354
390
|
specification_version: 4
|
355
391
|
summary: A simple, powerful, zero dependency Rails admin framework
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<div class="super-field-group" data-controller="clean-filter-param">
|
2
|
-
<%= form.fields_for(filter_type_select.field_name, filter_type_select) do |form_field| %>
|
3
|
-
<%= form_field.label(:q, filter_type_select.humanized_field_name) %>
|
4
|
-
<div class="inline-block">
|
5
|
-
<%= form_field.super.select(
|
6
|
-
:op,
|
7
|
-
filter_type_select.operators,
|
8
|
-
{ include_blank: false },
|
9
|
-
data: { clean_filter_param_target: "candidate" }
|
10
|
-
) %>
|
11
|
-
</div>
|
12
|
-
<div class="mt-3">
|
13
|
-
<%= form_field.super.select(
|
14
|
-
:q,
|
15
|
-
filter_type_select.field_type.collection,
|
16
|
-
{},
|
17
|
-
data: { clean_filter_param_target: "control candidate" }
|
18
|
-
) %>
|
19
|
-
</div>
|
20
|
-
<% end %>
|
21
|
-
</div>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<div class="super-field-group" data-controller="clean-filter-param">
|
2
|
-
<%= form.fields_for(filter_type_text.field_name, filter_type_text) do |form_field| %>
|
3
|
-
<%= form_field.label(:q, filter_type_text.humanized_field_name) %>
|
4
|
-
<div class="inline-block">
|
5
|
-
<%= form_field.super.select(
|
6
|
-
:op,
|
7
|
-
filter_type_text.operators,
|
8
|
-
{ include_blank: false },
|
9
|
-
data: { clean_filter_param_target: "candidate" }
|
10
|
-
) %>
|
11
|
-
</div>
|
12
|
-
<%= form_field.super.text_field(
|
13
|
-
:q,
|
14
|
-
class: "mt-3",
|
15
|
-
data: { clean_filter_param_target: "control candidate" }
|
16
|
-
) %>
|
17
|
-
<% end %>
|
18
|
-
</div>
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<div class="super-field-group" data-controller="clean-filter-param">
|
2
|
-
<%= form.fields_for(filter_type_timestamp.field_name, filter_type_timestamp) do |form_field| %>
|
3
|
-
<%= form_field.label(:q0, filter_type_timestamp.humanized_field_name) %>
|
4
|
-
<div class="inline-block mt-2">
|
5
|
-
<%= form_field.super.select(
|
6
|
-
:op,
|
7
|
-
filter_type_timestamp.operators,
|
8
|
-
{ include_blank: false },
|
9
|
-
data: { clean_filter_param_target: "candidate" }
|
10
|
-
) %>
|
11
|
-
</div>
|
12
|
-
<div class="flex items-center mt-3">
|
13
|
-
<div class="flex-initial">
|
14
|
-
<%= form_field.super.datetime_flatpickr(:q0, data: { clean_filter_param_target: "control candidate" }) %>
|
15
|
-
</div>
|
16
|
-
<div class="flex-initial px-2">
|
17
|
-
–
|
18
|
-
</div>
|
19
|
-
<div class="flex-initial">
|
20
|
-
<%= form_field.super.datetime_flatpickr(:q1, data: { clean_filter_param_target: "control candidate" }) %>
|
21
|
-
</div>
|
22
|
-
</div>
|
23
|
-
<% end %>
|
24
|
-
</div>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= form.super.select!(column, form_field_select[:collection]) %>
|
@@ -1,122 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Super
|
4
|
-
class Controls
|
5
|
-
# Methods for `Controls` that have a sane default implementation
|
6
|
-
module Optional
|
7
|
-
# This is an optional method
|
8
|
-
#
|
9
|
-
# @return [String]
|
10
|
-
def title
|
11
|
-
model.name.pluralize
|
12
|
-
end
|
13
|
-
|
14
|
-
# Configures what database records are visible on load. This is an optional
|
15
|
-
# method, it defaults to "`all`" methods
|
16
|
-
#
|
17
|
-
# @param action [ActionInquirer]
|
18
|
-
# @return [ActiveRecord::Relation]
|
19
|
-
def scope(action:)
|
20
|
-
model.all
|
21
|
-
end
|
22
|
-
|
23
|
-
# Configures the fields that are displayed on the index and show actions.
|
24
|
-
# This is a required method
|
25
|
-
#
|
26
|
-
# @param action [ActionInquirer]
|
27
|
-
# @return [Display]
|
28
|
-
def display_schema(action:)
|
29
|
-
Display.new do |fields, type|
|
30
|
-
Display::Guesser.new(model: model, action: action, fields: fields, type: type).call
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Configures the editable fields on the new and edit actions. This is a
|
35
|
-
# required method
|
36
|
-
#
|
37
|
-
# @param action [ActionInquirer]
|
38
|
-
# @return [Form]
|
39
|
-
def form_schema(action:)
|
40
|
-
Form.new do |fields, type|
|
41
|
-
Form::Guesser.new(model: model, fields: fields, type: type).call
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Configures which parameters could be written to the database. This is a
|
46
|
-
# required method
|
47
|
-
#
|
48
|
-
# @param params [ActionController::Parameters]
|
49
|
-
# @param action [ActionInquirer]
|
50
|
-
# @return [ActionController::Parameters]
|
51
|
-
def permitted_params(params, action:)
|
52
|
-
strong_params = Super::Form::StrongParams.new(form_schema(action: action))
|
53
|
-
params.require(strong_params.require(model)).permit(strong_params.permit)
|
54
|
-
end
|
55
|
-
|
56
|
-
# Configures the actions linked to on the index page. This is an optional
|
57
|
-
# method
|
58
|
-
#
|
59
|
-
# @param action [ActionInquirer]
|
60
|
-
# @return [Array<Link>]
|
61
|
-
def collection_actions(action:)
|
62
|
-
Super::Link.find_all(:new)
|
63
|
-
end
|
64
|
-
|
65
|
-
# Configures the actions linked to on the show page as well as each row of
|
66
|
-
# the table on the index page. This is an optional method
|
67
|
-
#
|
68
|
-
# @param action [ActionInquirer]
|
69
|
-
# @return [Array<Link>]
|
70
|
-
def member_actions(action:)
|
71
|
-
if action.show?
|
72
|
-
Super::Link.find_all(:edit, :destroy)
|
73
|
-
elsif action.edit?
|
74
|
-
Super::Link.find_all(:show, :destroy)
|
75
|
-
else
|
76
|
-
Super::Link.find_all(:show, :edit, :destroy)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def filters_enabled?
|
81
|
-
true
|
82
|
-
end
|
83
|
-
|
84
|
-
def filter_schema
|
85
|
-
Super::Filter.new do |fields, type|
|
86
|
-
Super::Filter::Guesser.new(model: model, fields: fields, type: type).call
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def sort_enabled?
|
91
|
-
true
|
92
|
-
end
|
93
|
-
|
94
|
-
def sortable_columns
|
95
|
-
action = ActionInquirer.new(
|
96
|
-
ActionInquirer.default_for_resources,
|
97
|
-
"index"
|
98
|
-
)
|
99
|
-
attribute_names =
|
100
|
-
display_schema(action: action).each_attribute.map do |key, val|
|
101
|
-
val = val.build if val.respond_to?(:build)
|
102
|
-
key if val.real?
|
103
|
-
end
|
104
|
-
|
105
|
-
attribute_names.compact
|
106
|
-
end
|
107
|
-
|
108
|
-
def default_sort
|
109
|
-
{ id: :desc }
|
110
|
-
end
|
111
|
-
|
112
|
-
# Specifies how many records to show per page
|
113
|
-
#
|
114
|
-
# @param action [ActionInquirer]
|
115
|
-
# @param query_params [Hash]
|
116
|
-
# @return [ActiveRecord::Relation]
|
117
|
-
def records_per_page(action:, query_params:)
|
118
|
-
Super.configuration.index_records_per_page
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
data/lib/super/controls/steps.rb
DELETED
@@ -1,133 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Super
|
4
|
-
class Controls
|
5
|
-
# Methods that are called by controller actions. All of these methods have
|
6
|
-
# a default implementation, but feel free to override as needed.
|
7
|
-
module Steps
|
8
|
-
# Tells the controller how to load records in the index action using
|
9
|
-
# `#scope`
|
10
|
-
#
|
11
|
-
# @param action [ActionInquirer]
|
12
|
-
# @param params [ActionController::Parameters]
|
13
|
-
# @return [ActiveRecord::Relation]
|
14
|
-
def load_records(action:, params:)
|
15
|
-
scope(action: action)
|
16
|
-
end
|
17
|
-
|
18
|
-
# Loads a record using `#scope`
|
19
|
-
#
|
20
|
-
# @param action [ActionInquirer]
|
21
|
-
# @param params [ActionController::Parameters]
|
22
|
-
# @return [ActiveRecord::Base]
|
23
|
-
def load_record(action:, params:)
|
24
|
-
scope(action: action).find(params[:id])
|
25
|
-
end
|
26
|
-
|
27
|
-
# Builds a record using `#scope`
|
28
|
-
#
|
29
|
-
# @param action [ActionInquirer]
|
30
|
-
# @return [ActiveRecord::Base]
|
31
|
-
def build_record(action:)
|
32
|
-
scope(action: action).build
|
33
|
-
end
|
34
|
-
|
35
|
-
# Builds and populates a record using `#scope`
|
36
|
-
#
|
37
|
-
# @param action [ActionInquirer]
|
38
|
-
# @param params [ActionController::Parameters]
|
39
|
-
# @return [ActiveRecord::Base]
|
40
|
-
def build_record_with_params(action:, params:)
|
41
|
-
scope(action: action).build(permitted_params(params, action: action))
|
42
|
-
end
|
43
|
-
|
44
|
-
# Saves a record
|
45
|
-
#
|
46
|
-
# @param action [ActionInquirer]
|
47
|
-
# @param params [ActionController::Parameters]
|
48
|
-
# @return [true, false]
|
49
|
-
def save_record(action:, record:, params:)
|
50
|
-
record.save
|
51
|
-
end
|
52
|
-
|
53
|
-
# Saves a record
|
54
|
-
#
|
55
|
-
# @param action [ActionInquirer]
|
56
|
-
# @param params [ActionController::Parameters]
|
57
|
-
# @return [true, false]
|
58
|
-
def update_record(action:, record:, params:)
|
59
|
-
record.update(permitted_params(params, action: action))
|
60
|
-
end
|
61
|
-
|
62
|
-
# Destroys a record
|
63
|
-
#
|
64
|
-
# @param action [ActionInquirer]
|
65
|
-
# @param params [ActionController::Parameters]
|
66
|
-
# @return [ActiveRecord::Base, false]
|
67
|
-
def destroy_record(action:, record:, params:)
|
68
|
-
record.destroy
|
69
|
-
end
|
70
|
-
|
71
|
-
def initialize_query_form(params:, current_path:)
|
72
|
-
Super::Query::FormObject.new(
|
73
|
-
model: model,
|
74
|
-
params: params,
|
75
|
-
namespace: :q,
|
76
|
-
current_path: current_path,
|
77
|
-
)
|
78
|
-
end
|
79
|
-
|
80
|
-
def apply_queries(query_form:, records:)
|
81
|
-
query_form.apply_changes(records)
|
82
|
-
end
|
83
|
-
|
84
|
-
def initialize_filter_form(query_form:)
|
85
|
-
if filters_enabled?
|
86
|
-
query_form.add(
|
87
|
-
Super::Filter::FormObject,
|
88
|
-
namespace: :f,
|
89
|
-
schema: filter_schema
|
90
|
-
)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def initialize_sort_form(query_form:)
|
95
|
-
if sort_enabled?
|
96
|
-
query_form.add(
|
97
|
-
Super::Sort::FormObject,
|
98
|
-
namespace: :s,
|
99
|
-
default: default_sort,
|
100
|
-
sortable_columns: sortable_columns
|
101
|
-
)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
# Sets up pagination
|
106
|
-
#
|
107
|
-
# @param action [ActionInquirer]
|
108
|
-
# @param records [ActiveRecord::Relation]
|
109
|
-
# @param query_params [Hash]
|
110
|
-
# @return [Pagination]
|
111
|
-
def initialize_pagination(action:, records:, query_params:)
|
112
|
-
Pagination.new(
|
113
|
-
total_count: records.size,
|
114
|
-
limit: records_per_page(action: action, query_params: query_params),
|
115
|
-
query_params: query_params,
|
116
|
-
page_query_param: :page
|
117
|
-
)
|
118
|
-
end
|
119
|
-
|
120
|
-
# Paginates
|
121
|
-
#
|
122
|
-
# @param action [ActionInquirer]
|
123
|
-
# @param records [ActiveRecord::Relation]
|
124
|
-
# @param pagination [Pagination]
|
125
|
-
# @return [ActiveRecord::Relation]
|
126
|
-
def paginate_records(action:, records:, pagination:)
|
127
|
-
records
|
128
|
-
.limit(pagination.limit)
|
129
|
-
.offset(pagination.offset)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
data/lib/super/controls/view.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Super
|
4
|
-
class Controls
|
5
|
-
# Methods for `Controls` that have a sane default implementation
|
6
|
-
module View
|
7
|
-
def index_view
|
8
|
-
Super::Layout.new(
|
9
|
-
mains: [
|
10
|
-
Super::Panel.new(
|
11
|
-
Super::Partial.new("collection_header"),
|
12
|
-
:@display
|
13
|
-
),
|
14
|
-
],
|
15
|
-
asides: [
|
16
|
-
:@query_form,
|
17
|
-
]
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
def show_view
|
22
|
-
Super::Layout.new(
|
23
|
-
mains: [
|
24
|
-
Super::Panel.new(
|
25
|
-
Super::Partial.new("member_header"),
|
26
|
-
:@display
|
27
|
-
),
|
28
|
-
]
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
def new_view
|
33
|
-
Super::Layout.new(
|
34
|
-
mains: [
|
35
|
-
Super::Panel.new(
|
36
|
-
Super::Partial.new("collection_header"),
|
37
|
-
:@form
|
38
|
-
),
|
39
|
-
]
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
|
-
def edit_view
|
44
|
-
Super::Layout.new(
|
45
|
-
mains: [
|
46
|
-
Super::Panel.new(
|
47
|
-
Super::Partial.new("member_header"),
|
48
|
-
:@form
|
49
|
-
),
|
50
|
-
]
|
51
|
-
)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
data/lib/super/controls.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "super/controls/optional"
|
4
|
-
require "super/controls/steps"
|
5
|
-
require "super/controls/view"
|
6
|
-
|
7
|
-
module Super
|
8
|
-
# The base Controls class. Most parts of Super can be configured by
|
9
|
-
# customizing its methods.
|
10
|
-
class Controls
|
11
|
-
include Optional
|
12
|
-
include Steps
|
13
|
-
include View
|
14
|
-
|
15
|
-
# Specifies the model. This is a required method
|
16
|
-
#
|
17
|
-
# @return [ActiveRecord::Base]
|
18
|
-
def model
|
19
|
-
raise NotImplementedError
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|