@truedat/dq 4.43.5 → 4.44.1

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 (48) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +5 -5
  3. package/src/components/ImplementationCrumbs.js +91 -0
  4. package/src/components/ImplementationResultBar.js +1 -2
  5. package/src/components/ImplementationStructures.js +1 -3
  6. package/src/components/Implementations.js +9 -2
  7. package/src/components/ImplementationsRoutes.js +386 -17
  8. package/src/components/NewRuleImplementation.js +11 -27
  9. package/src/components/RemediationCrumbs.js +1 -2
  10. package/src/components/RuleCrumbs.js +6 -63
  11. package/src/components/RuleImplementation.js +15 -36
  12. package/src/components/RuleImplementationActions.js +18 -12
  13. package/src/components/RuleImplementationLink.js +2 -3
  14. package/src/components/RuleImplementationProperties.js +14 -14
  15. package/src/components/RuleImplementationResultTabs.js +9 -12
  16. package/src/components/RuleImplementationResults.js +1 -6
  17. package/src/components/RuleImplementationResultsLink.js +4 -5
  18. package/src/components/RuleImplementationTabs.js +13 -18
  19. package/src/components/RuleImplementationsActions.js +47 -1
  20. package/src/components/RuleLink.js +3 -4
  21. package/src/components/RuleResultRow.js +1 -6
  22. package/src/components/RuleResultsRoutes.js +10 -10
  23. package/src/components/RuleRoutes.js +8 -285
  24. package/src/components/__tests__/__snapshots__/ImplementationResultBar.spec.js.snap +5 -5
  25. package/src/components/__tests__/__snapshots__/NewRuleImplementation.spec.js.snap +3 -0
  26. package/src/components/__tests__/__snapshots__/RuleCrumbs.spec.js.snap +2 -73
  27. package/src/components/__tests__/__snapshots__/RuleImplementation.spec.js.snap +7 -86
  28. package/src/components/__tests__/__snapshots__/RuleImplementationResultTabs.spec.js.snap +1 -1
  29. package/src/components/__tests__/__snapshots__/RuleImplementationResults.spec.js.snap +0 -7
  30. package/src/components/__tests__/__snapshots__/RuleImplementationResultsLink.spec.js.snap +1 -1
  31. package/src/components/__tests__/__snapshots__/RuleImplementationTabs.spec.js.snap +5 -5
  32. package/src/components/ruleImplementationForm/InformationForm.js +14 -1
  33. package/src/components/ruleImplementationForm/RuleImplementationForm.js +16 -11
  34. package/src/components/ruleImplementationForm/RuleImplementationRawForm.js +16 -0
  35. package/src/components/ruleImplementationForm/__tests__/RuleImplementationForm.spec.js +4 -2
  36. package/src/components/ruleImplementationForm/__tests__/RuleImplementationRawForm.spec.js +40 -0
  37. package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationForm.spec.js.snap +4 -0
  38. package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationRawForm.spec.js.snap +5 -0
  39. package/src/messages/en.js +4 -0
  40. package/src/messages/es.js +4 -0
  41. package/src/reducers/__tests__/ruleImplementationRedirect.spec.js +2 -2
  42. package/src/reducers/__tests__/ruleRedirect.spec.js +3 -3
  43. package/src/reducers/ruleImplementation.js +3 -0
  44. package/src/reducers/ruleImplementationRedirect.js +7 -6
  45. package/src/reducers/ruleRedirect.js +4 -2
  46. package/src/reducers/userRulePermissions.js +3 -1
  47. package/src/sagas/__tests__/setRuleImplementationStatus.spec.js +7 -4
  48. package/src/sagas/setRuleImplementationStatus.js +7 -1
@@ -2,7 +2,13 @@ import _ from "lodash/fp";
2
2
  import React from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { connect } from "react-redux";
5
- import { Checkbox } from "semantic-ui-react";
5
+ import { Button, Checkbox } from "semantic-ui-react";
6
+ import { Link } from "react-router-dom";
7
+ import { useIntl } from "react-intl";
8
+ import {
9
+ IMPLEMENTATION_NEW,
10
+ IMPLEMENTATION_NEW_RAW,
11
+ } from "@truedat/core/routes";
6
12
  import { getImplementationsExecution } from "../selectors";
7
13
  import {
8
14
  addImplementationFilter,
@@ -17,6 +23,8 @@ export const RuleImplementationsActions = ({
17
23
  actions,
18
24
  addImplementationFilter,
19
25
  canExecute,
26
+ canCreate,
27
+ canCreateRaw,
20
28
  createExecutionGroup,
21
29
  executeImplementationsOn,
22
30
  implementationQuery,
@@ -28,6 +36,7 @@ export const RuleImplementationsActions = ({
28
36
  setMode,
29
37
  toggleImplementationFilterValue,
30
38
  }) => {
39
+ const { formatMessage } = useIntl();
31
40
  const showExecutableInfo = () => {
32
41
  addImplementationFilter({ filter: "executable" });
33
42
  toggleImplementationFilterValue({
@@ -76,6 +85,23 @@ export const RuleImplementationsActions = ({
76
85
  />
77
86
  </>
78
87
  )}
88
+ {canCreateRaw && (
89
+ <Button
90
+ as={Link}
91
+ to={IMPLEMENTATION_NEW_RAW}
92
+ content={formatMessage({
93
+ id: "implementations.actions.create_raw",
94
+ })}
95
+ />
96
+ )}
97
+ {canCreate && (
98
+ <Button
99
+ primary
100
+ as={Link}
101
+ to={IMPLEMENTATION_NEW}
102
+ content={formatMessage({ id: "implementations.actions.create" })}
103
+ />
104
+ )}
79
105
  <RuleImplementationsOptions
80
106
  loading={ruleImplementationsLoading}
81
107
  canUploadResults={canUploadResults}
@@ -88,6 +114,8 @@ RuleImplementationsActions.propTypes = {
88
114
  actions: PropTypes.object,
89
115
  addImplementationFilter: PropTypes.func,
90
116
  canExecute: PropTypes.bool,
117
+ canCreate: PropTypes.bool,
118
+ canCreateRaw: PropTypes.bool,
91
119
  createExecutionGroup: PropTypes.func,
92
120
  executeImplementationsOn: PropTypes.bool,
93
121
  implementationQuery: PropTypes.object,
@@ -102,6 +130,24 @@ RuleImplementationsActions.propTypes = {
102
130
 
103
131
  const mapStateToProps = (state) => ({
104
132
  canExecute: _.propOr(false, "userImplementationsPermissions.execute")(state),
133
+ canCreate:
134
+ _.propOr(
135
+ false,
136
+ "userImplementationsPermissions.manage_ruleless_implementations"
137
+ )(state) &&
138
+ _.propOr(
139
+ false,
140
+ "userImplementationsPermissions.manage_implementations"
141
+ )(state),
142
+ canCreateRaw:
143
+ _.propOr(
144
+ false,
145
+ "userImplementationsPermissions.manage_ruleless_implementations"
146
+ )(state) &&
147
+ _.propOr(
148
+ false,
149
+ "userImplementationsPermissions.manage_raw_implementations"
150
+ )(state),
105
151
  ruleImplementationCount: state.ruleImplementationCount,
106
152
  implementationsExecution: getImplementationsExecution(state),
107
153
  ruleImplementationsLoading: state.ruleImplementationsLoading,
@@ -3,13 +3,12 @@ import PropTypes from "prop-types";
3
3
  import { Link } from "react-router-dom";
4
4
  import { linkTo } from "@truedat/core/routes";
5
5
 
6
- export const RuleLink = ({ id, name }) => (
7
- <Link to={linkTo.RULE({ id })}>{name}</Link>
8
- );
6
+ export const RuleLink = ({ id, name }) =>
7
+ id ? <Link to={linkTo.RULE({ id })}>{name}</Link> : null;
9
8
 
10
9
  RuleLink.propTypes = {
11
10
  id: PropTypes.number,
12
- name: PropTypes.string
11
+ name: PropTypes.string,
13
12
  };
14
13
 
15
14
  export default RuleLink;
@@ -19,7 +19,6 @@ export const RuleResultRow = ({
19
19
  customColumns,
20
20
  isAdmin,
21
21
  ruleImplementation,
22
- rule,
23
22
  }) => {
24
23
  const { formatMessage, formatNumber: _formatNumber } = useIntl();
25
24
  const formatNumber = (num) => (_.isNil(num) ? num : _formatNumber(num));
@@ -28,10 +27,8 @@ export const RuleResultRow = ({
28
27
  <Table.Row>
29
28
  <Table.Cell>
30
29
  <Link
31
- to={linkTo.RULE_IMPLEMENTATION_RESULT_DETAILS({
32
- id: rule.id,
30
+ to={linkTo.IMPLEMENTATION_RESULT_DETAILS({
33
31
  implementation_id: ruleImplementation.id,
34
- rule,
35
32
  ruleImplementation,
36
33
  rule_result_id: ruleResult.id,
37
34
  })}
@@ -84,7 +81,6 @@ export const RuleResultRow = ({
84
81
  onConfirm={() =>
85
82
  deleteRuleResult({
86
83
  id: ruleResult.id,
87
- rule_id: rule.id,
88
84
  rule_implementation_id: ruleImplementation.id,
89
85
  })
90
86
  }
@@ -100,7 +96,6 @@ RuleResultRow.propTypes = {
100
96
  deleteRuleResult: PropTypes.func,
101
97
  isAdmin: PropTypes.bool,
102
98
  optionalColumns: PropTypes.array,
103
- rule: PropTypes.object,
104
99
  ruleImplementation: PropTypes.object,
105
100
  ruleResult: PropTypes.object,
106
101
  };
@@ -2,16 +2,16 @@ import React from "react";
2
2
  import { Route } from "react-router-dom";
3
3
  import { Segment } from "semantic-ui-react";
4
4
  import {
5
- RULE_IMPLEMENTATION_RESULT_DETAILS,
6
- RULE_IMPLEMENTATION_RESULT_SEGMENTS_RESULTS,
7
- RULE_IMPLEMENTATION_RESULT_REMEDIATION_PLAN,
5
+ IMPLEMENTATION_RESULT_DETAILS,
6
+ IMPLEMENTATION_RESULT_SEGMENTS_RESULTS,
7
+ IMPLEMENTATION_RESULT_REMEDIATION_PLAN,
8
8
  } from "@truedat/core/routes";
9
9
 
10
10
  import RuleResult from "./RuleResult";
11
11
  import RuleResultDetails from "./RuleResultDetails";
12
12
  import RuleResultSegments from "./RuleResultSegments";
13
13
  import RuleResultRemediations from "./RuleResultRemediations";
14
- import RuleCrumbs from "./RuleCrumbs";
14
+ import ImplementationCrumbs from "./ImplementationCrumbs";
15
15
  import RuleResultSegmentsLoader from "./RuleResultSegmentsLoader";
16
16
 
17
17
  export const RuleResultsRoutes = ({}) => {
@@ -19,12 +19,12 @@ export const RuleResultsRoutes = ({}) => {
19
19
  <>
20
20
  <Route
21
21
  exact
22
- path={RULE_IMPLEMENTATION_RESULT_DETAILS}
22
+ path={IMPLEMENTATION_RESULT_DETAILS}
23
23
  render={() => (
24
24
  <>
25
25
  <Segment>
26
26
  <>
27
- <RuleCrumbs />
27
+ <ImplementationCrumbs />
28
28
  <RuleResult>
29
29
  <RuleResultDetails />
30
30
  </RuleResult>
@@ -35,12 +35,12 @@ export const RuleResultsRoutes = ({}) => {
35
35
  />
36
36
  <Route
37
37
  exact
38
- path={RULE_IMPLEMENTATION_RESULT_SEGMENTS_RESULTS}
38
+ path={IMPLEMENTATION_RESULT_SEGMENTS_RESULTS}
39
39
  render={() => (
40
40
  <>
41
41
  <Segment>
42
42
  <>
43
- <RuleCrumbs />
43
+ <ImplementationCrumbs />
44
44
  <RuleResult>
45
45
  <RuleResultSegmentsLoader />
46
46
  <RuleResultSegments />
@@ -52,12 +52,12 @@ export const RuleResultsRoutes = ({}) => {
52
52
  />
53
53
  <Route
54
54
  exact
55
- path={RULE_IMPLEMENTATION_RESULT_REMEDIATION_PLAN}
55
+ path={IMPLEMENTATION_RESULT_REMEDIATION_PLAN}
56
56
  render={() => (
57
57
  <>
58
58
  <Segment>
59
59
  <>
60
- <RuleCrumbs />
60
+ <ImplementationCrumbs />
61
61
  <RuleResult>
62
62
  <RuleResultRemediations />
63
63
  </RuleResult>
@@ -1,30 +1,16 @@
1
1
  import _ from "lodash/fp";
2
2
  import React from "react";
3
- import { useParams } from "react-router-dom";
4
3
  import PropTypes from "prop-types";
5
4
  import { Route, useRouteMatch } from "react-router-dom";
6
5
  import { connect } from "react-redux";
7
6
  import { Segment } from "semantic-ui-react";
8
- import { Unauthorized } from "@truedat/core/components";
9
- import { useAuthorized } from "@truedat/core/hooks";
10
7
  import {
11
8
  RULE,
12
9
  RULE_EDIT,
13
10
  RULE_EVENTS,
14
- RULE_IMPLEMENTATION_CLONE,
15
- RULE_IMPLEMENTATION_EDIT,
16
- RULE_IMPLEMENTATION_EVENTS,
17
- IMPLEMENTATION_CONCEPT_LINKS,
18
- IMPLEMENTATION_CONCEPT_LINKS_NEW,
19
- IMPLEMENTATION_STRUCTURES,
20
- IMPLEMENTATION_STRUCTURES_NEW,
21
- RULE_IMPLEMENTATION_MOVE,
22
11
  RULE_IMPLEMENTATION_NEW,
23
- RULE_IMPLEMENTATION_RESULT_DETAILS,
24
- RULE_IMPLEMENTATION_RESULTS_DETAILS,
25
- RULE_IMPLEMENTATION,
12
+ RULE_IMPLEMENTATION_NEW_RAW,
26
13
  RULE_NEW,
27
- RULE_IMPLEMENTATION_RESULTS,
28
14
  RULE_IMPLEMENTATIONS,
29
15
  } from "@truedat/core/routes";
30
16
  import {
@@ -32,27 +18,16 @@ import {
32
18
  getImplementationStructuresLoaded,
33
19
  } from "../selectors";
34
20
  import EditRule from "./EditRule";
35
- import RuleResultDetails from "./RuleResultDetails";
36
- import RuleResultsRoutes from "./RuleResultsRoutes";
37
- import ImplementationStructures from "./ImplementationStructures";
38
- import ImplementationStructuresNew from "./ImplementationStructuresNew";
39
- import MoveImplementation from "./MoveImplementation";
40
21
  import NewRule from "./NewRule";
41
22
  import NewRuleImplementation from "./NewRuleImplementation";
42
23
  import Rule from "./Rule";
43
24
  import RuleCrumbs from "./RuleCrumbs";
44
25
  import RuleEvents from "./RuleEvents";
45
26
  import RuleFormImplementations from "./RuleFormImplementations";
46
- import RuleImplementation from "./RuleImplementation";
47
- import RuleImplementationEvents from "./RuleImplementationEvents";
48
- import RuleImplementationLoader from "./RuleImplementationLoader";
49
- import RuleImplementationProperties from "./RuleImplementationProperties";
50
- import RuleImplementationResults from "./RuleImplementationResults";
51
27
  import RuleImplementationsFromRuleLoader from "./RuleImplementationsFromRuleLoader";
52
28
  import RuleLoader from "./RuleLoader";
53
29
  import RuleProperties from "./RuleProperties";
54
30
  import RuleSubscriptionLoader from "./RuleSubscriptionLoader";
55
- import RuleResultRemediationLoader from "./RuleResultRemediationLoader";
56
31
 
57
32
  const DomainsLoader = React.lazy(() =>
58
33
  import("@truedat/bg/taxonomy/components/DomainsLoader")
@@ -66,15 +41,6 @@ const EventsLoader = React.lazy(() =>
66
41
  const TemplatesLoader = React.lazy(() =>
67
42
  import("@truedat/df/templates/components/TemplatesLoader")
68
43
  );
69
- const ImplementationStructuresLoader = React.lazy(() =>
70
- import("@truedat/dd/components/ImplementationStructuresLoader")
71
- );
72
- const ImplementationLinks = React.lazy(() =>
73
- import("@truedat/lm/components/ImplementationLinks")
74
- );
75
- const ImplementationRelationForm = React.lazy(() =>
76
- import("@truedat/lm/components/ImplementationRelationForm")
77
- );
78
44
 
79
45
  const QualityTemplatesLoader = () => <TemplatesLoader scope="dq" />;
80
46
  const ImplementationTemplatesLoader = () => <TemplatesLoader scope="ri" />;
@@ -85,23 +51,13 @@ const RuleEventsLoader = () => {
85
51
  return <EventsLoader resource_id={id} resource_type="rule" />;
86
52
  };
87
53
 
88
- const ImplementationEventsLoader = () => {
89
- const match = useRouteMatch();
90
- const id = _.path("params.implementation_id")(match);
91
- return <EventsLoader resource_id={id} resource_type="implementation" />;
92
- };
93
-
94
54
  export const RuleRoutes = ({
95
55
  ruleLoaded,
96
- ruleImplementationLoaded,
97
- implementationStructures,
98
56
  rule,
99
- implementationStructuresLoaded,
100
57
  systemsLoading,
101
58
  templatesLoaded,
102
59
  template,
103
60
  structuresAliasesLoading,
104
- ruleImplementation,
105
61
  }) => {
106
62
  return (
107
63
  <>
@@ -201,241 +157,18 @@ export const RuleRoutes = ({
201
157
  </>
202
158
  )}
203
159
  />
204
-
205
- <ImplementationRoutes
206
- {...{
207
- ruleLoaded,
208
- ruleImplementationLoaded,
209
- implementationStructures,
210
- implementationStructuresLoaded,
211
- structuresAliasesLoading,
212
- ruleImplementation,
213
- }}
214
- />
215
- </>
216
- )}
217
- />
218
- </>
219
- );
220
- };
221
-
222
- const ImplementationRoutes = ({
223
- ruleLoaded,
224
- ruleImplementationLoaded,
225
- implementationStructures,
226
- implementationStructuresLoaded,
227
- structuresAliasesLoading,
228
- ruleImplementation,
229
- }) => {
230
- const latest = _.head(ruleImplementation.results);
231
- const authorized = useAuthorized();
232
- const { rule_result_id: ruleResultId } = useParams();
233
-
234
- return (
235
- <>
236
- <Route
237
- path={RULE_IMPLEMENTATION}
238
- render={() => (
239
- <>
240
- <RuleImplementationLoader />
241
-
242
160
  <Route
243
161
  exact
244
- path={RULE_IMPLEMENTATION}
245
- render={() => (
246
- <>
247
- <RuleCrumbs />
248
- <Segment>
249
- <ImplementationTemplatesLoader />
250
- {ruleLoaded && ruleImplementationLoaded && (
251
- <RuleImplementation>
252
- <RuleImplementationProperties />
253
- </RuleImplementation>
254
- )}
255
- </Segment>
256
- </>
257
- )}
258
- />
259
-
260
- <Route
261
- exact
262
- path={RULE_IMPLEMENTATION_EVENTS}
263
- render={() => (
264
- <>
265
- <RuleCrumbs />
266
- <Segment>
267
- <ImplementationEventsLoader />
268
- {ruleLoaded && ruleImplementationLoaded && (
269
- <RuleImplementation>
270
- <RuleImplementationEvents />
271
- </RuleImplementation>
272
- )}
273
- </Segment>
274
- </>
275
- )}
276
- />
277
-
278
- <Route
279
- exact
280
- path={RULE_IMPLEMENTATION_CLONE}
281
- render={() => (
282
- <>
283
- <ImplementationTemplatesLoader />
284
- {ruleImplementationLoaded && (
285
- <ImplementationStructuresLoader
286
- structureIds={implementationStructures}
287
- />
288
- )}
289
- {!structuresAliasesLoading &&
290
- ruleImplementationLoaded &&
291
- implementationStructuresLoaded && (
292
- <NewRuleImplementation edition={true} clone={true} />
293
- )}
294
- </>
295
- )}
296
- />
297
- <Route
298
- exact
299
- path={RULE_IMPLEMENTATION_EDIT}
162
+ path={RULE_IMPLEMENTATION_NEW_RAW}
300
163
  render={() => (
301
164
  <>
302
165
  <ImplementationTemplatesLoader />
303
- {ruleImplementationLoaded && (
304
- <ImplementationStructuresLoader
305
- structureIds={implementationStructures}
166
+ {!structuresAliasesLoading && !systemsLoading && (
167
+ <NewRuleImplementation
168
+ edition={false}
169
+ implementationType="raw"
306
170
  />
307
171
  )}
308
- {!structuresAliasesLoading &&
309
- ruleImplementationLoaded &&
310
- implementationStructuresLoaded && (
311
- <NewRuleImplementation edition />
312
- )}
313
- </>
314
- )}
315
- />
316
-
317
- <Route
318
- exact
319
- path={RULE_IMPLEMENTATION_MOVE}
320
- render={() => (
321
- <>
322
- <RuleCrumbs />
323
- <Segment>
324
- {ruleLoaded && ruleImplementationLoaded ? (
325
- <RuleImplementation>
326
- {authorized ? <MoveImplementation /> : <Unauthorized />}
327
- </RuleImplementation>
328
- ) : null}
329
- </Segment>
330
- </>
331
- )}
332
- />
333
- <Route
334
- exact
335
- path={IMPLEMENTATION_CONCEPT_LINKS}
336
- render={() => (
337
- <>
338
- <RuleCrumbs />
339
- <Segment>
340
- {ruleLoaded && ruleImplementationLoaded && (
341
- <RuleImplementation>
342
- <ImplementationLinks />
343
- </RuleImplementation>
344
- )}
345
- </Segment>
346
- </>
347
- )}
348
- />
349
- <Route
350
- exact
351
- path={IMPLEMENTATION_CONCEPT_LINKS_NEW}
352
- render={() => (
353
- <>
354
- <RuleCrumbs />
355
- <Segment>
356
- {ruleLoaded && ruleImplementationLoaded && (
357
- <RuleImplementation>
358
- <ImplementationRelationForm />
359
- </RuleImplementation>
360
- )}
361
- </Segment>
362
- </>
363
- )}
364
- />
365
- <Route
366
- exact
367
- path={IMPLEMENTATION_STRUCTURES}
368
- render={() => (
369
- <>
370
- <RuleCrumbs />
371
- <Segment>
372
- {ruleLoaded && ruleImplementationLoaded && (
373
- <RuleImplementation>
374
- <ImplementationStructures />
375
- </RuleImplementation>
376
- )}
377
- </Segment>
378
- </>
379
- )}
380
- />
381
- <Route
382
- exact
383
- path={IMPLEMENTATION_STRUCTURES_NEW}
384
- render={() => (
385
- <>
386
- <RuleCrumbs />
387
- <Segment>
388
- {ruleLoaded && ruleImplementationLoaded && (
389
- <RuleImplementation>
390
- <ImplementationStructuresNew />
391
- </RuleImplementation>
392
- )}
393
- </Segment>
394
- </>
395
- )}
396
- />
397
- <Route
398
- exact
399
- path={RULE_IMPLEMENTATION_RESULTS}
400
- render={() => (
401
- <>
402
- <RuleCrumbs />
403
- <Segment>
404
- {ruleLoaded && ruleImplementationLoaded && (
405
- <RuleImplementation>
406
- <RuleImplementationResults ruleResult={latest} />
407
- </RuleImplementation>
408
- )}
409
- </Segment>
410
- </>
411
- )}
412
- />
413
-
414
- <Route
415
- exact
416
- path={RULE_IMPLEMENTATION_RESULTS_DETAILS}
417
- render={() => (
418
- <>
419
- <RuleCrumbs />
420
- <Segment>
421
- {ruleLoaded && ruleImplementationLoaded && (
422
- <RuleImplementation>
423
- <RuleResultDetails ruleResultId={latest.id} />
424
- </RuleImplementation>
425
- )}
426
- </Segment>
427
- </>
428
- )}
429
- />
430
- <Route
431
- path={RULE_IMPLEMENTATION_RESULT_DETAILS}
432
- render={() => (
433
- <>
434
- <RuleResultRemediationLoader
435
- propRuleResultId={ruleResultId}
436
- />
437
- <TemplatesLoader scope="remediation" />
438
- <RuleResultsRoutes />
439
172
  </>
440
173
  )}
441
174
  />
@@ -446,23 +179,13 @@ const ImplementationRoutes = ({
446
179
  );
447
180
  };
448
181
 
449
- const implementationPropTypes = {
450
- ruleLoaded: PropTypes.bool,
451
- ruleImplementationLoaded: PropTypes.bool,
452
- implementationStructures: PropTypes.array,
453
- implementationStructuresLoaded: PropTypes.bool,
454
- structuresAliasesLoading: PropTypes.bool,
455
- ruleImplementation: PropTypes.object,
456
- };
457
-
458
- ImplementationRoutes.propTypes = implementationPropTypes;
459
-
460
182
  RuleRoutes.propTypes = {
461
183
  rule: PropTypes.object,
462
184
  template: PropTypes.object,
463
185
  systemsLoading: PropTypes.bool,
464
186
  templatesLoaded: PropTypes.bool,
465
- ...implementationPropTypes,
187
+ ruleLoaded: PropTypes.bool,
188
+ structuresAliasesLoading: PropTypes.bool,
466
189
  };
467
190
 
468
191
  const mapStateToProps = (state) => {
@@ -8,7 +8,7 @@ exports[`<ImplementationResultBar /> render failed implementation 1`] = `
8
8
  <a
9
9
  as="div"
10
10
  class="rule-summary pointer"
11
- href="/rules/8/implementations/1/results"
11
+ href="/implementations/1/results"
12
12
  >
13
13
  <span
14
14
  class="failed-color"
@@ -33,7 +33,7 @@ exports[`<ImplementationResultBar /> render not executed implementation 1`] = `
33
33
  <a
34
34
  as="div"
35
35
  class="rule-summary pointer"
36
- href="/rules/8/implementations/1/results"
36
+ href="/implementations/1/results"
37
37
  >
38
38
  <span
39
39
  class="not-executed-color"
@@ -58,7 +58,7 @@ exports[`<ImplementationResultBar /> render overGoal implementation 1`] = `
58
58
  <a
59
59
  as="div"
60
60
  class="rule-summary pointer"
61
- href="/rules/8/implementations/1/results"
61
+ href="/implementations/1/results"
62
62
  >
63
63
  <span
64
64
  class="over-goal-color"
@@ -88,7 +88,7 @@ exports[`<ImplementationResultBar /> render underGoal implementation 1`] = `
88
88
  <a
89
89
  as="div"
90
90
  class="rule-summary pointer"
91
- href="/rules/8/implementations/1/results"
91
+ href="/implementations/1/results"
92
92
  >
93
93
  <span
94
94
  class="under-goal-color"
@@ -118,7 +118,7 @@ exports[`<ImplementationResultBar /> render underMinimum implementation 1`] = `
118
118
  <a
119
119
  as="div"
120
120
  class="rule-summary pointer"
121
- href="/rules/8/implementations/1/results"
121
+ href="/implementations/1/results"
122
122
  >
123
123
  <span
124
124
  class="under-minimum-color"
@@ -926,6 +926,9 @@ exports[`<NewRuleImplementation /> matches the latest snapshot 1`] = `
926
926
  </div>
927
927
  </div>
928
928
  </div>
929
+ <div
930
+ class="field"
931
+ />
929
932
  <div
930
933
  class="ui segment"
931
934
  >