plutonium 0.12.9 → 0.12.11

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/# Plutonium: The pre-alpha demo.md +218 -0
  3. data/app/views/components/form/form_component.html.erb +1 -3
  4. data/app/views/components/interactive_action_form/interactive_action_form_component.html.erb +5 -7
  5. data/app/views/components/nested_resource_form_fields/nested_resource_form_fields_component.html.erb +2 -2
  6. data/app/views/components/table_search_input/table_search_input_component.html.erb +8 -2
  7. data/app/views/resource/_interactive_resource_action_form.html.erb +1 -1
  8. data/app/views/resource/_resource_details.html.erb +9 -2
  9. data/app/views/resource/_resource_table.html.erb +9 -1
  10. data/lib/generators/pu/core/assets/templates/tailwind.config.js +2 -0
  11. data/lib/generators/pu/core/install/install_generator.rb +1 -1
  12. data/lib/generators/pu/core/install/templates/config/initializers/plutonium.rb +4 -0
  13. data/lib/generators/pu/eject/layout/layout_generator.rb +3 -2
  14. data/lib/generators/pu/eject/shell/shell_generator.rb +3 -2
  15. data/lib/generators/pu/field/input/input_generator.rb +32 -0
  16. data/lib/generators/pu/field/input/templates/.keep +0 -0
  17. data/lib/generators/pu/field/input/templates/input.rb.tt +15 -0
  18. data/lib/generators/pu/field/renderer/renderer_generator.rb +32 -0
  19. data/lib/generators/pu/field/renderer/templates/.keep +0 -0
  20. data/lib/generators/pu/field/renderer/templates/renderer.rb.tt +9 -0
  21. data/lib/generators/pu/gem/annotate/annotate_generator.rb +22 -0
  22. data/lib/generators/pu/gem/annotate/templates/.keep +0 -0
  23. data/lib/generators/pu/gem/annotate/templates/lib/tasks/auto_annotate_models.rake +59 -0
  24. data/lib/plutonium/core/actions/interactive_action.rb +2 -2
  25. data/lib/plutonium/core/associations/renderers/base.rb +77 -0
  26. data/lib/plutonium/core/associations/renderers/factory.rb +0 -2
  27. data/lib/plutonium/core/associations/renderers/has_many_renderer.rb +6 -4
  28. data/lib/plutonium/core/controllers/crud_actions.rb +1 -1
  29. data/lib/plutonium/core/controllers/presentable.rb +3 -3
  30. data/lib/plutonium/core/definers/field_definer.rb +4 -4
  31. data/lib/plutonium/core/definers/{input_definer.rb → field_input_definer.rb} +4 -4
  32. data/lib/plutonium/core/definers/{renderer_definer.rb → field_renderer_definer.rb} +10 -10
  33. data/lib/plutonium/core/fields/inputs/attachment_input.rb +2 -2
  34. data/lib/plutonium/core/fields/inputs/base.rb +76 -10
  35. data/lib/plutonium/core/fields/inputs/checkbox_input.rb +3 -1
  36. data/lib/plutonium/core/fields/inputs/date_time_input.rb +3 -1
  37. data/lib/plutonium/core/fields/inputs/nested_input.rb +36 -21
  38. data/lib/plutonium/core/fields/inputs/noop_input.rb +1 -4
  39. data/lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb +8 -7
  40. data/lib/plutonium/core/fields/inputs/simple_form_association_input.rb +4 -5
  41. data/lib/plutonium/core/fields/inputs/simple_form_input.rb +2 -3
  42. data/lib/plutonium/core/fields/renderers/association_renderer.rb +11 -5
  43. data/lib/plutonium/core/fields/renderers/attachment_renderer.rb +3 -10
  44. data/lib/plutonium/core/fields/renderers/base.rb +83 -0
  45. data/lib/plutonium/core/fields/renderers/basic_renderer.rb +3 -17
  46. data/lib/plutonium/core/fields/renderers/factory.rb +0 -1
  47. data/lib/plutonium/core/renderable.rb +20 -0
  48. data/lib/plutonium/helpers/display_helper.rb +1 -1
  49. data/lib/plutonium/resource/controller.rb +1 -1
  50. data/lib/plutonium/resource/policy.rb +1 -1
  51. data/lib/plutonium/resource/presenter.rb +3 -3
  52. data/lib/plutonium/resource/query_object.rb +4 -4
  53. data/lib/plutonium/resource/record.rb +1 -1
  54. data/lib/plutonium/simple_form/attachment_component.rb +1 -1
  55. data/lib/plutonium/version.rb +1 -1
  56. data/package.json +1 -1
  57. metadata +17 -5
  58. data/lib/plutonium/core/associations/renderers/basic_renderer.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e23b355a86a4aa61a848f5a7778ce604a128f40b00283f50e12c8c39f5c4bc1e
4
- data.tar.gz: 174b95054e17d4fd8d928f062380664ca2bf82ebe1d15685137a22e720f92281
3
+ metadata.gz: 443b2efe86f5242ef6355f8da9d8af08dbbf66ebeaf8feb3adebbe9c0858cf45
4
+ data.tar.gz: 532843ca3dd3a9456e135dfa371d5110f46c726f5d86fed70a1ebe02ed8cfde5
5
5
  SHA512:
6
- metadata.gz: e525fac1c4621b3923ebccb40ea61ff9771d2dfd6bd541f505965f4728ad7befee7051d01f161b3099f2ac6b91ec23d7120324144f787849e9b876d1386d950f
7
- data.tar.gz: d4eacfd569c110fb060f1efb2c8cfb60a1fb8e146fdb95be9e4508a5023424ea63330f831d02eb9b2dd36267c079738358cce9a963055b895705e5e2813aa712
6
+ metadata.gz: 0d19d82bd1f5ac2a2fd4d383fffbc78d0c773213ff1c6648e44723c113ae4e6a4c8065ec2318df7738012f676547c60231aa895542a139e5d55394179476c3bc
7
+ data.tar.gz: 22bbf75790b8bc214be9946f339e7d607a64e31e363bf6d76eead20713536168dbbd6838d6c4bb62f453ec168fa458c6126a48c0c083ec839c83675d71bcec91
@@ -0,0 +1,218 @@
1
+ # Plutonium: The pre-alpha demo
2
+
3
+ - Introduce the project
4
+ - Install Rails
5
+ ```bash
6
+ rails new demo -c tailwind -j esbuild
7
+ ```
8
+ - Install Plutonium
9
+ ```bash
10
+ rails g pu:core:install
11
+ bundle add plutonium
12
+ ```
13
+ - Install useful gems
14
+ ```bash
15
+ rails g pu:gem:annotate
16
+ ```
17
+ - Install rodauth
18
+ ```bash
19
+ rails g pu:rodauth:install
20
+ ```
21
+ - Create rodauth user account
22
+ ```bash
23
+ rails g pu:rodauth:account user
24
+ ```
25
+ - Create blogging feature package
26
+ ```bash
27
+ rails g pu:pkg:feature blogging
28
+ ```
29
+ - Create blog resource
30
+ ```bash
31
+ rails g pu:res:scaffold blog user:belongs_to slug:text title:string content:text state:string published_at:datetime
32
+ ```
33
+ - Create dashboard app package
34
+ ```bash
35
+ rails g pu:pkg:app dashboard
36
+ ```
37
+ - Connect the blog to the dashboard
38
+ ```bash
39
+ rails g pu:res:conn
40
+ ```
41
+ - Scope dashboard to user
42
+
43
+ ```ruby
44
+ # packages/dashboard_app/lib/engine.rb
45
+
46
+ scope_to_entity User, strategy: :current_user
47
+ # add directives above.
48
+ ```
49
+
50
+ - Demonstrate queries
51
+
52
+ ```ruby
53
+ # packages/dashboard_app/lib/engine.rb
54
+
55
+ def define_filters
56
+ # define custom filters
57
+ define_search -> (scope, search:) { scope.where("title LIKE ?", "%#{search}%") }
58
+ end
59
+
60
+ def define_scopes
61
+ # define custom scopes
62
+ define_scope :published, -> (scope) { scope.where(state: :published) }
63
+ define_scope :drafts, -> (scope) { scope.where(state: :draft) }
64
+ end
65
+
66
+ def define_sorters
67
+ # define custom sorters
68
+ define_sorter :title
69
+ define_sorter :content
70
+ end
71
+ ```
72
+
73
+ - Create a custom action
74
+
75
+ ```ruby
76
+ # packages/blogging/app/interactions/blogging/blog_interactions/publish.rb
77
+
78
+ module Blogging
79
+ module BlogInteractions
80
+ class Publish < ResourceInteraction
81
+ object :resource, class: Blog
82
+
83
+ def execute
84
+ errors.merge!(resource.errors) unless resource.update(state: "published", published_at: Time.current)
85
+ resource
86
+ end
87
+ end
88
+ end
89
+ end
90
+ ```
91
+
92
+ ```ruby
93
+ # packages/blogging/app/presenters/blogging/blog_presenter.rb
94
+
95
+ define_interactive_action :publish, label: 'Publish',
96
+ interaction: BlogInteractions::Publish,
97
+ icon: "outline/book",
98
+ color: :green
99
+ ```
100
+
101
+ - Create blog_comment resource
102
+ ```bash
103
+ rails g pu:res:scaffold blog_comment blogging/blog:belongs_to user:belongs_to content:text
104
+ ```
105
+ - Define associations
106
+
107
+ ```ruby
108
+ # packages/blogging/app/models/blogging/blog.rb
109
+
110
+ has_many :comments
111
+ ```
112
+
113
+ ```ruby
114
+ # packages/blogging/app/policies/blogging/blog_policy.rb
115
+
116
+ def permitted_attributes_for_show
117
+ super + [:comments]
118
+ end
119
+ ```
120
+
121
+ - Connect comments to demonstrate auto linking
122
+ ```bash
123
+ rail g pu:res:conn
124
+ ```
125
+ - Demonstrate plutonium association panels
126
+
127
+ ```ruby
128
+ # packages/blogging/app/policies/blogging/blog_policy.rb
129
+
130
+ def permitted_attributes_for_show
131
+ super
132
+ end
133
+
134
+ def permitted_associations
135
+ %i[comments]
136
+ end
137
+ ```
138
+
139
+ 19. Demonstrate nested_attributes
140
+
141
+ ```ruby
142
+ accepts_nested_attributes_for :comments, reject_if: :all_blank
143
+
144
+ define_nested_input :comments, inputs: %i[user content], limit: 1 do |input|
145
+ input.define_field_input :content, type: :markdown
146
+ end
147
+ ```
148
+
149
+ - Create a custom field renderer
150
+
151
+ ```bash
152
+ rails g pu:field:renderer markdown
153
+ bundle add redcarpet markdown
154
+ ```
155
+
156
+ ```ruby
157
+ Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true).render "content"
158
+ ```
159
+
160
+ - Create a custom field input
161
+
162
+ ```bash
163
+ rails g pu:field:input
164
+ ```
165
+
166
+ https://github.com/Ionaru/easy-markdown-editor
167
+
168
+ ```html
169
+ # app/views/layouts/resource.html.erb <% layout.with_assets do %>
170
+ <link
171
+ rel="stylesheet"
172
+ href="https://unpkg.com/easymde/dist/easymde.min.css"
173
+ />
174
+ <script src="https://unpkg.com/easymde/dist/easymde.min.js"></script>
175
+ <% end %>
176
+ ```
177
+
178
+ ```bash
179
+ rails g stimulus markdown_input
180
+ ```
181
+
182
+ ```js
183
+ // app/javascript/controllers/markdown_input_controller.js
184
+
185
+ connect() {
186
+ console.log("markdown-input connected", this.element)
187
+
188
+ this.markdown = new EasyMDE({
189
+ element: this.element,
190
+ toolbar: ["bold", "italic", "heading", "|", "quote"]
191
+ })
192
+ }
193
+
194
+ disconnect() {
195
+ this.markdown.toTextArea()
196
+ this.markdown = null
197
+ }
198
+ ```
199
+
200
+ ```ruby
201
+ # app/plutonium/fields/inputs/markdown_input.rb
202
+
203
+ class MarkdownInput < Plutonium::Core::Fields::Inputs::Base
204
+ def render
205
+ form.input name, **options
206
+ end
207
+
208
+ private
209
+
210
+ def input_options
211
+ {input_html: {data: {controller: "markdown-input"}}}
212
+ end
213
+ end
214
+ ```
215
+
216
+ ```bash
217
+ rails g pu:core:assets
218
+ ```
@@ -8,20 +8,18 @@
8
8
  </svg>
9
9
  <div>
10
10
  <span class="font-medium"><%= f.error_notification %></span>
11
- <!--
12
11
  <ul class="mt-1.5 list-disc list-inside">
13
12
  <% f.object.errors.full_messages.each do |message| %>
14
13
  <li><%= f.error_notification message: message %></li>
15
14
  <% end %>
16
15
  </ul>
17
- -->
18
16
  </div>
19
17
  </div>
20
18
  <% end %>
21
19
 
22
20
  <div>
23
21
  <% form.inputs.values.each do |input| %>
24
- <%= input.render self, f, form.record %>
22
+ <%= render input.with(form: f, record: form.record) %>
25
23
  <% end %>
26
24
  </div>
27
25
 
@@ -8,20 +8,18 @@
8
8
  </svg>
9
9
  <div>
10
10
  <span class="font-medium"><%= f.error_notification %></span>
11
- <!--
12
- <ul class="mt-1.5 list-disc list-inside">
13
- <% f.object.errors.full_messages.each do |message| %>
14
- <li><%= f.error_notification message: message %></li>
15
- <% end %>
11
+ <ul class="mt-1.5 list-disc list-inside">
12
+ <% f.object.errors.full_messages.each do |message| %>
13
+ <li><%= f.error_notification message: message %></li>
14
+ <% end %>
16
15
  </ul>
17
- -->
18
16
  </div>
19
17
  </div>
20
18
  <% end %>
21
19
 
22
20
  <div>
23
21
  <% interactive_action.inputs.values.each do |input| %>
24
- <%= input.render self, f, interaction %>
22
+ <%= render input.with(form: f, record: interaction) %>
25
23
  <% end %>
26
24
  </div>
27
25
 
@@ -11,7 +11,7 @@
11
11
  <%= form.simple_fields_for name, new_record, child_index: 'NEW_RECORD' do |nested| %>
12
12
  <fieldset class="border-t mt-4 pt-4 first:border-t-0 first:pt-0 nested-resource-form-fields" data-new-record="<%= nested.object.new_record? %>">
13
13
  <% inputs.values.each do |input| %>
14
- <%= input.render self, nested, new_record %>
14
+ <%= render input.with(form: nested, record: new_record) %>
15
15
  <% end %>
16
16
 
17
17
  <div class="text-right">
@@ -34,7 +34,7 @@
34
34
  <%= form.simple_fields_for name do |nested| %>
35
35
  <fieldset class="border-t mt-4 pt-4 first:border-t-0 first:pt-0 nested-resource-form-fields" data-new-record="<%= nested.object.new_record? %>">
36
36
  <% inputs.values.each do |input| %>
37
- <%= input.render self, nested, new_record %>
37
+ <%= render input.with(form: nested, record: new_record) %>
38
38
  <% end %>
39
39
 
40
40
  <div>
@@ -7,7 +7,11 @@
7
7
  <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" />
8
8
  </svg>
9
9
  </div>
10
- <%= search_object.search_filter.input_definitions[:search].render self, f, nil,
10
+
11
+ <%=
12
+ render search_object.search_filter.input_definitions[:search].with(
13
+ form: f,
14
+ record:nil,
11
15
  wrapper: false, label: false,
12
16
  as: :string, # force string for search
13
17
  placeholder: "search...",
@@ -21,7 +25,9 @@
21
25
  # form_target: "focus",
22
26
  turbo_permanent: true
23
27
  }
24
- } %>
28
+ }
29
+ )
30
+ %>
25
31
  </div>
26
32
 
27
33
 
@@ -25,7 +25,7 @@
25
25
  </div>
26
26
  <div class="form-inputs">
27
27
  <% interactive_action.inputs.values.each do |input| %>
28
- <%= input.render self, f, @interaction %>
28
+ <%= render input.with(form: f, record: @interaction) %>
29
29
  <% end %>
30
30
  </div>
31
31
  </div>
@@ -9,12 +9,19 @@
9
9
  <div class="p-4">
10
10
  <dl class="divide-y divide-gray-100">
11
11
  <% details.fields.each do |name, renderer| %>
12
+ <%#
13
+ TODO:
14
+ For now, we are hacking around the need to call #with before #label
15
+ This proves there's an issue with the rendering api.
16
+ While I think of an elegant solution, this works for now.
17
+ %>
18
+ <% renderer.with(record: details.record) %>
12
19
  <div class="py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
13
20
  <dt class="text-sm font-medium leading-6 text-gray-900 dark:text-gray-300">
14
21
  <%= renderer.label %>
15
22
  </dt>
16
23
  <dd class="mt-1 text-sm leading-6 text-gray-700 dark:text-gray-200 sm:col-span-2 sm:mt-0">
17
- <%= renderer.render self, details.record %>
24
+ <%= render renderer %>
18
25
  </dd>
19
26
  </div>
20
27
  <% end %>
@@ -24,6 +31,6 @@
24
31
 
25
32
  <% if present_associations? %>
26
33
  <% details.associations.each do |name, renderer| %>
27
- <%= renderer.render self, details.record %>
34
+ <%= render renderer.with(record: details.record) %>
28
35
  <% end %>
29
36
  <% end %>
@@ -71,8 +71,16 @@
71
71
  <% end %>
72
72
 
73
73
  <% fields.each do |name, field| %>
74
+ <%#
75
+ TODO:
76
+ For now, we are hacking around the need to call #with before #label
77
+ This proves there's an issue with the rendering api.
78
+ While I think of an elegant solution, this works for now.
79
+ %>
80
+ <% field.with(record: resources[0]) %>
74
81
  <% table.column(name:, label: field.label, search_object: search_object) do |resource| %>
75
- <%= field.render self, resource %>
82
+ <% field.with(record: resource) %>
83
+ <%= render field %>
76
84
  <% end %>
77
85
  <% end %>
78
86
  <% end %>
@@ -13,6 +13,8 @@ module.exports = {
13
13
  `${__dirname}/app/helpers/**/*.rb`,
14
14
  `${__dirname}/app/assets/stylesheets/**/*.css`,
15
15
  `${__dirname}/app/javascript/**/*.js`,
16
+ `${__dirname}/app/plutonium/**/*.rb`,
17
+ `${__dirname}/packages/**/app/plutonium/**/*.rb`,
16
18
  `${__dirname}/packages/**/app/views/**/*.html.erb`,
17
19
  ].concat(plutoniumTailwindConfig.content),
18
20
  }
@@ -29,7 +29,7 @@ module Pu
29
29
  end
30
30
 
31
31
  def setup_app
32
- # directory "config"
32
+ directory "config"
33
33
  directory "app"
34
34
 
35
35
  environment "# config.plutonium.assets.favicon = \"favicon.ico\""
@@ -1 +1,5 @@
1
1
  # Configure plutonium
2
+
3
+ Rails.application.config.to_prepare do
4
+ # Register components here
5
+ end
@@ -15,11 +15,11 @@ module Pu
15
15
  class_option :rodauth, type: :boolean
16
16
 
17
17
  def start
18
- destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
18
+ destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/"
19
19
  [
20
20
  "layouts/resource.html.erb"
21
21
  ].each do |file|
22
- copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
22
+ copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir, file)
23
23
  end
24
24
  rescue => e
25
25
  exception "#{self.class} failed:", e
@@ -33,6 +33,7 @@ module Pu
33
33
 
34
34
  def copy_file(source_path, destination_path)
35
35
  if File.exist?(source_path)
36
+ FileUtils.mkdir_p(File.dirname(destination_path))
36
37
  FileUtils.cp(source_path, destination_path)
37
38
  say_status("info", "Copied #{source_path} to #{destination_path}", :green)
38
39
  else
@@ -14,12 +14,12 @@ module Pu
14
14
  class_option :dest, type: :string
15
15
 
16
16
  def start
17
- destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
17
+ destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views"
18
18
  [
19
19
  "application/_resource_header.html.erb",
20
20
  "application/_resource_sidebar.html.erb"
21
21
  ].each do |file|
22
- copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
22
+ copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir, file)
23
23
  end
24
24
  rescue => e
25
25
  exception "#{self.class} failed:", e
@@ -33,6 +33,7 @@ module Pu
33
33
 
34
34
  def copy_file(source_path, destination_path)
35
35
  if File.exist?(source_path)
36
+ FileUtils.mkdir_p(File.dirname(destination_path))
36
37
  FileUtils.cp(source_path, destination_path)
37
38
  say_status("info", "Copied #{source_path} to #{destination_path}", :green)
38
39
  else
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../lib/plutonium_generators"
4
+
5
+ module Pu
6
+ module Field
7
+ class InputGenerator < Rails::Generators::Base
8
+ include PlutoniumGenerators::Generator
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ desc "Generates a field input"
13
+
14
+ argument :name
15
+
16
+ def start
17
+ in_root do
18
+ template "input.rb", "app/plutonium/fields/inputs/#{name.underscore}_input.rb"
19
+ insert_into_file "config/initializers/plutonium.rb", registration_statement, after: /.*# Register components here.*\n/
20
+ end
21
+ rescue => e
22
+ exception "#{self.class} failed:", e
23
+ end
24
+
25
+ private
26
+
27
+ def registration_statement
28
+ indent "Plutonium::Core::Fields::Inputs::Factory.map_type :#{name.underscore}, to: Fields::Inputs::#{name.camelize}Input\n", 2
29
+ end
30
+ end
31
+ end
32
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ module Fields
2
+ module Inputs
3
+ class <%= name.camelize %>Input < Plutonium::Core::Fields::Inputs::Base
4
+ def render
5
+ form.input name, **options
6
+ end
7
+
8
+ private
9
+
10
+ def input_options
11
+ {}
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../lib/plutonium_generators"
4
+
5
+ module Pu
6
+ module Field
7
+ class RendererGenerator < Rails::Generators::Base
8
+ include PlutoniumGenerators::Generator
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ desc "Generates a field renderer"
13
+
14
+ argument :name
15
+
16
+ def start
17
+ in_root do
18
+ template "renderer.rb", "app/plutonium/fields/renderers/#{name.underscore}_renderer.rb"
19
+ insert_into_file "config/initializers/plutonium.rb", registration_statement, after: /.*# Register components here.*\n/
20
+ end
21
+ rescue => e
22
+ exception "#{self.class} failed:", e
23
+ end
24
+
25
+ private
26
+
27
+ def registration_statement
28
+ indent "Plutonium::Core::Fields::Renderers::Factory.map_type :#{name.underscore}, to: Fields::Renderers::#{name.camelize}Renderer\n", 2
29
+ end
30
+ end
31
+ end
32
+ end
File without changes
@@ -0,0 +1,9 @@
1
+ module Fields
2
+ module Renderers
3
+ class <%= name.camelize %>Renderer < Plutonium::Core::Fields::Renderers::Base
4
+ def render
5
+ tag.span value
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../lib/plutonium_generators"
4
+
5
+ module Pu
6
+ module Gem
7
+ class AnnotateGenerator < Rails::Generators::Base
8
+ include PlutoniumGenerators::Generator
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ desc "Install the annnotate gem"
13
+
14
+ def start
15
+ bundle "annotate", group: :development
16
+ copy_file "lib/tasks/auto_annotate_models.rake"
17
+ rescue => e
18
+ exception "#{self.class} failed:", e
19
+ end
20
+ end
21
+ end
22
+ end
File without changes
@@ -0,0 +1,59 @@
1
+ # NOTE: only doing this in development as some production environments (Heroku)
2
+ # NOTE: are sensitive to local FS writes, and besides -- it's just not proper
3
+ # NOTE: to have a dev-mode tool do its thing in production.
4
+ return unless Rails.env.development?
5
+
6
+ require "annotate"
7
+ task :set_annotation_options do
8
+ # You can override any of these by setting an environment variable of the
9
+ # same name.
10
+ Annotate.set_defaults(
11
+ "active_admin" => "false",
12
+ "additional_file_patterns" => [],
13
+ "routes" => "false",
14
+ "models" => "true",
15
+ "position_in_routes" => "before",
16
+ "position_in_class" => "before",
17
+ "position_in_test" => "before",
18
+ "position_in_fixture" => "before",
19
+ "position_in_factory" => "before",
20
+ "position_in_serializer" => "before",
21
+ "show_foreign_keys" => "true",
22
+ "show_complete_foreign_keys" => "false",
23
+ "show_indexes" => "true",
24
+ "simple_indexes" => "false",
25
+ "model_dir" => ([Rails.application.root.join("app/models")] + Dir[Rails.application.root.join("packages/*/app/models")]).join(","),
26
+ "root_dir" => "",
27
+ "include_version" => "false",
28
+ "require" => "",
29
+ "exclude_tests" => "true",
30
+ "exclude_fixtures" => "true",
31
+ "exclude_factories" => "true",
32
+ "exclude_serializers" => "true",
33
+ "exclude_scaffolds" => "true",
34
+ "exclude_controllers" => "true",
35
+ "exclude_helpers" => "true",
36
+ "exclude_sti_subclasses" => "false",
37
+ "ignore_model_sub_dir" => "false",
38
+ "ignore_columns" => nil,
39
+ "ignore_routes" => nil,
40
+ "ignore_unknown_models" => "false",
41
+ "hide_limit_column_types" => "integer,bigint,boolean",
42
+ "hide_default_column_types" => "json,jsonb,hstore",
43
+ "skip_on_db_migrate" => "false",
44
+ "format_bare" => "true",
45
+ "format_rdoc" => "false",
46
+ "format_yard" => "false",
47
+ "format_markdown" => "false",
48
+ "sort" => "false",
49
+ "force" => "false",
50
+ "frozen" => "false",
51
+ "classified_sort" => "true",
52
+ "trace" => "false",
53
+ "wrapper_open" => nil,
54
+ "wrapper_close" => nil,
55
+ "with_comment" => "true"
56
+ )
57
+ end
58
+
59
+ Annotate.load_tasks
@@ -2,7 +2,7 @@ module Plutonium
2
2
  module Core
3
3
  module Actions
4
4
  class InteractiveAction < Plutonium::Core::Action
5
- include Plutonium::Core::Definers::InputDefiner
5
+ include Plutonium::Core::Definers::FieldInputDefiner
6
6
 
7
7
  Context = Data.define :resource_class
8
8
 
@@ -37,7 +37,7 @@ module Plutonium
37
37
 
38
38
  def set_interaction(interaction)
39
39
  @interaction = interaction
40
- @inputs = defined_inputs_for(*(interaction.filters.keys - [:resource, :resources]))
40
+ @inputs = defined_field_inputs_for(*(interaction.filters.keys - [:resource, :resources]))
41
41
  @inline = @inputs.blank? unless inline == false
42
42
  end
43
43