1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.dataItems = exports.items = exports.pages = undefined;
|
7 |
|
8 | var _actionTypes = require("./actionTypes");
|
9 |
|
10 | var _immutable = require("immutable");
|
11 |
|
12 | var Immutable = _interopRequireWildcard(_immutable);
|
13 |
|
14 | function _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; } }
|
15 |
|
16 | var requestPage = function requestPage(state, action) {
|
17 | var _action$payload = action.payload,
|
18 | token = _action$payload.token,
|
19 | page = _action$payload.page;
|
20 |
|
21 |
|
22 | var elements = Immutable.Map({
|
23 | page: page,
|
24 | error: false,
|
25 | fetching: true,
|
26 | fetched: false
|
27 | });
|
28 |
|
29 | if (state.has(token)) {
|
30 | return state.update(token, function (current) {
|
31 | return current.merge(elements);
|
32 | });
|
33 | }
|
34 |
|
35 | var init = elements.merge({
|
36 | view: 1,
|
37 | token: token,
|
38 | ids: Immutable.List()
|
39 | });
|
40 |
|
41 | return state.set(token, init);
|
42 | },
|
43 | receivePage = function receivePage(state, action) {
|
44 | var idKey = action.meta.idKey,
|
45 | _action$payload2 = action.payload,
|
46 | token = _action$payload2.token,
|
47 | items = _action$payload2.items,
|
48 | total = _action$payload2.total,
|
49 | error = _action$payload2.error;
|
50 |
|
51 |
|
52 | if (state.has(token)) {
|
53 | var hasError = error === true;
|
54 |
|
55 | return state.update(token, function (current) {
|
56 | return current.update(function (page) {
|
57 | return current.merge(Immutable.Map({
|
58 | ids: page.get("ids").concat(Immutable.List(items.map(function (item) {
|
59 | return String(item[idKey]);
|
60 | }))),
|
61 | fetching: false,
|
62 | error: hasError,
|
63 | fetched: true,
|
64 | total: hasError ? page.get("total") : total
|
65 | }));
|
66 | });
|
67 | });
|
68 | }
|
69 |
|
70 | return state;
|
71 | },
|
72 | performChangeView = function performChangeView(state, action, view) {
|
73 | var token = action.payload.token;
|
74 |
|
75 |
|
76 | var item = state.get(token);
|
77 |
|
78 | if (typeof item === "undefined") {
|
79 | return state;
|
80 | }
|
81 |
|
82 | return state.update(token, function (current) {
|
83 | return current.set("view", view);
|
84 | });
|
85 | },
|
86 | changeView = function changeView(state, action) {
|
87 | return performChangeView(state, action, action.payload.view);
|
88 | },
|
89 | resetView = function resetView(state, action) {
|
90 | return performChangeView(state, action, 1);
|
91 | },
|
92 | receivePageItems = function receivePageItems(state, action) {
|
93 | var payload = action.payload,
|
94 | meta = action.meta;
|
95 | var payloadItems = payload.items;
|
96 | var idKey = meta.idKey,
|
97 | manageEntity = meta.manageEntity;
|
98 |
|
99 |
|
100 | var manage = typeof manageEntity === "function" ? manageEntity : function (item) {
|
101 | return Immutable.Map(item);
|
102 | };
|
103 |
|
104 | var newItems = payloadItems.reduce(function (previous, item) {
|
105 | return previous.set(String(item[idKey]), manage(item, state, idKey));
|
106 | }, Immutable.Map());
|
107 |
|
108 | return state.merge(newItems);
|
109 | };
|
110 |
|
111 | var pages = exports.pages = function pages() {
|
112 | var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Immutable.Map();
|
113 | var action = arguments[1];
|
114 |
|
115 | switch (action.type) {
|
116 | case _actionTypes.REQUEST_PAGE:
|
117 | return requestPage(state, action);
|
118 |
|
119 | case _actionTypes.RECEIVE_PAGE:
|
120 | return receivePage(state, action);
|
121 |
|
122 | case _actionTypes.RESET_VIEW:
|
123 | return resetView(state, action);
|
124 |
|
125 | case _actionTypes.CHANGE_VIEW:
|
126 | return changeView(state, action);
|
127 |
|
128 | case _actionTypes.FETCH_CURRENT_COMPANY_INFO_PENDING:
|
129 | case _actionTypes.CLEAR_DATA:
|
130 | return state.clear();
|
131 |
|
132 | default:
|
133 | return state;
|
134 | }
|
135 | };
|
136 |
|
137 | var items = exports.items = function items() {
|
138 | var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Immutable.Map();
|
139 | var action = arguments[1];
|
140 |
|
141 | switch (action.type) {
|
142 | case _actionTypes.RECEIVE_PAGE:
|
143 | return receivePageItems(state, action);
|
144 |
|
145 | case _actionTypes.FETCH_CURRENT_COMPANY_INFO_PENDING:
|
146 | case _actionTypes.CLEAR_DATA:
|
147 | return state.clear();
|
148 | default:
|
149 | return state;
|
150 | }
|
151 | };
|
152 |
|
153 |
|
154 |
|
155 | var fetchItemDataPending = function fetchItemDataPending(state, _ref) {
|
156 | var id = _ref.meta.id;
|
157 | return state.update(id, function (current) {
|
158 | if (typeof current === "undefined") {
|
159 | return current;
|
160 | }
|
161 |
|
162 | return current.mergeDeep(Immutable.Map({
|
163 | fetching: true,
|
164 | fetched: false,
|
165 | error: false
|
166 | }));
|
167 | });
|
168 | },
|
169 | fetchItemDataRejected = function fetchItemDataRejected(state, _ref2) {
|
170 | var id = _ref2.meta.id;
|
171 | return state.update(id, function (current) {
|
172 | if (typeof current === "undefined") {
|
173 | return current;
|
174 | }
|
175 |
|
176 | return current.mergeDeep(Immutable.Map({
|
177 | fetching: false,
|
178 | fetched: false,
|
179 | error: true
|
180 | }));
|
181 | });
|
182 | },
|
183 | fetchItemDataFulFilled = function fetchItemDataFulFilled(state, _ref3) {
|
184 | var Data = _ref3.payload.Data,
|
185 | id = _ref3.meta.id;
|
186 | return state.update(id, function (current) {
|
187 | if (typeof current === "undefined") {
|
188 | return current;
|
189 | }
|
190 |
|
191 | return current.mergeDeep(Immutable.Map({
|
192 | Data: Data,
|
193 | fetching: false,
|
194 | fetched: true,
|
195 | error: false
|
196 | }));
|
197 | });
|
198 | };
|
199 |
|
200 | var dataItems = exports.dataItems = function dataItems() {
|
201 | var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Immutable.Map();
|
202 | var action = arguments[1];
|
203 |
|
204 | switch (action.type) {
|
205 | case _actionTypes.RECEIVE_PAGE:
|
206 | return receivePageItems(state, action);
|
207 |
|
208 | case _actionTypes.FETCH_ITEM_DATA_PENDING:
|
209 | return fetchItemDataPending(state, action);
|
210 | case _actionTypes.FETCH_ITEM_DATA_REJECTED:
|
211 | return fetchItemDataRejected(state, action);
|
212 | case _actionTypes.FETCH_ITEM_DATA_FULFILLED:
|
213 | return fetchItemDataFulFilled(state, action);
|
214 |
|
215 | case _actionTypes.FETCH_CURRENT_COMPANY_INFO_PENDING:
|
216 | case _actionTypes.CLEAR_DATA:
|
217 | return state.clear();
|
218 | default:
|
219 | return state;
|
220 | }
|
221 | }; |
\ | No newline at end of file |