quby-compiler 0.3.5 → 0.3.6

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: 6057e46b6b390c3a3d4ecdf461f1e8970c3c42de8d2b5ec50cb14a1544eff8c9
4
- data.tar.gz: ae3e2dd60f2e9dbc655bee2f32cb110e1daf399fecdc8d653e1a3df39fe267af
3
+ metadata.gz: a56013c91225af82fd15a27e8195ca88b22dcb3ea94354ab2ef62cef50532bf2
4
+ data.tar.gz: 6412e7e3ef45dd548dc10eea9e2b72da4b7cc64d94d9de2a3ede13db70c5be25
5
5
  SHA512:
6
- metadata.gz: 0fc383d185fd6ef9a11f4bc1d952ecefa89c6853cc1ef3f8e00a80b86d9c779a470309106492b57890da29424fc8cd9dc092c08df9a135d140d01cbcb226a5b2
7
- data.tar.gz: 979aea81dcfa1a4f15060ba9cea59f5d3bffc94983b59383323e5e00fea3d57f2967fd8cc17a66b11e3fc16eb823b91c3f83d8f06845eac7445e3d374619a68f
6
+ metadata.gz: 67d746a71ccbd1c0780a836579000efdf50e825a10906a10992abaf3612340039e9670320814d6cb7f6baf3eb041e85c3872496e4d95a70ed4195d61632b969a
7
+ data.tar.gz: 51151607042665ecbdd7f4b9448e24a220350cd132ec1e5ef509dfd71b5abca5668686de5231cfd40a27e43ecead4003e1f41ab04e01f952fae95ecc3f96a7cf
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.3.6
2
+
3
+ * `outcome_table` panel dsl method now exports the given outcome table definition to `roqua.json`
4
+ This can't be used in combination with the `outcome_table: ` attibute in score schemas.
5
+
1
6
  # 0.3.5
2
7
 
3
8
  * Allow score_schema's outcome_table to be set to nil to hide values from outcome tables
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quby-compiler (0.3.4)
4
+ quby-compiler (0.3.5)
5
5
  actionview (>= 5.0)
6
6
  activemodel (>= 5.0)
7
7
  activesupport (>= 5.0)
@@ -21,8 +21,8 @@ GEM
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- active_interaction (3.8.3)
25
- activemodel (>= 4, < 7)
24
+ active_interaction (4.0.2)
25
+ activemodel (>= 5, < 7)
26
26
  activemodel (6.0.4)
27
27
  activesupport (= 6.0.4)
28
28
  activerecord (6.0.4)
@@ -34,7 +34,7 @@ GEM
34
34
  minitest (~> 5.1)
35
35
  tzinfo (~> 1.1)
36
36
  zeitwerk (~> 2.2, >= 2.2.2)
37
- appsignal (2.10.12)
37
+ appsignal (3.0.8)
38
38
  rack
39
39
  builder (3.2.4)
40
40
  coderay (1.1.3)
@@ -44,13 +44,13 @@ GEM
44
44
  dry-configurable (0.12.1)
45
45
  concurrent-ruby (~> 1.0)
46
46
  dry-core (~> 0.5, >= 0.5.0)
47
- dry-container (0.7.2)
47
+ dry-container (0.8.0)
48
48
  concurrent-ruby (~> 1.0)
49
49
  dry-configurable (~> 0.1, >= 0.1.3)
50
- dry-core (0.5.0)
50
+ dry-core (0.6.0)
51
51
  concurrent-ruby (~> 1.0)
52
52
  dry-inflector (0.2.0)
53
- dry-logic (1.1.0)
53
+ dry-logic (1.2.0)
54
54
  concurrent-ruby (~> 1.0)
55
55
  dry-core (~> 0.5, >= 0.5)
56
56
  dry-struct (1.4.0)
@@ -91,10 +91,10 @@ GEM
91
91
  loofah (~> 2.3)
92
92
  rake (12.3.3)
93
93
  redcarpet (3.5.1)
94
- roqua-support (0.3.5)
95
- active_interaction (~> 3.0)
96
- activesupport (>= 5.1, < 6.1)
97
- appsignal (>= 2.9, < 2.11)
94
+ roqua-support (0.4.0)
95
+ active_interaction (>= 3.0, < 5.0)
96
+ activesupport (>= 5.2, < 6.2)
97
+ appsignal (>= 2.9, < 3.1)
98
98
  naught (~> 1.0)
99
99
  with_advisory_lock (~> 3.2)
100
100
  rspec (3.9.0)
@@ -15,6 +15,7 @@ module Quby
15
15
  validates :score_keys, :subscore_keys, :questionnaire, :key, presence: true
16
16
  validates :name, presence: true, if: proc { |table| table.default_collapsed }
17
17
  validate :references_existing_score_keys
18
+ validate :no_outcome_tables_defined_in_score_schemas
18
19
 
19
20
  def references_existing_score_keys
20
21
  (score_keys - questionnaire.score_schemas.values.map(&:key)).each do |missing_key|
@@ -25,6 +26,17 @@ module Quby
25
26
  errors.add :subscore_keys, "#{missing_key.inspect} not found in subscore schemas"
26
27
  end
27
28
  end
29
+
30
+ def no_outcome_tables_defined_in_score_schemas
31
+ if questionnaire.score_schemas.values.any? do |schema|
32
+ schema.subscore_schemas.any? do |subscore|
33
+ subscore.outcome_table != :main
34
+ end
35
+ end
36
+ errors.add :score_schemas,
37
+ "Outcome table associations defined in score schemas should not be combined with explicit outcome tables"
38
+ end
39
+ end
28
40
  end
29
41
  end
30
42
  end
@@ -84,11 +84,47 @@ module Quby
84
84
  # <subscore_key:Symbol>: <subscore.label:String> # headers for each subscore key for all tables.
85
85
 
86
86
  def outcome_tables_schema
87
+ if questionnaire.outcome_tables.present?
88
+ outcome_tables_from_definition
89
+ else
90
+ outcome_tables_from_score_schemas
91
+ end
92
+ end
93
+
94
+ def outcome_tables_from_definition
95
+ # hash of tables, with the score keys (rows) and subscore keys (columns) used for each
96
+ tables = {}
97
+ # hash of `subscore_key: subscore_label` pairs used in tables
98
+ headers = {}
99
+
100
+ questionnaire.outcome_tables.each do |table|
101
+ tables[table.key] = {name: table.name,
102
+ default_collapsed: table.default_collapsed,
103
+ score_keys: table.score_keys,
104
+ subscore_keys: table.subscore_keys}.compact
105
+
106
+ table.subscore_keys.each do |subscore_key|
107
+ table.score_keys.find do |score_key|
108
+ subschema = questionnaire.score_schemas[score_key].subscore_schemas.find do |subschema|
109
+ subschema.key == subscore_key
110
+ end
111
+ headers[subscore_key] = subschema&.label
112
+ end
113
+ end
114
+ end
115
+
116
+ {
117
+ headers: headers,
118
+ tables: tables,
119
+ }
120
+ end
121
+
122
+ def outcome_tables_from_score_schemas
87
123
  # hash of tables, with the score keys (rows) and subscore keys (columns) used for each
88
124
  tables = Hash.new{ |hash, key| hash[key] = {score_keys: Set.new, subscore_keys: Set.new } }
89
125
  # hash of `subscore_key: subscore_label` pairs used in tables
90
126
  headers = {}
91
-
127
+
92
128
  questionnaire.score_schemas.values.each do |schema|
93
129
  schema.subscore_schemas.each do |subschema|
94
130
  next if subschema.outcome_table.blank?
@@ -97,7 +133,7 @@ module Quby
97
133
  headers[subschema.key] = subschema.label
98
134
  end
99
135
  end
100
-
136
+
101
137
  {
102
138
  headers: headers,
103
139
  tables: tables,
@@ -1,5 +1,5 @@
1
1
  module Quby
2
2
  module Compiler
3
- VERSION = "0.3.5"
3
+ VERSION = "0.3.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quby-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-24 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel