super 0.0.15 → 0.19.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|