@truedat/dd 5.15.2 → 5.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/api.js +6 -0
- package/src/components/GrantRequestApprovalResults.js +40 -0
- package/src/components/GrantRequestBulkActions.js +136 -0
- package/src/components/GrantRequestBulkApprovalForm.js +69 -0
- package/src/components/GrantRequestBulkApprovalPopup.js +43 -0
- package/src/components/GrantRequestBulkRoleSelector.js +41 -0
- package/src/components/GrantRequestRow.js +62 -0
- package/src/components/GrantRequestSearchFilters.js +22 -0
- package/src/components/GrantRequestsFiltersLoader.js +33 -0
- package/src/components/GrantRequestsLabelResults.js +52 -0
- package/src/components/GrantRequestsSearch.js +35 -0
- package/src/components/GrantRequestsSearchLoader.js +47 -0
- package/src/components/GrantRequestsSearchResults.js +156 -0
- package/src/components/GrantRequestsSelectedFilters.js +54 -0
- package/src/components/GrantRequestsTable.js +131 -0
- package/src/components/GrantRoutes.js +34 -16
- package/src/components/Grants.js +1 -0
- package/src/components/__tests__/GrantRequestApprovalResults.spec.js +30 -0
- package/src/components/__tests__/GrantRequestBulkActions.spec.js +31 -0
- package/src/components/__tests__/GrantRequestBulkApprovalForm.spec.js +54 -0
- package/src/components/__tests__/GrantRequestBulkApprovalPopup.spec.js +17 -0
- package/src/components/__tests__/GrantRequestBulkRoleSelector.spec.js +48 -0
- package/src/components/__tests__/GrantRequestFiltersLoader.spec.js +20 -0
- package/src/components/__tests__/GrantRequestRow.spec.js +95 -0
- package/src/components/__tests__/GrantRequestSearchFilters.spec.js +19 -0
- package/src/components/__tests__/GrantRequestsLabelResults.spec.js +45 -0
- package/src/components/__tests__/GrantRequestsSearch.spec.js +23 -0
- package/src/components/__tests__/GrantRequestsSearchLoader.spec.js +15 -0
- package/src/components/__tests__/GrantRequestsSearchResults.spec.js +59 -0
- package/src/components/__tests__/GrantRequestsTable.spec.js +35 -0
- package/src/components/__tests__/__snapshots__/GrantRequestApprovalResults.spec.js.snap +69 -0
- package/src/components/__tests__/__snapshots__/GrantRequestBulkActions.spec.js.snap +51 -0
- package/src/components/__tests__/__snapshots__/GrantRequestBulkApprovalForm.spec.js.snap +41 -0
- package/src/components/__tests__/__snapshots__/GrantRequestBulkApprovalPopup.spec.js.snap +11 -0
- package/src/components/__tests__/__snapshots__/GrantRequestBulkRoleSelector.spec.js.snap +56 -0
- package/src/components/__tests__/__snapshots__/GrantRequestRow.spec.js.snap +55 -0
- package/src/components/__tests__/__snapshots__/GrantRequestSearchFilters.spec.js.snap +47 -0
- package/src/components/__tests__/__snapshots__/GrantRequestsLabelResults.spec.js.snap +36 -0
- package/src/components/__tests__/__snapshots__/GrantRequestsSearch.spec.js.snap +50 -0
- package/src/components/__tests__/__snapshots__/GrantRequestsSearchLoader.spec.js.snap +3 -0
- package/src/components/__tests__/__snapshots__/GrantRequestsSearchResults.spec.js.snap +248 -0
- package/src/components/__tests__/__snapshots__/GrantRequestsTable.spec.js.snap +19 -0
- package/src/components/__tests__/__snapshots__/GrantRoutes.spec.js.snap +0 -4
- package/src/components/index.js +8 -0
- package/src/hooks/useGrantRequest.js +9 -0
- package/src/reducers/__tests__/grantRequestCount.spec.js +38 -0
- package/src/reducers/__tests__/grantRequestPermissions.spec.js +66 -0
- package/src/reducers/__tests__/grantRequestsActiveFilters.spec.js +90 -0
- package/src/reducers/__tests__/grantRequestsFiltersLoading.spec.js +34 -0
- package/src/reducers/__tests__/grantRequestsSearch.spec.js +38 -0
- package/src/reducers/__tests__/grantRequestsSearchLoading.spec.js +36 -0
- package/src/reducers/__tests__/grantRequestsSearchQuery.spec.js +96 -0
- package/src/reducers/__tests__/grantRequestsSelectedFilter.spec.js +72 -0
- package/src/reducers/grantRequestCount.js +23 -0
- package/src/reducers/grantRequestPermissions.js +31 -0
- package/src/reducers/grantRequestSearchQuery.js +55 -0
- package/src/reducers/grantRequestsActiveFilters.js +56 -0
- package/src/reducers/grantRequestsFilters.js +23 -0
- package/src/reducers/grantRequestsFiltersLoading.js +14 -0
- package/src/reducers/grantRequestsSearch.js +19 -0
- package/src/reducers/grantRequestsSearchLoading.js +14 -0
- package/src/reducers/grantRequestsSelectedFilter.js +34 -0
- package/src/reducers/graphLoading.js +2 -0
- package/src/reducers/index.js +22 -0
- package/src/reducers/structureRedirect.js +2 -3
- package/src/routines.js +13 -0
- package/src/sagas/__tests__/createGraph.spec.js +4 -4
- package/src/sagas/__tests__/fetchGrantRequestsFilters.spec.js +91 -0
- package/src/sagas/__tests__/fetchGrantRequestsSearch.spec.js +92 -0
- package/src/sagas/createGraph.js +7 -71
- package/src/sagas/fetchGrantRequestsFilters.js +32 -0
- package/src/sagas/fetchGrantRequestsSearch.js +30 -0
- package/src/sagas/fetchGraph.js +26 -4
- package/src/sagas/graph/polling.js +70 -0
- package/src/sagas/index.js +6 -0
- package/src/selectors/__tests__/getGrantRequestsAvailableFilters.spec.js +15 -0
- package/src/selectors/__tests__/getGrantRequestsFilterTypes.spec.js +19 -0
- package/src/selectors/__tests__/getGrantRequestsSearchColumns.spec.js +30 -0
- package/src/selectors/__tests__/getGrantRequestsSearchQuery.spec.js +24 -0
- package/src/selectors/__tests__/getGrantRequestsSelectedFilterActiveValues.spec.js +15 -0
- package/src/selectors/__tests__/getGrantRequestsSelectedFilterValues.spec.js +15 -0
- package/src/selectors/__tests__/getGrantRequestsSelectedFilters.spec.js +13 -0
- package/src/selectors/getGrantRequestsAvailableFilters.js +17 -0
- package/src/selectors/getGrantRequestsFilterTypes.js +7 -0
- package/src/selectors/getGrantRequestsSearchColumns.js +119 -0
- package/src/selectors/getGrantRequestsSearchQuery.js +19 -0
- package/src/selectors/getGrantRequestsSelectedFilterActiveValues.js +8 -0
- package/src/selectors/getGrantRequestsSelectedFilterValues.js +12 -0
- package/src/selectors/getGrantRequestsSelectedFilters.js +8 -0
- package/src/selectors/index.js +10 -0
- package/src/components/GrantRequestApprovals.js +0 -41
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
clearGrantRequestsFilters,
|
|
3
|
+
removeGrantRequestsFilter,
|
|
4
|
+
searchGrantRequests,
|
|
5
|
+
sortGrantRequests,
|
|
6
|
+
toggleGrantRequestsFilterValue,
|
|
7
|
+
clearGrantRequestsSort,
|
|
8
|
+
} from "../../routines";
|
|
9
|
+
import { grantRequestSearchQuery } from "..";
|
|
10
|
+
|
|
11
|
+
const fooState = { foo: "bar" };
|
|
12
|
+
|
|
13
|
+
describe("reducers: grantRequestSearchQuery", () => {
|
|
14
|
+
const defaultPage = 1;
|
|
15
|
+
const query = "";
|
|
16
|
+
const sort = [{ inserted_at: "asc" }];
|
|
17
|
+
const page = 1;
|
|
18
|
+
const size = 1000;
|
|
19
|
+
|
|
20
|
+
const initialState = { query, sort, page, size };
|
|
21
|
+
|
|
22
|
+
it("should provide the initialState", () => {
|
|
23
|
+
expect(grantRequestSearchQuery(undefined, {})).toEqual(initialState);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("should handle the clearGrantRequestsFilters.TRIGGER action", () => {
|
|
27
|
+
expect(
|
|
28
|
+
grantRequestSearchQuery(fooState, {
|
|
29
|
+
type: clearGrantRequestsFilters.TRIGGER,
|
|
30
|
+
payload: { ...fooState, page },
|
|
31
|
+
})
|
|
32
|
+
).toEqual({
|
|
33
|
+
...fooState,
|
|
34
|
+
page,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should handle the removeGrantRequestsFilter.TRIGGER action", () => {
|
|
39
|
+
expect(
|
|
40
|
+
grantRequestSearchQuery(fooState, {
|
|
41
|
+
type: removeGrantRequestsFilter.TRIGGER,
|
|
42
|
+
payload: { ...fooState, page },
|
|
43
|
+
})
|
|
44
|
+
).toEqual({
|
|
45
|
+
...fooState,
|
|
46
|
+
page,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("should handle the searchGrantRequests.TRIGGER action", () => {
|
|
51
|
+
expect(
|
|
52
|
+
grantRequestSearchQuery(fooState, {
|
|
53
|
+
type: searchGrantRequests.TRIGGER,
|
|
54
|
+
payload: { ...fooState, page },
|
|
55
|
+
})
|
|
56
|
+
).toEqual({
|
|
57
|
+
...fooState,
|
|
58
|
+
query,
|
|
59
|
+
page,
|
|
60
|
+
sort,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("should handle the sortGrantRequests.TRIGGER action", () => {
|
|
65
|
+
expect(
|
|
66
|
+
grantRequestSearchQuery(fooState, {
|
|
67
|
+
type: sortGrantRequests.TRIGGER,
|
|
68
|
+
payload: { ...fooState, page },
|
|
69
|
+
})
|
|
70
|
+
).toEqual({ ...fooState, sort: { ...fooState, page }, page: defaultPage });
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("should handle the toggleGrantRequestsFilterValue.TRIGGER action", () => {
|
|
74
|
+
expect(
|
|
75
|
+
grantRequestSearchQuery(fooState, {
|
|
76
|
+
type: toggleGrantRequestsFilterValue.TRIGGER,
|
|
77
|
+
payload: { ...fooState, page },
|
|
78
|
+
})
|
|
79
|
+
).toEqual({
|
|
80
|
+
...fooState,
|
|
81
|
+
page,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("should handle the clearGrantRequestsSort.TRIGGER action", () => {
|
|
86
|
+
expect(
|
|
87
|
+
grantRequestSearchQuery(fooState, {
|
|
88
|
+
type: clearGrantRequestsSort.TRIGGER,
|
|
89
|
+
payload: { ...fooState, page },
|
|
90
|
+
})
|
|
91
|
+
).toEqual({
|
|
92
|
+
...fooState,
|
|
93
|
+
sort,
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { initialState } from "../grantRequestsSelectedFilter";
|
|
2
|
+
import {
|
|
3
|
+
addGrantRequestsFilter,
|
|
4
|
+
closeGrantRequestsFilter,
|
|
5
|
+
openGrantRequestsFilter,
|
|
6
|
+
removeGrantRequestsFilter,
|
|
7
|
+
resetGrantRequestsFilters,
|
|
8
|
+
} from "../../routines";
|
|
9
|
+
import { grantRequestsSelectedFilter } from "..";
|
|
10
|
+
|
|
11
|
+
const fooState = { foo: "bar" };
|
|
12
|
+
|
|
13
|
+
describe("reducers: grantRequestsSelectedFilter", () => {
|
|
14
|
+
it("should provide the initial state", () => {
|
|
15
|
+
expect(grantRequestsSelectedFilter(undefined, {})).toEqual(initialState);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("should handle the addGrantRequestsFilter.TRIGGER action", () => {
|
|
19
|
+
const filter = "baz";
|
|
20
|
+
const payload = { filter };
|
|
21
|
+
expect(
|
|
22
|
+
grantRequestsSelectedFilter(fooState, {
|
|
23
|
+
type: addGrantRequestsFilter.TRIGGER,
|
|
24
|
+
payload,
|
|
25
|
+
})
|
|
26
|
+
).toEqual(filter);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should handle the closeGrantRequestsFilter.TRIGGER action", () => {
|
|
30
|
+
expect(
|
|
31
|
+
grantRequestsSelectedFilter(fooState, {
|
|
32
|
+
type: closeGrantRequestsFilter.TRIGGER,
|
|
33
|
+
})
|
|
34
|
+
).toEqual(initialState);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("should handle the openGrantRequestsFilter.TRIGGER action", () => {
|
|
38
|
+
const filter = "baz";
|
|
39
|
+
const payload = { filter };
|
|
40
|
+
expect(
|
|
41
|
+
grantRequestsSelectedFilter(fooState, {
|
|
42
|
+
type: openGrantRequestsFilter.TRIGGER,
|
|
43
|
+
payload,
|
|
44
|
+
})
|
|
45
|
+
).toEqual(filter);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("should handle the removeGrantRequestsFilter.TRIGGER action", () => {
|
|
49
|
+
const filter = "baz";
|
|
50
|
+
const payload = { filter };
|
|
51
|
+
expect(
|
|
52
|
+
grantRequestsSelectedFilter(fooState, {
|
|
53
|
+
type: removeGrantRequestsFilter.TRIGGER,
|
|
54
|
+
payload,
|
|
55
|
+
})
|
|
56
|
+
).toEqual(initialState);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("should handle the resetGrantRequestsFilters.TRIGGER action", () => {
|
|
60
|
+
expect(
|
|
61
|
+
grantRequestsSelectedFilter(fooState, {
|
|
62
|
+
type: resetGrantRequestsFilters.TRIGGER,
|
|
63
|
+
})
|
|
64
|
+
).toEqual(initialState);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("should ignore unknown actions", () => {
|
|
68
|
+
expect(grantRequestsSelectedFilter(fooState, { type: "FOO" })).toBe(
|
|
69
|
+
fooState
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _ from "lodash/fp";
|
|
2
|
+
import {
|
|
3
|
+
fetchGrantRequestsSearch,
|
|
4
|
+
clearGrantRequestsSearch,
|
|
5
|
+
} from "../routines";
|
|
6
|
+
|
|
7
|
+
const initialState = 0;
|
|
8
|
+
|
|
9
|
+
const grantRequestCount = (state = initialState, { type, payload }) => {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case clearGrantRequestsSearch.TRIGGER:
|
|
12
|
+
return initialState;
|
|
13
|
+
case fetchGrantRequestsSearch.SUCCESS: {
|
|
14
|
+
const headers = _.propOr({}, "headers")(payload);
|
|
15
|
+
const count = _.propOr("0", "x-total-count")(headers);
|
|
16
|
+
return parseInt(count);
|
|
17
|
+
}
|
|
18
|
+
default:
|
|
19
|
+
return state;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { grantRequestCount };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import _ from "lodash/fp";
|
|
2
|
+
import {
|
|
3
|
+
clearGrantRequestsSearch,
|
|
4
|
+
fetchGrantRequestsSearch,
|
|
5
|
+
} from "../routines";
|
|
6
|
+
|
|
7
|
+
const initialState = {};
|
|
8
|
+
|
|
9
|
+
const grantRequestPermissions = (state = initialState, { type, payload }) => {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case fetchGrantRequestsSearch.SUCCESS:
|
|
12
|
+
return _.pathOr(initialState, "data._permissions")(payload);
|
|
13
|
+
case clearGrantRequestsSearch.TRIGGER:
|
|
14
|
+
return initialState;
|
|
15
|
+
default:
|
|
16
|
+
return state;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const grantRequestPermissionsLoading = (state = initialState, { type }) => {
|
|
21
|
+
switch (type) {
|
|
22
|
+
case fetchGrantRequestsSearch.TRIGGER:
|
|
23
|
+
return true;
|
|
24
|
+
case fetchGrantRequestsSearch.FULFILL:
|
|
25
|
+
return false;
|
|
26
|
+
default:
|
|
27
|
+
return state;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { grantRequestPermissions, grantRequestPermissionsLoading };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import _ from "lodash/fp";
|
|
2
|
+
import {
|
|
3
|
+
clearGrantRequestsFilters,
|
|
4
|
+
removeGrantRequestsFilter,
|
|
5
|
+
searchGrantRequests,
|
|
6
|
+
sortGrantRequests,
|
|
7
|
+
toggleGrantRequestsFilterValue,
|
|
8
|
+
clearGrantRequestsSort,
|
|
9
|
+
} from "../routines";
|
|
10
|
+
|
|
11
|
+
const defaultPage = 1;
|
|
12
|
+
const defaultSize = 1000;
|
|
13
|
+
const defaultSearchSort = [{ _score: "desc" }, { inserted_at: "asc" }];
|
|
14
|
+
const byInsertedSort = [{ inserted_at: "asc" }];
|
|
15
|
+
|
|
16
|
+
export const initialState = {
|
|
17
|
+
query: "",
|
|
18
|
+
page: defaultPage,
|
|
19
|
+
size: defaultSize,
|
|
20
|
+
sort: byInsertedSort,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const grantRequestSearchQuery = (
|
|
24
|
+
state = initialState,
|
|
25
|
+
{ type, payload }
|
|
26
|
+
) => {
|
|
27
|
+
switch (type) {
|
|
28
|
+
case clearGrantRequestsFilters.TRIGGER:
|
|
29
|
+
const page = defaultPage;
|
|
30
|
+
return { ...state, page };
|
|
31
|
+
case removeGrantRequestsFilter.TRIGGER: {
|
|
32
|
+
const page = defaultPage;
|
|
33
|
+
return { ...state, page };
|
|
34
|
+
}
|
|
35
|
+
case toggleGrantRequestsFilterValue.TRIGGER: {
|
|
36
|
+
const page = defaultPage;
|
|
37
|
+
return { ...state, page };
|
|
38
|
+
}
|
|
39
|
+
case searchGrantRequests.TRIGGER: {
|
|
40
|
+
const page = defaultPage;
|
|
41
|
+
const query = _.propOr("", "query")(payload);
|
|
42
|
+
const sort = query != "" ? defaultSearchSort : byInsertedSort;
|
|
43
|
+
return { ...state, query, page, sort };
|
|
44
|
+
}
|
|
45
|
+
case sortGrantRequests.TRIGGER: {
|
|
46
|
+
const sort = payload;
|
|
47
|
+
return { ...state, sort, page: defaultPage };
|
|
48
|
+
}
|
|
49
|
+
case clearGrantRequestsSort.TRIGGER: {
|
|
50
|
+
return { ...state, sort: byInsertedSort };
|
|
51
|
+
}
|
|
52
|
+
default:
|
|
53
|
+
return state;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import _ from "lodash/fp";
|
|
2
|
+
import {
|
|
3
|
+
addGrantRequestsFilter,
|
|
4
|
+
closeGrantRequestsFilter,
|
|
5
|
+
removeGrantRequestsFilter,
|
|
6
|
+
resetGrantRequestsFilters,
|
|
7
|
+
toggleGrantRequestsFilterValue,
|
|
8
|
+
clearGrantRequestsFilters,
|
|
9
|
+
} from "../routines";
|
|
10
|
+
|
|
11
|
+
export const initialState = {};
|
|
12
|
+
|
|
13
|
+
export const grantRequestsActiveFilters = (
|
|
14
|
+
state = initialState,
|
|
15
|
+
{ type, payload }
|
|
16
|
+
) => {
|
|
17
|
+
switch (type) {
|
|
18
|
+
case clearGrantRequestsFilters.TRIGGER: {
|
|
19
|
+
return initialState;
|
|
20
|
+
}
|
|
21
|
+
case addGrantRequestsFilter.TRIGGER: {
|
|
22
|
+
const { filter } = payload;
|
|
23
|
+
return { ...state, [filter]: [] };
|
|
24
|
+
}
|
|
25
|
+
case closeGrantRequestsFilter.TRIGGER: {
|
|
26
|
+
const { filter } = payload;
|
|
27
|
+
const values = _.propOr([], filter)(state);
|
|
28
|
+
return _.isEmpty(values)
|
|
29
|
+
? _.omit(filter)(state)
|
|
30
|
+
: { ...state, [filter]: values };
|
|
31
|
+
}
|
|
32
|
+
case removeGrantRequestsFilter.TRIGGER: {
|
|
33
|
+
const { filter } = payload;
|
|
34
|
+
return _.omit(filter)(state);
|
|
35
|
+
}
|
|
36
|
+
case resetGrantRequestsFilters.TRIGGER: {
|
|
37
|
+
return {
|
|
38
|
+
..._.pick(["status", "must_not_approved_by"])(state),
|
|
39
|
+
...initialState,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
case toggleGrantRequestsFilterValue.TRIGGER: {
|
|
43
|
+
const { filter, value } = payload;
|
|
44
|
+
if (_.isArray(value)) {
|
|
45
|
+
return { ...state, [filter]: value };
|
|
46
|
+
}
|
|
47
|
+
const values = _.propOr([], filter)(state);
|
|
48
|
+
const nextValues = _.includes(value)(values)
|
|
49
|
+
? _.without([value])(values)
|
|
50
|
+
: _.union([value])(values);
|
|
51
|
+
return { ...state, [filter]: nextValues };
|
|
52
|
+
}
|
|
53
|
+
default:
|
|
54
|
+
return state;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _ from "lodash/fp";
|
|
2
|
+
import {
|
|
3
|
+
clearGrantRequestsFilters,
|
|
4
|
+
fetchGrantRequestsFilters,
|
|
5
|
+
} from "../routines";
|
|
6
|
+
|
|
7
|
+
const initialState = {};
|
|
8
|
+
|
|
9
|
+
const grantRequestsFilters = (state = initialState, { type, payload }) => {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case clearGrantRequestsFilters.TRIGGER:
|
|
12
|
+
return initialState;
|
|
13
|
+
case fetchGrantRequestsFilters.SUCCESS:
|
|
14
|
+
return _.flow(
|
|
15
|
+
_.propOr({}, "data.data"),
|
|
16
|
+
_.omitBy(_.flow(_.getOr([], "values"), _.isEmpty))
|
|
17
|
+
)(payload);
|
|
18
|
+
default:
|
|
19
|
+
return state;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { grantRequestsFilters };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fetchGrantRequestsFilters } from "../routines";
|
|
2
|
+
|
|
3
|
+
const grantRequestsFiltersLoading = (state = false, { type }) => {
|
|
4
|
+
switch (type) {
|
|
5
|
+
case fetchGrantRequestsFilters.REQUEST:
|
|
6
|
+
return true;
|
|
7
|
+
case fetchGrantRequestsFilters.FULFILL:
|
|
8
|
+
return false;
|
|
9
|
+
default:
|
|
10
|
+
return state;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { grantRequestsFiltersLoading };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
clearGrantRequestsSearch,
|
|
3
|
+
fetchGrantRequestsSearch,
|
|
4
|
+
} from "../routines";
|
|
5
|
+
|
|
6
|
+
export const initialState = [];
|
|
7
|
+
|
|
8
|
+
const grantRequestsSearch = (state = initialState, { type, payload }) => {
|
|
9
|
+
switch (type) {
|
|
10
|
+
case clearGrantRequestsSearch.TRIGGER:
|
|
11
|
+
return initialState;
|
|
12
|
+
case fetchGrantRequestsSearch.SUCCESS:
|
|
13
|
+
return payload?.data?.data;
|
|
14
|
+
default:
|
|
15
|
+
return state;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { grantRequestsSearch };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fetchGrantRequestsSearch } from "../routines";
|
|
2
|
+
|
|
3
|
+
export const initialState = false;
|
|
4
|
+
|
|
5
|
+
export const grantRequestsSearchLoading = (state = initialState, { type }) => {
|
|
6
|
+
switch (type) {
|
|
7
|
+
case fetchGrantRequestsSearch.TRIGGER:
|
|
8
|
+
return true;
|
|
9
|
+
case fetchGrantRequestsSearch.FULFILL:
|
|
10
|
+
return initialState;
|
|
11
|
+
default:
|
|
12
|
+
return state;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
addGrantRequestsFilter,
|
|
3
|
+
closeGrantRequestsFilter,
|
|
4
|
+
openGrantRequestsFilter,
|
|
5
|
+
removeGrantRequestsFilter,
|
|
6
|
+
resetGrantRequestsFilters,
|
|
7
|
+
} from "../routines";
|
|
8
|
+
|
|
9
|
+
/** @type {string} */
|
|
10
|
+
export const initialState = null;
|
|
11
|
+
|
|
12
|
+
export const grantRequestsSelectedFilter = (
|
|
13
|
+
state = initialState,
|
|
14
|
+
{ type, payload }
|
|
15
|
+
) => {
|
|
16
|
+
switch (type) {
|
|
17
|
+
case addGrantRequestsFilter.TRIGGER: {
|
|
18
|
+
const { filter } = payload;
|
|
19
|
+
return filter;
|
|
20
|
+
}
|
|
21
|
+
case closeGrantRequestsFilter.TRIGGER:
|
|
22
|
+
return initialState;
|
|
23
|
+
case openGrantRequestsFilter.TRIGGER: {
|
|
24
|
+
const { filter } = payload;
|
|
25
|
+
return filter;
|
|
26
|
+
}
|
|
27
|
+
case removeGrantRequestsFilter.TRIGGER:
|
|
28
|
+
return initialState;
|
|
29
|
+
case resetGrantRequestsFilters.TRIGGER:
|
|
30
|
+
return initialState;
|
|
31
|
+
default:
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
@@ -22,6 +22,8 @@ export const graphLoading = (state = false, { type, payload }) => {
|
|
|
22
22
|
return payload || true;
|
|
23
23
|
case createStructureGraph.REQUEST:
|
|
24
24
|
return true;
|
|
25
|
+
case fetchGraph.SUCCESS:
|
|
26
|
+
case fetchGraph.FAILURE:
|
|
25
27
|
case fetchGraph.FULFILL:
|
|
26
28
|
return false;
|
|
27
29
|
case fetchGraph.REQUEST:
|
package/src/reducers/index.js
CHANGED
|
@@ -15,6 +15,18 @@ import { grantQuery } from "./grantQuery";
|
|
|
15
15
|
import { grantRequest } from "./grantRequest";
|
|
16
16
|
import { grantRequests } from "./grantRequests";
|
|
17
17
|
import { grantRequestsCart } from "./grantRequestsCart";
|
|
18
|
+
import { grantRequestCount } from "./grantRequestCount";
|
|
19
|
+
import { grantRequestsSelectedFilter } from "./grantRequestsSelectedFilter";
|
|
20
|
+
import { grantRequestSearchQuery } from "./grantRequestSearchQuery";
|
|
21
|
+
import { grantRequestsActiveFilters } from "./grantRequestsActiveFilters";
|
|
22
|
+
import { grantRequestsFilters } from "./grantRequestsFilters";
|
|
23
|
+
import { grantRequestsFiltersLoading } from "./grantRequestsFiltersLoading";
|
|
24
|
+
import {
|
|
25
|
+
grantRequestPermissions,
|
|
26
|
+
grantRequestPermissionsLoading,
|
|
27
|
+
} from "./grantRequestPermissions";
|
|
28
|
+
import { grantRequestsSearch } from "./grantRequestsSearch";
|
|
29
|
+
import { grantRequestsSearchLoading } from "./grantRequestsSearchLoading";
|
|
18
30
|
import { grantRequestsLoading } from "./grantRequestsLoading";
|
|
19
31
|
import { grantRequestsQuery } from "./grantRequestsQuery";
|
|
20
32
|
import { grantSelectedFilter } from "./grantSelectedFilter";
|
|
@@ -107,7 +119,17 @@ export {
|
|
|
107
119
|
grantLoading,
|
|
108
120
|
grantQuery,
|
|
109
121
|
grantRequest,
|
|
122
|
+
grantRequestCount,
|
|
123
|
+
grantRequestsSelectedFilter,
|
|
124
|
+
grantRequestSearchQuery,
|
|
110
125
|
grantRequests,
|
|
126
|
+
grantRequestsActiveFilters,
|
|
127
|
+
grantRequestsFilters,
|
|
128
|
+
grantRequestsFiltersLoading,
|
|
129
|
+
grantRequestPermissions,
|
|
130
|
+
grantRequestPermissionsLoading,
|
|
131
|
+
grantRequestsSearch,
|
|
132
|
+
grantRequestsSearchLoading,
|
|
111
133
|
grantRequestsCart,
|
|
112
134
|
grantRequestsLoading,
|
|
113
135
|
grantRequestsQuery,
|
|
@@ -2,14 +2,13 @@ import _ from "lodash/fp";
|
|
|
2
2
|
import { clearRedirect } from "@truedat/core/routines";
|
|
3
3
|
import {
|
|
4
4
|
BUCKET_VIEW_CONFIGS,
|
|
5
|
-
|
|
5
|
+
GRANT_REQUESTS,
|
|
6
6
|
GRANT_APPROVAL_RULES,
|
|
7
7
|
MY_GRANT_REQUESTS,
|
|
8
8
|
REFERENCE_DATASETS,
|
|
9
9
|
STRUCTURE_TAGS,
|
|
10
10
|
STRUCTURE_TYPES,
|
|
11
11
|
STRUCTURES,
|
|
12
|
-
STRUCTURE_STRUCTURE_LINKS,
|
|
13
12
|
linkTo,
|
|
14
13
|
} from "@truedat/core/routes";
|
|
15
14
|
import {
|
|
@@ -97,7 +96,7 @@ export const structureRedirect = (
|
|
|
97
96
|
return linkTo.PROFILE_GROUP({ id });
|
|
98
97
|
}
|
|
99
98
|
case createGrantRequestApproval.SUCCESS: {
|
|
100
|
-
return
|
|
99
|
+
return GRANT_REQUESTS;
|
|
101
100
|
}
|
|
102
101
|
case createReferenceDataset.SUCCESS: {
|
|
103
102
|
const id = payload?.createReferenceDataset?.id;
|
package/src/routines.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { createRoutine } from "redux-saga-routines";
|
|
3
3
|
|
|
4
4
|
export const addGrantFilter = createRoutine("ADD_GRANT_FILTER");
|
|
5
|
+
export const addGrantRequestsFilter = createRoutine("ADD_GRANT_REQUESTS_FILTER");
|
|
5
6
|
export const addGrantRequestToCart = createRoutine("ADD_GRANT_REQUEST_TO_CART");
|
|
6
7
|
export const addStructureFilter = createRoutine("ADD_STRUCTURE_FILTER");
|
|
7
8
|
export const addStructureSelectedFilter = createRoutine("ADD_STRUCTURE_SELECTED_FILTER");
|
|
@@ -15,6 +16,9 @@ export const clearNavFilter = createRoutine("CLEAR_BUCKET_FILTER");
|
|
|
15
16
|
export const clearGrantFilters = createRoutine("CLEAR_GRANT_FILTERS");
|
|
16
17
|
export const clearGrantRequest = createRoutine("CLEAR_GRANT_REQUEST");
|
|
17
18
|
export const clearGrantRequests = createRoutine("CLEAR_GRANT_REQUESTS");
|
|
19
|
+
export const clearGrantRequestsSearch = createRoutine("CLEAR_GRANT_REQUESTS_SEARCH");
|
|
20
|
+
export const clearGrantRequestsSort = createRoutine("CLEAR_GRANT_REQUESTS_SORT");
|
|
21
|
+
export const clearGrantRequestsFilters = createRoutine("CLEAR_GRANT_REQUESTS_FILTERS")
|
|
18
22
|
export const clearGrants = createRoutine("CLEAR_GRANTS");
|
|
19
23
|
export const clearGrantsSort = createRoutine("CLEAR_GRANTS_SORT");
|
|
20
24
|
export const clearGraph = createRoutine("CLEAR_GRAPH");
|
|
@@ -37,6 +41,7 @@ export const clearSystemStructures = createRoutine("CLEAR_SYSTEM_STRUCTURES");
|
|
|
37
41
|
export const clearSystems = createRoutine("CLEAR_SYSTEMS");
|
|
38
42
|
export const clearUserSearchFilters = createRoutine("CLEAR_USER_SEARCH_FILTERS");
|
|
39
43
|
export const closeGrantFilter = createRoutine("CLOSE_GRANT_FILTER");
|
|
44
|
+
export const closeGrantRequestsFilter = createRoutine("CLOSE_GRANT_REQUESTS_FILTERS")
|
|
40
45
|
export const closeStructureFilter = createRoutine("CLOSE_STRUCTURE_FILTER");
|
|
41
46
|
export const createGrantApprovalRule = createRoutine("CREATE_GRANT_APPROVAL_RULE");
|
|
42
47
|
export const createGrantRequestApproval = createRoutine("CREATE_GRANT_REQUEST_APPROVAL");
|
|
@@ -68,6 +73,8 @@ export const fetchGrant = createRoutine("FETCH_GRANT");
|
|
|
68
73
|
export const fetchGrantFilters = createRoutine("FETCH_GRANT_FILTERS");
|
|
69
74
|
export const fetchGrantRequest = createRoutine("FETCH_GRANT_REQUEST");
|
|
70
75
|
export const fetchGrantRequests = createRoutine("FETCH_GRANT_REQUESTS");
|
|
76
|
+
export const fetchGrantRequestsSearch = createRoutine("FETCH_GRANT_REQUESTS_SEARCH")
|
|
77
|
+
export const fetchGrantRequestsFilters = createRoutine("FETCH_GRANT_REQUESTS_FILTERS")
|
|
71
78
|
export const fetchGrants = createRoutine("FETCH_GRANTS");
|
|
72
79
|
export const fetchGraph = createRoutine("FETCH_GRAPH");
|
|
73
80
|
export const fetchLineageEvents = createRoutine("FETCH_LINEAGE_EVENTS");
|
|
@@ -91,19 +98,23 @@ export const hoverNode = createRoutine("HOVER_NODE");
|
|
|
91
98
|
export const initSvg = createRoutine("INIT_SVG");
|
|
92
99
|
export const linkStructureToStructure = createRoutine("LINK_STRUCTURE_TO_STRUCTURE");
|
|
93
100
|
export const loadLineageEvents = createRoutine("LOAD_LINEAGE_EVENTS");
|
|
101
|
+
export const openGrantRequestsFilter = createRoutine("OPEN_GRANT_REQUESTS_FILTER")
|
|
94
102
|
export const openGrantFilter = createRoutine("OPEN_GRANT_FILTER");
|
|
95
103
|
export const openStructureFilter = createRoutine("OPEN_STRUCTURE_FILTER");
|
|
96
104
|
export const requestGrantRemoval = createRoutine("REQUEST_GRANT_REMOVAL");
|
|
97
105
|
export const removeGrantFilter = createRoutine("REMOVE_GRANT_FILTER");
|
|
106
|
+
export const removeGrantRequestsFilter = createRoutine("REMOVE_GRANT_REQUESTS_FILTER")
|
|
98
107
|
export const removeGrantRequestFromCart = createRoutine("REMOVE_GRANT_REQUEST_FROM_CART");
|
|
99
108
|
export const removeGrantRequestsQuery = createRoutine("REMOVE_GRANT_REQUESTS_QUERY");
|
|
100
109
|
export const removeStructureFilter = createRoutine("REMOVE_STRUCTURE_FILTER");
|
|
101
110
|
export const removeStructureSelectedFilter = createRoutine("REMOVE_STRUCTURE_SELECTED_FILTER");
|
|
102
111
|
export const resetGrantFilters = createRoutine("RESET_GRANT_FILTERS");
|
|
112
|
+
export const resetGrantRequestsFilters = createRoutine("RESERT_GRANT_REQUESTS_FILTERS");
|
|
103
113
|
export const resetStructureFilters = createRoutine("RESET_STRUCTURE_FILTERS");
|
|
104
114
|
export const saveUserSearchFilters = createRoutine("SAVE_USER_SEARCH_FILTERS");
|
|
105
115
|
export const saveNavFilter = createRoutine("SAVE_BUCKET_FILTER");
|
|
106
116
|
export const searchGrants = createRoutine("SEARCH_GRANTS");
|
|
117
|
+
export const searchGrantRequests = createRoutine("SEARCH_GRANT_REQUESTS");
|
|
107
118
|
export const searchStructures = createRoutine("SEARCH_STRUCTURES");
|
|
108
119
|
export const selectGrantPage = createRoutine("SELECT_GRANT_PAGE");
|
|
109
120
|
export const selectGrantRequestTemplate = createRoutine("SELECT_GRANT_REQUEST_TEMPLATE");
|
|
@@ -116,10 +127,12 @@ export const selectStructurePage = createRoutine("SELECT_STRUCTURE_PAGE");
|
|
|
116
127
|
export const setGrantChangeRequestCart = createRoutine("SET_GRANT_CHANGE_REQUEST_CART");
|
|
117
128
|
export const setGrantRequestsQuery = createRoutine("SET_GRANT_REQUESTS_QUERY");
|
|
118
129
|
export const sortGrants = createRoutine("SORT_GRANTS");
|
|
130
|
+
export const sortGrantRequests = createRoutine("SORT_GRANT_REQUESTS");
|
|
119
131
|
export const sortStructures = createRoutine("SORT_STRUCTURES");
|
|
120
132
|
export const tagStructure = createRoutine("TAG_STRUCTURE");
|
|
121
133
|
export const toggleGrantDateFilter = createRoutine("TOGGLE_GRANT_DATE_FILTER");
|
|
122
134
|
export const toggleGrantFilterValue = createRoutine("TOGGLE_GRANT_FILTER_VALUE");
|
|
135
|
+
export const toggleGrantRequestsFilterValue = createRoutine("TOGGLE_GRANT_REQUESTS_FILTER_VALUE");
|
|
123
136
|
export const toggleStructureDateFilter = createRoutine("TOGGLE_STRUCTURE_DATE_FILTER");
|
|
124
137
|
export const toggleStructureFilterValue = createRoutine("TOGGLE_STRUCTURE_FILTER_VALUE");
|
|
125
138
|
export const upsertCatalogViewConfig = createRoutine("UPDATE_CATALOG_VIEW_CONFIG");
|
|
@@ -5,10 +5,10 @@ import { apiJson, apiJsonPost, JSON_OPTS } from "@truedat/core/services/api";
|
|
|
5
5
|
import {
|
|
6
6
|
createGraphRequestSaga,
|
|
7
7
|
createGraphSaga,
|
|
8
|
-
polling,
|
|
9
8
|
POLLING_CANCELLED,
|
|
10
9
|
selectLineageQuery,
|
|
11
10
|
} from "../createGraph";
|
|
11
|
+
import { polling } from "../graph/polling";
|
|
12
12
|
import {
|
|
13
13
|
cancelPoll,
|
|
14
14
|
createGraph,
|
|
@@ -117,7 +117,7 @@ describe("sagas: createGraphSaga", () => {
|
|
|
117
117
|
.next(graphAccepted)
|
|
118
118
|
.put(fetchGraph.request(graphAccepted))
|
|
119
119
|
.next()
|
|
120
|
-
.fork(polling, graphAccepted, isRedirected)
|
|
120
|
+
.fork(polling, createGraph, graphAccepted, isRedirected)
|
|
121
121
|
.next()
|
|
122
122
|
.take(cancelPoll.TRIGGER)
|
|
123
123
|
.next()
|
|
@@ -171,7 +171,7 @@ describe("generator: polling", () => {
|
|
|
171
171
|
|
|
172
172
|
it("polling should keep requesting by graph hash until graph is received", () => {
|
|
173
173
|
expect(() => {
|
|
174
|
-
testSaga(polling, graphAccepted, isRedirected)
|
|
174
|
+
testSaga(polling, createGraph, graphAccepted, isRedirected)
|
|
175
175
|
.next()
|
|
176
176
|
.delay(1000)
|
|
177
177
|
.next()
|
|
@@ -207,7 +207,7 @@ describe("generator: polling", () => {
|
|
|
207
207
|
|
|
208
208
|
it("cancel should stop polling and return createGraph failure", () => {
|
|
209
209
|
expect(() => {
|
|
210
|
-
testSaga(polling, graphAccepted, isRedirected)
|
|
210
|
+
testSaga(polling, createGraph, graphAccepted, isRedirected)
|
|
211
211
|
.next()
|
|
212
212
|
.delay(1000)
|
|
213
213
|
.next()
|