@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
|
@@ -1,52 +1,36 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`<ConceptsTable /> matches the latest snapshot 1`] = `
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
selectable={true}
|
|
8
|
-
sortable={true}
|
|
4
|
+
<div>
|
|
5
|
+
<table
|
|
6
|
+
class="ui selectable sortable table"
|
|
9
7
|
>
|
|
10
|
-
<
|
|
11
|
-
|
|
8
|
+
<thead
|
|
9
|
+
class=""
|
|
12
10
|
>
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
cellAs="td"
|
|
11
|
+
<tr
|
|
12
|
+
class=""
|
|
16
13
|
>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
onClick={[Function]}
|
|
27
|
-
sorted="ascending"
|
|
28
|
-
/>
|
|
29
|
-
</TableRow>
|
|
30
|
-
</TableHeader>
|
|
31
|
-
<TableBody
|
|
32
|
-
as="tbody"
|
|
14
|
+
<th
|
|
15
|
+
class="disabled"
|
|
16
|
+
>
|
|
17
|
+
Term
|
|
18
|
+
</th>
|
|
19
|
+
</tr>
|
|
20
|
+
</thead>
|
|
21
|
+
<tbody
|
|
22
|
+
class=""
|
|
33
23
|
>
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
key="0"
|
|
48
|
-
/>
|
|
49
|
-
</TableBody>
|
|
50
|
-
</Table>
|
|
51
|
-
</Fragment>
|
|
24
|
+
<tr
|
|
25
|
+
class=""
|
|
26
|
+
>
|
|
27
|
+
<td
|
|
28
|
+
class=""
|
|
29
|
+
>
|
|
30
|
+
concept
|
|
31
|
+
</td>
|
|
32
|
+
</tr>
|
|
33
|
+
</tbody>
|
|
34
|
+
</table>
|
|
35
|
+
</div>
|
|
52
36
|
`;
|
|
@@ -1,52 +1,15 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`<ConceptsUpdateButton /> matches the latest snapshot 1`] = `
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
disabled={true}
|
|
11
|
-
eventsEnabled={true}
|
|
12
|
-
on={
|
|
13
|
-
[
|
|
14
|
-
"click",
|
|
15
|
-
"hover",
|
|
16
|
-
]
|
|
17
|
-
}
|
|
18
|
-
pinned={false}
|
|
19
|
-
popperModifiers={[]}
|
|
20
|
-
position="top right"
|
|
21
|
-
trigger={
|
|
22
|
-
<span
|
|
23
|
-
className="button-update"
|
|
4
|
+
<div>
|
|
5
|
+
<span
|
|
6
|
+
class="button-update"
|
|
7
|
+
>
|
|
8
|
+
<button
|
|
9
|
+
class="ui primary button"
|
|
24
10
|
>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"displayName": "Link",
|
|
30
|
-
"propTypes": {
|
|
31
|
-
"innerRef": [Function],
|
|
32
|
-
"onClick": [Function],
|
|
33
|
-
"replace": [Function],
|
|
34
|
-
"target": [Function],
|
|
35
|
-
"to": [Function],
|
|
36
|
-
},
|
|
37
|
-
"render": [Function],
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
content={
|
|
41
|
-
<Memo(MemoizedFormattedMessage)
|
|
42
|
-
id="actions.update"
|
|
43
|
-
/>
|
|
44
|
-
}
|
|
45
|
-
disabled={false}
|
|
46
|
-
primary={true}
|
|
47
|
-
to="url?concept"
|
|
48
|
-
/>
|
|
49
|
-
</span>
|
|
50
|
-
}
|
|
51
|
-
/>
|
|
11
|
+
Update
|
|
12
|
+
</button>
|
|
13
|
+
</span>
|
|
14
|
+
</div>
|
|
52
15
|
`;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import useSWR from "swr";
|
|
2
|
+
import useSWRMutations from "swr/mutation";
|
|
3
|
+
import { apiJson, apiJsonPost } from "@truedat/core/services/api";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
API_CONCEPT_FILTERS,
|
|
7
|
+
API_BUSINESS_CONCEPT_VERSIONS_SEARCH,
|
|
8
|
+
API_BUSINESS_CONCEPT_VERSIONS_ACTIONS,
|
|
9
|
+
} from "../api";
|
|
10
|
+
|
|
11
|
+
export const useConceptFilters = () => {
|
|
12
|
+
return useSWRMutations(API_CONCEPT_FILTERS, (url, { arg }) =>
|
|
13
|
+
apiJsonPost(url, arg)
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const useConceptVersionsSearch = () => {
|
|
18
|
+
return useSWRMutations(API_BUSINESS_CONCEPT_VERSIONS_SEARCH, (url, { arg }) =>
|
|
19
|
+
apiJsonPost(url, arg)
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const useConceptVersionsActions = () => {
|
|
24
|
+
const { data, error, mutate } = useSWR(
|
|
25
|
+
API_BUSINESS_CONCEPT_VERSIONS_ACTIONS,
|
|
26
|
+
apiJson
|
|
27
|
+
);
|
|
28
|
+
return {
|
|
29
|
+
actions: data?.data?._actions,
|
|
30
|
+
error,
|
|
31
|
+
loading: !error && !data,
|
|
32
|
+
mutate,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { bulkUpdateQuery } from "../routines";
|
|
2
|
+
|
|
3
|
+
const bulkUpdateQueryInfo = (state = {}, { type, payload }) => {
|
|
4
|
+
switch (type) {
|
|
5
|
+
case bulkUpdateQuery.TRIGGER:
|
|
6
|
+
return payload;
|
|
7
|
+
default:
|
|
8
|
+
return state;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { bulkUpdateQueryInfo };
|
|
@@ -1,62 +1,38 @@
|
|
|
1
1
|
import { concept } from "./concept";
|
|
2
2
|
import { conceptActionLoading } from "./conceptActionLoading";
|
|
3
3
|
import { conceptActions } from "./conceptActions";
|
|
4
|
-
import { conceptActiveFilters } from "./conceptActiveFilters";
|
|
5
4
|
import { conceptArchive } from "./conceptArchive";
|
|
6
5
|
import { conceptArchiveLoading } from "./conceptArchiveLoading";
|
|
7
|
-
import {
|
|
8
|
-
import { conceptFilters } from "./conceptFilters";
|
|
9
|
-
import { conceptFiltersLoading } from "./conceptFiltersLoading";
|
|
6
|
+
import { bulkUpdateQueryInfo } from "./bulkUpdateQueryInfo";
|
|
10
7
|
import { conceptLinking } from "./conceptLinking";
|
|
11
8
|
import { conceptLinks } from "./conceptLinks";
|
|
12
9
|
import { conceptLoading } from "./conceptLoading";
|
|
13
10
|
import { conceptPermissions } from "./conceptPermissions";
|
|
14
|
-
import { conceptQuery } from "./conceptQuery";
|
|
15
11
|
import { conceptRedirect } from "./conceptRedirect";
|
|
16
|
-
import { conceptSelectedFilter } from "./conceptSelectedFilter";
|
|
17
|
-
import { concepts } from "./concepts";
|
|
18
|
-
import { conceptsActions } from "./conceptsActions";
|
|
19
12
|
import { conceptsDownloading } from "./conceptsDownloading";
|
|
20
|
-
import { conceptsLoading } from "./conceptsLoading";
|
|
21
|
-
import { conceptsPageSize } from "./conceptsPageSize";
|
|
22
13
|
import { uploadConceptsFile } from "./uploadConceptsFile";
|
|
23
|
-
import { previousConceptQuery } from "./previousConceptQuery";
|
|
24
14
|
import { bulkUpdateLoading } from "./bulkUpdateLoading";
|
|
25
15
|
import { conceptUpdating } from "./conceptUpdating";
|
|
26
|
-
import { conceptUserFilters } from "./conceptUserFilters";
|
|
27
|
-
import { conceptSelectedUserFilter } from "./conceptSelectedUserFilter";
|
|
28
16
|
import { sharedToDomains } from "./sharedToDomains";
|
|
29
17
|
import { savingSharedTo } from "./savingSharedTo";
|
|
30
18
|
import { updatingDomain } from "./updatingDomain";
|
|
31
19
|
|
|
32
20
|
export {
|
|
21
|
+
bulkUpdateQueryInfo,
|
|
33
22
|
bulkUpdateLoading,
|
|
34
23
|
concept,
|
|
35
24
|
conceptActionLoading,
|
|
36
25
|
conceptActions,
|
|
37
|
-
conceptActiveFilters,
|
|
38
26
|
conceptArchive,
|
|
39
27
|
conceptArchiveLoading,
|
|
40
|
-
conceptCount,
|
|
41
|
-
conceptFilters,
|
|
42
|
-
conceptFiltersLoading,
|
|
43
28
|
conceptLinking,
|
|
44
29
|
conceptLinks,
|
|
45
30
|
conceptLoading,
|
|
46
31
|
conceptPermissions,
|
|
47
|
-
conceptQuery,
|
|
48
32
|
conceptRedirect,
|
|
49
|
-
conceptSelectedFilter,
|
|
50
|
-
conceptSelectedUserFilter,
|
|
51
|
-
concepts,
|
|
52
|
-
conceptsActions,
|
|
53
33
|
conceptsDownloading,
|
|
54
|
-
conceptsLoading,
|
|
55
|
-
conceptsPageSize,
|
|
56
34
|
uploadConceptsFile,
|
|
57
|
-
previousConceptQuery,
|
|
58
35
|
conceptUpdating,
|
|
59
|
-
conceptUserFilters,
|
|
60
36
|
sharedToDomains,
|
|
61
37
|
savingSharedTo,
|
|
62
38
|
updatingDomain,
|
|
@@ -23,44 +23,48 @@ const StructureTypesLoader = React.lazy(() =>
|
|
|
23
23
|
import("@truedat/dd/components/StructureTypesLoader")
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
export const ConceptRelationsRoutes = ({ conceptLoaded, relationsLoading }) =>
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
-
exact
|
|
30
|
-
path={CONCEPT_LINKS_STRUCTURES_NEW}
|
|
31
|
-
render={() => (conceptLoaded ? <ConceptStructureLinkForm /> : null)}
|
|
32
|
-
/>
|
|
33
|
-
<Route
|
|
34
|
-
exact
|
|
35
|
-
path={CONCEPT_LINKS_STRUCTURES}
|
|
36
|
-
render={() =>
|
|
37
|
-
conceptLoaded ? (
|
|
38
|
-
<>
|
|
39
|
-
<StructureTypesLoader />
|
|
40
|
-
<ConceptStructureLinks />
|
|
41
|
-
</>
|
|
42
|
-
) : null
|
|
43
|
-
}
|
|
44
|
-
/>
|
|
45
|
-
<Route
|
|
46
|
-
exact
|
|
47
|
-
path={CONCEPT_LINKS_CONCEPTS_NEW}
|
|
48
|
-
render={() => (conceptLoaded ? <ConceptRelationForm /> : null)}
|
|
49
|
-
/>
|
|
50
|
-
{!relationsLoading && (
|
|
26
|
+
export const ConceptRelationsRoutes = ({ conceptLoaded, relationsLoading }) => {
|
|
27
|
+
return (
|
|
28
|
+
<Switch>
|
|
51
29
|
<Route
|
|
52
30
|
exact
|
|
53
|
-
path={
|
|
54
|
-
render={() => (conceptLoaded ? <
|
|
31
|
+
path={CONCEPT_LINKS_STRUCTURES_NEW}
|
|
32
|
+
render={() => (conceptLoaded ? <ConceptStructureLinkForm /> : null)}
|
|
55
33
|
/>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
34
|
+
<Route
|
|
35
|
+
exact
|
|
36
|
+
path={CONCEPT_LINKS_STRUCTURES}
|
|
37
|
+
render={() =>
|
|
38
|
+
conceptLoaded ? (
|
|
39
|
+
<>
|
|
40
|
+
<StructureTypesLoader />
|
|
41
|
+
<ConceptStructureLinks />
|
|
42
|
+
</>
|
|
43
|
+
) : null
|
|
44
|
+
}
|
|
45
|
+
/>
|
|
46
|
+
|
|
47
|
+
<Route
|
|
48
|
+
exact
|
|
49
|
+
path={CONCEPT_LINKS_CONCEPTS_NEW}
|
|
50
|
+
render={() => (conceptLoaded ? <ConceptRelationForm /> : null)}
|
|
51
|
+
/>
|
|
52
|
+
|
|
53
|
+
{!relationsLoading ? (
|
|
54
|
+
<Route
|
|
55
|
+
exact
|
|
56
|
+
path={CONCEPT_LINKS_CONCEPTS}
|
|
57
|
+
render={() => <ConceptRelations />}
|
|
58
|
+
/>
|
|
59
|
+
) : null}
|
|
60
|
+
<Route
|
|
61
|
+
exact
|
|
62
|
+
path={CONCEPT_LINKS_IMPLEMENTATIONS}
|
|
63
|
+
render={() => (conceptLoaded ? <ConceptImplementationLinks /> : null)}
|
|
64
|
+
/>
|
|
65
|
+
</Switch>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
64
68
|
|
|
65
69
|
ConceptRelationsRoutes.propTypes = {
|
|
66
70
|
conceptLoaded: PropTypes.bool,
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import _ from "lodash/fp";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
|
-
import { connect } from "react-redux";
|
|
5
4
|
import { Table, Message, Label, Icon, Segment } from "semantic-ui-react";
|
|
6
5
|
import { FormattedMessage } from "react-intl";
|
|
7
|
-
import
|
|
6
|
+
import SearchWidget from "@truedat/core/search/SearchWidget";
|
|
7
|
+
import {
|
|
8
|
+
SearchContextProvider,
|
|
9
|
+
useSearchContext,
|
|
10
|
+
} from "@truedat/core/search/SearchContext";
|
|
8
11
|
import ConceptsPagination from "../../components/ConceptsPagination";
|
|
9
|
-
import ConceptsSearch from "../../components/ConceptsSearch";
|
|
10
|
-
import ConceptSelectedFilters from "../../components/ConceptSelectedFilters";
|
|
11
12
|
import { mapStatusColor } from "../../constants/mappings";
|
|
12
|
-
import
|
|
13
|
-
import ConceptsLoader from "../../components/ConceptsLoader";
|
|
13
|
+
import { translations } from "../../utils/filterOptions";
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
15
|
+
import {
|
|
16
|
+
useConceptVersionsSearch,
|
|
17
|
+
useConceptFilters,
|
|
18
|
+
} from "../../hooks/useConcepts";
|
|
19
19
|
|
|
20
20
|
const isPositive = (links, id, selectedId) => {
|
|
21
21
|
const link =
|
|
@@ -70,17 +70,17 @@ ConceptSelectorRow.propTypes = {
|
|
|
70
70
|
positive: PropTypes.bool,
|
|
71
71
|
};
|
|
72
72
|
|
|
73
|
-
export
|
|
73
|
+
export function ConceptSelectorContent({
|
|
74
74
|
businessConceptId,
|
|
75
|
-
concepts,
|
|
76
|
-
defaultFilters = filters,
|
|
77
75
|
handleConceptSelected,
|
|
78
|
-
loadConcepts = true,
|
|
79
|
-
pageSize = 7,
|
|
80
76
|
selectedConcept,
|
|
81
77
|
showTitle = true,
|
|
82
78
|
links,
|
|
83
|
-
})
|
|
79
|
+
}) {
|
|
80
|
+
const { searchData } = useSearchContext();
|
|
81
|
+
|
|
82
|
+
const concepts = searchData?.data;
|
|
83
|
+
|
|
84
84
|
const selectedConceptIsFiltered = !_.reduce(
|
|
85
85
|
(acc, c) => (selectedConcept && c.id == selectedConcept.id) || acc,
|
|
86
86
|
false
|
|
@@ -97,19 +97,13 @@ export const ConceptSelector = ({
|
|
|
97
97
|
|
|
98
98
|
return (
|
|
99
99
|
<>
|
|
100
|
-
{loadConcepts && (
|
|
101
|
-
<ConceptsLoader pageSize={pageSize} defaultFilters={defaultFilters} />
|
|
102
|
-
)}
|
|
103
|
-
<ConceptFiltersLoader />
|
|
104
|
-
<ConceptUserFiltersLoader />
|
|
105
100
|
{showTitle && (
|
|
106
101
|
<label>
|
|
107
102
|
<FormattedMessage id="conceptRelations.relatedConcept" />
|
|
108
103
|
</label>
|
|
109
104
|
)}
|
|
110
105
|
<Segment>
|
|
111
|
-
<
|
|
112
|
-
<ConceptSelectedFilters />
|
|
106
|
+
<SearchWidget />
|
|
113
107
|
{!_.isEmpty(concepts) || selectedConcept ? (
|
|
114
108
|
<Table selectable size="small">
|
|
115
109
|
<Table.Header>
|
|
@@ -156,20 +150,32 @@ export const ConceptSelector = ({
|
|
|
156
150
|
</Segment>
|
|
157
151
|
</>
|
|
158
152
|
);
|
|
159
|
-
}
|
|
153
|
+
}
|
|
160
154
|
|
|
161
|
-
|
|
155
|
+
ConceptSelectorContent.propTypes = {
|
|
162
156
|
businessConceptId: PropTypes.number,
|
|
163
|
-
concepts: PropTypes.array,
|
|
164
|
-
defaultFilters: PropTypes.object,
|
|
165
157
|
handleConceptSelected: PropTypes.func,
|
|
166
|
-
loadConcepts: PropTypes.bool,
|
|
167
|
-
pageSize: PropTypes.number,
|
|
168
158
|
selectedConcept: PropTypes.object,
|
|
169
159
|
showTitle: PropTypes.bool,
|
|
170
160
|
links: PropTypes.array,
|
|
171
161
|
};
|
|
172
162
|
|
|
173
|
-
|
|
163
|
+
export default function ConceptSelector(props) {
|
|
164
|
+
const defaultFilters = _.propOr({}, "defaultFilters")(props);
|
|
174
165
|
|
|
175
|
-
|
|
166
|
+
const searchProps = {
|
|
167
|
+
initialSortColumn: "name.raw",
|
|
168
|
+
initialSortDirection: "ascending",
|
|
169
|
+
useSearch: useConceptVersionsSearch,
|
|
170
|
+
useFilters: useConceptFilters,
|
|
171
|
+
pageSize: 7,
|
|
172
|
+
userFiltersType: "business_concept_user_filters",
|
|
173
|
+
omitFilters: ["current", "domain_ids"],
|
|
174
|
+
translations,
|
|
175
|
+
};
|
|
176
|
+
return (
|
|
177
|
+
<SearchContextProvider {...searchProps} defaultFilters={defaultFilters}>
|
|
178
|
+
<ConceptSelectorContent {...props} />
|
|
179
|
+
</SearchContextProvider>
|
|
180
|
+
);
|
|
181
|
+
}
|
|
@@ -8,28 +8,68 @@ import en from "../../../../messages/en";
|
|
|
8
8
|
|
|
9
9
|
const linkConcept = jest.fn();
|
|
10
10
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const data = {
|
|
12
|
+
data: [
|
|
13
|
+
{
|
|
14
|
+
business_concept_id: 2,
|
|
15
|
+
domain: {
|
|
16
|
+
external_id: "foo domain",
|
|
17
|
+
id: 381,
|
|
18
|
+
name: "foo domain",
|
|
19
|
+
},
|
|
20
|
+
id: 12355,
|
|
21
|
+
name: "foo concept",
|
|
22
|
+
status: "published",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
business_concept_id: 3,
|
|
26
|
+
domain: {
|
|
27
|
+
external_id: "foo domain",
|
|
28
|
+
id: 381,
|
|
29
|
+
name: "foo domain",
|
|
30
|
+
},
|
|
31
|
+
id: 12290,
|
|
32
|
+
name: "bar concept",
|
|
33
|
+
status: "draft",
|
|
34
|
+
},
|
|
35
|
+
],
|
|
15
36
|
};
|
|
16
37
|
|
|
17
|
-
const
|
|
18
|
-
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
name: "foo concept",
|
|
23
|
-
status: "published",
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
business_concept_id: 3,
|
|
27
|
-
domain: domain,
|
|
28
|
-
id: 12290,
|
|
29
|
-
name: "bar concept",
|
|
30
|
-
status: "draft",
|
|
38
|
+
const filterData = {
|
|
39
|
+
data: {
|
|
40
|
+
some: {
|
|
41
|
+
values: ["some_xxx", "some_yyy", "some_xwy"],
|
|
42
|
+
},
|
|
31
43
|
},
|
|
32
|
-
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
jest.mock("@truedat/bg/concepts/hooks/useConcepts", () => {
|
|
47
|
+
const originalModule = jest.requireActual(
|
|
48
|
+
"@truedat/bg/concepts/hooks/useConcepts"
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
__esModule: true,
|
|
53
|
+
...originalModule,
|
|
54
|
+
useConceptFilters: () => ({
|
|
55
|
+
trigger: () => ({
|
|
56
|
+
then: (callback) =>
|
|
57
|
+
callback({
|
|
58
|
+
data: filterData,
|
|
59
|
+
}),
|
|
60
|
+
}),
|
|
61
|
+
}),
|
|
62
|
+
useConceptVersionsSearch: () => ({
|
|
63
|
+
trigger: () => ({
|
|
64
|
+
then: (callback) =>
|
|
65
|
+
callback({
|
|
66
|
+
data,
|
|
67
|
+
headers: {},
|
|
68
|
+
}),
|
|
69
|
+
}),
|
|
70
|
+
}),
|
|
71
|
+
};
|
|
72
|
+
});
|
|
33
73
|
|
|
34
74
|
const concept = {
|
|
35
75
|
id: 1,
|
|
@@ -58,22 +98,22 @@ const renderOpts = {
|
|
|
58
98
|
"search.clear_filters": "clear filters",
|
|
59
99
|
"search.applied_filters": "applied filters",
|
|
60
100
|
"relations.relationType": "relation type",
|
|
101
|
+
"search.placeholder": "Search concepts...",
|
|
61
102
|
},
|
|
62
103
|
},
|
|
63
104
|
state: {
|
|
64
|
-
conceptActiveFilters: { filter: "some" },
|
|
65
|
-
concepts,
|
|
66
105
|
tagOptions,
|
|
67
106
|
},
|
|
68
107
|
fallback: "lazy",
|
|
69
108
|
};
|
|
70
109
|
|
|
71
110
|
describe("<ConceptRelationForm />", () => {
|
|
72
|
-
it("matches the latest snapshot", () => {
|
|
73
|
-
const { container } = render(
|
|
111
|
+
it("matches the latest snapshot", async () => {
|
|
112
|
+
const { container, queryByText } = render(
|
|
74
113
|
<ConceptRelationForm {...props} />,
|
|
75
114
|
renderOpts
|
|
76
115
|
);
|
|
116
|
+
userEvent.click(await queryByText(/some/));
|
|
77
117
|
expect(container).toMatchSnapshot();
|
|
78
118
|
});
|
|
79
119
|
|