metadata_presenter 2.0.1 → 2.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 984ce62e691c47847bd4bbc36332690f442bcf7db3a65520e79137c04b03b35a
4
- data.tar.gz: e028e1d6285c37403ba079089151d0187f8abc5adc25ec4033995b21b2dc54cc
3
+ metadata.gz: ec8517c93b646b82f9084516869dd500189ee28718b67cbf15f681e71b3ae83f
4
+ data.tar.gz: 31476c840217b5fa8bceb6ccd1e3e008e33784a3fb5506018192e54901e0330a
5
5
  SHA512:
6
- metadata.gz: 9663825f4e18f2f465739f2c2fc72fafdbb9b1d9c91b990c7778054335ad577ea87ea6205a404e229d73ebaf3e4105e1c1c1afd11543832bc4b81c23430c8735
7
- data.tar.gz: 04e04bdc47ebd8aca8ae538d5ff9d32eeb2c1c00fc5569d7a5b88fa7343575b9cccbb57a12a8ed0acbdee9c3bc9f5a63aee97a1a7bc51c996c782aeee4eea0f7
6
+ metadata.gz: 4bace053abc5af0fc2ba23a7d64348a2bc23aefed4df1e834138988138d6c24fb04ffd552a594537794e76b35308d98e5bf75efed844d99266fc88f0d3b0a861
7
+ data.tar.gz: aa40d60598b4217c2a0296e61ec5500d1b6df03037783c63de58415d18c1a1819866978e275518fb4e794676f643f1a7b9525c6f3c5e9319a37a66cfc70cfc15
@@ -8,10 +8,8 @@ module MetadataPresenter
8
8
 
9
9
  if conditionals?
10
10
  evaluate_conditionals
11
- elsif current_page_flow.present?
12
- service.find_page_by_uuid(current_page_flow.default_next)
13
11
  else
14
- service.next_page(from: current_page_url)
12
+ service.find_page_by_uuid(current_page_flow.default_next)
15
13
  end
16
14
  end
17
15
 
@@ -12,6 +12,7 @@ module MetadataPresenter
12
12
  add_component
13
13
  add_extra_component
14
14
  ].freeze
15
+ QUESTION_PAGES = %w[page.singlequestion page.multiplequestions].freeze
15
16
 
16
17
  def editable_attributes
17
18
  to_h.reject { |k, _| k.in?(NOT_EDITABLE) }
@@ -33,11 +34,19 @@ module MetadataPresenter
33
34
  to_components(metadata.extra_components, collection: :extra_components)
34
35
  end
35
36
 
36
- def components_by_type(type)
37
- supported_components = page_components(raw_type)[type]
37
+ def input_components
38
+ all_components.reject(&:content?)
39
+ end
40
+
41
+ def content_components
42
+ all_components.select(&:content?)
43
+ end
44
+
45
+ def supported_components_by_type(type)
46
+ supported = supported_components(raw_type)[type]
38
47
 
39
48
  all_components.select do |component|
40
- supported_components.include?(component.type)
49
+ supported.include?(component.type)
41
50
  end
42
51
  end
43
52
 
@@ -49,12 +58,12 @@ module MetadataPresenter
49
58
  "metadata_presenter/#{type.gsub('.', '/')}"
50
59
  end
51
60
 
52
- def input_components
53
- page_components(raw_type)[:input]
61
+ def supported_input_components
62
+ supported_components(raw_type)[:input]
54
63
  end
55
64
 
56
- def content_components
57
- page_components(raw_type)[:content]
65
+ def supported_content_components
66
+ supported_components(raw_type)[:content]
58
67
  end
59
68
 
60
69
  def upload_components
@@ -65,6 +74,10 @@ module MetadataPresenter
65
74
  type == 'page.standalone'
66
75
  end
67
76
 
77
+ def question_page?
78
+ type.in?(QUESTION_PAGES)
79
+ end
80
+
68
81
  def title
69
82
  return heading if heading?
70
83
 
@@ -87,10 +100,10 @@ module MetadataPresenter
87
100
  end
88
101
  end
89
102
 
90
- def page_components(page_type)
91
- values = Rails.application.config.page_components[page_type]
103
+ def supported_components(page_type)
104
+ values = Rails.application.config.supported_components[page_type]
92
105
  if values.blank?
93
- raise PageComponentsNotDefinedError, "No page components defined for #{page_type} in config initialiser"
106
+ raise PageComponentsNotDefinedError, "No supported components defined for #{page_type} in config initialiser"
94
107
  end
95
108
 
96
109
  values
@@ -4,29 +4,13 @@ module MetadataPresenter
4
4
  attr_accessor :service, :user_data, :current_page, :referrer
5
5
 
6
6
  def page
7
- # what happens when a user enters in the middle of the flow
8
7
  return if no_current_or_referrer_pages? || service.no_back_link?(current_page)
9
8
 
10
- if service.flow.present?
11
- return referrer_page if return_to_referrer?
12
-
13
- TraversedPages.new(service, user_data, current_page).last
14
- else
15
- service.previous_page(current_page: current_page, referrer: referrer)
16
- end
9
+ TraversedPages.new(service, user_data, current_page).last
17
10
  end
18
11
 
19
12
  private
20
13
 
21
- def referrer_page
22
- @referrer_page ||= service.find_page_by_url(URI(referrer).path)
23
- end
24
-
25
- def return_to_referrer?
26
- current_page.standalone? ||
27
- (referrer_page && referrer_page.standalone?)
28
- end
29
-
30
14
  def no_current_or_referrer_pages?
31
15
  current_page.blank? || referrer.nil?
32
16
  end
@@ -38,14 +38,6 @@ class MetadataPresenter::Service < MetadataPresenter::Metadata
38
38
  pages[pages.index(current_page) + 1] if current_page.present?
39
39
  end
40
40
 
41
- def previous_page(current_page:, referrer:)
42
- return if current_page.nil? || referrer.nil?
43
-
44
- unless no_back_link?(current_page)
45
- flow_page(current_page) || referrer_page(referrer)
46
- end
47
- end
48
-
49
41
  def confirmation_page
50
42
  @confirmation_page ||= pages.find do |page|
51
43
  page.type == 'page.confirmation'
@@ -57,7 +49,15 @@ class MetadataPresenter::Service < MetadataPresenter::Metadata
57
49
  end
58
50
 
59
51
  def no_back_link?(current_page)
60
- current_page == start_page || current_page == confirmation_page
52
+ current_page == start_page ||
53
+ current_page == confirmation_page ||
54
+ current_page.standalone?
55
+ end
56
+
57
+ def page_with_component(uuid)
58
+ pages.find do |page|
59
+ Array(page.components).any? { |component| component.uuid == uuid }
60
+ end
61
61
  end
62
62
 
63
63
  private
@@ -12,8 +12,6 @@ module MetadataPresenter
12
12
  delegate :last, to: :all
13
13
 
14
14
  def all
15
- return latest_pages if service.flow.blank?
16
-
17
15
  page_uuid = service.start_page.uuid
18
16
 
19
17
  service.flow.size.times do
@@ -10,7 +10,7 @@ module MetadataPresenter
10
10
 
11
11
  def self.map(view:, pages:, answers:)
12
12
  user_input_pages(pages).map { |page|
13
- Array(page.components_by_type(:input)).map do |component|
13
+ Array(page.supported_components_by_type(:input)).map do |component|
14
14
  new(
15
15
  view: view,
16
16
  component: component,
@@ -16,8 +16,8 @@
16
16
  components: @page.extra_components,
17
17
  tag: nil,
18
18
  classes: nil,
19
- input_components: @page.input_components,
20
- content_components: @page.content_components
19
+ input_components: @page.supported_input_components,
20
+ content_components: @page.supported_content_components
21
21
  } %>
22
22
 
23
23
  <dl class="fb-block fb-block-answers govuk-summary-list">
@@ -80,8 +80,8 @@
80
80
  components: @page.components,
81
81
  tag: nil,
82
82
  classes: nil,
83
- input_components: @page.input_components,
84
- content_components: @page.content_components
83
+ input_components: @page.supported_input_components,
84
+ content_components: @page.supported_content_components
85
85
  } %>
86
86
 
87
87
  <button <%= 'disabled' if editable? %> data-prevent-double-click="true" class="fb-block fb-block-actions govuk-button" data-module="govuk-button" data-block-id="actions" data-block-type="actions">
@@ -29,7 +29,7 @@
29
29
  components: @page.components,
30
30
  tag: nil,
31
31
  classes: nil,
32
- input_components: @page.input_components,
33
- content_components: @page.content_components
32
+ input_components: @page.supported_input_components,
33
+ content_components: @page.supported_content_components
34
34
  } %>
35
35
  </div>
@@ -21,8 +21,8 @@
21
21
  components: @page.components,
22
22
  tag: nil,
23
23
  classes: nil,
24
- input_components: @page.input_components,
25
- content_components: @page.content_components
24
+ input_components: @page.supported_input_components,
25
+ content_components: @page.supported_content_components
26
26
  } %>
27
27
 
28
28
  <%= f.govuk_submit(disabled: editable?) %>
@@ -13,8 +13,8 @@
13
13
  components: @page.components,
14
14
  tag: :h2,
15
15
  classes: 'govuk-heading-m govuk-!-margin-top-8',
16
- input_components: @page.input_components,
17
- content_components: @page.content_components
16
+ input_components: @page.supported_input_components,
17
+ content_components: @page.supported_content_components
18
18
  }
19
19
  %>
20
20
 
@@ -1,4 +1,4 @@
1
- Rails.application.config.page_components =
1
+ Rails.application.config.supported_components =
2
2
  ActiveSupport::HashWithIndifferentAccess.new({
3
3
  checkanswers: {
4
4
  input: %w(),
@@ -33,6 +33,20 @@
33
33
  ]
34
34
  }
35
35
  },
36
+ "flow": {
37
+ "9626b2e9-5ef0-4070-8331-ac55151b22c4": {
38
+ "_type": "flow.page",
39
+ "next": {
40
+ "default": "1ed3e4ad-5098-41c9-b4b6-426e89f7804e"
41
+ }
42
+ },
43
+ "1ed3e4ad-5098-41c9-b4b6-426e89f7804e": {
44
+ "_type": "flow.page",
45
+ "next": {
46
+ "default": ""
47
+ }
48
+ }
49
+ },
36
50
  "pages": [
37
51
  {
38
52
  "_uuid": "9626b2e9-5ef0-4070-8331-ac55151b22c4",
@@ -42,7 +56,6 @@
42
56
  "lede": "Use this service to:",
43
57
  "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
44
58
  "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
45
- "steps": [],
46
59
  "url": "/"
47
60
  },
48
61
  {
@@ -33,6 +33,20 @@
33
33
  ]
34
34
  }
35
35
  },
36
+ "flow": {
37
+ "9626b2e9-5ef0-4070-8331-ac55151b22c4": {
38
+ "_type": "flow.page",
39
+ "next": {
40
+ "default": "1ed3e4ad-5098-41c9-b4b6-426e89f7804e"
41
+ }
42
+ },
43
+ "b238a22f-c180-48d0-a7d9-8aad2036f1f2": {
44
+ "_type": "flow.page",
45
+ "next": {
46
+ "default": ""
47
+ }
48
+ }
49
+ },
36
50
  "pages": [
37
51
  {
38
52
  "_uuid": "9626b2e9-5ef0-4070-8331-ac55151b22c4",
@@ -42,7 +56,6 @@
42
56
  "lede": "Use this service to:",
43
57
  "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
44
58
  "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
45
- "steps": [],
46
59
  "url": "/"
47
60
  },
48
61
  {
@@ -34,23 +34,46 @@
34
34
  ]
35
35
  }
36
36
  },
37
+ "flow": {
38
+ "cf6dc32f-502c-4215-8c27-1151a45735bb": {
39
+ "_type": "flow.page",
40
+ "next": {
41
+ "default": "9e1ba77f-f1e5-42f4-b090-437aa9af7f73"
42
+ }
43
+ },
44
+ "9e1ba77f-f1e5-42f4-b090-437aa9af7f73": {
45
+ "_type": "flow.page",
46
+ "next": {
47
+ "default": "68fbb180-9a2a-48f6-9da6-545e28b8d35a"
48
+ }
49
+ },
50
+ "68fbb180-9a2a-48f6-9da6-545e28b8d35a": {
51
+ "_type": "flow.page",
52
+ "next": {
53
+ "default": "09e91fd9-7a46-4840-adbc-244d545cfef7"
54
+ }
55
+ },
56
+ "09e91fd9-7a46-4840-adbc-244d545cfef7": {
57
+ "_type": "flow.page",
58
+ "next": {
59
+ "default": ""
60
+ }
61
+ }
62
+ },
37
63
  "pages": [
38
64
  {
39
65
  "_id": "page.start",
40
66
  "_type": "page.start",
67
+ "_uuid": "cf6dc32f-502c-4215-8c27-1151a45735bb",
41
68
  "heading": "Service name goes here",
42
69
  "lede": "This is your start page first paragraph. You can only have one paragraph here.",
43
70
  "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
44
- "steps": [
45
- "page.name",
46
- "page.email-address",
47
- "page.parent_name"
48
- ],
49
71
  "url": "/"
50
72
  },
51
73
  {
52
74
  "_id": "page.name",
53
75
  "_type": "page.singlequestion",
76
+ "_uuid": "9e1ba77f-f1e5-42f4-b090-437aa9af7f73",
54
77
  "components": [
55
78
  {
56
79
  "_id": "page.name--text.auto_name__1",
@@ -70,6 +93,7 @@
70
93
  {
71
94
  "_id": "page.email-address",
72
95
  "_type": "page.singlequestion",
96
+ "_uuid": "68fbb180-9a2a-48f6-9da6-545e28b8d35a",
73
97
  "heading": "Email address",
74
98
  "components": [
75
99
  {
@@ -101,6 +125,7 @@
101
125
  {
102
126
  "_id": "page.parent_name",
103
127
  "_type": "page.singlequestion",
128
+ "_uuid": "09e91fd9-7a46-4840-adbc-244d545cfef7",
104
129
  "components": [
105
130
  {
106
131
  "_id": "page.parent-name--text.auto_name__3",
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
+ "flow": {
5
+ "86ed04ac-1727-4172-8dd2-608009f1a656": {
6
+ "_type": "flow.page",
7
+ "next": {
8
+ "default": ""
9
+ }
10
+ }
11
+ },
4
12
  "pages": [
5
13
  {
6
14
  "_id": "page.start",
@@ -9,7 +17,6 @@
9
17
  "lede": "",
10
18
  "_type": "page.start",
11
19
  "_uuid": "86ed04ac-1727-4172-8dd2-608009f1a656",
12
- "steps": [],
13
20
  "heading": "Service name goes here",
14
21
  "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally."
15
22
  }
@@ -1,6 +1,92 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
+ "flow": {
5
+ "cf6dc32f-502c-4215-8c27-1151a45735bb": {
6
+ "_type": "flow.page",
7
+ "next": {
8
+ "default": "9e1ba77f-f1e5-42f4-b090-437aa9af7f73"
9
+ }
10
+ },
11
+ "9e1ba77f-f1e5-42f4-b090-437aa9af7f73": {
12
+ "_type": "flow.page",
13
+ "next": {
14
+ "default": "df1ba645-f748-46d0-ad75-f34112653e37"
15
+ }
16
+ },
17
+ "df1ba645-f748-46d0-ad75-f34112653e37": {
18
+ "_type": "flow.page",
19
+ "next": {
20
+ "default": "4b8c6bf3-878a-4446-9198-48351b3e2185"
21
+ }
22
+ },
23
+ "4b8c6bf3-878a-4446-9198-48351b3e2185": {
24
+ "_type": "flow.page",
25
+ "next": {
26
+ "default": "54ccc6cd-60c0-4749-947b-a97af1bc0aa2"
27
+ }
28
+ },
29
+ "54ccc6cd-60c0-4749-947b-a97af1bc0aa2": {
30
+ "_type": "flow.page",
31
+ "next": {
32
+ "default": "b8335af2-6642-4e2f-8192-0dd12279eec7"
33
+ }
34
+ },
35
+ "b8335af2-6642-4e2f-8192-0dd12279eec7": {
36
+ "_type": "flow.page",
37
+ "next": {
38
+ "default": "68fbb180-9a2a-48f6-9da6-545e28b8d35a"
39
+ }
40
+ },
41
+ "68fbb180-9a2a-48f6-9da6-545e28b8d35a": {
42
+ "_type": "flow.page",
43
+ "next": {
44
+ "default": "7806cd64-0c05-450e-ba6f-2325c8b22d46"
45
+ }
46
+ },
47
+ "7806cd64-0c05-450e-ba6f-2325c8b22d46": {
48
+ "_type": "flow.page",
49
+ "next": {
50
+ "default": "0c022e95-0748-4dda-8ba5-12fd1d2f596b"
51
+ }
52
+ },
53
+ "0c022e95-0748-4dda-8ba5-12fd1d2f596b": {
54
+ "_type": "flow.page",
55
+ "next": {
56
+ "default": "e8708909-922e-4eaf-87a5-096f7a713fcb"
57
+ }
58
+ },
59
+ "e8708909-922e-4eaf-87a5-096f7a713fcb": {
60
+ "_type": "flow.page",
61
+ "next": {
62
+ "default": "80420693-d6f2-4fce-a860-777ca774a6f5"
63
+ }
64
+ },
65
+ "80420693-d6f2-4fce-a860-777ca774a6f5": {
66
+ "_type": "flow.page",
67
+ "next": {
68
+ "default": "2ef7d11e-0307-49e9-9fe2-345dc528dd66"
69
+ }
70
+ },
71
+ "2ef7d11e-0307-49e9-9fe2-345dc528dd66": {
72
+ "_type": "flow.page",
73
+ "next": {
74
+ "default": "e337070b-f636-49a3-a65c-f506675265f0"
75
+ }
76
+ },
77
+ "e337070b-f636-49a3-a65c-f506675265f0": {
78
+ "_type": "flow.page",
79
+ "next": {
80
+ "default": "778e364b-9a7f-4829-8eb2-510e08f156a3"
81
+ }
82
+ },
83
+ "778e364b-9a7f-4829-8eb2-510e08f156a3": {
84
+ "_type": "flow.page",
85
+ "next": {
86
+ "default": ""
87
+ }
88
+ }
89
+ },
4
90
  "pages": [
5
91
  {
6
92
  "_id": "page.start",
@@ -9,21 +95,6 @@
9
95
  "lede": "",
10
96
  "_type": "page.start",
11
97
  "_uuid": "cf6dc32f-502c-4215-8c27-1151a45735bb",
12
- "steps": [
13
- "page.name",
14
- "page.email-address",
15
- "page.parent-name",
16
- "page.your-age",
17
- "page.family-hobbies",
18
- "page.do-you-like-star-wars",
19
- "page.holiday",
20
- "page.burgers",
21
- "page.star-wars-knowledge",
22
- "page.how-many-lights",
23
- "page.dog-picture",
24
- "page.check-answers",
25
- "page.confirmation"
26
- ],
27
98
  "heading": "Service name goes here",
28
99
  "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally."
29
100
  },