@truedat/qx 7.5.7 → 7.5.10

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 (240) hide show
  1. package/package.json +45 -64
  2. package/src/components/QxRoutes.js +38 -19
  3. package/src/components/__tests__/QxRoutes.spec.js +73 -0
  4. package/src/components/__tests__/__fixtures__/helper.js +6 -7
  5. package/src/components/__tests__/__snapshots__/QxRoutes.spec.js.snap +60 -0
  6. package/src/components/common/ClauseViewer.js +6 -6
  7. package/src/components/common/DescriptionInput.js +0 -1
  8. package/src/components/common/ResourceSelector.js +2 -3
  9. package/src/components/common/TestFormWrapper.js +2 -13
  10. package/src/components/common/TypeSelector.js +0 -1
  11. package/src/components/common/__tests__/DescriptionInput.spec.js +12 -21
  12. package/src/components/common/__tests__/ResourceSelector.spec.js +42 -87
  13. package/src/components/common/__tests__/TypeSelector.spec.js +0 -1
  14. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +32 -22
  15. package/src/components/common/expressions/Clauses.js +5 -6
  16. package/src/components/common/expressions/Condition.js +8 -9
  17. package/src/components/common/expressions/ConstantSelector.js +2 -2
  18. package/src/components/common/expressions/Expression.js +2 -2
  19. package/src/components/common/expressions/FieldSelector.js +2 -2
  20. package/src/components/common/expressions/FunctionArgs.js +5 -6
  21. package/src/components/common/expressions/FunctionSelector.js +2 -2
  22. package/src/components/common/expressions/ParamSelector.js +2 -2
  23. package/src/components/common/expressions/ShapeSelector.js +7 -16
  24. package/src/components/common/expressions/__tests__/Clauses.spec.js +10 -9
  25. package/src/components/common/expressions/__tests__/Condition.spec.js +6 -26
  26. package/src/components/common/expressions/__tests__/ConstantSelector.spec.js +14 -30
  27. package/src/components/common/expressions/__tests__/Expression.spec.js +36 -62
  28. package/src/components/common/expressions/__tests__/FieldSelector.spec.js +2 -7
  29. package/src/components/common/expressions/__tests__/FunctionArgs.spec.js +18 -44
  30. package/src/components/common/expressions/__tests__/FunctionSelector.spec.js +19 -27
  31. package/src/components/common/expressions/__tests__/ParamSelector.spec.js +28 -58
  32. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +34 -47
  33. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +6 -6
  34. package/src/components/common/expressions/__tests__/__snapshots__/ConstantSelector.spec.js.snap +6 -7
  35. package/src/components/common/expressions/__tests__/__snapshots__/Expression.spec.js.snap +20 -20
  36. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +8 -9
  37. package/src/components/common/expressions/__tests__/__snapshots__/FunctionSelector.spec.js.snap +670 -8
  38. package/src/components/common/expressions/__tests__/__snapshots__/ParamSelector.spec.js.snap +5 -5
  39. package/src/components/common/expressions/__tests__/__snapshots__/ShapeSelector.spec.js.snap +9 -9
  40. package/src/components/common/expressions/__tests__/useWatchParams.spec.js +1 -4
  41. package/src/components/common/expressions/constantInputs/AnySelector.js +5 -6
  42. package/src/components/common/expressions/constantInputs/BooleanSelector.js +2 -2
  43. package/src/components/common/expressions/constantInputs/DefaultSelector.js +2 -2
  44. package/src/components/common/expressions/constantInputs/__tests__/AnySelector.spec.js +16 -37
  45. package/src/components/common/expressions/constantInputs/__tests__/BooleanSelector.spec.js +14 -17
  46. package/src/components/common/expressions/constantInputs/__tests__/DefaultSelector.spec.js +12 -27
  47. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/AnySelector.spec.js.snap +11 -11
  48. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/DefaultSelector.spec.js.snap +0 -1
  49. package/src/components/common/resourceSelectors/DataStructureSelector.js +2 -2
  50. package/src/components/common/resourceSelectors/DataViewSelector.js +2 -2
  51. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +2 -2
  52. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +5 -29
  53. package/src/components/common/resourceSelectors/__tests__/DataViewSelector.spec.js +23 -25
  54. package/src/components/common/resourceSelectors/__tests__/ReferenceDatasetSelector.spec.js +21 -32
  55. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +3 -4
  56. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataViewSelector.spec.js.snap +1 -1
  57. package/src/components/common/resourceSelectors/__tests__/__snapshots__/ReferenceDatasetSelector.spec.js.snap +1 -1
  58. package/src/components/dataViews/DataViewEditor.js +5 -6
  59. package/src/components/dataViews/DataViewSelect.js +4 -5
  60. package/src/components/dataViews/DataViews.js +1 -2
  61. package/src/components/dataViews/Queryable.js +4 -4
  62. package/src/components/dataViews/Queryables.js +0 -1
  63. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +36 -111
  64. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +0 -1
  65. package/src/components/dataViews/__tests__/DataViews.spec.js +15 -16
  66. package/src/components/dataViews/__tests__/Queryable.spec.js +0 -1
  67. package/src/components/dataViews/__tests__/Queryables.spec.js +35 -74
  68. package/src/components/dataViews/__tests__/__snapshots__/DataViewEditor.spec.js.snap +61 -55
  69. package/src/components/dataViews/__tests__/__snapshots__/DataViews.spec.js.snap +5 -5
  70. package/src/components/dataViews/__tests__/__snapshots__/Queryables.spec.js.snap +59 -59
  71. package/src/components/dataViews/queryableProperties/From.js +4 -4
  72. package/src/components/dataViews/queryableProperties/GroupBy.js +6 -6
  73. package/src/components/dataViews/queryableProperties/Join.js +6 -6
  74. package/src/components/dataViews/queryableProperties/JoinTypeIcon.js +8 -9
  75. package/src/components/dataViews/queryableProperties/Select.js +4 -5
  76. package/src/components/dataViews/queryableProperties/SelectField.js +4 -4
  77. package/src/components/dataViews/queryableProperties/Where.js +4 -4
  78. package/src/components/dataViews/queryableProperties/__tests__/From.spec.js +0 -1
  79. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +16 -42
  80. package/src/components/dataViews/queryableProperties/__tests__/Join.spec.js +6 -29
  81. package/src/components/dataViews/queryableProperties/__tests__/JoinTypeIcon.spec.js +0 -1
  82. package/src/components/dataViews/queryableProperties/__tests__/Select.spec.js +26 -50
  83. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +19 -44
  84. package/src/components/dataViews/queryableProperties/__tests__/Where.spec.js +6 -17
  85. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +309 -9
  86. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Join.spec.js.snap +12 -12
  87. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Select.spec.js.snap +192 -18
  88. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/SelectField.spec.js.snap +6 -8
  89. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Where.spec.js.snap +2 -2
  90. package/src/components/functions/FunctionEditor.js +3 -5
  91. package/src/components/functions/FunctionParams.js +2 -3
  92. package/src/components/functions/Functions.js +3 -4
  93. package/src/components/functions/__tests__/FunctionEditor.spec.js +61 -57
  94. package/src/components/functions/__tests__/FunctionParams.spec.js +50 -47
  95. package/src/components/functions/__tests__/Functions.spec.js +5 -12
  96. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +11 -11
  97. package/src/components/functions/__tests__/__snapshots__/Functions.spec.js.snap +4 -5
  98. package/src/components/qualityControls/ControlProperties.js +8 -7
  99. package/src/components/qualityControls/ControlPropertiesView.js +5 -5
  100. package/src/components/qualityControls/EditQualityControl.js +5 -5
  101. package/src/components/qualityControls/IconPopup.js +0 -1
  102. package/src/components/qualityControls/NewDraftQualityControl.js +8 -6
  103. package/src/components/qualityControls/NewQualityControl.js +5 -6
  104. package/src/components/qualityControls/QualityBadge.js +29 -21
  105. package/src/components/qualityControls/QualityControl.js +4 -7
  106. package/src/components/qualityControls/QualityControlActions.js +7 -7
  107. package/src/components/qualityControls/QualityControlCrumbs.js +1 -3
  108. package/src/components/qualityControls/QualityControlEditor.js +6 -12
  109. package/src/components/qualityControls/QualityControlHeader.js +4 -6
  110. package/src/components/qualityControls/QualityControlHistory.js +3 -3
  111. package/src/components/qualityControls/QualityControlManageDomain.js +2 -2
  112. package/src/components/qualityControls/QualityControlQueryModal.js +1 -1
  113. package/src/components/qualityControls/QualityControlRoutes.js +27 -54
  114. package/src/components/qualityControls/QualityControlRow.js +0 -2
  115. package/src/components/qualityControls/QualityControlScores.js +7 -5
  116. package/src/components/qualityControls/QualityControlTabs.js +2 -2
  117. package/src/components/qualityControls/QualityControls.js +10 -8
  118. package/src/components/qualityControls/QualityControlsLabelResults.js +0 -2
  119. package/src/components/qualityControls/QualityControlsPagination.js +0 -1
  120. package/src/components/qualityControls/QualityControlsTable.js +1 -2
  121. package/src/components/qualityControls/ScoreCriteria.js +8 -4
  122. package/src/components/qualityControls/ScoreCriteriaView.js +34 -54
  123. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +16 -21
  124. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +5 -6
  125. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +28 -70
  126. package/src/components/qualityControls/__tests__/IconPopup.spec.js +10 -11
  127. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +33 -70
  128. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +88 -107
  129. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +55 -63
  130. package/src/components/qualityControls/__tests__/QualityControl.spec.js +19 -31
  131. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +49 -46
  132. package/src/components/qualityControls/__tests__/QualityControlCrumbs.spec.js +0 -1
  133. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +68 -107
  134. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +22 -25
  135. package/src/components/qualityControls/__tests__/QualityControlHistory.spec.js +6 -6
  136. package/src/components/qualityControls/__tests__/QualityControlManageDomain.spec.js +0 -1
  137. package/src/components/qualityControls/__tests__/QualityControlQueryModal.spec.js +13 -12
  138. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +4 -8
  139. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +23 -19
  140. package/src/components/qualityControls/__tests__/QualityControlTabs.spec.js +2 -3
  141. package/src/components/qualityControls/__tests__/QualityControls.spec.js +69 -53
  142. package/src/components/qualityControls/__tests__/QualityControlsLabelResults.spec.js +0 -1
  143. package/src/components/qualityControls/__tests__/QualityControlsPagination.spec.js +0 -1
  144. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +2 -3
  145. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +3 -4
  146. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +18 -3
  147. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +2 -2
  148. package/src/components/qualityControls/__tests__/__snapshots__/ControlProperties.spec.js.snap +1 -1
  149. package/src/components/qualityControls/__tests__/__snapshots__/ControlPropertiesView.spec.js.snap +53 -53
  150. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +45 -34
  151. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +44 -33
  152. package/src/components/qualityControls/__tests__/__snapshots__/NewQualityControl.spec.js.snap +30 -19
  153. package/src/components/qualityControls/__tests__/__snapshots__/QualityBadge.spec.js.snap +1 -1
  154. package/src/components/qualityControls/__tests__/__snapshots__/QualityControl.spec.js.snap +11 -19
  155. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlActions.spec.js.snap +5 -4
  156. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlCrumbs.spec.js.snap +1 -0
  157. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +28 -5
  158. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHeader.spec.js.snap +16 -11
  159. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHistory.spec.js.snap +2 -0
  160. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlRow.spec.js.snap +2 -1
  161. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlScores.spec.js.snap +3 -0
  162. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlTabs.spec.js.snap +3 -0
  163. package/src/components/qualityControls/__tests__/__snapshots__/QualityControls.spec.js.snap +11 -21
  164. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsTable.spec.js.snap +2 -0
  165. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteria.spec.js.snap +1 -1
  166. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteriaView.spec.js.snap +2 -4
  167. package/src/components/qualityControls/__tests__/qualityByControlMode.spec.js +16 -16
  168. package/src/components/qualityControls/controlProperties/{ErrorCount.js → Count.js} +7 -7
  169. package/src/components/qualityControls/controlProperties/Ratio.js +6 -8
  170. package/src/components/qualityControls/controlProperties/__tests__/{ErrorCount.spec.js → Count.spec.js} +9 -25
  171. package/src/components/qualityControls/controlProperties/__tests__/Ratio.spec.js +9 -27
  172. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/{ErrorCount.spec.js.snap → Count.spec.js.snap} +5 -5
  173. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +10 -10
  174. package/src/components/qualityControls/qualityByControlMode.js +39 -16
  175. package/src/components/qualityControls/qualityControlScoresColumns.js +1 -2
  176. package/src/components/qualityControls/scoreCriterias/Count.js +88 -0
  177. package/src/components/qualityControls/scoreCriterias/Deviation.js +2 -2
  178. package/src/components/qualityControls/scoreCriterias/ErrorCount.js +4 -4
  179. package/src/components/qualityControls/scoreCriterias/Percentage.js +2 -2
  180. package/src/components/qualityControls/scoreCriterias/__tests__/Count.spec.js +62 -0
  181. package/src/components/qualityControls/scoreCriterias/__tests__/Deviation.spec.js +0 -1
  182. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +39 -31
  183. package/src/components/qualityControls/scoreCriterias/__tests__/Percentage.spec.js +23 -19
  184. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/Count.spec.js.snap +58 -0
  185. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/ErrorCount.spec.js.snap +4 -7
  186. package/src/components/scores/MyScoreGroups.js +0 -1
  187. package/src/components/scores/QualityBar.js +24 -22
  188. package/src/components/scores/Score.js +4 -5
  189. package/src/components/scores/ScoreCrumbs.js +3 -5
  190. package/src/components/scores/ScoreDetails.js +2 -2
  191. package/src/components/scores/ScoreEvents.js +2 -2
  192. package/src/components/scores/ScoreGroup.js +5 -4
  193. package/src/components/scores/ScoreGroupBreadcrumbs.js +1 -2
  194. package/src/components/scores/ScoreGroupForm.js +2 -4
  195. package/src/components/scores/ScoreGroupLink.js +1 -2
  196. package/src/components/scores/ScoreGroupMessage.js +0 -1
  197. package/src/components/scores/ScoreGroupPopup.js +1 -1
  198. package/src/components/scores/ScoreGroupsRoutes.js +19 -0
  199. package/src/components/scores/ScoreGroupsTable.js +15 -48
  200. package/src/components/scores/ScoreRoutes.js +9 -24
  201. package/src/components/scores/ScoreStatusDecorator.js +1 -2
  202. package/src/components/scores/ScoreTabs.js +2 -2
  203. package/src/components/scores/__tests__/MyScoreGroups.spec.js +2 -3
  204. package/src/components/scores/__tests__/QualityBar.spec.js +19 -26
  205. package/src/components/scores/__tests__/Score.spec.js +2 -3
  206. package/src/components/scores/__tests__/ScoreCrumbs.spec.js +4 -5
  207. package/src/components/scores/__tests__/ScoreDetails.spec.js +4 -5
  208. package/src/components/scores/__tests__/ScoreEvents.spec.js +2 -3
  209. package/src/components/scores/__tests__/ScoreGroup.spec.js +15 -14
  210. package/src/components/scores/__tests__/ScoreGroupBreadcrumbs.spec.js +0 -1
  211. package/src/components/scores/__tests__/ScoreGroupForm.spec.js +18 -34
  212. package/src/components/scores/__tests__/ScoreGroupLink.spec.js +0 -1
  213. package/src/components/scores/__tests__/ScoreGroupMessage.spec.js +0 -1
  214. package/src/components/scores/__tests__/ScoreGroupPopup.spec.js +0 -2
  215. package/src/components/scores/__tests__/ScoreGroupsRoutes.spec.js +32 -0
  216. package/src/components/scores/__tests__/ScoreGroupsTable.spec.js +0 -1
  217. package/src/components/scores/__tests__/ScoreStatusDecorator.spec.js +0 -1
  218. package/src/components/scores/__tests__/ScoreTabs.spec.js +3 -4
  219. package/src/components/scores/__tests__/__snapshots__/MyScoreGroups.spec.js.snap +2 -0
  220. package/src/components/scores/__tests__/__snapshots__/Score.spec.js.snap +4 -0
  221. package/src/components/scores/__tests__/__snapshots__/ScoreCrumbs.spec.js.snap +2 -0
  222. package/src/components/scores/__tests__/__snapshots__/ScoreDetails.spec.js.snap +1 -0
  223. package/src/components/scores/__tests__/__snapshots__/ScoreGroup.spec.js.snap +39 -10
  224. package/src/components/scores/__tests__/__snapshots__/ScoreGroupBreadcrumbs.spec.js.snap +1 -0
  225. package/src/components/scores/__tests__/__snapshots__/ScoreGroupForm.spec.js.snap +10 -10
  226. package/src/components/scores/__tests__/__snapshots__/ScoreGroupLink.spec.js.snap +1 -0
  227. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsRoutes.spec.js.snap +19 -0
  228. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsTable.spec.js.snap +2 -0
  229. package/src/components/scores/__tests__/__snapshots__/ScoreStatusDecorator.spec.js.snap +5 -0
  230. package/src/components/scores/__tests__/__snapshots__/ScoreTabs.spec.js.snap +4 -0
  231. package/src/hooks/__tests__/useDataViews.spec.js +1 -1
  232. package/src/hooks/__tests__/useFunctions.spec.js +5 -5
  233. package/src/hooks/useDataViews.js +2 -2
  234. package/src/hooks/useExecutionGroups.js +1 -1
  235. package/src/hooks/useFunctions.js +4 -4
  236. package/src/hooks/useQualityControls.js +13 -7
  237. package/src/hooks/useScoreGroups.js +1 -1
  238. package/src/hooks/useScores.js +2 -2
  239. package/src/styles/scores.less +21 -21
  240. package/src/types.js +1 -4
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { Popup } from "semantic-ui-react";
4
4
  import { FormattedMessage, useIntl } from "react-intl";
5
5
  import Moment from "react-moment";
@@ -7,7 +7,7 @@ import qualityByControlMode from "../qualityControls/qualityByControlMode";
7
7
  import ScoreContext from "./ScoreContext";
8
8
 
9
9
  export default function QualityBar() {
10
- const { score } = useContext(ScoreContext);
10
+ const { score } = use(ScoreContext);
11
11
  const { formatMessage } = useIntl();
12
12
  const quality = qualityByControlMode(score);
13
13
 
@@ -17,28 +17,28 @@ export default function QualityBar() {
17
17
  text: formatMessage({ id: "score.status.failed" }),
18
18
  }
19
19
  : quality.isEmpty
20
- ? {
21
- color: "notExecutedDataset",
22
- text: formatMessage({ id: "quality.result.no.data" }),
23
- }
24
- : score.score_content.total_count == 0
25
- ? {
26
- color: "empyDataset",
27
- text: formatMessage(
28
- {
29
- id: "score.empty_dataset_date",
30
- },
31
- {
32
- date: (
33
- <Moment
34
- date={score.execution_timestamp}
35
- format="YYYY-MM-DD HH:mm"
36
- />
20
+ ? {
21
+ color: "notExecutedDataset",
22
+ text: formatMessage({ id: "quality.result.no.data" }),
23
+ }
24
+ : score.score_content.total_count == 0
25
+ ? {
26
+ color: "empyDataset",
27
+ text: formatMessage(
28
+ {
29
+ id: "score.empty_dataset_date",
30
+ },
31
+ {
32
+ date: (
33
+ <Moment
34
+ date={score.execution_timestamp}
35
+ format="YYYY-MM-DD HH:mm"
36
+ />
37
+ ),
38
+ }
37
39
  ),
38
40
  }
39
- ),
40
- }
41
- : quality;
41
+ : quality;
42
42
 
43
43
  const propsByColor = {
44
44
  red: {
@@ -70,7 +70,9 @@ export default function QualityBar() {
70
70
  tooltip: "failed",
71
71
  },
72
72
  };
73
+
73
74
  const summaryProps = propsByColor[color];
75
+
74
76
  return (
75
77
  <div className="quality-bar-wrapper">
76
78
  <div className="quality-bar">
@@ -1,6 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
- import { useParams } from "react-router-dom";
2
+ import { useParams, Outlet } from "react-router";
4
3
  import { FormattedMessage } from "react-intl";
5
4
  import { Segment, Header, Icon } from "semantic-ui-react";
6
5
  import { useScoreShow } from "../../hooks/useScores";
@@ -14,7 +13,7 @@ export default function Score({ children }) {
14
13
  const { data: score } = useScoreShow(id);
15
14
 
16
15
  return score ? (
17
- <ScoreContext.Provider value={{ score }}>
16
+ <ScoreContext value={{ score }}>
18
17
  <ScoreCrumbs />
19
18
  <Segment>
20
19
  <Header as="h2">
@@ -25,8 +24,8 @@ export default function Score({ children }) {
25
24
  </Header.Content>
26
25
  </Header>
27
26
  <ScoreTabs />
28
- {children}
27
+ {children ? children : <Outlet />}
29
28
  </Segment>
30
- </ScoreContext.Provider>
29
+ </ScoreContext>
31
30
  ) : null;
32
31
  }
@@ -1,14 +1,14 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { Breadcrumb } from "semantic-ui-react";
4
- import { Link } from "react-router-dom";
4
+ import { Link } from "react-router";
5
5
  import { FormattedMessage } from "react-intl";
6
6
  import { QUALITY_CONTROLS, linkTo } from "@truedat/core/routes";
7
7
  import { DateDecorator } from "@truedat/core/services/columnDecorators";
8
8
  import ScoreContext from "./ScoreContext";
9
9
 
10
10
  export default function ScoreCrumbs() {
11
- const { score } = useContext(ScoreContext);
11
+ const { score } = use(ScoreContext);
12
12
  const qualityControl = _.prop("quality_control")(score);
13
13
  const executionTimestamp = _.prop("execution_timestamp")(score);
14
14
 
@@ -17,9 +17,7 @@ export default function ScoreCrumbs() {
17
17
  <Breadcrumb.Section as={Link} to={QUALITY_CONTROLS} active={false}>
18
18
  <FormattedMessage id="quality_controls.header" />
19
19
  </Breadcrumb.Section>
20
-
21
20
  <Breadcrumb.Divider icon="right angle" />
22
-
23
21
  <Breadcrumb.Section
24
22
  as={Link}
25
23
  to={linkTo.QUALITY_CONTROL_SCORES({
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { FormattedMessage } from "react-intl";
4
4
  import { Header, Icon, List, Segment } from "semantic-ui-react";
5
5
  import { columnDecorator } from "@truedat/core/services";
@@ -7,7 +7,7 @@ import columns from "../qualityControls/qualityControlScoresColumns";
7
7
  import ScoreContext from "./ScoreContext";
8
8
 
9
9
  export default function ScoreDetails() {
10
- const { score } = useContext(ScoreContext);
10
+ const { score } = use(ScoreContext);
11
11
  const details = _.prop("details")(score);
12
12
 
13
13
  return (
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { useIntl, FormattedMessage } from "react-intl";
4
4
  import { Table } from "semantic-ui-react";
5
5
  import { columnDecorator } from "@truedat/core/services";
@@ -24,7 +24,7 @@ const columns = [
24
24
  },
25
25
  ];
26
26
  export default function ScoreEvents() {
27
- const { score } = useContext(ScoreContext);
27
+ const { score } = use(ScoreContext);
28
28
  const { formatMessage } = useIntl();
29
29
 
30
30
  const events = _.prop("events")(score);
@@ -1,7 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
2
+ import { lazy } from "react";
3
3
  import { useIntl } from "react-intl";
4
- import { useParams, Link } from "react-router-dom";
4
+ import { Link } from "react-router";
5
+ import { useParams } from "react-router";
5
6
  import { Table } from "semantic-ui-react";
6
7
  import { columnDecorator } from "@truedat/core/services";
7
8
  import { linkTo } from "@truedat/core/routes";
@@ -10,8 +11,8 @@ import ScoreGroupMessage from "./ScoreGroupMessage";
10
11
  import ScoreStatusDecorator from "./ScoreStatusDecorator";
11
12
  import ScoreGroupBreadcrumbs from "./ScoreGroupBreadcrumbs";
12
13
 
13
- const DynamicFormViewer = React.lazy(() =>
14
- import("@truedat/df/components/DynamicFormViewer")
14
+ const DynamicFormViewer = lazy(
15
+ () => import("@truedat/df/components/DynamicFormViewer")
15
16
  );
16
17
 
17
18
  const QualityControlLink = ({ id, name, version }) => (
@@ -1,7 +1,6 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Breadcrumb } from "semantic-ui-react";
4
- import { Link } from "react-router-dom";
3
+ import { Link } from "react-router";
5
4
  import { FormattedMessage } from "react-intl";
6
5
  import { DateTime } from "@truedat/core/components";
7
6
  import { MY_SCORE_GROUPS } from "@truedat/core/routes";
@@ -1,14 +1,12 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState } from "react";
2
+ import { lazy, useState } from "react";
3
3
  import { Button, Form, Header } from "semantic-ui-react";
4
4
  import PropTypes from "prop-types";
5
5
  import { useIntl } from "react-intl";
6
6
  import { TemplateSelector } from "@truedat/core/components";
7
7
  import { validateContent } from "@truedat/df/utils";
8
8
 
9
- const DynamicForm = React.lazy(() =>
10
- import("@truedat/df/components/DynamicForm")
11
- );
9
+ const DynamicForm = lazy(() => import("@truedat/df/components/DynamicForm"));
12
10
 
13
11
  export default function ScoreGroupForm({ count, onSubmit, onCancel }) {
14
12
  const { formatMessage } = useIntl();
@@ -1,6 +1,5 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
- import { Link } from "react-router-dom";
2
+ import { Link } from "react-router";
4
3
  import { DateTime } from "@truedat/core/components";
5
4
  import { linkTo } from "@truedat/core/routes";
6
5
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { useIntl } from "react-intl";
4
3
  import { Message } from "semantic-ui-react";
@@ -1,4 +1,4 @@
1
- import React, { useState } from "react";
1
+ import { useState } from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import { useIntl } from "react-intl";
4
4
  import { Button, Popup } from "semantic-ui-react";
@@ -0,0 +1,19 @@
1
+ import { Route, Routes } from "react-router";
2
+ import {
3
+ MY_SCORE_GROUPS,
4
+ SCORE_GROUP,
5
+ SCORE,
6
+ SCORE_EVENTS,
7
+ } from "@truedat/core/routes";
8
+
9
+ import { MyScoreGroups, ScoreGroup } from ".";
10
+ import "../../styles/scores.less";
11
+
12
+ export default function ScoreGroupsRoutes() {
13
+ return (
14
+ <Routes>
15
+ <Route index element={<MyScoreGroups />} />
16
+ <Route path=":id" element={<ScoreGroup />} />
17
+ </Routes>
18
+ );
19
+ }
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { FormattedMessage } from "react-intl";
5
4
  import { Table, Header, Icon, Label } from "semantic-ui-react";
@@ -11,13 +10,9 @@ import Pagination from "@truedat/core/search/Pagination";
11
10
  import ScoreGroupLink from "./ScoreGroupLink";
12
11
 
13
12
  export const HeaderRow = ({ columns }) => (
14
- <Table.Row>
15
- {columns.map(({ name: id, textAlign }, i) => (
16
- <Table.HeaderCell key={i} textAlign={textAlign}>
17
- <FormattedMessage id={id} defaultMessage={id} />
18
- </Table.HeaderCell>
19
- ))}
20
- </Table.Row>
13
+ <Table.Row>{columns.map(({ name: id, textAlign }, i) => (
14
+ <Table.HeaderCell key={i} textAlign={textAlign}><FormattedMessage id={id} defaultMessage={id} /></Table.HeaderCell>
15
+ ))}</Table.Row>
21
16
  );
22
17
 
23
18
  HeaderRow.propTypes = {
@@ -25,15 +20,13 @@ HeaderRow.propTypes = {
25
20
  };
26
21
 
27
22
  export const ScoreGroupRow = ({ columns, ...props }) => (
28
- <Table.Row>
29
- {columns.map((col, i) => (
23
+ <Table.Row>{columns.map((col, i) => (
30
24
  <Table.Cell
31
25
  key={i}
32
26
  textAlign={col.textAlign}
33
27
  content={columnDecorator(col)(props)}
34
28
  />
35
- ))}
36
- </Table.Row>
29
+ ))}</Table.Row>
37
30
  );
38
31
 
39
32
  ScoreGroupRow.propTypes = {
@@ -58,9 +51,7 @@ export default function ScoreGroupsTable() {
58
51
  TIMEOUT: "red",
59
52
  }[color]
60
53
  }
61
- >
62
- {field}
63
- </Label>
54
+ >{field}</Label>
64
55
  ) : null;
65
56
  };
66
57
 
@@ -82,37 +73,13 @@ export default function ScoreGroupsTable() {
82
73
  ...statusColumns,
83
74
  ];
84
75
 
85
- return (
86
- <>
87
- {loading ? <Loading /> : null}
88
-
89
- <>
90
- {!_.isEmpty(scoreGroups) ? (
91
- <>
92
- <Table collapsing striped celled>
93
- <Table.Header>
94
- <HeaderRow columns={columns} />
95
- </Table.Header>
96
- <Table.Body>
97
- {scoreGroups
98
- ? scoreGroups.map((props, key) => (
99
- <ScoreGroupRow key={key} columns={columns} {...props} />
100
- ))
101
- : null}
102
- </Table.Body>
103
- </Table>
104
- <Pagination />
105
- </>
106
- ) : null}
107
- {_.isEmpty(scoreGroups) ? (
108
- <Header as="h4">
109
- <Icon name="search" />
110
- <Header.Content>
111
- <FormattedMessage id="score_groups.search.results.empty" />
112
- </Header.Content>
113
- </Header>
114
- ) : null}
115
- </>
116
- </>
117
- );
76
+ return (<>{loading ? <Loading /> : null}<>{!_.isEmpty(scoreGroups) ? (
77
+ <><Table collapsing striped celled><Table.Header><HeaderRow columns={columns} /></Table.Header><Table.Body>{scoreGroups
78
+ ? scoreGroups.map((props, key) => (
79
+ <ScoreGroupRow key={key} columns={columns} {...props} />
80
+ ))
81
+ : null}</Table.Body></Table><Pagination /></>
82
+ ) : null}{_.isEmpty(scoreGroups) ? (
83
+ <Header as="h4"><Icon name="search" /><Header.Content><FormattedMessage id="score_groups.search.results.empty" /></Header.Content></Header>
84
+ ) : null}</></>);
118
85
  }
@@ -1,31 +1,16 @@
1
- import React from "react";
2
- import { Route, Switch } from "react-router-dom";
3
- import {
4
- MY_SCORE_GROUPS,
5
- SCORE_GROUP,
6
- SCORE,
7
- SCORE_EVENTS,
8
- } from "@truedat/core/routes";
1
+ import { Route, Routes } from "react-router";
2
+ import { SCORE, SCORE_EVENTS } from "@truedat/core/routes";
9
3
 
10
- import { MyScoreGroups, ScoreGroup, Score, ScoreDetails, ScoreEvents } from ".";
4
+ import { Score, ScoreDetails, ScoreEvents } from ".";
11
5
  import "../../styles/scores.less";
12
6
 
13
7
  export default function ScoreRoutes() {
14
8
  return (
15
- <Switch>
16
- <Route exact path={MY_SCORE_GROUPS} render={() => <MyScoreGroups />} />
17
- <Route exact path={SCORE_GROUP} render={() => <ScoreGroup />} />
18
- <Route
19
- path={SCORE}
20
- render={() => (
21
- <Score>
22
- <Switch>
23
- <Route exact path={SCORE} render={() => <ScoreDetails />} />
24
- <Route exact path={SCORE_EVENTS} render={() => <ScoreEvents />} />
25
- </Switch>
26
- </Score>
27
- )}
28
- />
29
- </Switch>
9
+ <Routes>
10
+ <Route path=":id" element={<Score />}>
11
+ <Route index element={<ScoreDetails />} />
12
+ <Route path="events" element={<ScoreEvents />} />
13
+ </Route>
14
+ </Routes>
30
15
  );
31
16
  }
@@ -1,8 +1,7 @@
1
1
  import _ from "lodash/fp";
2
2
  import { FormattedMessage } from "react-intl";
3
- import React from "react";
4
3
  import PropTypes from "prop-types";
5
- import { Link } from "react-router-dom";
4
+ import { Link } from "react-router";
6
5
  import { Icon } from "semantic-ui-react";
7
6
  import { linkTo } from "@truedat/core/routes";
8
7
 
@@ -1,7 +1,7 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { Menu } from "semantic-ui-react";
4
- import { Link, useLocation, useParams } from "react-router-dom";
3
+ import { Link, useLocation } from "react-router";
4
+ import { useParams } from "react-router";
5
5
  import { FormattedMessage } from "react-intl";
6
6
  import { linkTo } from "@truedat/core/routes";
7
7
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { waitFor } from "@testing-library/react";
4
3
  import { useAuthorized } from "@truedat/core/hooks";
@@ -51,7 +50,7 @@ describe("<MyScoreGroups />", () => {
51
50
  const { container } = render(<MyScoreGroups />, renderOpts);
52
51
 
53
52
  await waitFor(() => {
54
- expect(container.querySelector(".loading")).toBeNull();
53
+ expect(container.querySelector(".loading")).not.toBeInTheDocument();
55
54
  });
56
55
 
57
56
  expect(container).toMatchSnapshot();
@@ -63,7 +62,7 @@ describe("<MyScoreGroups />", () => {
63
62
  const { container, queryByText } = render(<MyScoreGroups />, renderOpts);
64
63
 
65
64
  await waitFor(() => {
66
- expect(container.querySelector(".loading")).toBeNull();
65
+ expect(container.querySelector(".loading")).not.toBeInTheDocument();
67
66
  });
68
67
 
69
68
  expect(queryByText("Filters")).not.toBeInTheDocument();
@@ -1,55 +1,48 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
3
- import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
1
+ import { render, waitForLoad } from "@truedat/test/render";
4
2
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
5
3
  import ScoreContext from "../ScoreContext";
6
4
  import QualityBar from "../QualityBar";
7
5
 
8
- const renderOpts = { messages };
9
-
10
6
  describe("<QualityBar />", () => {
11
- it("matches the latest snapshot", () => {
7
+ it("matches the latest snapshot", async () => {
12
8
  const context = {
13
9
  score: scoreData(),
14
10
  };
15
11
 
16
- const { container } = render(
17
- <ScoreContext.Provider value={context}>
12
+ const rendered = render(
13
+ <ScoreContext value={context}>
18
14
  <QualityBar />
19
- </ScoreContext.Provider>,
20
- renderOpts
15
+ </ScoreContext>
21
16
  );
22
-
23
- expect(container).toMatchSnapshot();
17
+ await waitForLoad(rendered);
18
+ expect(rendered.container).toMatchSnapshot();
24
19
  });
25
20
 
26
- it("when score is failed", () => {
21
+ it("when score is failed", async () => {
27
22
  const context = {
28
23
  score: scoreData({ status: "FAILED" }),
29
24
  };
30
25
 
31
- const { queryByText } = render(
32
- <ScoreContext.Provider value={context}>
26
+ const rendered = render(
27
+ <ScoreContext value={context}>
33
28
  <QualityBar />
34
- </ScoreContext.Provider>,
35
- renderOpts
29
+ </ScoreContext>
36
30
  );
37
-
38
- expect(queryByText(/Failed/i)).toBeInTheDocument();
31
+ await waitForLoad(rendered);
32
+ expect(rendered.queryByText(/failed/i)).toBeInTheDocument();
39
33
  });
40
34
 
41
- it("when score is empty", () => {
35
+ it("when score is empty", async () => {
42
36
  const context = {
43
37
  score: scoreData({ score_content: undefined }),
44
38
  };
45
39
 
46
- const { queryByText } = render(
47
- <ScoreContext.Provider value={context}>
40
+ const rendered = render(
41
+ <ScoreContext value={context}>
48
42
  <QualityBar />
49
- </ScoreContext.Provider>,
50
- renderOpts
43
+ </ScoreContext>
51
44
  );
52
-
53
- expect(queryByText(/quality.result.no.data/i)).toBeInTheDocument();
45
+ await waitForLoad(rendered);
46
+ expect(rendered.queryByText(/quality.result.no.data/i)).toBeInTheDocument();
54
47
  });
55
48
  });
@@ -1,12 +1,11 @@
1
1
  import _ from "lodash/fp";
2
- import React, { version } from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
5
4
  import { useScoreShow } from "@truedat/qx/hooks/useScores";
6
5
  import Score from "../Score";
7
6
 
8
- jest.mock("react-router-dom", () => ({
9
- ...jest.requireActual("react-router-dom"),
7
+ jest.mock("react-router", () => ({
8
+ ...jest.requireActual("react-router"),
10
9
  useParams: () => ({ id: "8", version: "1" }),
11
10
  }));
12
11
 
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
5
4
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -14,9 +13,9 @@ describe("<ScoreCrumbs />", () => {
14
13
  score: scoreData(),
15
14
  };
16
15
  const { container } = render(
17
- <ScoreContext.Provider value={context}>
16
+ <ScoreContext value={context}>
18
17
  <ScoreCrumbs />
19
- </ScoreContext.Provider>,
18
+ </ScoreContext>,
20
19
  renderOpts
21
20
  );
22
21
 
@@ -28,9 +27,9 @@ describe("<ScoreCrumbs />", () => {
28
27
  score: scoreData({ execution_timestamp: undefined }),
29
28
  };
30
29
  const { queryByText } = render(
31
- <ScoreContext.Provider value={context}>
30
+ <ScoreContext value={context}>
32
31
  <ScoreCrumbs />
33
- </ScoreContext.Provider>,
32
+ </ScoreContext>,
34
33
  renderOpts
35
34
  );
36
35
 
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
5
4
  import ScoreContext from "../ScoreContext";
@@ -14,9 +13,9 @@ describe("<ScoreDetails />", () => {
14
13
  score: scoreData(),
15
14
  };
16
15
  const { container } = render(
17
- <ScoreContext.Provider value={context}>
16
+ <ScoreContext value={context}>
18
17
  <ScoreDetails />
19
- </ScoreContext.Provider>,
18
+ </ScoreContext>,
20
19
  renderOpts
21
20
  );
22
21
 
@@ -28,9 +27,9 @@ describe("<ScoreDetails />", () => {
28
27
  score: scoreData({ details: undefined }),
29
28
  };
30
29
  const { queryByText } = render(
31
- <ScoreContext.Provider value={context}>
30
+ <ScoreContext value={context}>
32
31
  <ScoreDetails />
33
- </ScoreContext.Provider>,
32
+ </ScoreContext>,
34
33
  renderOpts
35
34
  );
36
35
  expect(queryByText(/Details/i)).not.toBeInTheDocument();
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -13,9 +12,9 @@ describe("<ScoreEvents />", () => {
13
12
  score: scoreData(),
14
13
  };
15
14
  const { container } = render(
16
- <ScoreContext.Provider value={context}>
15
+ <ScoreContext value={context}>
17
16
  <ScoreEvents />
18
- </ScoreContext.Provider>,
17
+ </ScoreContext>,
19
18
  renderOpts
20
19
  );
21
20