@truedat/qx 7.0.8 → 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
@@ -0,0 +1,147 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<ScoreGroupsTable /> matches the latest snapshot 1`] = `
4
+ <div>
5
+ <table
6
+ class="ui celled collapsing striped table"
7
+ >
8
+ <thead
9
+ class=""
10
+ >
11
+ <tr
12
+ class=""
13
+ >
14
+ <th
15
+ class=""
16
+ >
17
+ Created
18
+ </th>
19
+ <th
20
+ class="center aligned"
21
+ >
22
+ Pending
23
+ </th>
24
+ <th
25
+ class="center aligned"
26
+ >
27
+ Queued
28
+ </th>
29
+ <th
30
+ class="center aligned"
31
+ >
32
+ Succeeded
33
+ </th>
34
+ <th
35
+ class="center aligned"
36
+ >
37
+ Failed
38
+ </th>
39
+ </tr>
40
+ </thead>
41
+ <tbody
42
+ class=""
43
+ >
44
+ <tr
45
+ class=""
46
+ >
47
+ <td
48
+ class=""
49
+ >
50
+ <a
51
+ href="/scoreGroups/36"
52
+ >
53
+ <time
54
+ datetime="1737381058260"
55
+ >
56
+ 2025-01-20 13:50
57
+ </time>
58
+ </a>
59
+ </td>
60
+ <td
61
+ class="center aligned"
62
+ >
63
+ <div
64
+ class="ui yellow circular label"
65
+ >
66
+ 1
67
+ </div>
68
+ </td>
69
+ <td
70
+ class="center aligned"
71
+ >
72
+ <div
73
+ class="ui yellow circular label"
74
+ >
75
+ 2
76
+ </div>
77
+ </td>
78
+ <td
79
+ class="center aligned"
80
+ />
81
+ <td
82
+ class="center aligned"
83
+ />
84
+ </tr>
85
+ <tr
86
+ class=""
87
+ >
88
+ <td
89
+ class=""
90
+ >
91
+ <a
92
+ href="/scoreGroups/36"
93
+ >
94
+ <time
95
+ datetime="1737381058260"
96
+ >
97
+ 2025-01-20 13:50
98
+ </time>
99
+ </a>
100
+ </td>
101
+ <td
102
+ class="center aligned"
103
+ />
104
+ <td
105
+ class="center aligned"
106
+ />
107
+ <td
108
+ class="center aligned"
109
+ >
110
+ <div
111
+ class="ui green circular label"
112
+ >
113
+ 1
114
+ </div>
115
+ </td>
116
+ <td
117
+ class="center aligned"
118
+ >
119
+ <div
120
+ class="ui red circular label"
121
+ >
122
+ 3
123
+ </div>
124
+ </td>
125
+ </tr>
126
+ </tbody>
127
+ </table>
128
+ </div>
129
+ `;
130
+
131
+ exports[`<ScoreGroupsTable /> matches the latest snapshot for empty list 1`] = `
132
+ <div>
133
+ <h4
134
+ class="ui header"
135
+ >
136
+ <i
137
+ aria-hidden="true"
138
+ class="search icon"
139
+ />
140
+ <div
141
+ class="content"
142
+ >
143
+ No execution groups found
144
+ </div>
145
+ </h4>
146
+ </div>
147
+ `;
@@ -0,0 +1,71 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<ScoreStatusDecorator /> matches the latest snapshot for status FAILED 1`] = `
4
+ <div>
5
+ <a
6
+ href="/scores/8"
7
+ >
8
+ <i
9
+ aria-hidden="true"
10
+ class="red warning circle large icon"
11
+ />
12
+ Failed
13
+ </a>
14
+ </div>
15
+ `;
16
+
17
+ exports[`<ScoreStatusDecorator /> matches the latest snapshot for status PENDING 1`] = `
18
+ <div>
19
+ <a
20
+ href="/scores/8"
21
+ >
22
+ <i
23
+ aria-hidden="true"
24
+ class="grey info circle large icon"
25
+ />
26
+ Pending
27
+ </a>
28
+ </div>
29
+ `;
30
+
31
+ exports[`<ScoreStatusDecorator /> matches the latest snapshot for status QUEUED 1`] = `
32
+ <div>
33
+ <a
34
+ href="/scores/8"
35
+ >
36
+ <i
37
+ aria-hidden="true"
38
+ class="green play circle outline large icon"
39
+ />
40
+ Queued
41
+ </a>
42
+ </div>
43
+ `;
44
+
45
+ exports[`<ScoreStatusDecorator /> matches the latest snapshot for status STARTED 1`] = `
46
+ <div>
47
+ <a
48
+ href="/scores/8"
49
+ >
50
+ <i
51
+ aria-hidden="true"
52
+ class="green play circle outline large icon"
53
+ />
54
+ Started
55
+ </a>
56
+ </div>
57
+ `;
58
+
59
+ exports[`<ScoreStatusDecorator /> matches the latest snapshot for status SUCCEEDED 1`] = `
60
+ <div>
61
+ <a
62
+ href="/scores/8"
63
+ >
64
+ <i
65
+ aria-hidden="true"
66
+ class="green check circle outline large icon"
67
+ />
68
+ Succeeded
69
+ </a>
70
+ </div>
71
+ `;
@@ -0,0 +1,43 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<ScoreTabs /> matches the latest snapshot for details 1`] = `
4
+ <div>
5
+ <div
6
+ class="ui pointing secondary top attached tabular menu"
7
+ >
8
+ <a
9
+ class="active item"
10
+ href="/scores/15"
11
+ >
12
+ Details
13
+ </a>
14
+ <a
15
+ class="item"
16
+ href="/scores/15/events"
17
+ >
18
+ Events
19
+ </a>
20
+ </div>
21
+ </div>
22
+ `;
23
+
24
+ exports[`<ScoreTabs /> matches the latest snapshot for events 1`] = `
25
+ <div>
26
+ <div
27
+ class="ui pointing secondary top attached tabular menu"
28
+ >
29
+ <a
30
+ class="item"
31
+ href="/scores/15"
32
+ >
33
+ Details
34
+ </a>
35
+ <a
36
+ class="active item"
37
+ href="/scores/15/events"
38
+ >
39
+ Events
40
+ </a>
41
+ </div>
42
+ </div>
43
+ `;
@@ -0,0 +1,15 @@
1
+ import Score from "./Score";
2
+ import ScoreDetails from "./ScoreDetails";
3
+ import ScoreEvents from "./ScoreEvents";
4
+ import ScoreGroup from "./ScoreGroup";
5
+ import ScoreGroupPopup from "./ScoreGroupPopup";
6
+ import MyScoreGroups from "./MyScoreGroups";
7
+
8
+ export {
9
+ Score,
10
+ ScoreDetails,
11
+ ScoreEvents,
12
+ ScoreGroup,
13
+ ScoreGroupPopup,
14
+ MyScoreGroups,
15
+ };
@@ -10,20 +10,14 @@ import {
10
10
  import {
11
11
  API_QUALITY_CONTROLS,
12
12
  API_QUALITY_CONTROL,
13
- // API_QUALITY_CONTROL_VERSIONS,
14
- // API_QUALITY_CONTROL_PUBLISHED,
15
13
  API_QUALITY_CONTROL_DRAFT,
16
14
  API_QUALITY_CONTROL_STATUS,
17
- API_QUALITY_CONTROL_DOMAINS,
15
+ API_QUALITY_CONTROL_MAIN,
18
16
  API_QUALITY_CONTROL_SEARCH,
19
17
  API_QUALITY_CONTROL_FILTERS,
20
18
  API_QUALITY_CONTROL_QUERIES,
21
19
  } from "../api";
22
20
 
23
- export const useQualityControls = () => {
24
- const { data, error, mutate } = useSWR(API_QUALITY_CONTROLS, apiJson);
25
- return { data: data?.data, error, loading: !error && !data, mutate };
26
- };
27
21
  export const useQualityControl = (id) => {
28
22
  const url = compile(API_QUALITY_CONTROL)({ id });
29
23
  const { data, error, mutate } = useSWR(url, apiJson);
@@ -51,8 +45,8 @@ export const useQualityControlUpdateStatus = (id) => {
51
45
  return useSWRMutations(url, (url, { arg }) => apiJsonPatch(url, arg));
52
46
  };
53
47
 
54
- export const useQualityControlUpdateDomains = (id) => {
55
- const url = compile(API_QUALITY_CONTROL_DOMAINS)({ id });
48
+ export const useQualityControlUpdateMain = (id) => {
49
+ const url = compile(API_QUALITY_CONTROL_MAIN)({ id });
56
50
  return useSWRMutations(url, (url, { arg }) => apiJsonPatch(url, arg));
57
51
  };
58
52
 
@@ -0,0 +1,23 @@
1
+ import { compile } from "path-to-regexp";
2
+ import useSWR from "swr";
3
+ import useSWRMutations from "swr/mutation";
4
+ import { apiJson, apiJsonPost } from "@truedat/core/services/api";
5
+ import { API_SCORE_GROUPS, API_SCORE_GROUP } from "../api";
6
+
7
+ export const useScoreGroupCreate = () => {
8
+ return useSWRMutations(API_SCORE_GROUPS, (url, { arg }) =>
9
+ apiJsonPost(url, arg)
10
+ );
11
+ };
12
+
13
+ export const useScoreGroupShow = (id) => {
14
+ const url = compile(API_SCORE_GROUP)({ id });
15
+ const { data, error, mutate } = useSWR(url, apiJson);
16
+ return { data: data?.data, error, loading: !error && !data, mutate };
17
+ };
18
+
19
+ export const useMyScoreGroupsIndex = () => {
20
+ const url = `${API_SCORE_GROUPS}?created_by=me`;
21
+ const { data, error, mutate } = useSWR(url, apiJson);
22
+ return { data: data?.data, error, loading: !error && !data, mutate };
23
+ };
@@ -0,0 +1,22 @@
1
+ import { compile } from "path-to-regexp";
2
+ import useSWR from "swr";
3
+ import useSWRMutations from "swr/mutation";
4
+ import { apiJson, apiJsonDelete } from "@truedat/core/services/api";
5
+ import { API_SCORE, API_QUALITY_CONTROL_SCORES } from "../api";
6
+
7
+ export const useQualityControlScores = (id) => {
8
+ const url = compile(API_QUALITY_CONTROL_SCORES)({ id });
9
+ const { data, error, mutate } = useSWR(url, apiJson);
10
+ return { data: data?.data, error, loading: !error && !data, mutate };
11
+ };
12
+
13
+ export const useScoreShow = (id) => {
14
+ const url = compile(API_SCORE)({ id });
15
+ const { data, error, mutate } = useSWR(url, apiJson);
16
+ return { data: data?.data?.data, error, loading: !error && !data, mutate };
17
+ };
18
+ export const useScoreDelete = () => {
19
+ return useSWRMutations(API_SCORE, (_url, { arg }) =>
20
+ apiJsonDelete(compile(API_SCORE)(arg))
21
+ );
22
+ };
@@ -296,4 +296,20 @@ ul.function-tree {
296
296
  display: flex;
297
297
  justify-content: space-between;
298
298
  align-items: center;
299
+ }
300
+
301
+ .flex-gapped {
302
+ display: flex;
303
+ gap: 4px;
304
+ }
305
+
306
+ .control-subheader {
307
+ padding-top: 6px;
308
+ display: flex;
309
+ gap: 8px;
310
+ align-items: center;
311
+ }
312
+
313
+ .no-margin {
314
+ margin: 0px;
299
315
  }
@@ -0,0 +1,63 @@
1
+ .quality-bar-wrapper {
2
+ box-sizing: border-box;
3
+ min-width: 200px;
4
+ }
5
+
6
+ .quality-bar:hover {
7
+ height: 18px;
8
+ border-radius: 9px;
9
+ margin: 0px auto;
10
+ > span > span {
11
+ color: white;
12
+ }
13
+ }
14
+
15
+ .quality-bar {
16
+ display: flex;
17
+ height: 8px;
18
+ width: 100%;
19
+ border-radius: 4px;
20
+ margin: 5px auto;
21
+ transition: all 100ms ease-in-out;
22
+ overflow: hidden;
23
+
24
+ span:first-child {
25
+ margin-left: 0px;
26
+ }
27
+
28
+ span:last-child {
29
+ margin-right: 0px;
30
+ }
31
+
32
+ span {
33
+ margin: 1px;
34
+ cursor: default;
35
+ color: transparent;
36
+ text-align: center;
37
+ font-size: 10px;
38
+ line-height: 15px;
39
+ white-space: pre;
40
+ }
41
+ }
42
+
43
+ .quality-bar {
44
+ @import "~semantic-ui-less/definitions/globals/site";
45
+ .over-goal-color {
46
+ background-color: @overGoalRuleColor;
47
+ }
48
+ .under-goal-color {
49
+ background-color: @underGoalRuleColor;
50
+ }
51
+ .under-minimum-color {
52
+ background-color: @underMinimumRuleColor;
53
+ }
54
+ .not-executed-color {
55
+ background-color: @notExecutedRuleColor;
56
+ }
57
+ .failed-color {
58
+ background-color: @failedRuleColor;
59
+ }
60
+ .empty-dataset-color {
61
+ background-color: @emptyDataColor;
62
+ }
63
+ }
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
- import { Breadcrumb } from "semantic-ui-react";
4
- import { Link } from "react-router-dom";
5
- import { FormattedMessage } from "react-intl";
6
- import { DateTime } from "@truedat/core/components";
7
- import { QUALITY_CONTROLS_EXECUTION_GROUPS } from "@truedat/core/routes";
8
-
9
- export const ExecutionGroupBreadcrumbs = ({ timestamp }) => (
10
- <Breadcrumb>
11
- <Breadcrumb.Section as={Link} to={QUALITY_CONTROLS_EXECUTION_GROUPS}>
12
- <FormattedMessage id="sidemenu.executions" />
13
- </Breadcrumb.Section>
14
- <Breadcrumb.Divider icon="right angle" />
15
- <Breadcrumb.Section active>
16
- <DateTime value={timestamp} />
17
- </Breadcrumb.Section>
18
- </Breadcrumb>
19
- );
20
-
21
- ExecutionGroupBreadcrumbs.propTypes = {
22
- timestamp: PropTypes.string,
23
- };
24
-
25
- export default ExecutionGroupBreadcrumbs;
@@ -1,42 +0,0 @@
1
- import _ from "lodash/fp";
2
- import React from "react";
3
- import PropTypes from "prop-types";
4
- import { useQuery } from "@apollo/client";
5
- import { TEMPLATES_QUERY } from "@truedat/core/api/queries";
6
-
7
- const DynamicFormViewer = React.lazy(() =>
8
- import("@truedat/df/components/DynamicFormViewer")
9
- );
10
-
11
- const templateFieldNames = _.flow(
12
- _.prop("content"),
13
- _.flatMap("fields"),
14
- _.map("name")
15
- );
16
-
17
- export const ExecutionGroupContent = ({ content }) => {
18
- const { data } = useQuery(TEMPLATES_QUERY, {
19
- variables: { scope: "qe" },
20
- });
21
- // NOTE: We don't have the template name, so select one with fields matching content
22
- const contentFieldNames = _.keys(content);
23
- const matchingFieldCount = _.flow(
24
- templateFieldNames,
25
- _.intersection(contentFieldNames),
26
- _.size
27
- );
28
- const template = _.flow(
29
- _.propOr([], "templates"),
30
- _.maxBy(matchingFieldCount)
31
- )(data);
32
-
33
- return template ? (
34
- <DynamicFormViewer template={template} content={content} />
35
- ) : null;
36
- };
37
-
38
- ExecutionGroupContent.propTypes = {
39
- content: PropTypes.object,
40
- };
41
-
42
- export default ExecutionGroupContent;
@@ -1,18 +0,0 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
- import { Link } from "react-router-dom";
4
- import { DateTime } from "@truedat/core/components";
5
- import { linkTo } from "@truedat/core/routes";
6
-
7
- export const ExecutionGroupLink = ({ id, created }) => (
8
- <Link to={linkTo.QUALITY_CONTROLS_EXECUTION_GROUP({ id })}>
9
- <DateTime value={created} />
10
- </Link>
11
- );
12
-
13
- ExecutionGroupLink.propTypes = {
14
- id: PropTypes.string,
15
- created: PropTypes.string,
16
- };
17
-
18
- export default ExecutionGroupLink;
@@ -1,27 +0,0 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
- import { useIntl } from "react-intl";
4
- import { Message } from "semantic-ui-react";
5
-
6
- export const ExecutionGroupMessage = ({ count, pending }) => {
7
- const { formatMessage } = useIntl();
8
- return pending ? (
9
- <Message
10
- header={formatMessage({ id: "executions.pending.header" })}
11
- content={formatMessage({ id: "executions.pending.content" }, { pending })}
12
- />
13
- ) : (
14
- <Message
15
- success
16
- header={formatMessage({ id: "executions.completed.header" })}
17
- content={formatMessage({ id: "executions.completed.content" }, { count })}
18
- />
19
- );
20
- };
21
-
22
- ExecutionGroupMessage.propTypes = {
23
- count: PropTypes.number,
24
- pending: PropTypes.number,
25
- };
26
-
27
- export default ExecutionGroupMessage;
@@ -1,101 +0,0 @@
1
- import _ from "lodash/fp";
2
- import React from "react";
3
- import PropTypes from "prop-types";
4
- import { FormattedMessage } from "react-intl";
5
- import { Table, Header, Icon } from "semantic-ui-react";
6
- import { columnDecorator } from "@truedat/core/services";
7
- import { useExecutionGroupsIndex } from "../../hooks/useExecutionGroups";
8
- import ExecutionGroupLink from "./ExecutionGroupLink";
9
-
10
- export const HeaderRow = ({ columns }) => (
11
- <Table.Row>
12
- {columns.map(({ name: id, textAlign }, i) => (
13
- <Table.HeaderCell key={i} textAlign={textAlign}>
14
- <FormattedMessage id={id} defaultMessage={id} />
15
- </Table.HeaderCell>
16
- ))}
17
- </Table.Row>
18
- );
19
-
20
- HeaderRow.propTypes = {
21
- columns: PropTypes.arrayOf(PropTypes.object),
22
- };
23
-
24
- export const ExecutionGroupRow = ({ columns, ...props }) => (
25
- <Table.Row>
26
- {columns.map((col, i) => (
27
- <Table.Cell
28
- key={i}
29
- textAlign={col.textAlign}
30
- content={columnDecorator(col)(props)}
31
- />
32
- ))}
33
- </Table.Row>
34
- );
35
-
36
- ExecutionGroupRow.propTypes = {
37
- columns: PropTypes.arrayOf(PropTypes.object),
38
- };
39
-
40
- export default function ExecutionGroupsTable() {
41
- const { data: executionGroups } = useExecutionGroupsIndex();
42
-
43
- const columns = [
44
- {
45
- name: "quality_controls.table.header.created",
46
- width: 2,
47
- fieldSelector: _.identity,
48
- fieldDecorator: ExecutionGroupLink,
49
- },
50
- {
51
- name: "quality_controls.table.header.pending",
52
- fieldSelector: "pending_count",
53
- textAlign: "right",
54
- width: 1,
55
- },
56
- {
57
- name: "quality_controls.table.header.started",
58
- fieldSelector: "started_count",
59
- textAlign: "right",
60
- width: 1,
61
- },
62
- {
63
- name: "quality_controls.table.header.succeded",
64
- fieldSelector: "succeeded_count",
65
- textAlign: "right",
66
- width: 1,
67
- },
68
- {
69
- name: "quality_controls.table.header.failed",
70
- fieldSelector: "failed_count",
71
- textAlign: "right",
72
- width: 1,
73
- },
74
- ];
75
-
76
- return (
77
- <>
78
- {!_.isEmpty(executionGroups) && (
79
- <Table>
80
- <Table.Header>
81
- <HeaderRow columns={columns} />
82
- </Table.Header>
83
- <Table.Body>
84
- {executionGroups &&
85
- executionGroups.map((props, key) => (
86
- <ExecutionGroupRow key={key} columns={columns} {...props} />
87
- ))}
88
- </Table.Body>
89
- </Table>
90
- )}
91
- {_.isEmpty(executionGroups) && (
92
- <Header as="h4">
93
- <Icon name="search" />
94
- <Header.Content>
95
- <FormattedMessage id="quality_control_execution_group.search.results.empty" />
96
- </Header.Content>
97
- </Header>
98
- )}
99
- </>
100
- );
101
- }