@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,8 +1,9 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { use } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { useIntl } from "react-intl";
5
- import { Link, useHistory } from "react-router-dom";
5
+ import { Link } from "react-router";
6
+ import { useNavigate } from "react-router";
6
7
  import { Button, Container, Icon } from "semantic-ui-react";
7
8
  import { linkTo, QUALITY_CONTROLS } from "@truedat/core/routes";
8
9
  import { useAuthorized } from "@truedat/core/hooks";
@@ -82,10 +83,10 @@ ConfirmDeletionModal.propTypes = {
82
83
  };
83
84
 
84
85
  export default function QualityControlActions() {
85
- const history = useHistory();
86
+ const navigate = useNavigate();
86
87
  const { formatMessage } = useIntl();
87
88
  const authorized = useAuthorized();
88
- const { qualityControl, actions, mutate } = useContext(QxContext);
89
+ const { qualityControl, actions, mutate } = use(QxContext);
89
90
  const { trigger: updateQualityControlStatus, isMutating } =
90
91
  useQualityControlUpdateStatus(qualityControl.id);
91
92
 
@@ -107,7 +108,7 @@ export default function QualityControlActions() {
107
108
  }).then(() => mutate());
108
109
 
109
110
  const confirmQualityControlDeletion = () =>
110
- triggerDeleteQualityControl().then(() => history.push(QUALITY_CONTROLS));
111
+ triggerDeleteQualityControl().then(() => navigate(QUALITY_CONTROLS));
111
112
 
112
113
  const canExecute = _.includes("execute")(actions);
113
114
 
@@ -181,7 +182,7 @@ export default function QualityControlActions() {
181
182
  ids: [qualityControl.version_id],
182
183
  }).then(({ data }) => {
183
184
  const id = _.prop("data.id")(data);
184
- history.push(linkTo.SCORE_GROUP({ id }));
185
+ navigate(linkTo.SCORE_GROUP({ id }));
185
186
  });
186
187
  };
187
188
 
@@ -190,7 +191,6 @@ export default function QualityControlActions() {
190
191
  {authorized ? (
191
192
  <QualityControlQueryModal qualityControlId={qualityControl.id} />
192
193
  ) : null}
193
-
194
194
  {qualityControl.active &&
195
195
  canExecute &&
196
196
  !_.includes(qualityControl.status)(["deprecated", "versioned"]) ? (
@@ -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 { QUALITY_CONTROLS } from "@truedat/core/routes";
7
6
 
@@ -11,7 +10,6 @@ export default function QualityControlCrumbs({ qualityControl }) {
11
10
  <Breadcrumb.Section as={Link} to={QUALITY_CONTROLS} active={false}>
12
11
  <FormattedMessage id="quality_controls.header" />
13
12
  </Breadcrumb.Section>
14
-
15
13
  <Breadcrumb.Divider icon="right angle" />
16
14
  <Breadcrumb.Section active>{qualityControl.name}</Breadcrumb.Section>
17
15
  </Breadcrumb>
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState, Fragment } from "react";
2
+ import { lazy, useState, Fragment } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { useIntl } from "react-intl";
5
5
  import { Button, Container, Dropdown, Divider, Form } from "semantic-ui-react";
@@ -17,11 +17,11 @@ import ControlProperties, {
17
17
  defaultForMode as defaultControlPropertiesForMode,
18
18
  } from "./ControlProperties";
19
19
 
20
- const SelectableDynamicForm = React.lazy(() =>
21
- import("@truedat/df/components/SelectableDynamicForm")
20
+ const SelectableDynamicForm = lazy(
21
+ () => import("@truedat/df/components/SelectableDynamicForm")
22
22
  );
23
- const SourceSelector = React.lazy(() =>
24
- import("@truedat/cx/sources/components/SourceSelector")
23
+ const SourceSelector = lazy(
24
+ () => import("@truedat/cx/sources/components/SourceSelector")
25
25
  );
26
26
 
27
27
  export default function QualityControlEditor({
@@ -70,7 +70,7 @@ export default function QualityControlEditor({
70
70
  key: v,
71
71
  value: v,
72
72
  text: formatMessage({ id: `quality_control.control_mode.${v}` }),
73
- }))(["percentage", "deviation", "error_count"]);
73
+ }))(["percentage", "deviation", "error_count", "count"]);
74
74
 
75
75
  return (
76
76
  <Fragment>
@@ -124,7 +124,6 @@ export default function QualityControlEditor({
124
124
  </FieldLabel>
125
125
  )}
126
126
  />
127
-
128
127
  <Controller
129
128
  control={control}
130
129
  name="name"
@@ -168,7 +167,6 @@ export default function QualityControlEditor({
168
167
  />
169
168
  )}
170
169
  />
171
-
172
170
  <Controller
173
171
  control={control}
174
172
  name="source_id"
@@ -176,7 +174,6 @@ export default function QualityControlEditor({
176
174
  render={({ field: { onChange, value } }) => (
177
175
  <Form.Field required>
178
176
  <label>{formatMessage({ id: "dataViews.form.source" })}</label>
179
-
180
177
  <SourceSelector
181
178
  disabled={isModification}
182
179
  value={value + ""}
@@ -185,7 +182,6 @@ export default function QualityControlEditor({
185
182
  </Form.Field>
186
183
  )}
187
184
  />
188
-
189
185
  <Controller
190
186
  name={"control_mode"}
191
187
  control={control}
@@ -218,10 +214,8 @@ export default function QualityControlEditor({
218
214
  </Form.Field>
219
215
  )}
220
216
  />
221
-
222
217
  <ScoreCriteria />
223
218
  <ControlProperties />
224
-
225
219
  <Divider hidden />
226
220
  <Container textAlign="right">
227
221
  {onPublish && allowedToPublish ? (
@@ -1,8 +1,7 @@
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
- import { useParams } from "react-router-dom";
4
+ import { useParams, Outlet } from "react-router";
6
5
  import { Header, Icon, Segment, Grid, Label } from "semantic-ui-react";
7
6
  import { colorForStatus } from "@truedat/core/services/statusColor";
8
7
 
@@ -25,7 +24,7 @@ export default function QualityControlHeader({ children }) {
25
24
  : ["pause", "orange"];
26
25
 
27
26
  return (
28
- <QxContext.Provider value={context}>
27
+ <QxContext value={context}>
29
28
  <QualityControlCrumbs qualityControl={qualityControl} />
30
29
  <Segment loading={loading}>
31
30
  {!_.isEmpty(qualityControl) ? (
@@ -36,7 +35,6 @@ export default function QualityControlHeader({ children }) {
36
35
  <Icon circular name="archive" />
37
36
  <Header.Content>
38
37
  {qualityControl.name}
39
-
40
38
  <Header.Subheader>
41
39
  <div className="control-subheader">
42
40
  <Label className="no-margin">
@@ -73,11 +71,11 @@ export default function QualityControlHeader({ children }) {
73
71
  />
74
72
  </Label>
75
73
  <QualityControlTabs />
76
- {children}
74
+ {children ? children : <Outlet />}
77
75
  </>
78
76
  ) : null}
79
77
  </Segment>
80
- </QxContext.Provider>
78
+ </QxContext>
81
79
  );
82
80
  }
83
81
 
@@ -1,11 +1,11 @@
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 { Table } from "semantic-ui-react";
5
5
  import { useIntl } from "react-intl";
6
6
  import { columnDecorator } from "@truedat/core/services";
7
7
  import { Loading } from "@truedat/core/components";
8
- import { Link } from "react-router-dom";
8
+ import { Link } from "react-router";
9
9
  import { linkTo } from "@truedat/core/routes";
10
10
  import QxContext from "../QxContext";
11
11
 
@@ -13,7 +13,7 @@ const translateDecorator = (id) =>
13
13
  id ? <FormattedMessage id={id} defaultMessage={id} /> : null;
14
14
 
15
15
  export default function QualityControlsHistory() {
16
- const { qualityControl, loading } = useContext(QxContext);
16
+ const { qualityControl, loading } = use(QxContext);
17
17
  const versions = _.propOr([], "versions")(qualityControl);
18
18
 
19
19
  const columns = [
@@ -1,4 +1,4 @@
1
- import React, { useContext, useState } from "react";
1
+ import { use, useState } from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import { Button, Container, Form, Header } from "semantic-ui-react";
4
4
  import { useForm, Controller } from "react-hook-form";
@@ -9,7 +9,7 @@ import { useQualityControlUpdateMain } from "../../hooks/useQualityControls";
9
9
 
10
10
  export default function QualityControlManageDomain({ handleOpen }) {
11
11
  const { formatMessage } = useIntl();
12
- const { qualityControl, mutate } = useContext(QxContext);
12
+ const { qualityControl, mutate } = use(QxContext);
13
13
 
14
14
  const { trigger: updateMainQualityControl, isMutating: isMutatingMain } =
15
15
  useQualityControlUpdateMain(qualityControl.id);
@@ -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 {
4
4
  Accordion,
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { Route, Switch } from "react-router-dom";
1
+ import { Route, Routes } from "react-router";
3
2
  import {
4
3
  QUALITY_CONTROLS_DEPRECATED,
5
4
  QUALITY_CONTROLS_DRAFTS,
@@ -34,84 +33,58 @@ export default function QualityControlRoutes() {
34
33
  };
35
34
 
36
35
  return (
37
- <Switch>
36
+ <Routes>
38
37
  <Route
39
- exact
40
- path={QUALITY_CONTROLS_PUBLISHED}
41
- render={() => (
38
+ index
39
+ element={
42
40
  <SearchContextProvider
43
41
  {...searchProps}
44
42
  defaultFilters={{ status: "published" }}
45
43
  >
46
44
  <QualityControls />
47
45
  </SearchContextProvider>
48
- )}
46
+ }
49
47
  />
50
48
  <Route
51
- exact
52
- path={QUALITY_CONTROLS_DEPRECATED}
53
- render={() => (
49
+ // QUALITY_CONTROLS_DEPRECATED = "/qualityControls/deprecated";
50
+ path="deprecated"
51
+ element={
54
52
  <SearchContextProvider
55
53
  {...searchProps}
56
54
  defaultFilters={{ status: "deprecated" }}
57
55
  >
58
56
  <QualityControls />
59
57
  </SearchContextProvider>
60
- )}
58
+ }
61
59
  />
62
60
  <Route
63
- exact
64
- path={QUALITY_CONTROLS_DRAFTS}
65
- render={() => (
61
+ path="drafts"
62
+ element={
66
63
  <SearchContextProvider
67
64
  {...searchProps}
68
- defaultFilters={{
69
- status: ["draft", "pending_approval", "rejected"],
70
- }}
65
+ defaultFilters={{ status: "draft" }}
71
66
  >
72
67
  <QualityControls />
73
68
  </SearchContextProvider>
74
- )}
69
+ }
75
70
  />
71
+ <Route path="new" element={<NewQualityControl />} />
76
72
  <Route
77
- exact
78
- path={QUALITY_CONTROL_NEW}
79
- render={() => <NewQualityControl />}
73
+ path=":id/version/:version/edit"
74
+ element={<EditQualityControl />}
80
75
  />
81
76
  <Route
82
- exact
83
- path={QUALITY_CONTROL_EDIT}
84
- render={() => <EditQualityControl />}
77
+ path=":id/version/:version/new_draft"
78
+ element={<NewDraftQualityControl />}
85
79
  />
86
- <Route
87
- exact
88
- path={QUALITY_CONTROL_NEW_DRAFT}
89
- render={() => <NewDraftQualityControl />}
90
- />
91
- <Route
92
- path={QUALITY_CONTROL}
93
- render={() => (
94
- <QualityControlHeader>
95
- <Switch>
96
- <Route
97
- exact
98
- path={QUALITY_CONTROL}
99
- render={() => <QualityControl />}
100
- />
101
- <Route
102
- exact
103
- path={QUALITY_CONTROL_HISTORY}
104
- render={() => <QualityControlHistory />}
105
- />
106
- <Route
107
- exact
108
- path={QUALITY_CONTROL_SCORES}
109
- render={() => <QualityControlScores />}
110
- />
111
- </Switch>
112
- </QualityControlHeader>
113
- )}
114
- />
115
- </Switch>
80
+
81
+ <Route path=":id/version/:version" element={<QualityControlHeader />}>
82
+ <Route index element={<QualityControl />} />
83
+
84
+ <Route path="history" element={<QualityControlHistory />} />
85
+
86
+ <Route path="scores" element={<QualityControlScores />} />
87
+ </Route>
88
+ </Routes>
116
89
  );
117
90
  }
@@ -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 { Checkbox, Table } from "semantic-ui-react";
5
4
  import { columnDecorator } from "@truedat/core/services";
@@ -22,7 +21,6 @@ export default function QualityControlRow({
22
21
  />
23
22
  </Table.Cell>
24
23
  ) : null}
25
-
26
24
  {columns.map((column, i) => (
27
25
  <Table.Cell
28
26
  key={i}
@@ -1,7 +1,7 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useContext } from "react";
2
+ import { Fragment, useContext } from "react";
3
3
  import { useIntl } from "react-intl";
4
- import { useParams, Link } from "react-router-dom";
4
+ import { useParams, Link } from "react-router";
5
5
  import { Button, Table, Label, Message, Icon } from "semantic-ui-react";
6
6
  import { ConfirmModal, Loading } from "@truedat/core/components";
7
7
  import { columnDecorator } from "@truedat/core/services";
@@ -85,7 +85,7 @@ export default function QualityControlScores() {
85
85
  })}: ${version}`
86
86
  : null;
87
87
  return (
88
- <React.Fragment key={key}>
88
+ <Fragment key={key}>
89
89
  {tagLabel ? (
90
90
  <Table.Row>
91
91
  <Table.Cell>
@@ -125,13 +125,15 @@ export default function QualityControlScores() {
125
125
  content={formatMessage({
126
126
  id: "score.actions.delete.confirmation.content",
127
127
  })}
128
- onConfirm={() => deleteScore(score).then(mutate)}
128
+ onConfirm={() =>
129
+ deleteScore({ id: `${score.id}` }).then(mutate)
130
+ }
129
131
  />
130
132
  ) : null}
131
133
  </Table.Cell>
132
134
  ) : null}
133
135
  </Table.Row>
134
- </React.Fragment>
136
+ </Fragment>
135
137
  );
136
138
  })}
137
139
  </Table.Body>
@@ -1,6 +1,6 @@
1
- import React from "react";
2
1
  import { Menu } from "semantic-ui-react";
3
- import { Link, useLocation, useParams } from "react-router-dom";
2
+ import { Link, useLocation } from "react-router";
3
+ import { useParams } from "react-router";
4
4
  import { FormattedMessage } from "react-intl";
5
5
  import { linkTo } from "@truedat/core/routes";
6
6
 
@@ -1,7 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState } from "react";
2
+ import { useState } from "react";
3
3
  import { useIntl, FormattedMessage } from "react-intl";
4
- import { Link, useHistory } from "react-router-dom";
4
+ import { Link } from "react-router";
5
+ import { useNavigate } from "react-router";
5
6
  import {
6
7
  Button,
7
8
  Checkbox,
@@ -25,7 +26,7 @@ import QualityControlsLabelResults from "./QualityControlsLabelResults";
25
26
 
26
27
  export const QualityControls = () => {
27
28
  const { formatMessage } = useIntl();
28
- const history = useHistory();
29
+ const navigate = useNavigate();
29
30
 
30
31
  const { data } = useAuthorizedAction({
31
32
  action: "writeQualityControls",
@@ -132,7 +133,7 @@ export const QualityControls = () => {
132
133
 
133
134
  triggerCreateScoreGroup(body).then(({ data }) => {
134
135
  const id = _.prop("data.id")(data);
135
- history.push(linkTo.SCORE_GROUP({ id }));
136
+ navigate(linkTo.SCORE_GROUP({ id }));
136
137
  });
137
138
  };
138
139
 
@@ -195,10 +196,11 @@ export const QualityControls = () => {
195
196
  qualityControlsToExecute={_.size(selectedQualityControls)}
196
197
  />
197
198
  <Dimmer.Dimmable dimmed={loading}>
198
- <Dimmer active={loading} inverted>
199
- <Loader />
200
- </Dimmer>
201
-
199
+ {loading ? (
200
+ <Dimmer active inverted>
201
+ <Loader />
202
+ </Dimmer>
203
+ ) : null}
202
204
  <QualityControlsTable
203
205
  addAll={addAll}
204
206
  checkedAll={allChecked()}
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { FormattedMessage } from "react-intl";
4
3
  import { Label } from "semantic-ui-react";
@@ -22,7 +21,6 @@ export const QualityControlsLabelResults = ({
22
21
  />
23
22
  )}
24
23
  </Label>
25
-
26
24
  {!loading && executeQualityControlOn ? (
27
25
  <Label className="quality-controls-label-results">
28
26
  <FormattedMessage
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { Pagination } from "@truedat/core/components";
3
2
  import { useSearchContext } from "@truedat/core/search/SearchContext";
4
3
 
@@ -1,7 +1,6 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
- import { Link } from "react-router-dom";
3
+ import { Link } from "react-router";
5
4
  import { useIntl, FormattedMessage } from "react-intl";
6
5
  import { Checkbox, Table, Header, Icon } from "semantic-ui-react";
7
6
  import { linkTo } from "@truedat/core/routes";
@@ -1,29 +1,31 @@
1
- import React, { useContext } from "react";
1
+ import { use } from "react";
2
2
  import { useFormContext } from "react-hook-form";
3
3
  import { Segment } from "semantic-ui-react";
4
4
  import QxContext from "@truedat/qx/components/QxContext";
5
5
 
6
6
  import Deviation from "./scoreCriterias/Deviation";
7
7
  import ErrorCount from "./scoreCriterias/ErrorCount";
8
+ import Count from "./scoreCriterias/Count";
8
9
  import Percentage from "./scoreCriterias/Percentage";
9
10
 
10
11
  export default function ScoreCriteria() {
11
12
  const { watch } = useFormContext();
12
- const context = useContext(QxContext);
13
+ const context = use(QxContext);
13
14
 
14
15
  const controlMode = watch("control_mode");
15
16
 
16
17
  const scoreCriteriaForMode = {
17
18
  deviation: <Deviation />,
19
+ count: <Count />,
18
20
  error_count: <ErrorCount />,
19
21
  percentage: <Percentage />,
20
22
  };
21
23
 
22
24
  return controlMode ? (
23
25
  <Segment>
24
- <QxContext.Provider value={{ ...context, field: "score_criteria" }}>
26
+ <QxContext value={{ ...context, field: "score_criteria" }}>
25
27
  {scoreCriteriaForMode[controlMode]}
26
- </QxContext.Provider>
28
+ </QxContext>
27
29
  </Segment>
28
30
  ) : null;
29
31
  }
@@ -32,6 +34,8 @@ export const defaultForMode = (controlMode) => {
32
34
  switch (controlMode) {
33
35
  case "deviation":
34
36
  return { goal: null, maximum: null };
37
+ case "count":
38
+ return { goal: null, maximum: null };
35
39
  case "error_count":
36
40
  return { goal: null, maximum: null };
37
41
  case "percentage":
@@ -1,14 +1,35 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { FormattedMessage } from "react-intl";
4
3
  import { Header, Icon, Segment, List } from "semantic-ui-react";
5
4
 
6
5
  export default function ScoreCriteriaView({ qualityControl }) {
7
6
  const { score_criteria, control_mode } = qualityControl;
7
+
8
8
  const scoreCriteriaForMode = {
9
- percentage: <ScoreCriteriaPercentage scoreCriteria={score_criteria} />,
10
- deviation: <ScoreCriteriaDeviation scoreCriteria={score_criteria} />,
11
- error_count: <ScoreCriteriaErrorCount scoreCriteria={score_criteria} />,
9
+ percentage: (
10
+ <ScoreCriteriaContent
11
+ goal={`${score_criteria?.goal}%`}
12
+ threshold={`${score_criteria?.minimum}%`}
13
+ />
14
+ ),
15
+ deviation: (
16
+ <ScoreCriteriaContent
17
+ goal={`${score_criteria?.goal}%`}
18
+ threshold={`${score_criteria?.maximum}%`}
19
+ />
20
+ ),
21
+ error_count: (
22
+ <ScoreCriteriaContent
23
+ goal={score_criteria?.goal}
24
+ threshold={score_criteria?.maximum}
25
+ />
26
+ ),
27
+ count: (
28
+ <ScoreCriteriaContent
29
+ goal={score_criteria?.goal}
30
+ threshold={score_criteria?.maximum}
31
+ />
32
+ ),
12
33
  };
13
34
 
14
35
  return (
@@ -30,53 +51,11 @@ export default function ScoreCriteriaView({ qualityControl }) {
30
51
  );
31
52
  }
32
53
 
33
- const ScoreCriteriaPercentage = ({ scoreCriteria }) => (
34
- <List>
35
- <List.Item>
36
- <Icon name="circle" color="green" />
37
- <List.Content>
38
- <List.Header>
39
- <FormattedMessage id="quality.goal" />
40
- </List.Header>
41
- <List.Description>{scoreCriteria.goal}%</List.Description>
42
- </List.Content>
43
- </List.Item>
44
- <List.Item>
45
- <Icon name="circle" color="yellow" />
46
- <List.Content>
47
- <List.Header>
48
- <FormattedMessage id="quality.threshold" />
49
- </List.Header>
50
- <List.Description>{scoreCriteria.minimum}%</List.Description>
51
- </List.Content>
52
- </List.Item>
53
- </List>
54
- );
55
-
56
- const ScoreCriteriaDeviation = ({ scoreCriteria }) => (
57
- <List>
58
- <List.Item>
59
- <Icon name="circle" color="green" />
60
- <List.Content>
61
- <List.Header>
62
- <FormattedMessage id="quality.goal" />
63
- </List.Header>
64
- <List.Description>{scoreCriteria.goal}%</List.Description>
65
- </List.Content>
66
- </List.Item>
67
- <List.Item>
68
- <Icon name="circle" color="yellow" />
69
- <List.Content>
70
- <List.Header>
71
- <FormattedMessage id="quality.threshold" />
72
- </List.Header>
73
- <List.Description>{scoreCriteria.maximum}%</List.Description>
74
- </List.Content>
75
- </List.Item>
76
- </List>
77
- );
54
+ ScoreCriteriaView.propTypes = {
55
+ qualityControl: PropTypes.object,
56
+ };
78
57
 
79
- const ScoreCriteriaErrorCount = ({ scoreCriteria }) => (
58
+ const ScoreCriteriaContent = ({ goal, threshold }) => (
80
59
  <List>
81
60
  <List.Item>
82
61
  <Icon name="circle" color="green" />
@@ -84,7 +63,7 @@ const ScoreCriteriaErrorCount = ({ scoreCriteria }) => (
84
63
  <List.Header>
85
64
  <FormattedMessage id="quality.goal" />
86
65
  </List.Header>
87
- <List.Description>{scoreCriteria.goal}</List.Description>
66
+ <List.Description>{goal}</List.Description>
88
67
  </List.Content>
89
68
  </List.Item>
90
69
  <List.Item>
@@ -93,12 +72,13 @@ const ScoreCriteriaErrorCount = ({ scoreCriteria }) => (
93
72
  <List.Header>
94
73
  <FormattedMessage id="quality.threshold" />
95
74
  </List.Header>
96
- <List.Description>{scoreCriteria.maximum}</List.Description>
75
+ <List.Description>{threshold}</List.Description>
97
76
  </List.Content>
98
77
  </List.Item>
99
78
  </List>
100
79
  );
101
80
 
102
- ScoreCriteriaView.propTypes = {
103
- qualityControl: PropTypes.object,
81
+ ScoreCriteriaContent.propTypes = {
82
+ goal: PropTypes.string,
83
+ threshold: PropTypes.string,
104
84
  };