@truedat/qx 7.0.7 → 7.1.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.
Files changed (169) hide show
  1. package/package.json +13 -4
  2. package/src/api.js +29 -20
  3. package/src/components/QxRoutes.js +18 -16
  4. package/src/components/__tests__/__fixtures__/helper.js +187 -0
  5. package/src/components/common/TestFormWrapper.js +38 -0
  6. package/src/components/common/__tests__/ResourceSelector.spec.js +18 -7
  7. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +0 -12
  8. package/src/components/common/expressions/__tests__/Condition.spec.js +4 -1
  9. package/src/components/common/expressions/__tests__/FunctionArgs.spec.js +18 -5
  10. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +4 -4
  11. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +10 -2
  12. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +6 -3
  13. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +0 -12
  14. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +83 -53
  15. package/src/components/dataViews/__tests__/DataViews.spec.js +14 -1
  16. package/src/components/dataViews/__tests__/__snapshots__/DataViewEditor.spec.js.snap +93 -4
  17. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +13 -6
  18. package/src/components/functions/__tests__/FunctionEditor.spec.js +2 -34
  19. package/src/components/functions/__tests__/FunctionParams.spec.js +4 -17
  20. package/src/components/functions/__tests__/Functions.spec.js +2 -34
  21. package/src/components/functions/__tests__/__snapshots__/FunctionEditor.spec.js.snap +48 -48
  22. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +4 -4
  23. package/src/components/functions/__tests__/__snapshots__/Functions.spec.js.snap +4 -4
  24. package/src/components/qualityControls/ControlProperties.js +43 -0
  25. package/src/components/qualityControls/ControlPropertiesView.js +109 -0
  26. package/src/components/qualityControls/EditQualityControl.js +5 -21
  27. package/src/components/qualityControls/IconPopup.js +28 -0
  28. package/src/components/qualityControls/NewDraftQualityControl.js +4 -13
  29. package/src/components/qualityControls/NewQualityControl.js +10 -25
  30. package/src/components/qualityControls/QualityBadge.js +33 -0
  31. package/src/components/qualityControls/QualityControl.js +11 -53
  32. package/src/components/qualityControls/QualityControlActions.js +133 -46
  33. package/src/components/qualityControls/QualityControlEditor.js +114 -135
  34. package/src/components/qualityControls/QualityControlHeader.js +29 -7
  35. package/src/components/qualityControls/QualityControlHistory.js +6 -12
  36. package/src/components/qualityControls/QualityControlQueryModal.js +8 -5
  37. package/src/components/qualityControls/QualityControlRoutes.js +51 -96
  38. package/src/components/qualityControls/QualityControlRow.js +21 -2
  39. package/src/components/qualityControls/QualityControlScores.js +140 -0
  40. package/src/components/qualityControls/QualityControlTabs.js +24 -23
  41. package/src/components/qualityControls/QualityControls.js +142 -59
  42. package/src/components/qualityControls/QualityControlsLabelResults.js +51 -0
  43. package/src/components/qualityControls/QualityControlsTable.js +69 -43
  44. package/src/components/qualityControls/ScoreCriteria.js +40 -0
  45. package/src/components/qualityControls/{ResultCriteria.js → ScoreCriteriaView.js} +26 -42
  46. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +86 -0
  47. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +86 -0
  48. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +219 -0
  49. package/src/components/qualityControls/__tests__/IconPopup.spec.js +33 -0
  50. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +253 -0
  51. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +384 -0
  52. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +30 -0
  53. package/src/components/qualityControls/__tests__/QualityControl.spec.js +47 -0
  54. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +192 -0
  55. package/src/components/qualityControls/__tests__/QualityControlCrumbs.spec.js +18 -0
  56. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +296 -0
  57. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +68 -0
  58. package/src/components/qualityControls/__tests__/QualityControlHistory.spec.js +21 -0
  59. package/src/components/qualityControls/__tests__/QualityControlQueryModal.spec.js +77 -0
  60. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +91 -0
  61. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +139 -0
  62. package/src/components/qualityControls/__tests__/QualityControlTabs.spec.js +20 -0
  63. package/src/components/qualityControls/__tests__/QualityControls.spec.js +202 -0
  64. package/src/components/qualityControls/__tests__/QualityControlsLabelResults.spec.js +83 -0
  65. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +38 -0
  66. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +77 -0
  67. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +62 -0
  68. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +281 -0
  69. package/src/components/qualityControls/__tests__/__snapshots__/ControlProperties.spec.js.snap +151 -0
  70. package/src/components/qualityControls/__tests__/__snapshots__/ControlPropertiesView.spec.js.snap +290 -0
  71. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +672 -0
  72. package/src/components/qualityControls/__tests__/__snapshots__/IconPopup.spec.js.snap +10 -0
  73. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +648 -0
  74. package/src/components/qualityControls/__tests__/__snapshots__/NewQualityControl.spec.js.snap +336 -0
  75. package/src/components/qualityControls/__tests__/__snapshots__/QualityBadge.spec.js.snap +11 -0
  76. package/src/components/qualityControls/__tests__/__snapshots__/QualityControl.spec.js.snap +255 -0
  77. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlActions.spec.js.snap +85 -0
  78. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlCrumbs.spec.js.snap +25 -0
  79. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +930 -0
  80. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHeader.spec.js.snap +127 -0
  81. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHistory.spec.js.snap +75 -0
  82. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlQueryModal.spec.js.snap +27 -0
  83. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlRow.spec.js.snap +113 -0
  84. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlScores.spec.js.snap +161 -0
  85. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlTabs.spec.js.snap +28 -0
  86. package/src/components/qualityControls/__tests__/__snapshots__/QualityControls.spec.js.snap +219 -0
  87. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsLabelResults.spec.js.snap +11 -0
  88. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsTable.spec.js.snap +121 -0
  89. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteria.spec.js.snap +186 -0
  90. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteriaView.spec.js.snap +76 -0
  91. package/src/components/qualityControls/__tests__/qualityByControlMode.spec.js +248 -0
  92. package/src/components/qualityControls/controlProperties/ErrorCount.js +56 -0
  93. package/src/components/qualityControls/controlProperties/Ratio.js +79 -0
  94. package/src/components/qualityControls/controlProperties/__tests__/ErrorCount.spec.js +82 -0
  95. package/src/components/qualityControls/controlProperties/__tests__/Ratio.spec.js +115 -0
  96. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/ErrorCount.spec.js.snap +62 -0
  97. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +143 -0
  98. package/src/components/qualityControls/qualityByControlMode.js +62 -0
  99. package/src/components/qualityControls/qualityControlScoresColumns.js +52 -0
  100. package/src/components/qualityControls/{resultCriterias → scoreCriterias}/Deviation.js +6 -6
  101. package/src/components/qualityControls/{resultCriterias/ErrorsNumber.js → scoreCriterias/ErrorCount.js} +7 -7
  102. package/src/components/qualityControls/{resultCriterias → scoreCriterias}/Percentage.js +6 -6
  103. package/src/components/qualityControls/scoreCriterias/__tests__/Deviation.spec.js +75 -0
  104. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +63 -0
  105. package/src/components/qualityControls/scoreCriterias/__tests__/Percentage.spec.js +61 -0
  106. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/Deviation.spec.js.snap +58 -0
  107. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/ErrorCount.spec.js.snap +58 -0
  108. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/Percentage.spec.js.snap +58 -0
  109. package/src/components/{executions/ExecutionGroupsHeader.js → scores/MyScoreGroups.js} +5 -3
  110. package/src/components/scores/QualityBar.js +73 -0
  111. package/src/components/scores/Score.js +32 -0
  112. package/src/components/scores/ScoreContext.js +3 -0
  113. package/src/components/scores/ScoreCrumbs.js +40 -0
  114. package/src/components/scores/ScoreDetails.js +67 -0
  115. package/src/components/scores/ScoreEvents.js +59 -0
  116. package/src/components/scores/ScoreGroup.js +83 -0
  117. package/src/components/scores/ScoreGroupBreadcrumbs.js +25 -0
  118. package/src/components/{qualityControls/ExecutionForm.js → scores/ScoreGroupForm.js} +11 -13
  119. package/src/components/scores/ScoreGroupLink.js +18 -0
  120. package/src/components/scores/ScoreGroupMessage.js +25 -0
  121. package/src/components/{qualityControls/ExecutionPopup.js → scores/ScoreGroupPopup.js} +13 -22
  122. package/src/components/scores/ScoreGroupsTable.js +113 -0
  123. package/src/components/scores/ScoreRoutes.js +32 -0
  124. package/src/components/{executions/ExecutionStatusDecorator.js → scores/ScoreStatusDecorator.js} +10 -8
  125. package/src/components/scores/ScoreTabs.js +32 -0
  126. package/src/components/scores/__tests__/MyScoreGroups.spec.js +31 -0
  127. package/src/components/scores/__tests__/QualityBar.spec.js +55 -0
  128. package/src/components/scores/__tests__/Score.spec.js +41 -0
  129. package/src/components/scores/__tests__/ScoreCrumbs.spec.js +39 -0
  130. package/src/components/scores/__tests__/ScoreDetails.spec.js +38 -0
  131. package/src/components/scores/__tests__/ScoreEvents.spec.js +24 -0
  132. package/src/components/scores/__tests__/ScoreGroup.spec.js +43 -0
  133. package/src/components/scores/__tests__/ScoreGroupBreadcrumbs.spec.js +16 -0
  134. package/src/components/scores/__tests__/ScoreGroupForm.spec.js +78 -0
  135. package/src/components/scores/__tests__/ScoreGroupLink.spec.js +16 -0
  136. package/src/components/scores/__tests__/ScoreGroupMessage.spec.js +20 -0
  137. package/src/components/scores/__tests__/ScoreGroupPopup.spec.js +59 -0
  138. package/src/components/scores/__tests__/ScoreGroupsTable.spec.js +40 -0
  139. package/src/components/scores/__tests__/ScoreStatusDecorator.spec.js +21 -0
  140. package/src/components/scores/__tests__/ScoreTabs.spec.js +27 -0
  141. package/src/components/scores/__tests__/__fixtures__/scoreHelper.js +182 -0
  142. package/src/components/scores/__tests__/__snapshots__/MyScoreGroups.spec.js.snap +154 -0
  143. package/src/components/scores/__tests__/__snapshots__/QualityBar.spec.js.snap +24 -0
  144. package/src/components/scores/__tests__/__snapshots__/Score.spec.js.snap +92 -0
  145. package/src/components/scores/__tests__/__snapshots__/ScoreCrumbs.spec.js.snap +39 -0
  146. package/src/components/scores/__tests__/__snapshots__/ScoreDetails.spec.js.snap +156 -0
  147. package/src/components/scores/__tests__/__snapshots__/ScoreEvents.spec.js.snap +167 -0
  148. package/src/components/scores/__tests__/__snapshots__/ScoreGroup.spec.js.snap +103 -0
  149. package/src/components/scores/__tests__/__snapshots__/ScoreGroupBreadcrumbs.spec.js.snap +29 -0
  150. package/src/components/scores/__tests__/__snapshots__/ScoreGroupForm.spec.js.snap +145 -0
  151. package/src/components/scores/__tests__/__snapshots__/ScoreGroupLink.spec.js.snap +15 -0
  152. package/src/components/scores/__tests__/__snapshots__/ScoreGroupMessage.spec.js.snap +43 -0
  153. package/src/components/scores/__tests__/__snapshots__/ScoreGroupPopup.spec.js.snap +11 -0
  154. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsTable.spec.js.snap +147 -0
  155. package/src/components/scores/__tests__/__snapshots__/ScoreStatusDecorator.spec.js.snap +71 -0
  156. package/src/components/scores/__tests__/__snapshots__/ScoreTabs.spec.js.snap +43 -0
  157. package/src/components/scores/index.js +15 -0
  158. package/src/hooks/useQualityControls.js +3 -9
  159. package/src/hooks/useScoreGroups.js +23 -0
  160. package/src/hooks/useScores.js +22 -0
  161. package/src/styles/Expression.less +16 -0
  162. package/src/styles/scores.less +63 -0
  163. package/src/components/executions/ExecutionGroupBreadcrumbs.js +0 -25
  164. package/src/components/executions/ExecutionGroupContent.js +0 -42
  165. package/src/components/executions/ExecutionGroupLink.js +0 -18
  166. package/src/components/executions/ExecutionGroupMessage.js +0 -27
  167. package/src/components/executions/ExecutionGroupsTable.js +0 -101
  168. package/src/components/executions/executionGroupDetail.js +0 -87
  169. package/src/components/qualityControls/ResultType.js +0 -57
@@ -30,14 +30,14 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
30
30
  class="required field"
31
31
  >
32
32
  <label>
33
- name
33
+ Name
34
34
  </label>
35
35
  <div
36
36
  class="ui action input"
37
37
  >
38
38
  <input
39
39
  autocomplete="off"
40
- placeholder="name"
40
+ placeholder="Name"
41
41
  required=""
42
42
  type="text"
43
43
  value=""
@@ -184,7 +184,7 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
184
184
  style="font-style: italic; font-size: 13px; padding: 9.5px 14px;"
185
185
  tabindex="0"
186
186
  >
187
- add_description
187
+ Add description
188
188
  </a>
189
189
  </div>
190
190
  </div>
@@ -193,7 +193,7 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
193
193
  <h5
194
194
  class="ui dividing header"
195
195
  >
196
- params
196
+ Parameters
197
197
  </h5>
198
198
  <div
199
199
  class="ui list"
@@ -206,14 +206,14 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
206
206
  <button
207
207
  class="ui button"
208
208
  >
209
- add_param
209
+ Add parameter
210
210
  </button>
211
211
  </div>
212
212
  </div>
213
213
  <h5
214
214
  class="ui dividing header"
215
215
  >
216
- output
216
+ Expression
217
217
  </h5>
218
218
  <div
219
219
  class="ui grid"
@@ -257,7 +257,7 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
257
257
  </code>
258
258
  </b>
259
259
  </small>
260
- constant
260
+ Constant
261
261
  </div>
262
262
  </div>
263
263
  <div
@@ -279,7 +279,7 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
279
279
  </code>
280
280
  </b>
281
281
  </small>
282
- function
282
+ Function
283
283
  </div>
284
284
  </div>
285
285
  </div>
@@ -316,7 +316,7 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
316
316
  class="divider text"
317
317
  role="alert"
318
318
  >
319
- function.placeholder
319
+ Select a function of type boolean
320
320
  </div>
321
321
  <i
322
322
  aria-hidden="true"
@@ -392,12 +392,12 @@ exports[`<FunctionEditor /> matches snapshot without onDelete 1`] = `
392
392
  disabled=""
393
393
  tabindex="-1"
394
394
  >
395
- save
395
+ Save
396
396
  </button>
397
397
  <button
398
398
  class="ui button"
399
399
  >
400
- cancel
400
+ Cancel
401
401
  </button>
402
402
  </div>
403
403
  </form>
@@ -436,14 +436,14 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
436
436
  class="required field"
437
437
  >
438
438
  <label>
439
- name
439
+ Name
440
440
  </label>
441
441
  <div
442
442
  class="ui action input"
443
443
  >
444
444
  <input
445
445
  autocomplete="off"
446
- placeholder="name"
446
+ placeholder="Name"
447
447
  required=""
448
448
  type="text"
449
449
  value=""
@@ -590,7 +590,7 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
590
590
  style="font-style: italic; font-size: 13px; padding: 9.5px 14px;"
591
591
  tabindex="0"
592
592
  >
593
- add_description
593
+ Add description
594
594
  </a>
595
595
  </div>
596
596
  </div>
@@ -599,7 +599,7 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
599
599
  <h5
600
600
  class="ui dividing header"
601
601
  >
602
- params
602
+ Parameters
603
603
  </h5>
604
604
  <div
605
605
  class="ui list"
@@ -612,14 +612,14 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
612
612
  <button
613
613
  class="ui button"
614
614
  >
615
- add_param
615
+ Add parameter
616
616
  </button>
617
617
  </div>
618
618
  </div>
619
619
  <h5
620
620
  class="ui dividing header"
621
621
  >
622
- output
622
+ Expression
623
623
  </h5>
624
624
  <div
625
625
  class="ui grid"
@@ -663,7 +663,7 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
663
663
  </code>
664
664
  </b>
665
665
  </small>
666
- constant
666
+ Constant
667
667
  </div>
668
668
  </div>
669
669
  <div
@@ -685,7 +685,7 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
685
685
  </code>
686
686
  </b>
687
687
  </small>
688
- function
688
+ Function
689
689
  </div>
690
690
  </div>
691
691
  </div>
@@ -722,7 +722,7 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
722
722
  class="divider text"
723
723
  role="alert"
724
724
  >
725
- function.placeholder
725
+ Select a function of type boolean
726
726
  </div>
727
727
  <i
728
728
  aria-hidden="true"
@@ -798,17 +798,17 @@ exports[`<FunctionEditor /> matches the latest snapshot 1`] = `
798
798
  disabled=""
799
799
  tabindex="-1"
800
800
  >
801
- save
801
+ Save
802
802
  </button>
803
803
  <button
804
804
  class="ui button"
805
805
  >
806
- cancel
806
+ Cancel
807
807
  </button>
808
808
  <button
809
809
  class="ui red button"
810
810
  >
811
- delete
811
+ Delete
812
812
  </button>
813
813
  </div>
814
814
  </form>
@@ -845,14 +845,14 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
845
845
  class="required field"
846
846
  >
847
847
  <label>
848
- name
848
+ Name
849
849
  </label>
850
850
  <div
851
851
  class="ui action input"
852
852
  >
853
853
  <input
854
854
  autocomplete="off"
855
- placeholder="name"
855
+ placeholder="Name"
856
856
  required=""
857
857
  type="text"
858
858
  value="name"
@@ -1008,7 +1008,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1008
1008
  <h5
1009
1009
  class="ui dividing header"
1010
1010
  >
1011
- params
1011
+ Parameters
1012
1012
  </h5>
1013
1013
  <div
1014
1014
  class="ui list"
@@ -1021,14 +1021,14 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1021
1021
  <button
1022
1022
  class="ui button"
1023
1023
  >
1024
- add_param
1024
+ Add parameter
1025
1025
  </button>
1026
1026
  </div>
1027
1027
  </div>
1028
1028
  <h5
1029
1029
  class="ui dividing header"
1030
1030
  >
1031
- output
1031
+ Expression
1032
1032
  </h5>
1033
1033
  <div
1034
1034
  class="ui grid"
@@ -1072,7 +1072,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1072
1072
  </code>
1073
1073
  </b>
1074
1074
  </small>
1075
- constant
1075
+ Constant
1076
1076
  </div>
1077
1077
  </div>
1078
1078
  <div
@@ -1094,7 +1094,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1094
1094
  </code>
1095
1095
  </b>
1096
1096
  </small>
1097
- function
1097
+ Function
1098
1098
  </div>
1099
1099
  </div>
1100
1100
  </div>
@@ -1111,7 +1111,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1111
1111
  class="divider text"
1112
1112
  role="alert"
1113
1113
  >
1114
- true
1114
+ True
1115
1115
  </div>
1116
1116
  <i
1117
1117
  aria-hidden="true"
@@ -1130,7 +1130,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1130
1130
  <span
1131
1131
  class="text"
1132
1132
  >
1133
- true
1133
+ True
1134
1134
  </span>
1135
1135
  </div>
1136
1136
  <div
@@ -1143,7 +1143,7 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1143
1143
  <span
1144
1144
  class="text"
1145
1145
  >
1146
- false
1146
+ False
1147
1147
  </span>
1148
1148
  </div>
1149
1149
  </div>
@@ -1160,17 +1160,17 @@ exports[`<FunctionEditor /> test cancel button with confirm 1`] = `
1160
1160
  <button
1161
1161
  class="ui primary button"
1162
1162
  >
1163
- save
1163
+ Save
1164
1164
  </button>
1165
1165
  <button
1166
1166
  class="ui button"
1167
1167
  >
1168
- cancel
1168
+ Cancel
1169
1169
  </button>
1170
1170
  <button
1171
1171
  class="ui red button"
1172
1172
  >
1173
- delete
1173
+ Delete
1174
1174
  </button>
1175
1175
  </div>
1176
1176
  </form>
@@ -1207,14 +1207,14 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1207
1207
  class="required field"
1208
1208
  >
1209
1209
  <label>
1210
- name
1210
+ Name
1211
1211
  </label>
1212
1212
  <div
1213
1213
  class="ui action input"
1214
1214
  >
1215
1215
  <input
1216
1216
  autocomplete="off"
1217
- placeholder="name"
1217
+ placeholder="Name"
1218
1218
  required=""
1219
1219
  type="text"
1220
1220
  value=""
@@ -1361,7 +1361,7 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1361
1361
  style="font-style: italic; font-size: 13px; padding: 9.5px 14px;"
1362
1362
  tabindex="0"
1363
1363
  >
1364
- add_description
1364
+ Add description
1365
1365
  </a>
1366
1366
  </div>
1367
1367
  </div>
@@ -1370,7 +1370,7 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1370
1370
  <h5
1371
1371
  class="ui dividing header"
1372
1372
  >
1373
- params
1373
+ Parameters
1374
1374
  </h5>
1375
1375
  <div
1376
1376
  class="ui list"
@@ -1383,14 +1383,14 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1383
1383
  <button
1384
1384
  class="ui button"
1385
1385
  >
1386
- add_param
1386
+ Add parameter
1387
1387
  </button>
1388
1388
  </div>
1389
1389
  </div>
1390
1390
  <h5
1391
1391
  class="ui dividing header"
1392
1392
  >
1393
- output
1393
+ Expression
1394
1394
  </h5>
1395
1395
  <div
1396
1396
  class="ui grid"
@@ -1434,7 +1434,7 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1434
1434
  </code>
1435
1435
  </b>
1436
1436
  </small>
1437
- constant
1437
+ Constant
1438
1438
  </div>
1439
1439
  </div>
1440
1440
  <div
@@ -1456,7 +1456,7 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1456
1456
  </code>
1457
1457
  </b>
1458
1458
  </small>
1459
- function
1459
+ Function
1460
1460
  </div>
1461
1461
  </div>
1462
1462
  </div>
@@ -1493,7 +1493,7 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1493
1493
  class="divider text"
1494
1494
  role="alert"
1495
1495
  >
1496
- function.placeholder
1496
+ Select a function of type boolean
1497
1497
  </div>
1498
1498
  <i
1499
1499
  aria-hidden="true"
@@ -1569,17 +1569,17 @@ exports[`<FunctionEditor /> test delete button 1`] = `
1569
1569
  disabled=""
1570
1570
  tabindex="-1"
1571
1571
  >
1572
- save
1572
+ Save
1573
1573
  </button>
1574
1574
  <button
1575
1575
  class="ui button"
1576
1576
  >
1577
- cancel
1577
+ Cancel
1578
1578
  </button>
1579
1579
  <button
1580
1580
  class="ui red button"
1581
1581
  >
1582
- delete
1582
+ Delete
1583
1583
  </button>
1584
1584
  </div>
1585
1585
  </form>
@@ -37,7 +37,7 @@ exports[`<FunctionParams /> matches the latest snapshot with param 1`] = `
37
37
  >
38
38
  <input
39
39
  autocomplete="off"
40
- placeholder="name"
40
+ placeholder="Name"
41
41
  type="text"
42
42
  value="param1"
43
43
  />
@@ -184,7 +184,7 @@ exports[`<FunctionParams /> matches the latest snapshot with param 1`] = `
184
184
  style="font-style: italic; font-size: 13px; padding: 9.5px 14px;"
185
185
  tabindex="0"
186
186
  >
187
- add_description
187
+ Add description
188
188
  </a>
189
189
  </div>
190
190
  </div>
@@ -200,7 +200,7 @@ exports[`<FunctionParams /> matches the latest snapshot with param 1`] = `
200
200
  <button
201
201
  class="ui button"
202
202
  >
203
- add_param
203
+ Add parameter
204
204
  </button>
205
205
  </div>
206
206
  </div>
@@ -220,7 +220,7 @@ exports[`<FunctionParams /> matches the latest snapshot without param 1`] = `
220
220
  <button
221
221
  class="ui button"
222
222
  >
223
- add_param
223
+ Add parameter
224
224
  </button>
225
225
  </div>
226
226
  </div>
@@ -15,11 +15,11 @@ exports[`<Functions /> matches the latest snapshot 1`] = `
15
15
  <div
16
16
  class="content"
17
17
  >
18
- functions.header
18
+ Quality Functions
19
19
  <div
20
20
  class="sub header"
21
21
  >
22
- functions.subheader
22
+ List and edit quality functions
23
23
  </div>
24
24
  </div>
25
25
  </h2>
@@ -32,7 +32,7 @@ exports[`<Functions /> matches the latest snapshot 1`] = `
32
32
  <button
33
33
  class="ui fluid button"
34
34
  >
35
- functions.action.new
35
+ New function
36
36
  </button>
37
37
  <div
38
38
  class="ui divided selection list"
@@ -76,7 +76,7 @@ exports[`<Functions /> matches the latest snapshot 1`] = `
76
76
  <div
77
77
  class="sub header"
78
78
  >
79
- functions.no_selection
79
+ No function selected
80
80
  </div>
81
81
  </h2>
82
82
  </div>
@@ -0,0 +1,43 @@
1
+ import React, { useContext } from "react";
2
+ import { useFormContext } from "react-hook-form";
3
+ import { Segment } from "semantic-ui-react";
4
+ import QxContext from "@truedat/qx/components/QxContext";
5
+ import ErrorCount from "./controlProperties/ErrorCount";
6
+ import Ratio from "./controlProperties/Ratio";
7
+
8
+ export default function ControlProperties() {
9
+ const { watch } = useFormContext();
10
+ const context = useContext(QxContext);
11
+
12
+ const { control_mode: controlMode, source_id: sourceId } = watch();
13
+
14
+ const componentForMode = {
15
+ error_count: <ErrorCount />,
16
+ deviation: <Ratio />,
17
+ percentage: <Ratio />,
18
+ };
19
+
20
+ return controlMode && sourceId ? (
21
+ <Segment>
22
+ <QxContext.Provider value={{ ...context, field: "control_properties" }}>
23
+ {componentForMode[controlMode]}
24
+ </QxContext.Provider>
25
+ </Segment>
26
+ ) : null;
27
+ }
28
+
29
+ export const defaultForMode = (controlMode) => {
30
+ switch (controlMode) {
31
+ case "error_count":
32
+ return { errors_resource: null };
33
+ default:
34
+ return {
35
+ resource: null,
36
+ validation: [
37
+ {
38
+ expressions: [{ shape: "function", value: { isCondition: true } }],
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ };
@@ -0,0 +1,109 @@
1
+ import _ from "lodash/fp";
2
+ import React from "react";
3
+ import PropTypes from "prop-types";
4
+ import { FormattedMessage } from "react-intl";
5
+ import { Header, Icon, Segment, List, Label } from "semantic-ui-react";
6
+ import ClauseViewer from "@truedat/qx/components/common/ClauseViewer";
7
+
8
+ export default function ControlPropertiesView({ qualityControl }) {
9
+ const { control_properties, control_mode } = qualityControl;
10
+ const controlPropertiesForMode = {
11
+ percentage: (
12
+ <ControlPropertiesRatio controlProperties={control_properties} />
13
+ ),
14
+ deviation: (
15
+ <ControlPropertiesRatio controlProperties={control_properties} />
16
+ ),
17
+ error_count: (
18
+ <ControlPropertiesErrorCount controlProperties={control_properties} />
19
+ ),
20
+ };
21
+
22
+ return (
23
+ <>
24
+ <Header as="h3">
25
+ <Icon name="puzzle piece" size="small" />
26
+ <Header.Content>
27
+ <FormattedMessage id="quality_control.form.control_properties" />
28
+ </Header.Content>
29
+ </Header>
30
+ <Segment>
31
+ {control_properties ? (
32
+ controlPropertiesForMode[control_mode]
33
+ ) : (
34
+ <FormattedMessage id="quality_control.control_properties.empty" />
35
+ )}
36
+ </Segment>
37
+ </>
38
+ );
39
+ }
40
+
41
+ const ControlPropertiesRatio = ({ controlProperties }) => (
42
+ <List>
43
+ <List.Item>
44
+ <List.Header>
45
+ <FormattedMessage id="quality_control.ratio.resource" />
46
+ </List.Header>
47
+ <List.Content>
48
+ {controlProperties.resource ? (
49
+ <List.Description>
50
+ <Label horizontal>
51
+ <FormattedMessage
52
+ id={`queryables.resource.selector.${controlProperties.resource?.type}`}
53
+ />
54
+ </Label>
55
+ <Label color="blue">
56
+ {_.prop("resource.embedded.name")(controlProperties)}
57
+ </Label>
58
+ </List.Description>
59
+ ) : (
60
+ <FormattedMessage id="quality_control.ratio.resource.empty" />
61
+ )}
62
+ </List.Content>
63
+ </List.Item>
64
+ <List.Item>
65
+ <List.Header>
66
+ <FormattedMessage id="quality_control.ratio.validation" />
67
+ </List.Header>
68
+ <List.Content>
69
+ {controlProperties.validation ? (
70
+ <List.Description>
71
+ <ClauseViewer clause={controlProperties.validation} />
72
+ </List.Description>
73
+ ) : (
74
+ <FormattedMessage id="quality_control.ratio.validation.empty" />
75
+ )}
76
+ </List.Content>
77
+ </List.Item>
78
+ </List>
79
+ );
80
+
81
+ const ControlPropertiesErrorCount = ({ controlProperties }) => (
82
+ <List>
83
+ <List.Item>
84
+ <List.Header>
85
+ <FormattedMessage id="quality_control.error_count.errors_resource" />
86
+ </List.Header>
87
+ <List.Content>
88
+ {controlProperties.errors_resource ? (
89
+ <List.Description>
90
+ <Label horizontal>
91
+ <FormattedMessage
92
+ id={`queryables.resource.selector.${controlProperties.errors_resource?.type}`}
93
+ />
94
+ </Label>
95
+ <Label color="blue">
96
+ {_.prop("errors_resource.embedded.name")(controlProperties)}
97
+ </Label>
98
+ </List.Description>
99
+ ) : (
100
+ <FormattedMessage id="quality_control.error_count.errors_resource.empty" />
101
+ )}
102
+ </List.Content>
103
+ </List.Item>
104
+ </List>
105
+ );
106
+
107
+ ControlPropertiesView.propTypes = {
108
+ qualityControl: PropTypes.object,
109
+ };
@@ -15,31 +15,15 @@ export default function EditQualityControl() {
15
15
  const history = useHistory();
16
16
 
17
17
  const { trigger, isMutating } = useQualityControlUpdateDraft(id);
18
- const { data, loading } = useQualityControl(id);
18
+ const { data, loading: qualityControlLoading } = useQualityControl(id);
19
19
  const qualityControl = data?.data;
20
+ const loading = qualityControlLoading || isMutating;
20
21
 
21
22
  const handleSubmit = (qualityControl) => {
22
- const resource = _.prop("resource")(qualityControl);
23
- const validation = _.prop("validation")(qualityControl);
24
23
  trigger({
25
24
  quality_control: {
26
25
  ...qualityControl,
27
26
  status: "draft",
28
- resource:
29
- !resource || _.conforms({ type: _.isNil })(resource)
30
- ? null
31
- : resource,
32
- validation:
33
- !validation ||
34
- _.isEqual([
35
- {
36
- expressions: [
37
- { shape: "function", value: { isCondition: true } },
38
- ],
39
- },
40
- ])(validation)
41
- ? []
42
- : validation,
43
27
  },
44
28
  }).then((data) => {
45
29
  const id = _.prop("data.data.id")(data);
@@ -47,14 +31,14 @@ export default function EditQualityControl() {
47
31
  });
48
32
  };
49
33
  return (
50
- <Segment floated="left" loading={isMutating || loading}>
34
+ <Segment floated="left" loading={loading}>
51
35
  <Container text>
52
36
  <Header as="h2">
53
37
  <Icon circular name="archive" />
54
38
  <Header.Content>
55
39
  <FormattedMessage id="quality_controls.new.header" />
56
40
  <Header.Subheader>
57
- <FormattedMessage id="quality_controls.new.subheader" />
41
+ <FormattedMessage id="quality_controls.edit.subheader" />
58
42
  </Header.Subheader>
59
43
  </Header.Content>
60
44
  </Header>
@@ -64,7 +48,7 @@ export default function EditQualityControl() {
64
48
  value={qualityControl}
65
49
  onSave={handleSubmit}
66
50
  onCancel={() => history.push(QUALITY_CONTROLS)}
67
- isSubmitting={false}
51
+ isSubmitting={loading}
68
52
  />
69
53
  ) : null}
70
54
  </Container>