@truedat/bg 6.3.3 → 6.3.5
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 +57 -20
- 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 +44 -29
- 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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/bg",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.5",
|
|
4
4
|
"description": "Truedat Web Business Glossary",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"jsnext:main": "src/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@testing-library/jest-dom": "^5.16.5",
|
|
35
35
|
"@testing-library/react": "^12.0.0",
|
|
36
36
|
"@testing-library/user-event": "^13.2.1",
|
|
37
|
-
"@truedat/test": "6.3.
|
|
37
|
+
"@truedat/test": "6.3.4",
|
|
38
38
|
"babel-jest": "^28.1.0",
|
|
39
39
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
40
40
|
"babel-plugin-lodash": "^3.3.4",
|
|
@@ -86,9 +86,9 @@
|
|
|
86
86
|
]
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@truedat/core": "6.3.
|
|
90
|
-
"@truedat/df": "6.3.
|
|
91
|
-
"@truedat/lm": "6.3.
|
|
89
|
+
"@truedat/core": "6.3.5",
|
|
90
|
+
"@truedat/df": "6.3.5",
|
|
91
|
+
"@truedat/lm": "6.3.5",
|
|
92
92
|
"decode-uri-component": "^0.2.2",
|
|
93
93
|
"file-saver": "^2.0.5",
|
|
94
94
|
"moment": "^2.29.4",
|
|
@@ -111,5 +111,5 @@
|
|
|
111
111
|
"react-dom": ">= 16.8.6 < 17",
|
|
112
112
|
"semantic-ui-react": ">= 2.0.3 < 2.2"
|
|
113
113
|
},
|
|
114
|
-
"gitHead": "
|
|
114
|
+
"gitHead": "2cacdf1fc99746cb4f8dca7d770662c0d96c5bb7"
|
|
115
115
|
}
|
package/src/concepts/api.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const API_BUSINESS_CONCEPT_VERSION =
|
|
2
2
|
"/api/business_concepts/:business_concept_id/versions/:id";
|
|
3
|
+
const API_BUSINESS_CONCEPT_VERSIONS_ACTIONS =
|
|
4
|
+
"/api/business_concept_versions/actions";
|
|
3
5
|
const API_BUSINESS_CONCEPT_VERSIONS_CSV = "/api/business_concept_versions/csv";
|
|
4
6
|
const API_BUSINESS_CONCEPT_VERSIONS_XLSX =
|
|
5
7
|
"/api/business_concept_versions/xlsx";
|
|
@@ -10,10 +12,6 @@ const API_BUSINESS_CONCEPT_VERSIONS_UPLOAD =
|
|
|
10
12
|
const API_CONCEPT_ARCHIVE = "/api/business_concepts/:id/versions";
|
|
11
13
|
const API_CONCEPT_FILTERS = "/api/business_concept_filters/search";
|
|
12
14
|
const API_CONCEPT_SHARED_DOMAINS = "/api/business_concepts/:id/shared_domains";
|
|
13
|
-
const API_CONCEPT_USER_FILTERS = "/api/business_concept_user_filters";
|
|
14
|
-
const API_CONCEPT_USER_FILTER = "/api/business_concept_user_filters/:id";
|
|
15
|
-
const API_GET_CONCEPT_USER_FILTERS =
|
|
16
|
-
"/api/business_concept_user_filters/user/me";
|
|
17
15
|
const API_BUSINESS_CONCEPT_BULK_UPDATE =
|
|
18
16
|
"/api/business_concept_versions/bulk_update";
|
|
19
17
|
const API_BUSINESS_CONCEPT_BULK_UPLOAD =
|
|
@@ -23,6 +21,7 @@ const API_BUSINESS_CONCEPT_SET_CONFIDENTIAL =
|
|
|
23
21
|
|
|
24
22
|
export {
|
|
25
23
|
API_BUSINESS_CONCEPT_VERSION,
|
|
24
|
+
API_BUSINESS_CONCEPT_VERSIONS_ACTIONS,
|
|
26
25
|
API_BUSINESS_CONCEPT_VERSIONS_CSV,
|
|
27
26
|
API_BUSINESS_CONCEPT_VERSIONS_XLSX,
|
|
28
27
|
API_BUSINESS_CONCEPT_VERSIONS_SEARCH,
|
|
@@ -30,9 +29,6 @@ export {
|
|
|
30
29
|
API_CONCEPT_ARCHIVE,
|
|
31
30
|
API_CONCEPT_FILTERS,
|
|
32
31
|
API_CONCEPT_SHARED_DOMAINS,
|
|
33
|
-
API_CONCEPT_USER_FILTER,
|
|
34
|
-
API_CONCEPT_USER_FILTERS,
|
|
35
|
-
API_GET_CONCEPT_USER_FILTERS,
|
|
36
32
|
API_BUSINESS_CONCEPT_BULK_UPDATE,
|
|
37
33
|
API_BUSINESS_CONCEPT_BULK_UPLOAD,
|
|
38
34
|
API_BUSINESS_CONCEPT_SET_CONFIDENTIAL,
|
|
@@ -8,12 +8,14 @@ import {
|
|
|
8
8
|
formatLocales,
|
|
9
9
|
} from "@truedat/core/services/i18nContent";
|
|
10
10
|
import { conceptAction } from "../routines";
|
|
11
|
+
import { useConceptVersionsActions } from "../hooks/useConcepts";
|
|
11
12
|
import ConceptForms from "./ConceptForms";
|
|
12
13
|
|
|
13
14
|
const actionKey = "create";
|
|
14
15
|
|
|
15
|
-
const ConceptCreate = ({
|
|
16
|
+
const ConceptCreate = ({ conceptActionLoading, conceptAction }) => {
|
|
16
17
|
const { locales, loading: localesLoading } = useLocales(false);
|
|
18
|
+
const { actions: conceptsActions } = useConceptVersionsActions();
|
|
17
19
|
|
|
18
20
|
const [i18nConcept, setI18nConcept] = useState({});
|
|
19
21
|
const [domainId, setDomainId] = useState();
|
|
@@ -55,6 +57,8 @@ const ConceptCreate = ({ action, conceptActionLoading, conceptAction }) => {
|
|
|
55
57
|
if (i18nConceptInit) setI18nConcept(i18nConceptInit);
|
|
56
58
|
}
|
|
57
59
|
|
|
60
|
+
const action = _.prop(actionKey)(conceptsActions);
|
|
61
|
+
|
|
58
62
|
const langs = formatLocales(locales);
|
|
59
63
|
|
|
60
64
|
const handleSubmit = (e) => {
|
|
@@ -104,13 +108,11 @@ const ConceptCreate = ({ action, conceptActionLoading, conceptAction }) => {
|
|
|
104
108
|
};
|
|
105
109
|
|
|
106
110
|
ConceptCreate.propTypes = {
|
|
107
|
-
action: PropTypes.object,
|
|
108
111
|
conceptAction: PropTypes.func,
|
|
109
112
|
conceptActionLoading: PropTypes.string,
|
|
110
113
|
};
|
|
111
114
|
|
|
112
|
-
const mapStateToProps = ({ conceptActionLoading
|
|
113
|
-
action: _.prop(actionKey)(conceptsActions),
|
|
115
|
+
const mapStateToProps = ({ conceptActionLoading }) => ({
|
|
114
116
|
conceptActionLoading,
|
|
115
117
|
});
|
|
116
118
|
|
|
@@ -21,14 +21,12 @@ import { useIntl } from "react-intl";
|
|
|
21
21
|
import Concept from "./Concept";
|
|
22
22
|
import ConceptCrumbs from "./ConceptCrumbs";
|
|
23
23
|
import ConceptEdit from "./ConceptEdit";
|
|
24
|
-
import ConceptFiltersLoader from "./ConceptFiltersLoader";
|
|
25
|
-
import ConceptUserFiltersLoader from "./ConceptUserFiltersLoader";
|
|
26
24
|
import ConceptCreate from "./ConceptCreate";
|
|
27
25
|
import ConceptsLinksManagement from "./ConceptsLinksManagement";
|
|
28
26
|
import ConceptLoader from "./ConceptLoader";
|
|
29
27
|
import Concepts from "./Concepts";
|
|
30
28
|
import ConceptsBulkUpdate from "./ConceptsBulkUpdate";
|
|
31
|
-
|
|
29
|
+
|
|
32
30
|
import ConceptSubscriptionLoader from "./ConceptSubscriptionLoader";
|
|
33
31
|
import ConceptsUploadEvents from "./ConceptsUploadEvents";
|
|
34
32
|
|
|
@@ -56,6 +54,7 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
56
54
|
const archivedConceptsDefaultFilters = {
|
|
57
55
|
status: ["deprecated"],
|
|
58
56
|
};
|
|
57
|
+
|
|
59
58
|
return (
|
|
60
59
|
<>
|
|
61
60
|
<Route
|
|
@@ -94,12 +93,8 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
94
93
|
render={() =>
|
|
95
94
|
authorized ? (
|
|
96
95
|
<>
|
|
97
|
-
<ConceptFiltersLoader
|
|
98
|
-
defaultFilters={pendingConceptsDefaultFilters}
|
|
99
|
-
/>
|
|
100
|
-
<ConceptsLoader defaultFilters={pendingConceptsDefaultFilters} />
|
|
101
|
-
<ConceptUserFiltersLoader />
|
|
102
96
|
<Concepts
|
|
97
|
+
defaultFilters={pendingConceptsDefaultFilters}
|
|
103
98
|
header={formatMessage({ id: "concepts.header.manage" })}
|
|
104
99
|
subheader={formatMessage({ id: "concepts.subheader.manage" })}
|
|
105
100
|
icon="edit"
|
|
@@ -118,12 +113,8 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
118
113
|
render={() =>
|
|
119
114
|
authorized ? (
|
|
120
115
|
<>
|
|
121
|
-
<ConceptFiltersLoader
|
|
122
|
-
defaultFilters={archivedConceptsDefaultFilters}
|
|
123
|
-
/>
|
|
124
|
-
<ConceptsLoader defaultFilters={archivedConceptsDefaultFilters} />
|
|
125
|
-
<ConceptUserFiltersLoader />
|
|
126
116
|
<Concepts
|
|
117
|
+
defaultFilters={archivedConceptsDefaultFilters}
|
|
127
118
|
header={formatMessage({ id: "concepts.header.deprecated" })}
|
|
128
119
|
subheader={formatMessage({
|
|
129
120
|
id: "concepts.subheader.deprecated",
|
|
@@ -146,13 +137,13 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
146
137
|
status: ["published"],
|
|
147
138
|
...(subscope ? { "template.subscope": [subscope] } : {}),
|
|
148
139
|
};
|
|
149
|
-
|
|
150
140
|
return authorized ? (
|
|
151
141
|
<>
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
142
|
+
<Concepts
|
|
143
|
+
header={subscope}
|
|
144
|
+
icon="tags"
|
|
145
|
+
defaultFilters={defaultFilters}
|
|
146
|
+
/>
|
|
156
147
|
</>
|
|
157
148
|
) : (
|
|
158
149
|
<Unauthorized />
|
|
@@ -160,17 +151,6 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
160
151
|
}}
|
|
161
152
|
/>
|
|
162
153
|
|
|
163
|
-
<Route
|
|
164
|
-
path={CONCEPTS}
|
|
165
|
-
render={() => (
|
|
166
|
-
<ConceptsLoader
|
|
167
|
-
defaultFilters={{
|
|
168
|
-
status: ["published"],
|
|
169
|
-
"template.subscope": "",
|
|
170
|
-
}}
|
|
171
|
-
/>
|
|
172
|
-
)}
|
|
173
|
-
/>
|
|
174
154
|
<Route
|
|
175
155
|
path={CONCEPTS}
|
|
176
156
|
render={() =>
|
|
@@ -181,14 +161,11 @@ export const ConceptRoutes = ({ concept, conceptLoaded, templatesLoaded }) => {
|
|
|
181
161
|
path={CONCEPTS}
|
|
182
162
|
render={() => (
|
|
183
163
|
<>
|
|
184
|
-
<
|
|
164
|
+
<Concepts
|
|
185
165
|
defaultFilters={{
|
|
186
166
|
status: ["published"],
|
|
187
167
|
"template.subscope": "",
|
|
188
168
|
}}
|
|
189
|
-
/>
|
|
190
|
-
<ConceptUserFiltersLoader />
|
|
191
|
-
<Concepts
|
|
192
169
|
header={formatMessage({ id: "concepts.header" })}
|
|
193
170
|
subheader={formatMessage({
|
|
194
171
|
id: "concepts.subheader.view",
|
|
@@ -4,28 +4,37 @@ import { Header, Icon, Segment } from "semantic-ui-react";
|
|
|
4
4
|
import ConceptCrumbs from "./ConceptCrumbs";
|
|
5
5
|
import ConceptsPanel from "./ConceptsPanel";
|
|
6
6
|
|
|
7
|
-
export const Concepts = ({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
export const Concepts = ({
|
|
8
|
+
header,
|
|
9
|
+
subheader,
|
|
10
|
+
icon,
|
|
11
|
+
defaultFilters,
|
|
12
|
+
...actions
|
|
13
|
+
}) => {
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
<ConceptCrumbs />
|
|
17
|
+
<Segment>
|
|
18
|
+
<Header as="h2">
|
|
19
|
+
<Icon circular name={icon} />
|
|
20
|
+
<Header.Content>
|
|
21
|
+
{header}
|
|
22
|
+
<Header.Subheader>{subheader}</Header.Subheader>
|
|
23
|
+
</Header.Content>
|
|
24
|
+
</Header>
|
|
25
|
+
<Segment attached="bottom">
|
|
26
|
+
<ConceptsPanel actions={actions} defaultFilters={defaultFilters} />
|
|
27
|
+
</Segment>
|
|
20
28
|
</Segment>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
</>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
24
32
|
|
|
25
33
|
Concepts.propTypes = {
|
|
26
34
|
header: PropTypes.string,
|
|
27
35
|
icon: PropTypes.string,
|
|
28
36
|
subheader: PropTypes.string,
|
|
37
|
+
defaultFilters: PropTypes.object,
|
|
29
38
|
};
|
|
30
39
|
|
|
31
40
|
export default Concepts;
|
|
@@ -6,20 +6,24 @@ import { useIntl } from "react-intl";
|
|
|
6
6
|
import { connect } from "react-redux";
|
|
7
7
|
import { Link } from "react-router-dom";
|
|
8
8
|
import { Button } from "semantic-ui-react";
|
|
9
|
+
import { useSearchContext } from "@truedat/core/search/SearchContext";
|
|
9
10
|
import { downloadConcepts, uploadConcepts } from "../routines";
|
|
10
11
|
import ConceptsUpdateButton from "./ConceptsUpdateButton";
|
|
11
12
|
import ConceptsUploadButton from "./ConceptsUploadButton";
|
|
12
13
|
|
|
13
14
|
export const ConceptsActions = ({
|
|
14
15
|
create,
|
|
15
|
-
createUrl,
|
|
16
16
|
conceptsDownloading,
|
|
17
17
|
downloadConcepts,
|
|
18
|
-
hidden,
|
|
19
18
|
upload,
|
|
20
19
|
update,
|
|
21
20
|
canAutoPublish,
|
|
22
21
|
}) => {
|
|
22
|
+
const { searchData, filterParams: searchParams } = useSearchContext();
|
|
23
|
+
const conceptsActions = _.propOr({}, "_actions")(searchData);
|
|
24
|
+
const hidden = _.isEmpty(conceptsActions);
|
|
25
|
+
const createUrl = conceptsActions?.create ? CONCEPTS_NEW : null;
|
|
26
|
+
|
|
23
27
|
const { formatMessage, locale } = useIntl();
|
|
24
28
|
|
|
25
29
|
return hidden ? null : (
|
|
@@ -37,7 +41,7 @@ export const ConceptsActions = ({
|
|
|
37
41
|
floated="right"
|
|
38
42
|
secondary
|
|
39
43
|
icon="download"
|
|
40
|
-
onClick={() => downloadConcepts({ lang: locale })}
|
|
44
|
+
onClick={() => downloadConcepts({ lang: locale, searchParams })}
|
|
41
45
|
loading={conceptsDownloading}
|
|
42
46
|
data-tooltip={formatMessage({
|
|
43
47
|
id: "concepts.actions.download.tooltip",
|
|
@@ -51,9 +55,7 @@ export const ConceptsActions = ({
|
|
|
51
55
|
|
|
52
56
|
ConceptsActions.propTypes = {
|
|
53
57
|
conceptsDownloading: PropTypes.bool,
|
|
54
|
-
hidden: PropTypes.bool,
|
|
55
58
|
create: PropTypes.bool,
|
|
56
|
-
createUrl: PropTypes.string,
|
|
57
59
|
downloadConcepts: PropTypes.func,
|
|
58
60
|
upload: PropTypes.bool,
|
|
59
61
|
update: PropTypes.bool,
|
|
@@ -64,16 +66,8 @@ ConceptsActions.defaultProps = {
|
|
|
64
66
|
update: true,
|
|
65
67
|
};
|
|
66
68
|
|
|
67
|
-
const mapStateToProps = ({
|
|
68
|
-
conceptActions,
|
|
69
|
-
conceptsActions,
|
|
70
|
-
conceptsDownloading,
|
|
71
|
-
}) => ({
|
|
72
|
-
createUrl:
|
|
73
|
-
_.isEmpty(conceptActions) && conceptsActions?.create ? CONCEPTS_NEW : null,
|
|
69
|
+
const mapStateToProps = ({ conceptsDownloading }) => ({
|
|
74
70
|
conceptsDownloading: conceptsDownloading,
|
|
75
|
-
hidden: _.isEmpty(conceptsActions),
|
|
76
|
-
canAutoPublish: conceptsActions?.autoPublish && true,
|
|
77
71
|
});
|
|
78
72
|
|
|
79
73
|
export default connect(mapStateToProps, { downloadConcepts, uploadConcepts })(
|
|
@@ -2,7 +2,6 @@ import _ from "lodash/fp";
|
|
|
2
2
|
import React, { useState, useEffect } from "react";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import { FormattedMessage } from "react-intl";
|
|
5
|
-
import { useLocation } from "react-router-dom";
|
|
6
5
|
import { connect } from "react-redux";
|
|
7
6
|
import {
|
|
8
7
|
Button,
|
|
@@ -21,10 +20,8 @@ import {
|
|
|
21
20
|
Loading,
|
|
22
21
|
} from "@truedat/core/components";
|
|
23
22
|
import { useTemplate } from "@truedat/core/hooks";
|
|
24
|
-
import { makeSearchQuerySelector } from "@truedat/core/selectors";
|
|
25
|
-
|
|
26
23
|
import { applyTemplateWithoutDefaults } from "@truedat/df/utils";
|
|
27
|
-
import { bulkUpdate
|
|
24
|
+
import { bulkUpdate } from "../routines";
|
|
28
25
|
|
|
29
26
|
const DynamicForm = React.lazy(() =>
|
|
30
27
|
import("@truedat/df/components/DynamicForm")
|
|
@@ -32,12 +29,6 @@ const DynamicForm = React.lazy(() =>
|
|
|
32
29
|
|
|
33
30
|
const isEmptyValue = (value) => !_.isNumber(value) && _.isEmpty(value);
|
|
34
31
|
const fieldsToOmit = ["_confidential"];
|
|
35
|
-
const pendingConceptsFilters = {
|
|
36
|
-
status: ["pending_approval", "draft", "rejected"],
|
|
37
|
-
};
|
|
38
|
-
const conceptFilters = {
|
|
39
|
-
status: ["published"],
|
|
40
|
-
};
|
|
41
32
|
|
|
42
33
|
const TemplateLoader = ({
|
|
43
34
|
templateName,
|
|
@@ -56,7 +47,7 @@ const TemplateLoader = ({
|
|
|
56
47
|
|
|
57
48
|
useEffect(() => {
|
|
58
49
|
setTemplate(template);
|
|
59
|
-
}, [template]);
|
|
50
|
+
}, [template, setTemplate]);
|
|
60
51
|
|
|
61
52
|
return loading || !template ? (
|
|
62
53
|
<Loading />
|
|
@@ -82,12 +73,9 @@ TemplateLoader.propTypes = {
|
|
|
82
73
|
|
|
83
74
|
export const ConceptsBulkUpdate = ({
|
|
84
75
|
loading,
|
|
85
|
-
conceptCount,
|
|
86
|
-
concepts,
|
|
87
|
-
templateName,
|
|
88
76
|
bulkUpdate,
|
|
89
|
-
|
|
90
|
-
|
|
77
|
+
templates,
|
|
78
|
+
bulkUpdateQueryInfo,
|
|
91
79
|
}) => {
|
|
92
80
|
const [content, setContent] = useState({});
|
|
93
81
|
const [domains, setDomains] = useState([]);
|
|
@@ -96,24 +84,17 @@ export const ConceptsBulkUpdate = ({
|
|
|
96
84
|
const [domainId, setDomainId] = useState(null);
|
|
97
85
|
const [template, setTemplate] = useState(null);
|
|
98
86
|
|
|
99
|
-
const {
|
|
100
|
-
const path = search.split("?").pop();
|
|
87
|
+
const { concepts, searchParams, conceptCount } = bulkUpdateQueryInfo;
|
|
101
88
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
...defaultFilters,
|
|
112
|
-
"template.subscope": subscope,
|
|
113
|
-
},
|
|
114
|
-
size: 20,
|
|
115
|
-
});
|
|
116
|
-
}, []);
|
|
89
|
+
const concept = _.head(concepts);
|
|
90
|
+
|
|
91
|
+
const templateName =
|
|
92
|
+
templates && concept?.type
|
|
93
|
+
? _.flow(
|
|
94
|
+
_.find(_.propEq("name", concept.type)),
|
|
95
|
+
_.prop("name")
|
|
96
|
+
)(templates)
|
|
97
|
+
: null;
|
|
117
98
|
|
|
118
99
|
const handleDomainsLoaded = (domains) => {
|
|
119
100
|
setDomainsLoading(false);
|
|
@@ -145,7 +126,8 @@ export const ConceptsBulkUpdate = ({
|
|
|
145
126
|
)(content);
|
|
146
127
|
|
|
147
128
|
bulkUpdate({
|
|
148
|
-
|
|
129
|
+
updateAttributes: { content: parsedContent, domain_id: domainId },
|
|
130
|
+
searchParams,
|
|
149
131
|
});
|
|
150
132
|
};
|
|
151
133
|
|
|
@@ -252,38 +234,17 @@ export const ConceptsBulkUpdate = ({
|
|
|
252
234
|
|
|
253
235
|
ConceptsBulkUpdate.propTypes = {
|
|
254
236
|
loading: PropTypes.bool,
|
|
255
|
-
conceptCount: PropTypes.number,
|
|
256
|
-
concepts: PropTypes.array,
|
|
257
|
-
templateName: PropTypes.string,
|
|
258
237
|
bulkUpdate: PropTypes.func,
|
|
259
|
-
|
|
260
|
-
|
|
238
|
+
templates: PropTypes.array,
|
|
239
|
+
bulkUpdateQueryInfo: PropTypes.object,
|
|
261
240
|
};
|
|
262
241
|
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const mapStateToProps = (state, props) => {
|
|
269
|
-
const concept = _.head(state.concepts);
|
|
270
|
-
const templateName =
|
|
271
|
-
state.templates && concept?.type
|
|
272
|
-
? _.flow(
|
|
273
|
-
_.find(_.propEq("name", concept.type)),
|
|
274
|
-
_.prop("name")
|
|
275
|
-
)(state.templates)
|
|
276
|
-
: null;
|
|
277
|
-
return {
|
|
278
|
-
conceptPayload: searchQuerySelector(state, props),
|
|
279
|
-
loading: state.templateLoading || state.bulkUpdateLoading,
|
|
280
|
-
templateName,
|
|
281
|
-
concepts: state.concepts,
|
|
282
|
-
conceptCount: state.conceptCount,
|
|
283
|
-
};
|
|
242
|
+
const mapStateToProps = (state) => {
|
|
243
|
+
return {
|
|
244
|
+
loading: state.templateLoading || state.bulkUpdateLoading,
|
|
245
|
+
templates: state.templates,
|
|
246
|
+
bulkUpdateQueryInfo: state.bulkUpdateQueryInfo,
|
|
284
247
|
};
|
|
285
|
-
return mapStateToProps;
|
|
286
248
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
);
|
|
249
|
+
|
|
250
|
+
export default connect(mapStateToProps, { bulkUpdate })(ConceptsBulkUpdate);
|
|
@@ -1,30 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
2
|
import { FormattedMessage } from "react-intl";
|
|
5
3
|
import { Label } from "semantic-ui-react";
|
|
4
|
+
import { useSearchContext } from "@truedat/core/search/SearchContext";
|
|
6
5
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
values={{ count
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ConceptsLabelResults.propTypes = {
|
|
21
|
-
conceptCount: PropTypes.number,
|
|
22
|
-
conceptsLoading: PropTypes.bool
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const mapStateToProps = ({ conceptCount, conceptsLoading }) => ({
|
|
26
|
-
conceptCount,
|
|
27
|
-
conceptsLoading
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export default connect(mapStateToProps)(ConceptsLabelResults);
|
|
6
|
+
export default function ConceptsLabelResults() {
|
|
7
|
+
const { loading, count } = useSearchContext();
|
|
8
|
+
return (
|
|
9
|
+
<Label className="concepts-label-results">
|
|
10
|
+
{loading ? (
|
|
11
|
+
<FormattedMessage id="concepts.searching" />
|
|
12
|
+
) : (
|
|
13
|
+
<FormattedMessage id="concepts.retrieved.results" values={{ count }} />
|
|
14
|
+
)}
|
|
15
|
+
</Label>
|
|
16
|
+
);
|
|
17
|
+
}
|