@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.
Files changed (113) hide show
  1. package/package.json +6 -6
  2. package/src/concepts/api.js +3 -7
  3. package/src/concepts/components/ConceptActions.js +1 -0
  4. package/src/concepts/components/ConceptCreate.js +6 -4
  5. package/src/concepts/components/ConceptRoutes.js +10 -33
  6. package/src/concepts/components/Concepts.js +25 -16
  7. package/src/concepts/components/ConceptsActions.js +8 -14
  8. package/src/concepts/components/ConceptsBulkUpdate.js +25 -64
  9. package/src/concepts/components/ConceptsLabelResults.js +13 -26
  10. package/src/concepts/components/ConceptsLinksManagement.js +6 -92
  11. package/src/concepts/components/ConceptsPagination.js +13 -11
  12. package/src/concepts/components/ConceptsPanel.js +57 -20
  13. package/src/concepts/components/ConceptsTable.js +77 -106
  14. package/src/concepts/components/ConceptsUpdateButton.js +49 -37
  15. package/src/concepts/components/DomainConcepts.js +2 -11
  16. package/src/concepts/components/LinkedMessage.js +81 -0
  17. package/src/concepts/components/__tests__/ConceptLinksManagement.spec.js +60 -12
  18. package/src/concepts/components/__tests__/Concepts.spec.js +66 -11
  19. package/src/concepts/components/__tests__/ConceptsActions.spec.js +47 -3
  20. package/src/concepts/components/__tests__/ConceptsBulkUpdate.spec.js +7 -3
  21. package/src/concepts/components/__tests__/ConceptsLabelResults.spec.js +34 -4
  22. package/src/concepts/components/__tests__/ConceptsPanel.spec.js +59 -13
  23. package/src/concepts/components/__tests__/ConceptsTable.spec.js +53 -6
  24. package/src/concepts/components/__tests__/ConceptsUpdateButton.spec.js +26 -13
  25. package/src/concepts/components/__tests__/__snapshots__/ConceptLinksManagement.spec.js.snap +164 -8
  26. package/src/concepts/components/__tests__/__snapshots__/Concepts.spec.js.snap +284 -34
  27. package/src/concepts/components/__tests__/__snapshots__/ConceptsActions.spec.js.snap +1 -1
  28. package/src/concepts/components/__tests__/__snapshots__/ConceptsPanel.spec.js.snap +125 -2
  29. package/src/concepts/components/__tests__/__snapshots__/ConceptsTable.spec.js.snap +28 -44
  30. package/src/concepts/components/__tests__/__snapshots__/ConceptsUpdateButton.spec.js.snap +10 -47
  31. package/src/concepts/hooks/useConcepts.js +34 -0
  32. package/src/concepts/reducers/bulkUpdateQueryInfo.js +12 -0
  33. package/src/concepts/reducers/index.js +2 -26
  34. package/src/concepts/relations/components/ConceptRelationsRoutes.js +39 -35
  35. package/src/concepts/relations/components/ConceptSelector.js +44 -29
  36. package/src/concepts/relations/components/__tests__/ConceptRelationForm.spec.js +63 -23
  37. package/src/concepts/relations/components/__tests__/ConceptSelector.spec.js +74 -41
  38. package/src/concepts/relations/components/__tests__/ConceptSelector2.spec.js +72 -0
  39. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationForm.spec.js.snap +44 -8
  40. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptSelector.spec.js.snap +44 -27
  41. package/src/concepts/routines.js +2 -29
  42. package/src/concepts/sagas/__tests__/bulkUpdate.spec.js +6 -10
  43. package/src/concepts/sagas/__tests__/downloadConcepts.spec.js +4 -8
  44. package/src/concepts/sagas/bulkUpdate.js +6 -5
  45. package/src/concepts/sagas/downloadConcepts.js +3 -4
  46. package/src/concepts/sagas/index.js +2 -17
  47. package/src/concepts/selectors/getConceptColumns.js +12 -21
  48. package/src/concepts/selectors/index.js +1 -7
  49. package/src/concepts/utils/filterOptions.js +6 -5
  50. package/src/concepts/components/ConceptFilters.js +0 -20
  51. package/src/concepts/components/ConceptFiltersLoader.js +0 -27
  52. package/src/concepts/components/ConceptSelectedFilters.js +0 -29
  53. package/src/concepts/components/ConceptSelectedFiltersDefault.js +0 -42
  54. package/src/concepts/components/ConceptSelectedFiltersPending.js +0 -41
  55. package/src/concepts/components/ConceptSelectedFiltersPublished.js +0 -73
  56. package/src/concepts/components/ConceptUserFiltersLoader.js +0 -27
  57. package/src/concepts/components/ConceptsLoader.js +0 -38
  58. package/src/concepts/components/ConceptsSearch.js +0 -32
  59. package/src/concepts/components/__tests__/ConceptFilters.spec.js +0 -19
  60. package/src/concepts/components/__tests__/ConceptSelectedFilters.spec.js +0 -10
  61. package/src/concepts/components/__tests__/ConceptUserFiltersLoader.spec.js +0 -27
  62. package/src/concepts/components/__tests__/ConceptsLoader.spec.js +0 -34
  63. package/src/concepts/components/__tests__/__snapshots__/ConceptFilters.spec.js.snap +0 -47
  64. package/src/concepts/components/__tests__/__snapshots__/ConceptSelectedFilters.spec.js.snap +0 -9
  65. package/src/concepts/components/__tests__/__snapshots__/ConceptUserFiltersLoader.spec.js.snap +0 -3
  66. package/src/concepts/reducers/__tests__/conceptActiveFilters.spec.js +0 -83
  67. package/src/concepts/reducers/__tests__/conceptCount.spec.js +0 -33
  68. package/src/concepts/reducers/__tests__/conceptFilters.spec.js +0 -49
  69. package/src/concepts/reducers/__tests__/conceptFiltersLoading.spec.js +0 -28
  70. package/src/concepts/reducers/__tests__/conceptQuery.spec.js +0 -75
  71. package/src/concepts/reducers/__tests__/conceptSelectedFilter.spec.js +0 -66
  72. package/src/concepts/reducers/__tests__/conceptSelectedUserFilter.spec.js +0 -53
  73. package/src/concepts/reducers/__tests__/conceptUserFilters.spec.js +0 -76
  74. package/src/concepts/reducers/__tests__/concepts.spec.js +0 -40
  75. package/src/concepts/reducers/__tests__/conceptsActions.spec.js +0 -38
  76. package/src/concepts/reducers/__tests__/conceptsLoading.spec.js +0 -32
  77. package/src/concepts/reducers/__tests__/conceptsPageSize.spec.js +0 -33
  78. package/src/concepts/reducers/__tests__/previousConceptQuery.spec.js +0 -23
  79. package/src/concepts/reducers/conceptActiveFilters.js +0 -58
  80. package/src/concepts/reducers/conceptCount.js +0 -20
  81. package/src/concepts/reducers/conceptFilters.js +0 -21
  82. package/src/concepts/reducers/conceptFiltersLoading.js +0 -14
  83. package/src/concepts/reducers/conceptQuery.js +0 -60
  84. package/src/concepts/reducers/conceptSelectedFilter.js +0 -34
  85. package/src/concepts/reducers/conceptSelectedUserFilter.js +0 -31
  86. package/src/concepts/reducers/conceptUserFilters.js +0 -36
  87. package/src/concepts/reducers/concepts.js +0 -21
  88. package/src/concepts/reducers/conceptsActions.js +0 -24
  89. package/src/concepts/reducers/conceptsLoading.js +0 -16
  90. package/src/concepts/reducers/conceptsPageSize.js +0 -16
  91. package/src/concepts/reducers/previousConceptQuery.js +0 -15
  92. package/src/concepts/sagas/__tests__/deleteConceptUserFilter.spec.js +0 -75
  93. package/src/concepts/sagas/__tests__/fetchConceptUserFilters.spec.js +0 -70
  94. package/src/concepts/sagas/__tests__/fetchConcepts.spec.js +0 -87
  95. package/src/concepts/sagas/__tests__/saveConceptFilters.spec.js +0 -78
  96. package/src/concepts/sagas/deleteConceptUserFilter.js +0 -34
  97. package/src/concepts/sagas/fecthConceptUserFilters.js +0 -30
  98. package/src/concepts/sagas/fetchConceptFilters.js +0 -29
  99. package/src/concepts/sagas/fetchConcepts.js +0 -27
  100. package/src/concepts/sagas/saveConceptFilters.js +0 -30
  101. package/src/concepts/selectors/__tests__/getConceptAvailableFilters.spec.js +0 -16
  102. package/src/concepts/selectors/__tests__/getConceptFilterTypes.spec.js +0 -19
  103. package/src/concepts/selectors/__tests__/getConceptSelectedFilterActiveValues.spec.js +0 -16
  104. package/src/concepts/selectors/__tests__/getConceptSelectedFilterValues.spec.js +0 -15
  105. package/src/concepts/selectors/__tests__/getConceptSelectedFilters.spec.js +0 -15
  106. package/src/concepts/selectors/__tests__/mapSelectedFilterStateToPropsByStatus.spec.js +0 -37
  107. package/src/concepts/selectors/getConceptAvailableFilters.js +0 -15
  108. package/src/concepts/selectors/getConceptFilterTypes.js +0 -7
  109. package/src/concepts/selectors/getConceptSelectedFilterActiveValues.js +0 -9
  110. package/src/concepts/selectors/getConceptSelectedFilterValues.js +0 -12
  111. package/src/concepts/selectors/getConceptSelectedFilters.js +0 -7
  112. package/src/concepts/selectors/getPreviousConceptQuery.js +0 -1
  113. 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",
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.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.3",
90
- "@truedat/df": "6.3.3",
91
- "@truedat/lm": "6.3.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": "ee40175932833d26f2d0ca297ce5a3a26fb71cb2"
114
+ "gitHead": "2cacdf1fc99746cb4f8dca7d770662c0d96c5bb7"
115
115
  }
@@ -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,
@@ -230,6 +230,7 @@ const hiddenActions = [
230
230
  "bulk_update",
231
231
  "set_confidential",
232
232
  "update_domain",
233
+ "actions",
233
234
  ];
234
235
 
235
236
  const editUrl = (conceptActions, concept) =>
@@ -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 = ({ action, conceptActionLoading, conceptAction }) => {
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, conceptsActions }) => ({
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
- import ConceptsLoader from "./ConceptsLoader";
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
- <ConceptFiltersLoader defaultFilters={defaultFilters} />
153
- <ConceptsLoader defaultFilters={defaultFilters} />
154
- <ConceptUserFiltersLoader />
155
- <Concepts header={subscope} icon="tags" />
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
- <ConceptFiltersLoader
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 = ({ header, subheader, icon, ...actions }) => (
8
- <>
9
- <ConceptCrumbs />
10
- <Segment>
11
- <Header as="h2">
12
- <Icon circular name={icon} />
13
- <Header.Content>
14
- {header}
15
- <Header.Subheader>{subheader}</Header.Subheader>
16
- </Header.Content>
17
- </Header>
18
- <Segment attached="bottom">
19
- <ConceptsPanel {...actions} />
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
- </Segment>
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, fetchConcepts } from "../routines";
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
- fetchConcepts,
90
- conceptPayload,
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 { search } = useLocation();
100
- const path = search.split("?").pop();
87
+ const { concepts, searchParams, conceptCount } = bulkUpdateQueryInfo;
101
88
 
102
- useEffect(() => {
103
- const defaultFilters =
104
- path === "pendingConcepts" ? pendingConceptsFilters : conceptFilters;
105
- const subscope =
106
- path !== "concepts" && path !== "pendingConcepts" ? [path] : "";
107
- fetchConcepts({
108
- ...conceptPayload,
109
- must: {
110
- ...conceptPayload.must,
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
- update_attributes: { content: parsedContent, domain_id: domainId },
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
- fetchConcepts: PropTypes.func,
260
- conceptPayload: PropTypes.object,
238
+ templates: PropTypes.array,
239
+ bulkUpdateQueryInfo: PropTypes.object,
261
240
  };
262
241
 
263
- const makeMapStateToProps = () => {
264
- const searchQuerySelector = makeSearchQuerySelector(
265
- "conceptQuery",
266
- "conceptActiveFilters"
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
- export default connect(makeMapStateToProps, { bulkUpdate, fetchConcepts })(
288
- ConceptsBulkUpdate
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 const ConceptsLabelResults = ({ conceptCount, conceptsLoading }) => (
8
- <Label className="concepts-label-results">
9
- {conceptsLoading ? (
10
- <FormattedMessage id="concepts.searching" />
11
- ) : (
12
- <FormattedMessage
13
- id="concepts.retrieved.results"
14
- values={{ count: conceptCount }}
15
- />
16
- )}
17
- </Label>
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
+ }