@truedat/dq 4.37.2 → 4.37.3

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.37.3] 2022-02-03
4
+
5
+ ### Added
6
+
7
+ - [TD-2929] Added support for `UserSearchFilters` on `Rules` and `RuleImplementations`
8
+
3
9
  ## [4.37.2] 2022-02-02
4
10
 
5
11
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truedat/dq",
3
- "version": "4.37.2",
3
+ "version": "4.37.3",
4
4
  "description": "Truedat Web Data Quality Module",
5
5
  "sideEffects": false,
6
6
  "jsnext:main": "src/index.js",
@@ -82,8 +82,8 @@
82
82
  },
83
83
  "dependencies": {
84
84
  "@apollo/client": "^3.4.10",
85
- "@truedat/core": "4.37.2",
86
- "@truedat/df": "4.37.2",
85
+ "@truedat/core": "4.37.3",
86
+ "@truedat/df": "4.37.3",
87
87
  "axios": "^0.19.2",
88
88
  "graphql": "^15.5.3",
89
89
  "path-to-regexp": "^1.7.0",
@@ -103,5 +103,5 @@
103
103
  "react-dom": ">= 16.8.6 < 17",
104
104
  "semantic-ui-react": ">= 0.88.2 < 2.1"
105
105
  },
106
- "gitHead": "ca6ba01d31ab5ec415b9b21d6ce02b418fc6e0ff"
106
+ "gitHead": "1c418784d34e171a6d62dd7fab3dfd05400998ba"
107
107
  }
@@ -8,6 +8,9 @@ import RuleImplementationsLoader from "./RuleImplementationsLoader";
8
8
  const TemplatesLoader = React.lazy(() =>
9
9
  import("@truedat/df/templates/components/TemplatesLoader")
10
10
  );
11
+ const UserSearchFiltersLoader = React.lazy(() =>
12
+ import("@truedat/dd/components/UserSearchFiltersLoader")
13
+ );
11
14
 
12
15
  const ImplementationsRoutes = () => (
13
16
  <Route
@@ -17,6 +20,7 @@ const ImplementationsRoutes = () => (
17
20
  <RuleImplementationsLoader />
18
21
  <ImplementationFiltersLoader />
19
22
  <TemplatesLoader scope="qe" />
23
+ <UserSearchFiltersLoader scope="rule_implementation" />
20
24
  <RuleImplementations exact />
21
25
  </>
22
26
  )}
@@ -1,4 +1,3 @@
1
-
2
1
  import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Feed, Segment } from "semantic-ui-react";
@@ -29,4 +28,4 @@ const mapStateToProps = (state) => {
29
28
  };
30
29
  };
31
30
 
32
- export default connect(mapStateToProps)(RuleEvents);
31
+ export default connect(mapStateToProps)(RuleEvents);
@@ -4,6 +4,11 @@ import { connect } from "react-redux";
4
4
  import { injectIntl } from "react-intl";
5
5
  import { makeOption } from "@truedat/core/services/i18n";
6
6
  import { SelectedFilters } from "@truedat/core/components";
7
+ import {
8
+ applyUserSearchFilter,
9
+ deleteUserSearchFilter,
10
+ saveUserSearchFilters,
11
+ } from "@truedat/dd/routines";
7
12
  import {
8
13
  closeImplementationFilter,
9
14
  openImplementationFilter,
@@ -30,23 +35,36 @@ export const mapStateToProps = (state, ownProps) => {
30
35
  _.map(makeOption(translations(formatMessage), selectedFilter))
31
36
  )(state);
32
37
 
38
+ const {
39
+ selectedUserSearchFilter: selectedUserFilter,
40
+ ruleImplementationActiveFilters: activeFilters,
41
+ userSearchFilters: userFilters,
42
+ } = state;
43
+
33
44
  return {
34
45
  selectedFilter,
35
46
  selectedFilters: getRuleImplementationSelectedFilters(state),
36
47
  selectedFilterActiveValues:
37
48
  getRuleImplementationSelectedFilterActiveValues(state),
38
49
  selectedFilterValues: i18nValues,
50
+ selectedUserFilter,
51
+ activeFilters,
52
+ userFilters,
53
+ userFilterScope: "rule_implementation",
39
54
  };
40
55
  };
41
56
 
42
57
  const mapDispatchToProps = (dispatch) =>
43
58
  bindActionCreators(
44
59
  {
60
+ applyUserFilter: applyUserSearchFilter,
45
61
  closeFilter: closeImplementationFilter,
62
+ deleteUserFilter: deleteUserSearchFilter,
46
63
  openFilter: openImplementationFilter,
47
64
  removeFilter: removeImplementationFilter,
48
65
  resetFilters: resetImplementationFilters,
49
66
  toggleFilterValue: toggleImplementationFilterValue,
67
+ saveFilters: saveUserSearchFilters,
50
68
  },
51
69
  dispatch
52
70
  );
@@ -4,6 +4,11 @@ import { connect } from "react-redux";
4
4
  import { injectIntl } from "react-intl";
5
5
  import { makeOption } from "@truedat/core/services/i18n";
6
6
  import { SelectedFilters } from "@truedat/core/components";
7
+ import {
8
+ applyUserSearchFilter,
9
+ deleteUserSearchFilter,
10
+ saveUserSearchFilters,
11
+ } from "@truedat/dd/routines";
7
12
  import {
8
13
  closeRuleFilter,
9
14
  openRuleFilter,
@@ -30,22 +35,35 @@ export const mapStateToProps = (state, ownProps) => {
30
35
  _.map(makeOption(translations(formatMessage), selectedFilter))
31
36
  )(state);
32
37
 
38
+ const {
39
+ selectedUserSearchFilter: selectedUserFilter,
40
+ ruleActiveFilters: activeFilters,
41
+ userSearchFilters: userFilters,
42
+ } = state;
43
+
33
44
  return {
34
45
  selectedFilter,
35
46
  selectedFilters: getRuleSelectedFilters(state),
36
47
  selectedFilterActiveValues: getRuleSelectedFilterActiveValues(state),
37
48
  selectedFilterValues: i18nValues,
49
+ selectedUserFilter,
50
+ activeFilters,
51
+ userFilters,
52
+ userFilterScope: "rule",
38
53
  };
39
54
  };
40
55
 
41
56
  const mapDispatchToProps = (dispatch) =>
42
57
  bindActionCreators(
43
58
  {
59
+ applyUserFilter: applyUserSearchFilter,
44
60
  closeFilter: closeRuleFilter,
61
+ deleteUserFilter: deleteUserSearchFilter,
45
62
  openFilter: openRuleFilter,
46
63
  removeFilter: removeRuleFilter,
47
64
  resetFilters: resetRuleFilters,
48
65
  toggleFilterValue: toggleRuleFilterValue,
66
+ saveFilters: saveUserSearchFilters,
49
67
  },
50
68
  dispatch
51
69
  );
@@ -41,7 +41,7 @@ const RuleTabs = ({ rule }) => {
41
41
  };
42
42
 
43
43
  RuleTabs.propTypes = {
44
- rule: PropTypes.object
44
+ rule: PropTypes.object,
45
45
  };
46
46
 
47
47
  const mapStateToProps = ({ rule }) => ({ rule });
@@ -13,13 +13,25 @@ const DomainsLoader = React.lazy(() =>
13
13
  const TemplatesLoader = React.lazy(() =>
14
14
  import("@truedat/df/templates/components/TemplatesLoader")
15
15
  );
16
+ const UserSearchFiltersLoader = React.lazy(() =>
17
+ import("@truedat/dd/components/UserSearchFiltersLoader")
18
+ );
16
19
  const QualityTemplatesLoader = () => <TemplatesLoader scope="dq" />;
17
20
 
18
21
  const RulesRoutes = () => (
19
22
  <>
20
23
  <Route path={RULES} component={RulesLoader} />
21
24
  <Route path={RULES} component={RuleFiltersLoader} />
22
- <Route path={RULES} component={Rules} exact />
25
+ <Route
26
+ exact
27
+ path={RULES}
28
+ render={() => (
29
+ <>
30
+ <UserSearchFiltersLoader scope="rule" />
31
+ <Rules />
32
+ </>
33
+ )}
34
+ />
23
35
  <Switch>
24
36
  <Route
25
37
  exact
@@ -20,9 +20,9 @@ describe("<RuleEvents />", () => {
20
20
  email: "some.user@domain.tld",
21
21
  full_name: "Some User",
22
22
  id: 142,
23
- user_name: "some.user@domain.tld"
23
+ user_name: "some.user@domain.tld",
24
24
  },
25
- ts: "2021-09-16T07:36:32.848603Z"
25
+ ts: "2021-09-16T07:36:32.848603Z",
26
26
  },
27
27
  {
28
28
  id: 100436,
@@ -31,7 +31,7 @@ describe("<RuleEvents />", () => {
31
31
  resource_type: "rule",
32
32
  event: "rule_updated",
33
33
  payload: {
34
- domain_id: 168
34
+ domain_id: 168,
35
35
  },
36
36
  user_id: 171,
37
37
  user_name: null,
@@ -39,9 +39,9 @@ describe("<RuleEvents />", () => {
39
39
  email: "some.user@domain.tld",
40
40
  full_name: "Some User",
41
41
  id: 171,
42
- user_name: "some.user"
42
+ user_name: "some.user",
43
43
  },
44
- ts: "2021-09-16T09:31:03.061864Z"
44
+ ts: "2021-09-16T09:31:03.061864Z",
45
45
  },
46
46
  ];
47
47
  const renderOpts = {
@@ -1,10 +1,11 @@
1
+ import { applyUserSearchFilter } from "@truedat/dd/routines";
1
2
  import { initialState } from "../ruleActiveFilters";
2
3
  import {
3
4
  addRuleFilter,
4
5
  closeRuleFilter,
5
6
  removeRuleFilter,
6
7
  resetRuleFilters,
7
- toggleRuleFilterValue
8
+ toggleRuleFilterValue,
8
9
  } from "../../routines";
9
10
  import { ruleActiveFilters } from "..";
10
11
 
@@ -21,11 +22,22 @@ describe("reducers: ruleActiveFilters", () => {
21
22
  expect(
22
23
  ruleActiveFilters(fooState, {
23
24
  type: addRuleFilter.TRIGGER,
24
- payload
25
+ payload,
25
26
  })
26
27
  ).toEqual({ ...fooState, baz: [] });
27
28
  });
28
29
 
30
+ it("should handle the applyUserSearchFilter.TRIGGER action", () => {
31
+ const filters = { country: ["Sp"] };
32
+ const payload = { userFilter: { filters }, scope: "rule" };
33
+ expect(
34
+ ruleActiveFilters(fooState, {
35
+ type: applyUserSearchFilter.TRIGGER,
36
+ payload,
37
+ })
38
+ ).toEqual({ ...filters });
39
+ });
40
+
29
41
  it("should handle the closeRuleFilter.TRIGGER action", () => {
30
42
  const foo = ["foo1"];
31
43
  const bar = [];
@@ -34,7 +46,7 @@ describe("reducers: ruleActiveFilters", () => {
34
46
  expect(
35
47
  ruleActiveFilters(state, {
36
48
  type: closeRuleFilter.TRIGGER,
37
- payload
49
+ payload,
38
50
  })
39
51
  ).toEqual({ foo });
40
52
  });
@@ -47,7 +59,7 @@ describe("reducers: ruleActiveFilters", () => {
47
59
  expect(
48
60
  ruleActiveFilters(state, {
49
61
  type: removeRuleFilter.TRIGGER,
50
- payload
62
+ payload,
51
63
  })
52
64
  ).toEqual({ bar });
53
65
  });
@@ -55,7 +67,7 @@ describe("reducers: ruleActiveFilters", () => {
55
67
  it("should handle the resetRuleFilters.TRIGGER action", () => {
56
68
  expect(
57
69
  ruleActiveFilters(fooState, {
58
- type: resetRuleFilters.TRIGGER
70
+ type: resetRuleFilters.TRIGGER,
59
71
  })
60
72
  ).toEqual(initialState);
61
73
  });
@@ -63,7 +75,7 @@ describe("reducers: ruleActiveFilters", () => {
63
75
  it("should handle the resetRuleFilters.TRIGGER action when execution filter exists", () => {
64
76
  expect(
65
77
  ruleActiveFilters(fooState, {
66
- type: resetRuleFilters.TRIGGER
78
+ type: resetRuleFilters.TRIGGER,
67
79
  })
68
80
  ).toEqual(initialState);
69
81
  });
@@ -76,7 +88,7 @@ describe("reducers: ruleActiveFilters", () => {
76
88
  expect(
77
89
  ruleActiveFilters(state, {
78
90
  type: toggleRuleFilterValue.TRIGGER,
79
- payload
91
+ payload,
80
92
  })
81
93
  ).toEqual({ foo: ["foo1", "foo3"], bar });
82
94
  });
@@ -1,10 +1,11 @@
1
+ import { applyUserSearchFilter } from "@truedat/dd/routines";
1
2
  import { initialState } from "../ruleImplementationActiveFilters";
2
3
  import {
3
4
  addImplementationFilter,
4
5
  closeImplementationFilter,
5
6
  removeImplementationFilter,
6
7
  resetImplementationFilters,
7
- toggleImplementationFilterValue
8
+ toggleImplementationFilterValue,
8
9
  } from "../../routines";
9
10
  import { ruleImplementationActiveFilters } from "..";
10
11
 
@@ -17,13 +18,24 @@ describe("reducers: ruleImplementationActiveFilters", () => {
17
18
  );
18
19
  });
19
20
 
21
+ it("should handle the applyUserSearchFilter.TRIGGER action", () => {
22
+ const filters = { country: ["Sp"] };
23
+ const payload = { userFilter: { filters }, scope: "rule_implementation" };
24
+ expect(
25
+ ruleImplementationActiveFilters(fooState, {
26
+ type: applyUserSearchFilter.TRIGGER,
27
+ payload,
28
+ })
29
+ ).toEqual({ ...filters });
30
+ });
31
+
20
32
  it("should handle the addImplementationFilter.TRIGGER action", () => {
21
33
  const filter = "baz";
22
34
  const payload = { filter };
23
35
  expect(
24
36
  ruleImplementationActiveFilters(fooState, {
25
37
  type: addImplementationFilter.TRIGGER,
26
- payload
38
+ payload,
27
39
  })
28
40
  ).toEqual({ ...fooState, baz: [] });
29
41
  });
@@ -36,7 +48,7 @@ describe("reducers: ruleImplementationActiveFilters", () => {
36
48
  expect(
37
49
  ruleImplementationActiveFilters(state, {
38
50
  type: closeImplementationFilter.TRIGGER,
39
- payload
51
+ payload,
40
52
  })
41
53
  ).toEqual({ foo });
42
54
  });
@@ -49,7 +61,7 @@ describe("reducers: ruleImplementationActiveFilters", () => {
49
61
  expect(
50
62
  ruleImplementationActiveFilters(state, {
51
63
  type: removeImplementationFilter.TRIGGER,
52
- payload
64
+ payload,
53
65
  })
54
66
  ).toEqual({ bar });
55
67
  });
@@ -57,7 +69,7 @@ describe("reducers: ruleImplementationActiveFilters", () => {
57
69
  it("should handle the resetImplementationFilters.TRIGGER action", () => {
58
70
  expect(
59
71
  ruleImplementationActiveFilters(fooState, {
60
- type: resetImplementationFilters.TRIGGER
72
+ type: resetImplementationFilters.TRIGGER,
61
73
  })
62
74
  ).toEqual(initialState);
63
75
  });
@@ -67,7 +79,7 @@ describe("reducers: ruleImplementationActiveFilters", () => {
67
79
  ruleImplementationActiveFilters(
68
80
  { ...fooState, executable: [true] },
69
81
  {
70
- type: resetImplementationFilters.TRIGGER
82
+ type: resetImplementationFilters.TRIGGER,
71
83
  }
72
84
  )
73
85
  ).toEqual({ executable: [true] });
@@ -81,7 +93,7 @@ describe("reducers: ruleImplementationActiveFilters", () => {
81
93
  expect(
82
94
  ruleImplementationActiveFilters(state, {
83
95
  type: toggleImplementationFilterValue.TRIGGER,
84
- payload
96
+ payload,
85
97
  })
86
98
  ).toEqual({ foo: ["foo1", "foo3"], bar });
87
99
  });
@@ -1,4 +1,5 @@
1
1
  import _ from "lodash/fp";
2
+ import { applyUserSearchFilter } from "@truedat/dd/routines";
2
3
  import {
3
4
  addRuleFilter,
4
5
  closeRuleFilter,
@@ -15,6 +16,10 @@ export const ruleActiveFilters = (state = initialState, { type, payload }) => {
15
16
  const { filter } = payload;
16
17
  return { ...state, [filter]: [] };
17
18
  }
19
+ case applyUserSearchFilter.TRIGGER: {
20
+ const { userFilter, scope } = payload;
21
+ return scope === "rule" ? _.prop("filters")(userFilter) : state;
22
+ }
18
23
  case closeRuleFilter.TRIGGER: {
19
24
  const { filter } = payload;
20
25
  const values = _.propOr([], filter)(state);
@@ -1,4 +1,5 @@
1
1
  import _ from "lodash/fp";
2
+ import { applyUserSearchFilter } from "@truedat/dd/routines";
2
3
  import {
3
4
  addImplementationFilter,
4
5
  closeImplementationFilter,
@@ -18,6 +19,12 @@ export const ruleImplementationActiveFilters = (
18
19
  const { filter } = payload;
19
20
  return { ...state, [filter]: [] };
20
21
  }
22
+ case applyUserSearchFilter.TRIGGER: {
23
+ const { userFilter, scope } = payload;
24
+ return scope === "rule_implementation"
25
+ ? _.prop("filters")(userFilter)
26
+ : state;
27
+ }
21
28
  case closeImplementationFilter.TRIGGER: {
22
29
  const { filter } = payload;
23
30
  const values = _.propOr([], filter)(state);