metadata_presenter 0.5.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f2da2dc7dc8a336839fc104af384535691bf1c4f1c1426152f53b943f2497a33
4
- data.tar.gz: d8d1c7f55e4f5e116c16df0deaedbdf19a6b349bec430e2c2a30cc011bed7fe3
3
+ metadata.gz: 066133455b4cf94730e5bebe20ac439262cacd2128e3004d988035e822efc818
4
+ data.tar.gz: c4513e4dc197c1730ba538b2fc50f1c5302ad70c5a31d3377cb0a23f581fae33
5
5
  SHA512:
6
- metadata.gz: d13092db05639eb3086e3bae5b56fc83204b932ddb0aa448f38ffdda0e28be743b7e2812a25c41f9a7aec8d3ea8f51b5ea20866458282d4f8c3cbf4c8f95d6ab
7
- data.tar.gz: '06796c8b4edc4e017a76b0e7cdaeafdf612638f89729211a4ed880b59bbf5c66880785a4da018285d951de7cdf5bed7169081999d77ed7ac78b7b567104bf2f4'
6
+ metadata.gz: 6a83357fac7381b7191f9c46edf93f4090be55e40491e06427f108430e5ee4069cc5d797da46d32f289d7785e05a02ae2808059eb7bf470b113bdbf56caf4b91
7
+ data.tar.gz: 31760a4dcedb66f45ac8be4bb93882d8278d58fcccf686f734dbf3dc0a762c09608cd54bf20718220ae2b8d0c7e3b47bd546a3f2edb9bf53aa30fe9e19703ca3
@@ -18,6 +18,14 @@ module MetadataPresenter
18
18
  end
19
19
  alias answer a
20
20
 
21
+ ## Display user answers on the view formatted.
22
+ ##
23
+ def formatted_answer(component_key)
24
+ user_answer = answer(component_key)
25
+
26
+ simple_format(user_answer) if user_answer.present?
27
+ end
28
+
21
29
  # Renders markdown given a text.
22
30
  #
23
31
  # @example
@@ -62,6 +62,12 @@ module MetadataPresenter
62
62
  message % error_message_hash if message.present?
63
63
  end
64
64
 
65
+ # @return [String] user answer for the specific component
66
+ #
67
+ def user_answer
68
+ answers[component.name]
69
+ end
70
+
65
71
  # The default error message will be look using the schema key.
66
72
  # Assuming the schema key is 'grogu' then the default message
67
73
  # will look for 'error.grogu.value'.
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class MaxLengthValidator < BaseValidator
3
3
  def invalid_answer?
4
- answers[component.name].to_s.size > component.validation[schema_key]
4
+ user_answer.to_s.size > component.validation[schema_key]
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class MinLengthValidator < BaseValidator
3
3
  def invalid_answer?
4
- answers[component.name].to_s.size < component.validation[schema_key]
4
+ user_answer.to_s.size < component.validation[schema_key]
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ module MetadataPresenter
2
+ class NumberValidator < BaseValidator
3
+ def invalid_answer?
4
+ Float(user_answer, exception: false).blank?
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class RequiredValidator < BaseValidator
3
3
  def invalid_answer?
4
- answers[component.name].blank?
4
+ user_answer.blank?
5
5
  end
6
6
  end
7
7
  end
@@ -14,7 +14,6 @@
14
14
 
15
15
  <%= stylesheet_pack_tag 'govuk' %>
16
16
  <%= stylesheet_link_tag 'application', media: 'all' %>
17
- <%= javascript_pack_tag 'application' %>
18
17
  </head>
19
18
 
20
19
  <body class="govuk-template__body">
@@ -28,6 +27,7 @@
28
27
  <%= yield %>
29
28
  </main>
30
29
  </div>
30
+ <%= javascript_pack_tag 'application' %>
31
31
  <%= javascript_pack_tag 'govuk' %>
32
32
  </body>
33
33
  </html>
@@ -0,0 +1,8 @@
1
+ <%=
2
+ f.govuk_text_field component.id.to_sym,
3
+ label: { text: component.label },
4
+ hint: { text: component.hint },
5
+ name: "answers[#{component.name}]",
6
+ value: answer(component.name),
7
+ width: component.width_class_input.to_i
8
+ %>
@@ -0,0 +1,11 @@
1
+ <%=
2
+ f.govuk_text_area component.id.to_sym,
3
+ label: { text: component.label },
4
+ hint: { text: component.hint },
5
+ name: "answers[#{component.name}]",
6
+ value: answer(component.name),
7
+ max_chars: component.maxchars,
8
+ max_words: component.maxwords,
9
+ threshold: component.threshold,
10
+ rows: component.rows
11
+ %>
@@ -35,7 +35,7 @@
35
35
  </dt>
36
36
 
37
37
  <dd class="govuk-summary-list__value">
38
- <%=a component.name %>
38
+ <%= formatted_answer(component.name) %>
39
39
  </dd>
40
40
  <dd class="govuk-summary-list__actions">
41
41
  <%= link_to(
@@ -25,7 +25,7 @@
25
25
  </p>
26
26
  <%- end %>
27
27
 
28
- <%= form_tag(@page.url, method: :post) do %>
28
+ <%= form_tag(root_path, method: :post) do %>
29
29
  <button <%= 'disabled' if editable? %> class='govuk-button govuk-button--start govuk-!-margin-top-2'>
30
30
  Start
31
31
  <svg class="govuk-button__start-icon" xmlns="http://www.w3.org/2000/svg" width="17.5" height="19" viewBox="0 0 33 40" aria-hidden="true" focusable="false">
data/config/routes.rb CHANGED
@@ -6,5 +6,7 @@ MetadataPresenter::Engine.routes.draw do
6
6
 
7
7
  post '/', to: 'answers#create'
8
8
  match '*path', to: 'answers#create', via: :post
9
- match '*path', to: 'pages#show', via: :all
9
+ match '*path', to: 'pages#show',
10
+ via: :all,
11
+ constraints: lambda {|req| req.path !~ /\.(png|jpg|js|css|ico)$/ }
10
12
  end
@@ -0,0 +1,12 @@
1
+ {
2
+ "_id": "component.number",
3
+ "_type": "number",
4
+ "errors": {},
5
+ "hint": "Component hint",
6
+ "label": "Component label",
7
+ "name": "component-name",
8
+ "width_class_input": "10",
9
+ "validation": {
10
+ "number": true
11
+ }
12
+ }
@@ -4,5 +4,8 @@
4
4
  "errors": {},
5
5
  "hint": "Component hint",
6
6
  "label": "Component label",
7
- "name": "component-name"
7
+ "name": "component-name",
8
+ "validation": {
9
+ "required": true
10
+ }
8
11
  }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_id": "component.textarea",
3
+ "_type": "textarea",
4
+ "errors": {},
5
+ "hint": "Component hint",
6
+ "label": "Component label",
7
+ "name": "component-name",
8
+ "rows": 5,
9
+ "validation": {
10
+ "required": true
11
+ }
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "_id": "error.number",
3
+ "_type": "string.error",
4
+ "description": "Input (number) is not a number",
5
+ "value": "Enter a number for %{control}"
6
+ }
@@ -124,6 +124,47 @@
124
124
  "heading": "Parent name",
125
125
  "url": "/parent-name"
126
126
  },
127
+ {
128
+ "_id": "page.your_age",
129
+ "url": "your-age",
130
+ "_type":"page.singlequestion",
131
+ "_uuid":"59d1326c-32e6-45e9-b57a-bcc8e2fb6b2c",
132
+ "heading":"Your age",
133
+ "components": [
134
+ {
135
+ "_id": "your_age_number_1",
136
+ "hint": "Component hint",
137
+ "name": "your_age_number_1",
138
+ "_type": "number",
139
+ "label": "Your age",
140
+ "errors": {},
141
+ "validation": {
142
+ "required": true,
143
+ "number": true
144
+ },
145
+ "width_class_input": "10"
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "_uuid": "7b748584-100e-4d81-a54a-5049190136cc",
151
+ "_id": "page.family_hobbies",
152
+ "_type": "page.singlequestion",
153
+ "components": [
154
+ {
155
+ "_id": "page.family-hobbies--text.auto_name__3",
156
+ "_type": "textarea",
157
+ "label": "Your family hobbies",
158
+ "name": "family_hobbies",
159
+ "rows": 5,
160
+ "validation": {
161
+ "required": true
162
+ }
163
+ }
164
+ ],
165
+ "heading": "Family Hobbies",
166
+ "url": "/family-hobbies"
167
+ },
127
168
  {
128
169
  "_uuid": "e819d0c2-7062-4997-89cf-44d26d098404",
129
170
  "_id": "page._check-answers",
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '0.5.0'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -0,0 +1,29 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/number",
3
+ "_name": "component.number",
4
+ "title": "Number",
5
+ "description": "Let users enter a number",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "number"
10
+ },
11
+ "name": {
12
+ "inputType": "number"
13
+ },
14
+ "width_class_input": {
15
+ "default": "10"
16
+ }
17
+ },
18
+ "allOf": [
19
+ {
20
+ "$ref": "definition.field"
21
+ },
22
+ {
23
+ "$ref": "validations#/definitions/number_bundle"
24
+ },
25
+ {
26
+ "$ref": "definition.width_class.input"
27
+ }
28
+ ]
29
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$id": "http://gov.uk/schema/v1.0.0/text",
3
- "_name": "text",
3
+ "_name": "component.text",
4
4
  "title": "Text",
5
5
  "description": "Let users enter text that’s no longer than a single line",
6
6
  "type": "object",
@@ -0,0 +1,55 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/textarea",
3
+ "_name": "component.textarea",
4
+ "title": "Textarea",
5
+ "description": "Let users enter text that can be longer than a single line",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "textarea"
10
+ },
11
+ "maxwords": {
12
+ "type": "number",
13
+ "title": "Maximum words",
14
+ "description": "Set a word limit",
15
+ "category": [
16
+ "userinput"
17
+ ]
18
+ },
19
+ "maxchars": {
20
+ "type": "number",
21
+ "title": "Maximum characters",
22
+ "description": "Set a character limit",
23
+ "category": [
24
+ "userinput"
25
+ ]
26
+ },
27
+ "threshold": {
28
+ "type": "number",
29
+ "title": "Threshold percentage",
30
+ "description": "Display the message about maximum length or words after a user has entered a certain amount",
31
+ "category": [
32
+ "userinput"
33
+ ]
34
+ },
35
+ "rows": {
36
+ "type": "number",
37
+ "title": "Number of rows in the textarea",
38
+ "description": "Set the number of rows",
39
+ "category": [
40
+ "userinput"
41
+ ]
42
+ }
43
+ },
44
+ "allOf": [
45
+ {
46
+ "$ref": "definition.field"
47
+ },
48
+ {
49
+ "$ref": "validations#/definitions/string_bundle"
50
+ },
51
+ {
52
+ "$ref": "definition.width_class.input"
53
+ }
54
+ ]
55
+ }
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: 0.5.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-03 00:00:00.000000000 Z
11
+ date: 2021-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -240,12 +240,15 @@ files:
240
240
  - app/validators/metadata_presenter/base_validator.rb
241
241
  - app/validators/metadata_presenter/max_length_validator.rb
242
242
  - app/validators/metadata_presenter/min_length_validator.rb
243
+ - app/validators/metadata_presenter/number_validator.rb
243
244
  - app/validators/metadata_presenter/required_validator.rb
244
245
  - app/validators/metadata_presenter/validate_answers.rb
245
246
  - app/validators/metadata_presenter/validate_schema.rb
246
247
  - app/views/errors/404.html
247
248
  - app/views/layouts/metadata_presenter/application.html.erb
249
+ - app/views/metadata_presenter/component/_number.html.erb
248
250
  - app/views/metadata_presenter/component/_text.html.erb
251
+ - app/views/metadata_presenter/component/_textarea.html.erb
249
252
  - app/views/metadata_presenter/header/show.html.erb
250
253
  - app/views/metadata_presenter/page/checkanswers.html.erb
251
254
  - app/views/metadata_presenter/page/confirmation.html.erb
@@ -255,7 +258,9 @@ files:
255
258
  - config/initializers/default_metadata.rb
256
259
  - config/initializers/schemas.rb
257
260
  - config/routes.rb
261
+ - default_metadata/component/number.json
258
262
  - default_metadata/component/text.json
263
+ - default_metadata/component/textarea.json
259
264
  - default_metadata/config/meta.json
260
265
  - default_metadata/config/service.json
261
266
  - default_metadata/page/checkanswers.json
@@ -265,6 +270,7 @@ files:
265
270
  - default_metadata/service/base.json
266
271
  - default_metadata/string/error.max_length.json
267
272
  - default_metadata/string/error.min_length.json
273
+ - default_metadata/string/error.number.json
268
274
  - default_metadata/string/error.required.json
269
275
  - fixtures/non_finished_service.json
270
276
  - fixtures/service.json
@@ -274,6 +280,9 @@ files:
274
280
  - lib/metadata_presenter/test_helpers.rb
275
281
  - lib/metadata_presenter/version.rb
276
282
  - lib/tasks/metadata_presenter_tasks.rake
283
+ - schemas/component/number.json
284
+ - schemas/component/text.json
285
+ - schemas/component/textarea.json
277
286
  - schemas/condition/condition.json
278
287
  - schemas/config/meta.json
279
288
  - schemas/config/service.json
@@ -303,7 +312,6 @@ files:
303
312
  - schemas/definition/page.content.json
304
313
  - schemas/definition/page.form.json
305
314
  - schemas/definition/page.json
306
- - schemas/definition/page.singlequestion.json
307
315
  - schemas/definition/repeatable.json
308
316
  - schemas/definition/width_class.input.json
309
317
  - schemas/definition/width_class.json
@@ -311,12 +319,12 @@ files:
311
319
  - schemas/link/link.json
312
320
  - schemas/page/checkanswers.json
313
321
  - schemas/page/confirmation.json
322
+ - schemas/page/singlequestion.json
314
323
  - schemas/page/start.json
315
324
  - schemas/request/service.json
316
325
  - schemas/service/base.json
317
326
  - schemas/service/configuration.json
318
327
  - schemas/service/locale.json
319
- - schemas/text/text.json
320
328
  - schemas/validations/validations.json
321
329
  homepage: https://moj-online.service.justice.gov.uk
322
330
  licenses: