metadata_presenter 2.17.12 → 2.17.15
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/app/controllers/metadata_presenter/answers_controller.rb +3 -1
- data/app/controllers/metadata_presenter/engine_controller.rb +7 -0
- data/app/controllers/metadata_presenter/pages_controller.rb +1 -4
- data/app/models/metadata_presenter/page_answers.rb +4 -3
- data/app/validators/metadata_presenter/autocomplete_validator.rb +21 -0
- data/app/validators/metadata_presenter/validate_answers.rb +11 -4
- data/app/views/layouts/metadata_presenter/application.html.erb +5 -8
- data/app/views/metadata_presenter/component/_autocomplete.html.erb +6 -1
- data/default_metadata/component/autocomplete.json +2 -1
- data/default_metadata/string/error.autocomplete.json +6 -0
- data/fixtures/version.json +2 -1
- data/lib/metadata_presenter/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 554d66ee3145149186a1ba14c1314e491d8288f7089dc4f471aad6e49fd010f7
|
4
|
+
data.tar.gz: a43937e88311ebe4885cc3465182c11e9322691f70c9f7dfe495f4b5bfae2d21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2d04eec97e8cb4370fc0ff93340c7690fef5531de833cc2b258cdaa45c0d65ad0d9119fe1dd791e67f4f07a778ed287a0703716d3a94a42ea3d4614b47beb4b
|
7
|
+
data.tar.gz: 5754628254e35783c0b1a898abbbbef6e2c4c89e0a5ef1da07428bce4c73cf8d536a97dac578aff3e2a999960317cfce0f303f0a8a4f8906da68bca09d09ee9c
|
@@ -4,7 +4,7 @@ module MetadataPresenter
|
|
4
4
|
|
5
5
|
def create
|
6
6
|
@previous_answers = reload_user_data.deep_dup
|
7
|
-
@page_answers = PageAnswers.new(page, answers_params)
|
7
|
+
@page_answers = PageAnswers.new(page, answers_params, autocomplete_items(page.components))
|
8
8
|
|
9
9
|
upload_files if upload?
|
10
10
|
|
@@ -43,6 +43,8 @@ module MetadataPresenter
|
|
43
43
|
|
44
44
|
def render_validation_error
|
45
45
|
@user_data = answers_params
|
46
|
+
load_autocomplete_items
|
47
|
+
|
46
48
|
render template: page.template, status: :unprocessable_entity
|
47
49
|
end
|
48
50
|
|
@@ -57,6 +57,13 @@ module MetadataPresenter
|
|
57
57
|
end
|
58
58
|
helper_method :analytics_tags_present?
|
59
59
|
|
60
|
+
def load_autocomplete_items
|
61
|
+
if @page.autocomplete_component_present?
|
62
|
+
items = autocomplete_items(@page.components)
|
63
|
+
@page.assign_autocomplete_items(items)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
60
67
|
private
|
61
68
|
|
62
69
|
def not_found
|
@@ -5,10 +5,7 @@ module MetadataPresenter
|
|
5
5
|
@page ||= service.find_page_by_url(request.env['PATH_INFO'])
|
6
6
|
|
7
7
|
if @page
|
8
|
-
|
9
|
-
items = autocomplete_items(@page.components)
|
10
|
-
@page.assign_autocomplete_items(items)
|
11
|
-
end
|
8
|
+
load_autocomplete_items
|
12
9
|
|
13
10
|
@page_answers = PageAnswers.new(@page, @user_data)
|
14
11
|
render template: @page.template
|
@@ -3,16 +3,17 @@ module MetadataPresenter
|
|
3
3
|
include ActiveModel::Model
|
4
4
|
include ActiveModel::Validations
|
5
5
|
include ActionView::Helpers
|
6
|
-
attr_reader :page, :answers, :uploaded_files
|
6
|
+
attr_reader :page, :answers, :uploaded_files, :autocomplete_items
|
7
7
|
|
8
|
-
def initialize(page, answers)
|
8
|
+
def initialize(page, answers, autocomplete_items = nil)
|
9
9
|
@page = page
|
10
10
|
@answers = answers
|
11
|
+
@autocomplete_items = autocomplete_items
|
11
12
|
@uploaded_files = []
|
12
13
|
end
|
13
14
|
|
14
15
|
def validate_answers
|
15
|
-
ValidateAnswers.new(self, components: components).valid?
|
16
|
+
ValidateAnswers.new(self, components: components, autocomplete_items: autocomplete_items).valid?
|
16
17
|
end
|
17
18
|
|
18
19
|
delegate :components, to: :page
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MetadataPresenter
|
2
|
+
class AutocompleteValidator < BaseValidator
|
3
|
+
attr_reader :autocomplete_items
|
4
|
+
|
5
|
+
def initialize(page_answers:, component:, autocomplete_items:)
|
6
|
+
super(page_answers: page_answers, component: component)
|
7
|
+
|
8
|
+
@autocomplete_items = autocomplete_items
|
9
|
+
end
|
10
|
+
|
11
|
+
def invalid_answer?
|
12
|
+
return if autocomplete_item_list.blank?
|
13
|
+
|
14
|
+
autocomplete_item_list.exclude?(JSON.parse(user_answer))
|
15
|
+
end
|
16
|
+
|
17
|
+
def autocomplete_item_list
|
18
|
+
@autocomplete_item_list ||= autocomplete_items[component.uuid]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module MetadataPresenter
|
2
2
|
class ValidateAnswers
|
3
|
-
attr_reader :page_answers, :components
|
3
|
+
attr_reader :page_answers, :components, :autocomplete_items
|
4
4
|
|
5
|
-
def initialize(page_answers, components:)
|
5
|
+
def initialize(page_answers, components:, autocomplete_items:)
|
6
6
|
@page_answers = page_answers
|
7
7
|
@components = Array(components)
|
8
|
+
@autocomplete_items = autocomplete_items
|
8
9
|
end
|
9
10
|
|
10
11
|
def valid?
|
@@ -21,8 +22,10 @@ module MetadataPresenter
|
|
21
22
|
components.map { |component|
|
22
23
|
component_validations(component).map do |key|
|
23
24
|
"MetadataPresenter::#{key.classify}Validator".constantize.new(
|
24
|
-
|
25
|
-
|
25
|
+
{
|
26
|
+
component: component,
|
27
|
+
page_answers: page_answers
|
28
|
+
}.merge(autocomplete_param(key))
|
26
29
|
)
|
27
30
|
end
|
28
31
|
}.compact.flatten
|
@@ -33,5 +36,9 @@ module MetadataPresenter
|
|
33
36
|
|
34
37
|
component.validation.select { |_, value| value.present? }.keys
|
35
38
|
end
|
39
|
+
|
40
|
+
def autocomplete_param(key)
|
41
|
+
key == 'autocomplete' ? { autocomplete_items: autocomplete_items } : {}
|
42
|
+
end
|
36
43
|
end
|
37
44
|
end
|
@@ -14,8 +14,8 @@
|
|
14
14
|
<link rel="apple-touch-icon" sizes="152x152" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-152x152.png') %>">
|
15
15
|
<link rel="apple-touch-icon" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon.png') %>">
|
16
16
|
|
17
|
-
<%=
|
18
|
-
<%=
|
17
|
+
<%= javascript_pack_tag 'runner_application', 'govuk', defer: true %>
|
18
|
+
<%= stylesheet_pack_tag 'govuk', 'runner_application', media: 'all' %>
|
19
19
|
|
20
20
|
<% if allow_analytics? %>
|
21
21
|
<%= render template: 'metadata_presenter/analytics/analytics' %>
|
@@ -30,15 +30,12 @@
|
|
30
30
|
<%= render template: 'metadata_presenter/header/show' %>
|
31
31
|
<div class="govuk-width-container govuk-body-m">
|
32
32
|
<main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
<% if back_link.present? %>
|
34
|
+
<a class="govuk-back-link" href="<%= back_link %>">Back</a>
|
35
|
+
<% end %>
|
37
36
|
<%= yield %>
|
38
37
|
</main>
|
39
38
|
</div>
|
40
39
|
<%= render template: 'metadata_presenter/footer/footer' %>
|
41
|
-
<%= javascript_pack_tag 'runner_application' %>
|
42
|
-
<%= javascript_pack_tag 'govuk' %>
|
43
40
|
</body>
|
44
41
|
</html>
|
@@ -3,14 +3,19 @@
|
|
3
3
|
component.items,
|
4
4
|
:id,
|
5
5
|
:name,
|
6
|
+
selected: component.value,
|
6
7
|
label: { text: input_title },
|
7
8
|
hint: {
|
8
9
|
data: { "fb-default-text" => default_text('hint') },
|
9
10
|
text: component.hint
|
10
11
|
},
|
11
|
-
class: "govuk-!-width-two-thirds"
|
12
|
+
class: "govuk-!-width-two-thirds fb-autocomplete",
|
13
|
+
options: {
|
14
|
+
include_blank: true
|
15
|
+
}
|
12
16
|
%>
|
13
17
|
|
14
18
|
<% if editable? %>
|
15
19
|
<%= render partial: '/partials/editable_autocomplete', locals: { component: component } %>
|
16
20
|
<% end %>
|
21
|
+
|
data/fixtures/version.json
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metadata_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.17.
|
4
|
+
version: 2.17.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MoJ Forms
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_design_system_formbuilder
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- app/operators/metadata_presenter/operator.rb
|
300
300
|
- app/presenters/metadata_presenter/page_answers_presenter.rb
|
301
301
|
- app/validators/metadata_presenter/accept_validator.rb
|
302
|
+
- app/validators/metadata_presenter/autocomplete_validator.rb
|
302
303
|
- app/validators/metadata_presenter/base_validator.rb
|
303
304
|
- app/validators/metadata_presenter/date_after_validator.rb
|
304
305
|
- app/validators/metadata_presenter/date_before_validator.rb
|
@@ -390,6 +391,7 @@ files:
|
|
390
391
|
- default_metadata/page/start.json
|
391
392
|
- default_metadata/service/base.json
|
392
393
|
- default_metadata/string/error.accept.json
|
394
|
+
- default_metadata/string/error.autocomplete.json
|
393
395
|
- default_metadata/string/error.date.json
|
394
396
|
- default_metadata/string/error.date_after.json
|
395
397
|
- default_metadata/string/error.date_before.json
|