-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathjobs.selectors.ts
50 lines (40 loc) · 1.25 KB
/
jobs.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
import { createFeatureSelector, createSelector } from "@ngrx/store";
import { JobsState } from "state-management/state/jobs.store";
const selectJobState = createFeatureSelector<JobsState>("jobs");
export const selectJobs = createSelector(selectJobState, (state) => state.jobs);
export const selectCurrentJob = createSelector(
selectJobState,
(state) => state.currentJob,
);
export const selectJobsCount = createSelector(
selectJobState,
(state) => state.totalCount,
);
export const selectSubmitError = createSelector(
selectJobState,
(state) => state.submitError,
);
export const selectFilters = createSelector(
selectJobState,
(state) => state.filters,
);
export const selectJobViewMode = createSelector(
selectFilters,
(filters) => filters.mode,
);
export const selectPage = createSelector(selectFilters, (filters) => {
const { skip, limit } = filters;
return skip / limit;
});
export const selectJobsPerPage = createSelector(
selectFilters,
(filters) => filters.limit,
);
export const selectQueryParams = createSelector(selectFilters, (filters) => {
const { mode, sortField, skip, limit } = filters;
if (mode) {
return { where: mode, order: sortField, skip, limit };
} else {
return { order: sortField, skip, limit };
}
});