metadata_presenter 1.8.0 → 2.0.1
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/models/metadata_presenter/component.rb +6 -0
- data/app/models/metadata_presenter/conditional.rb +13 -0
- data/app/models/metadata_presenter/evaluate_conditionals.rb +37 -0
- data/app/models/metadata_presenter/expression.rb +25 -0
- data/app/models/metadata_presenter/flow.rb +4 -4
- data/app/models/metadata_presenter/next_page.rb +5 -5
- data/app/models/metadata_presenter/page.rb +11 -1
- data/app/models/metadata_presenter/traversed_pages.rb +3 -3
- data/default_metadata/flow/branch.json +1 -1
- data/default_metadata/flow/conditional.json +5 -0
- data/default_metadata/flow/{criteria.json → expression.json} +0 -0
- data/default_metadata/page/start.json +0 -1
- data/default_metadata/service/base.json +1 -0
- data/fixtures/branching.json +29 -36
- data/fixtures/no_flow_service.json +1 -1
- data/fixtures/service_with_flow.json +86 -0
- data/fixtures/version_with_flow.json +679 -0
- data/lib/metadata_presenter/version.rb +1 -1
- data/lib/tasks/metadata_presenter_tasks.rake +8 -8
- data/schemas/definition/page.form.json +0 -34
- data/schemas/flow/branch.json +7 -7
- data/schemas/page/start.json +1 -5
- metadata +9 -7
- data/app/models/metadata_presenter/condition.rb +0 -13
- data/app/models/metadata_presenter/criteria.rb +0 -25
- data/app/models/metadata_presenter/evaluate_conditions.rb +0 -37
- data/default_metadata/flow/condition.json +0 -5
@@ -48,12 +48,12 @@ module MetadataPresenter
|
|
48
48
|
flow_object = service.flow_object(id)
|
49
49
|
|
50
50
|
if flow_object.branch?
|
51
|
-
full_description = flow_object.
|
52
|
-
|
53
|
-
|
51
|
+
full_description = flow_object.conditionals.map.each_with_index do |conditional, _index|
|
52
|
+
conditional.expressions.map { |expression|
|
53
|
+
expression.service = service
|
54
54
|
|
55
|
-
"#{
|
56
|
-
}.join(" #{
|
55
|
+
"#{expression.expression_component.humanised_title} #{expression.operator} #{expression.field_label}"
|
56
|
+
}.join(" #{conditional.type} ")
|
57
57
|
end
|
58
58
|
nodes[id] = @graphviz.add_nodes(full_description.flatten.join(' / '))
|
59
59
|
else
|
@@ -72,9 +72,9 @@ module MetadataPresenter
|
|
72
72
|
if flow_object.branch?
|
73
73
|
@graphviz.add_edges(current_node, node_next, label: 'Conditions are not met', labelfontsize: 8) if node_next
|
74
74
|
|
75
|
-
flow_object.group_by_page.each do |page_uuid,
|
76
|
-
|
77
|
-
@graphviz.add_edges(current_node,
|
75
|
+
flow_object.group_by_page.each do |page_uuid, _conditionals|
|
76
|
+
conditionals_node = nodes[page_uuid]
|
77
|
+
@graphviz.add_edges(current_node, conditionals_node, label: 'Conditions are met', labelfontsize: 8) if conditionals_node
|
78
78
|
end
|
79
79
|
elsif node_next
|
80
80
|
@graphviz.add_edges(current_node, node_next)
|
@@ -44,40 +44,6 @@
|
|
44
44
|
"content"
|
45
45
|
]
|
46
46
|
},
|
47
|
-
"steps_heading": {
|
48
|
-
"title": "Steps heading",
|
49
|
-
"description": "Name of section to use on step pages (if any)",
|
50
|
-
"type": "string",
|
51
|
-
"category": [
|
52
|
-
"content"
|
53
|
-
]
|
54
|
-
},
|
55
|
-
"steps": {
|
56
|
-
"title": "Steps",
|
57
|
-
"description": "The ‘child’ pages that follow from this ‘parent’ page",
|
58
|
-
"type": "array",
|
59
|
-
"items": {
|
60
|
-
"type": "string"
|
61
|
-
}
|
62
|
-
},
|
63
|
-
"enable_steps": {
|
64
|
-
"title": "Enable steps",
|
65
|
-
"description": "Allow current page to have steps",
|
66
|
-
"type": "boolean"
|
67
|
-
},
|
68
|
-
"show_steps": {
|
69
|
-
"title": "Steps visibility",
|
70
|
-
"category": [
|
71
|
-
"logic"
|
72
|
-
],
|
73
|
-
"description": "Whether to show or hide the page’s steps",
|
74
|
-
"oneOf": [
|
75
|
-
{
|
76
|
-
"$ref": "definition.conditional.boolean"
|
77
|
-
}
|
78
|
-
],
|
79
|
-
"default": true
|
80
|
-
},
|
81
47
|
"nextPage": {
|
82
48
|
"$ref": "definition.next_page"
|
83
49
|
}
|
data/schemas/flow/branch.json
CHANGED
@@ -15,20 +15,20 @@
|
|
15
15
|
"default": {
|
16
16
|
"type": "string"
|
17
17
|
},
|
18
|
-
"
|
19
|
-
"$ref": "#/definitions/
|
18
|
+
"conditionals": {
|
19
|
+
"$ref": "#/definitions/conditionals"
|
20
20
|
}
|
21
21
|
}
|
22
22
|
}
|
23
23
|
},
|
24
24
|
"additionalProperties": false,
|
25
25
|
"definitions": {
|
26
|
-
"
|
26
|
+
"conditionals": {
|
27
27
|
"type": "array",
|
28
28
|
"items": {
|
29
29
|
"type": "object",
|
30
30
|
"properties": {
|
31
|
-
"
|
31
|
+
"_type": {
|
32
32
|
"type": "string",
|
33
33
|
"enum": [
|
34
34
|
"if",
|
@@ -39,13 +39,13 @@
|
|
39
39
|
"next": {
|
40
40
|
"type": "string"
|
41
41
|
},
|
42
|
-
"
|
43
|
-
"$ref": "#/definitions/
|
42
|
+
"expressions": {
|
43
|
+
"$ref": "#/definitions/expressions"
|
44
44
|
}
|
45
45
|
}
|
46
46
|
}
|
47
47
|
},
|
48
|
-
"
|
48
|
+
"expressions": {
|
49
49
|
"type": "array",
|
50
50
|
"items": {
|
51
51
|
"type": "object",
|
data/schemas/page/start.json
CHANGED
@@ -15,9 +15,6 @@
|
|
15
15
|
"title": "Before you start",
|
16
16
|
"description": "A body of text that goes after the Start button"
|
17
17
|
},
|
18
|
-
"enable_steps": {
|
19
|
-
"const": true
|
20
|
-
},
|
21
18
|
"components": {
|
22
19
|
"accepts": [
|
23
20
|
"content"
|
@@ -37,7 +34,6 @@
|
|
37
34
|
]
|
38
35
|
},
|
39
36
|
"required": [
|
40
|
-
"heading"
|
41
|
-
"steps"
|
37
|
+
"heading"
|
42
38
|
]
|
43
39
|
}
|
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:
|
4
|
+
version: 2.0.1
|
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-07-
|
11
|
+
date: 2021-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_design_system_formbuilder
|
@@ -277,10 +277,10 @@ files:
|
|
277
277
|
- app/helpers/metadata_presenter/default_text.rb
|
278
278
|
- app/jobs/metadata_presenter/application_job.rb
|
279
279
|
- app/models/metadata_presenter/component.rb
|
280
|
-
- app/models/metadata_presenter/
|
281
|
-
- app/models/metadata_presenter/criteria.rb
|
280
|
+
- app/models/metadata_presenter/conditional.rb
|
282
281
|
- app/models/metadata_presenter/date_field.rb
|
283
|
-
- app/models/metadata_presenter/
|
282
|
+
- app/models/metadata_presenter/evaluate_conditionals.rb
|
283
|
+
- app/models/metadata_presenter/expression.rb
|
284
284
|
- app/models/metadata_presenter/file_uploader.rb
|
285
285
|
- app/models/metadata_presenter/flow.rb
|
286
286
|
- app/models/metadata_presenter/item.rb
|
@@ -359,8 +359,8 @@ files:
|
|
359
359
|
- default_metadata/definition/checkbox.json
|
360
360
|
- default_metadata/definition/radio.json
|
361
361
|
- default_metadata/flow/branch.json
|
362
|
-
- default_metadata/flow/
|
363
|
-
- default_metadata/flow/
|
362
|
+
- default_metadata/flow/conditional.json
|
363
|
+
- default_metadata/flow/expression.json
|
364
364
|
- default_metadata/flow/page.json
|
365
365
|
- default_metadata/page/checkanswers.json
|
366
366
|
- default_metadata/page/confirmation.json
|
@@ -385,7 +385,9 @@ files:
|
|
385
385
|
- fixtures/no_flow_service.json
|
386
386
|
- fixtures/non_finished_service.json
|
387
387
|
- fixtures/service.json
|
388
|
+
- fixtures/service_with_flow.json
|
388
389
|
- fixtures/version.json
|
390
|
+
- fixtures/version_with_flow.json
|
389
391
|
- lib/metadata_presenter.rb
|
390
392
|
- lib/metadata_presenter/engine.rb
|
391
393
|
- lib/metadata_presenter/test_helpers.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module MetadataPresenter
|
2
|
-
class Condition < MetadataPresenter::Metadata
|
3
|
-
def ==(other)
|
4
|
-
metadata.to_h.deep_symbolize_keys == other.metadata.to_h.deep_symbolize_keys
|
5
|
-
end
|
6
|
-
|
7
|
-
def criterias
|
8
|
-
Array(metadata.criterias).map do |criteria|
|
9
|
-
MetadataPresenter::Criteria.new(criteria)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module MetadataPresenter
|
2
|
-
class Criteria < MetadataPresenter::Metadata
|
3
|
-
attr_accessor :service
|
4
|
-
|
5
|
-
def ==(other)
|
6
|
-
metadata == other.metadata
|
7
|
-
end
|
8
|
-
|
9
|
-
def criteria_page
|
10
|
-
service.find_page_by_uuid(page)
|
11
|
-
end
|
12
|
-
|
13
|
-
def criteria_component
|
14
|
-
criteria_page.find_component_by_uuid(component)
|
15
|
-
end
|
16
|
-
|
17
|
-
def criteria_field
|
18
|
-
criteria_component.find_item_by_uuid(field)
|
19
|
-
end
|
20
|
-
|
21
|
-
def field_label
|
22
|
-
criteria_field['label'] if criteria_field
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module MetadataPresenter
|
2
|
-
class EvaluateConditions
|
3
|
-
include ActiveModel::Model
|
4
|
-
attr_accessor :service, :flow, :user_data
|
5
|
-
|
6
|
-
def page
|
7
|
-
evaluated_page_uuid = page_uuid || flow.default_next
|
8
|
-
|
9
|
-
service.find_page_by_uuid(evaluated_page_uuid)
|
10
|
-
end
|
11
|
-
|
12
|
-
def page_uuid
|
13
|
-
@results ||= conditions.map do |condition|
|
14
|
-
evaluated_criterias = condition.criterias.map do |criteria|
|
15
|
-
criteria.service = service
|
16
|
-
|
17
|
-
Operator.new(
|
18
|
-
criteria.operator
|
19
|
-
).evaluate(
|
20
|
-
criteria.field_label,
|
21
|
-
user_data[criteria.criteria_component.id]
|
22
|
-
)
|
23
|
-
end
|
24
|
-
|
25
|
-
if condition.condition_type == 'or' && evaluated_criterias.any?
|
26
|
-
condition.next
|
27
|
-
elsif evaluated_criterias.all?
|
28
|
-
condition.next
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
@results.flatten.compact.first
|
33
|
-
end
|
34
|
-
|
35
|
-
delegate :conditions, to: :flow
|
36
|
-
end
|
37
|
-
end
|