@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.
- package/CHANGELOG.md +6 -0
- package/package.json +5 -5
- package/src/components/ImplementationCrumbs.js +91 -0
- package/src/components/ImplementationResultBar.js +1 -2
- package/src/components/ImplementationStructures.js +1 -3
- package/src/components/Implementations.js +9 -2
- package/src/components/ImplementationsRoutes.js +386 -17
- package/src/components/NewRuleImplementation.js +11 -27
- package/src/components/RemediationCrumbs.js +1 -2
- package/src/components/RuleCrumbs.js +6 -63
- package/src/components/RuleImplementation.js +15 -36
- package/src/components/RuleImplementationActions.js +18 -12
- package/src/components/RuleImplementationLink.js +2 -3
- package/src/components/RuleImplementationProperties.js +14 -14
- package/src/components/RuleImplementationResultTabs.js +9 -12
- package/src/components/RuleImplementationResults.js +1 -6
- package/src/components/RuleImplementationResultsLink.js +4 -5
- package/src/components/RuleImplementationTabs.js +13 -18
- package/src/components/RuleImplementationsActions.js +47 -1
- package/src/components/RuleLink.js +3 -4
- package/src/components/RuleResultRow.js +1 -6
- package/src/components/RuleResultsRoutes.js +10 -10
- package/src/components/RuleRoutes.js +8 -285
- package/src/components/__tests__/__snapshots__/ImplementationResultBar.spec.js.snap +5 -5
- package/src/components/__tests__/__snapshots__/NewRuleImplementation.spec.js.snap +3 -0
- package/src/components/__tests__/__snapshots__/RuleCrumbs.spec.js.snap +2 -73
- package/src/components/__tests__/__snapshots__/RuleImplementation.spec.js.snap +7 -86
- package/src/components/__tests__/__snapshots__/RuleImplementationResultTabs.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/RuleImplementationResults.spec.js.snap +0 -7
- package/src/components/__tests__/__snapshots__/RuleImplementationResultsLink.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/RuleImplementationTabs.spec.js.snap +5 -5
- package/src/components/ruleImplementationForm/InformationForm.js +14 -1
- package/src/components/ruleImplementationForm/RuleImplementationForm.js +16 -11
- package/src/components/ruleImplementationForm/RuleImplementationRawForm.js +16 -0
- package/src/components/ruleImplementationForm/__tests__/RuleImplementationForm.spec.js +4 -2
- package/src/components/ruleImplementationForm/__tests__/RuleImplementationRawForm.spec.js +40 -0
- package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationForm.spec.js.snap +4 -0
- package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationRawForm.spec.js.snap +5 -0
- package/src/messages/en.js +4 -0
- package/src/messages/es.js +4 -0
- package/src/reducers/__tests__/ruleImplementationRedirect.spec.js +2 -2
- package/src/reducers/__tests__/ruleRedirect.spec.js +3 -3
- package/src/reducers/ruleImplementation.js +3 -0
- package/src/reducers/ruleImplementationRedirect.js +7 -6
- package/src/reducers/ruleRedirect.js +4 -2
- package/src/reducers/userRulePermissions.js +3 -1
- package/src/sagas/__tests__/setRuleImplementationStatus.spec.js +7 -4
- 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.
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
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={
|
|
22
|
+
path={IMPLEMENTATION_RESULT_DETAILS}
|
|
23
23
|
render={() => (
|
|
24
24
|
<>
|
|
25
25
|
<Segment>
|
|
26
26
|
<>
|
|
27
|
-
<
|
|
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={
|
|
38
|
+
path={IMPLEMENTATION_RESULT_SEGMENTS_RESULTS}
|
|
39
39
|
render={() => (
|
|
40
40
|
<>
|
|
41
41
|
<Segment>
|
|
42
42
|
<>
|
|
43
|
-
<
|
|
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={
|
|
55
|
+
path={IMPLEMENTATION_RESULT_REMEDIATION_PLAN}
|
|
56
56
|
render={() => (
|
|
57
57
|
<>
|
|
58
58
|
<Segment>
|
|
59
59
|
<>
|
|
60
|
-
<
|
|
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
|
-
|
|
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={
|
|
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
|
-
{
|
|
304
|
-
<
|
|
305
|
-
|
|
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
|
-
|
|
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="/
|
|
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="/
|
|
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="/
|
|
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="/
|
|
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="/
|
|
121
|
+
href="/implementations/1/results"
|
|
122
122
|
>
|
|
123
123
|
<span
|
|
124
124
|
class="under-minimum-color"
|