UNPKG

3.58 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _immutable = require("immutable");
8
9var Immutable = _interopRequireWildcard(_immutable);
10
11var _reselect = require("reselect");
12
13function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
14
15var pagesSelector = function pagesSelector(state) {
16 return state;
17};
18/* eslint-disable no-undefined */
19
20var rowsPerPage = 50;
21
22var pageSelector = (0, _reselect.createSelector)(pagesSelector, function (state, token) {
23 return token;
24}, function (pages, token) {
25 return pages.get(token);
26});
27
28var getAllResults = (0, _reselect.createSelector)(pageSelector, function (state, token, items) {
29 return items;
30}, function (page, items) {
31 if (typeof page === "undefined") {
32 return Immutable.List();
33 }
34
35 return page.get("ids").map(function (id) {
36 return items.get(String(id));
37 });
38});
39
40var getResultsUpToPage = (0, _reselect.createSelector)(pageSelector, function (state, token, items) {
41 return items;
42}, function (state, token, items, target) {
43 return target;
44}, function (state, token, items, target, perPage) {
45 return perPage || rowsPerPage;
46}, function (page, items, target, perPage) {
47 if (typeof page === "undefined") {
48 return Immutable.List();
49 }
50
51 var ids = page.get("ids").slice(0, perPage * target);
52
53 return ids.map(function (id) {
54 return items.get(String(id));
55 });
56});
57
58var getCurrentTotalResultsCount = (0, _reselect.createSelector)(pageSelector, function (page) {
59 if (typeof page === "undefined") {
60 return 0;
61 }
62
63 return page.get("total");
64});
65
66var isPageFetching = (0, _reselect.createSelector)(pageSelector, function (state, token, target) {
67 return target;
68}, function (page, target) {
69 if (typeof page === "undefined") {
70 return false;
71 }
72
73 return page.get("fetching") && target === page.get("page");
74});
75
76var isPageFetched = (0, _reselect.createSelector)(pageSelector, function (state, token, target) {
77 return target;
78}, function (page, target) {
79 if (typeof page === "undefined") {
80 return false;
81 }
82
83 return page.get("fetched") && target <= page.get("page");
84});
85
86var hasPageProblems = (0, _reselect.createSelector)(pageSelector, function (page) {
87 if (typeof page === "undefined") {
88 return false;
89 }
90
91 return page.get("error");
92});
93
94var getCurrentView = (0, _reselect.createSelector)(pageSelector, function (page) {
95 if (typeof page === "undefined") {
96 return 1;
97 }
98
99 return page.get("view");
100});
101
102// these selectors are used for the entire app
103var getPaginatorPaginations = function getPaginatorPaginations(state, name) {
104 return state.getIn(["paginations", name]);
105},
106 getPaginatorEntities = function getPaginatorEntities(state, name) {
107 return state.getIn(["entities", name]);
108},
109 getPaginators = (0, _reselect.createSelector)(getPaginatorPaginations, getPaginatorEntities, function (list, entities) {
110 return {
111 list: list,
112 entities: entities
113 };
114});
115
116exports.default = {
117 getAllResults: getAllResults,
118 getCurrentTotalResultsCount: getCurrentTotalResultsCount,
119 getResultsUpToPage: getResultsUpToPage,
120 isPageFetching: isPageFetching,
121 isPageFetched: isPageFetched,
122 hasPageProblems: hasPageProblems,
123 getCurrentView: getCurrentView,
124
125 // for state
126 getPaginatorPaginations: getPaginatorPaginations,
127 getPaginatorEntities: getPaginatorEntities,
128 getPaginators: getPaginators
129};
\No newline at end of file