-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathpolicies.selectors.ts
128 lines (111 loc) · 3.22 KB
/
policies.selectors.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { createFeatureSelector, createSelector } from "@ngrx/store";
import { PolicyState } from "state-management/state/policies.store";
const selectPolicyState = createFeatureSelector<PolicyState>("policies");
export const selectPolicies = createSelector(
selectPolicyState,
(state) => state.policies,
);
export const selectEditablePolicies = createSelector(
selectPolicyState,
(state) => state.editablePolicies,
);
export const selectSelectedPolicies = createSelector(
selectPolicyState,
(state) => state.selectedPolicies,
);
export const selectPoliciesCount = createSelector(
selectPolicyState,
(state) => state.totalCount,
);
export const selectEditablePoliciesCount = createSelector(
selectPolicyState,
(state) => state.editableCount,
);
export const selectFilters = createSelector(
selectPolicyState,
(state) => state.policiesFilters,
);
export const selectEditableFilters = createSelector(
selectPolicyState,
(state) => state.editableFilters,
);
export const selectPage = createSelector(selectFilters, (filters) => {
const { skip, limit } = filters;
return skip / limit;
});
export const selectEditablePage = createSelector(
selectEditableFilters,
(filters) => {
const { skip, limit } = filters;
return skip / limit;
},
);
export const selectPoliciesPerPage = createSelector(
selectFilters,
(filters) => filters.limit,
);
export const selectEditablePoliciesPerPage = createSelector(
selectEditableFilters,
(filters) => filters.limit,
);
export const selectPoliciesPagination = createSelector(
selectPoliciesPerPage,
selectPage,
selectPoliciesCount,
(policiesPerPage, currentPage, policyCount) => ({
policiesPerPage,
currentPage,
policyCount,
}),
);
export const selectEditablePoliciesPagination = createSelector(
selectEditablePoliciesPerPage,
selectEditablePage,
selectEditablePoliciesCount,
(editablePoliciesPerPage, currentEditablePage, editableCount) => ({
editablePoliciesPerPage,
currentEditablePage,
editableCount,
}),
);
export const selectQueryParams = createSelector(selectFilters, (filters) => {
const { skip, limit, sortField } = filters;
return { order: sortField, skip, limit };
});
export const selectEditableQueryParams = createSelector(
selectEditableFilters,
(filters) => {
const { skip, limit, sortField } = filters;
return { order: sortField, skip, limit };
},
);
export const selectPoliciesDashboardPageViewModel = createSelector(
selectPolicies,
selectPoliciesPagination,
selectFilters,
selectEditablePolicies,
selectEditablePoliciesPagination,
selectEditableFilters,
selectSelectedPolicies,
(
policies,
policiesPagination,
filters,
editablePolicies,
editablePoliciesPagination,
editableFilters,
selectedPolicies,
) => ({
policies,
policiesPerPage: policiesPagination.policiesPerPage,
currentPage: policiesPagination.currentPage,
policyCount: policiesPagination.policyCount,
filters,
editablePolicies,
editablePoliciesPerPage: editablePoliciesPagination.editablePoliciesPerPage,
currentEditablePage: editablePoliciesPagination.currentEditablePage,
editableCount: editablePoliciesPagination.editableCount,
editableFilters,
selectedPolicies,
}),
);