@truedat/bg 6.3.2 → 6.3.4
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/package.json +6 -6
- package/src/concepts/api.js +3 -7
- package/src/concepts/components/ConceptActions.js +1 -0
- package/src/concepts/components/ConceptCreate.js +6 -4
- package/src/concepts/components/ConceptRoutes.js +10 -33
- package/src/concepts/components/Concepts.js +25 -16
- package/src/concepts/components/ConceptsActions.js +8 -14
- package/src/concepts/components/ConceptsBulkUpdate.js +25 -64
- package/src/concepts/components/ConceptsLabelResults.js +13 -26
- package/src/concepts/components/ConceptsLinksManagement.js +6 -92
- package/src/concepts/components/ConceptsPagination.js +13 -11
- package/src/concepts/components/ConceptsPanel.js +51 -22
- package/src/concepts/components/ConceptsTable.js +77 -106
- package/src/concepts/components/ConceptsUpdateButton.js +49 -37
- package/src/concepts/components/DomainConcepts.js +2 -11
- package/src/concepts/components/LinkedMessage.js +81 -0
- package/src/concepts/components/__tests__/ConceptLinksManagement.spec.js +60 -12
- package/src/concepts/components/__tests__/Concepts.spec.js +66 -11
- package/src/concepts/components/__tests__/ConceptsActions.spec.js +47 -3
- package/src/concepts/components/__tests__/ConceptsBulkUpdate.spec.js +7 -3
- package/src/concepts/components/__tests__/ConceptsLabelResults.spec.js +34 -4
- package/src/concepts/components/__tests__/ConceptsPanel.spec.js +59 -13
- package/src/concepts/components/__tests__/ConceptsTable.spec.js +53 -6
- package/src/concepts/components/__tests__/ConceptsUpdateButton.spec.js +26 -13
- package/src/concepts/components/__tests__/__snapshots__/ConceptLinksManagement.spec.js.snap +164 -8
- package/src/concepts/components/__tests__/__snapshots__/Concepts.spec.js.snap +284 -34
- package/src/concepts/components/__tests__/__snapshots__/ConceptsActions.spec.js.snap +1 -1
- package/src/concepts/components/__tests__/__snapshots__/ConceptsPanel.spec.js.snap +125 -2
- package/src/concepts/components/__tests__/__snapshots__/ConceptsTable.spec.js.snap +28 -44
- package/src/concepts/components/__tests__/__snapshots__/ConceptsUpdateButton.spec.js.snap +10 -47
- package/src/concepts/hooks/useConcepts.js +34 -0
- package/src/concepts/reducers/bulkUpdateQueryInfo.js +12 -0
- package/src/concepts/reducers/index.js +2 -26
- package/src/concepts/relations/components/ConceptRelationsRoutes.js +39 -35
- package/src/concepts/relations/components/ConceptSelector.js +37 -31
- package/src/concepts/relations/components/__tests__/ConceptRelationForm.spec.js +63 -23
- package/src/concepts/relations/components/__tests__/ConceptSelector.spec.js +74 -41
- package/src/concepts/relations/components/__tests__/ConceptSelector2.spec.js +72 -0
- package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationForm.spec.js.snap +44 -8
- package/src/concepts/relations/components/__tests__/__snapshots__/ConceptSelector.spec.js.snap +44 -27
- package/src/concepts/routines.js +2 -29
- package/src/concepts/sagas/__tests__/bulkUpdate.spec.js +6 -10
- package/src/concepts/sagas/__tests__/downloadConcepts.spec.js +4 -8
- package/src/concepts/sagas/bulkUpdate.js +6 -5
- package/src/concepts/sagas/downloadConcepts.js +3 -4
- package/src/concepts/sagas/index.js +2 -17
- package/src/concepts/selectors/getConceptColumns.js +12 -21
- package/src/concepts/selectors/index.js +1 -7
- package/src/concepts/utils/filterOptions.js +6 -5
- package/src/concepts/components/ConceptFilters.js +0 -20
- package/src/concepts/components/ConceptFiltersLoader.js +0 -27
- package/src/concepts/components/ConceptSelectedFilters.js +0 -29
- package/src/concepts/components/ConceptSelectedFiltersDefault.js +0 -42
- package/src/concepts/components/ConceptSelectedFiltersPending.js +0 -41
- package/src/concepts/components/ConceptSelectedFiltersPublished.js +0 -73
- package/src/concepts/components/ConceptUserFiltersLoader.js +0 -27
- package/src/concepts/components/ConceptsLoader.js +0 -38
- package/src/concepts/components/ConceptsSearch.js +0 -32
- package/src/concepts/components/__tests__/ConceptFilters.spec.js +0 -19
- package/src/concepts/components/__tests__/ConceptSelectedFilters.spec.js +0 -10
- package/src/concepts/components/__tests__/ConceptUserFiltersLoader.spec.js +0 -27
- package/src/concepts/components/__tests__/ConceptsLoader.spec.js +0 -34
- package/src/concepts/components/__tests__/__snapshots__/ConceptFilters.spec.js.snap +0 -47
- package/src/concepts/components/__tests__/__snapshots__/ConceptSelectedFilters.spec.js.snap +0 -9
- package/src/concepts/components/__tests__/__snapshots__/ConceptUserFiltersLoader.spec.js.snap +0 -3
- package/src/concepts/reducers/__tests__/conceptActiveFilters.spec.js +0 -83
- package/src/concepts/reducers/__tests__/conceptCount.spec.js +0 -33
- package/src/concepts/reducers/__tests__/conceptFilters.spec.js +0 -49
- package/src/concepts/reducers/__tests__/conceptFiltersLoading.spec.js +0 -28
- package/src/concepts/reducers/__tests__/conceptQuery.spec.js +0 -75
- package/src/concepts/reducers/__tests__/conceptSelectedFilter.spec.js +0 -66
- package/src/concepts/reducers/__tests__/conceptSelectedUserFilter.spec.js +0 -53
- package/src/concepts/reducers/__tests__/conceptUserFilters.spec.js +0 -76
- package/src/concepts/reducers/__tests__/concepts.spec.js +0 -40
- package/src/concepts/reducers/__tests__/conceptsActions.spec.js +0 -38
- package/src/concepts/reducers/__tests__/conceptsLoading.spec.js +0 -32
- package/src/concepts/reducers/__tests__/conceptsPageSize.spec.js +0 -33
- package/src/concepts/reducers/__tests__/previousConceptQuery.spec.js +0 -23
- package/src/concepts/reducers/conceptActiveFilters.js +0 -58
- package/src/concepts/reducers/conceptCount.js +0 -20
- package/src/concepts/reducers/conceptFilters.js +0 -21
- package/src/concepts/reducers/conceptFiltersLoading.js +0 -14
- package/src/concepts/reducers/conceptQuery.js +0 -60
- package/src/concepts/reducers/conceptSelectedFilter.js +0 -34
- package/src/concepts/reducers/conceptSelectedUserFilter.js +0 -31
- package/src/concepts/reducers/conceptUserFilters.js +0 -36
- package/src/concepts/reducers/concepts.js +0 -21
- package/src/concepts/reducers/conceptsActions.js +0 -24
- package/src/concepts/reducers/conceptsLoading.js +0 -16
- package/src/concepts/reducers/conceptsPageSize.js +0 -16
- package/src/concepts/reducers/previousConceptQuery.js +0 -15
- package/src/concepts/sagas/__tests__/deleteConceptUserFilter.spec.js +0 -75
- package/src/concepts/sagas/__tests__/fetchConceptUserFilters.spec.js +0 -70
- package/src/concepts/sagas/__tests__/fetchConcepts.spec.js +0 -87
- package/src/concepts/sagas/__tests__/saveConceptFilters.spec.js +0 -78
- package/src/concepts/sagas/deleteConceptUserFilter.js +0 -34
- package/src/concepts/sagas/fecthConceptUserFilters.js +0 -30
- package/src/concepts/sagas/fetchConceptFilters.js +0 -29
- package/src/concepts/sagas/fetchConcepts.js +0 -27
- package/src/concepts/sagas/saveConceptFilters.js +0 -30
- package/src/concepts/selectors/__tests__/getConceptAvailableFilters.spec.js +0 -16
- package/src/concepts/selectors/__tests__/getConceptFilterTypes.spec.js +0 -19
- package/src/concepts/selectors/__tests__/getConceptSelectedFilterActiveValues.spec.js +0 -16
- package/src/concepts/selectors/__tests__/getConceptSelectedFilterValues.spec.js +0 -15
- package/src/concepts/selectors/__tests__/getConceptSelectedFilters.spec.js +0 -15
- package/src/concepts/selectors/__tests__/mapSelectedFilterStateToPropsByStatus.spec.js +0 -37
- package/src/concepts/selectors/getConceptAvailableFilters.js +0 -15
- package/src/concepts/selectors/getConceptFilterTypes.js +0 -7
- package/src/concepts/selectors/getConceptSelectedFilterActiveValues.js +0 -9
- package/src/concepts/selectors/getConceptSelectedFilterValues.js +0 -12
- package/src/concepts/selectors/getConceptSelectedFilters.js +0 -7
- package/src/concepts/selectors/getPreviousConceptQuery.js +0 -1
- package/src/concepts/selectors/mapSelectedFilterStateToPropsByStatus.js +0 -47
|
@@ -5,11 +5,12 @@ import { FormattedMessage } from "react-intl";
|
|
|
5
5
|
import { createSelector } from "reselect";
|
|
6
6
|
import Moment from "react-moment";
|
|
7
7
|
|
|
8
|
-
const iconDecorator = field =>
|
|
8
|
+
const iconDecorator = (field) =>
|
|
9
|
+
field > 0 ? <Icon name="check circle" /> : "";
|
|
9
10
|
|
|
10
|
-
const translateDecorator = text => <FormattedMessage id={text} />;
|
|
11
|
+
const translateDecorator = (text) => <FormattedMessage id={text} />;
|
|
11
12
|
|
|
12
|
-
const dateDecorator = date => (
|
|
13
|
+
const dateDecorator = (date) => (
|
|
13
14
|
<Moment locale="es" date={date} format="YYYY-MM-DD HH:mm" />
|
|
14
15
|
);
|
|
15
16
|
|
|
@@ -19,50 +20,40 @@ const defaultConceptColumns = [
|
|
|
19
20
|
name: "domain",
|
|
20
21
|
sort: { name: "domain.name.sort" },
|
|
21
22
|
fieldSelector: _.path("domain.name"),
|
|
22
|
-
width: 3
|
|
23
|
+
width: 3,
|
|
23
24
|
},
|
|
24
25
|
{
|
|
25
26
|
name: "status",
|
|
26
27
|
sort: { name: "status" },
|
|
27
|
-
fieldDecorator: field => translateDecorator(`concepts.status.${field}`),
|
|
28
|
-
width: 2
|
|
28
|
+
fieldDecorator: (field) => translateDecorator(`concepts.status.${field}`),
|
|
29
|
+
width: 2,
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
32
|
name: "rule_count",
|
|
32
33
|
sort: { name: "rule_count" },
|
|
33
34
|
fieldDecorator: iconDecorator,
|
|
34
35
|
textAlign: "center",
|
|
35
|
-
width: 1
|
|
36
|
+
width: 1,
|
|
36
37
|
},
|
|
37
38
|
{
|
|
38
39
|
name: "link_count",
|
|
39
40
|
sort: { name: "link_count" },
|
|
40
41
|
fieldDecorator: iconDecorator,
|
|
41
42
|
textAlign: "center",
|
|
42
|
-
width: 1
|
|
43
|
+
width: 1,
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
46
|
name: "last_change_at",
|
|
46
47
|
sort: { name: "last_change_at" },
|
|
47
48
|
fieldDecorator: dateDecorator,
|
|
48
49
|
textAlign: "center",
|
|
49
|
-
width: 2
|
|
50
|
-
}
|
|
50
|
+
width: 2,
|
|
51
|
+
},
|
|
51
52
|
];
|
|
52
53
|
|
|
53
|
-
const
|
|
54
|
-
const getColumns = state => state.conceptsColumns;
|
|
54
|
+
const getColumns = (state) => state.conceptsColumns;
|
|
55
55
|
|
|
56
56
|
export const getConceptColumns = createSelector(
|
|
57
57
|
getColumns,
|
|
58
58
|
_.defaultTo(defaultConceptColumns)
|
|
59
59
|
);
|
|
60
|
-
|
|
61
|
-
const getConceptColumnNames = createSelector(getConceptColumns, _.map("name"));
|
|
62
|
-
|
|
63
|
-
export const getConceptsRows = createSelector(
|
|
64
|
-
getConcepts,
|
|
65
|
-
getConceptColumnNames,
|
|
66
|
-
(concepts, columnNames) =>
|
|
67
|
-
_.map(_.pick([...columnNames, "id", "business_concept_id"]))(concepts)
|
|
68
|
-
);
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { getConceptAvailableFilters } from "./getConceptAvailableFilters";
|
|
1
|
+
export { getConceptColumns } from "./getConceptColumns";
|
|
3
2
|
export { getConceptDomainPath } from "./getConceptDomainPath";
|
|
4
|
-
export { getConceptFilterTypes } from "./getConceptFilterTypes";
|
|
5
|
-
export { getConceptSelectedFilters } from "./getConceptSelectedFilters";
|
|
6
|
-
export { getConceptSelectedFilterActiveValues } from "./getConceptSelectedFilterActiveValues";
|
|
7
|
-
export { getConceptSelectedFilterValues } from "./getConceptSelectedFilterValues";
|
|
8
3
|
export {
|
|
9
4
|
getConceptUploadEventColumns,
|
|
10
5
|
defaultConceptsUploadEventColumns,
|
|
11
6
|
} from "./getConceptUploadEventColumns";
|
|
12
7
|
export { getParsedEvents } from "./getParsedEvents";
|
|
13
|
-
export { getPreviousConceptQuery } from "./getPreviousConceptQuery";
|
|
14
8
|
export { getTemplateFields } from "./getTemplateFields";
|
|
15
9
|
export { getTemplateGroups } from "./getTemplateGroups";
|
|
16
10
|
export * from "../relations/selectors";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export const translations = formatMessage => ({
|
|
2
|
-
status: v =>
|
|
3
|
-
|
|
1
|
+
export const translations = (formatMessage) => ({
|
|
2
|
+
status: (v) =>
|
|
3
|
+
formatMessage({ id: `concepts.status.${v}`, defaultMessage: v }),
|
|
4
|
+
rule_count: (v) =>
|
|
4
5
|
formatMessage({ id: `concepts.rule_count.${v}`, defaultMessage: v }),
|
|
5
|
-
link_count: v =>
|
|
6
|
-
formatMessage({ id: `concepts.link_count.${v}`, defaultMessage: v })
|
|
6
|
+
link_count: (v) =>
|
|
7
|
+
formatMessage({ id: `concepts.link_count.${v}`, defaultMessage: v }),
|
|
7
8
|
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { bindActionCreators } from "redux";
|
|
2
|
-
import { connect } from "react-redux";
|
|
3
|
-
import { AvailableFilters } from "@truedat/core/components";
|
|
4
|
-
import { addConceptFilter, resetConceptFilters } from "../routines";
|
|
5
|
-
import { getConceptAvailableFilters } from "../selectors";
|
|
6
|
-
|
|
7
|
-
const mapStateToProps = (state) => ({
|
|
8
|
-
filters: getConceptAvailableFilters(state),
|
|
9
|
-
disabled: state.conceptFiltersLoading,
|
|
10
|
-
loading: state.conceptFiltersLoading,
|
|
11
|
-
filtersGroup: state.conceptFiltersGroup || [],
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
const mapDispatchToProps = (dispatch) =>
|
|
15
|
-
bindActionCreators(
|
|
16
|
-
{ addFilter: addConceptFilter, resetFilters: resetConceptFilters },
|
|
17
|
-
dispatch
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
export default connect(mapStateToProps, mapDispatchToProps)(AvailableFilters);
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { connect } from "react-redux";
|
|
2
|
-
import { bindActionCreators } from "redux";
|
|
3
|
-
import { FiltersLoader } from "@truedat/core/components";
|
|
4
|
-
import { makeActiveFiltersSelector } from "@truedat/core/selectors";
|
|
5
|
-
import { clearConceptFilters, fetchConceptFilters } from "../routines";
|
|
6
|
-
|
|
7
|
-
const EMPTY = {};
|
|
8
|
-
|
|
9
|
-
const mapDispatchToProps = (dispatch) =>
|
|
10
|
-
bindActionCreators(
|
|
11
|
-
{ clearFilters: clearConceptFilters, fetchFilters: fetchConceptFilters },
|
|
12
|
-
dispatch
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
const makeMapStateToProps = () => {
|
|
16
|
-
const activeFiltersSelector = makeActiveFiltersSelector(
|
|
17
|
-
"conceptActiveFilters"
|
|
18
|
-
);
|
|
19
|
-
const mapStateToProps = (state, props) => ({
|
|
20
|
-
selectedFilter: state.conceptSelectedFilter,
|
|
21
|
-
filters: activeFiltersSelector(state, props),
|
|
22
|
-
defaultFilters: props?.defaultFilters || EMPTY,
|
|
23
|
-
});
|
|
24
|
-
return mapStateToProps;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export default connect(makeMapStateToProps, mapDispatchToProps)(FiltersLoader);
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { Route, Switch } from "react-router-dom";
|
|
3
|
-
import {
|
|
4
|
-
CONCEPTS,
|
|
5
|
-
CONCEPTS_PENDING,
|
|
6
|
-
DOMAIN_CONCEPTS,
|
|
7
|
-
} from "@truedat/core/routes";
|
|
8
|
-
import ConceptSelectedFiltersDefault from "./ConceptSelectedFiltersDefault";
|
|
9
|
-
import ConceptSelectedFiltersPending from "./ConceptSelectedFiltersPending";
|
|
10
|
-
import ConceptSelectedFiltersPublished from "./ConceptSelectedFiltersPublished";
|
|
11
|
-
|
|
12
|
-
export const ConceptSelectedFilters = () => (
|
|
13
|
-
<Switch>
|
|
14
|
-
<Route
|
|
15
|
-
exact
|
|
16
|
-
path={DOMAIN_CONCEPTS}
|
|
17
|
-
component={ConceptSelectedFiltersPublished}
|
|
18
|
-
/>
|
|
19
|
-
<Route exact path={CONCEPTS} component={ConceptSelectedFiltersPublished} />
|
|
20
|
-
<Route
|
|
21
|
-
exact
|
|
22
|
-
path={CONCEPTS_PENDING}
|
|
23
|
-
component={ConceptSelectedFiltersPending}
|
|
24
|
-
/>
|
|
25
|
-
<Route component={ConceptSelectedFiltersDefault} />
|
|
26
|
-
</Switch>
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
export default ConceptSelectedFilters;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { injectIntl } from "react-intl";
|
|
2
|
-
import { bindActionCreators, compose } from "redux";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { SelectedFilters } from "@truedat/core/components";
|
|
5
|
-
import {
|
|
6
|
-
applyConceptUserFilter,
|
|
7
|
-
deleteConceptUserFilter,
|
|
8
|
-
saveConceptFilters,
|
|
9
|
-
closeConceptFilter,
|
|
10
|
-
openConceptFilter,
|
|
11
|
-
removeConceptFilter,
|
|
12
|
-
resetConceptFilters,
|
|
13
|
-
toggleConceptFilterValue,
|
|
14
|
-
} from "../routines";
|
|
15
|
-
import { mapSelectedFilterStateToPropsByStatus } from "../selectors/mapSelectedFilterStateToPropsByStatus";
|
|
16
|
-
|
|
17
|
-
const mapStateToProps = mapSelectedFilterStateToPropsByStatus([
|
|
18
|
-
"draft",
|
|
19
|
-
"pending_approval",
|
|
20
|
-
"published",
|
|
21
|
-
"rejected",
|
|
22
|
-
]);
|
|
23
|
-
|
|
24
|
-
const mapDispatchToProps = (dispatch) =>
|
|
25
|
-
bindActionCreators(
|
|
26
|
-
{
|
|
27
|
-
applyUserFilter: applyConceptUserFilter,
|
|
28
|
-
deleteUserFilter: deleteConceptUserFilter,
|
|
29
|
-
saveFilters: saveConceptFilters,
|
|
30
|
-
closeFilter: closeConceptFilter,
|
|
31
|
-
openFilter: openConceptFilter,
|
|
32
|
-
removeFilter: removeConceptFilter,
|
|
33
|
-
resetFilters: resetConceptFilters,
|
|
34
|
-
toggleFilterValue: toggleConceptFilterValue,
|
|
35
|
-
},
|
|
36
|
-
dispatch
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
export default compose(
|
|
40
|
-
injectIntl,
|
|
41
|
-
connect(mapStateToProps, mapDispatchToProps)
|
|
42
|
-
)(SelectedFilters);
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { injectIntl } from "react-intl";
|
|
2
|
-
import { bindActionCreators, compose } from "redux";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { SelectedFilters } from "@truedat/core/components";
|
|
5
|
-
import {
|
|
6
|
-
applyConceptUserFilter,
|
|
7
|
-
closeConceptFilter,
|
|
8
|
-
deleteConceptUserFilter,
|
|
9
|
-
openConceptFilter,
|
|
10
|
-
removeConceptFilter,
|
|
11
|
-
resetConceptFilters,
|
|
12
|
-
saveConceptFilters,
|
|
13
|
-
toggleConceptFilterValue,
|
|
14
|
-
} from "../routines";
|
|
15
|
-
import { mapSelectedFilterStateToPropsByStatus } from "../selectors/mapSelectedFilterStateToPropsByStatus";
|
|
16
|
-
|
|
17
|
-
const mapStateToProps = mapSelectedFilterStateToPropsByStatus([
|
|
18
|
-
"draft",
|
|
19
|
-
"pending_approval",
|
|
20
|
-
"rejected",
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
const mapDispatchToProps = (dispatch) =>
|
|
24
|
-
bindActionCreators(
|
|
25
|
-
{
|
|
26
|
-
applyUserFilter: applyConceptUserFilter,
|
|
27
|
-
closeFilter: closeConceptFilter,
|
|
28
|
-
deleteUserFilter: deleteConceptUserFilter,
|
|
29
|
-
openFilter: openConceptFilter,
|
|
30
|
-
removeFilter: removeConceptFilter,
|
|
31
|
-
resetFilters: resetConceptFilters,
|
|
32
|
-
saveFilters: saveConceptFilters,
|
|
33
|
-
toggleFilterValue: toggleConceptFilterValue,
|
|
34
|
-
},
|
|
35
|
-
dispatch
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
export default compose(
|
|
39
|
-
injectIntl,
|
|
40
|
-
connect(mapStateToProps, mapDispatchToProps)
|
|
41
|
-
)(SelectedFilters);
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import _ from "lodash/fp";
|
|
2
|
-
import { bindActionCreators, compose } from "redux";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { injectIntl } from "react-intl";
|
|
5
|
-
import { SelectedFilters } from "@truedat/core/components";
|
|
6
|
-
import { makeOption } from "@truedat/core/services/i18n";
|
|
7
|
-
import {
|
|
8
|
-
applyConceptUserFilter,
|
|
9
|
-
closeConceptFilter,
|
|
10
|
-
deleteConceptUserFilter,
|
|
11
|
-
openConceptFilter,
|
|
12
|
-
removeConceptFilter,
|
|
13
|
-
resetConceptFilters,
|
|
14
|
-
saveConceptFilters,
|
|
15
|
-
toggleConceptFilterValue,
|
|
16
|
-
} from "../routines";
|
|
17
|
-
import {
|
|
18
|
-
getConceptSelectedFilterActiveValues,
|
|
19
|
-
getConceptSelectedFilters,
|
|
20
|
-
getConceptSelectedFilterValues,
|
|
21
|
-
getConceptFilterTypes,
|
|
22
|
-
} from "../selectors";
|
|
23
|
-
import { translations } from "../utils/filterOptions";
|
|
24
|
-
|
|
25
|
-
export const mapStateToProps = (state, ownProps) => {
|
|
26
|
-
const formatMessage = _.pathOr(_.prop("id"), "intl.formatMessage")(ownProps);
|
|
27
|
-
const {
|
|
28
|
-
conceptSelectedFilter: selectedFilter,
|
|
29
|
-
conceptSelectedUserFilter: selectedUserFilter,
|
|
30
|
-
conceptActiveFilters: activeFilters,
|
|
31
|
-
conceptUserFilters: userFilters,
|
|
32
|
-
conceptFiltersLoading: loading,
|
|
33
|
-
} = state;
|
|
34
|
-
const selectedFilterValues = getConceptSelectedFilterValues(state);
|
|
35
|
-
const selectedFilterActiveValues =
|
|
36
|
-
getConceptSelectedFilterActiveValues(state);
|
|
37
|
-
return {
|
|
38
|
-
activeFilters,
|
|
39
|
-
loading,
|
|
40
|
-
filterTypes: getConceptFilterTypes(state),
|
|
41
|
-
selectedFilter,
|
|
42
|
-
selectedFilters: _.flow(
|
|
43
|
-
getConceptSelectedFilters,
|
|
44
|
-
_.without(["status"])
|
|
45
|
-
)(state),
|
|
46
|
-
selectedFilterActiveValues,
|
|
47
|
-
selectedFilterValues: _.map(
|
|
48
|
-
makeOption(translations(formatMessage), selectedFilter)
|
|
49
|
-
)(selectedFilterValues),
|
|
50
|
-
selectedUserFilter,
|
|
51
|
-
userFilters,
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const mapDispatchToProps = (dispatch) =>
|
|
56
|
-
bindActionCreators(
|
|
57
|
-
{
|
|
58
|
-
applyUserFilter: applyConceptUserFilter,
|
|
59
|
-
closeFilter: closeConceptFilter,
|
|
60
|
-
deleteUserFilter: deleteConceptUserFilter,
|
|
61
|
-
openFilter: openConceptFilter,
|
|
62
|
-
removeFilter: removeConceptFilter,
|
|
63
|
-
resetFilters: resetConceptFilters,
|
|
64
|
-
saveFilters: saveConceptFilters,
|
|
65
|
-
toggleFilterValue: toggleConceptFilterValue,
|
|
66
|
-
},
|
|
67
|
-
dispatch
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
export default compose(
|
|
71
|
-
injectIntl,
|
|
72
|
-
connect(mapStateToProps, mapDispatchToProps)
|
|
73
|
-
)(SelectedFilters);
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { clearConceptUserFilters, fetchConceptUserFilters } from "../routines";
|
|
5
|
-
|
|
6
|
-
export const ConceptUserFiltersLoader = ({
|
|
7
|
-
clearConceptUserFilters,
|
|
8
|
-
fetchConceptUserFilters,
|
|
9
|
-
}) => {
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
fetchConceptUserFilters();
|
|
12
|
-
return () => {
|
|
13
|
-
clearConceptUserFilters();
|
|
14
|
-
};
|
|
15
|
-
}, [clearConceptUserFilters, fetchConceptUserFilters]);
|
|
16
|
-
return null;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
ConceptUserFiltersLoader.propTypes = {
|
|
20
|
-
clearConceptUserFilters: PropTypes.func,
|
|
21
|
-
fetchConceptUserFilters: PropTypes.func,
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export default connect(null, {
|
|
25
|
-
clearConceptUserFilters,
|
|
26
|
-
fetchConceptUserFilters,
|
|
27
|
-
})(ConceptUserFiltersLoader);
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { makeSearchQuerySelector } from "@truedat/core/selectors";
|
|
5
|
-
import { clearConcepts, fetchConcepts } from "../routines";
|
|
6
|
-
|
|
7
|
-
export const ConceptsLoader = ({ clearConcepts, fetchConcepts, payload }) => {
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
return () => {
|
|
10
|
-
clearConcepts();
|
|
11
|
-
};
|
|
12
|
-
}, [clearConcepts]);
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
fetchConcepts(payload);
|
|
15
|
-
}, [payload, fetchConcepts]);
|
|
16
|
-
return null;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
ConceptsLoader.propTypes = {
|
|
20
|
-
clearConcepts: PropTypes.func,
|
|
21
|
-
fetchConcepts: PropTypes.func,
|
|
22
|
-
payload: PropTypes.object,
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const makeMapStateToProps = () => {
|
|
26
|
-
const searchQuerySelector = makeSearchQuerySelector(
|
|
27
|
-
"conceptQuery",
|
|
28
|
-
"conceptActiveFilters"
|
|
29
|
-
);
|
|
30
|
-
const mapStateToProps = (state, props) => ({
|
|
31
|
-
payload: searchQuerySelector(state, props),
|
|
32
|
-
});
|
|
33
|
-
return mapStateToProps;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default connect(makeMapStateToProps, { clearConcepts, fetchConcepts })(
|
|
37
|
-
ConceptsLoader
|
|
38
|
-
);
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { Input } from "semantic-ui-react";
|
|
5
|
-
import { useIntl } from "react-intl";
|
|
6
|
-
import { searchConcepts } from "../routines";
|
|
7
|
-
import ConceptFilters from "./ConceptFilters";
|
|
8
|
-
|
|
9
|
-
const ConceptsSearch = ({ query, searchConcepts, loading }) => {
|
|
10
|
-
const { formatMessage } = useIntl();
|
|
11
|
-
return (
|
|
12
|
-
<Input
|
|
13
|
-
value={query}
|
|
14
|
-
onChange={(_e, data) => searchConcepts({ query: data.value })}
|
|
15
|
-
icon={{ name: "search", link: true }}
|
|
16
|
-
iconPosition="left"
|
|
17
|
-
action={<ConceptFilters />}
|
|
18
|
-
placeholder={formatMessage({ id: "concepts.search.placeholder" })}
|
|
19
|
-
loading={loading}
|
|
20
|
-
/>
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
ConceptsSearch.propTypes = {
|
|
25
|
-
query: PropTypes.string,
|
|
26
|
-
searchConcepts: PropTypes.func,
|
|
27
|
-
loading: PropTypes.bool,
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const mapStateToProps = ({ conceptQuery }) => ({ query: conceptQuery?.query });
|
|
31
|
-
|
|
32
|
-
export default connect(mapStateToProps, { searchConcepts })(ConceptsSearch);
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render } from "@truedat/test/render";
|
|
3
|
-
import ConceptFilters from "../ConceptFilters";
|
|
4
|
-
|
|
5
|
-
const state = {
|
|
6
|
-
conceptFilters: {
|
|
7
|
-
domain_id: { values: [1, 2] },
|
|
8
|
-
confidential: { values: ["yes", "no"] },
|
|
9
|
-
},
|
|
10
|
-
conceptActiveFilters: { domain_id: [1] },
|
|
11
|
-
};
|
|
12
|
-
const renderOpts = { state };
|
|
13
|
-
|
|
14
|
-
describe("<ConceptFilters />", () => {
|
|
15
|
-
it("matches the latest snapshot", () => {
|
|
16
|
-
const { container } = render(<ConceptFilters />, renderOpts);
|
|
17
|
-
expect(container).toMatchSnapshot();
|
|
18
|
-
});
|
|
19
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render } from "@truedat/test/render";
|
|
3
|
-
import { ConceptSelectedFilters } from "../ConceptSelectedFilters";
|
|
4
|
-
|
|
5
|
-
describe("<ConceptSelectedFilters />", () => {
|
|
6
|
-
it("matches the latest snapshot", () => {
|
|
7
|
-
const { container } = render(<ConceptSelectedFilters />);
|
|
8
|
-
expect(container).toMatchSnapshot();
|
|
9
|
-
});
|
|
10
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { shallow, mount } from "enzyme";
|
|
3
|
-
import { ConceptUserFiltersLoader } from "../ConceptUserFiltersLoader";
|
|
4
|
-
|
|
5
|
-
describe("<ConceptUserFiltersLoader />", () => {
|
|
6
|
-
const fetchConceptUserFilters = jest.fn();
|
|
7
|
-
const clearConceptUserFilters = jest.fn();
|
|
8
|
-
|
|
9
|
-
it("matches the latest snapshot", () => {
|
|
10
|
-
const props = { clearConceptUserFilters, fetchConceptUserFilters };
|
|
11
|
-
const wrapper = shallow(<ConceptUserFiltersLoader {...props} />);
|
|
12
|
-
expect(wrapper).toMatchSnapshot();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("calls fetchConceptUserFilters when component mounts, clearConceptUserFilters when component unmounts", () => {
|
|
16
|
-
const fetchConceptUserFilters = jest.fn();
|
|
17
|
-
const clearConceptUserFilters = jest.fn();
|
|
18
|
-
|
|
19
|
-
const props = { fetchConceptUserFilters, clearConceptUserFilters };
|
|
20
|
-
const wrapper = mount(<ConceptUserFiltersLoader {...props} />);
|
|
21
|
-
expect(clearConceptUserFilters.mock.calls.length).toBe(0);
|
|
22
|
-
expect(fetchConceptUserFilters.mock.calls.length).toBe(1);
|
|
23
|
-
wrapper.unmount();
|
|
24
|
-
expect(clearConceptUserFilters.mock.calls.length).toBe(1);
|
|
25
|
-
expect(fetchConceptUserFilters.mock.calls.length).toBe(1);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { mount } from "enzyme";
|
|
3
|
-
import { ConceptsLoader } from "../ConceptsLoader";
|
|
4
|
-
|
|
5
|
-
const getProps = () => ({
|
|
6
|
-
clearConcepts: jest.fn(),
|
|
7
|
-
conceptsLoading: false,
|
|
8
|
-
fetchConcepts: jest.fn(),
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
describe("<ConceptsLoader />", () => {
|
|
12
|
-
it("calls fetchConcepts when component mounts but not when it unmounts", () => {
|
|
13
|
-
const props = getProps();
|
|
14
|
-
const wrapper = mount(<ConceptsLoader {...props} />);
|
|
15
|
-
expect(props.fetchConcepts).toHaveBeenCalledTimes(1);
|
|
16
|
-
wrapper.unmount();
|
|
17
|
-
expect(props.fetchConcepts).toHaveBeenCalledTimes(1);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("calls clearConcepts when component unmounts but not when it mounts", () => {
|
|
21
|
-
const props = getProps();
|
|
22
|
-
const wrapper = mount(<ConceptsLoader {...props} />);
|
|
23
|
-
expect(props.clearConcepts).toHaveBeenCalledTimes(0);
|
|
24
|
-
wrapper.unmount();
|
|
25
|
-
expect(props.clearConcepts).toHaveBeenCalledTimes(1);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("merges default filters with query filters", () => {
|
|
29
|
-
const props = getProps();
|
|
30
|
-
const payload = { foo: "foo" };
|
|
31
|
-
mount(<ConceptsLoader payload={payload} {...props} />);
|
|
32
|
-
expect(props.fetchConcepts).toHaveBeenCalledWith(payload);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`<ConceptFilters /> matches the latest snapshot 1`] = `
|
|
4
|
-
<div>
|
|
5
|
-
<div
|
|
6
|
-
aria-expanded="false"
|
|
7
|
-
class="ui button floating labeled scrolling dropdown icon"
|
|
8
|
-
role="listbox"
|
|
9
|
-
tabindex="0"
|
|
10
|
-
>
|
|
11
|
-
<div
|
|
12
|
-
aria-atomic="true"
|
|
13
|
-
aria-live="polite"
|
|
14
|
-
class="divider text"
|
|
15
|
-
role="alert"
|
|
16
|
-
>
|
|
17
|
-
Filters
|
|
18
|
-
</div>
|
|
19
|
-
<i
|
|
20
|
-
aria-hidden="true"
|
|
21
|
-
class="filter icon"
|
|
22
|
-
/>
|
|
23
|
-
<div
|
|
24
|
-
class="menu transition"
|
|
25
|
-
>
|
|
26
|
-
<div
|
|
27
|
-
class="item"
|
|
28
|
-
role="option"
|
|
29
|
-
>
|
|
30
|
-
<em>
|
|
31
|
-
(reset all filters)
|
|
32
|
-
</em>
|
|
33
|
-
</div>
|
|
34
|
-
<div
|
|
35
|
-
class="item"
|
|
36
|
-
role="option"
|
|
37
|
-
>
|
|
38
|
-
<span
|
|
39
|
-
class="text"
|
|
40
|
-
>
|
|
41
|
-
confidential
|
|
42
|
-
</span>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
`;
|